From 61d03721e35e66214937df9fab548b09fa11170b Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 07 五月 2025 14:00:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
admin/src/components/business/operaVisitsWindow.vue | 223 ++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 185 insertions(+), 38 deletions(-)
diff --git a/admin/src/components/business/operaVisitsWindow.vue b/admin/src/components/business/operaVisitsWindow.vue
index a772e6e..cb03a8c 100644
--- a/admin/src/components/business/operaVisitsWindow.vue
+++ b/admin/src/components/business/operaVisitsWindow.vue
@@ -1,18 +1,26 @@
<template>
<GlobalWindow
- title="鏂板璁垮棰勭害"
- width="600px"
- :visible.sync="isShowModal"
- :confirm-working="isWorking"
- @confirm="confirm"
+ title="鏂板璁垮棰勭害"
+ width="600px"
+ :visible.sync="isShowModal"
+ :confirm-working="isWorking"
+ @confirm="confirm"
+ @close="close"
>
- <el-form :model="param" ref="paramRef" :rules="rules" >
+ <el-form :model="param" ref="paramRef" :rules="rules">
<div class="title_tip">璁垮淇℃伅</div>
<el-form-item label="璁垮濮撳悕" prop="name">
- <el-input v-model="param.name" placeholder="璇疯緭鍏ヨ瀹㈢殑濮撳悕"></el-input>
+ <el-input
+ v-model="param.name"
+ placeholder="璇疯緭鍏ヨ瀹㈢殑濮撳悕"
+ ></el-input>
</el-form-item>
<el-form-item label="璁垮鎵嬫満鍙�" prop="phone">
- <el-input v-model="param.phone" placeholder="璇疯緭鍏ヨ瀹㈢殑鎵嬫満鍙�"></el-input>
+ <el-input
+ v-model="param.phone"
+ maxlength="11"
+ placeholder="璇疯緭鍏ヨ瀹㈢殑鎵嬫満鍙�"
+ ></el-input>
</el-form-item>
<el-form-item label="璇佷欢绫诲瀷" prop="idcardType">
<el-select v-model="param.idcardType" placeholder="璇烽�夋嫨">
@@ -22,25 +30,44 @@
</el-select>
</el-form-item>
<el-form-item label="璇佷欢鍙风爜" prop="idcardNo">
- <el-input maxlength="18" v-model="param.idcardNo" placeholder="璇疯緭鍏ヨ瀹㈢殑璇佷欢鍙风爜"></el-input>
+ <el-input
+ maxlength="18"
+ v-model="param.idcardNo"
+ placeholder="璇疯緭鍏ヨ瀹㈢殑璇佷欢鍙风爜"
+ ></el-input>
</el-form-item>
<el-form-item label="鏉ヨ鍗曚綅" prop="companyName">
- <el-input v-model="param.companyName" placeholder="璇疯緭鍏ユ潵璁跨殑鍗曚綅鍏ㄧО"></el-input>
+ <el-input
+ v-model="param.companyName"
+ placeholder="璇疯緭鍏ユ潵璁跨殑鍗曚綅鍏ㄧО"
+ ></el-input>
</el-form-item>
<el-form-item label="浜鸿劯鐓х墖" prop="faceImgUrl">
- <UploadFaceImg
- :file="{ 'imgurlfull': param.faceImgUrl, 'imgurl': param.faceImg }"
- :uploadData="uploadData"
- @uploadSuccess="uploadAvatarSuccess"
- @uploadEnd="isUploading = false"
- @uploadBegin="isUploading = true"
- />
+ <div class="upload_wrap">
+ <UploadFaceImg
+ :file="{ imgurlfull: param.faceImgUrl, imgurl: param.faceImg }"
+ :uploadData="uploadData"
+ @uploadSuccess="uploadAvatarSuccess"
+ @uploadEnd="isUploading = false"
+ @uploadBegin="isUploading = true"
+ />
+ <div class="content">
+ <div>1銆佽閫夋嫨娴呰壊鎴栦腑鎬ц儗鏅紝浣跨敤鍧囧寑鍏夌嚎鎷嶇収銆�</div>
+ <div>2銆佽淇濇寔闈㈤儴姝e闀滃ご锛屽嬁閬尅闈㈤儴锛屼繚鎸佷腑绔嬭〃鎯呫��</div>
+ <div>3銆佽閬垮厤鍚庢湡淇浘锛岀‘淇濅汉鑴歌疆寤撴竻鏅般�佸畬鏁达紝灏藉彲鑳藉噺灏戦潪鑴搁儴鍐呭鍗犳瘮銆�</div>
+ </div>
+ </div>
</el-form-item>
- <div class="title_tip" style="marginTop: 60px;">璁垮棰勭害</div>
+ <div class="title_tip" style="margintop: 60px">璁垮棰勭害</div>
<el-form-item label="琚浜�" prop="receptMemberId">
- <el-select v-model="param.receptMemberId" placeholder="璇烽�夋嫨">
- <el-option v-for="item in memberList" :key="item.id" :label="item.name + ' ' + item.companyName" :value="item.id" />
+ <el-select v-model="param.receptMemberId" disabled placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in memberList"
+ :key="item.id"
+ :label="item.name + ' ' + item.companyName"
+ :value="item.id"
+ />
</el-select>
</el-form-item>
<el-form-item label="鍏ュ洯鏃堕棿" prop="starttime">
@@ -50,6 +77,8 @@
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
default-time="08:00:00"
+ :picker-options="startPickerOptions"
+ @change="changeStarttime"
/>
</el-form-item>
<el-form-item label="绂诲洯鏃堕棿" prop="endtime">
@@ -58,27 +87,37 @@
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
+ :picker-options="endPickerOptions"
default-time="08:00:00"
/>
</el-form-item>
<el-form-item label="鏉ヨ浜嬬敱" prop="reason">
- <el-select v-model="param.reason" placeholder="璇烽�夋嫨">
- <el-option v-for="item in VisitReason" :key="item.id" :label="item.title" :value="item.title" />
+ <el-select v-model="param.reason" placeholder="璇烽�夋嫨" @change="changeReason" value-key="id">
+ <el-option
+ v-for="item in VisitReason"
+ :key="item.id"
+ :label="item.title"
+ :value="item.title"
+ />
</el-select>
</el-form-item>
- <el-form-item label="鏄惁鏂藉伐浣滀笟" prop="type">
+<!-- <el-form-item label="鏄惁鏂藉伐浣滀笟">
<el-switch
style="width: 200px"
v-model="param.type"
:active-value="1"
- :inactive-value="0">
+ :inactive-value="0"
+ >
</el-switch>
+ </el-form-item>-->
+ <el-form-item v-if="param.type == 2" label="鏂藉伐鍐呭">
+ <el-input
+ v-model="param.constructionReason"
+ placeholder="璇疯緭鍏ユ柦宸ュ唴瀹�"
+ ></el-input>
</el-form-item>
- <el-form-item v-if="param.type == 1" label="鏂藉伐鍐呭" prop="constructionReason">
- <el-input v-model="param.constructionReason" placeholder="璇疯緭鍏ユ柦宸ュ唴瀹�"></el-input>
- </el-form-item>
- <el-form-item label="闅忚杞﹁締" prop="carNos">
- <el-input v-model="param.carNos" placeholder="璇疯緭鍏ヨ溅鐗屽彿"></el-input>
+ <el-form-item label="闅忚杞﹁締">
+ <el-input v-model.trim="param.carNos" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" placeholder="璇疯緭鍏ヨ溅鐗屽彿"></el-input>
</el-form-item>
</el-form>
</GlobalWindow>
@@ -88,60 +127,141 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
+import dayjs from 'dayjs'
import { createFk, getVisitedVisitReason, getVisitedMember } from '@/api/business/visits'
export default {
- name: 'OperaVisitsHkWindow',
extends: BaseOpera,
components: {
GlobalWindow,
UploadFaceImg
},
+
data () {
return {
isShowModal: false,
param: {
type: 0,
- idcardType: 0
+ idcardType: 0,
+ starttime: '',
+ endtime: ''
},
-
VisitReason: [],
memberList: [],
uploadData: {
- folder: 'member'
+ folder: 'member',
+ isFace: 0
+ },
+ startPickerOptions: {
+ disabledDate (time) {
+ return time.getTime() < Date.now() - 8.64e7 // 绂佺敤瓒呰繃褰撳墠鏃堕棿鐨勬棩鏈�
+ },
+ selectableRange: '00:00:00 - 23:59:59' // 杩欎釜鍔犱笂涔嬪悗锛屾椂鍒嗙涓婇潰鎵嶆湁绂佹閫夋嫨鍙樼伆锛屽鏋滀笉鍔狅紝涔熷彲浠ョ姝㈤�夋嫨锛屼絾鏄笉浼氬彉鐏�
+ },
+ endPickerOptions: {
+ disabledDate: (time) => {
+ if (this.param.starttime) {
+ return new Date(this.param.starttime).getTime() > time.getTime() + 8.64e7 // 绂佺敤瓒呰繃褰撳墠鏃堕棿鐨勬棩鏈�
+ }
+ },
+ selectableRange: '00:00:00 - 23:59:59'
},
rules: {
starttime: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }],
endtime: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }],
reason: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
- type: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+ // type: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+ receptMemberId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
idcardType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
faceImgUrl: [{ required: true, message: '璇蜂笂浼�', trigger: 'change' }],
name: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
- idcardNo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+ // idcardNo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
companyName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
phone: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
carNos: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
- constructionReason: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+ constructionReason: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
}
}
},
created () {
this.$set(this.param, 'receptMemberId', this.$store.state.userInfo.memberId)
+ this.$set(this.param, 'starttime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
this.initData()
},
+ watch: {
+ 'param.starttime': {
+ handler (newValue, oldValue) {
+ if (newValue) {
+ const date = new Date()
+ // const min = date.getMinutes()
+ // date.setMinutes(min) // 杩欓噷鍔�1鍒嗛挓锛屾槸涓轰簡瑙e喅鍊兼敼鍙樺悗锛岀郴缁熺鏁板氨杩囨湡闄愬埗浜嗭紝鏃犳硶鐐瑰嚮鈥滄鍒烩�濇寜閽紝 濡傛灉鐩戝惉 鈥滅郴缁熸椂闂粹�濈殑鏀瑰彉锛屽垯浼氬奖鍝嶆�ц兘銆�
+ const nowDate = dayjs(date).format('HH:mm:ss')
+ let st = ''
+ if (dayjs(date).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
+ const hh1 = dayjs(newValue).format('HH:mm:ss')
+ // if (hh1 < nowDate) {
+ // this.param.starttime = new Date()
+ // }
+ st = nowDate
+ } else {
+ st = '00:00:00'
+ }
+ this.$set(this.startPickerOptions, 'selectableRange', st + ' - 23:59:59')
+ // this.startPickerOptions = this.startPickerOptions
+ }
+ },
+ deep: true,
+ immediate: true
+ },
+ 'param.endtime': {
+ handler (newValue, oldValue) {
+ if (newValue) {
+ const nowDate = dayjs(this.param.starttime).format('HH:mm:ss')
+ let st = ''
+ if (dayjs(this.param.starttime).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
+ st = nowDate
+ } else {
+ st = '00:00:00'
+ }
+ this.$set(this.endPickerOptions, 'selectableRange', st + ' - 23:59:59')
+ // this.startPickerOptions = this.startPickerOptions
+ }
+ },
+ deep: true,
+ immediate: true
+ }
+ },
methods: {
+ changeReason (val) {
+ console.log(val)
+ var obj = this.VisitReason.find(function (i) {
+ return i.title === val
+ })
+ // 鍦╟hange涓幏鍙栧埌鏁存潯瀵硅薄鏁版嵁
+ if(obj){
+ this.param.type = obj.constructionType
+ }
+ console.log(obj)
+ },
+ close () {
+ this.isShowModal = false
+ this.$emit('close')
+ },
initData () {
getVisitedVisitReason({}).then(res => {
this.VisitReason = res || []
})
getVisitedMember({}).then(res => {
this.memberList = res || []
+ console.log('memberList', this.memberList)
})
},
uploadAvatarSuccess (file) {
this.$set(this.param, 'faceImg', file.imgurl)
this.$set(this.param, 'faceImgUrl', file.imgurlfull)
+ },
+ changeStarttime (e) {
+ // this.$set(this.param, 'endtime', this.param.starttime)
},
// 鍚屾淇℃伅
confirm () {
@@ -149,6 +269,12 @@
if (!valid) {
return
}
+ const { param } = this
+ if (param.carNos) {
+ param.carNos = param.carNos.replace(/\s*/g, '')
+ param.carNos = param.carNos.replace(/[\r\n]/g, '')
+ }
+ if (param.starttime.slice(0, 10) !== param.endtime.slice(0, 10)) return this.$tip.error('鍏ュ洯鏃堕棿鍜岀鍥椂闂翠笉鍙法澶�')
// 璋冪敤鏂板缓鎺ュ彛
this.isWorking = true
createFk({
@@ -161,7 +287,6 @@
this.$emit('close')
})
.catch(e => {
- this.$tip.apiFailed(e)
})
.finally(() => {
this.isWorking = false
@@ -172,9 +297,31 @@
}
</script>
<style lang="scss" scoped>
-.title_tip{
+.title_tip {
font-size: 18px;
font-weight: 600;
margin-bottom: 10px;
}
+.upload_wrap{
+ display: flex;
+ align-items: center;
+ .avatar-uploader{
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ ::v-deep .avatar{
+ max-width: 90px;
+ max-height: 90px;
+ }
+ .content{
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ font-size: 12px;
+ color: #999999;
+ margin-left: 12px;
+ line-height: 24px;
+ }
+}
</style>
--
Gitblit v1.9.3