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