| | |
| | | <template>
|
| | | <view class="visit">
|
| | | <!-- <view class="head">拜访信息</view> -->
|
| | | <view class="list">
|
| | | <view class="list_item">
|
| | | <view class="list_item_label">
|
| | | <text>*</text>
|
| | | <text>被访人</text>
|
| | | </view>
|
| | | <view class="list_item_content" @click="selName">
|
| | | <text :style="{ color: form1.receptMemberName ? '#000000' : '' }">{{
|
| | | form1.receptMemberName ? form1.receptMemberName : "请选择"
|
| | | }}</text>
|
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="list_item">
|
| | | <view class="list_item_label">
|
| | | <text>*</text>
|
| | | <text>入园时间</text>
|
| | | </view>
|
| | | <view class="list_item_content" @click="show4 = true">
|
| | | <text :style="{ color: form1.starttime ? '#000000' : '' }">{{
|
| | | form1.starttime ? form1.starttime : "请选择"
|
| | | }}</text>
|
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="list_item">
|
| | | <view class="list_item_label">
|
| | | <text>*</text>
|
| | | <text>离园时间</text>
|
| | | </view>
|
| | | <view class="list_item_content" @click="openLC">
|
| | | <text :style="{ color: form1.endtime ? '#000000' : '' }">{{
|
| | | form1.endtime ? form1.endtime : "请选择"
|
| | | }}</text>
|
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <!-- <view class="list_item" v-if="accessControl === '1'" @click="show = true">
|
| | | <view class="list_item_label">
|
| | | <text>访问门禁</text>
|
| | | <text>*</text>
|
| | | </view>
|
| | | <view class="list_item_content">
|
| | | <text :style="{color: form1.doorSelectName ? '#000000' : ''}">{{form1.doorSelectName ? form1.doorSelectName : '请选择'}}</text>
|
| | | <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>
|
| | | <text>拜访事由</text>
|
| | | </view>
|
| | | <view class="list_item_content" @click="showReason = true">
|
| | | <text :style="{ color: form1.reason ? '#000000' : '' }">{{
|
| | | form1.reason ? form1.reason : "请选择拜访事由"
|
| | | }}</text>
|
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="list_item">
|
| | | <view class="list_item_label">
|
| | | <text></text>
|
| | | <text>是否施工作业</text>
|
| | | </view>
|
| | | <view class="list_item_content">
|
| | | <template> |
| | | <view class="visit"> |
| | | <!-- <view class="head">拜访信息</view> --> |
| | | <view class="list"> |
| | | <view class="list_item"> |
| | | <view class="list_item_label"> |
| | | <text>*</text> |
| | | <text>被访人</text> |
| | | </view> |
| | | <view class="list_item_content" @click="selName"> |
| | | <text :style="{ color: form1.receptMemberName ? '#000000' : '' }">{{ |
| | | form1.receptMemberName ? form1.receptMemberName : "请选择" |
| | | }}</text> |
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="list_item"> |
| | | <view class="list_item_label"> |
| | | <text>*</text> |
| | | <text>入园时间</text> |
| | | </view> |
| | | <view class="list_item_content" @click="show4 = true"> |
| | | <text :style="{ color: form1.starttime ? '#000000' : '' }">{{ |
| | | form1.starttime ? form1.starttime : "请选择" |
| | | }}</text> |
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="list_item"> |
| | | <view class="list_item_label"> |
| | | <text>*</text> |
| | | <text>离园时间</text> |
| | | </view> |
| | | <view class="list_item_content" @click="openLC"> |
| | | <text :style="{ color: form1.endtime ? '#000000' : '' }">{{ |
| | | form1.endtime ? form1.endtime : "请选择" |
| | | }}</text> |
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> |
| | | </view> |
| | | </view> |
| | | <!-- <view class="list_item" v-if="accessControl === '1'" @click="show = true"> |
| | | <view class="list_item_label"> |
| | | <text>访问门禁</text> |
| | | <text>*</text> |
| | | </view> |
| | | <view class="list_item_content"> |
| | | <text :style="{color: form1.doorSelectName ? '#000000' : ''}">{{form1.doorSelectName ? form1.doorSelectName : '请选择'}}</text> |
| | | <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> |
| | | <text>拜访事由</text> |
| | | </view> |
| | | <view class="list_item_content" @click="showReason = true"> |
| | | <text :style="{ color: form1.reason ? '#000000' : '' }">{{ |
| | | form1.reason ? form1.reason : "请选择拜访事由" |
| | | }}</text> |
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> |
| | | </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" /> --> |
| | | <!-- <u-radio-group v-model="form1.type"> |
| | | <u-radio label="是" :name="1" activeColor="#4d99a8" class="mr24" /> |
| | |
| | | <image v-else src="@/static/checkbox_disable@3x.png" mode=""></image> |
| | | </view> |
| | | |
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view v-if="form1.type == '1'" class="list_item">
|
| | | <view class="list_item_label">
|
| | | <text></text>
|
| | | <text>施工内容</text>
|
| | | <!-- <text>*</text> -->
|
| | | </view>
|
| | | <view class="list_item_content">
|
| | | <input type="text" v-model="form1.constructionReason" 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" @click="openInput(1)">
|
| | | <text :style="{ color: form1.carNos ? '#000000' : '' }">{{
|
| | | form1.carNos ? form1.carNos : "请输入车牌号码"
|
| | | }}</text>
|
| | | <!-- <input type="text" placeholder="请输入车牌号" v-model="form1.carNos" maxlength="8" placeholder-style="color: #999999;" /> -->
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="footer">
|
| | | <view class="footer_btn" @click="onSubmit">提交</view>
|
| | | </view>
|
| | | <!-- 入园时间 -->
|
| | | <u-datetime-picker :show="show4" :minDate="new Date().getTime()" mode="datetime" :formatter="formatter"
|
| | | @cancel="show4 = false" @confirm="setstarttime"></u-datetime-picker>
|
| | | <!-- 离园时间 -->
|
| | | <u-datetime-picker v-if="form1.starttime" :show="show5" :formatter="formatter"
|
| | | :minDate="formatTimeStamp(form1.starttime)" :maxDate="formatTimeStamp(form1.starttime.slice(0,10) + ' 23:59')"
|
| | | mode="datetime" @cancel="show5 = false" @confirm="setendtime"></u-datetime-picker>
|
| | | <!-- 门禁 -->
|
| | | <u-popup :show="show" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom" @close="closeMJ">
|
| | | <view class="menjin">
|
| | | <view class="respondent-title"> 选择门禁 </view>
|
| | | <scroll-view scroll-y class="list">
|
| | | <view class="list_item" v-for="(item, index) in columns" :key="index" @click="seleMJ(index)">
|
| | | <text>{{ item.name }}</text>
|
| | | <image src="@/static/checkbox@2x.png" mode="widthFix" v-show="!item.active"></image>
|
| | | <image src="@/static/checkbo1x_sel@2x.png" mode="widthFix" v-show="item.active"></image>
|
| | | </view>
|
| | | </scroll-view>
|
| | | <view class="menjin_footer">
|
| | | <view class="menjin_footer_item" @click="closeMJ">取消</view>
|
| | | <view class="menjin_footer_item" @click="submitMJ">确认</view>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- 选择随行人员 -->
|
| | | <u-popup :show="show1" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom"
|
| | | @close="show1 = false">
|
| | | <view class="popup-content">
|
| | | <view class="respondent-title"> 选择随行人员 </view>
|
| | | <view class="search-box">
|
| | | <view class="search-box-top">
|
| | | <view class="search-box-top-ipt">
|
| | | <image src="@/static/ic_search@2x.png" mode="widthFix"></image>
|
| | | <input type="text" placeholder="搜索姓名/手机号" />
|
| | | </view>
|
| | | <text @click="
|
| | | show1 = false;
|
| | | show3 = true;
|
| | | ">新增</text>
|
| | | </view>
|
| | | <view class="search-box-total">共0条数据</view>
|
| | | </view>
|
| | | <scroll-view scroll-y class="list">
|
| | | <view class="item" v-for="(item, index) in 8" :key="index">
|
| | | <view class="item_a">
|
| | | <!-- <image src="@/static/checkbox.png" mode="widthFix" v-if="!item.active" /> -->
|
| | | <image src="@/static/checkbox_sel@2x.png" mode="widthFix" />
|
| | | </view>
|
| | | <view class="item_b">
|
| | | <image src="@/static/ic_mima@2x.png" mode="widthFix" />
|
| | | </view>
|
| | | <view class="item_c">
|
| | | <text>用户名</text>
|
| | | <text>已拉黑</text>
|
| | | </view>
|
| | | </view>
|
| | | </scroll-view>
|
| | | <view class="footer1">
|
| | | <view class="footer_left">
|
| | | <text class="footer_left_a">已选择:0人</text>
|
| | | <text class="footer_left_b">李伟;</text>
|
| | | </view>
|
| | | <view class="footer_btn">确认 0/0</view>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- 车辆 -->
|
| | | <u-popup :show="show2" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom"
|
| | | @close="show2 = false">
|
| | | <view class="addcar">
|
| | | <view class="addcar_head">添加车辆</view>
|
| | | <view class="addcar_ipt">
|
| | | <input type="text" v-model="carName" placeholder="请输入车牌号" />
|
| | | </view>
|
| | | <view class="addcar_footer">
|
| | | <view class="addcar_footer_item" @click="show2 = false">取消</view>
|
| | | <view class="addcar_footer_item t" @click="submitCart">提交</view>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- 添加随行人员 -->
|
| | | <u-popup :show="show3" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom"
|
| | | @close="show3 = false">
|
| | | <view class="adduser">
|
| | | <view class="adduser_head">随行人员</view>
|
| | | <view class="adduser_list">
|
| | | <view class="adduser_list_item">
|
| | | <view class="adduser_list_item_label">
|
| | | <text>姓名</text>
|
| | | <text>*</text>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt">
|
| | | <input type="text" v-model="withUserList.name" placeholder-style="color: #999999;font-size: 28rpx;"
|
| | | placeholder="请输入真实姓名" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="adduser_list_item">
|
| | | <view class="adduser_list_item_label">
|
| | | <text>手机号</text>
|
| | | <text>*</text>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt">
|
| | | <input type="number" v-model="withUserList.phone" maxlength="11"
|
| | | placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入手机号" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="adduser_list_item">
|
| | | <view class="adduser_list_item_label">
|
| | | <text>证件类型</text>
|
| | | <text>*</text>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt" @click="show6 = true">
|
| | | <text :style="{ color: withUserList.idcardTypeName ? '#000000' : '' }">{{
|
| | | withUserList.idcardTypeName
|
| | | ? withUserList.idcardTypeName
|
| | | : "请选择"
|
| | | }}</text>
|
| | | <u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="adduser_list_item">
|
| | | <view class="adduser_list_item_label">
|
| | | <text>证件号码</text>
|
| | | <text>*</text>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt">
|
| | | <input type="text" v-model="withUserList.idcardNo" maxlength="18"
|
| | | placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入证件号码" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="adduser_list_item">
|
| | | <view class="adduser_list_item_label">
|
| | | <text>*</text>
|
| | | <text>公司</text>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt">
|
| | | <input type="text" v-model="withUserList.companyName" placeholder-style="color: #999999;font-size: 28rpx;"
|
| | | placeholder="请输入公司名称" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="adduser_list_item">
|
| | | <view class="adduser_list_item_label">
|
| | | <text></text>
|
| | | <text>随行车辆</text>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt" @click="openInput(2)">
|
| | | <text :style="{ color: withUserList.carNos ? '#000000' : '' }">{{
|
| | | withUserList.carNos ? withUserList.carNos : "请输入车牌号码"
|
| | | }}</text>
|
| | | <!-- <input type="text" v-model="withUserList.carNos" disabled placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入车牌号" /> -->
|
| | | </view>
|
| | | </view>
|
| | | <view class="adduser_list_item">
|
| | | <view class="adduser_list_item_label1">
|
| | | <text class="cc">人脸照片<b>*</b></text>
|
| | | <text class="aa">1、请提供五官清晰,人脸居中的正面人脸免冠照片;</text>
|
| | | <text class="aa">2、照片无逆光、无PS、无过度美颜处理;</text>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt">
|
| | | <view class="adduser_list_item_ipt1_upload" @click="upload('faceImg')" v-if="!withUserList.faceImgUrl">
|
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt1_upload" @click="upload('faceImg')" v-else>
|
| | | <image :src="withUserList.faceImgUrl" mode="widthFix"></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="adduser_list_item">
|
| | | <view class="adduser_list_item_label">
|
| | | <text>健康证照片</text>
|
| | | <text v-if="visit === '1'">*</text>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt">
|
| | | <view class="adduser_list_item_ipt1_upload" @click="upload('imgurl')" v-if="!withUserList.imgurlUrl">
|
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt1_upload" @click="upload('imgurl')" v-else>
|
| | | <image :src="withUserList.imgurlUrl" mode="widthFix"></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="adduser_footer">
|
| | | <view class="adduser_footer_item" @click="show3 = false">取消</view>
|
| | | <view class="adduser_footer_item t" @click="submitUser">提交</view>
|
| | | </view>
|
| | | </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="VisitPoeple" @confirm="selectedName"
|
| | | @cancel="showName = false"></u-picker>
|
| | | <u-picker keyName="title" :show="showReason" :columns="VisitReason" @confirm="selectedReason"
|
| | | @cancel="showReason = 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>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import tlyPictureCut from "@/components/tly-picture-cut/tlyPictureCut.vue"
|
| | | import keyboardInput from "@/components/keyboard-input/keyboard-input.vue"
|
| | | import QfImageCropper from '@/uni_modules/qf-image-cropper/components/qf-image-cropper/qf-image-cropper.vue'
|
| | | import {
|
| | | getDaysAfterDate
|
| | | } from '@/utils/utils.js'
|
| | | import {
|
| | | getVisitedMember,
|
| | | getSystemDictData,
|
| | | getVisitedVisitReason,
|
| | | createFk
|
| | | } from '@/api'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | photoSrc: '',
|
| | | type: '',
|
| | | inputType: '',
|
| | | showName: false,
|
| | | show: false,
|
| | | show1: false,
|
| | | show2: false,
|
| | | show3: false,
|
| | | show4: false,
|
| | | show5: false,
|
| | | show6: false,
|
| | | show7: false,
|
| | | showReason: false,
|
| | | fileList: [],
|
| | | columns1: [
|
| | | [{
|
| | | name: '身份证',
|
| | | id: 0
|
| | | }, {
|
| | | name: '港澳证件',
|
| | | id: 1
|
| | | }, {
|
| | | name: '护照',
|
| | | id: 2
|
| | | }],
|
| | | ],
|
| | | VisitReason: [],
|
| | | VisitPoeple: [],
|
| | | columns: [],
|
| | | cars: [],
|
| | | day: null,
|
| | | maxTime: '',
|
| | | carName: '',
|
| | | personnel: [],
|
| | | userAnswerId: '',
|
| | | form1: {
|
| | | phone1: '',
|
| | | receptMemberId: '',
|
| | | receptMemberName: '',
|
| | | starttime: '',
|
| | | endtime: '',
|
| | | doors: '',
|
| | | doorSelectName: '',
|
| | | reason: '',
|
| | | carNos: '',
|
| | | type: 0
|
| | | },
|
| | | withUserList: {
|
| | | name: '',
|
| | | phone: '',
|
| | | idcardType: '',
|
| | | idcardTypeName: '',
|
| | | companyName: '',
|
| | | idcardNo: '',
|
| | | faceImg: '',
|
| | | faceImgUrl: '',
|
| | | imgurl: '',
|
| | | imgurlUrl: ''
|
| | | },
|
| | | visit: '',
|
| | | form: {},
|
| | | accessControl: '',
|
| | | verify: ''
|
| | | }
|
| | | },
|
| | | components: {
|
| | | tlyPictureCut,
|
| | | keyboardInput,
|
| | | QfImageCropper
|
| | | },
|
| | | onLoad(options) {
|
| | | if (options.data) {
|
| | | this.form = JSON.parse(options.data)
|
| | | }
|
| | | // this.getvisit()
|
| | | // this.getVisit1()
|
| | | // this.getUserValid()
|
| | | this.getUser()
|
| | | },
|
| | | mounted() {
|
| | | this.$eventBus.$on('svisitorAppSel', (option) => {
|
| | | // this.$set(this.param, 'checkUserId', option.id)
|
| | | // this.$set(this.param, 'applyCheckUserId', option.id)
|
| | | // this.$set(this.param, 'checkorName', option.name)
|
| | |
|
| | | this.form1.receptMemberName = option.name
|
| | | this.form1.receptMemberId = option.id
|
| | | this.form1.receptMemberDepartment = option.companyName
|
| | | })
|
| | | },
|
| | | methods: {
|
| | | formatter(type, value) {
|
| | | if (type === 'year') {
|
| | | return `${value}年`
|
| | | }
|
| | | if (type === 'month') {
|
| | | return `${value}月`
|
| | | }
|
| | | if (type === 'day') {
|
| | | return `${value}日`
|
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view v-if="form1.type == '1'" class="list_item"> |
| | | <view class="list_item_label"> |
| | | <text></text> |
| | | <text>施工内容</text> |
| | | <!-- <text>*</text> --> |
| | | </view> |
| | | <view class="list_item_content"> |
| | | <input type="text" v-model="form1.constructionReason" 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" @click="openInput(1)"> |
| | | <text :style="{ color: form1.carNos ? '#000000' : '' }">{{ |
| | | form1.carNos ? form1.carNos : "请输入车牌号码" |
| | | }}</text> |
| | | <!-- <input type="text" placeholder="请输入车牌号" v-model="form1.carNos" maxlength="8" placeholder-style="color: #999999;" /> --> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="footer"> |
| | | <view class="footer_btn" @click="onSubmit">提交</view> |
| | | </view> |
| | | <!-- 入园时间 --> |
| | | <u-datetime-picker :show="show4" :minDate="new Date().getTime()" mode="datetime" :formatter="formatter" |
| | | @cancel="show4 = false" @confirm="setstarttime"></u-datetime-picker> |
| | | <!-- 离园时间 --> |
| | | <u-datetime-picker v-if="form1.starttime" :show="show5" :formatter="formatter" |
| | | :minDate="formatTimeStamp(form1.starttime)" :maxDate="formatTimeStamp(form1.starttime.slice(0,10) + ' 23:59')" |
| | | mode="datetime" @cancel="show5 = false" @confirm="setendtime"></u-datetime-picker> |
| | | <!-- 门禁 --> |
| | | <u-popup :show="show" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom" @close="closeMJ"> |
| | | <view class="menjin"> |
| | | <view class="respondent-title"> 选择门禁 </view> |
| | | <scroll-view scroll-y class="list"> |
| | | <view class="list_item" v-for="(item, index) in columns" :key="index" @click="seleMJ(index)"> |
| | | <text>{{ item.name }}</text> |
| | | <image src="@/static/checkbox@2x.png" mode="widthFix" v-show="!item.active"></image> |
| | | <image src="@/static/checkbo1x_sel@2x.png" mode="widthFix" v-show="item.active"></image> |
| | | </view> |
| | | </scroll-view> |
| | | <view class="menjin_footer"> |
| | | <view class="menjin_footer_item" @click="closeMJ">取消</view> |
| | | <view class="menjin_footer_item" @click="submitMJ">确认</view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | <!-- 选择随行人员 --> |
| | | <u-popup :show="show1" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom" |
| | | @close="show1 = false"> |
| | | <view class="popup-content"> |
| | | <view class="respondent-title"> 选择随行人员 </view> |
| | | <view class="search-box"> |
| | | <view class="search-box-top"> |
| | | <view class="search-box-top-ipt"> |
| | | <image src="@/static/ic_search@2x.png" mode="widthFix"></image> |
| | | <input type="text" placeholder="搜索姓名/手机号" /> |
| | | </view> |
| | | <text @click=" |
| | | show1 = false; |
| | | show3 = true; |
| | | ">新增</text> |
| | | </view> |
| | | <view class="search-box-total">共0条数据</view> |
| | | </view> |
| | | <scroll-view scroll-y class="list"> |
| | | <view class="item" v-for="(item, index) in 8" :key="index"> |
| | | <view class="item_a"> |
| | | <!-- <image src="@/static/checkbox.png" mode="widthFix" v-if="!item.active" /> --> |
| | | <image src="@/static/checkbox_sel@2x.png" mode="widthFix" /> |
| | | </view> |
| | | <view class="item_b"> |
| | | <image src="@/static/ic_mima@2x.png" mode="widthFix" /> |
| | | </view> |
| | | <view class="item_c"> |
| | | <text>用户名</text> |
| | | <text>已拉黑</text> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | <view class="footer1"> |
| | | <view class="footer_left"> |
| | | <text class="footer_left_a">已选择:0人</text> |
| | | <text class="footer_left_b">李伟;</text> |
| | | </view> |
| | | <view class="footer_btn">确认 0/0</view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | <!-- 车辆 --> |
| | | <u-popup :show="show2" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom" |
| | | @close="show2 = false"> |
| | | <view class="addcar"> |
| | | <view class="addcar_head">添加车辆</view> |
| | | <view class="addcar_ipt"> |
| | | <input type="text" v-model="carName" placeholder="请输入车牌号" /> |
| | | </view> |
| | | <view class="addcar_footer"> |
| | | <view class="addcar_footer_item" @click="show2 = false">取消</view> |
| | | <view class="addcar_footer_item t" @click="submitCart">提交</view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | <!-- 添加随行人员 --> |
| | | <u-popup :show="show3" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom" |
| | | @close="show3 = false"> |
| | | <view class="adduser"> |
| | | <view class="adduser_head">随行人员</view> |
| | | <view class="adduser_list"> |
| | | <view class="adduser_list_item"> |
| | | <view class="adduser_list_item_label"> |
| | | <text>姓名</text> |
| | | <text>*</text> |
| | | </view> |
| | | <view class="adduser_list_item_ipt"> |
| | | <input type="text" v-model="withUserList.name" placeholder-style="color: #999999;font-size: 28rpx;" |
| | | placeholder="请输入真实姓名" /> |
| | | </view> |
| | | </view> |
| | | <view class="adduser_list_item"> |
| | | <view class="adduser_list_item_label"> |
| | | <text>手机号</text> |
| | | <text>*</text> |
| | | </view> |
| | | <view class="adduser_list_item_ipt"> |
| | | <input type="number" v-model="withUserList.phone" maxlength="11" |
| | | placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入手机号" /> |
| | | </view> |
| | | </view> |
| | | <view class="adduser_list_item"> |
| | | <view class="adduser_list_item_label"> |
| | | <text>证件类型</text> |
| | | <text>*</text> |
| | | </view> |
| | | <view class="adduser_list_item_ipt" @click="show6 = true"> |
| | | <text :style="{ color: withUserList.idcardTypeName ? '#000000' : '' }">{{ |
| | | withUserList.idcardTypeName |
| | | ? withUserList.idcardTypeName |
| | | : "请选择" |
| | | }}</text> |
| | | <u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="adduser_list_item"> |
| | | <view class="adduser_list_item_label"> |
| | | <text>证件号码</text> |
| | | <text>*</text> |
| | | </view> |
| | | <view class="adduser_list_item_ipt"> |
| | | <input type="text" v-model="withUserList.idcardNo" maxlength="18" |
| | | placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入证件号码" /> |
| | | </view> |
| | | </view> |
| | | <view class="adduser_list_item"> |
| | | <view class="adduser_list_item_label"> |
| | | <text>*</text> |
| | | <text>公司</text> |
| | | </view> |
| | | <view class="adduser_list_item_ipt"> |
| | | <input type="text" v-model="withUserList.companyName" placeholder-style="color: #999999;font-size: 28rpx;" |
| | | placeholder="请输入公司名称" /> |
| | | </view> |
| | | </view> |
| | | <view class="adduser_list_item"> |
| | | <view class="adduser_list_item_label"> |
| | | <text></text> |
| | | <text>随行车辆</text> |
| | | </view> |
| | | <view class="adduser_list_item_ipt" @click="openInput(2)"> |
| | | <text :style="{ color: withUserList.carNos ? '#000000' : '' }">{{ |
| | | withUserList.carNos ? withUserList.carNos : "请输入车牌号码" |
| | | }}</text> |
| | | <!-- <input type="text" v-model="withUserList.carNos" disabled placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入车牌号" /> --> |
| | | </view> |
| | | </view> |
| | | <view class="adduser_list_item"> |
| | | <view class="adduser_list_item_label1"> |
| | | <text class="cc">人脸照片<b>*</b></text> |
| | | <text class="aa">1、请提供五官清晰,人脸居中的正面人脸免冠照片;</text> |
| | | <text class="aa">2、照片无逆光、无PS、无过度美颜处理;</text> |
| | | </view> |
| | | <view class="adduser_list_item_ipt"> |
| | | <view class="adduser_list_item_ipt1_upload" @click="upload('faceImg')" v-if="!withUserList.faceImgUrl"> |
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon> |
| | | </view> |
| | | <view class="adduser_list_item_ipt1_upload" @click="upload('faceImg')" v-else> |
| | | <image :src="withUserList.faceImgUrl" mode="widthFix"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="adduser_list_item"> |
| | | <view class="adduser_list_item_label"> |
| | | <text>健康证照片</text> |
| | | <text v-if="visit === '1'">*</text> |
| | | </view> |
| | | <view class="adduser_list_item_ipt"> |
| | | <view class="adduser_list_item_ipt1_upload" @click="upload('imgurl')" v-if="!withUserList.imgurlUrl"> |
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon> |
| | | </view> |
| | | <view class="adduser_list_item_ipt1_upload" @click="upload('imgurl')" v-else> |
| | | <image :src="withUserList.imgurlUrl" mode="widthFix"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="adduser_footer"> |
| | | <view class="adduser_footer_item" @click="show3 = false">取消</view> |
| | | <view class="adduser_footer_item t" @click="submitUser">提交</view> |
| | | </view> |
| | | </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="VisitPoeple" @confirm="selectedName" |
| | | @cancel="showName = false"></u-picker> |
| | | <u-picker keyName="title" :show="showReason" :columns="VisitReason" @confirm="selectedReason" |
| | | @cancel="showReason = 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> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import tlyPictureCut from "@/components/tly-picture-cut/tlyPictureCut.vue" |
| | | import keyboardInput from "@/components/keyboard-input/keyboard-input.vue" |
| | | import QfImageCropper from '@/uni_modules/qf-image-cropper/components/qf-image-cropper/qf-image-cropper.vue' |
| | | import { |
| | | getDaysAfterDate |
| | | } from '@/utils/utils.js' |
| | | import { |
| | | getVisitedMember, |
| | | getSystemDictData, |
| | | getVisitedVisitReason, |
| | | createFk |
| | | } from '@/api' |
| | | export default { |
| | | data() { |
| | | return { |
| | | photoSrc: '', |
| | | type: '', |
| | | inputType: '', |
| | | showName: false, |
| | | show: false, |
| | | show1: false, |
| | | show2: false, |
| | | show3: false, |
| | | show4: false, |
| | | show5: false, |
| | | show6: false, |
| | | show7: false, |
| | | showReason: false, |
| | | fileList: [], |
| | | columns1: [ |
| | | [{ |
| | | name: '身份证', |
| | | id: 0 |
| | | }, { |
| | | name: '港澳证件', |
| | | id: 1 |
| | | }, { |
| | | name: '护照', |
| | | id: 2 |
| | | }], |
| | | ], |
| | | VisitReason: [], |
| | | VisitPoeple: [], |
| | | columns: [], |
| | | cars: [], |
| | | day: null, |
| | | maxTime: '', |
| | | carName: '', |
| | | personnel: [], |
| | | userAnswerId: '', |
| | | form1: { |
| | | phone1: '', |
| | | receptMemberId: '', |
| | | receptMemberName: '', |
| | | starttime: '', |
| | | endtime: '', |
| | | doors: '', |
| | | doorSelectName: '', |
| | | reason: '', |
| | | carNos: '', |
| | | type: 0 |
| | | }, |
| | | withUserList: { |
| | | name: '', |
| | | phone: '', |
| | | idcardType: '', |
| | | idcardTypeName: '', |
| | | companyName: '', |
| | | idcardNo: '', |
| | | faceImg: '', |
| | | faceImgUrl: '', |
| | | imgurl: '', |
| | | imgurlUrl: '' |
| | | }, |
| | | visit: '', |
| | | form: {}, |
| | | accessControl: '', |
| | | verify: '' |
| | | } |
| | | }, |
| | | components: { |
| | | tlyPictureCut, |
| | | keyboardInput, |
| | | QfImageCropper |
| | | }, |
| | | onLoad(options) { |
| | | if (options.data) { |
| | | this.form = JSON.parse(options.data) |
| | | } |
| | | // this.getvisit() |
| | | // this.getVisit1() |
| | | // this.getUserValid() |
| | | this.getUser() |
| | | }, |
| | | mounted() { |
| | | this.$eventBus.$on('svisitorAppSel', (option) => { |
| | | // this.$set(this.param, 'checkUserId', option.id) |
| | | // this.$set(this.param, 'applyCheckUserId', option.id) |
| | | // this.$set(this.param, 'checkorName', option.name) |
| | | |
| | | this.form1.receptMemberName = option.name |
| | | this.form1.receptMemberId = option.id |
| | | this.form1.receptMemberDepartment = option.companyName |
| | | }) |
| | | }, |
| | | methods: { |
| | | formatter(type, value) { |
| | | if (type === 'year') { |
| | | return `${value}年` |
| | | } |
| | | if (type === 'month') { |
| | | return `${value}月` |
| | | } |
| | | if (type === 'day') { |
| | | return `${value}日` |
| | | } |
| | | <<<<<<< HEAD |
| | | this.$forceUpdate() |
| | | this.closeInput() |
| | | }, |
| | | closeInput() { |
| | | this.$refs.keyboard.close() |
| | | }, |
| | | uploadImg(file) { |
| | | this.$refs.cropper.close() |
| | | uni.showLoading({ title: '上传中', mask: true }); |
| | | uni.uploadFile({ |
| | | url: `${this.$baseUrl}public/api/uploadFtp.do`, |
| | | filePath: file.tempFilePath, |
| | | name: 'file', |
| | | formData: { |
| | | folderCode: 'MEMBER_IMG' |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | let res = JSON.parse(uploadFileRes.data) |
| | | this.withUserList.faceImg = res.data.halfPath |
| | | this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath |
| | | }, |
| | | complete() { |
| | | uni.hideLoading(); |
| | | } |
| | | }); |
| | | }, |
| | | closeMJ() { |
| | | this.show = false |
| | | this.columns.forEach(item => { |
| | | item.active = false |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (!this.form1.receptMemberId) return uni.showToast({ |
| | | title: '请填写有效的访问人', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.form1.starttime) return uni.showToast({ |
| | | title: '入场时间不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.form1.endtime) return uni.showToast({ |
| | | title: '离场时间不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.form1.doorSelectName && this.accessControl == 1) return uni.showToast({ |
| | | title: '访问门禁不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.form1.reason) return uni.showToast({ |
| | | title: '拜访事由不能为空', |
| | | icon: 'none' |
| | | }) |
| | | // this.form1.starttime = this.form1.starttime + ':00' |
| | | // this.form1.endtime = this.form1.endtime + ':00' |
| | | let data = JSON.parse(JSON.stringify(this.form1)) |
| | | data.starttime = data.starttime + ':00' |
| | | data.endtime = data.endtime + ':00' |
| | | this.$u.api.createFk({ |
| | | ...this.form, |
| | | ...data, |
| | | openid: this.$store.state.openId, |
| | | withUserList: this.personnel |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | uni.reLaunch({ |
| | | url: `/pages/appointmentDetails/appointmentDetails?id=${res.data}` |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | deleUser(i) { |
| | | this.personnel.splice(i, 1) |
| | | }, |
| | | getVisit1() { |
| | | // 是否需要答题 |
| | | this.$u.api.getSystemDictData({ |
| | | dictCode: 'SYSTEM', |
| | | label: 'HEALTH_CARD' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.visit = res.data.code |
| | | } |
| | | }) |
| | | // 起始时间时长 |
| | | this.$u.api.getSystemDictData({ |
| | | dictCode: 'VISIT_CONFIG', |
| | | label: 'VALIDATE_VISIT' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.day = Number(res.data.code) |
| | | console.log(this.day) |
| | | // console.log(nextDay('after', true, this.day)) |
| | | } |
| | | }) |
| | | }, |
| | | submitUser() { |
| | | if (!this.withUserList.name) return uni.showToast({ |
| | | title: '姓名不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.withUserList.phone) return uni.showToast({ |
| | | title: '手机号不能为空', |
| | | icon: 'none' |
| | | }) |
| | | const regExp = /^1[3456789]\d{9}$/; |
| | | if (!regExp.test(this.withUserList.phone)) return uni.showToast({ |
| | | title: '手机号格式错误', |
| | | icon: 'none' |
| | | }) |
| | | if (!String(this.withUserList.idcardType)) return uni.showToast({ |
| | | title: '证件类型不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.withUserList.idcardNo) return uni.showToast({ |
| | | title: '证件号码不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (this.withUserList.idcardType === 0) { |
| | | const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dxX]$/; |
| | | if (!regex.test(this.withUserList.idcardNo)) return uni.showToast({ |
| | | title: '证件号码格式错误', |
| | | icon: 'none' |
| | | }) |
| | | ======= |
| | | if (type === 'hour') { |
| | | return `${value}时` |
| | | >>>>>>> f0f08cc1ff84d45de32d8bff4a40e6a7d0d7a9e6 |
| | | } |
| | | if (type === 'minute') { |
| | | return `${value}分` |
| | | }
|
| | | return value
|
| | | },
|
| | | selName() {
|
| | | uni.navigateTo({
|
| | | url: '/pages/visitorApplication/memberSel'
|
| | | })
|
| | | },
|
| | | openInput(type) {
|
| | | this.inputType = type
|
| | | this.$refs.keyboard.open()
|
| | | },
|
| | | setPlate(e) {
|
| | | if (this.inputType === 1) {
|
| | | this.form1.carNos = e
|
| | | } else if (this.inputType === 2) {
|
| | | this.withUserList.carNos = e
|
| | | }
|
| | | this.$forceUpdate()
|
| | | this.closeInput()
|
| | | },
|
| | | closeInput() {
|
| | | this.$refs.keyboard.close()
|
| | | },
|
| | | constructionChange(value) {
|
| | | this.form1.type = value
|
| | | },
|
| | | uploadImg(file) {
|
| | | this.$refs.cropper.close()
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | | mask: true
|
| | | })
|
| | | uni.uploadFile({
|
| | | url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
|
| | | filePath: file.tempFilePath,
|
| | | name: 'file',
|
| | | formData: {
|
| | | folderCode: 'MEMBER_IMG'
|
| | | },
|
| | | success: (uploadFileRes) => {
|
| | | let res = JSON.parse(uploadFileRes.data)
|
| | | this.withUserList.faceImg = res.data.halfPath
|
| | | this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
|
| | | },
|
| | | complete() {
|
| | | uni.hideLoading()
|
| | | }
|
| | | })
|
| | | },
|
| | | closeMJ() {
|
| | | this.show = false
|
| | | this.columns.forEach(item => {
|
| | | item.active = false
|
| | | })
|
| | | },
|
| | | onSubmit() {
|
| | | if (!this.form1.receptMemberId) return uni.showToast({
|
| | | title: '请填写有效的访问人',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!this.form1.starttime) return uni.showToast({
|
| | | title: '入园时间不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!this.form1.endtime) return uni.showToast({
|
| | | title: '离园时间不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!this.form1.doorSelectName && this.accessControl == 1) return uni.showToast({
|
| | | title: '访问门禁不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!this.form1.reason) return uni.showToast({
|
| | | title: '拜访事由不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | // this.form1.starttime = this.form1.starttime + ':00'
|
| | | // this.form1.endtime = this.form1.endtime + ':00'
|
| | | let data = JSON.parse(JSON.stringify(this.form1))
|
| | | data.starttime = data.starttime + ':00'
|
| | | data.endtime = data.endtime + ':00'
|
| | | createFk({
|
| | | ...this.form,
|
| | | ...data,
|
| | | openid: this.$store.state.openId,
|
| | | withUserList: this.personnel
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | uni.navigateTo({
|
| | | url: `/pages/appointmentDetails/appointmentDetails?id=${res.data}`
|
| | | })
|
| | | }
|
| | | })
|
| | | },
|
| | | deleUser(i) {
|
| | | this.personnel.splice(i, 1)
|
| | | },
|
| | | getVisit1() {
|
| | | // 是否需要答题
|
| | | this.$u.api.getSystemDictData({
|
| | | dictCode: 'SYSTEM',
|
| | | label: 'HEALTH_CARD'
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | this.visit = res.data.code
|
| | | }
|
| | | })
|
| | | // 起始时间时长
|
| | | getSystemDictData({
|
| | | dictCode: 'VISIT_CONFIG',
|
| | | label: 'VALIDATE_VISIT'
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | this.day = Number(res.data.code)
|
| | | // console.log(nextDay('after', true, this.day))
|
| | | }
|
| | | })
|
| | | },
|
| | | submitUser() {
|
| | | if (!this.withUserList.name) return uni.showToast({
|
| | | title: '姓名不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!this.withUserList.phone) return uni.showToast({
|
| | | title: '手机号不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | const regExp = /^1[3456789]\d{9}$/
|
| | | if (!regExp.test(this.withUserList.phone)) return uni.showToast({
|
| | | title: '手机号格式错误',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!String(this.withUserList.idcardType)) return uni.showToast({
|
| | | title: '证件类型不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!this.withUserList.idcardNo) return uni.showToast({
|
| | | title: '证件号码不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | if (this.withUserList.idcardType === 0) {
|
| | | const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dxX]$/
|
| | | if (!regex.test(this.withUserList.idcardNo)) return uni.showToast({
|
| | | title: '证件号码格式错误',
|
| | | icon: 'none'
|
| | | })
|
| | | }
|
| | | if (!this.withUserList.companyName) return uni.showToast({
|
| | | title: '公司不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!this.withUserList.faceImg) return uni.showToast({
|
| | | title: '人脸照片不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | if (this.visit === '1') {
|
| | | if (!this.withUserList.imgurl) return uni.showToast({
|
| | | title: '人脸照片不能为空',
|
| | | icon: 'none'
|
| | | })
|
| | | }
|
| | | let arr = JSON.parse(JSON.stringify(this.withUserList))
|
| | | this.personnel.push(arr)
|
| | | this.show3 = false
|
| | | this.withUserList.name = ''
|
| | | this.withUserList.phone = ''
|
| | | this.withUserList.idcardType = ''
|
| | | this.withUserList.idcardTypeName = ''
|
| | | this.withUserList.companyName = ''
|
| | | this.withUserList.idcardNo = ''
|
| | | this.withUserList.faceImg = ''
|
| | | this.withUserList.faceImgUrl = ''
|
| | | this.withUserList.imgurl = ''
|
| | | this.withUserList.imgurlUrl = ''
|
| | | },
|
| | | upload(type) {
|
| | | this.type = type
|
| | | if (type === 'faceImg') {
|
| | | this.$refs.cropper.open()
|
| | | return
|
| | | }
|
| | | uni.chooseImage({
|
| | | success: (chooseImageRes) => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | | mask: true
|
| | | })
|
| | | for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
|
| | | uni.uploadFile({
|
| | | url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
|
| | | filePath: chooseImageRes.tempFilePaths[i],
|
| | | name: 'file',
|
| | | formData: {
|
| | | folderCode: 'MEMBER_IMG'
|
| | | },
|
| | | success: (uploadFileRes) => {
|
| | | let res = JSON.parse(uploadFileRes.data)
|
| | | if (type === 'faceImg') {
|
| | | this.withUserList.faceImg = res.data.halfPath
|
| | | this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
|
| | | } else {
|
| | | this.withUserList.imgurl = res.data.halfPath
|
| | | this.withUserList.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
|
| | | }
|
| | | },
|
| | | complete() {
|
| | | if (i === chooseImageRes.tempFilePaths.length - 1) {
|
| | | uni.hideLoading()
|
| | | }
|
| | | }
|
| | | })
|
| | | }
|
| | | }
|
| | | })
|
| | | },
|
| | | seleIdcard(e) {
|
| | | this.withUserList.idcardType = e.value[0].id
|
| | | this.withUserList.idcardTypeName = e.value[0].name
|
| | | this.show6 = false
|
| | | },
|
| | | selectedName(e) {
|
| | | this.form1.receptMemberName = e.value[0].name
|
| | | this.form1.receptMemberId = e.value[0].id
|
| | | this.form1.receptMemberDepartment = e.value[0].companyId
|
| | | this.showName = false
|
| | | },
|
| | | selectedReason(e) {
|
| | | this.form1.reason = e.value[0].title
|
| | | console.log(e.value[0].title)
|
| | | this.showReason = false
|
| | | },
|
| | | submitCart() {
|
| | | if (!this.carName) return uni.showToast({
|
| | | title: '请输入车牌号码',
|
| | | icon: 'none'
|
| | | })
|
| | | this.cars.push(this.carName)
|
| | | this.form1.carNos = this.cars.join(',')
|
| | | this.carName = ''
|
| | | this.show2 = false
|
| | | },
|
| | | deleCars(i) {
|
| | | this.cars.splice(i, 1)
|
| | | this.form1.carNos = this.cars.join(',')
|
| | | },
|
| | | submitMJ() {
|
| | | let arr = []
|
| | | let names = []
|
| | | this.columns.forEach(item => {
|
| | | if (item.active) {
|
| | | arr.push(item.id)
|
| | | names.push(item.name)
|
| | | }
|
| | | })
|
| | | if (arr.length === 0) return uni.showToast({
|
| | | title: '请选择门禁',
|
| | | icon: 'none'
|
| | | })
|
| | | this.form1.doorSelectName = names.join(',')
|
| | | this.form1.doors = arr.join(',')
|
| | | this.show = false
|
| | | },
|
| | | seleMJ(i) {
|
| | | this.columns.forEach((item, index) => {
|
| | | if (index === i) {
|
| | | item.active = !item.active
|
| | | }
|
| | | })
|
| | | },
|
| | | openLC() {
|
| | | if (!this.form1.starttime) return uni.showToast({
|
| | | title: '请先选择入园时间',
|
| | | icon: 'none'
|
| | | })
|
| | | this.show5 = true
|
| | | },
|
| | | setstarttime(e) {
|
| | | this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
|
| | | // this.maxTime = getDaysAfterDate(uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM'), this.day)
|
| | | this.maxTime = this.form1.starttime
|
| | | console.log(this.form1.starttime.slice(0, 10))
|
| | | this.show4 = false
|
| | | },
|
| | | setendtime(e) {
|
| | | this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
|
| | | this.show5 = false
|
| | | },
|
| | | formatTimeStamp(date) {
|
| | | return Date.parse(new Date(`${date}`)) || Date.parse(new Date(`${date.replace(/-/g, '/')}`))
|
| | | },
|
| | | // 查询用户
|
| | | getUser() {
|
| | | getVisitedMember().then(res => {
|
| | | this.VisitPoeple = [res.data || []]
|
| | | })
|
| | | getVisitedVisitReason({}).then(res => {
|
| | | this.VisitReason = [res.data || []]
|
| | | })
|
| | | },
|
| | | // 被拜访人信息校验方式(0手机号单独校验 1手机号和姓名组合校验)
|
| | | getUserValid() {
|
| | | getSystemDictData({
|
| | | dictCode: 'SYSTEM',
|
| | | label: 'BEVISITED_USER_VALID'
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | this.verify = res.data.code
|
| | | }
|
| | | })
|
| | | },
|
| | | // 获取是否需要选择门禁/门禁列表
|
| | | getvisit() {
|
| | | getSystemDictData({
|
| | | dictCode: 'SYSTEM',
|
| | | label: 'SELECT_DOORS_VISIT_REQUIRED'
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | this.accessControl = res.data.code
|
| | | if (res.data.code === '1') {
|
| | | this.$u.api.deviceRoleList({
|
| | | type: 1
|
| | | })
|
| | | .then(device => {
|
| | | if (device.code === 200) {
|
| | | if (device.data.length > 0) {
|
| | | device.data.forEach(item => {
|
| | | item.active = false
|
| | | })
|
| | | this.columns = device.data
|
| | | }
|
| | | }
|
| | | })
|
| | | }
|
| | | }
|
| | | })
|
| | | },
|
| | | confirm(e) {
|
| | | this.show = false
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | | <style>
|
| | | page {
|
| | | background-color: #f7f7f7 !important;
|
| | | }
|
| | |
|
| | | .u-upload__button {
|
| | | margin: 0 !important;
|
| | | }
|
| | | </style>
|
| | | <style lang="scss" scoped>
|
| | | .visit {
|
| | | width: 100%;
|
| | |
|
| | | .menjin {
|
| | | width: 100%;
|
| | |
|
| | | .respondent-title {
|
| | | width: 100%;
|
| | | height: 100rpx;
|
| | | line-height: 100rpx;
|
| | | text-align: center;
|
| | | font-size: 32rpx;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .list {
|
| | | width: 100%;
|
| | | height: 400rpx;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | |
|
| | | .list_item {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | |
|
| | | text {
|
| | | font-size: 28rpx;
|
| | | color: #000000;
|
| | | }
|
| | |
|
| | | image {
|
| | | width: 30rpx;
|
| | | height: 30rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .menjin_footer {
|
| | | width: 100%;
|
| | | padding: 30rpx;
|
| | | box-sizing: border-box;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | |
|
| | | .menjin_footer_item {
|
| | | flex: 1;
|
| | | height: 80rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | border-radius: 10rpx;
|
| | | background-color: $uni-color-primary;
|
| | | color: #ffffff;
|
| | | font-size: 26rpx;
|
| | | margin-left: 30rpx;
|
| | |
|
| | | &:first-child {
|
| | | margin-left: 0 !important;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .adduser {
|
| | | padding: 30rpx;
|
| | | width: 100%;
|
| | | box-sizing: border-box;
|
| | |
|
| | | .adduser_head {
|
| | | width: 100%;
|
| | | text-align: center;
|
| | | font-size: 32rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .adduser_list {
|
| | | width: 100%;
|
| | | margin-top: 40rpx;
|
| | |
|
| | | .adduser_list_item {
|
| | | width: 100%;
|
| | | padding: 24rpx 0;
|
| | | box-sizing: border-box;
|
| | | border-bottom: 1rpx solid #e5e5e5;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | |
|
| | | .adduser_list_item_label1 {
|
| | | flex: 1;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | |
|
| | | .cc {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | margin-bottom: 20rpx;
|
| | |
|
| | | b {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #e0312a;
|
| | | }
|
| | | }
|
| | |
|
| | | .aa {
|
| | | font-size: 24rpx;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | |
|
| | | .adduser_list_item_label {
|
| | | flex-shrink: 0;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-size: 30rpx;
|
| | |
|
| | | text {
|
| | | &:nth-child(1) {
|
| | | color: #e0312a;
|
| | | }
|
| | |
|
| | | &:nth-child(2) {
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .adduser_list_item_ipt {
|
| | | flex-shrink: 0;
|
| | | text-align: right;
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | margin-left: 30rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: flex-end;
|
| | |
|
| | | .adduser_list_item_ipt1_upload {
|
| | | width: 120rpx;
|
| | | height: 120rpx;
|
| | | background-color: #ececec;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | overflow: hidden;
|
| | |
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | |
|
| | | text {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .adduser_footer {
|
| | | width: 100%;
|
| | | margin-top: 60rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | |
|
| | | .t {
|
| | | background: #4d99a9 !important;
|
| | | color: #ffffff !important;
|
| | | }
|
| | |
|
| | | .adduser_footer_item {
|
| | | width: 336rpx;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | text-align: center;
|
| | | border-radius: 44rpx;
|
| | | border: 1rpx solid #4d99a9;
|
| | | font-size: 32rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #4d99a9;
|
| | | margin-right: 18rpx;
|
| | |
|
| | | &:last-child {
|
| | | margin: 0 !important;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .addcar {
|
| | | padding: 30rpx;
|
| | | width: 100%;
|
| | | box-sizing: border-box;
|
| | |
|
| | | .addcar_head {
|
| | | text-align: center;
|
| | | font-size: 32rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .addcar_ipt {
|
| | | width: 100%;
|
| | | height: 100rpx;
|
| | | line-height: 100rpx;
|
| | | text-align: center;
|
| | | background: #f7f7f7;
|
| | | border-radius: 50rpx;
|
| | | margin-top: 60rpx;
|
| | |
|
| | | input {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | font-size: 28rpx;
|
| | | font-weight: 400;
|
| | | color: #000000;
|
| | | text-align: center;
|
| | | }
|
| | | }
|
| | |
|
| | | .addcar_footer {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | margin-top: 60rpx;
|
| | |
|
| | | .t {
|
| | | background: #4d99a9 !important;
|
| | | color: #ffffff !important;
|
| | | }
|
| | |
|
| | | .addcar_footer_item {
|
| | | flex: 1;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | font-size: 32rpx;
|
| | | font-weight: 400;
|
| | | color: #025eef;
|
| | | text-align: center;
|
| | | border-radius: 44rpx;
|
| | | border: 1rpx solid #025eef;
|
| | | margin-right: 18rpx;
|
| | |
|
| | | &:last-child {
|
| | | margin-right: 0 !important;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .popup-content {
|
| | | padding: 30rpx 30rpx 0 30rpx;
|
| | | overflow: hidden;
|
| | | display: flex;
|
| | | flex-flow: column;
|
| | |
|
| | | .respondent-title {
|
| | | width: 100%;
|
| | | text-align: center;
|
| | | font-size: 32rpx;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .search-box {
|
| | | width: 100%;
|
| | | margin-top: 40rpx;
|
| | |
|
| | | .search-box-top {
|
| | | width: 100%;
|
| | | height: 68rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | .search-box-top-ipt {
|
| | | flex: 1;
|
| | | height: 100%;
|
| | | padding: 0 30rpx;
|
| | | box-sizing: border-box;
|
| | | background: #f7f7f7;
|
| | | border-radius: 4rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | image {
|
| | | width: 36rpx;
|
| | | height: 36rpx;
|
| | | flex-shrink: 0;
|
| | | margin-right: 22rpx;
|
| | | }
|
| | |
|
| | | input {
|
| | | flex: 1;
|
| | | height: 100%;
|
| | | font-size: 26rpx;
|
| | | font-weight: 400;
|
| | | color: #b2b2b2;
|
| | | }
|
| | | }
|
| | |
|
| | | text {
|
| | | flex-shrink: 0;
|
| | | margin-left: 30rpx;
|
| | | font-size: 28rpx;
|
| | | font-weight: 400;
|
| | | color: #025eef;
|
| | | }
|
| | | }
|
| | |
|
| | | .search-box-total {
|
| | | font-size: 26rpx;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-top: 24rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .list {
|
| | | width: 100%;
|
| | | height: 800rpx;
|
| | | margin-top: 30rpx;
|
| | | padding: 0 !important;
|
| | |
|
| | | .item {
|
| | | width: 100%;
|
| | | height: 102rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | border-bottom: 1rpx solid #e5e5e5;
|
| | |
|
| | | .item_a {
|
| | | flex-shrink: 0;
|
| | | width: 36rpx;
|
| | | height: 36rpx;
|
| | | margin-right: 24rpx;
|
| | |
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | |
|
| | | .item_b {
|
| | | flex-shrink: 0;
|
| | | width: 80rpx;
|
| | | height: 80rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | overflow: hidden;
|
| | | margin-right: 24rpx;
|
| | |
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | |
|
| | | .item_c {
|
| | | flex: 1;
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | text {
|
| | | &:nth-child(1) {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | &:nth-child(2) {
|
| | | font-size: 20rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | padding: 1rpx 4rpx;
|
| | | box-sizing: border-box;
|
| | | background-color: #eeeeee;
|
| | | margin-left: 12rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .footer1 {
|
| | | width: 100%;
|
| | | height: 100rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | padding: 14rpx 0 0 0;
|
| | | box-sizing: border-box;
|
| | |
|
| | | .footer_left {
|
| | | flex: 1;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | |
|
| | | .footer_left_a {
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | }
|
| | |
|
| | | .footer_left_b {
|
| | | font-size: 24rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | |
|
| | | .footer_btn {
|
| | | flex-shrink: 0;
|
| | | width: 216rpx;
|
| | | height: 72rpx;
|
| | | line-height: 72rpx;
|
| | | text-align: center;
|
| | | background: #025eef;
|
| | | border-radius: 8rpx;
|
| | | font-size: 28rpx;
|
| | | font-weight: 600;
|
| | | color: #ffffff;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .head {
|
| | | width: 100%;
|
| | | padding: 20rpx 30rpx;
|
| | | box-sizing: border-box;
|
| | | font-size: 28rpx;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | }
|
| | |
|
| | | .list {
|
| | | width: 100%;
|
| | | 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;
|
| | | padding: 30rpx 0;
|
| | | box-sizing: border-box;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | border-bottom: 1rpx solid #e5e5e5;
|
| | |
|
| | | .list_item_label {
|
| | | flex-shrink: 0;
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | text {
|
| | | &:nth-child(1) {
|
| | | font-size: 30rpx;
|
| | | font-weight: 400;
|
| | | color: #e42d2d;
|
| | | }
|
| | |
|
| | | &:nth-child(2) {
|
| | | font-size: 30rpx;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .list_item_content {
|
| | | flex: 1;
|
| | | height: 100%;
|
| | | margin-left: 30rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: flex-end;
|
| | |
|
| | | text {
|
| | | font-size: 28rpx;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | margin-right: 6rpx;
|
| | | }
|
| | |
|
| | | input {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | text-align: right;
|
| | | font-size: 28rpx;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | }
|
| | | } |
| | | return value |
| | | }, |
| | | selName() { |
| | | uni.navigateTo({ |
| | | url: '/pages/visitorApplication/memberSel' |
| | | }) |
| | | }, |
| | | openInput(type) { |
| | | this.inputType = type |
| | | this.$refs.keyboard.open() |
| | | }, |
| | | setPlate(e) { |
| | | if (this.inputType === 1) { |
| | | this.form1.carNos = e |
| | | } else if (this.inputType === 2) { |
| | | this.withUserList.carNos = e |
| | | } |
| | | this.$forceUpdate() |
| | | this.closeInput() |
| | | }, |
| | | closeInput() { |
| | | this.$refs.keyboard.close() |
| | | }, |
| | | constructionChange(value) { |
| | | this.form1.type = value |
| | | }, |
| | | uploadImg(file) { |
| | | this.$refs.cropper.close() |
| | | uni.showLoading({ |
| | | title: '上传中', |
| | | mask: true |
| | | }) |
| | | uni.uploadFile({ |
| | | url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`, |
| | | filePath: file.tempFilePath, |
| | | name: 'file', |
| | | formData: { |
| | | folderCode: 'MEMBER_IMG' |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | let res = JSON.parse(uploadFileRes.data) |
| | | this.withUserList.faceImg = res.data.halfPath |
| | | this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath |
| | | }, |
| | | complete() { |
| | | uni.hideLoading() |
| | | } |
| | | }) |
| | | }, |
| | | closeMJ() { |
| | | this.show = false |
| | | this.columns.forEach(item => { |
| | | item.active = false |
| | | }) |
| | | }, |
| | | onSubmit() { |
| | | if (!this.form1.receptMemberId) return uni.showToast({ |
| | | title: '请填写有效的访问人', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.form1.starttime) return uni.showToast({ |
| | | title: '入园时间不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.form1.endtime) return uni.showToast({ |
| | | title: '离园时间不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.form1.doorSelectName && this.accessControl == 1) return uni.showToast({ |
| | | title: '访问门禁不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.form1.reason) return uni.showToast({ |
| | | title: '拜访事由不能为空', |
| | | icon: 'none' |
| | | }) |
| | | // this.form1.starttime = this.form1.starttime + ':00' |
| | | // this.form1.endtime = this.form1.endtime + ':00' |
| | | let data = JSON.parse(JSON.stringify(this.form1)) |
| | | data.starttime = data.starttime + ':00' |
| | | data.endtime = data.endtime + ':00' |
| | | createFk({ |
| | | ...this.form, |
| | | ...data, |
| | | openid: this.$store.state.openId, |
| | | withUserList: this.personnel |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | uni.navigateTo({ |
| | | url: `/pages/appointmentDetails/appointmentDetails?id=${res.data}` |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | deleUser(i) { |
| | | this.personnel.splice(i, 1) |
| | | }, |
| | | getVisit1() { |
| | | // 是否需要答题 |
| | | this.$u.api.getSystemDictData({ |
| | | dictCode: 'SYSTEM', |
| | | label: 'HEALTH_CARD' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.visit = res.data.code |
| | | } |
| | | }) |
| | | // 起始时间时长 |
| | | getSystemDictData({ |
| | | dictCode: 'VISIT_CONFIG', |
| | | label: 'VALIDATE_VISIT' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.day = Number(res.data.code) |
| | | // console.log(nextDay('after', true, this.day)) |
| | | } |
| | | }) |
| | | }, |
| | | submitUser() { |
| | | if (!this.withUserList.name) return uni.showToast({ |
| | | title: '姓名不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.withUserList.phone) return uni.showToast({ |
| | | title: '手机号不能为空', |
| | | icon: 'none' |
| | | }) |
| | | const regExp = /^1[3456789]\d{9}$/ |
| | | if (!regExp.test(this.withUserList.phone)) return uni.showToast({ |
| | | title: '手机号格式错误', |
| | | icon: 'none' |
| | | }) |
| | | if (!String(this.withUserList.idcardType)) return uni.showToast({ |
| | | title: '证件类型不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.withUserList.idcardNo) return uni.showToast({ |
| | | title: '证件号码不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (this.withUserList.idcardType === 0) { |
| | | const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dxX]$/ |
| | | if (!regex.test(this.withUserList.idcardNo)) return uni.showToast({ |
| | | title: '证件号码格式错误', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | if (!this.withUserList.companyName) return uni.showToast({ |
| | | title: '公司不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (!this.withUserList.faceImg) return uni.showToast({ |
| | | title: '人脸照片不能为空', |
| | | icon: 'none' |
| | | }) |
| | | if (this.visit === '1') { |
| | | if (!this.withUserList.imgurl) return uni.showToast({ |
| | | title: '人脸照片不能为空', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | let arr = JSON.parse(JSON.stringify(this.withUserList)) |
| | | this.personnel.push(arr) |
| | | this.show3 = false |
| | | this.withUserList.name = '' |
| | | this.withUserList.phone = '' |
| | | this.withUserList.idcardType = '' |
| | | this.withUserList.idcardTypeName = '' |
| | | this.withUserList.companyName = '' |
| | | this.withUserList.idcardNo = '' |
| | | this.withUserList.faceImg = '' |
| | | this.withUserList.faceImgUrl = '' |
| | | this.withUserList.imgurl = '' |
| | | this.withUserList.imgurlUrl = '' |
| | | }, |
| | | upload(type) { |
| | | this.type = type |
| | | if (type === 'faceImg') { |
| | | this.$refs.cropper.open() |
| | | return |
| | | } |
| | | uni.chooseImage({ |
| | | success: (chooseImageRes) => { |
| | | uni.showLoading({ |
| | | title: '上传中', |
| | | mask: true |
| | | }) |
| | | for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) { |
| | | uni.uploadFile({ |
| | | url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`, |
| | | filePath: chooseImageRes.tempFilePaths[i], |
| | | name: 'file', |
| | | formData: { |
| | | folderCode: 'MEMBER_IMG' |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | let res = JSON.parse(uploadFileRes.data) |
| | | if (type === 'faceImg') { |
| | | this.withUserList.faceImg = res.data.halfPath |
| | | this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath |
| | | } else { |
| | | this.withUserList.imgurl = res.data.halfPath |
| | | this.withUserList.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath |
| | | } |
| | | }, |
| | | complete() { |
| | | if (i === chooseImageRes.tempFilePaths.length - 1) { |
| | | uni.hideLoading() |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | seleIdcard(e) { |
| | | this.withUserList.idcardType = e.value[0].id |
| | | this.withUserList.idcardTypeName = e.value[0].name |
| | | this.show6 = false |
| | | }, |
| | | selectedName(e) { |
| | | this.form1.receptMemberName = e.value[0].name |
| | | this.form1.receptMemberId = e.value[0].id |
| | | this.form1.receptMemberDepartment = e.value[0].companyId |
| | | this.showName = false |
| | | }, |
| | | selectedReason(e) { |
| | | this.form1.reason = e.value[0].title |
| | | console.log(e.value[0].title) |
| | | this.showReason = false |
| | | }, |
| | | submitCart() { |
| | | if (!this.carName) return uni.showToast({ |
| | | title: '请输入车牌号码', |
| | | icon: 'none' |
| | | }) |
| | | this.cars.push(this.carName) |
| | | this.form1.carNos = this.cars.join(',') |
| | | this.carName = '' |
| | | this.show2 = false |
| | | }, |
| | | deleCars(i) { |
| | | this.cars.splice(i, 1) |
| | | this.form1.carNos = this.cars.join(',') |
| | | }, |
| | | submitMJ() { |
| | | let arr = [] |
| | | let names = [] |
| | | this.columns.forEach(item => { |
| | | if (item.active) { |
| | | arr.push(item.id) |
| | | names.push(item.name) |
| | | } |
| | | }) |
| | | if (arr.length === 0) return uni.showToast({ |
| | | title: '请选择门禁', |
| | | icon: 'none' |
| | | }) |
| | | this.form1.doorSelectName = names.join(',') |
| | | this.form1.doors = arr.join(',') |
| | | this.show = false |
| | | }, |
| | | seleMJ(i) { |
| | | this.columns.forEach((item, index) => { |
| | | if (index === i) { |
| | | item.active = !item.active |
| | | } |
| | | }) |
| | | }, |
| | | openLC() { |
| | | if (!this.form1.starttime) return uni.showToast({ |
| | | title: '请先选择入园时间', |
| | | icon: 'none' |
| | | }) |
| | | this.show5 = true |
| | | }, |
| | | setstarttime(e) { |
| | | this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') |
| | | // this.maxTime = getDaysAfterDate(uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM'), this.day) |
| | | this.maxTime = this.form1.starttime |
| | | console.log(this.form1.starttime.slice(0, 10)) |
| | | this.show4 = false |
| | | }, |
| | | setendtime(e) { |
| | | this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') |
| | | this.show5 = false |
| | | }, |
| | | formatTimeStamp(date) { |
| | | return Date.parse(new Date(`${date}`)) || Date.parse(new Date(`${date.replace(/-/g, '/')}`)) |
| | | }, |
| | | // 查询用户 |
| | | getUser() { |
| | | getVisitedMember().then(res => { |
| | | this.VisitPoeple = [res.data || []] |
| | | }) |
| | | getVisitedVisitReason({}).then(res => { |
| | | this.VisitReason = [res.data || []] |
| | | }) |
| | | }, |
| | | // 被拜访人信息校验方式(0手机号单独校验 1手机号和姓名组合校验) |
| | | getUserValid() { |
| | | getSystemDictData({ |
| | | dictCode: 'SYSTEM', |
| | | label: 'BEVISITED_USER_VALID' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.verify = res.data.code |
| | | } |
| | | }) |
| | | }, |
| | | // 获取是否需要选择门禁/门禁列表 |
| | | getvisit() { |
| | | getSystemDictData({ |
| | | dictCode: 'SYSTEM', |
| | | label: 'SELECT_DOORS_VISIT_REQUIRED' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.accessControl = res.data.code |
| | | if (res.data.code === '1') { |
| | | this.$u.api.deviceRoleList({ |
| | | type: 1 |
| | | }) |
| | | .then(device => { |
| | | if (device.code === 200) { |
| | | if (device.data.length > 0) { |
| | | device.data.forEach(item => { |
| | | item.active = false |
| | | }) |
| | | this.columns = device.data |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | confirm(e) { |
| | | this.show = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style> |
| | | page { |
| | | background-color: #f7f7f7 !important; |
| | | } |
| | | |
| | | .u-upload__button { |
| | | margin: 0 !important; |
| | | } |
| | | </style> |
| | | <style lang="scss" scoped> |
| | | .visit { |
| | | width: 100%; |
| | | |
| | | .menjin { |
| | | width: 100%; |
| | | |
| | | .respondent-title { |
| | | width: 100%; |
| | | height: 100rpx; |
| | | line-height: 100rpx; |
| | | text-align: center; |
| | | font-size: 32rpx; |
| | | font-weight: 600; |
| | | color: #222222; |
| | | } |
| | | |
| | | .list { |
| | | width: 100%; |
| | | height: 400rpx; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .list_item { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | text { |
| | | font-size: 28rpx; |
| | | color: #000000; |
| | | } |
| | | |
| | | image { |
| | | width: 30rpx; |
| | | height: 30rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .menjin_footer { |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .menjin_footer_item { |
| | | flex: 1; |
| | | height: 80rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | border-radius: 10rpx; |
| | | background-color: $uni-color-primary; |
| | | color: #ffffff; |
| | | font-size: 26rpx; |
| | | margin-left: 30rpx; |
| | | |
| | | &:first-child { |
| | | margin-left: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .adduser { |
| | | padding: 30rpx; |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | |
| | | .adduser_head { |
| | | width: 100%; |
| | | text-align: center; |
| | | font-size: 32rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 600; |
| | | color: #222222; |
| | | } |
| | | |
| | | .adduser_list { |
| | | width: 100%; |
| | | margin-top: 40rpx; |
| | | |
| | | .adduser_list_item { |
| | | width: 100%; |
| | | padding: 24rpx 0; |
| | | box-sizing: border-box; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .adduser_list_item_label1 { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .cc { |
| | | font-size: 30rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | margin-bottom: 20rpx; |
| | | |
| | | b { |
| | | font-size: 30rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #e0312a; |
| | | } |
| | | } |
| | | |
| | | .aa { |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | color: #999999; |
| | | } |
| | | } |
| | | |
| | | .adduser_list_item_label { |
| | | flex-shrink: 0; |
| | | display: flex; |
| | | align-items: center; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-size: 30rpx; |
| | | |
| | | text { |
| | | &:nth-child(1) { |
| | | color: #e0312a; |
| | | } |
| | | |
| | | &:nth-child(2) { |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .adduser_list_item_ipt { |
| | | flex-shrink: 0; |
| | | text-align: right; |
| | | font-size: 28rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | margin-left: 30rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | |
| | | .adduser_list_item_ipt1_upload { |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | | background-color: #ececec; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | overflow: hidden; |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | text { |
| | | font-size: 28rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #999999; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .adduser_footer { |
| | | width: 100%; |
| | | margin-top: 60rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .t { |
| | | background: #4d99a9 !important; |
| | | color: #ffffff !important; |
| | | } |
| | | |
| | | .adduser_footer_item { |
| | | width: 336rpx; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | text-align: center; |
| | | border-radius: 44rpx; |
| | | border: 1rpx solid #4d99a9; |
| | | font-size: 32rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #4d99a9; |
| | | margin-right: 18rpx; |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .addcar { |
| | | padding: 30rpx; |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | |
| | | .addcar_head { |
| | | text-align: center; |
| | | font-size: 32rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 600; |
| | | color: #222222; |
| | | } |
| | | |
| | | .addcar_ipt { |
| | | width: 100%; |
| | | height: 100rpx; |
| | | line-height: 100rpx; |
| | | text-align: center; |
| | | background: #f7f7f7; |
| | | border-radius: 50rpx; |
| | | margin-top: 60rpx; |
| | | |
| | | input { |
| | | width: 100%; |
| | | height: 100%; |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #000000; |
| | | text-align: center; |
| | | } |
| | | } |
| | | |
| | | .addcar_footer { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | margin-top: 60rpx; |
| | | |
| | | .t { |
| | | background: #4d99a9 !important; |
| | | color: #ffffff !important; |
| | | } |
| | | |
| | | .addcar_footer_item { |
| | | flex: 1; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | font-size: 32rpx; |
| | | font-weight: 400; |
| | | color: #025eef; |
| | | text-align: center; |
| | | border-radius: 44rpx; |
| | | border: 1rpx solid #025eef; |
| | | margin-right: 18rpx; |
| | | |
| | | &:last-child { |
| | | margin-right: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .popup-content { |
| | | padding: 30rpx 30rpx 0 30rpx; |
| | | overflow: hidden; |
| | | display: flex; |
| | | flex-flow: column; |
| | | |
| | | .respondent-title { |
| | | width: 100%; |
| | | text-align: center; |
| | | font-size: 32rpx; |
| | | font-weight: 600; |
| | | color: #222222; |
| | | } |
| | | |
| | | .search-box { |
| | | width: 100%; |
| | | margin-top: 40rpx; |
| | | |
| | | .search-box-top { |
| | | width: 100%; |
| | | height: 68rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .search-box-top-ipt { |
| | | flex: 1; |
| | | height: 100%; |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | | background: #f7f7f7; |
| | | border-radius: 4rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | image { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | flex-shrink: 0; |
| | | margin-right: 22rpx; |
| | | } |
| | | |
| | | input { |
| | | flex: 1; |
| | | height: 100%; |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #b2b2b2; |
| | | } |
| | | } |
| | | |
| | | text { |
| | | flex-shrink: 0; |
| | | margin-left: 30rpx; |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #025eef; |
| | | } |
| | | } |
| | | |
| | | .search-box-total { |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | margin-top: 24rpx; |
| | | } |
| | | } |
| | | |
| | | .list { |
| | | width: 100%; |
| | | height: 800rpx; |
| | | margin-top: 30rpx; |
| | | padding: 0 !important; |
| | | |
| | | .item { |
| | | width: 100%; |
| | | height: 102rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | |
| | | .item_a { |
| | | flex-shrink: 0; |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | margin-right: 24rpx; |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .item_b { |
| | | flex-shrink: 0; |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | overflow: hidden; |
| | | margin-right: 24rpx; |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .item_c { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | text { |
| | | &:nth-child(1) { |
| | | font-size: 30rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | |
| | | &:nth-child(2) { |
| | | font-size: 20rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #999999; |
| | | padding: 1rpx 4rpx; |
| | | box-sizing: border-box; |
| | | background-color: #eeeeee; |
| | | margin-left: 12rpx; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .footer1 { |
| | | width: 100%; |
| | | height: 100rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 14rpx 0 0 0; |
| | | box-sizing: border-box; |
| | | |
| | | .footer_left { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .footer_left_a { |
| | | font-size: 26rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | } |
| | | |
| | | .footer_left_b { |
| | | font-size: 24rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #999999; |
| | | } |
| | | } |
| | | |
| | | .footer_btn { |
| | | flex-shrink: 0; |
| | | width: 216rpx; |
| | | height: 72rpx; |
| | | line-height: 72rpx; |
| | | text-align: center; |
| | | background: #025eef; |
| | | border-radius: 8rpx; |
| | | font-size: 28rpx; |
| | | font-weight: 600; |
| | | color: #ffffff; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .head { |
| | | width: 100%; |
| | | padding: 20rpx 30rpx; |
| | | box-sizing: border-box; |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | } |
| | | |
| | | .list { |
| | | width: 100%; |
| | | 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; |
| | | padding: 30rpx 0; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | |
| | | .list_item_label { |
| | | flex-shrink: 0; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | text { |
| | | &:nth-child(1) { |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | color: #e42d2d; |
| | | } |
| | | |
| | | &:nth-child(2) { |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .list_item_content { |
| | | flex: 1; |
| | | height: 100%; |
| | | margin-left: 30rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | |
| | | text { |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #999999; |
| | | margin-right: 6rpx; |
| | | } |
| | | |
| | | input { |
| | | width: 100%; |
| | | height: 100%; |
| | | text-align: right; |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | } |
| | | <<<<<<< HEAD |
| | | let arr = JSON.parse(JSON.stringify(this.withUserList)) |
| | | this.personnel.push(arr) |
| | | this.show3 = false |
| | | this.withUserList.name = '' |
| | | this.withUserList.phone = '' |
| | | this.withUserList.idcardType = '' |
| | | this.withUserList.idcardTypeName = '' |
| | | this.withUserList.companyName = '' |
| | | this.withUserList.idcardNo = '' |
| | | this.withUserList.faceImg = '' |
| | | this.withUserList.faceImgUrl = '' |
| | | this.withUserList.imgurl = '' |
| | | this.withUserList.imgurlUrl = '' |
| | | }, |
| | | upload(type) { |
| | | this.type = type |
| | | if (type === 'faceImg') { |
| | | this.$refs.cropper.open() |
| | | return |
| | | } |
| | | uni.chooseImage({ |
| | | success: (chooseImageRes) => { |
| | | // if (type === 'faceImg') { |
| | | // this.photoSrc = chooseImageRes.tempFilePaths[0]; |
| | | // this.$refs.tlyPictureCut.showPop(); |
| | | // return |
| | | // } |
| | | uni.showLoading({ title: '上传中', mask: true }); |
| | | for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) { |
| | | uni.uploadFile({ |
| | | url: `${this.$baseUrl}public/api/uploadFtp.do`, |
| | | filePath: chooseImageRes.tempFilePaths[i], |
| | | name: 'file', |
| | | formData: { |
| | | folderCode: 'MEMBER_IMG' |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | let res = JSON.parse(uploadFileRes.data) |
| | | if (type === 'faceImg') { |
| | | this.withUserList.faceImg = res.data.halfPath |
| | | this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath |
| | | } else { |
| | | this.withUserList.imgurl = res.data.halfPath |
| | | this.withUserList.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath |
| | | } |
| | | }, |
| | | complete() { |
| | | if (i === chooseImageRes.tempFilePaths.length - 1) { |
| | | uni.hideLoading(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | seleIdcard(e) { |
| | | this.withUserList.idcardType = e.value[0].id |
| | | this.withUserList.idcardTypeName = e.value[0].name |
| | | this.show6 = false |
| | | }, |
| | | submitCart() { |
| | | if (!this.carName) return uni.showToast({ |
| | | title: '请输入车牌号码', |
| | | icon: 'none' |
| | | }) |
| | | this.cars.push(this.carName) |
| | | this.form1.carNos = this.cars.join(',') |
| | | this.carName = '' |
| | | this.show2 = false |
| | | }, |
| | | deleCars(i) { |
| | | this.cars.splice(i, 1) |
| | | this.form1.carNos = this.cars.join(',') |
| | | }, |
| | | submitMJ() { |
| | | let arr = [] |
| | | let names = [] |
| | | this.columns.forEach(item => { |
| | | if (item.active) { |
| | | arr.push(item.id) |
| | | names.push(item.name) |
| | | } |
| | | }) |
| | | if (arr.length === 0) return uni.showToast({ |
| | | title: '请选择门禁', |
| | | icon: 'none' |
| | | }) |
| | | this.form1.doorSelectName = names.join(',') |
| | | this.form1.doors = arr.join(',') |
| | | this.show = false |
| | | }, |
| | | seleMJ(i) { |
| | | this.columns.forEach((item,index) => { |
| | | if (index === i) { |
| | | item.active = !item.active |
| | | } |
| | | }) |
| | | }, |
| | | openLC() { |
| | | if (!this.form1.starttime) return uni.showToast({ |
| | | title: '请先选择入厂时间', |
| | | icon: 'none' |
| | | }) |
| | | this.show5 = true |
| | | }, |
| | | setinDate(e) { |
| | | this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM'); |
| | | this.maxTime = getDaysAfterDate(uni.$u.timeFormat(e.value, 'yyyy-mm-dd'), this.day - 1) |
| | | this.show4 = false |
| | | }, |
| | | setoutDate(e) { |
| | | this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM'); |
| | | this.show5 = false |
| | | }, |
| | | formatTimeStamp(date) { |
| | | return Date.parse(new Date(`${date}`)) || Date.parse(new Date(`${date.replace(/-/g,'/')}`)) |
| | | }, |
| | | // 查询用户 |
| | | getUser() { |
| | | if (this.verify === '0') { |
| | | if (this.form1.phone1) { |
| | | this.$u.api.getVisitedMember({ |
| | | mobile: this.form1.phone1 |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form1.receptMemberId = res.data.id |
| | | this.form1.receptMemberName = res.data.name |
| | | } |
| | | }) |
| | | } |
| | | } else { |
| | | if (this.form1.phone1 && this.form1.receptMemberName) { |
| | | this.$u.api.getVisitedMember({ |
| | | mobile: this.form1.phone1, |
| | | name: this.form1.receptMemberName |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form1.receptMemberId = res.data.id |
| | | this.form1.receptMemberName = res.data.name |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | // 被拜访人信息校验方式(0手机号单独校验 1手机号和姓名组合校验) |
| | | getUserValid() { |
| | | this.$u.api.getSystemDictData({ |
| | | dictCode: 'SYSTEM', |
| | | label: 'BEVISITED_USER_VALID' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.verify = res.data.code |
| | | } |
| | | }) |
| | | }, |
| | | // 获取是否需要选择门禁/门禁列表 |
| | | getvisit() { |
| | | this.$u.api.getSystemDictData({ |
| | | dictCode: 'SYSTEM', |
| | | label: 'SELECT_DOORS_VISIT_REQUIRED' |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.accessControl = res.data.code |
| | | if (res.data.code === '1') { |
| | | this.$u.api.deviceRoleList({ type: 1 }) |
| | | .then(device => { |
| | | if (device.code === 200) { |
| | | if (device.data.length > 0) { |
| | | device.data.forEach(item => { |
| | | item.active = false |
| | | }) |
| | | this.columns = device.data |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | confirm(e) { |
| | | this.show = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style> |
| | | page { |
| | | background-color: #F7F7F7 !important; |
| | | } |
| | | .u-upload__button { |
| | | margin: 0 !important; |
| | | } |
| | | </style> |
| | | <style lang="scss" scoped> |
| | | .visit { |
| | | width: 100%; |
| | | .menjin { |
| | | width: 100%; |
| | | .respondent-title { |
| | | width: 100%; |
| | | height: 100rpx; |
| | | line-height: 100rpx; |
| | | text-align: center; |
| | | font-size: 32rpx; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | } |
| | | .list { |
| | | width: 100%; |
| | | height: 400rpx; |
| | | display: flex; |
| | | flex-direction: column; |
| | | .list_item { |
| | | width: 100%; |
| | | ======= |
| | | .checkbox_wrap{ |
| | | >>>>>>> f0f08cc1ff84d45de32d8bff4a40e6a7d0d7a9e6 |
| | | display: flex; |
| | | align-items: center; |
| | | .check_item{ |
| | |
| | | height: 42rpx; |
| | | margin-left: 10rpx; |
| | | } |
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .cate {
|
| | | width: 100%;
|
| | | padding: 30rpx;
|
| | | box-sizing: border-box;
|
| | | background-color: #ffffff;
|
| | |
|
| | | .cate_head {
|
| | | font-size: 32rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .cate_list {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | flex-wrap: wrap;
|
| | | margin-top: 30rpx;
|
| | |
|
| | | .cate_list_item {
|
| | | height: 64rpx;
|
| | | padding: 0 20rpx;
|
| | | box-sizing: border-box;
|
| | | background-color: #eeeeee;
|
| | | border-radius: 4rpx;
|
| | | margin-right: 20rpx;
|
| | | margin-bottom: 20rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | &:last-child {
|
| | | margin-right: 0 !important;
|
| | | }
|
| | |
|
| | | text {
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | margin-right: 30rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .cate_add {
|
| | | width: 200rpx;
|
| | | height: 50rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | background: rgba(2, 94, 239, 0);
|
| | | border-radius: 25rpx;
|
| | | border: 1rpx solid #4c99a8;
|
| | | font-size: 22rpx;
|
| | | font-family: PingFangSC, PingFang SC;
|
| | | font-weight: 400;
|
| | | margin-top: 20rpx;
|
| | | color: #4c99a8;
|
| | | margin: 0 auto;
|
| | | }
|
| | | }
|
| | |
|
| | | .zw {
|
| | | width: 100%;
|
| | | height: calc(env(safe-area-inset-bottom) + 118rpx);
|
| | | }
|
| | |
|
| | | .footer {
|
| | | width: 100%;
|
| | | padding: 0 30rpx;
|
| | | padding-bottom: env(safe-area-inset-bottom);
|
| | | box-sizing: border-box;
|
| | | margin-top: 80rpx;
|
| | | // position: fixed;
|
| | | // left: 0;
|
| | | // bottom: 30rpx;
|
| | |
|
| | | .footer_btn {
|
| | | width: 100%;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | text-align: center;
|
| | | background: #4c99a8;
|
| | | border-radius: 44rpx;
|
| | | font-size: 32rpx;
|
| | | font-weight: 600;
|
| | | color: #ffffff;
|
| | | }
|
| | | }
|
| | | }
|
| | | } |
| | | } |
| | | } |
| | | |
| | | .cate { |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | box-sizing: border-box; |
| | | background-color: #ffffff; |
| | | |
| | | .cate_head { |
| | | font-size: 32rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 600; |
| | | color: #222222; |
| | | } |
| | | |
| | | .cate_list { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | margin-top: 30rpx; |
| | | |
| | | .cate_list_item { |
| | | height: 64rpx; |
| | | padding: 0 20rpx; |
| | | box-sizing: border-box; |
| | | background-color: #eeeeee; |
| | | border-radius: 4rpx; |
| | | margin-right: 20rpx; |
| | | margin-bottom: 20rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | &:last-child { |
| | | margin-right: 0 !important; |
| | | } |
| | | |
| | | text { |
| | | font-size: 26rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | margin-right: 30rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .cate_add { |
| | | width: 200rpx; |
| | | height: 50rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: rgba(2, 94, 239, 0); |
| | | border-radius: 25rpx; |
| | | border: 1rpx solid #4c99a8; |
| | | font-size: 22rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | | font-weight: 400; |
| | | margin-top: 20rpx; |
| | | color: #4c99a8; |
| | | margin: 0 auto; |
| | | } |
| | | } |
| | | |
| | | .zw { |
| | | width: 100%; |
| | | height: calc(env(safe-area-inset-bottom) + 118rpx); |
| | | } |
| | | |
| | | .footer { |
| | | width: 100%; |
| | | padding: 0 30rpx; |
| | | padding-bottom: env(safe-area-inset-bottom); |
| | | box-sizing: border-box; |
| | | margin-top: 80rpx; |
| | | // position: fixed; |
| | | // left: 0; |
| | | // bottom: 30rpx; |
| | | |
| | | .footer_btn { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | text-align: center; |
| | | background: #4c99a8; |
| | | border-radius: 44rpx; |
| | | font-size: 32rpx; |
| | | font-weight: 600; |
| | | color: #ffffff; |
| | | } |
| | | } |
| | | } |
| | | </style> |