From 4e2e52b766d87fc528d02bdebc1757c3dda8c596 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 26 二月 2025 09:22:24 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- admin/src/views/platform/LogisticsRecord/waybill.vue | 4 h5/pages/staff/vehicle/shiwai.vue | 22 admin/src/views/business/empower.vue | 6 h5/pages/staff/vehicle/sendACar.vue | 19 admin/src/views/business/retention.vue | 2 h5/pages/staff/vehicle/shinei.vue | 22 h5/pages/visitorApplication/memberSel.vue | 282 +++ screen/src/views/SecurityControl.vue | 34 admin/src/components/business/OperaHiddenDangerParamWindow.vue | 1 admin/src/views/statistics/platformStatic.vue | 4 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java | 2 h5/pages/staff/task/driver.vue | 6 admin/src/views/business/platformEvent.vue | 1 admin/src/views/business/retentionCars.vue | 8 admin/src/views/business/platformInterfaceLog.vue | 1 admin/src/views/meeting/bookings.vue | 22 admin/src/views/platform/LogisticsRecord/operation.vue | 1 admin/src/views/business/smsEmail.vue | 6 h5/pages/staff/vehicle/apply.vue | 122 admin/src/views/business/carEvent.vue | 4 h5/pages.json | 7 h5/pages/staff/visitorReport.vue | 20 admin/src/views/business/wmsInterfaceLog.vue | 1 h5/pages/driver/index.vue | 18 admin/src/views/business/trainTime.vue | 134 - admin/src/views/platform/LogisticsRecord/leaveAuth.vue | 1 h5/pages/staff/meetingSel.vue | 7 admin/src/views/platform/LogisticsRecord/operationCity.vue | 1 h5/pages/driver/reservedDetail.vue | 6 admin/src/views/business/interfaceLog.vue | 1 h5/pages/visitorApplication/visitorApplication.vue | 2803 ++++++++++++++++++------------------ h5/pages/staff/task/index.vue | 22 admin/src/views/task/index.vue | 2 admin/src/views/platform/LogisticsRecord/subscribe.vue | 4 admin/src/views/business/platformBroadcastLog.vue | 4 h5/pages/staff/snapshot.vue | 22 admin/src/views/platform/LogisticsRecord/waybillQuery.vue | 1 h5/pages/staff/vehicle/applePeo.vue | 752 +++++---- h5/pages/staff/task/vDangetAppr.vue | 65 admin/src/views/business/deviceEvent.vue | 4 40 files changed, 2,427 insertions(+), 2,017 deletions(-) diff --git a/admin/src/components/business/OperaHiddenDangerParamWindow.vue b/admin/src/components/business/OperaHiddenDangerParamWindow.vue index 4b9a8a0..f373969 100644 --- a/admin/src/components/business/OperaHiddenDangerParamWindow.vue +++ b/admin/src/components/business/OperaHiddenDangerParamWindow.vue @@ -95,6 +95,7 @@ }) } } + this.loadMember() }) }, getfindCompanyTreePage() { diff --git a/admin/src/views/business/carEvent.vue b/admin/src/views/business/carEvent.vue index bd9412a..a14baf4 100644 --- a/admin/src/views/business/carEvent.vue +++ b/admin/src/views/business/carEvent.vue @@ -140,8 +140,8 @@ methods: { reset() { this.$refs.searchForm.resetFields() - this.searchForm.radio = '0' - this.changeRadio('0') + this.searchForm.radio = '' + // this.changeRadio('0') this.time = [] this.search() }, diff --git a/admin/src/views/business/deviceEvent.vue b/admin/src/views/business/deviceEvent.vue index 02ad4f8..6dd132c 100644 --- a/admin/src/views/business/deviceEvent.vue +++ b/admin/src/views/business/deviceEvent.vue @@ -155,8 +155,8 @@ reset() { this.$refs.searchForm.resetFields() this.time = [] - this.searchForm.radio = '0' - this.changeRadio('0') + this.searchForm.radio = '' + // this.changeRadio('0') this.search() } } diff --git a/admin/src/views/business/empower.vue b/admin/src/views/business/empower.vue index 5be2ce0..bab44d4 100644 --- a/admin/src/views/business/empower.vue +++ b/admin/src/views/business/empower.vue @@ -173,9 +173,9 @@ }, reset () { this.$refs.searchForm.resetFields() - this.searchForm.radio = '0' - this.changeRadio('0') - // this.search() + this.searchForm.radio = '' + // this.changeRadio('0') + this.search() } } } diff --git a/admin/src/views/business/interfaceLog.vue b/admin/src/views/business/interfaceLog.vue index 4fd6355..69ce768 100644 --- a/admin/src/views/business/interfaceLog.vue +++ b/admin/src/views/business/interfaceLog.vue @@ -137,6 +137,7 @@ this.$refs.searchForm.resetFields() this.searchForm.startDate = '' this.searchForm.endDate = '' + this.searchForm.radio = '' this.time = [] this.search() } diff --git a/admin/src/views/business/platformBroadcastLog.vue b/admin/src/views/business/platformBroadcastLog.vue index 14c7504..9abaad8 100644 --- a/admin/src/views/business/platformBroadcastLog.vue +++ b/admin/src/views/business/platformBroadcastLog.vue @@ -145,8 +145,8 @@ reset () { this.$refs.searchForm.resetFields() this.time = [] - this.searchForm.radio = '0' - this.changeRadio('0') + this.searchForm.radio = '' + // this.changeRadio('0') this.search() } } diff --git a/admin/src/views/business/platformEvent.vue b/admin/src/views/business/platformEvent.vue index 193fbf5..5271aab 100644 --- a/admin/src/views/business/platformEvent.vue +++ b/admin/src/views/business/platformEvent.vue @@ -152,6 +152,7 @@ this.$refs.searchForm.resetFields() this.searchForm.startDate = '' this.searchForm.endDate = '' + this.searchForm.radio = '' this.time = [] this.search() } diff --git a/admin/src/views/business/platformInterfaceLog.vue b/admin/src/views/business/platformInterfaceLog.vue index 70b00ca..af1910b 100644 --- a/admin/src/views/business/platformInterfaceLog.vue +++ b/admin/src/views/business/platformInterfaceLog.vue @@ -137,6 +137,7 @@ this.$refs.searchForm.resetFields() this.searchForm.startDate = '' this.searchForm.endDate = '' + this.searchForm.radio = '' this.time = [] this.search() } diff --git a/admin/src/views/business/retention.vue b/admin/src/views/business/retention.vue index 0be1f07..054b175 100644 --- a/admin/src/views/business/retention.vue +++ b/admin/src/views/business/retention.vue @@ -137,7 +137,7 @@ reset() { this.$refs.searchForm.resetFields() this.searchForm.startTime = '' - this.searchForm.radio = '0' + this.searchForm.radio = '' this.searchForm.endTime = '' this.time = [] this.search() diff --git a/admin/src/views/business/retentionCars.vue b/admin/src/views/business/retentionCars.vue index 0719476..e4756e2 100644 --- a/admin/src/views/business/retentionCars.vue +++ b/admin/src/views/business/retentionCars.vue @@ -51,7 +51,7 @@ <el-table-column prop="carNo" label="杞︾墝鍙�" min-width="100px"></el-table-column> <el-table-column prop="companyName" label="缁勭粐" min-width="250px"> <template slot-scope="{ row }"> - <span>{{row.companyName || row.visitCompanyName || '' }}</span> + <span>{{ row.companyName || row.visitCompanyName || '' }}</span> </template> </el-table-column> <el-table-column prop="carType" label="杞﹁締绫诲瀷" min-width="100px"> @@ -67,7 +67,7 @@ </el-table-column> <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column> <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column> -<!-- <el-table-column label="杩涘満闂ㄧ" min-width="100px"> + <!-- <el-table-column label="杩涘満闂ㄧ" min-width="100px"> <template slot-scope="{ row }"> <!– <span v-if="row.type === 1">-</span> –> <span>{{ row.deviceName || '-' }}</span> @@ -138,13 +138,13 @@ reset() { this.$refs.searchForm.resetFields() this.searchForm.startTime = '' - this.searchForm.radio = '0' + this.searchForm.radio = '' this.searchForm.endTime = '' this.time = [] this.search() }, seleTime(e) { - if(e && e.length >2){ + if (e && e.length > 2) { this.searchForm.startTime = e[0] this.searchForm.endTime = e[1] this.searchForm.radio = null diff --git a/admin/src/views/business/smsEmail.vue b/admin/src/views/business/smsEmail.vue index 369cfdd..eb2262d 100644 --- a/admin/src/views/business/smsEmail.vue +++ b/admin/src/views/business/smsEmail.vue @@ -115,13 +115,13 @@ 'field.main': 'id' }) this.changeRadio('0') - this.search() + // this.search() }, methods: { reset() { this.$refs.searchForm.resetFields() - this.searchForm.radio = '0' - this.changeRadio('0') + this.searchForm.radio = '' + // this.changeRadio('0') this.time = [] this.search() }, diff --git a/admin/src/views/business/trainTime.vue b/admin/src/views/business/trainTime.vue index 92f382d..d571886 100644 --- a/admin/src/views/business/trainTime.vue +++ b/admin/src/views/business/trainTime.vue @@ -1,69 +1,51 @@ <template> - <TableLayout :permissions="['business:deviceevent:query']"> - <!-- 鎼滅储琛ㄥ崟 --> - <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> - <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyWords"> - <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="缁勭粐" prop="companyName"> - <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input> - </el-form-item> - <el-form-item label="鍩硅寮�濮嬫椂闂�" prop="eventType"> - <el-date-picker - @change="seleTime" - v-model="time" - type="datetimerange" - format="yyyy-MM-dd HH:mm:ss" - value-format="yyyy-MM-dd HH:mm:ss" - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡"> - </el-date-picker> - </el-form-item> - <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio"> - <el-radio-button label="0">褰撳ぉ</el-radio-button> - <el-radio-button label="1">杩�7澶�</el-radio-button> - <el-radio-button label="2">杩�30澶�</el-radio-button> - </el-radio-group> - <section> - <el-button type="primary" @click="search">鎼滅储</el-button> - <el-button @click="reset">閲嶇疆</el-button> - </section> - </el-form> - <!-- 琛ㄦ牸鍜屽垎椤� --> - <template v-slot:table-wrap> - <el-table - v-loading="isWorking.search" - :data="tableData.list" - stripe - > - <el-table-column prop="name" label="浜哄憳濮撳悕" min-width="100px"></el-table-column> - <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column> - <el-table-column prop="idcardNo" label="璇佷欢鍙�" min-width="150px"></el-table-column> - <el-table-column prop="companyName" label="缁勭粐鍚嶇О" min-width="150px"></el-table-column> - <el-table-column prop="startTime" label="寮�濮嬫棩鏈�" min-width="150px"></el-table-column> - <el-table-column prop="endTime" label="缁撴潫鏃ユ湡" min-width="150px"></el-table-column> - <el-table-column label="浜鸿劯鐓х墖" min-width="80px"> - <template slot-scope="{row}"> - <el-image - v-if="row.faceImg" - style="width: 80px; height: 80px" - :src="row.faceImg" - :preview-src-list="[row.faceImg]"> - </el-image> - </template> - </el-table-column> - <el-table-column prop="createName" label="鎿嶄綔浜�" min-width="100px"></el-table-column> - <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="150px"></el-table-column> - </el-table> - <pagination - @size-change="handleSizeChange" - @current-change="handlePageChange" - :pagination="tableData.pagination" - > - </pagination> - </template> - </TableLayout> + <TableLayout :permissions="['business:deviceevent:query']"> + <!-- 鎼滅储琛ㄥ崟 --> + <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> + <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyWords"> + <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input> + </el-form-item> + <el-form-item label="缁勭粐" prop="companyName"> + <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input> + </el-form-item> + <el-form-item label="鍩硅寮�濮嬫椂闂�" prop="eventType"> + <el-date-picker @change="seleTime" v-model="time" type="datetimerange" format="yyyy-MM-dd HH:mm:ss" + value-format="yyyy-MM-dd HH:mm:ss" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"> + </el-date-picker> + </el-form-item> + <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio"> + <el-radio-button label="0">褰撳ぉ</el-radio-button> + <el-radio-button label="1">杩�7澶�</el-radio-button> + <el-radio-button label="2">杩�30澶�</el-radio-button> + </el-radio-group> + <section> + <el-button type="primary" @click="search">鎼滅储</el-button> + <el-button @click="reset">閲嶇疆</el-button> + </section> + </el-form> + <!-- 琛ㄦ牸鍜屽垎椤� --> + <template v-slot:table-wrap> + <el-table v-loading="isWorking.search" :data="tableData.list" stripe> + <el-table-column prop="name" label="浜哄憳濮撳悕" min-width="100px"></el-table-column> + <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column> + <el-table-column prop="idcardNo" label="璇佷欢鍙�" min-width="150px"></el-table-column> + <el-table-column prop="companyName" label="缁勭粐鍚嶇О" min-width="150px"></el-table-column> + <el-table-column prop="startTime" label="寮�濮嬫棩鏈�" min-width="150px"></el-table-column> + <el-table-column prop="endTime" label="缁撴潫鏃ユ湡" min-width="150px"></el-table-column> + <el-table-column label="浜鸿劯鐓х墖" min-width="80px"> + <template slot-scope="{row}"> + <el-image v-if="row.faceImg" style="width: 80px; height: 80px" :src="row.faceImg" + :preview-src-list="[row.faceImg]"> + </el-image> + </template> + </el-table-column> + <el-table-column prop="createName" label="鎿嶄綔浜�" min-width="100px"></el-table-column> + <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="150px"></el-table-column> + </el-table> + <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> + </pagination> + </template> + </TableLayout> </template> <script> @@ -75,7 +57,7 @@ name: 'DeviceEvent', extends: BaseTable, components: { TableLayout, Pagination }, - data () { + data() { return { // 鎼滅储 searchForm: { @@ -92,7 +74,7 @@ time1: [] } }, - created () { + created() { this.config({ module: '鍩硅鏈夋晥鏈熷垪琛�', api: '/business/trainTime', @@ -103,7 +85,7 @@ this.search() }, methods: { - changeRadio (e) { + changeRadio(e) { if (e === '0') { this.searchForm.startTimeStart = timeForMat(0)[0] this.searchForm.startTimeEnd = timeForMat(0)[1] @@ -119,15 +101,15 @@ } this.search() }, - seleTime (e) { - if(e && e.length > 1) { + seleTime(e) { + if (e && e.length > 1) { this.searchForm.startTimeStart = e[0] this.searchForm.startTimeEnd = e[1] this.searchForm.radio = null this.search() } }, - changeRadio1 (e) { + changeRadio1(e) { if (e === '0') { this.searchForm.endTimeStart = timeForMat(0)[0] this.searchForm.endTimeEnd = timeForMat(0)[1] @@ -143,21 +125,21 @@ } this.search() }, - seleTime1 (e) { - if (e && e.length > 1 ) { + seleTime1(e) { + if (e && e.length > 1) { this.searchForm.endTimeStart = e[0] this.searchForm.endTimeEnd = e[1] this.searchForm.radio1 = null this.search() } }, - reset () { + reset() { this.$refs.searchForm.resetFields() this.time = [] this.time1 = [] - this.searchForm.radio = '0' + this.searchForm.radio = '' this.searchForm.radio1 = '0' - this.changeRadio('0') + // this.changeRadio('0') this.search() } } diff --git a/admin/src/views/business/wmsInterfaceLog.vue b/admin/src/views/business/wmsInterfaceLog.vue index 47bdd43..d8bbce2 100644 --- a/admin/src/views/business/wmsInterfaceLog.vue +++ b/admin/src/views/business/wmsInterfaceLog.vue @@ -137,6 +137,7 @@ this.$refs.searchForm.resetFields() this.searchForm.startDate = '' this.searchForm.endDate = '' + this.searchForm.radio = '' this.time = [] this.search() } diff --git a/admin/src/views/meeting/bookings.vue b/admin/src/views/meeting/bookings.vue index 882ef72..c4443e1 100644 --- a/admin/src/views/meeting/bookings.vue +++ b/admin/src/views/meeting/bookings.vue @@ -66,8 +66,7 @@ @click="exportExcel">瀵煎嚭</el-button> </li> </ul> - <el-table v-loading="isWorking.search" :data="tableData.list" stripe - @selection-change="handleSelectionChange"> + <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> <!-- <el-table-column type="selection" align="center" width="55"></el-table-column> --> <el-table-column prop="name" label="浼氳涓婚" align="center" min-width="120px" show-overflow-tooltip> <template slot-scope="{ row }"> @@ -102,11 +101,15 @@ <template slot-scope="{ row }"> <template> <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', row)">鏌ョ湅璇︽儏</el-button> - <el-button v-if="row.meetingStatus == '1' && row.creator===userInfo.id" type="text" - @click="$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', row)" >缂栬緫</el-button> - <el-button type="text" v-if="row.creator===userInfo.id &&(row.meetingStatus == '1' || row.meetingStatus == '4')" @click="handleStart(row)">寮�濮�</el-button> - <el-button type="text" v-if="row.creator===userInfo.id && row.meetingStatus == '2'" @click="handleEnd(row)">缁撴潫</el-button> - <el-button v-if="row.creator===userInfo.id &&(row.meetingStatus == '1' || row.meetingStatus == '4')" type="text" @click="cancelMeeting(row.id)">鎾ゅ洖</el-button> + <el-button v-if="row.meetingStatus == '1' && row.creator === userInfo.id" type="text" + @click="$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', row)">缂栬緫</el-button> + <el-button type="text" + v-if="row.creator === userInfo.id && (row.meetingStatus == '1' || row.meetingStatus == '4')" + @click="handleStart(row)">寮�濮�</el-button> + <el-button type="text" v-if="row.creator === userInfo.id && row.meetingStatus == '2'" + @click="handleEnd(row)">缁撴潫</el-button> + <el-button v-if="row.creator === userInfo.id && (row.meetingStatus == '1' || row.meetingStatus == '4')" + type="text" @click="cancelMeeting(row.id)">鎾ゅ洖</el-button> </template> <!-- <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">鍒犻櫎</el-button> --> </template> @@ -249,10 +252,11 @@ reset() { this.$refs.searchForm.resetFields() this.date = [] - this.searchForm.radio = '0' + this.searchForm.radio = '' this.searchForm.startTime = '' this.searchForm.endTime = '' - this.changeRadio('0') + // this.changeRadio('0') + this.search() }, copy(row) { const text = `${row.realName} 閭�璇锋偍鍔犲叆浼氳\n浼氳涓婚锛�${row.name}\n浼氳瀹わ細${row.roomName}\n浼氳鏃堕棿锛�${row.meetingTime}\n鐐瑰嚮閾炬帴鐩存帴鍔犲叆浼氳锛歕n${this.link}?id=${row.id}` diff --git a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue index 1d7eefc..88762c8 100644 --- a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue +++ b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue @@ -222,7 +222,6 @@ this.pagination.page = 1 this.filters = { selDate: [], - fastdate: 0 } this.getList() }, diff --git a/admin/src/views/platform/LogisticsRecord/operation.vue b/admin/src/views/platform/LogisticsRecord/operation.vue index 4dca807..d921c8c 100644 --- a/admin/src/views/platform/LogisticsRecord/operation.vue +++ b/admin/src/views/platform/LogisticsRecord/operation.vue @@ -200,7 +200,6 @@ this.pagination.page = 1 this.filters = { selDate: [], - fastdate: 0 } this.getList() }, diff --git a/admin/src/views/platform/LogisticsRecord/operationCity.vue b/admin/src/views/platform/LogisticsRecord/operationCity.vue index 5ec9a53..bdc7185 100644 --- a/admin/src/views/platform/LogisticsRecord/operationCity.vue +++ b/admin/src/views/platform/LogisticsRecord/operationCity.vue @@ -200,7 +200,6 @@ this.pagination.page = 1 this.filters = { selDate: [], - fastdate: 0 } this.getList() }, diff --git a/admin/src/views/platform/LogisticsRecord/subscribe.vue b/admin/src/views/platform/LogisticsRecord/subscribe.vue index a70d11c..933b5b1 100644 --- a/admin/src/views/platform/LogisticsRecord/subscribe.vue +++ b/admin/src/views/platform/LogisticsRecord/subscribe.vue @@ -325,9 +325,9 @@ this.pagination.page = 1 this.filters = { selDate: [], - fastdate: 0, } - this.changeRadio('0') + this.getList() + // this.changeRadio('0') }, handleDetail(row) { this.isShowDriver = true diff --git a/admin/src/views/platform/LogisticsRecord/waybill.vue b/admin/src/views/platform/LogisticsRecord/waybill.vue index 4eaa9b7..8888613 100644 --- a/admin/src/views/platform/LogisticsRecord/waybill.vue +++ b/admin/src/views/platform/LogisticsRecord/waybill.vue @@ -228,9 +228,9 @@ this.pagination.page = 1 this.filters = { selDate: [], - fastdate: 0 } - this.changeRadio('0') + this.getList() + // this.changeRadio('0') }, handleDetail(row) { this.isShowDetail = true diff --git a/admin/src/views/platform/LogisticsRecord/waybillQuery.vue b/admin/src/views/platform/LogisticsRecord/waybillQuery.vue index 7f91fa0..c2a814e 100644 --- a/admin/src/views/platform/LogisticsRecord/waybillQuery.vue +++ b/admin/src/views/platform/LogisticsRecord/waybillQuery.vue @@ -153,7 +153,6 @@ this.pagination.page = 1 this.filters = { selDate: [], - fastdate: 0 } this.getList() }, diff --git a/admin/src/views/statistics/platformStatic.vue b/admin/src/views/statistics/platformStatic.vue index 598b986..0cb0834 100644 --- a/admin/src/views/statistics/platformStatic.vue +++ b/admin/src/views/statistics/platformStatic.vue @@ -159,10 +159,10 @@ }, clear() { this.filters = { - fastdate: 0, selDate: [] } - this.changeRadio('0') + this.getList() + // this.changeRadio('0') }, handleSizeChange(capacity) { this.pagination.pageSize = capacity diff --git a/admin/src/views/task/index.vue b/admin/src/views/task/index.vue index 11345da..4eb6bd9 100644 --- a/admin/src/views/task/index.vue +++ b/admin/src/views/task/index.vue @@ -272,7 +272,7 @@ this.loading = true taskCenterHeadPC({ ...filters, queryType: Number(filters.queryType), isDetail: '1' }).then(res => { this.headData = res - this.getList(page) + this.getList(1) }, () => { this.loading = false }) diff --git a/h5/pages.json b/h5/pages.json index 149b228..7d64341 100644 --- a/h5/pages.json +++ b/h5/pages.json @@ -496,6 +496,13 @@ { "navigationBarTitleText" : "浠诲姟鎿嶄綔鏄庣粏" } + }, + { + "path" : "pages/visitorApplication/memberSel", + "style" : + { + "navigationBarTitleText" : "閫夋嫨琚浜�" + } } ], "subPackages": [ diff --git a/h5/pages/driver/index.vue b/h5/pages/driver/index.vue index db7e113..8541b74 100644 --- a/h5/pages/driver/index.vue +++ b/h5/pages/driver/index.vue @@ -10,10 +10,14 @@ <view class="h2">鐗╂祦杞︿笓鍖�</view> <image class="banner" src="../../static/driver/wuliuche_banner@2x.png" mode="widthFix"></image> </view> - <!-- --> + <!-- --> + <view class="title_wrap"> + <view class="name">浣滀笟浠诲姟</view> + <view class="placeholder9">{{activeCurrent + 1}}/{{taskList.length}}</view> + </view> <view v-if="taskList && taskList.length > 0" class="task_list"> - <swiper circular class="task_swiper"> - <swiper-item v-for="item in taskList" :key="item.id" @click="taskClick(item)"> + <swiper circular indicator-dots indicator-active-color="#4d99a8" indicator-color="#e0e2e7" class="task_swiper" @change="changeCur" :current="activeCurrent"> + <swiper-item v-for="item in taskList" :current='activeCurrent' :key="item.id" @click="taskClick(item)"> <view class="item"> <view class="head"> <view class="name">{{ item.contractNum ? '鍚堝悓鍗�' : '杩愯緭鍗�' }}{{ item.billCode || item.contractNum }}</view> @@ -109,7 +113,8 @@ export default { data() { return { - taskList: [], + taskList: [], + activeCurrent: 0, driverInfo: uni.getStorageSync('driverInfo'), } }, @@ -139,7 +144,10 @@ this.initData() }, - methods: { + methods: { + changeCur(e) { + this.activeCurrent = e.detail.current + }, jump(path) { this.$jump(path) }, diff --git a/h5/pages/driver/reservedDetail.vue b/h5/pages/driver/reservedDetail.vue index 6f86053..f918538 100644 --- a/h5/pages/driver/reservedDetail.vue +++ b/h5/pages/driver/reservedDetail.vue @@ -28,6 +28,7 @@ <image v-if="info.transportImg" class="avatar_wrap" + @click="priviewImage(info.prefixUrl + info.transportImg)" :src="info.prefixUrl + info.transportImg" ></image> </view> @@ -136,6 +137,11 @@ this.getDetail(option.id) }, methods: { + priviewImage(url) { + uni.previewImage({ + urls: [url] + }) + }, handleCancel(){ const { info } = this uni.showModal({ diff --git a/h5/pages/staff/meetingSel.vue b/h5/pages/staff/meetingSel.vue index fdf97af..cac37aa 100644 --- a/h5/pages/staff/meetingSel.vue +++ b/h5/pages/staff/meetingSel.vue @@ -2,7 +2,7 @@ <view class="main_app" :class="{ popupShow: isShowSelMem }"> <view class="search_inp df_ac"> <image class="mr12 search" src="../../static/ic_search@2x.png" mode="widthFix"></image> - <input v-model="param.queryParam" @blur="initData()" type="text" placeholder="鎼滅储" + <input v-model="param.queryParam" @confirm="initData()" type="text" placeholder="鎼滅储" placeholder-style="color: #999999;" /> </view> <view class="member_list"> @@ -301,7 +301,10 @@ } } - .member_list { + .member_list { + height: calc( 100vh - 130rpx ); + overflow: auto; + margin-top: 10rpx; .line { display: flex; align-items: center; diff --git a/h5/pages/staff/snapshot.vue b/h5/pages/staff/snapshot.vue index 269cff5..c5005fb 100644 --- a/h5/pages/staff/snapshot.vue +++ b/h5/pages/staff/snapshot.vue @@ -120,7 +120,7 @@ <u-picker keyName="name" :show="isShowType" closeOnClickOverlay :columns="areaType" @confirm="seletedType" @close="isShowType = false" @cancel="isShowType = false"></u-picker> <!-- --> - <u-datetime-picker :show="isShowTime" :minDate="new Date().getTime()" mode="datetime" closeOnClickOverlay + <u-datetime-picker :show="isShowTime" :formatter="formatter" :minDate="new Date().getTime()" mode="datetime" closeOnClickOverlay @cancel="isShowTime = false" @close="isShowTime = false" @confirm="seletedDate"></u-datetime-picker> <!-- --> <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay> @@ -172,7 +172,25 @@ this.$set(this.param, 'checkorName', option.name) }) }, - methods: { + methods: { + formatter(type, 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}鍒哷 + } + return value + }, onSubmit() { const { param, diff --git a/h5/pages/staff/task/driver.vue b/h5/pages/staff/task/driver.vue index 35e11a1..fdfe0fc 100644 --- a/h5/pages/staff/task/driver.vue +++ b/h5/pages/staff/task/driver.vue @@ -29,6 +29,7 @@ <view class="label">鍑嗚繍璇佺収鐗�</view> <view class="value"> <image + @click="priviewImage(info.prefixUrl + info.transportImg)" v-if="info.transportImg" class="avatar_wrap" :src="info.prefixUrl + info.transportImg" @@ -162,6 +163,11 @@ this.getDetail(option.id) }, methods: { + priviewImage(url) { + uni.previewImage({ + urls: [url] + }) + }, getDetail(id) { driverApplyDetail({id}).then(res => { this.info = res.data diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue index 619ff2b..275c5e4 100644 --- a/h5/pages/staff/task/index.vue +++ b/h5/pages/staff/task/index.vue @@ -206,6 +206,7 @@ :show="tiemShow" v-model="startDate" mode="date" + :formatter="formatter" @confirm="confirmLeft" @cancel="tiemShow = false" ></u-datetime-picker> @@ -216,6 +217,7 @@ " v-model="startDate" mode="date" + :formatter="formatter" @confirm="confirmRight" @cancel="tiemShow1 = false" ></u-datetime-picker> @@ -248,7 +250,7 @@ { name: '璁垮鎶ュ', id: 1 }, { name: '鐢ㄨ溅鐢宠', id: 2 }, { name: '闅愭偅闅忔墜鎷�', id: 3 }, - { name: '鐗╂祦杞︾敵璇�', id: 4 }, + { name: '鐗╂祦杞︾敵璇�', id: 6 }, { name: '鑰冨嫟浠e姙', id: 7 }, ], startDate: dayjs().format('YYYY-MM-DD'), @@ -279,6 +281,24 @@ this.getHeadList() }, methods: { + formatter(type, 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}鍒哷 + } + return value + }, statusClick(val) { this.pagination.page = 0 this.dataList = [] diff --git a/h5/pages/staff/task/vDangetAppr.vue b/h5/pages/staff/task/vDangetAppr.vue index 14fbc1f..5a7619c 100644 --- a/h5/pages/staff/task/vDangetAppr.vue +++ b/h5/pages/staff/task/vDangetAppr.vue @@ -1,5 +1,5 @@ <template> - <view class="main_app"> + <view class="main_app" :style="{height: windowHeight + 'px'}"> <view class="status_wrap"> <view class="name">{{ info.categoryName }}</view> <view v-if="info.status == '0'" class="status">{{ statusMap[info.status] }}</view> @@ -113,6 +113,7 @@ </view> </view> </view> + <view v-if="info.status == 0 && info.checkUserId == userInfo.memberId" style="height: 90rpx;border: 1px solid red;"></view> <view class="emyty"></view> <view class="main_footer" v-if="info.status == 0 && info.checkUserId == userInfo.memberId"> <view v-if="info.status == 0 && info.checkUserId == userInfo.memberId" class="btn" @click="handleBack">閫�鍥�</view> @@ -254,21 +255,22 @@ </u-popup> <!-- 杞氦 --> <u-popup :show="isShowTransfer" :round="10" safeAreaInsetBottom mode="bottom" @close="isShowTransfer = false"> - <view class="appr_modal"> + <view class="appr_modal tran_modal"> <view class="title">閫夋嫨鍛樺伐</view> <view class="search_inp df_ac"> <image class="mr12 search" src="@/static/ic_search@2x.png" mode="widthFix"></image> - <input v-model="transferModel.name" @blur="getMemList()" type="text" placeholder="鎼滅储閮ㄩ棬/浜哄憳" + <input v-model="transferModel.queryParam" @focus="showKeyboard = true" @blur="showKeyboard = false" @confirm="getMemList()" type="text" placeholder="鎼滅储浜哄憳濮撳悕" placeholder-style="color: #999999;" /> </view> + <view class="mt24 placeholder6">鍏眥{ memberList.length }}鏉℃暟鎹�</view> <view class="member_list"> - <view class="mt24 placeholder6">鍏眥{ memberList.length }}鏉℃暟鎹�</view> + <view v-for="item in memberList" :key="item.id" class="line"> - <image v-if="item.faceImgFull" :src="item.faceImgFull" class="avatar"></image> - <span v-else class="img_name">{{ item.name && item.name.slice(0, 1) }}</span> + <image v-if="item.faceImg" :src="item.faceImg" class="avatar"></image> + <span v-else class="img_name">{{ item.realname && item.realname.slice(0, 1) }}</span> <view class="content"> <view class="info"> - <text class="name">{{ item.name }}</text> + <text class="name">{{ item.realname }}</text> <!-- <text class="tag">tag</text> --> </view> <view class="depart">{{ item.companyName }}</view> @@ -280,7 +282,7 @@ </view> <view class="empty"></view> </view> - <view class="Transfer_footer"> + <view v-if="!showKeyboard" class="Transfer_footer"> <view class="btn" @click="isShowTransfer = fales">鍙栨秷</view> <view class="btn active" @click="enterTransfer">纭杞氦</view> </view> @@ -307,7 +309,7 @@ import { hiddenDangerDetail, uploadUrl, - findHiddenAreaMemberList, + userPagePost, dealHiddenDanger, transferHiddenDanger, findListFlowDanger @@ -323,7 +325,8 @@ flowList: [], id: '', - type: '', + type: '', + windowHeight: '', cateList: [{ name: '璁垮鐢宠', id: 0 @@ -374,13 +377,17 @@ videoPlay: false, videoContext: null, - videoUrl: '' + videoUrl: '', + showKeyboard: false, } }, - onLoad(op) { + onLoad(op) { + const result = uni.getWindowInfo() + this.windowHeight = result.windowHeight uni.setStorageSync('ywinfo', {}) this.id = op.id - this.getDetail() + this.getDetail() + // this.handleTransfer() }, methods: { priviewImage(url) { @@ -432,7 +439,7 @@ findListFlowDanger({ hiddenDangerId: id }).then(res => { - this.flowList = res.data + this.flowList = res.data || [] }) }, onSubmit() { @@ -481,7 +488,7 @@ icon: 'none' }) transferHiddenDanger({ - checkUserId: transferParam.id, + checkUserId: transferParam.memberId, id }).then(res => { if (res.code === 200) { @@ -503,11 +510,11 @@ this.isShowTransfer = true this.getMemList() }, - getMemList() { - findHiddenAreaMemberList({ - ...this.transferModel, - // id: this.info.areaId, - ...this.pagination + getMemList() { + userPagePost({ + ...this.transferModel, + querySpecial: 1, type: 2, companyType: 1,workStatus:0 + }).then(res => { this.memberList = res.data || [] }) @@ -829,7 +836,7 @@ .main_app { background-color: #fff; padding-bottom: 0; - + position: relative; .flow_title { font-weight: 600; font-size: 32rpx; @@ -838,14 +845,13 @@ } .flow_wrap { - padding: 30rpx 0 90rpx; - + padding: 30rpx 0 30rpx; + background-color: #fff; .list { .item { display: flex; margin-bottom: 48rpx; position: relative; - .separate { position: absolute; width: 4rpx; @@ -1073,7 +1079,6 @@ display: flex; margin-bottom: 20rpx; flex-wrap: wrap; - .img_wrap { margin-top: 24rpx; width: 156rpx; @@ -1156,7 +1161,7 @@ width: 100%; z-index: 9999; left: 0; - padding: 30rpx 10rpx 60rpx; + padding: 10rpx 10rpx 30rpx; display: flex; justify-content: space-between; background: #ffffff; @@ -1290,7 +1295,9 @@ } } } - + .tran_modal{ + height: 1260rpx; + } .emyty { width: 750rpx; height: 20rpx; @@ -1329,9 +1336,9 @@ } .member_list { - height: 920rpx; + height: 900rpx; overflow: auto; - + // border: 1px solid; .line { display: flex; align-items: center; diff --git a/h5/pages/staff/vehicle/applePeo.vue b/h5/pages/staff/vehicle/applePeo.vue index 58ec92a..a8b3503 100644 --- a/h5/pages/staff/vehicle/applePeo.vue +++ b/h5/pages/staff/vehicle/applePeo.vue @@ -1,366 +1,386 @@ -<template> - <view class="main_app" :class="{ popupShow: isShowSelMem }"> - <view class="search_inp df_ac"> - <image - class="mr12 search" - src="@/static/ic_search@2x.png" - mode="widthFix" - ></image> - <input - v-model="param.name" - @blur="initData()" - type="text" - placeholder="鎼滅储" - placeholder-style="color: #999999;" - /> - </view> - <view class="member_list"> - <view @click="changeMem(item, index)" v-for="(item, index) in memberList" :key="item.id" class="line"> - <image - v-if="item.faceImgFull" - :src="item.faceImgFull" - class="avatar" - mode="" - ></image> - <view v-else class="avatar">{{ item.name.slice(0, 1) }}</view> - <view class="content"> - <view class="info"> - <text class="name">{{ item.name }}</text> - <!-- <text class="tag">tag</text> --> - </view> - <view class="depart">{{ item.companyName }}</view> - </view> - <image - v-if="item.checked" - src="@/static/checkbox_sel@2x.png" - mode="widthFix" - class="checked" - ></image> - <image - v-if="!item.checked" - src="@/static/meeting/icon/ic_choose@2x.png" - mode="widthFix" - class="checked" - ></image> - <text></text> - </view> - - <view class="empty"></view> - </view> - <!-- --> - <view class="sub_wrap"> - <view class="sel_mem"> - <text>宸查�夋嫨锛�</text> - <view class="members"> - <text v-for="(item, i) in selList" :key="i">{{ item.name }}锛�</text> - </view> - <image - @click="openSeleter" - class="open_icon" - src="@/static/staff/renyuan_ic_open.png" - mode="" - ></image> - </view> - <view class="btn" @click="onSubmit">纭</view> - </view> - <!-- --> - <u-popup - :show="isShowSelMem" - :round="12" - mode="bottom" - @close="closeModal" - > - <view class="modal"> - <view class="modal_header"> - <text class="status">宸查�夋嫨锛歿{ selList.filter(i => i.checkedTemp).length }}浜�</text> - <text class="btn" @click="subSelMem">纭</text> - </view> - <view class="modal_mem_list"> - <template v-for="(item, i) in selList"> - <view class="line" v-if="item.checkedTemp" :key="i"> - <image - :src=" - item.faceImgFull - ? item.faceImgFull - : require('@/static/logo@2x.png') - " - class="avatar" - mode="" - ></image> - <view class="content"> - <view class="info"> - <text class="name">{{ item.name }}</text> - </view> - <view class="depart">{{ item.componey }}</view> - </view> - <view class="btn" @click="handleRemove(i)">绉婚櫎</view> - </view> - </template> - </view> - </view> - </u-popup> - </view> -</template> - -<script> -import { findTypeMemberInfo } from '@/api' -export default { - data() { - return { - memberList: [], - param: {}, - selList: [], - - isShowSelMem: false, - pagination: { - capacity: 20, - page: 1 - }, - } - }, - onLoad() { - this.initData() - }, - onReachBottom() { - // if(){} - }, - mounted() { - this.$eventBus.$on('applePeoDetail', (res) => { - res.forEach(item => { - this.memberList.forEach(mem => { - if (item.id === mem.id) { - mem.checked = !mem.checked - } - }) - }) - this.selList = this.memberList.filter(i => i.checked) - this.$nextTick(() => { - this.$forceUpdate() - }) - }) - }, - methods: { - initData() { - const { param } = this - findTypeMemberInfo({ - // model: { - name: param.name, - // }, - type: '2', - companyType: 1, - }).then(res => { - this.memberList = res.data || [] - this.memberList.forEach(i => { - const index = this.selList.findIndex(ite => ite.id === i.id) - i.checked = index > -1 - }) - }) - }, - onSubmit() { - if (this.selList.length === 0) return uni.showToast({ - title: '璇峰厛閫夋嫨浜哄憳', - icon: 'none' - }) - this.$eventBus.$emit('applePeo', this.selList) - uni.navigateBack() - }, - changeMem(item, index) { - // this.memberList.forEach(mem => { - // if(item.id === mem.id){ - // item.checked = !item.checked - // } - // }) - item.checked = !item.checked - const i = this.selList.findIndex(a => a.id === item.id) - if(item.checked && i === -1){ - this.selList.push(item) - }else{ - this.selList.splice(i, 1) - } - this.$forceUpdate() - }, - openSeleter() { - this.isShowSelMem = true - this.selList.forEach(item => { - item.checkedTemp = true - }) - this.$forceUpdate() - }, - subSelMem() { - const { memberList } = this - this.selList = this.selList.filter(i => i.checkedTemp) - console.log('selList', this.selList); - memberList.forEach(ite => { - const index = this.selList.findIndex(i => i.id === ite.id) - ite.checked = index > -1 - }) - this.isShowSelMem = false - this.$forceUpdate() - }, - closeModal() { - this.selList.forEach(item => { - item.checkedTemp = true - }) - this.isShowSelMem = false - }, - handleRemove(i) { - this.selList[i].checkedTemp = false - this.$forceUpdate() - }, - } -}; -</script> - -<style lang="scss"> -.modal { - padding: 40rpx 30rpx; - max-height: 1000rpx; - .modal_header { - display: flex; - justify-content: space-between; - align-items: center; - padding-bottom: 20rpx; - .status { - font-weight: 600; - } - .btn { - color: $uni-color-primary; - } - } - .modal_mem_list { - max-height: 860rpx; - overflow: auto; - .line { - display: flex; - align-items: center; - border-bottom: 1rpx solid #e5e5e5; - padding: 30rpx 0; - .avatar { - width: 64rpx; - height: 64rpx; - border-radius: 50%; - overflow: hidden; - margin-right: 20rpx; - } - .content { - flex: 1; - .depart { - font-size: 24rpx; - color: #666666; - } - .info { - display: flex; - margin-bottom: 16rpx; - .name { - font-size: 30rpx; - } - } - } - .btn { - width: 80rpx; - height: 48rpx; - line-height: 48rpx; - text-align: center; - font-size: 24rpx; - color: #333333; - border-radius: 4rpx; - border: 1rpx solid #999999; - } - } - } -} -.sub_wrap { - position: fixed; - bottom: 0; - left: 0; - z-index: 9999; - width: 100%; - background-color: #fff; - box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2; - padding: 30rpx 30rpx 64rpx; - .sel_mem { - display: flex; - align-items: center; - .members { - width: 500rpx; - color: $uni-color-primary; - white-space: nowrap; - overflow: hidden; //鏂囨湰瓒呭嚭闅愯棌 - text-overflow: ellipsis; - margin-right: 20rpx; - } - .open_icon { - width: 44rpx; - height: 44rpx; - } - } - .btn { - width: 690rpx; - height: 88rpx; - line-height: 88rpx; - background: $uni-color-primary; - border-radius: 44rpx; - color: #fff; - text-align: center; - margin-top: 22rpx; - } -} -.member_list { - .line { - display: flex; - align-items: center; - border-bottom: 1rpx solid #e5e5e5; - padding: 30rpx 0; - .avatar { - width: 64rpx; - height: 64rpx; - border-radius: 50%; - overflow: hidden; - margin-right: 20rpx; - } - .content { - flex: 1; - .depart { - font-size: 24rpx; - color: #666666; - } - .info { - display: flex; - margin-bottom: 16rpx; - .name { - font-size: 30rpx; - } - .tag { - font-size: 24rpx; - border-radius: 4rpx; - border: 1rpx solid #f62710; - color: #f62710; - padding: 0rpx 6rpx; - margin-left: 8rpx; - } - } - } - .checked { - width: 48rpx; - } - } - .empty { - width: 100%; - height: 280rpx; - } -} -.search_inp { - height: 72rpx; - background: #f7f7f7; - border-radius: 4rpx; - padding-left: 16rpx; - .search { - width: 28rpx; - } - input { - flex: 1; - font-size: 28rpx; - color: #333333; - } -} -</style> +<template> + <view class="main_app" :style="{ height: windowHeight + 'px' }" :class="{ popupShow: isShowSelMem }"> + <view class="search_inp df_ac"> + <image class="mr12 search" src="@/static/ic_search@2x.png" mode="widthFix"></image> + <input v-model="param.queryParam" @confirm="initData()" type="text" placeholder="鎼滅储" + placeholder-style="color: #999999;" /> + </view> + <view class="member_list"> + <view v-for="(item, index) in memberList" :key="item.id" class="line"> + <image v-if="item.faceImg" :src="item.faceImg" class="avatar" mode=""></image> + <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view> + <view class="content"> + <view class="info"> + <text class="name">{{ item.realname }}</text> + <text class="tag" v-if="item.status == '1'">鏈変細璁�</text> + </view> + <view class="depart">{{ item.departmentName || item.companyName }}</view> + </view> + <image @click="changeMem(item, index)" v-if="item.checked" src="@/static/checkbox_sel@2x.png" mode="widthFix" + class="checked"></image> + <image @click="changeMem(item, index)" v-if="!item.checked" src="@/static/meeting/icon/ic_choose@2x.png" + mode="widthFix" class="checked"></image> + <text></text> + </view> + <view class="" style="height: 220rpx;"></view> + <view v-if="memberList.length == 0" class="empty_wrap"> + <image src="@/static/empty.png" mode=""></image> + <text>鏆傛棤鏁版嵁</text> + </view> + </view> + <!-- --> + <view class="sub_wrap"> + <view class="sel_mem"> + <text>宸查�夋嫨锛�</text> + <view class="members"> + <text v-for="(item, i) in selList" :key="i">{{ item.realname }}锛�</text> + </view> + <image @click="openSeleter" class="open_icon" src="@/static/staff/renyuan_ic_open.png" mode=""></image> + </view> + <view class="btn" @click="onSubmit">纭({{ selList.length }})</view> + </view> + <!-- --> + <u-popup catchtouchmove :show="isShowSelMem" :round="12" mode="bottom" @close="closeModal"> + <view class="modal"> + <view class="modal_header"> + <text class="status">宸查�夋嫨锛歿{selList.filter(i => i.checkedTemp).length}}浜�</text> + <text class="btn" @click="subSelMem">纭</text> + </view> + <view class="modal_mem_list"> + <template v-for="(item, i) in selList"> + <view class="line" v-if="item.checkedTemp"> + <image v-if="item.avatar" :src="item.prefixUrl + item.avatar" class="avatar" mode=""></image> + <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view> + <view class="content"> + <view class="info"> + <text class="name">{{ item.realname }}</text> + </view> + <view class="depart">{{ item.departmentName }}</view> + </view> + <view class="btn" @click="handleRemove(i)">绉婚櫎</view> + </view> + </template> + </view> + </view> + </u-popup> + </view> +</template> + +<script> +import { + userPagePost +} from '@/api' +import dayjs from 'dayjs' +export default { + data() { + return { + memberList: [], + selList: [], + param: { + limitNum: '' + }, + windowHeight: '', + pagination: { + page: 1, + capacity: 40 + }, + + isShowSelMem: false + } + }, + onLoad(option) { + const result = uni.getWindowInfo() + this.windowHeight = result.windowHeight + this.param = { + // limitNum: option.limitNum, + queryParam: '', + startTime: dayjs(Number(option.startTime)).format('YYYY-MM-DD HH:mm:ss'), + endTime: dayjs(Number(option.endTime)).format('YYYY-MM-DD HH:mm:ss'), + } + this.initData() + }, + mounted() { + this.$eventBus.$on('applePeoDetail', (res) => { + setTimeout(() => { + res.forEach(item => { + this.memberList.forEach(mem => { + if (item.id == mem.id) { + mem.checked = true + } + }) + }) + this.selList = this.memberList.filter(i => i.checked) + this.$nextTick(() => { + this.$forceUpdate() + }) + }, 500) + }) + }, + methods: { + onSubmit() { + this.$eventBus.$emit('applePeo', this.selList) + uni.navigateBack() + }, + changeMem(item, index) { + // const { selList, param } = this + // if (this.selList.length == param.limitNum && !item.checked) return uni.showToast({ + // title: `璇ヤ細璁彲瀹圭撼${param.limitNum}浜篳, + // icon: 'none' + // }) + // item.checked = !item.checked + // this.selList = this.memberList.filter(i => i.checked) + // // + item.checked = !item.checked + const i = this.selList.findIndex(a => a.id === item.id) + if (item.checked && i === -1) { + this.selList.push(item) + } else { + this.selList.splice(i, 1) + } + this.$forceUpdate() + }, + openSeleter() { + this.isShowSelMem = true + this.selList.forEach(item => { + item.checkedTemp = true + }) + this.$forceUpdate() + }, + initData() { + const { + param, + pagination + } = this + userPagePost({ + ...param, + querySpecial: 1, type: 2, companyType: 1, workStatus: 0 + + }).then(res => { + this.memberList = res.data || [] + this.memberList.forEach(i => { + const index = this.selList.findIndex(ite => ite.id === i.id) + i.checked = index > -1 + }) + }) + }, + closeModal() { + this.selList.forEach(item => { + item.checkedTemp = true + }) + this.isShowSelMem = false + }, + subSelMem() { + const { + memberList + } = this + this.selList = this.selList.filter(i => i.checkedTemp) + memberList.forEach(ite => { + const index = this.selList.findIndex(i => i.id === ite.id) + ite.checked = index > -1 + }) + this.isShowSelMem = false + this.$forceUpdate() + }, + handleRemove(i) { + this.selList[i].checkedTemp = false + this.$forceUpdate() + }, + } +} +</script> + +<style lang="scss"> +.main_app { + position: relative; +} + +.modal { + padding: 40rpx 30rpx; + max-height: 1000rpx; + + .modal_header { + display: flex; + justify-content: space-between; + align-items: center; + padding-bottom: 20rpx; + + .status { + font-weight: 600; + } + + .btn { + color: $uni-color-primary; + } + } + + .modal_mem_list { + max-height: 860rpx; + overflow: auto; + + .line { + display: flex; + align-items: center; + border-bottom: 1rpx solid #e5e5e5; + padding: 30rpx 0; + + .avatar { + width: 64rpx; + height: 64rpx; + border-radius: 50%; + overflow: hidden; + margin-right: 20rpx; + display: flex; + justify-content: center; + align-items: center; + background-color: $uni-color-primary; + color: #fff; + } + + .content { + flex: 1; + + .depart { + font-size: 24rpx; + color: #666666; + } + + .info { + display: flex; + margin-bottom: 16rpx; + + .name { + font-size: 30rpx; + } + } + } + + .btn { + width: 80rpx; + height: 48rpx; + line-height: 48rpx; + text-align: center; + font-size: 24rpx; + color: #333333; + border-radius: 4rpx; + border: 1rpx solid #999999; + } + } + } +} + +.sub_wrap { + position: fixed; + bottom: 0; + background-color: #fff; + left: 0; + width: 100%; + box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2; + padding: 30rpx 30rpx 42rpx; + + .sel_mem { + display: flex; + align-items: center; + + .members { + width: 500rpx; + color: $uni-color-primary; + white-space: nowrap; + overflow: hidden; //鏂囨湰瓒呭嚭闅愯棌 + text-overflow: ellipsis; + margin-right: 20rpx; + } + + .open_icon { + width: 44rpx; + height: 44rpx; + } + } + + .btn { + width: 690rpx; + height: 88rpx; + line-height: 88rpx; + background: $uni-color-primary; + border-radius: 44rpx; + color: #fff; + text-align: center; + margin-top: 22rpx; + } +} + +.member_list { + height: calc(100vh - 130rpx); + overflow: auto; + margin-top: 10rpx; + + .line { + display: flex; + align-items: center; + border-bottom: 1rpx solid #e5e5e5; + padding: 30rpx 0; + + .avatar { + width: 64rpx; + height: 64rpx; + border-radius: 50%; + overflow: hidden; + margin-right: 20rpx; + } + + .content { + flex: 1; + + .depart { + font-size: 24rpx; + color: #666666; + } + + .info { + display: flex; + margin-bottom: 16rpx; + + .name { + font-size: 30rpx; + } + + .tag { + font-size: 24rpx; + border-radius: 4rpx; + border: 1rpx solid #f62710; + color: #f62710; + padding: 0rpx 6rpx; + margin-left: 8rpx; + display: flex; + align-items: center; + } + } + } + + .checked { + width: 48rpx; + } + } + + .empty { + width: 100%; + height: 280rpx; + } +} + +.search_inp { + height: 72rpx; + background: #f7f7f7; + border-radius: 4rpx; + padding-left: 16rpx; + + .search { + width: 28rpx; + } + + input { + flex: 1; + font-size: 28rpx; + color: #333333; + } +} +</style> \ No newline at end of file diff --git a/h5/pages/staff/vehicle/apply.vue b/h5/pages/staff/vehicle/apply.vue index d0fa466..0112528 100644 --- a/h5/pages/staff/vehicle/apply.vue +++ b/h5/pages/staff/vehicle/apply.vue @@ -8,10 +8,7 @@ <text>棰勮鐢ㄨ溅鏃舵</text> </view> <view class="value" @click="$goBack()"> - <text - class="mr6" - :style="{ color: param.startTime ? '#000000' : '#999999' }" - > + <text class="mr6" :style="{ color: param.startTime ? '#000000' : '#999999' }"> <text v-if="param.startTime"> {{ param.startTime.slice(5, 16) }}鑷硔{ param.endTime.slice(5, 16) @@ -28,13 +25,8 @@ <text>鐢宠杞﹁締</text> </view> <view class="value" @click="$goBack()"> - <input - type="text" - disabled - placeholder="璇疯緭鍏ョ敵璇疯溅杈�" - v-model="param.carCode" - placeholder-style="color: #999999;" - /> + <input type="text" disabled placeholder="璇疯緭鍏ョ敵璇疯溅杈�" v-model="param.carCode" + placeholder-style="color: #999999;" /> </view> </view> <view class="line"> @@ -43,11 +35,8 @@ <text>棰勮鍑哄彂鏃堕棿</text> </view> <view class="value" @click="isShowDatetime = true"> - <text - class="mr6" - :style="{ color: param.planUseDate ? '#000000' : '#999999' }" - >{{ param.planUseDate ? param.planUseDate : "璇烽�夋嫨" }}</text - > + <text class="mr6" :style="{ color: param.planUseDate ? '#000000' : '#999999' }">{{ param.planUseDate ? + param.planUseDate : "璇烽�夋嫨" }}</text> <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> </view> </view> @@ -67,12 +56,7 @@ <text>鐩殑鍦�</text> </view> <view class="value"> - <input - type="text" - placeholder="璇疯緭鍏�" - v-model="param.addr" - placeholder-style="color: #999999;" - /> + <input type="text" placeholder="璇疯緭鍏�" v-model="param.addr" placeholder-style="color: #999999;" /> </view> </view> <view class="line"> @@ -81,25 +65,20 @@ <text>涔樿溅浜哄憳</text> </view> <view class="value" @click="selPeople"> - <text - class="mr6" - :style="{ - color: - param.memberList && param.memberList.length > 0 - ? '#000000' - : '#999999', - }" - > + <text class="mr6" :style="{ + color: + param.memberList && param.memberList.length > 0 + ? '#000000' + : '#999999', + }"> <text v-if="param.memberNames"> <text v-for="(mem, i) in param.memberList" :key="mem.id"> <template v-if="i < 2"> - <text>{{ mem.name }}</text> + <text>{{ mem.realname }}</text> <text v-if="i < 1 && param.memberList.length > 1">,</text> </template> </text> - <text v-if="param.memberList.length > 2" - >绛墈{ param.memberList.length }}浜�</text - > + <text v-if="param.memberList.length > 2">绛墈{ param.memberList.length }}浜�</text> </text> <text v-else>璇烽�夋嫨</text> </text> @@ -112,41 +91,24 @@ <text>鐢ㄨ溅浜嬬敱</text> </view> <view class="value"> - <textarea - type="text" - placeholder="璇疯緭鍏�" - :maxlength="-1" - v-model="param.content" - placeholder-style="color: #999999;" - /> + <textarea type="text" placeholder="璇疯緭鍏�" :maxlength="-1" v-model="param.content" + placeholder-style="color: #999999;" /> </view> </view> </view> <view class="tip"> <view class="title">娉ㄦ剰浜嬮」锛�</view> - <view class="line" - >1銆佸叕鍙歌溅杈嗗鍑洪渶鍔炵悊鐢ㄨ溅鐢宠琛紝缁忔壒鍑嗗悗鏂瑰彲澶栧嚭锛堝�熷嚭锛夈��</view - > + <view class="line">1銆佸叕鍙歌溅杈嗗鍑洪渶鍔炵悊鐢ㄨ溅鐢宠琛紝缁忔壒鍑嗗悗鏂瑰彲澶栧嚭锛堝�熷嚭锛夈��</view> <view class="line">2銆佸競澶栫敤杞﹂渶鎬荤粡鍔炲鎵广��</view> - <view class="line" - >3銆佸�熷嚭杞﹁締蹇呴』閬靛畧浜ら�氳鍒欙紝瀹夊叏琛岄┒銆傚浜庤溅杈嗗彂鐢熶氦閫氭剰澶栵紝瀵瑰綋浜嬩汉鍙婄涓夋柟閫犳垚浜鸿韩浼ゅ鍙婃崯澶憋紝鍏徃鍙互鍗忓姪澶勭悊淇濋櫓鍏徃璧斿伩鐩稿叧浜嬪疁锛屼絾涓嶆壙鎷呬换浣曡矗浠诲拰璐圭敤銆�</view - > - <view class="line" - >4銆佸叕鍙稿�熺粰鐢宠浜虹敤杞︼紝鐢宠鍊熻溅浜轰负绗竴璐d换浜猴紝涓嶅厑璁歌浆鍊熺粰鍏朵粬浜轰娇鐢紝鑻ヨ鍊熺粰浠栦汉浣跨敤銆傝矗浠讳汉瑕佹壙鎷呭叏閮ㄨ矗浠汇��</view - > - <view class="sub_btn" @click="handleSub">鎻愪氦</view> + <view class="line">3銆佸�熷嚭杞﹁締蹇呴』閬靛畧浜ら�氳鍒欙紝瀹夊叏琛岄┒銆傚浜庤溅杈嗗彂鐢熶氦閫氭剰澶栵紝瀵瑰綋浜嬩汉鍙婄涓夋柟閫犳垚浜鸿韩浼ゅ鍙婃崯澶憋紝鍏徃鍙互鍗忓姪澶勭悊淇濋櫓鍏徃璧斿伩鐩稿叧浜嬪疁锛屼絾涓嶆壙鎷呬换浣曡矗浠诲拰璐圭敤銆�</view> + <view class="line">4銆佸叕鍙稿�熺粰鐢宠浜虹敤杞︼紝鐢宠鍊熻溅浜轰负绗竴璐d换浜猴紝涓嶅厑璁歌浆鍊熺粰鍏朵粬浜轰娇鐢紝鑻ヨ鍊熺粰浠栦汉浣跨敤銆傝矗浠讳汉瑕佹壙鎷呭叏閮ㄨ矗浠汇��</view> + <view class="sub_btn" @click="handleSub">鎻愪氦</view> </view> <!-- --> <!-- :minDate="new Date(param.startTime).getTime()" :maxDate="new Date(param.endTime).getTime()" --> - <u-datetime-picker - :show="isShowDatetime" - @confirm="confirmDate" - :minDate="new Date(param.startTime).getTime()" - :maxDate="new Date(param.endTime).getTime()" - @cancel="isShowDatetime = false" - mode="datetime" - ></u-datetime-picker> + <u-datetime-picker :show="isShowDatetime" @confirm="confirmDate" :minDate="new Date(param.startTime).getTime()" + :maxDate="new Date(param.endTime).getTime()" @cancel="isShowDatetime = false" mode="datetime"></u-datetime-picker> </view> </template> @@ -164,15 +126,15 @@ mounted() { this.$eventBus.$on('applePeo', (res) => { this.$set(this.param, 'memberList', res) - this.$set(this.param, 'memberIds', res.map(i => i.id).join(',')) - this.$set(this.param, 'memberNames', res.map(i => i.name).join(',')) + this.$set(this.param, 'memberIds', res.map(i => i.memberId).join(',')) + this.$set(this.param, 'memberNames', res.map(i => i.realname).join(',')) }) }, onLoad(option) { console.log(option) this.param = { ...option } this.minDate = new Date().getTime() - this.param.planUseDate = dayjs(this.param.startTime).format('YYYY-MM-DD HH:mm') + this.param.planUseDate = dayjs(this.param.startTime).format('YYYY-MM-DD HH:mm') }, methods: { handleSub() { @@ -227,9 +189,10 @@ </script> <style lang="scss"> - page{ - background-color: #f7f7f7; - } +page { + background-color: #f7f7f7; +} + .main_wrap { .line { display: flex; @@ -237,12 +200,14 @@ align-items: center; border-bottom: 1rpx solid #e5e5e5; padding: 30rpx; - background-color: #fff; - width: 750rpx; - margin: 0 -30rpx; + background-color: #fff; + width: 750rpx; + margin: 0 -30rpx; + .label { font-size: 30rpx; font-weight: 400; + text { &:nth-child(1) { color: #e42d2d; @@ -250,6 +215,7 @@ } } } + .value { flex: 1; height: 100%; @@ -257,6 +223,7 @@ display: flex; align-items: center; justify-content: flex-end; + input { width: 100%; height: 100%; @@ -267,11 +234,13 @@ } } } + .upload_line { padding: 30rpx; - width: 750rpx; - margin: 0 -30rpx; - background-color: #fff; + width: 750rpx; + margin: 0 -30rpx; + background-color: #fff; + textarea { margin-top: 12rpx; width: 100%; @@ -280,6 +249,7 @@ font-weight: 400; color: #222222; } + .adduser_list_item_ipt1_upload { margin-top: 24rpx; width: 120rpx; @@ -292,6 +262,7 @@ align-items: center; justify-content: center; overflow: hidden; + image { width: 100%; height: 100%; @@ -299,11 +270,12 @@ } } } + .sub_btn { // position: fixed; // bottom: 84rpx; // left: 30rpx; - margin-top: 60rpx; + margin-top: 60rpx; width: 690rpx; height: 88rpx; line-height: 88rpx; @@ -314,20 +286,24 @@ font-size: 30rpx; color: #ffffff; } + .tip { background: #f7f7f7; padding: 30rpx 30rpx 10rpx; margin: 0 -30rpx; + .title { line-height: 40rpx; margin-bottom: 22rpx; } + .line { font-size: 26rpx; color: #666666; line-height: 36rpx; } } + .main_app { padding-bottom: 0; // padding-top: 10rpx; diff --git a/h5/pages/staff/vehicle/sendACar.vue b/h5/pages/staff/vehicle/sendACar.vue index 4747678..57a4afe 100644 --- a/h5/pages/staff/vehicle/sendACar.vue +++ b/h5/pages/staff/vehicle/sendACar.vue @@ -69,6 +69,7 @@ <u-datetime-picker mode="date" v-model="param.queryDate" + :formatter="formatter" :show="isShowDate" :minDate="minDate" closeOnClickOverlay @@ -116,6 +117,24 @@ } }, methods: { + formatter(type, 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}鍒哷 + } + return value + }, getList() { const { param, pagination } = this pagination.page = pagination.page + 1 diff --git a/h5/pages/staff/vehicle/shinei.vue b/h5/pages/staff/vehicle/shinei.vue index 0c4d8da..4704e57 100644 --- a/h5/pages/staff/vehicle/shinei.vue +++ b/h5/pages/staff/vehicle/shinei.vue @@ -46,7 +46,7 @@ <u-picker keyName="code" :show="isShowCar" :columns="carsList" @confirm="seletedCar" @cancel="isShowCar = false"></u-picker> <!-- 鏃ユ湡 --> - <u-datetime-picker ref="startPick" :show="isShowDate" :minDate="minDate" @confirm="confirmDate" + <u-datetime-picker ref="startPick" :formatter="formatter" :show="isShowDate" :minDate="minDate" @confirm="confirmDate" @cancel="isShowDate = false" mode="date"></u-datetime-picker> <!-- 璇︽儏 --> <u-popup :show="isShowDetail" :round="12" mode="bottom" @close="isShowDetail = false"> @@ -131,7 +131,25 @@ this.minDate = new Date().getTime() - (6 * 24 * 60 * 60 * 1000) this.initData() }, - methods: { + methods: { + formatter(type, 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}鍒哷 + } + return value + }, onSubmit() { const { param diff --git a/h5/pages/staff/vehicle/shiwai.vue b/h5/pages/staff/vehicle/shiwai.vue index 790f484..531e6b3 100644 --- a/h5/pages/staff/vehicle/shiwai.vue +++ b/h5/pages/staff/vehicle/shiwai.vue @@ -42,7 +42,7 @@ <view class="line"> <text>鐢ㄨ溅鏃舵</text> <text> - {{ item.startTime.slice(5, 16) }}鑷硔{ + {{ item.startTime.slice(5, 16) }} 鑷� {{ item.endTime.slice(5, 16) }}</text > @@ -102,6 +102,7 @@ :show="isShowDate" ref="startPick" title="寮�濮嬫椂闂�" + :formatter="formatter" :minDate="minDate" @close="isShowDate = false" :closeOnClickOverlay="true" @@ -112,6 +113,7 @@ mode="datetime" :show="isShowEndDate" title="缁撴潫鏃堕棿" + :formatter="formatter" :minDate="new Date(param.startTime || null).getTime()" @close="endtimeClose" :closeOnClickOverlay="true" @@ -144,6 +146,24 @@ this.initData() }, methods: { + formatter(type, 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}鍒哷 + } + return value + }, showDate() { this.isShowDate = true if (!this.param.startTime) { diff --git a/h5/pages/staff/visitorReport.vue b/h5/pages/staff/visitorReport.vue index afc7353..4431d4e 100644 --- a/h5/pages/staff/visitorReport.vue +++ b/h5/pages/staff/visitorReport.vue @@ -138,6 +138,7 @@ :show="show4" :minDate="new Date().getTime()" mode="datetime" + :formatter="formatter" @cancel="show4 = false" @confirm="setinDate" ></u-datetime-picker> @@ -145,6 +146,7 @@ <u-datetime-picker v-if="form1.starttime" :show="show5" + :formatter="formatter" :minDate="formatTimeStamp(form1.starttime)" :maxDate="formatTimeStamp(maxTime)" mode="datetime" @@ -262,6 +264,24 @@ // this.getUserValid() }, methods: { + formatter(type, 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}鍒哷 + } + return value + }, openInput(type) { this.inputType = type this.$refs.keyboard.open() diff --git a/h5/pages/visitorApplication/memberSel.vue b/h5/pages/visitorApplication/memberSel.vue new file mode 100644 index 0000000..7df8de5 --- /dev/null +++ b/h5/pages/visitorApplication/memberSel.vue @@ -0,0 +1,282 @@ +<template> + <view class="main_app"> + <view class="search_inp df_ac"> + <image + class="mr12 search" + src="../../static/ic_search@2x.png" + mode="widthFix" + ></image> + <input + v-model="param.name" + @confirm="initData()" + type="text" + placeholder="璇疯緭鍏ュ鍚嶈繘琛屾悳绱�" + placeholder-style="color: #999999;" + /> + </view> + <view class="member_list"> + <checkbox-group @change="changeMem"> + <view v-for="item in memberList" :key="item.id" class="line"> + <image v-if="item.faceImgFull" :src="item.faceImgFull" class="avatar" ></image> + <span v-else class="img_name">{{item.name && item.name.slice(0,1)}}</span> + <view class="content"> + <view class="info"> + <text class="name">{{ item.name }}</text> + <!-- <text class="tag">tag</text> --> + </view> + <view class="depart">{{ item.companyName }}</view> + </view> + <label> + <checkbox + :value="String(item.id)" + class="checkbox" + /> + </label> + <text></text> + </view> + </checkbox-group> + <view v-if="memberList.length == 0" class="empty_wrap"> + <image src="../../static/empty.png"></image> + <text>鏆傛棤鏁版嵁</text> + </view> + </view> + + <u-popup + :show="isShowSelMem" + :round="12" + mode="bottom" + @close="isShowSelMem = false" + > + <view class="modal"> + <view class="modal_header"> + <text class="status">宸查�夋嫨锛歺x浜�</text> + <text class="btn" @click="isShowSelMem = false">纭</text> + </view> + <view class="modal_mem_list"> + <view class="line"> + <image + src="../../static/logo@2x.png" + class="avatar" + mode="" + ></image> + <view class="content"> + <view class="info"> + <text class="name">name</text> + </view> + <view class="depart">xx绉戝</view> + </view> + <view class="btn">绉婚櫎</view> + </view> + </view> + </view> + </u-popup> + </view> +</template> + +<script> +import { getVisitedMember } from '@/api' +export default { + data() { + return { + memberList: [], + selList: [], + param: {}, + + isShowSelMem: false + } + }, + onLoad(option) { + // this.$set(this.param, 'id', option.areaId || '') + this.initData() + }, + methods: { + onSubmit() { + uni.navigateBack() + }, + changeMem(e) { + console.log( e.detail.value[0]); + const id = Number(e.detail.value[0]) + const item = this.memberList.find(i => i.id === id) + this.$eventBus.$emit('svisitorAppSel', item) + uni.navigateBack() + }, + initData() { + const { param } = this + getVisitedMember({ + ...param + }).then(res => { + this.memberList = res.data || [] + }) + // findHiddenAreaMemberList({ + // name: param.name, + // id: param.id + // }).then(res => { + // this.memberList = res.data || [] + // }) + } + } +}; +</script> + +<style lang="scss"> + .main_app{ + padding-top: 30rpx; + } +.modal { + padding: 40rpx 30rpx; + .modal_header { + display: flex; + justify-content: space-between; + align-items: center; + .status { + font-weight: 600; + } + .btn { + color: $uni-color-primary; + } + } + .modal_mem_list { + .line { + display: flex; + align-items: center; + border-bottom: 1rpx solid #e5e5e5; + padding: 30rpx 0; + .avatar { + width: 64rpx; + height: 64rpx; + border-radius: 50%; + overflow: hidden; + margin-right: 20rpx; + } + .content { + flex: 1; + .depart { + font-size: 24rpx; + color: #666666; + } + .info { + display: flex; + margin-bottom: 16rpx; + .name { + font-size: 30rpx; + } + } + } + .btn { + width: 80rpx; + height: 48rpx; + line-height: 48rpx; + text-align: center; + font-size: 24rpx; + color: #333333; + border-radius: 4rpx; + border: 1rpx solid #999999; + } + } + } +} +.sub_wrap { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2; + padding: 30rpx 30rpx 64rpx; + .sel_mem { + display: flex; + align-items: center; + .members { + width: 500rpx; + color: $uni-color-primary; + white-space: nowrap; + overflow: hidden; //鏂囨湰瓒呭嚭闅愯棌 + text-overflow: ellipsis; + margin-right: 20rpx; + } + .open_icon { + width: 44rpx; + height: 44rpx; + } + } + .btn { + width: 690rpx; + height: 88rpx; + line-height: 88rpx; + background: $uni-color-primary; + border-radius: 44rpx; + color: #fff; + text-align: center; + margin-top: 22rpx; + } +} +.member_list { + height: calc( 100vh - 130rpx ); + overflow: auto; + margin-top: 10rpx; + .line { + display: flex; + align-items: center; + border-bottom: 1rpx solid #e5e5e5; + padding: 30rpx 0; + .avatar { + width: 64rpx; + height: 64rpx; + border-radius: 50%; + overflow: hidden; + margin-right: 20rpx; + } + .img_name{ + width: 64rpx; + height: 64rpx; + line-height: 64rpx; + text-align: center; + border-radius: 50%; + overflow: hidden; + margin-right: 20rpx; + background: $uni-color-primary; + color: #fff; + border: 1rpx solid $uni-color-primary; + } + .content { + flex: 1; + .depart { + font-size: 24rpx; + color: #666666; + } + .info { + display: flex; + margin-bottom: 16rpx; + .name { + font-size: 30rpx; + } + .tag { + font-size: 24rpx; + border-radius: 4rpx; + border: 1rpx solid #f62710; + color: #f62710; + padding: 0rpx 6rpx; + margin-left: 8rpx; + } + } + } + } + .empty { + width: 100%; + height: 280rpx; + } +} +.search_inp { + height: 72rpx; + background: #f7f7f7; + border-radius: 4rpx; + padding-left: 16rpx; + .search { + width: 28rpx; + } + input { + flex: 1; + font-size: 28rpx; + color: #333333; + } +} +</style> diff --git a/h5/pages/visitorApplication/visitorApplication.vue b/h5/pages/visitorApplication/visitorApplication.vue index 135a850..487dff6 100644 --- a/h5/pages/visitorApplication/visitorApplication.vue +++ b/h5/pages/visitorApplication/visitorApplication.vue @@ -1,1408 +1,1397 @@ -<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="showName = true"> - <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" - /> - </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" - @cancel="show4 = false" - @confirm="setstarttime" - ></u-datetime-picker> - <!-- 绂诲洯鏃堕棿 --> - <u-datetime-picker - v-if="form1.starttime" - :show="show5" - :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銆佽鎻愪緵浜斿畼娓呮櫚锛屼汉鑴稿眳涓殑姝i潰浜鸿劯鍏嶅啝鐓х墖锛�</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() - }, - methods: { - 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(e) { - console.log(e.detail.value) - this.form1.type = Number(e.detail.value) - console.log(this.form1.type) - }, - 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; - } - } - } - } - - .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; - } - } -} +<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" /> + </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銆佽鎻愪緵浜斿畼娓呮櫚锛屼汉鑴稿眳涓殑姝i潰浜鸿劯鍏嶅啝鐓х墖锛�</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 === '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(e) { + console.log(e.detail.value) + this.form1.type = Number(e.detail.value) + console.log(this.form1.type) + }, + 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; + } + } + } + } + + .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> \ No newline at end of file diff --git a/screen/src/views/SecurityControl.vue b/screen/src/views/SecurityControl.vue index 1b4ec61..5eb0b21 100644 --- a/screen/src/views/SecurityControl.vue +++ b/screen/src/views/SecurityControl.vue @@ -220,8 +220,8 @@ <div class="content"> <div class="name">闀挎湡鐩稿叧鏂�</div> <div class="num today"><span>{{ data.relatedTotal || 0 - }}</span> | {{ data.inParkTotal ? ((data.relatedTotal / data.inParkTotal) * 100).toFixed(1) : 0 - }}%</div> + }}</span> | {{ data.inParkTotal ? ((data.relatedTotal / data.inParkTotal) * 100).toFixed(1) : 0 + }}%</div> </div> </div> <div class="item"> @@ -453,7 +453,7 @@ <div class="line header"> <div>濮撳悕</div> <div class="dept">鎷滆閮ㄩ棬</div> - <div class="dept">瓒呮椂鏃堕暱</div> + <div class="time">瓒呮椂鏃堕暱</div> </div> <div v-if="dataList3.length > 0" class="three-swiper list"> <div class="swiper-wrapper"> @@ -461,7 +461,7 @@ <div class="line"> <div>{{ item.name }}</div> <div class="dept">{{ item.companyName }}</div> - <div class="dept">{{ item.timeOutMinuteT }}</div> + <div class="time">{{ item.timeOutMinuteT }}</div> </div> <div class="separate"></div> </div> @@ -612,7 +612,7 @@ }) } -const colors = [ '#01ABFE','#FEAF01', '#51F9E4'] +const colors = ['#01ABFE', '#FEAF01', '#51F9E4'] const initEchart2 = () => { const myChart = echarts.init(document.getElementById('echart2')) const option = { @@ -676,16 +676,18 @@ ] const data = [] if (data4.value.total) { - data.push({ name: '寰呰闂�', value: data4.value.waitVisitNum, rate: (data4.value.waitVisitNum / data4.value.total).toFixed(1) }) - data.push({ name: '宸茬櫥璁�', value: data4.value.registerVisitNum, rate: (data4.value.registerVisitNum / data4.value.total).toFixed(1) }) - data.push({ name: '宸茬寮�', value: data4.value.levelNum, rate: (data4.value.levelNum / data4.value.total).toFixed(1) }) - data.push({ name: '婊炵暀', value: data4.value.retentionNum, rate: (data4.value.retentionNum / data4.value.total).toFixed(1) }) + data.push({ name: '寰呰闂�', value: data4.value.waitVisitNum, rate: (data4.value.waitVisitNum / data4.value.total).toFixed(3) }) + data.push({ name: '宸茬櫥璁�', value: data4.value.registerVisitNum, rate: (data4.value.registerVisitNum / data4.value.total).toFixed(3) }) + data.push({ name: '宸茬寮�', value: data4.value.levelNum, rate: (data4.value.levelNum / data4.value.total).toFixed(3) }) + data.push({ name: '婊炵暀', value: data4.value.retentionNum, rate: (data4.value.retentionNum / data4.value.total).toFixed(3) }) } else { data.push({ name: '寰呰闂�', value: data4.value.waitVisitNum, rate: 0 }) data.push({ name: '宸茬櫥璁�', value: data4.value.registerVisitNum, rate: 0 }) data.push({ name: '宸茬寮�', value: data4.value.levelNum, rate: 0 }) data.push({ name: '婊炵暀', value: data4.value.retentionNum, rate: 0 }) } + data.sort((a, b) => (b.value - a.value)) + // console.log('data', data); const option = { color: colors, @@ -752,7 +754,7 @@ position: 'outside', formatter: (params) => { const index = params.dataIndex - return `{color${index}|${params.data.name} ${params.data.rate}%}` + return `{color${index}|${params.data.name} ${(params.data.rate * 100).toFixed(1)}%}` // return `<div>${params.data.name}</div>` }, rich: { @@ -826,8 +828,8 @@ } return item }) - console.log('dataList2', dataList2.value); - + console.log('dataList2', dataList2.value) + data2.value = total if (online >= outline) { temp.push({ name: '鍦ㄧ嚎', value: online, rate: ((online / (online + outline)) * 100).toFixed(1) }) @@ -851,6 +853,7 @@ data4.value = res.data || {} let obj = data4.value data4.value.total = obj.levelNum + obj.retentionNum + obj.registerVisitNum + obj.waitVisitNum + const result = res.data?.visitRetentionDataList || [] dataList3.value = result.map(i => { if (i.timeOutMinute) { @@ -861,7 +864,7 @@ } else if (i.timeOutMinute > 60) { i.timeOutMinuteT = dayjs.duration(i.timeOutMinute * 60 * 1000).format('H鏃秏鍒�') } else { - i.timeOutMinuteT = item.timeOutMinuteT + '鍒�' + i.timeOutMinuteT = i.timeOutMinute + '鍒�' } return i @@ -1599,6 +1602,7 @@ width: 786px; margin-right: 20px; position: relative; + /* one-swiper */ .one_swiper_wrap { height: 140px; @@ -1930,11 +1934,11 @@ } .dept { - flex: 5; + flex: 8; } .time { - flex: 4; + flex: 5; } } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java index 0c6509f..8eff348 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java @@ -1305,7 +1305,7 @@ .set(Notices::getInfo,"宸叉嫆缁�") .eq(Notices::getObjId,notices.getObjId()) .eq(Notices::getObjType,notices.getObjType()) - .eq(Notices::getReaded,Constants.ZERO) +// .eq(Notices::getReaded,Constants.ZERO) .ne(Notices::getId,notices.getId()) ); } -- Gitblit v1.9.3