jiangping
2024-05-08 cab86bd5a10b4e574ced9748a3718a5aa2d1b84b
Merge remote-tracking branch 'origin/master'
已添加9个文件
已修改15个文件
561 ■■■■ 文件已修改
h5/App.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/api/index.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/main.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages.json 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/answer/answer.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/applicationRecord/applicationRecord.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/appointmentDetails/appointmentDetails.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/index/index.vue 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/login/login.vue 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/notice/notice.vue 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/userinfo/userinfo.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/visitorApplication/visitorApplication.vue 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/visitorSubGuide/index.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/banner.jpg 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/ic_laifangdengji.png 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/ic_yuanqudaolan.png 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/ic_yuyuejilu.png 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/ic_yuyuezhinan.png 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/login_bg@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/logo@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/logo_s@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/http.api.js 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/meetingHttp.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/service.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/App.vue
@@ -142,4 +142,20 @@
    .card .content {
        color: #222;
    }
</style>
        //设置圆角
        checkbox .uni-checkbox-input{
            border-radius: 50%;
        }
        checkbox .uni-checkbox-input.uni-checkbox-input-checked{
            color: #fff !important;
            border: 1px solid #4d99a8 !important;
            background-color: #4d99a8 !important;
        }
        checkbox .uni-checkbox-input.uni-checkbox-input-checked:before{
            /* color: #4d99a8 !important;  */
            /* border: 1px solid #4d99a8 !important; */
            /* font-size: 58rpx; */
            /* border-radius: 50%; */
        }
