<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">
|
<view class="checkbox_wrap">
|
<view class="check_item" @click="constructionChange(1)">
|
<text>是</text>
|
<image v-if="form1.type == 1" src="@/static/checkbox_sel@2x.png" mode=""></image>
|
<image v-if="form1.type == 0" src="@/static/checkbox_disable@3x.png" mode=""></image>
|
</view>
|
<view class="check_item" @click="constructionChange(0)">
|
<text>否</text>
|
<image v-if="form1.type == 0" src="@/static/checkbox_sel@2x.png" mode=""></image>
|
<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-box">
|
<view class="submit-button" @click="onSubmit">提交</view>
|
</view>
|
<!-- 入园时间 -->
|
<u-datetime-picker :show="show4" :minDate="new Date().getTime()" :formatter="formatter" mode="datetime"
|
@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}日`
|
// }
|
if (type === 'year') {
|
return `${value}年`
|
}
|
if (type === 'month') {
|
return `${value}月`
|
}
|
if (type === 'day') {
|
return `${value}日`
|
}
|
if (type === 'hour') {
|
return `${value}时`
|
}
|
if (type === 'minute') {
|
return `${value}分`
|
}
|
// this.$forceUpdate()
|
// this.closeInput()
|
return value
|
},
|
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}时`
|
}
|
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
|
this.form1.type = e.value[0].constructionType
|
console.log(e.value[0].title)
|
console.log(e.value[0].constructionType)
|
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;
|
}
|
}
|
}
|
|
.footer-box {
|
width: 100%;
|
position: fixed;
|
bottom: 30rpx;
|
height: 80rpx;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
.submit-button {
|
width: calc(100% - 60rpx);
|
height: 88rpx;
|
line-height: 88rpx;
|
background: #4d99a8;
|
border-radius: 4rpx;
|
color: #fff;
|
border-radius: 44rpx;
|
font-size: 32rpx;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
}
|
|
.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;
|
}
|
}
|
}
|
}
|
}
|
</style>
|