</style>
h5/api/index.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
import { http } from '@/utils/service.js'
// æŸ¥è¯¢å­—典值数据
export const getSystemDictData = (data) => {
  return http({
    url: 'visitsAdmin/cloudService/web/other/getSystemDictData',
    data
  })
}
// èŽ·å–é¢˜ç›®æ•°æ®
export const getProblemsVO = () => {
  return http({
    url: 'visitsAdmin/cloudService/web/problem/getProblemsVO'
  })
}
// è®¿å®¢é¢„约详情
export const visitorSubDetail = (data) => {
  return http({
    url: 'visitsAdmin/cloudService/web/visitor/detail',
    data
  })
}
h5/main.js
@@ -17,7 +17,7 @@
Vue.use(uView)
Vue.component('Tabbar', Tabbar)
Vue.component('navigation', navigation)
Vue.prototype.$store = store;
Vue.prototype.$store = store
Vue.prototype.$onWait = new Promise((resolve) => {
  Vue.prototype.$reslove = resolve
})
@@ -25,7 +25,7 @@
const app = new Vue({
    store,
  store,
  ...App
})
h5/pages.json
@@ -6,7 +6,7 @@
        {
            "path": "pages/notice/notice",
            "style": {
                "navigationBarTitleText": "入场须知",
                "navigationBarTitleText": "入园须知",
                "enablePullDownRefresh": false,
                "navigationStyle": "custom"
            }
@@ -14,7 +14,7 @@
        {
            "path": "pages/index/index",
            "style": {
                "navigationBarTitleText": "华晟新能源",
                "navigationBarTitleText": "访客中心",
                "enablePullDownRefresh": false
            }
        },
@@ -58,6 +58,13 @@
            }
        },
        {
            "path": "pages/visitorSubGuide/index",
            "style": {
                "navigationBarTitleText": "预约指南",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/laborApplication/laborApplication",
            "style": {
                "navigationBarTitleText": "劳务申请",
h5/pages/answer/answer.vue
@@ -59,6 +59,7 @@
</template>
<script>
    import { getProblemsVO, getSystemDictData } from '@/api'
    export default {
        name: 'answer',
@@ -83,7 +84,7 @@
        methods: {
            getInfo() {
                // title
                this.$u.api.getSystemDictData({
                getSystemDictData({
                    dictCode: 'SYSTEM',
                    label: 'THEME'
                }).then(res => {
@@ -91,7 +92,8 @@
                        this.title = res.data.code
                    }
                })
                this.$u.api.getSystemDictData({
                // this.$u.api.getSystemDictData({
                getSystemDictData({
                    dictCode: 'SYSTEM',
                    label: 'DESCRIPTION'
                }).then(res => {
@@ -101,7 +103,7 @@
                })
            },
            getProblems() {
                this.$u.api.getProblemsVO({ useType: 1 })
                getProblemsVO({ useType: 1 })
                    .then(res => {
                        if (res.code === 200) {
                            res.data.forEach(item => {
h5/pages/applicationRecord/applicationRecord.vue
@@ -77,8 +77,8 @@
                display: flex;
                align-items: center;
                .active {
                    border: 1rpx solid #025EEF !important;
                    color: #025EEF !important;
                    border: 1rpx solid #279BAA !important;
                    color: #279BAA !important;
                }
                .box_head_item {
                    padding: 0 30rpx;
@@ -115,7 +115,7 @@
                    align-items: center;
                    justify-content: space-between;
                    .loading {
                        color: #025EEF;
                        color: #279BAA;
                    }
                    .success {
                        color: #03C68F;
h5/pages/appointmentDetails/appointmentDetails.vue
@@ -1,15 +1,20 @@
<template>
    <view class="box">
        <view class="box_head">
            <canvas class="box_head_qrcode" canvas-id="img" v-if="[2,5,7,8,9].includes(info.status)"></canvas>
            <image class="box_head_logo" src="../../static/logo@2x.png" mode="widthFix" v-else></image>
            <text class="box_head_a" v-if="[0, 1].includes(info.status)">访客预约待审核</text>
            <text class="box_head_a" style="color: #03AF76;" v-if="info.status === 2">访客预约审核通过</text>
            <text class="box_head_a" style="color: #ED4545;" v-if="info.status === 3">访客预约审核不通过</text>
            <text class="box_head_b" v-if="[0, 1].includes(info.status)">您的预约单已提交审核,请等待被访人审核</text>
            <text class="box_head_b" v-if="info.status === 2">您的来访申请已审核通过,请在门卫处进行登记入场
如遇特殊情况,可联系被访人或安保人员</text>
            <text class="box_head_b" v-if="info.status === 3">您的来访申请已被驳回,如有疑问,可联系被访人</text>
        <view class="head_wrap head_success" v-if="info.status == 1">
            <view class="h1">访客预约审核通过</view>
            <view class="h2">您的来访申请已审核通过,请在访客机签到入厂。如遇特殊情况,可联系被访人或安保人员</view>
        </view>
        <view class="qr_wrap" v-if="info.status == 1">
            <canvas class="box_head_qrcode" canvas-id="img"></canvas>
            <view class="text">使用访客机扫码签到</view>
        </view>
        <view class="head_wrap head_padding" v-if="info.status == 2">
            <view class="h1">访客预约待审核</view>
            <view class="h2">您的预约单已提交审核,请等待被访人审核</view>
        </view>
        <view class="head_wrap head_error" v-if="info.status == 3">
            <view class="h1">访客预约审核不通过</view>
            <view class="h2">您的来访申请已被驳回,如有疑问,可联系被访人</view>
        </view>
        <view class="box_list">
            <view class="box_list_label">拜访信息</view>
@@ -60,26 +65,30 @@
<script>
    import wxcode from 'uniapp-qrcode'
    import { visitorSubDetail } from '@/api'
    export default {
        data() {
            return {
                info: {},
                info: {
                    status: 1
                },
                show: false
            };
        },
        onLoad(option) {
            this.$u.api.detail({ id: option.id })
                .then(res => {
                    if (res.code === 200) {
                        this.info = res.data
                        if (res.data.qrcode) {
                            this.$nextTick(() => {
                                wxcode.qrcode('img', res.data.qrcode, 320, 320)
                            })
                        }
                    }
                })
            // this.$u.api.detail({ id: option.id })
            // visitorSubDetail({ id: option.id })
            //     .then(res => {
            //         if (res.code === 200) {
            //             this.info = res.data
            //             if (res.data.qrcode) {
            //                 this.$nextTick(() => {
            //                     wxcode.qrcode('img', res.data.qrcode, 320, 320)
            //                 })
            //             }
            //         }
            //     })
        },
        methods: {
            close() {
@@ -117,35 +126,57 @@
                height: 100%;
            }
        }
        .box_head {
            width: 100%;
            padding: 40rpx 0;
            box-sizing: border-box;
            background-color: #ffffff;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-direction: column;
        .qr_wrap{
            background-color: #fff;
            text-align: center;
            .box_head_qrcode {
                width: 320rpx;
                height: 320rpx;
            }
            .box_head_logo {
                width: 220rpx;
                height: 220rpx;
            .text{
                font-size: 30rpx;
                color: #279BAA;
                padding: 20rpx 0 30rpx;
            }
            .box_head_a {
                font-size: 36rpx;
        }
        .head_wrap{
            padding: 30px;
            .h1{
                margin-bottom: 16rpx;
                font-weight: 600;
                color: #025EEF;
                margin-top: 30rpx;
                font-size: 36rpx;
            }
            .box_head_b {
                font-size: 26rpx;
            .h2{
                font-weight: 400;
                color: #666666;
                margin-top: 24rpx;
                text-align: center;
                font-size: 26rpx;
            }
        }
        .head_padding{
            background: #279BAA;
            .h1{
                color: #FFFFFF;
            }
            .h2{
                color: #FFFFFF;
            }
        }
        .head_error{
            background: #FDEDED;
            .h1{
                color: #ED4545;
            }
            .h2{
                color: #333333;
            }
        }
        .head_success{
            background: #E8F4F6;
            .h1{
                color: #279BAA;
            }
            .h2{
                color: #333333;
            }
        }
        .box_list {
h5/pages/index/index.vue
@@ -2,27 +2,35 @@
    <view class="box">
        <view class="box_head">
            <text>华晟智慧园区</text>
            <text>安全重于泰山 æœåŠ¡è¿½æ±‚å“è¶Š</text>
            <text class="h2">安全重于泰山 æœåŠ¡è¿½æ±‚å“è¶Š</text>
            <image mode="widthFix" class="banner_bg" src="@/static/banner.jpg" />
        </view>
        <view class="main_title">业务办理</view>
        <view class="box_list">
            <view class="box_list_item" @click="jump(1)">
                <image src="@/static/ic_laifang@2x.png" mode="widthFix" />
                <image src="@/static/ic_laifangdengji.png" mode="widthFix" />
            </view>
            <view class="box_list_item" @click="jump(2)">
                <image src="@/static/ic_shenqing@2x.png" mode="widthFix" />
                <image src="@/static/ic_yuyuejilu.png" mode="widthFix" />
            </view>
            <view class="box_list_item" @click="jump(3)">
                <image src="@/static/ic_renyuan@2x.png" mode="widthFix" />
                <image src="@/static/ic_yuanqudaolan.png" mode="widthFix" />
            </view>
            <view class="box_list_item" @click="jump(4)">
                <image src="@/static/ic_mima@2x.png" mode="widthFix" />
                <image src="@/static/ic_yuyuezhinan.png" mode="widthFix" />
            </view>
        </view>
        <view class="box_btn">退出登录</view>
        <!-- <view class="box_btn">退出登录</view> -->
        <view class="copyright">
            <image src="@/static/logo_s@2x.png" mode="widthFix" />
            <text>安徽安泰物流有限责任公司版权所有</text>
        </view>
    </view>
</template>
<script>
import image from 'uview-ui/libs/config/props/image'
    export default {
        data() {
@@ -51,7 +59,7 @@
                        break
                    case 4:
                        uni.navigateTo({
                            url: '/pages/changePassword/changePassword'
                            url: '/pages/visitorSubGuide/index'
                        })
                        break
                }
@@ -88,10 +96,24 @@
            height: 270rpx;
            padding: 0 44rpx;
            box-sizing: border-box;
            background: #D8D8D8;
            border-radius: 8rpx;
            display: flex;
            flex-direction: column;
            position: relative;
            .banner_bg{
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                z-index: -1;
            }
            .h2 {
                font-size: 28rpx;
                font-family: SourceHanSansSC, SourceHanSansSC;
                font-weight: 400;
                color: #FFFFFF;
                margin-top: 14rpx;
            }
            text {
                &:first-child {
                    font-size: 44rpx;
@@ -100,16 +122,14 @@
                    color: #FFFFFF;
                    margin-top: 54rpx;
                }
                &:last-child {
                    font-size: 28rpx;
                    font-family: SourceHanSansSC, SourceHanSansSC;
                    font-weight: 400;
                    color: #FFFFFF;
                    margin-top: 14rpx;
                }
            }
        }
        .main_title{
            font-weight: 500;
            font-size: 32rpx;
            color: #222222;
            margin: 40rpx 0 32rpx;
        }
        .box_list {
            width: 100%;
            display: flex;
@@ -119,15 +139,24 @@
            margin-top: 40rpx;
            .box_list_item {
                width: 49%;
                // height: 200rpx;
                width: 100%;
                margin-bottom: 20rpx;
                image {
                    width: 100%;
                    height: 100%;
                }
            }
        }
        .copyright{
            display: flex;
            align-items: center;
            justify-content: center;
            margin-top: 84rpx;
            font-size: 24rpx;
            color: #666666;
            image{
                width: 40rpx;
                height: 40rpx;
            }
        }
    }
</style>
h5/pages/login/login.vue
@@ -1,11 +1,12 @@
<template>
  <view class="login">
        <image class="login_bg" src="@/static/login_bg@2x.png" />
    <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
    <view class="login_title">华晟新能源</view>
    <view class="login_title">安泰物流智慧园区</view>
    <view class="login_list">
      <view class="login_list_item">
        <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
        <input v-model="form.idCard" maxlength="18" type="number" placeholder="手机号">
        <input v-model="form.idCard" maxlength="18" type="number" placeholder="账号">
      </view>
      <view class="login_list_item">
        <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
@@ -14,7 +15,14 @@
    </view>
    <view class="login_btn">
      <view class="login_btn_n">立即登录</view>
            <view class="for_psd">忘记密码</view>
    </view>
        <view class="deal_wrap">
            <checkbox @change="dealChange" />
            <text>登录即同意</text>
            <text class="deal">《安泰物流用户协议》</text>
        </view>
  </view>
</template>
@@ -36,7 +44,9 @@
  },
  methods: {
        dealChange(e) {
            console.log(e);
        }
  }
}
</script>
@@ -50,10 +60,15 @@
        box-sizing: border-box;
        align-items: center;
        flex-direction: column;
        background: linear-gradient(180deg, rgba(2,94,239,0.2) 0%, rgba(2,94,239,0) 100%);
        background: linear-gradient( 180deg, rgba(39,155,170,0.2) 0%, rgba(39,155,170,0) 100%);
        .login_logo {
            width: 180rpx;
            height: 180rpx;
        }
        .login_bg{
            position: absolute;
            top: 0;
            width: 750rpx;
        }
        .login_title {
            font-size: 44rpx;
@@ -68,11 +83,11 @@
            box-sizing: border-box;
            .login_list_item {
                width: 100%;
                border-radius: 50rpx;
                height: 98rpx;
                padding: 0 40rpx;
                box-sizing: border-box;
                background: #FFFFFF;
                border-radius: 8rpx;
                margin-bottom: 40rpx;
                display: flex;
                align-items: center;
@@ -99,20 +114,37 @@
            padding: 0 60rpx;
            box-sizing: border-box;
            margin-top: 80rpx;
            .for_psd{
                color: #279BAA;
                margin-top: 40rpx;
                width: 140rpx;
                text-align: center;
                margin: 40rpx auto;
            }
            .login_btn_n {
                width: 100%;
                height: 98rpx;
                background: #025EEF;
                background: #025EEF;
                box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(2,94,239,0.14);
                background: #279BAA;
                box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39,155,170,0.2);
                display: flex;
                align-items: center;
                justify-content: center;
                font-size: 32rpx;
                font-weight: 500;
                font-size: 32rpx;
                color: #FFFFFF;
                border-radius: 50rpx;
            }
        }
        .deal_wrap{
            position: absolute;
            width: 100%;
            left: 0;
            text-align: center;
            bottom: 108rpx;
            .deal{
                color: #279BAA;
            }
        }
  }
</style>
h5/pages/notice/notice.vue
@@ -1,6 +1,13 @@
<template>
    <div class="container">
        <scroll-view scroll-y class="content" v-html="content"></scroll-view>
        <video src="https://vdept3.bdstatic.com/mda-nj7gwfue9kdnbtsh/sc/cae_h264/1665488517815949255/mda-nj7gwfue9kdnbtsh.mp4?v_from_s=hkapp-haokan-hbe&auth_key=1715141591-0-0-6dfdf4d4c3d94b60b9adeb53368a72f3&bcevod_channel=searchbox_feed&pd=1&cr=2&cd=0&pt=3&logid=0791905773&vid=13790089500387859718&klogid=0791905773&abtest="></video>
        <scroll-view scroll-y class="content">
            <div class="title">安泰物流厂外来人员安全告知</div>
            <div class="text">
                <div>{{ content }}</div>
            </div>
            <div class="empty"></div>
        </scroll-view>
        <div class="button" @click="toapply">确认了解</div>
    </div>
</template>
@@ -10,12 +17,54 @@
        name: 'Index',
        data() {
            return {
                content: '',
                content: `
                1确认了解确认了解确认了解确认了解确认了解确认了解
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£ç¡®è®¤äº†è§£
                `,
                answer: ''
            }
        },
        onLoad() {
            this.getInfo()
            // this.getInfo()
        },
        methods: {
            getInfo() {
@@ -57,27 +106,41 @@
    .container {
        width: 100%;
        height: 100vh;
        padding: 30rpx;
        padding: 10rpx 30rpx 0;
        box-sizing: border-box;
        display: flex;
        flex-flow: column;
        .content {
            flex: 1;
            height: calc(100% - 88rpx - 60rpx - 40rpx - 40rpx);
        flex-direction: column;
        video{
            width: 690rpx;
            height: 388rpx;
            margin-bottom: 10rpx;
        }
        .content {
            height: calc( 100% - 400rpx );
            .title{
                color: #333333;
                font-weight: 500;
                margin-bottom: 16rpx;
            }
            .text{
                font-weight: 350;
            }
            .empty{
                height: 160rpx;
            }
        }
        .button {
            margin-top: 40rpx;
            width: 100%;
            width: 690rpx;
            height: 88rpx;
            line-height: 88rpx;
            text-align: center;
            background: #025EEF;
            background: #4d99a8;
            border-radius: 44rpx;
            font-size: 32rpx;
            font-weight: 500;
            color: #FFFFFF;
            position: absolute;
            bottom: 42rpx;
            left: 30rpx;
        }
    }
</style>
h5/pages/userinfo/userinfo.vue
@@ -2,39 +2,39 @@
    <view class="container">
        <view class="visitor-form">
            <view class="cell">
                <view class="title">姓名<b>*</b></view>
                <view class="title"><b>*</b>姓名</view>
                <view class="content">
                    <input class="input" placeholder-style="color: #999999;" maxlength="30" v-model="visitorData.name" placeholder="请输入您的真实姓名" />
                </view>
            </view>
            <view class="cell">
                <view class="title">手机号<b>*</b></view>
                <view class="title"><b>*</b>手机号</view>
                <view class="content">
                    <input class="input" maxlength="11" placeholder-style="color: #999999;" v-model="visitorData.phone" placeholder="请输入您的手机号" />
                </view>
            </view>
            <view class="cell">
                <view class="title">证件类型<b>*</b></view>
                <view class="title"><b>*</b>证件类型</view>
                <view class="content" @click="show = true">
                    <text :style="{color: visitorData.idcardTypeName ? '#000000' : ''}">{{visitorData.idcardTypeName ? visitorData.idcardTypeName : '请选择'}}</text>
                    <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
                </view>
            </view>
            <view class="cell">
                <view class="title">证件号码<b>*</b></view>
                <view class="title"><b>*</b>证件号码</view>
                <view class="content">
                    <input class="input" maxlength="18" placeholder-style="color: #999999;" v-model="visitorData.idcardNo" placeholder="请输入您的证件号码" />
                </view>
            </view>
            <view class="cell">
                <view class="title">公司<b>*</b></view>
                <view class="title"><b>*</b>公司名称</view>
                <view class="content">
                    <input class="input" maxlength="50" placeholder-style="color: #999999;" v-model="visitorData.companyName" placeholder="请输入您的公司名称" />
                </view>
            </view>
            <view class="cell">
                <view class="title1">
                    <text class="title1_a">人脸照片<b style="color: red;">*</b></text>
                    <text class="title1_a"><b>*</b>人脸照片</text>
                    <text class="title1_b">1、请提供五官清晰,人脸居中的正面人脸免冠照片;</text>
                    <text class="title1_b">2、照片无逆光、无PS、无过度美颜处理</text>
                </view>
@@ -48,7 +48,7 @@
                </view>
            </view>
            <view style="height: 20rpx; background-color: #F7F7F7;"></view>
            <view class="cell">
            <!-- <view class="cell">
                <view class="title">健康证<b v-if="visit === '1'">*</b></view>
                <view class="content">
                    <view class="content_uplaod" @click="upload('imgurl')" v-if="!visitorData.imgurlUrl">
@@ -58,7 +58,7 @@
                        <image :src="visitorData.imgurlUrl" mode="widthFix"></image>
                    </view>
                </view>
            </view>
            </view> -->
        </view>
        <view class="footer-box">
            <view class="submit-button" @click="submit">下一步</view>
@@ -73,6 +73,7 @@
    import tlyPictureCut from "@/components/tly-picture-cut/tlyPictureCut.vue";
    import QfImageCropper from '@/uni_modules/qf-image-cropper/components/qf-image-cropper/qf-image-cropper.vue';
    import { mapState } from 'vuex'
    import { uploadUrl } from "@/utils/config"
    export default {
        data() {
            return {
@@ -198,7 +199,7 @@
                that.$refs.cropper.close()
                uni.showLoading({ title: '上传中', mask: true });
                uni.uploadFile({
                    url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
                    url: uploadUrl,
                    filePath: file.tempFilePath,
                    name: 'file',
                    formData: {
@@ -234,7 +235,7 @@
                        if (type === 'imgurl') {
                            uni.showLoading({ title: '上传中', mask: true });
                            uni.uploadFile({
                                url: `${that.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
                                url: uploadUrl,
                                filePath: chooseImageRes.tempFilePaths[0],
                                name: 'file',
                                formData: {
@@ -295,8 +296,8 @@
    }
    .title b {
        color: red;
        font-weight: bold;
        color: #E42D2D;
        margin-right: 4rpx;
    }
    
    .title1 {
@@ -310,8 +311,9 @@
            align-items: center;
            margin-bottom: 20rpx;
            b {
                color: red;
                font-weight: bold;
                color: #E42D2D;
                margin-right: 4rpx;
            }
        }
        .title1_b {
@@ -322,8 +324,8 @@
    }
    .add-other {
        border: 1rpx solid #025eef;
        color: #025eef;
        border: 1rpx solid #4d99a8;
        color: #4d99a8;
        font-size: 11rpx;
        padding: 0 12rpx;
        height: 32rpx;
@@ -348,7 +350,7 @@
        width: calc(100% - 60rpx);
        height: 88rpx;
        line-height: 88rpx;
        background: #025eef;
        background: #4d99a8;
        border-radius: 4rpx;
        color: #fff;
        border-radius: 44rpx;
h5/pages/visitorApplication/visitorApplication.vue
@@ -2,7 +2,7 @@
    <view class="visit">
        <view class="head">拜访信息</view>
        <view class="list">
            <view class="list_item">
            <!-- <view class="list_item">
                <view class="list_item_label">
                    <text>被访人手机</text>
                    <text>*</text>
@@ -18,6 +18,16 @@
                </view>
                <view class="list_item_content">
                    <input type="text" placeholder="请输入姓名" v-model="form1.receptMemberName" @blur="getUser" placeholder-style="color: #999999;" />
                </view>
            </view> -->
            <view class="list_item">
                <view class="list_item_label">
                    <text>被访人</text>
                    <text>*</text>
                </view>
                <view class="list_item_content" @click="showName = true">
                    <text :style="{color: form1.name ? '#000000' : ''}">{{form1.name ? form1.name : '请选择'}}</text>
                    <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
                </view>
            </view>
            <view class="list_item">
@@ -51,6 +61,7 @@
                    <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
                </view>
            </view>
            <div class="empty"></div>
            <view class="list_item">
                <view class="list_item_label">
                    <text>拜访事由</text>
@@ -58,6 +69,24 @@
                </view>
                <view class="list_item_content">
                    <input type="text" v-model="form1.reason" placeholder="请输入来访事由" placeholder-style="color: #999999;" />
                </view>
            </view>
            <view class="list_item">
                <view class="list_item_label">
                    <text>是否施工作业</text>
                    <text>*</text>
                </view>
                <view class="list_item_content">
                    <switch color="#4e99a9" style="transform:scale(0.8)" @change="constructionChange" />
                </view>
            </view>
            <view class="list_item">
                <view class="list_item_label">
                    <text>施工内容</text>
                    <text>*</text>
                </view>
                <view class="list_item_content">
                    <input type="text" v-model="form1.ss" placeholder="请输入施工内容" placeholder-style="color: #999999;" />
                </view>
            </view>
            <view class="list_item">
@@ -282,6 +311,7 @@
            </view>
        </u-popup>
        <u-picker keyName="name" :show="show6" :columns="columns1" @confirm="seleIdcard" @cancel="show6 = false"></u-picker>
        <u-picker keyName="name" :show="showName" :columns="columnsNames" @confirm="selectedName" @cancel="showName = false"></u-picker>
        <!-- <tly-picture-cut ref="tlyPictureCut" :pictureSrc="photoSrc" @createImg="uploadImg"></tly-picture-cut> -->
        <keyboardInput ref="keyboard" @export="setPlate" @close="closeInput" />
        <qf-image-cropper ref="cropper" :width="280" :height="280" :radius="30" @crop="uploadImg"></qf-image-cropper>
@@ -299,6 +329,7 @@
                photoSrc: '',
                type: '',
                inputType: '',
                showName: false,
                show: false,
                show1: false,
                show2: false,
@@ -310,6 +341,9 @@
                fileList: [],
                columns1: [
                    [{name: '身份证', id: 0}, {name: '港澳证件', id: 1},{name: '护照', id: 2}],
                ],
                columnsNames: [
                    [{name: '张三', id: 0},{name: '张三', id: 1},{name: '张三', id: 2},]
                ],
                columns: [],
                cars: [],
@@ -372,6 +406,9 @@
            },
            closeInput() {
                this.$refs.keyboard.close()
            },
            constructionChange(e) {
                console.log(e.detail.value);
            },
            uploadImg(file) {
                this.$refs.cropper.close()
@@ -564,8 +601,12 @@
            seleIdcard(e) {
                this.withUserList.idcardType = e.value[0].id
                this.withUserList.idcardTypeName = e.value[0].name
                console.log(e);
                this.show6 = false
            },
            selectedName(e) {
                this.form1.name = e.value[0].name
                this.form1.id = e.value[0].id
                this.showName = false
            },
            submitCart() {
                if (!this.carName) return uni.showToast({
@@ -1116,7 +1157,12 @@
            padding: 0 30rpx;
            box-sizing: border-box;
            background-color: #ffffff;
            .empty{
                width: 750rpx;
                height: 20rpx;
                background-color: #f7f7f7;
                margin: 0 -30rpx;
            }
            .list_item {
                width: 100%;
                // min-height: 98rpx;
@@ -1179,8 +1225,6 @@
            padding: 30rpx;
            box-sizing: border-box;
            background-color: #ffffff;
            margin-top: 20rpx;
            .cate_head {
                font-size: 32rpx;
                font-family: PingFangSC, PingFang SC;
h5/pages/visitorSubGuide/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
<template>
    <view class="box">
    <view class="line" v-for="item,i in guideList" :key="i">{{ item }}</view>
  </view>
</template>
<script>
    export default {
        data() {
            return {
                guideList: [
          '1、访客阅读入厂须知,填写安全答题。',
          '2、答题完成预约。',
          '3、预约完成请至访客机签到。',
          '4、刷脸入园。',
          '5、出园签离',
        ]
            };
        }
    }
</script>
<style lang="scss" scoped>
.box{
  padding: 30rpx;
  .line{
    margin-bottom: 16rpx;
  }
}
</style>
h5/static/banner.jpg
h5/static/ic_laifangdengji.png
h5/static/ic_yuanqudaolan.png
h5/static/ic_yuyuejilu.png
h5/static/ic_yuyuezhinan.png
h5/static/login_bg@2x.png
h5/static/logo@2x.png

h5/static/logo_s@2x.png
h5/utils/http.api.js
@@ -1,26 +1,26 @@
import {baseUrl, uploadUrl} from './config'
import { baseUrl, uploadUrl } from './config'
const install = (Vue, vm) => {
    uni.$u.http.setConfig((config) => {
        config.baseURL = baseUrl;
            config.timeout = 60000;
        return config;
    })
    Vue.prototype.$baseUrl = baseUrl;
    Vue.prototype.$uploadUrl = uploadUrl;
    let wxAuthorize = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/visitor/wxAuthorize', { params });    // è®¿å®¢å¾®ä¿¡æŽˆæƒ
    let getSystemDictData = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/other/getSystemDictData', { params });    // æŸ¥è¯¢å­—典值数据
    let getProblemsVO = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/problem/getProblemsVO', { params });    // èŽ·å–é¢˜ç›®æ•°æ®
    let finishAnswer = (data = {}) => vm.$u.http.post('visitsAdmin/cloudService/web/problem/finishAnswer', data);    // ä¿®æ”¹å½“前登录的用户信息
    let deviceRoleList = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/other/deviceRoleList', { params });    // è®¾å¤‡ç»„列表
    let getVisitedMember = (data = {}) => vm.$u.http.post('visitsAdmin/cloudService/web/visitor/getVisitedMember', data);    // æŸ¥è¯¢è¢«è®¿é—®äººä¿¡æ¯
    let createFk = (data = {}) => vm.$u.http.post('visitsAdmin/cloudService/web/visitor/createFk', data);    // è®¿å®¢è®°å½•提交
    let detail = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/visitor/detail', { params });    // è®¿å®¢è®°å½•详情
    uni.$u.http.setConfig((config) => {
        config.baseURL = baseUrl
        config.timeout = 60000
        return config
    })
    Vue.prototype.$baseUrl = baseUrl
    Vue.prototype.$uploadUrl = uploadUrl
    let wxAuthorize = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/visitor/wxAuthorize', { params })    // è®¿å®¢å¾®ä¿¡æŽˆæƒ
    let getSystemDictData = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/other/getSystemDictData', { params })    // æŸ¥è¯¢å­—典值数据
    let getProblemsVO = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/problem/getProblemsVO', { params })    // èŽ·å–é¢˜ç›®æ•°æ®
    let finishAnswer = (data = {}) => vm.$u.http.post('visitsAdmin/cloudService/web/problem/finishAnswer', data)    // ä¿®æ”¹å½“前登录的用户信息
    let deviceRoleList = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/other/deviceRoleList', { params })    // è®¾å¤‡ç»„列表
    let getVisitedMember = (data = {}) => vm.$u.http.post('visitsAdmin/cloudService/web/visitor/getVisitedMember', data)    // æŸ¥è¯¢è¢«è®¿é—®äººä¿¡æ¯
    let createFk = (data = {}) => vm.$u.http.post('visitsAdmin/cloudService/web/visitor/createFk', data)    // è®¿å®¢è®°å½•提交
    let detail = (params = {}) => vm.$u.http.get('visitsAdmin/cloudService/web/visitor/detail', { params })    // è®¿å®¢è®°å½•详情
    vm.$u.api = {
        wxAuthorize,
        getSystemDictData,
@@ -30,7 +30,7 @@
        getVisitedMember,
        createFk,
        detail
    };
    }
}
export default { install }
h5/utils/meetingHttp.js
@@ -8,7 +8,6 @@
        return config
    })
    Vue.prototype.$baseUrl = baseUrl
    let ordinaryLogin = (params = {}) => uni.$u.http.get('web/account/ordinaryLogin', { params })
    let wxEmpower = (params = {}) => uni.$u.http.get('web/account/wxEmpower', { params })
h5/utils/service.js
@@ -33,7 +33,7 @@
                    }
                    if (data.code !== 200) {
                        uni.showToast({
                            title: response.data.message,
                            title: data.message,
                            icon: "none",
                            duration: 2000
                        })