From 73af3ed9fbcc616cdecc739fc4307163c19c5764 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 07 六月 2024 14:35:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
admin/src/components/business/OperaVisitsDesWindow.vue | 526
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/ProjectsServiceImpl.java | 2
h5/pages/staff/meetingCalendar.vue | 789 +
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java | 53
h5/pages/staff/vehicle/sendACar.vue | 22
admin/src/views/business/retention.vue | 241
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java | 87
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/MeetingApi.java | 1
h5/pages/applicationRecord/applicationRecord.vue | 8
h5/pages/laborApplication/laborApplication.vue | 1640 ++--
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java | 40
admin/src/views/task/visReportDetail.vue | 594 +
server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java | 9
h5/api/visitor.js | 7
h5/api/staff.js | 73
admin/src/components/common/CommonHeader.vue | 10
h5/pages/staff/memberSel.vue | 6
admin/src/api/index.js | 3
h5/pages.json | 266
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java | 2
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveParam.java | 7
h5/pages/staff/meetingSubOrder.vue | 183
h5/pages/visitorApproval/visitorApproval.vue | 336
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 2
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java | 7
h5/pages/staff/index.vue | 24
h5/pages/driver/reservedDetail.vue | 666
server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java | 82
admin/src/views/business/approvalReport.vue | 523
h5/pages/visitorApplication/visitorApplication.vue | 2610 +++---
admin/src/views/index.vue | 95
admin/src/views/business/visitorSources.vue | 188
h5/pages/staff/task/index.vue | 323
h5/n_pages/applicationRecord/applicationRecord.vue | 822 +-
admin/src/views/platform/set/index.vue | 112
h5/pages/staff/snapshot.vue | 85
admin/src/views/platform/index.vue | 46
h5/pages/driver/reservedRecord.vue | 311
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java | 2
h5/pages/staff/vehicle/sendACarDetail.vue | 271
admin/src/api/business/index.js | 14
admin/src/views/task/dangetDetail.vue | 846 ++
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java | 106
h5/pages/appointmentDetails/appointmentDetails.vue | 12
admin/src/views/business/reportRecord.vue | 145
h5/pages/staff/meetingSub.vue | 23
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java | 2
admin/src/views/business/strandedPersonnel.vue | 205
admin/src/views/business/approvalConfiguration.vue | 554
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java | 9
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java | 2
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java | 10
h5/pages/staff/task/visitorApprove.vue | 806 +
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java | 10
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java | 325
server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingListResponse.java | 2
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/ApproveTemplCloudController.java | 12
server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java | 10
admin/src/api/business/approve.js | 36
admin/src/components/business/OperaCarUseBookWindow.vue | 17
h5/n_pages/visitorApplication/visitorApplication.vue | 2511 +++---
h5/pages/visitorSubGuide/index.vue | 34
h5/pages/staff/meetingManager.vue | 301
admin/src/layouts/AppLayout.vue | 2
admin/src/views/business/carEvent.vue | 306
admin/src/views/task/visSubDetail.vue | 647 +
h5/pages/staff/visitorReport.vue | 14
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/InternalHomeVO.java | 11
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java | 7
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomTimeServiceImpl.java | 9
h5/pages/staff/task/visitorReport.vue | 517 +
server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java | 38
admin/src/api/platform/index.js | 26
admin/src/views/operation/serviceCar/apprConfig.vue | 603 +
h5/n_pages/visitorApproval/visitorApproval.vue | 722
/dev/null | 417 -
server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java | 38
admin/src/views/task/index.vue | 230
h5/pages/notice/notice.vue | 2
h5/pages/staff/meetingDetail.vue | 392
server/system_service/src/main/java/com/doumee/service/system/NoticesService.java | 6
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java | 2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 22
h5/pages/staff/task/vDangetAppr.vue | 1201 +++
h5/api/meeting.js | 31
85 files changed, 14,420 insertions(+), 7,889 deletions(-)
diff --git a/admin/src/api/business/approve.js b/admin/src/api/business/approve.js
index 6efee93..4c96cf1 100644
--- a/admin/src/api/business/approve.js
+++ b/admin/src/api/business/approve.js
@@ -1,8 +1,40 @@
import request from '../../utils/request'
-
// 鍒涘缓
export function approveDo (data) {
return request.post('/visitsAdmin/cloudService/business/approve/approved', data)
}
-
+// 浠诲姟涓績 鍒楄〃 澶撮儴
+export function taskCenterHead (data) {
+ return request.get('/visitsAdmin/cloudService/business/staging/taskCenterHead', {
+ params: {
+ ...data
+ }
+ })
+}
+// 浠诲姟涓績 鍒楄〃
+export function taskCenterPage (data) {
+ return request.post('/visitsAdmin/cloudService/business/staging/taskPage', data)
+}
+// 璁垮璁板綍璇︽儏
+export function getVisitedDetail (data) {
+ return request.get('/visitsAdmin/cloudService/web/visitor/detail', {
+ params: { ...data }
+ })
+}
+// 璁垮鎶ュ璇︽儏
+export function getVisitedReDetail (data) {
+ return request.get('visitsAdmin/cloudService/business/visits/' + data.id)
+}
+// 闅愭偅璇︽儏
+export function hiddenDangerDetail (id) {
+ return request.get('/visitsAdmin/cloudService/business/hiddenDanger/' + id)
+}
+// 浠诲姟涓績 闅愭偅杞氦
+export function transferHiddenDanger (data) {
+ return request.post('/visitsAdmin/cloudService/business/hiddenDanger/transferHiddenDanger', data)
+}
+// 浠诲姟涓績 澶勭悊
+export function dealHiddenDanger (data) {
+ return request.post('/visitsAdmin/cloudService/business/hiddenDanger/dealHiddenDanger', data)
+}
diff --git a/admin/src/api/business/index.js b/admin/src/api/business/index.js
new file mode 100644
index 0000000..9527106
--- /dev/null
+++ b/admin/src/api/business/index.js
@@ -0,0 +1,14 @@
+import request from '../../utils/request'
+export * from './approve'
+
+// 瀹℃壒妯℃澘淇℃伅 鍙戝竷
+export function approveTemplSave (data) {
+ return request.post('/visitsAdmin/cloudService/business/approveTempl/save', data, {
+ trim: true
+ })
+}
+// 瀹℃壒妯℃澘淇℃伅 璇︽儏
+export function approveTemplByType (type) {
+ return request.get(`/visitsAdmin/cloudService/business/approveTempl/${type}`)
+}
+export const uploadUrl = 'visitsAdmin/cloudService/public/upload'
diff --git a/admin/src/api/index.js b/admin/src/api/index.js
index e068dbd..22239b3 100644
--- a/admin/src/api/index.js
+++ b/admin/src/api/index.js
@@ -1 +1,4 @@
export const uploadFile = '/admin_interface/visitsAdmin/cloudService/public/upload'
+
+export * from './business/index'
+export * from './platform'
diff --git a/admin/src/api/platform/index.js b/admin/src/api/platform/index.js
new file mode 100644
index 0000000..c399bb2
--- /dev/null
+++ b/admin/src/api/platform/index.js
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 鏈堝彴鍒楄〃
+export function getPlatform (data) {
+ return request.post('/visitsAdmin/cloudService/business/platform/page', data, {
+ trim: true
+ })
+}
+// 鏈堝彴鍒楄〃 缂栬緫
+export function PlatformEdit (data) {
+ return request.post('/visitsAdmin/cloudService/business/platform/updateById', data, {
+ trim: true
+ })
+}
+// 鏈堝彴鍒楄〃 鍒犻櫎
+export function PlatformDel (id) {
+ return request.get('/visitsAdmin/cloudService/business/platform/delete/' + id, {
+ trim: true
+ })
+}
+// 鏈堝彴璋冨害涓績 鍒楄〃
+export function getPlatformJob (data) {
+ return request.post('/visitsAdmin/cloudService/business/platformJob/page', data, {
+ trim: true
+ })
+}
diff --git a/admin/src/components/business/OperaCarUseBookWindow.vue b/admin/src/components/business/OperaCarUseBookWindow.vue
index 0e55630..b92af71 100644
--- a/admin/src/components/business/OperaCarUseBookWindow.vue
+++ b/admin/src/components/business/OperaCarUseBookWindow.vue
@@ -298,14 +298,6 @@
</script>
<style lang="scss" scoped>
-.side_title{
- font-weight: 600;
- font-size: 18px;
- color: #111111;
- margin-bottom: 20px;
- margin-left: 20px;
- margin-top: 20px;
-}
.upload_box {
width: 84px;
height: 84px;
@@ -324,7 +316,14 @@
font-size: 12px;
}
}
-
+.side_title{
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
.modal_wrap {
display: flex;
height: 100%;
diff --git a/admin/src/components/business/OperaVisitsDesWindow.vue b/admin/src/components/business/OperaVisitsDesWindow.vue
index 07d7420..bf9674b 100644
--- a/admin/src/components/business/OperaVisitsDesWindow.vue
+++ b/admin/src/components/business/OperaVisitsDesWindow.vue
@@ -1,173 +1,191 @@
<template>
- <GlobalWindow
- :title="title"
- width="70%"
- :visible.sync="visible"
- append-to-body
- :confirm-working="isWorking"
- @confirm="confirm"
- >
- <div class="list">
- <div class="list_item">
- <div class="list_item_label">鎷滆淇℃伅</div>
- <div class="list_item_val" v-if="info" style="display: inline-block">
- <div class="list_item_val_item">鎷滆瀵规柟锛歿{info.receptMemberName}} - {{info.receptMemberDepartment}}</div>
- <div class="list_item_val_item">棰勭害鏃堕棿锛歿{info.starttime}} 鑷� {{info.endtime}}</div>
- <div class="list_item_val_item" v-if="info.inDate && info.outDate">绛惧埌鏃堕棿锛歿{info.inDate}} 鑷� {{info.outDate}}</div>
- <div class="list_item_val_item" v-else>绛惧埌鏃堕棿锛�-</div>
- <div class="list_item_val_item">鎷滆浜嬬敱锛歿{info.reason}}</div>
- <div class="list_item_val_item">鐢宠浜哄憳锛歿{info.name}} {{info.companyName}}</div>
- <div class="list_item_val_item">鐢宠闂ㄧ锛歿{info.deviceRoleList ? info.deviceRoleList.map(item => item.name).join(' | ') : '-'}}</div>
- <div class="list_item_val_item">鍒涘缓鏃堕棿锛歿{info.createDate}}</div>
- </div>
- <div class="list_item_val" v-if="info" style="display: inline-block;float: right">
- <div class="list_item_val_item" id="qrcode2" ref="qrcode2"></div>
- </div>
- </div>
- <div class="list_item">
- <div class="list_item_label">璁垮淇℃伅</div>
- <div class="list_item_table" v-if="info">
- <el-table
- :data="info.withUserList ? info.withUserList : []"
- border
- :header-cell-style="{background: '#dcdde2', color: 'rgb(51, 51, 51)'}"
- style="width: 100%">
- <el-table-column prop="status" label="鐘舵��" min-width="100px">
- <template slot-scope="{row}">
- <span style="color: rgba(245, 154, 35, 0.996);" v-if="row.status === 0">寰呮彁浜ゅ鎵�</span>
- <span v-if="row.status === 1">瀹℃壒涓�</span>
- <span v-if="row.status === 2">瀹℃牳閫氳繃</span>
- <span style="color: red;" v-if="row.status === 3">瀹℃牳涓嶉�氳繃</span>
- <span v-if="row.status === 4">鍙栨秷</span>
- <span v-if="row.status === 5">棰勭害鎴愬姛</span>
- <span v-if="row.status === 6">棰勭害澶辫触</span>
- <span v-if="row.status === 7">鎷滆涓�</span>
- <span v-if="row.status === 8">宸茬绂�</span>
- <span v-if="row.status === 9">宸插け鏁�</span>
- </template>
- </el-table-column>
- <el-table-column
- width="150"
- label="濮撳悕">
- <template slot-scope="{row}">
- <span>{{row.name}}</span>
- <span style="border-radius: 5px; padding: 2px 5px; box-sizing: border-box; border: 1px solid #0d68ff; color: #0d68ff; margin-left: 5px;" v-if="info.memberId === row.memberId">鐢宠浜�</span>
- </template>
- </el-table-column>
- <el-table-column
- label="鎬у埆">
- <template slot-scope="{row}">
- <span v-if="row.sex === 1">鐢�</span>
- <span v-if="row.sex === 2">濂�</span>
- </template>
- </el-table-column>
- <el-table-column
- prop="birthday"
- label="骞撮緞">
- <template slot-scope="{row}">
- <span>{{getAge(row.birthday)}}</span>
- </template>
- </el-table-column>
- <el-table-column
- width="150"
- prop="phone"
- label="鎵嬫満鍙�">
- </el-table-column>
- <el-table-column
- label="璇佷欢绫诲瀷">
- <template slot-scope="{row}">
- <span v-if="row.idcardType === 0">韬唤璇�</span>
- <span v-if="row.idcardType === 1">娓境璇佷欢</span>
- <span v-if="row.idcardType === 2">鎶ょ収</span>
- </template>
- </el-table-column>
- <el-table-column
- width="160"
- prop="idcardDecode"
- label="韬唤璇佸彿鐮�">
- </el-table-column>
- <el-table-column
- width="150"
- prop="companyName"
- label="缁勭粐">
- </el-table-column>
- <el-table-column
- width="150"
- prop="carNos"
- label="闅忚杞﹁締">
- </el-table-column>
- <el-table-column
- width="150"
- label="璁垮浜岀淮鐮�">
- <template slot-scope="{row}">
- <div :id="`qrcode${row.id}`" :ref="`qrcode${row.id}`"></div>
- </template>
- </el-table-column>
- <el-table-column
- width="150"
- label="浜鸿劯鐓х墖">
- <template slot-scope="{row}">
- <el-image
- v-if="row.faceImg"
- style="width: 100px; height: 100px"
- :src="info.prefixUrl + row.faceImg"
- :preview-src-list="[info.prefixUrl + row.faceImg]">
- </el-image>
- </template>
- </el-table-column>
- <el-table-column
- width="150"
- label="鍋ュ悍璇�">
- <template slot-scope="{row}">
- <el-image
- v-if="row.imgurl"
- style="width: 100px; height: 100px"
- :src="info.prefixUrl + row.imgurl"
- :preview-src-list="[info.prefixUrl + row.imgurl]">
- </el-image>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
-<!-- <div class="list_item">-->
-<!-- <div class="list_item_label">瀹℃壒娴佺▼</div>-->
-<!-- <div class="list_item_status">-->
-<!-- <div class="list_item_status_item" v-for="(item, index) in 3" :key="index">-->
-<!-- <div class="dian"></div>-->
-<!-- <div class="xian"></div>-->
-<!-- <div class="status_info">-->
-<!-- <span class="status_info_a">寮犱笁鎻愪氦鐨勫姵鍔″叆鍘傜敵璇�</span>-->
-<!-- <span class="status_info_b">鐜嬬粡鐞嗭紙宸插悓鎰忥級</span>-->
-<!-- <div class="status_info_c">鏉ヨ鍙傝宸ュ巶锛屾湜棰嗗鎵瑰噯</div>-->
-<!-- </div>-->
-<!-- </div>-->
-<!-- </div>-->
-<!-- </div>-->
+ <GlobalWindow
+ :title="title"
+ width="70%"
+ :visible.sync="visible"
+ append-to-body
+ :confirm-working="isWorking"
+ @confirm="confirm"
+ >
+ <div class="list">
+ <div class="list_item">
+ <div class="list_item_label">鎷滆淇℃伅</div>
+ <div class="list_item_val" v-if="info" style="display: inline-block">
+ <div class="list_item_val_item">
+ 鎷滆瀵规柟锛歿{ info.receptMemberName }} -
+ {{ info.receptMemberDepartment }}
+ </div>
+ <div class="list_item_val_item">
+ 棰勭害鏃堕棿锛歿{ info.starttime }} 鑷� {{ info.endtime }}
+ </div>
+ <div class="list_item_val_item" v-if="info.inDate && info.outDate">
+ 绛惧埌鏃堕棿锛歿{ info.inDate }} 鑷� {{ info.outDate }}
+ </div>
+ <div class="list_item_val_item" v-else>绛惧埌鏃堕棿锛�-</div>
+ <div class="list_item_val_item">鎷滆浜嬬敱锛歿{ info.reason }}</div>
+ <div class="list_item_val_item">
+ 鐢宠浜哄憳锛歿{ info.name }} {{ info.companyName }}
+ </div>
+ <div class="list_item_val_item">
+ 鐢宠闂ㄧ锛歿{
+ info.deviceRoleList
+ ? info.deviceRoleList.map((item) => item.name).join(" | ")
+ : "-"
+ }}
+ </div>
+ <div class="list_item_val_item">鍒涘缓鏃堕棿锛歿{ info.createDate }}</div>
</div>
- </GlobalWindow>
+ <div
+ class="list_item_val"
+ v-if="info"
+ style="display: inline-block; float: right"
+ >
+ <div class="list_item_val_item" id="qrcode2" ref="qrcode2"></div>
+ </div>
+ </div>
+ <div class="list_item">
+ <div class="list_item_label">璁垮淇℃伅</div>
+ <div class="list_item_table" v-if="info">
+ <el-table
+ :data="info.withUserList ? info.withUserList : []"
+ border
+ :header-cell-style="{
+ background: '#dcdde2',
+ color: 'rgb(51, 51, 51)',
+ }"
+ style="width: 100%"
+ >
+ <el-table-column prop="status" label="鐘舵��" min-width="100px">
+ <template slot-scope="{ row }">
+ <span
+ style="color: rgba(245, 154, 35, 0.996)"
+ v-if="row.status === 0"
+ >寰呮彁浜ゅ鎵�</span
+ >
+ <span v-if="row.status === 1">瀹℃壒涓�</span>
+ <span v-if="row.status === 2">瀹℃牳閫氳繃</span>
+ <span style="color: red" v-if="row.status === 3"
+ >瀹℃牳涓嶉�氳繃</span
+ >
+ <span v-if="row.status === 4">鍙栨秷</span>
+ <span v-if="row.status === 5">棰勭害鎴愬姛</span>
+ <span v-if="row.status === 6">棰勭害澶辫触</span>
+ <span v-if="row.status === 7">鎷滆涓�</span>
+ <span v-if="row.status === 8">宸茬绂�</span>
+ <span v-if="row.status === 9">宸插け鏁�</span>
+ </template>
+ </el-table-column>
+ <el-table-column width="150" label="濮撳悕">
+ <template slot-scope="{ row }">
+ <span>{{ row.name }}</span>
+ <span
+ style="
+ border-radius: 5px;
+ padding: 2px 5px;
+ box-sizing: border-box;
+ border: 1px solid #0d68ff;
+ color: #0d68ff;
+ margin-left: 5px;
+ "
+ v-if="info.memberId === row.memberId"
+ >鐢宠浜�</span
+ >
+ </template>
+ </el-table-column>
+ <el-table-column label="鎬у埆">
+ <template slot-scope="{ row }">
+ <span v-if="row.sex === 1">鐢�</span>
+ <span v-if="row.sex === 2">濂�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="birthday" label="骞撮緞">
+ <template slot-scope="{ row }">
+ <span>{{ getAge(row.birthday) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column width="150" prop="phone" label="鎵嬫満鍙�">
+ </el-table-column>
+ <el-table-column label="璇佷欢绫诲瀷">
+ <template slot-scope="{ row }">
+ <span v-if="row.idcardType === 0">韬唤璇�</span>
+ <span v-if="row.idcardType === 1">娓境璇佷欢</span>
+ <span v-if="row.idcardType === 2">鎶ょ収</span>
+ </template>
+ </el-table-column>
+ <el-table-column width="160" prop="idcardDecode" label="韬唤璇佸彿鐮�">
+ </el-table-column>
+ <el-table-column width="150" prop="companyName" label="缁勭粐">
+ </el-table-column>
+ <el-table-column width="150" prop="carNos" label="闅忚杞﹁締">
+ </el-table-column>
+ <el-table-column width="150" label="璁垮浜岀淮鐮�">
+ <template slot-scope="{ row }">
+ <div :id="`qrcode${row.id}`" :ref="`qrcode${row.id}`"></div>
+ </template>
+ </el-table-column>
+ <el-table-column width="150" label="浜鸿劯鐓х墖">
+ <template slot-scope="{ row }">
+ <el-image
+ v-if="row.faceImg"
+ style="width: 100px; height: 100px"
+ :src="info.prefixUrl + row.faceImg"
+ :preview-src-list="[info.prefixUrl + row.faceImg]"
+ >
+ </el-image>
+ </template>
+ </el-table-column>
+ <el-table-column width="150" label="鍋ュ悍璇�">
+ <template slot-scope="{ row }">
+ <el-image
+ v-if="row.imgurl"
+ style="width: 100px; height: 100px"
+ :src="info.prefixUrl + row.imgurl"
+ :preview-src-list="[info.prefixUrl + row.imgurl]"
+ >
+ </el-image>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ <!-- <div class="list_item">-->
+ <!-- <div class="list_item_label">瀹℃壒娴佺▼</div>-->
+ <!-- <div class="list_item_status">-->
+ <!-- <div class="list_item_status_item" v-for="(item, index) in 3" :key="index">-->
+ <!-- <div class="dian"></div>-->
+ <!-- <div class="xian"></div>-->
+ <!-- <div class="status_info">-->
+ <!-- <span class="status_info_a">寮犱笁鎻愪氦鐨勫姵鍔″湪鍥敵璇�</span>-->
+ <!-- <span class="status_info_b">鐜嬬粡鐞嗭紙宸插悓鎰忥級</span>-->
+ <!-- <div class="status_info_c">鏉ヨ鍙傝宸ュ巶锛屾湜棰嗗鎵瑰噯</div>-->
+ <!-- </div>-->
+ <!-- </div>-->
+ <!-- </div>-->
+ <!-- </div>-->
+ </div>
+ </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { queryById } from '@/api/business/visits'
-import QRCode from "qrcodejs2";
+import QRCode from "qrcodejs2"
export default {
name: 'OperaVisitsWindow',
extends: BaseOpera,
components: { GlobalWindow },
- data () {
+ data() {
return {
list: [],
info: null,
- innerVisible:false
+ innerVisible: false
}
},
- created () {
+ created() {
},
methods: {
- getAge (val) {
+ getAge(val) {
if (!val) return ''
const currentYear = new Date().getFullYear() // 褰撳墠鐨勫勾浠�
const calculationYear = new Date(val).getFullYear() // 璁$畻鐨勫勾浠�
@@ -180,9 +198,9 @@
return calculationAge - 1
}
},
- crateQrcodeShow (div,qrcode1) {
- if(qrcode1 ==null ||qrcode1 ==''){
- return;
+ crateQrcodeShow(div, qrcode1) {
+ if (qrcode1 == null || qrcode1 == '') {
+ return
}
this.qr = new QRCode(div, {
width: 90,
@@ -191,7 +209,7 @@
})
},
- open (title, id) {
+ open(title, id) {
this.title = title
this.visible = true
queryById(id)
@@ -201,10 +219,10 @@
this.$nextTick(() => {
// this.$refs.qrcode2.innerHTML = ''
// this.crateQrcodeShow('qrcode2',res.qrcode)
- if(this.info.withUserList ){
+ if (this.info.withUserList) {
this.info.withUserList.forEach(row => {
- this.$refs['qrcode'+row.id].innerHTML = ''
- this.crateQrcodeShow('qrcode'+row.id,row.qrcode)
+ this.$refs['qrcode' + row.id].innerHTML = ''
+ this.crateQrcodeShow('qrcode' + row.id, row.qrcode)
})
}
})
@@ -214,103 +232,103 @@
}
</script>
<style>
- .el-image-viewer__wrapper {
- z-index: 3000 !important;
- }
+.el-image-viewer__wrapper {
+ z-index: 3000 !important;
+}
</style>
<style lang="scss" scoped>
- .list {
- width: 100%;
- display: flex;
- flex-direction: column;
- .list_item {
- width: 100%;
- margin-bottom: 30px;
- &:last-child {
- margin-bottom: 0 !important;
- }
- .list_item_label {
- font-size: 18px;
- font-weight: 600;
- color: #000000;
- margin-bottom: 15px;
- }
- .list_item_info {
- font-size: 14px;
- color: #222222;
- margin-bottom: 10px;
- }
- .list_item_status {
- width: 100%;
- display: flex;
- flex-direction: column;
- .list_item_status_item {
- width: 100%;
- max-height: 100px;
- position: relative;
- margin-bottom: 30px;
- .dian {
- width: 15px;
- height: 15px;
- border-radius: 50%;
- background: #ffb447;
- position: absolute;
- left: 0;
- top: 50%;
- transform: translate(0, -50%);
- }
- .xian {
- width: 1px;
- height: calc(100% + 30px);
- background: #ffb447;
- position: absolute;
- top: 50%;
- left: 7px;
- transform: translate(-50%, 0);
- }
- .status_info {
- /*width: 100%;*/
- height: 100%;
- display: flex;
- flex-direction: column;
- margin-left: 30px;
- box-sizing: border-box;
- .status_info_a {
- font-size: 16px;
- color: black;
- margin-bottom: 10px;
- }
- .status_info_b {
- font-size: 13px;
- color: #666666;
- margin-bottom: 10px;
- }
- .status_info_c {
- padding: 5px 10px;
- background: #ececec;
- font-size: 13px;
- color: black;
- border-radius: 5px;
- box-sizing: border-box;
- }
- }
- }
- }
- .list_item_val {
- width: 100%;
- margin-bottom: 15px;
- &:last-child {
- margin-bottom: 0 !important;
- }
- .list_item_val_item {
- font-size: 14px;
- color: #222222;
- margin-bottom: 5px;
- &:last-child {
- margin-bottom: 0 !important;
- }
- }
- }
- }
+.list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .list_item {
+ width: 100%;
+ margin-bottom: 30px;
+ &:last-child {
+ margin-bottom: 0 !important;
}
+ .list_item_label {
+ font-size: 18px;
+ font-weight: 600;
+ color: #000000;
+ margin-bottom: 15px;
+ }
+ .list_item_info {
+ font-size: 14px;
+ color: #222222;
+ margin-bottom: 10px;
+ }
+ .list_item_status {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .list_item_status_item {
+ width: 100%;
+ max-height: 100px;
+ position: relative;
+ margin-bottom: 30px;
+ .dian {
+ width: 15px;
+ height: 15px;
+ border-radius: 50%;
+ background: #ffb447;
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translate(0, -50%);
+ }
+ .xian {
+ width: 1px;
+ height: calc(100% + 30px);
+ background: #ffb447;
+ position: absolute;
+ top: 50%;
+ left: 7px;
+ transform: translate(-50%, 0);
+ }
+ .status_info {
+ /*width: 100%;*/
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ margin-left: 30px;
+ box-sizing: border-box;
+ .status_info_a {
+ font-size: 16px;
+ color: black;
+ margin-bottom: 10px;
+ }
+ .status_info_b {
+ font-size: 13px;
+ color: #666666;
+ margin-bottom: 10px;
+ }
+ .status_info_c {
+ padding: 5px 10px;
+ background: #ececec;
+ font-size: 13px;
+ color: black;
+ border-radius: 5px;
+ box-sizing: border-box;
+ }
+ }
+ }
+ }
+ .list_item_val {
+ width: 100%;
+ margin-bottom: 15px;
+ &:last-child {
+ margin-bottom: 0 !important;
+ }
+ .list_item_val_item {
+ font-size: 14px;
+ color: #222222;
+ margin-bottom: 5px;
+ &:last-child {
+ margin-bottom: 0 !important;
+ }
+ }
+ }
+ }
+}
</style>
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index 7855c29..fcf9f75 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -205,11 +205,11 @@
justify-content: space-between;
.logo {
- background: url("../../assets/images/top_ic_chilun@2x.png") no-repeat;
+ /* background: url("../../assets/images/top_ic_chilun@2x.png") no-repeat; */
box-sizing: border-box;
min-width: 280px;
- height: 70px;
- padding: 17px 30px;
+ height: 56px;
+ padding: 10px 30px;
// flex-shrink: 0;
line-height: 36px;
font-size: 22px;
@@ -225,13 +225,13 @@
.user {
width: 712px;
box-sizing: border-box;
- height: 70px;
+ height: 56px;
padding-right: 25px;
background: url("../../assets/images/top_ic_bolang@2x.png") no-repeat;
flex-shrink: 0;
text-align: right;
.el-dropdown {
- top: 10px;
+ top: 2px;
color: #fff;
}
img {
diff --git a/admin/src/layouts/AppLayout.vue b/admin/src/layouts/AppLayout.vue
index d4c0be8..0072133 100644
--- a/admin/src/layouts/AppLayout.vue
+++ b/admin/src/layouts/AppLayout.vue
@@ -1,7 +1,7 @@
<template>
<div>
<CommonHeader />
- <div style="height:10px; background: #fff"></div>
+ <!-- <div style="height:10px; background: #fff"></div> -->
<el-container class="app-layout">
<el-aside :class="{collapse:menuData.collapse}">
<Menu/>
diff --git a/admin/src/views/business/approvalConfiguration.vue b/admin/src/views/business/approvalConfiguration.vue
index f7f134f..622d55f 100644
--- a/admin/src/views/business/approvalConfiguration.vue
+++ b/admin/src/views/business/approvalConfiguration.vue
@@ -1,16 +1,17 @@
<template>
<TableLayout>
<template v-slot:table-wrap>
+ <el-tabs v-model="activeType" @tab-click="handleClick">
+ <el-tab-pane label="鏅�氳瀹�" name="0"></el-tab-pane>
+ <el-tab-pane label="鏂藉伐璁垮" name="1"></el-tab-pane>
+ </el-tabs>
<div class="config">
<div class="config_list">
<div class="config_list_head">
<span>閰嶇疆娴佺▼</span>
- <el-button style="background: #435ebe" type="primary"
- >鍙戝竷</el-button
- >
</div>
<div class="config_content">
- <div class="item active">
+ <div class="item">
<div class="head">鍙戣捣浜�</div>
<div class="content">璁垮</div>
</div>
@@ -18,55 +19,41 @@
<div class="line"></div>
<img src="@/assets/images/peizhi_ar@2x.png" alt="" />
</div>
- <template v-for="(item, index) in apprList">
+ <div v-for="(item, index) in apprList" :key="index">
<div
class="item yellow"
- :class="{ active: item.active }"
+ :class="{
+ active: activeIndex == index,
+ blue: item.type == '1',
+ }"
@click="flowClick(index)"
- :key="index"
>
- <div class="head">瀹℃壒浜�</div>
+ <div class="head">{{ item.remark }}</div>
<div class="content">
- <div>琚浜�</div>
- <i class="el-icon-arrow-right"></i>
- </div>
- </div>
- <div class="arrows" :key="index">
- <div class="line"></div>
- <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
- <i
- v-if="apprList.length - 1 === index"
- @click="handleAddAppr()"
- class="el-icon-circle-plus add"
- ></i>
- </div>
- </template>
- <template v-if="false">
- <div
- class="item yellow"
- :class="{ active: activeSel === 'one' }"
- @click="flowClick('one')"
- >
- <div class="head">瀹℃壒浜�</div>
- <div class="content">
- <div>鏉庣惓-缁煎悎绉�</div>
+ <div v-if="item.objIds && item.objIds.length === 1 ">
+ <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span>
+ <span v-if="item.approveType == 0"> 鎴栫</span>
+ <span v-if="item.approveType == 1"> 浼氱</span>
+ </div>
+ <div v-else-if="item.objIds && item.objIds.length > 1">
+ <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}绛�</span>
+ <span v-if="item.approveType == 0"> 鎴栫</span>
+ <span v-if="item.approveType == 1"> 浼氱</span>
+ </div>
+ <div v-else>璇烽�夋嫨</div>
<i class="el-icon-arrow-right"></i>
</div>
</div>
<div class="arrows">
- <div class="line"></div>
- <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
- </div>
- </template>
- <div
- class="item blue"
- :class="{ active: activeSel === 'two' }"
- @click="flowClick('two')"
- >
- <div class="head">鎶勯�佷汉</div>
- <div class="content">
- <div>璇烽�夋嫨</div>
- <i class="el-icon-arrow-right"></i>
+ <template v-if="apprList.length - 1 !== index">
+ <div class="line"></div>
+ <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
+ </template>
+ <i
+ v-if="apprList.length - 2 === index"
+ @click="handleAddAppr()"
+ class="el-icon-circle-plus add"
+ ></i>
</div>
</div>
</div>
@@ -74,56 +61,97 @@
<div class="config_data">
<div class="config_data_item">
<div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
- <el-radio-group v-model="radio">
+ <div class="df_ac mb10">
+ <div>瀹℃壒鑺傜偣鍚嶇О</div>
+ <el-input
+ class="w200 ml10"
+ v-model="apprList[activeIndex].remark"
+ ></el-input>
+ </div>
+ <!-- 鎶勯�佷汉 -->
+ <template v-if="apprList[activeIndex].type == '1'">
+ <div class="config_data_item_reviewed_content">
+ <div
+ v-for="mem in apprList[activeIndex].objIds"
+ :key="mem.id"
+ class="config_data_item_reviewed_content_item"
+ >
+ <span>{{ mem.name }}</span>
+ <i class="el-icon-close"></i>
+ </div>
+ <span class="add" @click="selStaff">+娣诲姞</span>
+ </div>
+ </template>
+ <el-radio-group
+ v-if="apprList[activeIndex].type == '0'"
+ v-model="apprList[activeIndex].memberType"
+ >
<el-radio :label="0">琚浜�</el-radio>
<el-radio :label="1">鎸囧畾浜哄憳</el-radio>
<el-radio :label="2">閮ㄩ棬涓荤</el-radio>
</el-radio-group>
- <div class="config_data_item_reviewed" v-if="radio === 1">
+ <div
+ class="config_data_item_reviewed"
+ v-if="apprList[activeIndex].memberType == 1"
+ >
<div class="config_data_item_reviewed_label">
<span>鎸囧畾瀹℃牳浜�</span>
<span>涓嶈秴杩�20浜�</span>
</div>
<div class="config_data_item_reviewed_content">
- <div class="config_data_item_reviewed_content_item">
- <span>鏍撳瓙鍝�</span>
- <i class="el-icon-close"></i>
+ <div
+ v-for="mem,memIndex in apprList[activeIndex].objIds"
+ :key="mem.id"
+ class="config_data_item_reviewed_content_item"
+ >
+ <span>{{ mem.name }}</span>
+ <i class="el-icon-close" @click="memDel(memIndex)"></i>
</div>
<span class="add" @click="selStaff">+娣诲姞</span>
</div>
</div>
- <div class="config_data_item_reviewed" v-if="radio === 2">
+ <div
+ class="config_data_item_reviewed"
+ v-if="apprList[activeIndex].memberType == 2"
+ >
<div class="config_data_item_reviewed_label">
<span>閮ㄩ棬涓荤</span>
</div>
<div class="config_data_item_reviewed_r">
<span>琚浜虹殑</span>
<el-select
- v-model="value"
+ v-model="apprList[activeIndex].level"
placeholder="璇烽�夋嫨"
style="margin: 0 20px 0 10px"
>
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
+ <el-option label="鐩存帴涓荤" :value="0" />
+ <el-option label="浜岀骇涓荤" :value="1" />
+ <el-option label="涓夌骇涓荤" :value="2" />
+ <el-option label="鍥涚骇涓荤" :value="4" />
</el-select>
- <el-checkbox v-model="checked"
+ <el-checkbox
+ v-model="apprList[activeIndex].noleaderOpt"
+ :true-label="1"
+ :false-label="0"
>鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
>
</div>
</div>
</div>
- <div class="config_data_item" v-if="radio !== 0">
+ <div
+ class="config_data_item"
+ v-if="
+ (apprList[activeIndex].memberType == 1 ||
+ apprList[activeIndex].memberType == 2) &&
+ apprList[activeIndex].type == '0'
+ "
+ >
<div class="config_data_item_label">
瀹℃壒鏂瑰紡
<span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
</div>
<el-radio-group
- v-model="radio1"
+ v-model="apprList[activeIndex].approveType"
style="display: flex; flex-direction: column"
>
<el-radio :label="0" style="margin-bottom: 20px"
@@ -132,56 +160,68 @@
<el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
</el-radio-group>
</div>
- <div class="df_ac">
- <span class="mr10"><strong>鍏佽淇敼鐢宠椤�</strong></span>
- <el-switch v-model="param.aa" active-value="1" inactive-value="0">
- </el-switch>
- </div>
- <div class="df_ac mt10">
- <span class="mr20">閫夋嫨淇敼椤�</span>
- <el-select
- v-model="param.list"
- collapse-tags
- multiple
- placeholder="璇烽�夋嫨,澶氶��"
- >
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </div>
- <div class="config_data_submit" v-if="radio !== 0">
- <el-button style="background: #435ebe" type="primary"
+ <div class="config_data_submit">
+ <el-button
+ @click="onSubmit"
+ style="background: #435ebe"
+ type="primary"
>淇濆瓨閰嶇疆椤�</el-button
+ >
+ <el-button
+ v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
+ type="danger"
+ plain
+ @click="handleDel"
+ >鍒犻櫎鑺傜偣</el-button
>
</div>
</div>
</div>
</template>
<!-- -->
- <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="800px">
- <tree-transfer
- v-model="param.menuIds"
- :title="['鏈��', '宸查��']"
- :from_data="fromData"
- :to_data="selData"
- :defaultProps="{ label: 'label' }"
- mode="transfer"
- height="500px"
- filter
- openAll
- ref="treeTransfer"
- >
- </tree-transfer>
+ <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
+ <div class="staff_modal">
+ <div class="left">
+ <div
+ style="
+ width: 100%;
+ height: 50px;
+ background: rgba(242, 242, 242, 1);
+ line-height: 50px;
+ text-align: center;
+ font-size: 14px;
+ "
+ >
+ 浼佷笟缁勭粐鏋舵瀯
+ </div>
+ <div style="width: 100%; height: 100%; overflow-y: scroll">
+ <Tree
+ :list="companyTree"
+ :defaultProps="{
+ name: 'name',
+ status: 'fsStatus',
+ children: 'childList',
+ id: 'id',
+ }"
+ @callback="callback"
+ />
+ </div>
+ </div>
+ <el-transfer
+ filterable
+ :title="['鏈��', '宸查��']"
+ openAll
+ :props="{ label: 'name', key: 'keyTemp' }"
+ filter-placeholder="鎼滅储鍛樺伐"
+ v-model="searchForm.objIds"
+ :data="memberList"
+ class="transfer"
+ >
+ </el-transfer>
+ </div>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="isShowTransfer = false"
- >纭� 瀹�</el-button
- >
+ <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
</span>
</el-dialog>
</TableLayout>
@@ -189,97 +229,193 @@
<script>
import TableLayout from '@/layouts/TableLayout'
-import treeTransfer from 'el-tree-transfer'
+// import treeTransfer from 'el-tree-transfer'
+import Tree from '@/components/common/Tree'
+import { approveTemplSave, approveTemplByType } from '@/api'
+import { fetchList } from '@/api/business/company'
+import { fetchList as memberListPost } from '@/api/business/member'
export default {
name: 'config',
components: {
TableLayout,
- treeTransfer
+ Tree
},
data () {
return {
+ activeType: '0',
apprList: [
- { name: '', active: false },
- { name: '', active: false }
+ { remark: '瀹℃壒浜�', active: false, type: '0', objIds: [] },
+ { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
],
-
- value: '',
- radio: 0,
- radio1: 0,
- checked: '',
+ activeIndex: 0,
param: {},
+ searchForm: {},
isShowTransfer: false,
- fromData: [
- {
- id: '1',
- pid: 0,
- label: '涓�绾� 1',
- children: [
- {
- id: '1-1',
- pid: '1',
- label: '浜岀骇 1-1',
- disabled: true,
- children: []
- },
- {
- id: '1-2',
- pid: '1',
- label: '浜岀骇 1-2',
- children: [
- {
- id: '1-2-1',
- pid: '1-2',
- children: [],
- label: '浜岀骇 1-2-1'
- },
- {
- id: '1-2-2',
- pid: '1-2',
- children: [],
- label: '浜岀骇 1-2-2'
- }
- ]
- }
- ]
- }
- ],
- options: [{
- value: '閫夐」1',
- label: '榛勯噾绯�'
- }, {
- value: '閫夐」2',
- label: '鍙岀毊濂�'
- }, {
- value: '閫夐」3',
- label: '铓典粩鐓�'
- }, {
- value: '閫夐」4',
- label: '榫欓』闈�'
- }, {
- value: '閫夐」5',
- label: '鍖椾含鐑ら腑'
- }],
- selData: []
+ memberList: [],
+ companyTree: []
}
},
+ created () {
+ this.getfindCompanyTreePage()
+ this.initDate()
+ },
methods: {
+ handleClick () {
+ this.apprList = []
+ const arr = [
+ { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] },
+ { remark: '鎶勯�佷汉', active: false, type: 1, objIds: [] }
+ ]
+ this.apprList = [...arr]
+ this.initDate()
+ },
flowClick (i) {
+ this.activeIndex = i
this.apprList.forEach((item, index) => {
if (i === index) {
item.active = true
+ if (item.objIds && item.objIds.length > 0) {
+ const objIds = item.objIds.map(i => {
+ return i.id + '-' + i.name
+ })
+ this.$set(this.searchForm, 'objIds', objIds)
+ } else {
+ this.$set(this.searchForm, 'objIds', [])
+ }
} else {
item.active = false
}
})
},
+ initDate () {
+ const { activeType } = this
+ approveTemplByType(activeType).then(res => {
+ if (res && res.paramList) {
+ const arr = res.paramList || []
+ arr.forEach(item => {
+ if (item.memberList && item.memberList.length > 0) {
+ item.objIds = item.memberList.map(i => {
+ return {
+ id: i.id,
+ name: i.name
+ }
+ })
+ }
+ })
+ this.apprList = arr
+ }
+
+ // console.log(res);
+ })
+ this.flowClick(0)
+ this.$forceUpdate()
+ },
+ onSubmit () {
+ const { apprList, activeType } = this
+ const temp = JSON.parse(JSON.stringify(apprList))
+ temp.forEach((item, index) => {
+ item.level = index + 1
+ if (item.objIds && item.objIds.length > 0) {
+ item.objIds = item.objIds.map(i => i.id).join(',')
+ }
+ })
+ approveTemplSave({
+ type: activeType,
+ paramList: temp
+ }).then(res => {
+ // if (res.code === 200) {
+ this.$message.success('淇濆瓨鎴愬姛')
+ // }
+ })
+ },
+ handleDel () {
+ const { activeIndex } = this
+ this.apprList.splice(activeIndex, 1)
+ this.activeIndex = 0
+ },
handleAddAppr () {
- this.apprList.push({ name: '', active: false })
+ this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] })
+ // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
},
+ // 鑾峰彇缁勭粐鏍�
+ getfindCompanyTreePage () {
+ fetchList()
+ .then(res => {
+ if (res && res.length > 0) {
+ res[0].fsStatus = 1
+ this.companyTree = res
+ // // this.searchForm.erpOrgId = res[0].erpId
+ // this.search()
+ // this.department = this.getDepartmentTree(res)
+ }
+ })
+ },
+ getMemberList () {
+ memberListPost({
+ model: {
+ companyId: this.searchForm.companyId || '',
+ canVisit: '',
+ companyType: 1,
+ erpOrgId: '',
+ hasFace: '',
+ hkStatus: '',
+ includeChild: false,
+ type: 2
+ },
+ page: 1,
+ capacity: 30
+ }).then(res => {
+ this.memberList = res.records || []
+ this.memberList.forEach(item => {
+ item.keyTemp = item.id + '-' + item.name + '-' + item.companyName || ''
+ })
+ // console.log('defaultProps', res)
+ })
+ },
+ callback (row) {
+ console.log(row)
+ this.$set(this.searchForm, 'companyId', row.id)
+ this.$set(this.searchForm, 'erpOrgId', row.erpId)
+ this.getMemberList()
+ },
+ TransferSub () {
+ const { activeIndex } = this
+ if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
+ if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
+ const arr = this.searchForm.objIds.map(ii => {
+ const obj = ii.split('-')
+ return {
+ id: Number(obj[0]),
+ name: obj[1],
+ companyName: obj[2] || ''
+ }
+ })
+ this.apprList.forEach((item, index) => {
+ if (activeIndex === index) {
+ item.objIds = arr
+ }
+ })
+ }
+ this.isShowTransfer = false
+ console.log(this.searchForm.objIds)
+ },
+ memDel (memIndex) {
+ const { activeIndex } = this
+ this.apprList.forEach((item, index) => {
+ if (activeIndex === index) {
+ item.objIds.splice(memIndex, 1)
+ const objIds = item.objIds.map(i => {
+ return i.id + '-' + i.name
+ })
+ this.$set(this.searchForm, 'objIds', objIds)
+ }
+ })
+ },
selStaff () {
this.isShowTransfer = true
+ this.getMemberList()
},
seleItem (i) {
this.list.forEach((item, index) => {
@@ -452,45 +588,61 @@
}
}
}
- .config_data_item_reviewed_content {
- width: 400px;
- margin-top: 10px;
- height: 110px;
- padding: 12px;
- box-sizing: border-box;
- border-radius: 2px;
- border: 1px solid #dfe2e8;
- display: flex;
- align-items: flex-start;
- flex-wrap: wrap;
- .add {
- font-size: 12px;
- font-weight: 400;
- color: #435ebe;
- cursor: pointer;
- margin-top: 3px;
- }
- .config_data_item_reviewed_content_item {
- padding: 3px 5px;
- background: #f4f7fc;
- border-radius: 2px;
- box-sizing: border-box;
- margin-right: 10px;
- margin-bottom: 10px;
- span {
- font-size: 12px;
- font-weight: 400;
- color: #333333;
- }
- i {
- color: #949ba2;
- margin-left: 10px;
- cursor: pointer;
- }
- }
- }
}
}
}
}
+.config_data_item_reviewed_content {
+ width: 400px;
+ margin-top: 10px;
+ height: 110px;
+ padding: 12px;
+ box-sizing: border-box;
+ border-radius: 2px;
+ border: 1px solid #dfe2e8;
+ display: flex;
+ align-items: flex-start;
+ flex-wrap: wrap;
+ .add {
+ font-size: 12px;
+ font-weight: 400;
+ color: #435ebe;
+ cursor: pointer;
+ margin-top: 3px;
+ }
+ .config_data_item_reviewed_content_item {
+ padding: 3px 5px;
+ background: #f4f7fc;
+ border-radius: 2px;
+ box-sizing: border-box;
+ margin-right: 10px;
+ margin-bottom: 10px;
+ span {
+ font-size: 12px;
+ font-weight: 400;
+ color: #333333;
+ }
+ i {
+ color: #949ba2;
+ margin-left: 10px;
+ cursor: pointer;
+ }
+ }
+}
+.staff_modal {
+ display: flex;
+ .left {
+ width: 300px;
+ margin-right: 20px;
+ }
+ .transfer {
+ height: 600px;
+ ::v-deep .el-transfer-panel__body {
+ height: 500px;
+ }
+ ::v-deep .el-transfer-panel__list.is-filterable {
+ height: 480px;
+ }
+ }
+}
</style>
diff --git a/admin/src/views/business/approvalReport.vue b/admin/src/views/business/approvalReport.vue
index d39caa1..81e1aa2 100644
--- a/admin/src/views/business/approvalReport.vue
+++ b/admin/src/views/business/approvalReport.vue
@@ -5,45 +5,51 @@
<div class="config_list">
<div class="config_list_head">
<span>閰嶇疆娴佺▼</span>
- <el-button style="background: #435ebe" type="primary"
- >鍙戝竷</el-button
- >
</div>
<div class="config_content">
- <div class="item active">
+ <div class="item">
<div class="head">鍙戣捣浜�</div>
- <div class="content">鍐呴儴鍛樺伐</div>
+ <div class="content">璁垮</div>
</div>
<div class="arrows">
<div class="line"></div>
<img src="@/assets/images/peizhi_ar@2x.png" alt="" />
</div>
- <template>
+ <div v-for="(item, index) in apprList" :key="index">
<div
class="item yellow"
- :class="{ active: activeSel === 'one' }"
- @click="flowClick('one')"
+ :class="{
+ active: activeIndex == index,
+ blue: item.type == '1',
+ }"
+ @click="flowClick(index)"
>
- <div class="head">瀹℃壒浜�</div>
+ <div class="head">{{ item.remark }}</div>
<div class="content">
- <div>鏉庣惓-缁煎悎绉�</div>
+ <div v-if="item.objIds && item.objIds.length === 1 ">
+ <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span>
+ <span v-if="item.approveType == 0"> 鎴栫</span>
+ <span v-if="item.approveType == 1"> 浼氱</span>
+ </div>
+ <div v-else-if="item.objIds && item.objIds.length > 1">
+ <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}绛�</span>
+ <span v-if="item.approveType == 0"> 鎴栫</span>
+ <span v-if="item.approveType == 1"> 浼氱</span>
+ </div>
+ <div v-else>璇烽�夋嫨</div>
<i class="el-icon-arrow-right"></i>
</div>
</div>
<div class="arrows">
- <div class="line"></div>
- <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
- </div>
- </template>
- <div
- class="item blue"
- :class="{ active: activeSel === 'two' }"
- @click="flowClick('two')"
- >
- <div class="head">鎶勯�佷汉</div>
- <div class="content">
- <div>璇烽�夋嫨</div>
- <i class="el-icon-arrow-right"></i>
+ <template v-if="apprList.length - 1 !== index">
+ <div class="line"></div>
+ <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
+ </template>
+ <i
+ v-if="apprList.length - 2 === index"
+ @click="handleAddAppr()"
+ class="el-icon-circle-plus add"
+ ></i>
</div>
</div>
</div>
@@ -51,56 +57,97 @@
<div class="config_data">
<div class="config_data_item">
<div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
- <el-radio-group v-model="radio">
+ <div class="df_ac mb10">
+ <div>瀹℃壒鑺傜偣鍚嶇О</div>
+ <el-input
+ class="w200 ml10"
+ v-model="apprList[activeIndex].remark"
+ ></el-input>
+ </div>
+ <!-- 鎶勯�佷汉 -->
+ <template v-if="apprList[activeIndex].type == '1'">
+ <div class="config_data_item_reviewed_content">
+ <div
+ v-for="mem in apprList[activeIndex].objIds"
+ :key="mem.id"
+ class="config_data_item_reviewed_content_item"
+ >
+ <span>{{ mem.name }}</span>
+ <i class="el-icon-close"></i>
+ </div>
+ <span class="add" @click="selStaff">+娣诲姞</span>
+ </div>
+ </template>
+ <el-radio-group
+ v-if="apprList[activeIndex].type == '0'"
+ v-model="apprList[activeIndex].memberType"
+ >
<el-radio :label="0">琚浜�</el-radio>
<el-radio :label="1">鎸囧畾浜哄憳</el-radio>
<el-radio :label="2">閮ㄩ棬涓荤</el-radio>
</el-radio-group>
- <div class="config_data_item_reviewed" v-if="radio === 1">
+ <div
+ class="config_data_item_reviewed"
+ v-if="apprList[activeIndex].memberType == 1"
+ >
<div class="config_data_item_reviewed_label">
<span>鎸囧畾瀹℃牳浜�</span>
<span>涓嶈秴杩�20浜�</span>
</div>
<div class="config_data_item_reviewed_content">
- <div class="config_data_item_reviewed_content_item">
- <span>鏍撳瓙鍝�</span>
- <i class="el-icon-close"></i>
+ <div
+ v-for="mem,memIndex in apprList[activeIndex].objIds"
+ :key="mem.id"
+ class="config_data_item_reviewed_content_item"
+ >
+ <span>{{ mem.name }}</span>
+ <i class="el-icon-close" @click="memDel(memIndex)"></i>
</div>
<span class="add" @click="selStaff">+娣诲姞</span>
</div>
</div>
- <div class="config_data_item_reviewed" v-if="radio === 2">
+ <div
+ class="config_data_item_reviewed"
+ v-if="apprList[activeIndex].memberType == 2"
+ >
<div class="config_data_item_reviewed_label">
<span>閮ㄩ棬涓荤</span>
</div>
<div class="config_data_item_reviewed_r">
<span>琚浜虹殑</span>
<el-select
- v-model="value"
+ v-model="apprList[activeIndex].level"
placeholder="璇烽�夋嫨"
style="margin: 0 20px 0 10px"
>
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
+ <el-option label="鐩存帴涓荤" :value="0" />
+ <el-option label="浜岀骇涓荤" :value="1" />
+ <el-option label="涓夌骇涓荤" :value="2" />
+ <el-option label="鍥涚骇涓荤" :value="4" />
</el-select>
- <el-checkbox v-model="checked"
+ <el-checkbox
+ v-model="apprList[activeIndex].noleaderOpt"
+ :true-label="1"
+ :false-label="0"
>鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
>
</div>
</div>
</div>
- <div class="config_data_item" v-if="radio !== 0">
+ <div
+ class="config_data_item"
+ v-if="
+ (apprList[activeIndex].memberType == 1 ||
+ apprList[activeIndex].memberType == 2) &&
+ apprList[activeIndex].type == '0'
+ "
+ >
<div class="config_data_item_label">
瀹℃壒鏂瑰紡
<span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
</div>
<el-radio-group
- v-model="radio1"
+ v-model="apprList[activeIndex].approveType"
style="display: flex; flex-direction: column"
>
<el-radio :label="0" style="margin-bottom: 20px"
@@ -109,34 +156,68 @@
<el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
</el-radio-group>
</div>
- <div class="config_data_submit" v-if="radio !== 0">
- <el-button style="background: #435ebe" type="primary"
+ <div class="config_data_submit">
+ <el-button
+ @click="onSubmit"
+ style="background: #435ebe"
+ type="primary"
>淇濆瓨閰嶇疆椤�</el-button
+ >
+ <el-button
+ v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
+ type="danger"
+ plain
+ @click="handleDel"
+ >鍒犻櫎鑺傜偣</el-button
>
</div>
</div>
</div>
</template>
<!-- -->
- <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="800px">
- <tree-transfer
- v-model="param.menuIds"
- :title="['鏈��', '宸查��']"
- :from_data="fromData"
- :to_data="selData"
- :defaultProps="{ label: 'label' }"
- mode="transfer"
- height="500px"
- filter
- openAll
- ref="treeTransfer"
- >
- </tree-transfer>
+ <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
+ <div class="staff_modal">
+ <div class="left">
+ <div
+ style="
+ width: 100%;
+ height: 50px;
+ background: rgba(242, 242, 242, 1);
+ line-height: 50px;
+ text-align: center;
+ font-size: 14px;
+ "
+ >
+ 浼佷笟缁勭粐鏋舵瀯
+ </div>
+ <div style="width: 100%; height: 100%; overflow-y: scroll">
+ <Tree
+ :list="companyTree"
+ :defaultProps="{
+ name: 'name',
+ status: 'fsStatus',
+ children: 'childList',
+ id: 'id',
+ }"
+ @callback="callback"
+ />
+ </div>
+ </div>
+ <el-transfer
+ filterable
+ :title="['鏈��', '宸查��']"
+ openAll
+ :props="{ label: 'name', key: 'keyTemp' }"
+ filter-placeholder="鎼滅储鍛樺伐"
+ v-model="searchForm.objIds"
+ :data="memberList"
+ class="transfer"
+ >
+ </el-transfer>
+ </div>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="isShowTransfer = false"
- >纭� 瀹�</el-button
- >
+ <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
</span>
</el-dialog>
</TableLayout>
@@ -144,87 +225,184 @@
<script>
import TableLayout from '@/layouts/TableLayout'
-import treeTransfer from 'el-tree-transfer'
+// import treeTransfer from 'el-tree-transfer'
+import Tree from '@/components/common/Tree'
+import { approveTemplSave, approveTemplByType } from '@/api'
+import { fetchList } from '@/api/business/company'
+import { fetchList as memberListPost } from '@/api/business/member'
export default {
name: 'config',
components: {
TableLayout,
- treeTransfer
+ Tree
},
data () {
return {
-
- value: '',
- radio: 0,
- radio1: 0,
- checked: '',
- checkList: [],
+ activeType: '2',
+ apprList: [
+ { remark: '瀹℃壒浜�', active: false, type: '0', objIds: [] },
+ { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
+ ],
+ activeIndex: 0,
param: {},
- activeSel: 'one',
- activeName: 'first',
+ searchForm: {},
isShowTransfer: false,
- fromData: [
- {
- id: '1',
- pid: 0,
- label: '涓�绾� 1',
- children: [
- {
- id: '1-1',
- pid: '1',
- label: '浜岀骇 1-1',
- disabled: true,
- children: []
- },
- {
- id: '1-2',
- pid: '1',
- label: '浜岀骇 1-2',
- children: [
- {
- id: '1-2-1',
- pid: '1-2',
- children: [],
- label: '浜岀骇 1-2-1'
- },
- {
- id: '1-2-2',
- pid: '1-2',
- children: [],
- label: '浜岀骇 1-2-2'
- }
- ]
- }
- ]
- }
- ],
- options: [{
- value: '閫夐」1',
- label: '榛勯噾绯�'
- }, {
- value: '閫夐」2',
- label: '鍙岀毊濂�'
- }, {
- value: '閫夐」3',
- label: '铓典粩鐓�'
- }, {
- value: '閫夐」4',
- label: '榫欓』闈�'
- }, {
- value: '閫夐」5',
- label: '鍖椾含鐑ら腑'
- }],
- selData: []
+ memberList: [],
+ companyTree: []
}
},
+ created () {
+ this.getfindCompanyTreePage()
+ this.initDate()
+ },
methods: {
- flowClick (val) {
- this.activeSel = val
+ flowClick (i) {
+ this.activeIndex = i
+ this.apprList.forEach((item, index) => {
+ if (i === index) {
+ item.active = true
+ if (item.objIds && item.objIds.length > 0) {
+ const objIds = item.objIds.map(i => {
+ return i.id + '-' + i.name
+ })
+ this.$set(this.searchForm, 'objIds', objIds)
+ } else {
+ this.$set(this.searchForm, 'objIds', [])
+ }
+ } else {
+ item.active = false
+ }
+ })
+ },
+ initDate () {
+ const { activeType } = this
+ approveTemplByType(activeType).then(res => {
+ if (res && res.paramList) {
+ const arr = res.paramList || []
+ arr.forEach(item => {
+ if (item.memberList && item.memberList.length > 0) {
+ item.objIds = item.memberList.map(i => {
+ return {
+ id: i.id,
+ name: i.name
+ }
+ })
+ }
+ })
+ this.apprList = arr
+ }
+
+ // console.log(res);
+ })
+ this.flowClick(0)
+ this.$forceUpdate()
+ },
+ onSubmit () {
+ const { apprList, activeType } = this
+ const temp = JSON.parse(JSON.stringify(apprList))
+ temp.forEach((item, index) => {
+ item.level = index + 1
+ if (item.objIds && item.objIds.length > 0) {
+ item.objIds = item.objIds.map(i => i.id).join(',')
+ }
+ })
+ approveTemplSave({
+ type: activeType,
+ paramList: temp
+ }).then(res => {
+ if (res.code === 200) {
+ this.$message.success('淇濆瓨鎴愬姛')
+ }
+ })
+ },
+ handleDel () {
+ const { activeIndex } = this
+ this.apprList.splice(activeIndex, 1)
+ this.activeIndex = 0
+ },
+ handleAddAppr () {
+ this.apprList.splice(this.apprList.length - 2, 0, { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] })
+ // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
},
+ // 鑾峰彇缁勭粐鏍�
+ getfindCompanyTreePage () {
+ fetchList()
+ .then(res => {
+ if (res && res.length > 0) {
+ res[0].fsStatus = 1
+ this.companyTree = res
+ // // this.searchForm.erpOrgId = res[0].erpId
+ // this.search()
+ // this.department = this.getDepartmentTree(res)
+ }
+ })
+ },
+ getMemberList () {
+ memberListPost({
+ model: {
+ companyId: this.searchForm.companyId || '',
+ canVisit: '',
+ companyType: 1,
+ erpOrgId: '',
+ hasFace: '',
+ hkStatus: '',
+ includeChild: false,
+ type: 2
+ },
+ page: 1,
+ capacity: 30
+ }).then(res => {
+ this.memberList = res.records || []
+ this.memberList.forEach(item => {
+ item.keyTemp = item.id + '-' + item.name + '-' + item.companyName || ''
+ })
+ // console.log('defaultProps', res)
+ })
+ },
+ callback (row) {
+ console.log(row)
+ this.$set(this.searchForm, 'companyId', row.id)
+ this.$set(this.searchForm, 'erpOrgId', row.erpId)
+ this.getMemberList()
+ },
+ TransferSub () {
+ const { activeIndex } = this
+ if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
+ if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
+ const arr = this.searchForm.objIds.map(ii => {
+ const obj = ii.split('-')
+ return {
+ id: Number(obj[0]),
+ name: obj[1],
+ companyName: obj[2] || ''
+ }
+ })
+ this.apprList.forEach((item, index) => {
+ if (activeIndex === index) {
+ item.objIds = arr
+ }
+ })
+ }
+ this.isShowTransfer = false
+ console.log(this.searchForm.objIds)
+ },
+ memDel (memIndex) {
+ const { activeIndex } = this
+ this.apprList.forEach((item, index) => {
+ if (activeIndex === index) {
+ item.objIds.splice(memIndex, 1)
+ const objIds = item.objIds.map(i => {
+ return i.id + '-' + i.name
+ })
+ this.$set(this.searchForm, 'objIds', objIds)
+ }
+ })
+ },
selStaff () {
this.isShowTransfer = true
+ this.getMemberList()
},
seleItem (i) {
this.list.forEach((item, index) => {
@@ -290,10 +468,19 @@
display: flex;
flex-direction: column;
align-items: center;
+ position: relative;
.line {
width: 1px;
height: 60px;
background-color: #ccc;
+ }
+ .add {
+ font-size: 40px;
+ color: #2080f7;
+ position: absolute;
+ cursor: pointer;
+ z-index: 999;
+ top: 10px;
}
img {
width: 12px;
@@ -388,45 +575,61 @@
}
}
}
- .config_data_item_reviewed_content {
- width: 400px;
- margin-top: 10px;
- height: 110px;
- padding: 12px;
- box-sizing: border-box;
- border-radius: 2px;
- border: 1px solid #dfe2e8;
- display: flex;
- align-items: flex-start;
- flex-wrap: wrap;
- .add {
- font-size: 12px;
- font-weight: 400;
- color: #435ebe;
- cursor: pointer;
- margin-top: 3px;
- }
- .config_data_item_reviewed_content_item {
- padding: 3px 5px;
- background: #f4f7fc;
- border-radius: 2px;
- box-sizing: border-box;
- margin-right: 10px;
- margin-bottom: 10px;
- span {
- font-size: 12px;
- font-weight: 400;
- color: #333333;
- }
- i {
- color: #949ba2;
- margin-left: 10px;
- cursor: pointer;
- }
- }
- }
}
}
}
}
+.config_data_item_reviewed_content {
+ width: 400px;
+ margin-top: 10px;
+ height: 110px;
+ padding: 12px;
+ box-sizing: border-box;
+ border-radius: 2px;
+ border: 1px solid #dfe2e8;
+ display: flex;
+ align-items: flex-start;
+ flex-wrap: wrap;
+ .add {
+ font-size: 12px;
+ font-weight: 400;
+ color: #435ebe;
+ cursor: pointer;
+ margin-top: 3px;
+ }
+ .config_data_item_reviewed_content_item {
+ padding: 3px 5px;
+ background: #f4f7fc;
+ border-radius: 2px;
+ box-sizing: border-box;
+ margin-right: 10px;
+ margin-bottom: 10px;
+ span {
+ font-size: 12px;
+ font-weight: 400;
+ color: #333333;
+ }
+ i {
+ color: #949ba2;
+ margin-left: 10px;
+ cursor: pointer;
+ }
+ }
+}
+.staff_modal {
+ display: flex;
+ .left {
+ width: 300px;
+ margin-right: 20px;
+ }
+ .transfer {
+ height: 600px;
+ ::v-deep .el-transfer-panel__body {
+ height: 500px;
+ }
+ ::v-deep .el-transfer-panel__list.is-filterable {
+ height: 480px;
+ }
+ }
+}
</style>
diff --git a/admin/src/views/business/carEvent.vue b/admin/src/views/business/carEvent.vue
index b18baf6..5ba7970 100644
--- a/admin/src/views/business/carEvent.vue
+++ b/admin/src/views/business/carEvent.vue
@@ -1,118 +1,186 @@
<template>
- <TableLayout :permissions="['business:carevent:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="杞︾墝鍙�" prop="plateNos">
- <el-input v-model="searchForm.plateNos" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <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="memberType">
- <el-select v-model="searchForm.memberType" placeholder="璇烽�夋嫨">
- <el-option label="鍔冲姟璁垮" value="0"></el-option>
- <el-option label="鏅�氳瀹�" value="1"></el-option>
- <el-option label="鍐呴儴浜哄憳" value="2"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="浜嬩欢绫诲瀷" prop="eventType">
- <el-select v-model="searchForm.eventType" placeholder="璇烽�夋嫨">
- <el-option label="鍏ュ満鍘嬬嚎浜嬩欢" value="771760130"></el-option>
- <el-option label="鍏ュ満鏀捐浜嬩欢" value="771760131"></el-option>
- <el-option label="鍑哄満鍘嬬嚎浜嬩欢" value="771760133"></el-option>
- <el-option label="鍑哄満鏀捐浜嬩欢" value="771760134"></el-option>
- </el-select>
- </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>
- <ul class="toolbar" v-permissions="['business:carevent:exportExcel']">
- <li><el-button type="primary" v-permissions="['business:carevent:sync']" @click="$refs.OperaCarEventHkWindow.open('鍚屾杩囪溅璁板綍')">鍚屾</el-button></li>
- <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:carevent:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
- </ul>
- <el-table
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- >
- <el-table-column prop="plateNos" label="杞︾墝鍙�" min-width="100px"></el-table-column>
- <el-table-column prop="parkName" label="鍋滆溅搴撳悕绉�" min-width="100px"></el-table-column>
- <el-table-column prop="gateName" label="鍑哄叆鍙e悕绉�" min-width="100px"></el-table-column>
- <el-table-column prop="eventTypeName" label="浜嬩欢绫诲瀷" min-width="100px"></el-table-column>
- <el-table-column label="鍑哄叆绫诲瀷" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.inoutType === 0">杩涘満</span>
- <span v-if="row.inoutType === 1">鍑哄満</span>
- </template>
- </el-table-column>
- <el-table-column label="褰掑睘鐢ㄦ埛绫诲瀷" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.personType == 0">鍔冲姟璁垮</span>
- <span v-if="row.personType == 1">鏅�氳瀹�</span>
- <span v-if="row.personType == 2">鍐呴儴浜哄憳</span>
- </template>
- </el-table-column>
- <el-table-column prop="personName" label="濮撳悕" min-width="100px"></el-table-column>
- <el-table-column prop="personPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
- <el-table-column prop="personCompanyName" label="缁勭粐" min-width="100px"></el-table-column>
- <el-table-column label="杞︾墝鎶撴媿鍥�" min-width="100px">
- <template slot-scope="{row}">
- <div v-if="row.platePicUrl!=null">
- <el-image
- style="width: 80px; height: 80px"
- :src="row.platePicUrl"
- :preview-src-list="[row.platePicUrl]">
- </el-image>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="鎶撴媿鍥剧墖" min-width="100px">
- <template slot-scope="{row}">
- <div v-if="row.vehiclePicUrl!=null">
- <el-image
- style="width: 80px; height: 80px"
- :src="row.vehiclePicUrl"
- :preview-src-list="[row.vehiclePicUrl]">
- </el-image>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="happenTime" label="浜嬩欢鏃堕棿" min-width="100px"></el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
+ <TableLayout :permissions="['business:carevent:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form
+ ref="searchForm"
+ slot="search-form"
+ :model="searchForm"
+ label-width="100px"
+ inline
+ >
+ <el-form-item label="杞︾墝鍙�" prop="plateNos">
+ <el-input
+ v-model="searchForm.plateNos"
+ placeholder="璇疯緭鍏ヨ溅鐗屽彿"
+ @keypress.enter.native="search"
+ ></el-input>
+ </el-form-item>
+ <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="memberType">
+ <el-select v-model="searchForm.memberType" placeholder="璇烽�夋嫨">
+ <el-option label="鍔冲姟璁垮" value="0"></el-option>
+ <el-option label="鏅�氳瀹�" value="1"></el-option>
+ <el-option label="鍐呴儴浜哄憳" value="2"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="浜嬩欢绫诲瀷" prop="eventType">
+ <el-select v-model="searchForm.eventType" placeholder="璇烽�夋嫨">
+ <el-option label="鍦ㄥ洯鍘嬬嚎浜嬩欢" value="771760130"></el-option>
+ <el-option label="鍦ㄥ洯鏀捐浜嬩欢" value="771760131"></el-option>
+ <el-option label="绂诲洯鍘嬬嚎浜嬩欢" value="771760133"></el-option>
+ <el-option label="绂诲洯鏀捐浜嬩欢" value="771760134"></el-option>
+ </el-select>
+ </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>
+ <ul class="toolbar" v-permissions="['business:carevent:exportExcel']">
+ <li>
+ <el-button
+ type="primary"
+ v-permissions="['business:carevent:sync']"
+ @click="$refs.OperaCarEventHkWindow.open('鍚屾杩囪溅璁板綍')"
+ >鍚屾</el-button
+ >
+ </li>
+ <li>
+ <el-button
+ type="primary"
+ :loading="isWorking.export"
+ v-permissions="['business:carevent:exportExcel']"
+ @click="exportExcel"
+ >瀵煎嚭</el-button
+ >
+ </li>
+ </ul>
+ <el-table v-loading="isWorking.search" :data="tableData.list" stripe>
+ <el-table-column
+ prop="plateNos"
+ label="杞︾墝鍙�"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column
+ prop="parkName"
+ label="鍋滆溅搴撳悕绉�"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column
+ prop="gateName"
+ label="鍑哄叆鍙e悕绉�"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column
+ prop="eventTypeName"
+ label="浜嬩欢绫诲瀷"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column label="鍑哄叆绫诲瀷" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.inoutType === 0">杩涘満</span>
+ <span v-if="row.inoutType === 1">绂诲洯</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="褰掑睘鐢ㄦ埛绫诲瀷" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.personType == 0">鍔冲姟璁垮</span>
+ <span v-if="row.personType == 1">鏅�氳瀹�</span>
+ <span v-if="row.personType == 2">鍐呴儴浜哄憳</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="personName"
+ label="濮撳悕"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column
+ prop="personPhone"
+ label="鎵嬫満鍙�"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column
+ prop="personCompanyName"
+ label="缁勭粐"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column label="杞︾墝鎶撴媿鍥�" min-width="100px">
+ <template slot-scope="{ row }">
+ <div v-if="row.platePicUrl != null">
+ <el-image
+ style="width: 80px; height: 80px"
+ :src="row.platePicUrl"
+ :preview-src-list="[row.platePicUrl]"
+ >
+ </el-image>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎶撴媿鍥剧墖" min-width="100px">
+ <template slot-scope="{ row }">
+ <div v-if="row.vehiclePicUrl != null">
+ <el-image
+ style="width: 80px; height: 80px"
+ :src="row.vehiclePicUrl"
+ :preview-src-list="[row.vehiclePicUrl]"
+ >
+ </el-image>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="happenTime"
+ label="浜嬩欢鏃堕棿"
+ min-width="100px"
+ ></el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
- <OperaCarEventHkWindow ref="OperaCarEventHkWindow" @success="search()" />
- </template>
- </TableLayout>
+ <OperaCarEventHkWindow ref="OperaCarEventHkWindow" @success="search()" />
+ </template>
+ </TableLayout>
</template>
<script>
@@ -124,8 +192,8 @@
export default {
name: 'CarEvent',
extends: BaseTable,
- components: { TableLayout, Pagination ,OperaCarEventHkWindow},
- data () {
+ components: { TableLayout, Pagination, OperaCarEventHkWindow },
+ data() {
return {
// 鎼滅储
searchForm: {
@@ -141,7 +209,7 @@
time: []
}
},
- created () {
+ created() {
this.config({
module: '鍋滆溅鍦轰簨浠舵帹閫佽褰曡〃',
api: '/business/carEvent',
@@ -152,14 +220,14 @@
this.search()
},
methods: {
- reset () {
+ reset() {
this.$refs.searchForm.resetFields()
this.searchForm.radio = '0'
this.changeRadio('0')
this.time = []
this.search()
},
- changeRadio (e) {
+ changeRadio(e) {
if (e === '0') {
this.searchForm.startTime = timeForMat(0)[0]
this.searchForm.endTime = timeForMat(0)[1]
@@ -175,7 +243,7 @@
}
this.search()
},
- seleTime (e) {
+ seleTime(e) {
this.searchForm.startTime = e[0]
this.searchForm.endTime = e[1]
this.searchForm.radio = null
diff --git a/admin/src/views/business/reportRecord.vue b/admin/src/views/business/reportRecord.vue
index 348d2ef..98ee6a0 100644
--- a/admin/src/views/business/reportRecord.vue
+++ b/admin/src/views/business/reportRecord.vue
@@ -1,30 +1,106 @@
<template>
<div class="main_app">
- <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
- <el-table v-loading="loading" :data="list" stripe row-key="id" default-expand-all>
- <el-table-column prop="" label="鍏ュ洯杞﹁締" min-width="100" show-overflow-tooltip></el-table-column>
- <el-table-column prop="" label="鍏徃鍚嶇О" min-width="120" show-overflow-tooltip></el-table-column>
- <el-table-column prop="" label="鑱旂郴浜轰俊鎭�" min-width="100" show-overflow-tooltip></el-table-column>
- <el-table-column prop="" label="鎵嬫満鍙�" min-width="120" show-overflow-tooltip></el-table-column>
- <el-table-column prop="" label="琚浜�" min-width="120" show-overflow-tooltip></el-table-column>
- <el-table-column prop="" label="鎷滆鏃堕棿" min-width="120" show-overflow-tooltip></el-table-column>
- <el-table-column prop="" label="鎷滆浜嬬敱" min-width="80" show-overflow-tooltip></el-table-column>
- <el-table-column prop="" fixed="right" label="鐘舵��" min-width="100"></el-table-column>
+ <QueryForm
+ v-model="filters"
+ :query-form-config="queryFormConfig"
+ @handleQuery="getList(1)"
+ @clear="clear"
+ />
+ <el-table
+ v-loading="loading"
+ :data="dataList"
+ stripe
+ row-key="id"
+ default-expand-all
+ >
+ <el-table-column
+ prop="carNos"
+ label="鍏ュ洯杞﹁締"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column
+ prop="companyName"
+ label="鍏徃鍚嶇О"
+ min-width="100px"
+ ></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
+ prop="receptMemberName"
+ label="琚浜�"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column label="鎷滆鏃堕棿" min-width="170px">
+ <template slot-scope="{ row }">
+ <span>璧凤細{{ row.starttime }}</span
+ ><br />
+ <span>姝細{{ row.endtime }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="reason"
+ label="鎷滆浜嬬敱"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column
+ prop="status"
+ fixed="right"
+ label="鐘舵��"
+ min-width="100px"
+ >
+ <template slot-scope="{ row }">
+ <span style="color: rgba(245, 154, 35, 0.996)" v-if="row.status === 0"
+ >寰呮彁浜ゅ鎵�</span
+ >
+ <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996)"
+ >瀹℃壒涓�</span
+ >
+ <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996)"
+ >瀹℃牳閫氳繃</span
+ >
+ <span style="color: gray" v-if="row.status === 3">瀹℃牳涓嶉�氳繃</span>
+ <span v-if="row.status === 4" style="color: gray">鍙栨秷</span>
+ <span v-if="row.status === 5" style="color: green">棰勭害鎴愬姛</span>
+ <span v-if="row.status === 6" style="color: gray">棰勭害澶辫触</span>
+ <span v-if="row.status === 7" style="color: green">鎷滆涓�</span>
+ <span v-if="row.status === 8" style="color: red">宸茬绂�</span>
+ <span v-if="row.status === 9" style="color: gray">宸插け鏁�</span>
+ </template>
+ </el-table-column>
<el-table-column label="鎿嶄綔" width="230" fixed="right">
- <template slot-scope="{row}">
- <el-button type="text" @click="handleDetail(row)" v-permissions="['business:company:update']">鏌ョ湅璇︽儏</el-button>
+ <template slot-scope="{ row }">
+ <el-button
+ type="text"
+ @click="handleDetail(row)"
+ v-permissions="['business:company:update']"
+ >鏌ョ湅璇︽儏</el-button
+ >
</template>
</el-table-column>
</el-table>
- <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
- <ReportDetail v-if="isShowDetail" ref="DetailRef" />
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="getList"
+ :pagination="pagination"
+ />
+ <ReportDetail v-if="isShowReport" ref="VisReportDetailRef" />
</div>
</template>
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
-import ReportDetail from './page-components/ReportDetail.vue'
+// import ReportDetail from './page-components/ReportDetail.vue'
+import ReportDetail from '@/views/task/visReportDetail.vue'
+import { fetchList } from '@/api/business/visits'
export default {
components: {
ReportDetail,
@@ -33,18 +109,19 @@
},
data () {
return {
- isShowDetail: false,
+ isShowReport: false,
activeTab: '0',
filters: {},
+ dataList: [],
queryFormConfig: {
formItems: [
{
- filed: 'idCard',
+ filed: 'carNos',
type: 'input',
label: '杞︾墝鍙�'
},
{
- filed: 'name',
+ filed: 'companyName',
type: 'input',
label: '鍏徃鍚嶇О'
}
@@ -60,19 +137,38 @@
capacity: 10,
page: 1
},
- list: [{}],
total: 0
}
},
+ created () {
+ this.getList()
+ },
methods: {
- handleDetail () {
- this.isShowDetail = true
+ handleDetail (row) {
+ this.isShowReport = true
this.$nextTick(() => {
- this.$refs.DetailRef.isShowModal = true
+ this.$nextTick(() => {
+ this.$refs.VisReportDetailRef.id = row.id
+ this.$refs.VisReportDetailRef.type = 1
+ this.$refs.VisReportDetailRef.getDetail()
+ this.$refs.VisReportDetailRef.isShowModal = true
+ })
})
},
- getList (page) {},
- clear () { },
+ getList (page) {
+ const { pagination, filters } = this
+ pagination.page = page || pagination.page
+ fetchList({
+ model: { ...filters, type: 2 },
+ ...pagination
+ }).then(res => {
+ this.dataList = res.records || []
+ })
+ },
+ clear () {
+ this.filters = {}
+ this.getList(0)
+ },
handleSizeChange (capacity) {
this.pagination.capacity = capacity
}
@@ -81,5 +177,4 @@
</script>
<style lang="scss" scoped>
-
</style>
diff --git a/admin/src/views/business/retention.vue b/admin/src/views/business/retention.vue
index a5f1420..965b213 100644
--- a/admin/src/views/business/retention.vue
+++ b/admin/src/views/business/retention.vue
@@ -1,99 +1,144 @@
<template>
- <TableLayout :permissions="['business:retention: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="type">
- <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
- <el-option label="鍔冲姟璁垮" value="0"></el-option>
- <el-option label="鏅�氳瀹�" value="1"></el-option>
- <el-option label="鍐呴儴鍛樺伐" value="2"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="璧峰鏃堕棿" prop="startTime">
- <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>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:retention:exportExcel']">
- <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:retention:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
- </ul>
- <el-table
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
+ <TableLayout :permissions="['business:retention: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="type">
+ <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
+ <el-option label="鍔冲姟璁垮" value="0"></el-option>
+ <el-option label="鏅�氳瀹�" value="1"></el-option>
+ <el-option label="鍐呴儴鍛樺伐" value="2"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璧峰鏃堕棿" prop="startTime">
+ <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>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:retention:exportExcel']">
+ <li>
+ <el-button
+ type="primary"
+ :loading="isWorking.export"
+ v-permissions="['business:retention:exportExcel']"
+ @click="exportExcel"
+ >瀵煎嚭</el-button
+ >
+ </li>
+ </ul>
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column prop="companyName" label="缁勭粐" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.type === 2 || row.type === 0">{{
+ row.companyName
+ }}</span>
+ <span v-else>{{ row.visitCompanyName }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="type" label="浜哄憳绫诲瀷" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.type === 0">鍔冲姟璁垮</span>
+ <span v-if="row.type === 1">鏅�氳瀹�</span>
+ <span v-if="row.type === 2">鍐呴儴鍛樺伐</span>
+ </template>
+ </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
+ prop="idcardDecode"
+ label="韬唤璇佸彿"
+ min-width="130px"
+ ></el-table-column>
+ <el-table-column label="杩涘満闂ㄧ" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.type === 1">-</span>
+ <span v-else>{{ row.deviceName }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="eventDate"
+ label="杩涘満鏃堕棿"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column label="浜鸿劯鐓х墖" min-width="100px">
+ <template slot-scope="{ row }">
+ <el-image
+ v-if="row.faceImgFull != null"
+ style="width: 80px; height: 80px"
+ :src="row.faceImgFull"
+ :preview-src-list="[row.faceImgFull]"
>
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="companyName" label="缁勭粐" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.type === 2 || row.type === 0">{{row.companyName}}</span>
- <span v-else>{{row.visitCompanyName}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="type" label="浜哄憳绫诲瀷" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.type === 0">鍔冲姟璁垮</span>
- <span v-if="row.type === 1">鏅�氳瀹�</span>
- <span v-if="row.type === 2">鍐呴儴鍛樺伐</span>
- </template>
- </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 prop="idcardDecode" label="韬唤璇佸彿" min-width="130px"></el-table-column>
- <el-table-column label="杩涘満闂ㄧ" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.type === 1">-</span>
- <span v-else>{{row.deviceName}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="eventDate" label="杩涘満鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column label="浜鸿劯鐓х墖" min-width="100px">
- <template slot-scope="{row}">
- <el-image v-if="row.faceImgFull!=null"
- style="width: 80px; height: 80px"
- :src="row.faceImgFull"
- :preview-src-list="[row.faceImgFull]">
- </el-image>
- </template>
- </el-table-column>
- <el-table-column
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:retention:delete']">鏍囪绂诲満</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
+ </el-image>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+ <template slot-scope="{ row }">
+ <el-button
+ type="text"
+ @click="deleteById(row)"
+ icon="el-icon-delete"
+ v-permissions="['business:retention:delete']"
+ >鏍囪绂诲満</el-button
>
- </pagination>
- </template>
- </TableLayout>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ </TableLayout>
</template>
<script>
@@ -104,7 +149,7 @@
name: 'Retention',
extends: BaseTable,
components: { TableLayout, Pagination },
- data () {
+ data() {
return {
// 鎼滅储
searchForm: {
@@ -117,9 +162,9 @@
time: []
}
},
- created () {
+ created() {
this.config({
- module: '鍦ㄥ巶浜哄憳淇℃伅 琛紙婊炵暀锛�',
+ module: '鍦ㄥ洯浜哄憳淇℃伅 琛紙婊炵暀锛�',
api: '/business/retention',
'field.id': 'id',
'field.main': 'id'
@@ -127,14 +172,14 @@
this.search()
},
methods: {
- reset () {
+ reset() {
this.$refs.searchForm.resetFields()
this.searchForm.startTime = ''
this.searchForm.endTime = ''
this.time = []
this.search()
},
- seleTime (e) {
+ seleTime(e) {
this.searchForm.startTime = e[0]
this.searchForm.endTime = e[1]
}
diff --git a/admin/src/views/business/strandedPersonnel.vue b/admin/src/views/business/strandedPersonnel.vue
index 2916436..596ee84 100644
--- a/admin/src/views/business/strandedPersonnel.vue
+++ b/admin/src/views/business/strandedPersonnel.vue
@@ -1,80 +1,129 @@
<template>
- <TableLayout :permissions="['business:member:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="濮撳悕" prop="name">
- <el-input v-model="searchForm.name" 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="type">
- <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
- <el-option label="璁垮" value="1"></el-option>
- <el-option label="鍔冲姟" value="0"></el-option>
- </el-select>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
-<!-- <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">-->
-<!-- <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws">绂诲満</el-button></li>-->
-<!-- </ul>-->
- <el-table
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
+ <TableLayout :permissions="['business:member:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form
+ ref="searchForm"
+ slot="search-form"
+ :model="searchForm"
+ label-width="100px"
+ inline
+ >
+ <el-form-item label="濮撳悕" prop="name">
+ <el-input
+ v-model="searchForm.name"
+ 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="type">
+ <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
+ <el-option label="璁垮" value="1"></el-option>
+ <el-option label="鍔冲姟" value="0"></el-option>
+ </el-select>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <!-- <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">-->
+ <!-- <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws">绂诲満</el-button></li>-->
+ <!-- </ul>-->
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ @selection-change="handleSelectionChange"
+ >
+ <!-- <el-table-column type="selection" width="55"></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
+ prop="companyName"
+ label="缁勭粐"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.type === 0">鍔冲姟璁垮</span>
+ <span v-if="row.type === 1">鏅�氳瀹�</span>
+ <span v-if="row.type === 2">鍐呴儴浜哄憳</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="inDate"
+ label="鍦ㄥ洯鏃堕棿"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column
+ prop="outDate"
+ label="鎺堟潈鍒版湡鏃堕棿"
+ min-width="100px"
+ ></el-table-column>
+ <el-table-column label="瓒呮椂鏃堕暱" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.outStatus === 1"
+ >{{ row.timeOut.toString().replace("-", "") }}鍒嗛挓</span
>
-<!-- <el-table-column type="selection" width="55"></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 prop="companyName" label="缁勭粐" min-width="100px"></el-table-column>
- <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.type === 0">鍔冲姟璁垮</span>
- <span v-if="row.type === 1">鏅�氳瀹�</span>
- <span v-if="row.type === 2">鍐呴儴浜哄憳</span>
- </template>
- </el-table-column>
- <el-table-column prop="inDate" label="鍏ュ満鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="outDate" label="鎺堟潈鍒版湡鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column label="瓒呮椂鏃堕暱" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.outStatus === 1">{{row.timeOut.toString().replace('-', '')}}鍒嗛挓</span>
- <span v-else>-</span>
- </template>
- </el-table-column>
- <el-table-column label="鐘舵��" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.outStatus === 0">鏈秴鏃�</span>
- <span style="color: red;" v-else-if="row.outStatus === 1">宸茶秴鏃�</span>
- <span v-else-if="row.outStatus === 2">鍗冲皢瓒呮椂</span>
- </template>
- </el-table-column>
- <el-table-column
- v-if="containPermissions(['business:member:update', 'business:member:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']" @click="departure(row.id)">绂诲巶</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
+ <span v-else>-</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐘舵��" min-width="100px">
+ <template slot-scope="{ row }">
+ <span v-if="row.outStatus === 0">鏈秴鏃�</span>
+ <span style="color: red" v-else-if="row.outStatus === 1"
+ >宸茶秴鏃�</span
>
- </pagination>
- </template>
- </TableLayout>
+ <span v-else-if="row.outStatus === 2">鍗冲皢瓒呮椂</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ v-if="
+ containPermissions([
+ 'business:member:update',
+ 'business:member:delete',
+ ])
+ "
+ label="鎿嶄綔"
+ min-width="120"
+ fixed="right"
+ >
+ <template slot-scope="{ row }">
+ <el-button
+ type="text"
+ icon="el-icon-edit"
+ v-permissions="['business:member:update']"
+ @click="departure(row.id)"
+ >绂诲巶</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ </TableLayout>
</template>
<script>
@@ -87,7 +136,7 @@
name: 'strandedPersonnel',
extends: BaseTable,
components: { TableLayout, Pagination },
- data () {
+ data() {
return {
// 鎼滅储
searchForm: {
@@ -99,7 +148,7 @@
user: []
}
},
- created () {
+ created() {
this.config({
module: '浜哄憳淇℃伅琛�',
api: '/business/strandedPersonnel',
@@ -122,7 +171,7 @@
})
}).catch(() => {
- });
+ })
},
// thaws () {
// if (this.tableData.selectedRows.length === 0) return this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
@@ -146,7 +195,7 @@
//
// })
// },
- getUser () {
+ getUser() {
findAllList({})
.then(res => {
this.user = res.map(item => {
diff --git a/admin/src/views/business/visitorSources.vue b/admin/src/views/business/visitorSources.vue
index 6833446..b0dc5c6 100644
--- a/admin/src/views/business/visitorSources.vue
+++ b/admin/src/views/business/visitorSources.vue
@@ -1,69 +1,105 @@
<template>
- <div class="box">
- <el-form :model="form" ref="form" label-width="140px">
- <div><span style="font-size: 15px;font-weight: bold">浜哄憳鎺堟潈閰嶇疆锛�</span></div>
- <el-form-item label="" prop="frezzDays" label-width="50px">
- 浜哄憳闂ㄧ鎺堟潈鍐荤粨锛氳繛缁�
- <el-input style="width: 50px;" type="text" v-model="form.frezzDays" placeholder="" v-trim/>
- 澶╋紝鏃犻棬绂�/杞﹁締闂告満浜嬩欢
- </el-form-item>
- <div><span style="font-size: 15px;font-weight: bold">璁垮閰嶇疆锛�</span></div>
- <el-form-item label="鏉ヨ棰勭害鏂瑰紡:" prop="reservationWay">
- <el-radio-group v-model="form.reservationWay">
- <el-radio :label="0">棰勭害鍏嶇櫥璁�</el-radio>
- <el-radio :label="1">棰勭害鍚庣櫥璁�(闇�瑕侀厤澶囪瀹㈡満)</el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="琚浜烘牎楠屾柟寮�:" prop="checkVisit">
- <el-radio-group v-model="form.checkVisit">
- <el-radio :label="0">浠呮墜鏈哄彿</el-radio>
- <el-radio :label="1">鎵嬫満鍙�&濮撳悕</el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="鍋ュ悍璇佹槸鍚﹀繀濉�:" prop="healthCard">
- <el-radio-group v-model="form.healthCard">
- <el-radio :label="0">鍚�</el-radio>
- <el-radio :label="1">鏄�</el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="鍏佽鑷�夐棬绂佺粍:" prop="doorsVisitRequired">
- <el-switch
- v-model="form.doorsVisitRequired"
- active-color="#13ce66"
- inactive-color="#ff4949"
- :active-value="1"
- :inactive-value="0">
- </el-switch>
- </el-form-item>
- <el-form-item label="璁垮鏄惁绛旈:" prop="isAnswer">
- <el-switch
- v-model="form.isAnswer"
- active-color="#13ce66"
- inactive-color="#ff4949"
- :active-value="1"
- :inactive-value="0">
- </el-switch>
- </el-form-item>
- <el-form-item label="璁垮绛旈涓婚:" prop="theme">
- <el-input style="width: 50%;" type="textarea" v-model="form.theme" placeholder="璇疯緭鍏ョ瓟棰樻爣棰�" v-trim/>
- </el-form-item>
- <el-form-item label="璁垮绛旈璇存槑:" prop="description">
- <el-input style="width: 50%;" type="textarea" v-model="form.description" placeholder="璇疯緭鍏�" v-trim/>
- </el-form-item>
- <el-form-item label="鍏ュ巶椤荤煡:" prop="visitNotice">
- <el-tiptap style="width: 50%;" v-model="form.visitNotice" :extensions="extensions" />
- </el-form-item>
- <el-form-item label="璁垮棰勭害鎸囧崡:" prop="visitNotice">
- <el-tiptap style="width: 50%;" v-model="form.visitTips" :extensions="extensions" />
- </el-form-item>
- <el-form-item label="璁垮鍏ュ洯瀵艰鍥�:" prop="visitNotice">
- <el-tiptap style="width: 50%;" v-model="form.visitMap" :extensions="extensions" />
- </el-form-item>
- <el-form-item>
- <el-button type="primary" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
- </el-form-item>
- </el-form>
- </div>
+ <div class="box">
+ <el-form :model="form" ref="form" label-width="140px">
+ <div>
+ <span style="font-size: 15px; font-weight: bold">浜哄憳鎺堟潈閰嶇疆锛�</span>
+ </div>
+ <el-form-item label="" prop="frezzDays" label-width="50px">
+ 浜哄憳闂ㄧ鎺堟潈鍐荤粨锛氳繛缁�
+ <el-input
+ style="width: 50px"
+ type="text"
+ v-model="form.frezzDays"
+ placeholder=""
+ v-trim
+ />
+ 澶╋紝鏃犻棬绂�/杞﹁締闂告満浜嬩欢
+ </el-form-item>
+ <div>
+ <span style="font-size: 15px; font-weight: bold">璁垮閰嶇疆锛�</span>
+ </div>
+ <el-form-item label="鏉ヨ棰勭害鏂瑰紡:" prop="reservationWay">
+ <el-radio-group v-model="form.reservationWay">
+ <el-radio :label="0">棰勭害鍏嶇櫥璁�</el-radio>
+ <el-radio :label="1">棰勭害鍚庣櫥璁�(闇�瑕侀厤澶囪瀹㈡満)</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="琚浜烘牎楠屾柟寮�:" prop="checkVisit">
+ <el-radio-group v-model="form.checkVisit">
+ <el-radio :label="0">浠呮墜鏈哄彿</el-radio>
+ <el-radio :label="1">鎵嬫満鍙�&濮撳悕</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="鍋ュ悍璇佹槸鍚﹀繀濉�:" prop="healthCard">
+ <el-radio-group v-model="form.healthCard">
+ <el-radio :label="0">鍚�</el-radio>
+ <el-radio :label="1">鏄�</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="鍏佽鑷�夐棬绂佺粍:" prop="doorsVisitRequired">
+ <el-switch
+ v-model="form.doorsVisitRequired"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="1"
+ :inactive-value="0"
+ >
+ </el-switch>
+ </el-form-item>
+ <el-form-item label="璁垮鏄惁绛旈:" prop="isAnswer">
+ <el-switch
+ v-model="form.isAnswer"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="1"
+ :inactive-value="0"
+ >
+ </el-switch>
+ </el-form-item>
+ <el-form-item label="璁垮绛旈涓婚:" prop="theme">
+ <el-input
+ style="width: 50%"
+ type="textarea"
+ v-model="form.theme"
+ placeholder="璇疯緭鍏ョ瓟棰樻爣棰�"
+ v-trim
+ />
+ </el-form-item>
+ <el-form-item label="璁垮绛旈璇存槑:" prop="description">
+ <el-input
+ style="width: 50%"
+ type="textarea"
+ v-model="form.description"
+ placeholder="璇疯緭鍏�"
+ v-trim
+ />
+ </el-form-item>
+ <el-form-item label="鍦ㄥ洯椤荤煡:" prop="visitNotice">
+ <el-tiptap
+ style="width: 50%"
+ v-model="form.visitNotice"
+ :extensions="extensions"
+ />
+ </el-form-item>
+ <el-form-item label="璁垮棰勭害鎸囧崡:" prop="visitNotice">
+ <el-tiptap
+ style="width: 50%"
+ v-model="form.visitTips"
+ :extensions="extensions"
+ />
+ </el-form-item>
+ <el-form-item label="璁垮鍏ュ洯瀵艰鍥�:" prop="visitNotice">
+ <el-tiptap
+ style="width: 50%"
+ v-model="form.visitMap"
+ :extensions="extensions"
+ />
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
</template>
<script>
@@ -96,7 +132,7 @@
export default {
name: 'visitorSources',
- data () {
+ data() {
return {
form: {
id: null,
@@ -125,7 +161,7 @@
new BulletList(),
new OrderedList(),
new Image({
- uploadRequest (file) {
+ uploadRequest(file) {
const fd = new FormData()
fd.append('folder', 'visit/')
fd.append('file', file)
@@ -147,12 +183,12 @@
}
},
- created () {
+ created() {
this.getData()
},
methods: {
- getData () {
+ getData() {
getVisitConfigDTO({})
.then(res => {
this.form.checkVisit = res.checkVisit
@@ -168,7 +204,7 @@
this.form.frezzDays = res.frezzDays
})
},
- submit () {
+ submit() {
updateVisitConfig({
isAnswer: this.form.isAnswer,
healthCard: this.form.healthCard,
@@ -191,10 +227,10 @@
</script>
<style lang="scss" scoped>
- .box {
- width: 100%;
- padding: 30px;
- box-sizing: border-box;
- background: #ffffff;
- }
+.box {
+ width: 100%;
+ padding: 30px;
+ box-sizing: border-box;
+ background: #ffffff;
+}
</style>
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 9284bd4..72f3b49 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -1,41 +1,45 @@
<template>
<div class="home">
<div class="home_total">
- <div class="home_total_head">鍦ㄥ巶浜哄憳鎬昏</div>
+ <div class="home_total_head">鍦ㄥ洯浜哄憳鎬昏</div>
<div class="home_total_list">
<div class="home_total_list_item a">
- <span>{{head && head.workerCount ? head.workerCount : 0}}</span>
+ <span>{{ head && head.workerCount ? head.workerCount : 0 }}</span>
<span>鍐呴儴鍛樺伐</span>
</div>
<div class="home_total_list_item b">
- <span>{{head && head.visitorCount ? head.visitorCount : 0}}</span>
+ <span>{{ head && head.visitorCount ? head.visitorCount : 0 }}</span>
<span>璁垮</span>
</div>
<div class="home_total_list_item c">
- <span>{{head && head.lwCount ? head.lwCount : 0}}</span>
+ <span>{{ head && head.lwCount ? head.lwCount : 0 }}</span>
<span>鍔冲姟浜哄憳</span>
</div>
<div class="home_total_list_item d">
- <span>{{head && head.presenceCarCount ? head.presenceCarCount : 0}}</span>
+ <span>{{
+ head && head.presenceCarCount ? head.presenceCarCount : 0
+ }}</span>
<span>鍦ㄥ満杞﹁締</span>
</div>
<div class="home_total_list_item e">
- <span>{{head && head.longCarCount ? head.longCarCount : 0}}</span>
+ <span>{{ head && head.longCarCount ? head.longCarCount : 0 }}</span>
<span>闀挎湡杞﹁締</span>
</div>
<div class="home_total_list_item f">
- <span>{{head && head.visitorCarCount ? head.visitorCarCount : 0}}</span>
+ <span>{{
+ head && head.visitorCarCount ? head.visitorCarCount : 0
+ }}</span>
<span>棰勭害杞﹁締</span>
</div>
<div class="home_total_list_item g">
- <span>{{head && head.supplierCount ? head.supplierCount : 0}}</span>
+ <span>{{ head && head.supplierCount ? head.supplierCount : 0 }}</span>
<span>渚涘簲鍟�</span>
</div>
</div>
</div>
<div class="home_charts">
<div class="home_charts_item">
- <div class="home_charts_item_label">鍦ㄥ巶浜哄憳鍗犳瘮</div>
+ <div class="home_charts_item_label">鍦ㄥ洯浜哄憳鍗犳瘮</div>
<div class="home_charts_item_charts" id="chart1"></div>
</div>
<div class="home_charts_item">
@@ -44,61 +48,56 @@
</div>
</div>
<div class="home_table">
- <div class="home_table_head">瓒呮椂棰勮浜哄憳({{total}})</div>
+ <div class="home_table_head">瓒呮椂棰勮浜哄憳({{ total }})</div>
<div class="home_table_box">
<el-table
:data="list"
- :header-cell-style="{background: '#dcdde2', color: 'rgb(51, 51, 51)'}"
+ :header-cell-style="{
+ background: '#dcdde2',
+ color: 'rgb(51, 51, 51)',
+ }"
border
- style="width: 100%">
- <el-table-column
- prop="name"
- label="璁垮濮撳悕">
+ style="width: 100%"
+ >
+ <el-table-column prop="name" label="璁垮濮撳悕"> </el-table-column>
+ <el-table-column prop="phone" label="璁垮鐢佃瘽"> </el-table-column>
+ <el-table-column prop="companyName" label="璁垮缁勭粐">
</el-table-column>
- <el-table-column
- prop="phone"
- label="璁垮鐢佃瘽">
- </el-table-column>
- <el-table-column
- prop="companyName"
- label="璁垮缁勭粐">
- </el-table-column>
- <el-table-column
- label="浜哄憳绫诲瀷">
- <template slot-scope="{row}">
+ <el-table-column label="浜哄憳绫诲瀷">
+ <template slot-scope="{ row }">
<span v-if="row.type === 0">鍔冲姟璁垮</span>
<span v-if="row.type === 1">鏅�氳瀹�</span>
<span v-if="row.type === 2">鍐呴儴浜哄憳</span>
</template>
</el-table-column>
- <el-table-column
- prop="outDate"
- label="鎺堟潈鍒版湡鏃堕棿">
+ <el-table-column prop="outDate" label="鎺堟潈鍒版湡鏃堕棿">
</el-table-column>
- <el-table-column
- label="鐘舵��">
- <template slot-scope="{row}">
+ <el-table-column label="鐘舵��">
+ <template slot-scope="{ row }">
<span v-if="row.outStatus === 0">鏈秴鏃�</span>
- <span style="color: red;" v-if="row.outStatus === 1">宸茶秴鏃�</span>
+ <span style="color: red" v-if="row.outStatus === 1">宸茶秴鏃�</span>
<span v-if="row.outStatus === 2">鍗冲皢瓒呮椂</span>
</template>
</el-table-column>
- <el-table-column
- prop="address"
- label="澶勭悊"
- width="80">
+ <el-table-column prop="address" label="澶勭悊" width="80">
<template slot-scope="scope">
- <el-button type="text" @click="departure(scope.row.id)" v-if="scope.row.outStatus === 1">绂诲巶</el-button>
+ <el-button
+ type="text"
+ @click="departure(scope.row.id)"
+ v-if="scope.row.outStatus === 1"
+ >绂诲巶</el-button
+ >
</template>
</el-table-column>
</el-table>
<el-pagination
- style="margin-top: 20px;"
+ style="margin-top: 20px"
@current-change="handleCurrentChange"
:current-page="page"
:page-size="10"
layout="total, prev, pager, next, jumper"
- :total="total">
+ :total="total"
+ >
</el-pagination>
</div>
</div>
@@ -110,21 +109,21 @@
import { body, head, timeoutPage, level } from '@/api/business/staging'
export default {
name: 'Index',
- data () {
+ data() {
return {
head: null,
list: [],
total: 0,
data1: [],
- data2: [[],[]],
+ data2: [[], []],
page: 1
}
},
- created () {
+ created() {
this.getHeader()
this.getData()
},
- mounted () {
+ mounted() {
// this.getcharts2()
},
methods: {
@@ -141,7 +140,7 @@
})
}).catch(() => {
- });
+ })
},
getData() {
timeoutPage({
@@ -181,11 +180,11 @@
this.getcharts1()
})
},
- handleCurrentChange (page) {
+ handleCurrentChange(page) {
this.page = page
this.getData()
},
- getcharts1 () {
+ getcharts1() {
const myChart = echarts.init(document.getElementById('chart1'))
// 缁樺埗鍥捐〃
myChart.setOption({
@@ -232,7 +231,7 @@
]
})
},
- getcharts2 () {
+ getcharts2() {
const myChart = echarts.init(document.getElementById('chart2'))
myChart.setOption({
tooltip: {
diff --git a/admin/src/views/operation/serviceCar/apprConfig.vue b/admin/src/views/operation/serviceCar/apprConfig.vue
index 70a430b..9f2d3e6 100644
--- a/admin/src/views/operation/serviceCar/apprConfig.vue
+++ b/admin/src/views/operation/serviceCar/apprConfig.vue
@@ -1,64 +1,59 @@
<template>
<TableLayout>
<template v-slot:table-wrap>
- <el-tabs v-model="activeName">
- <el-tab-pane label="瀹ゅ唴鐢ㄨ溅" name="first"></el-tab-pane>
- <el-tab-pane label="瀹ゅ鐢ㄨ溅" name="second"></el-tab-pane>
+ <el-tabs v-model="activeType" @tab-click="handleClick">
+ <el-tab-pane label="瀹ゅ唴鐢ㄨ溅" name="3"></el-tab-pane>
+ <el-tab-pane label="瀹ゅ鐢ㄨ溅" name="4"></el-tab-pane>
</el-tabs>
<div class="config">
<div class="config_list">
<div class="config_list_head">
- <span>娴佺▼閰嶇疆</span>
- <el-button type="primary">鍙戝竷</el-button>
+ <span>閰嶇疆娴佺▼</span>
</div>
<div class="config_content">
- <div class="item active">
+ <div class="item">
<div class="head">鍙戣捣浜�</div>
- <div class="content">鍐呴儴鍛樺伐</div>
+ <div class="content">璁垮</div>
</div>
<div class="arrows">
<div class="line"></div>
<img src="@/assets/images/peizhi_ar@2x.png" alt="" />
</div>
- <div
- class="item yellow"
- :class="{ active: activeSel === 'one' }"
- @click="flowClick('one')"
- >
- <div class="head">瀹℃壒浜�</div>
- <div class="content">
- <div>鏌愭煇-缁煎悎绉�</div>
- <i class="el-icon-arrow-right"></i>
+ <div v-for="(item, index) in apprList" :key="index">
+ <div
+ class="item yellow"
+ :class="{
+ active: activeIndex == index,
+ blue: item.type == '1',
+ }"
+ @click="flowClick(index)"
+ >
+ <div class="head">{{ item.remark }}</div>
+ <div class="content">
+ <div v-if="item.objIds && item.objIds.length === 1 ">
+ <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span>
+ <span v-if="item.approveType == 0"> 鎴栫</span>
+ <span v-if="item.approveType == 1"> 浼氱</span>
+ </div>
+ <div v-else-if="item.objIds && item.objIds.length > 1">
+ <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}绛�</span>
+ <span v-if="item.approveType == 0"> 鎴栫</span>
+ <span v-if="item.approveType == 1"> 浼氱</span>
+ </div>
+ <div v-else>璇烽�夋嫨</div>
+ <i class="el-icon-arrow-right"></i>
+ </div>
</div>
- </div>
- <div class="arrows">
- <div class="line"></div>
- <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
- </div>
- <div
- class="item yellow"
- :class="{ active: activeSel === 'one' }"
- @click="flowClick('one')"
- >
- <div class="head">瀹℃壒浜�</div>
- <div class="content">
- <div>鏉庣惓-缁煎悎绉�</div>
- <i class="el-icon-arrow-right"></i>
- </div>
- </div>
- <div class="arrows">
- <div class="line"></div>
- <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
- </div>
- <div
- class="item blue"
- :class="{ active: activeSel === 'two' }"
- @click="flowClick('two')"
- >
- <div class="head">鎶勯�佷汉</div>
- <div class="content">
- <div>鎸囨淳椹鹃┒鍛�</div>
- <i class="el-icon-arrow-right"></i>
+ <div class="arrows">
+ <template v-if="apprList.length - 1 !== index">
+ <div class="line"></div>
+ <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
+ </template>
+ <i
+ v-if="apprList.length - 2 === index"
+ @click="handleAddAppr()"
+ class="el-icon-circle-plus add"
+ ></i>
</div>
</div>
</div>
@@ -66,55 +61,97 @@
<div class="config_data">
<div class="config_data_item">
<div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
- <el-radio-group v-model="radio">
+ <div class="df_ac mb10">
+ <div>瀹℃壒鑺傜偣鍚嶇О</div>
+ <el-input
+ class="w200 ml10"
+ v-model="apprList[activeIndex].remark"
+ ></el-input>
+ </div>
+ <!-- 鎶勯�佷汉 -->
+ <template v-if="apprList[activeIndex].type == '1'">
+ <div class="config_data_item_reviewed_content">
+ <div
+ v-for="mem in apprList[activeIndex].objIds"
+ :key="mem.id"
+ class="config_data_item_reviewed_content_item"
+ >
+ <span>{{ mem.name }}</span>
+ <i class="el-icon-close"></i>
+ </div>
+ <span class="add" @click="selStaff">+娣诲姞</span>
+ </div>
+ </template>
+ <el-radio-group
+ v-if="apprList[activeIndex].type == '0'"
+ v-model="apprList[activeIndex].memberType"
+ >
+ <!-- <el-radio :label="0">琚浜�</el-radio> -->
<el-radio :label="1">鎸囧畾浜哄憳</el-radio>
<el-radio :label="2">閮ㄩ棬涓荤</el-radio>
</el-radio-group>
- <div class="config_data_item_reviewed" v-if="radio === 1">
+ <div
+ class="config_data_item_reviewed"
+ v-if="apprList[activeIndex].memberType == 1"
+ >
<div class="config_data_item_reviewed_label">
<span>鎸囧畾瀹℃牳浜�</span>
<span>涓嶈秴杩�20浜�</span>
</div>
<div class="config_data_item_reviewed_content">
- <div class="config_data_item_reviewed_content_item">
- <span>鏍撳瓙鍝�</span>
- <i class="el-icon-close"></i>
+ <div
+ v-for="(mem, memIndex) in apprList[activeIndex].objIds"
+ :key="mem.id"
+ class="config_data_item_reviewed_content_item"
+ >
+ <span>{{ mem.name }}</span>
+ <i class="el-icon-close" @click="memDel(memIndex)"></i>
</div>
<span class="add" @click="selStaff">+娣诲姞</span>
</div>
</div>
- <div class="config_data_item_reviewed" v-if="radio === 2">
+ <div
+ class="config_data_item_reviewed"
+ v-if="apprList[activeIndex].memberType == 2"
+ >
<div class="config_data_item_reviewed_label">
<span>閮ㄩ棬涓荤</span>
</div>
<div class="config_data_item_reviewed_r">
<span>琚浜虹殑</span>
<el-select
- v-model="value"
+ v-model="apprList[activeIndex].level"
placeholder="璇烽�夋嫨"
style="margin: 0 20px 0 10px"
>
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
+ <el-option label="鐩存帴涓荤" :value="0" />
+ <el-option label="浜岀骇涓荤" :value="1" />
+ <el-option label="涓夌骇涓荤" :value="2" />
+ <el-option label="鍥涚骇涓荤" :value="4" />
</el-select>
- <el-checkbox v-model="checked"
+ <el-checkbox
+ v-model="apprList[activeIndex].noleaderOpt"
+ :true-label="1"
+ :false-label="0"
>鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
>
</div>
</div>
</div>
- <div class="config_data_item" v-if="radio !== 0">
+ <div
+ class="config_data_item"
+ v-if="
+ (apprList[activeIndex].memberType == 1 ||
+ apprList[activeIndex].memberType == 2) &&
+ apprList[activeIndex].type == '0'
+ "
+ >
<div class="config_data_item_label">
瀹℃壒鏂瑰紡
<span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
</div>
<el-radio-group
- v-model="radio1"
+ v-model="apprList[activeIndex].approveType"
style="display: flex; flex-direction: column"
>
<el-radio :label="0" style="margin-bottom: 20px"
@@ -123,56 +160,77 @@
<el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
</el-radio-group>
</div>
- <div class="df_ac">
- <span class="mr10"><strong>鍏佽淇敼鐢宠椤�</strong></span>
- <el-switch v-model="param.aa" active-value="1" inactive-value="0">
- </el-switch>
+ <div v-if="apprList[activeIndex].type == '0'" class="df_ac mb10">
+ <div>鍏佽淇敼"椹鹃┒鍛�"</div>
+ <el-switch
+ class="ml10"
+ active-value="0"
+ inactive-value="1"
+ v-model="apprList[activeIndex].driverParam"
+ ></el-switch>
</div>
- <div class="df_ac mt10">
- <span class="mr20">閫夋嫨淇敼椤�</span>
- <el-select
- v-model="param.list"
- collapse-tags
- multiple
- placeholder="璇烽�夋嫨,澶氶��"
- >
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </div>
- <div class="config_data_submit" v-if="radio !== 0">
- <el-button style="background: #435ebe" type="primary"
+ <div class="config_data_submit">
+ <el-button
+ @click="onSubmit"
+ style="background: #435ebe"
+ type="primary"
>淇濆瓨閰嶇疆椤�</el-button
+ >
+ <el-button
+ v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
+ type="danger"
+ plain
+ @click="handleDel"
+ >鍒犻櫎鑺傜偣</el-button
>
</div>
</div>
</div>
</template>
<!-- -->
- <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="800px">
- <tree-transfer
- v-model="param.menuIds"
- :title="['鏈��', '宸查��']"
- :from_data="fromData"
- :to_data="selData"
- :defaultProps="{ label: 'label' }"
- mode="transfer"
- height="500px"
- filter
- openAll
- ref="treeTransfer"
- >
- </tree-transfer>
+ <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
+ <div class="staff_modal">
+ <div class="left">
+ <div
+ style="
+ width: 100%;
+ height: 50px;
+ background: rgba(242, 242, 242, 1);
+ line-height: 50px;
+ text-align: center;
+ font-size: 14px;
+ "
+ >
+ 浼佷笟缁勭粐鏋舵瀯
+ </div>
+ <div style="width: 100%; height: 100%; overflow-y: scroll">
+ <Tree
+ :list="companyTree"
+ :defaultProps="{
+ name: 'name',
+ status: 'fsStatus',
+ children: 'childList',
+ id: 'id',
+ }"
+ @callback="callback"
+ />
+ </div>
+ </div>
+ <el-transfer
+ filterable
+ :title="['鏈��', '宸查��']"
+ openAll
+ :props="{ label: 'name', key: 'keyTemp' }"
+ filter-placeholder="鎼滅储鍛樺伐"
+ v-model="searchForm.objIds"
+ :data="memberList"
+ class="transfer"
+ >
+ </el-transfer>
+ </div>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="isShowTransfer = false"
- >纭� 瀹�</el-button
- >
+ <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
</span>
</el-dialog>
</TableLayout>
@@ -180,89 +238,195 @@
<script>
import TableLayout from '@/layouts/TableLayout'
-import treeTransfer from 'el-tree-transfer'
+// import treeTransfer from 'el-tree-transfer'
+import Tree from '@/components/common/Tree'
+import { approveTemplSave, approveTemplByType } from '@/api'
+import { fetchList } from '@/api/business/company'
+import { fetchList as memberListPost } from '@/api/business/member'
export default {
name: 'config',
components: {
TableLayout,
- treeTransfer
+ Tree
},
- data() {
+ data () {
return {
-
- value: '',
- radio: 0,
- radio1: 0,
- checked: '',
- checkList: [],
+ activeType: '3',
+ apprList: [
+ { remark: '瀹℃壒浜�', active: false, type: '0', objIds: [] },
+ { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
+ ],
+ activeIndex: 0,
param: {},
- activeSel: 'one',
- activeName: 'first',
+ searchForm: {},
isShowTransfer: false,
- fromData: [
- {
- id: '1',
- pid: 0,
- label: '涓�绾� 1',
- children: [
- {
- id: '1-1',
- pid: '1',
- label: '浜岀骇 1-1',
- disabled: true,
- children: []
- },
- {
- id: '1-2',
- pid: '1',
- label: '浜岀骇 1-2',
- children: [
- {
- id: '1-2-1',
- pid: '1-2',
- children: [],
- label: '浜岀骇 1-2-1'
- },
- {
- id: '1-2-2',
- pid: '1-2',
- children: [],
- label: '浜岀骇 1-2-2'
- }
- ]
- }
- ]
- }
- ],
- options: [{
- value: '閫夐」1',
- label: '榛勯噾绯�'
- }, {
- value: '閫夐」2',
- label: '鍙岀毊濂�'
- }, {
- value: '閫夐」3',
- label: '铓典粩鐓�'
- }, {
- value: '閫夐」4',
- label: '榫欓』闈�'
- }, {
- value: '閫夐」5',
- label: '鍖椾含鐑ら腑'
- }],
- selData: []
+ memberList: [],
+ companyTree: []
}
},
+ created () {
+ this.getfindCompanyTreePage()
+ this.initDate()
+ },
methods: {
- flowClick(val) {
- this.activeSel = val
+ handleClick () {
+ this.apprList = []
+ const arr = [
+ { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] },
+ { remark: '鎶勯�佷汉', active: false, type: 1, objIds: [] }
+ ]
+ this.apprList = [...arr]
+ this.initDate()
+ },
+ flowClick (i) {
+ this.activeIndex = i
+ this.apprList.forEach((item, index) => {
+ if (i === index) {
+ item.active = true
+ if (item.objIds && item.objIds.length > 0) {
+ const objIds = item.objIds.map(i => {
+ return i.id + '-' + i.name
+ })
+ this.$set(this.searchForm, 'objIds', objIds)
+ } else {
+ this.$set(this.searchForm, 'objIds', [])
+ }
+ } else {
+ item.active = false
+ }
+ })
+ },
+ initDate () {
+ const { activeType } = this
+ approveTemplByType(activeType).then(res => {
+ if (res && res.paramList) {
+ const arr = res.paramList || []
+ arr.forEach(item => {
+ if (item.memberList && item.memberList.length > 0) {
+ item.objIds = item.memberList.map(i => {
+ return {
+ id: i.id,
+ name: i.name
+ }
+ })
+ }
+ })
+ this.apprList = arr
+ }
+
+ // console.log(res);
+ })
+ this.flowClick(0)
+ this.$forceUpdate()
+ },
+ onSubmit () {
+ const { apprList, activeType } = this
+ const temp = JSON.parse(JSON.stringify(apprList))
+ temp.forEach((item, index) => {
+ item.level = index + 1
+ if (item.objIds && item.objIds.length > 0) {
+ item.objIds = item.objIds.map(i => i.id).join(',')
+ }
+ })
+ approveTemplSave({
+ type: activeType,
+ paramList: temp
+ }).then(res => {
+ // if (res.code === 200) {
+ this.$tip.success('淇濆瓨鎴愬姛')
+ // }
+ })
+ },
+ handleDel () {
+ const { activeIndex } = this
+ this.apprList.splice(activeIndex, 1)
+ this.activeIndex = 0
+ },
+ handleAddAppr () {
+ this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] })
+ // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
},
- selStaff() {
- this.isShowTransfer = true
+ // 鑾峰彇缁勭粐鏍�
+ getfindCompanyTreePage () {
+ fetchList()
+ .then(res => {
+ if (res && res.length > 0) {
+ res[0].fsStatus = 1
+ this.companyTree = res
+ // // this.searchForm.erpOrgId = res[0].erpId
+ // this.search()
+ // this.department = this.getDepartmentTree(res)
+ }
+ })
},
- seleItem(i) {
+ getMemberList () {
+ memberListPost({
+ model: {
+ companyId: this.searchForm.companyId || '',
+ canVisit: '',
+ companyType: 1,
+ erpOrgId: '',
+ hasFace: '',
+ hkStatus: '',
+ includeChild: false,
+ type: 2
+ },
+ page: 1,
+ capacity: 30
+ }).then(res => {
+ this.memberList = res.records || []
+ this.memberList.forEach(item => {
+ item.keyTemp = item.id + '-' + item.name + '-' + item.companyName || ''
+ })
+ // console.log('defaultProps', res)
+ })
+ },
+ callback (row) {
+ console.log(row)
+ this.$set(this.searchForm, 'companyId', row.id)
+ this.$set(this.searchForm, 'erpOrgId', row.erpId)
+ this.getMemberList()
+ },
+ TransferSub () {
+ const { activeIndex } = this
+ if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
+ if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
+ const arr = this.searchForm.objIds.map(ii => {
+ const obj = ii.split('-')
+ return {
+ id: Number(obj[0]),
+ name: obj[1],
+ companyName: obj[2] || ''
+ }
+ })
+ this.apprList.forEach((item, index) => {
+ if (activeIndex === index) {
+ item.objIds = arr
+ }
+ })
+ }
+ this.isShowTransfer = false
+ console.log(this.searchForm.objIds)
+ },
+ memDel (memIndex) {
+ const { activeIndex } = this
+ this.apprList.forEach((item, index) => {
+ if (activeIndex === index) {
+ item.objIds.splice(memIndex, 1)
+ const objIds = item.objIds.map(i => {
+ return i.id + '-' + i.name
+ })
+ this.$set(this.searchForm, 'objIds', objIds)
+ }
+ })
+ },
+ selStaff () {
+ this.isShowTransfer = true
+ this.getMemberList()
+ },
+ seleItem (i) {
this.list.forEach((item, index) => {
item.active = index === i
})
@@ -326,10 +490,19 @@
display: flex;
flex-direction: column;
align-items: center;
+ position: relative;
.line {
width: 1px;
height: 60px;
background-color: #ccc;
+ }
+ .add {
+ font-size: 40px;
+ color: #2080f7;
+ position: absolute;
+ cursor: pointer;
+ z-index: 999;
+ top: 10px;
}
img {
width: 12px;
@@ -424,45 +597,61 @@
}
}
}
- .config_data_item_reviewed_content {
- width: 400px;
- margin-top: 10px;
- height: 110px;
- padding: 12px;
- box-sizing: border-box;
- border-radius: 2px;
- border: 1px solid #dfe2e8;
- display: flex;
- align-items: flex-start;
- flex-wrap: wrap;
- .add {
- font-size: 12px;
- font-weight: 400;
- color: #435ebe;
- cursor: pointer;
- margin-top: 3px;
- }
- .config_data_item_reviewed_content_item {
- padding: 3px 5px;
- background: #f4f7fc;
- border-radius: 2px;
- box-sizing: border-box;
- margin-right: 10px;
- margin-bottom: 10px;
- span {
- font-size: 12px;
- font-weight: 400;
- color: #333333;
- }
- i {
- color: #949ba2;
- margin-left: 10px;
- cursor: pointer;
- }
- }
- }
}
}
}
}
+.config_data_item_reviewed_content {
+ width: 400px;
+ margin-top: 10px;
+ height: 110px;
+ padding: 12px;
+ box-sizing: border-box;
+ border-radius: 2px;
+ border: 1px solid #dfe2e8;
+ display: flex;
+ align-items: flex-start;
+ flex-wrap: wrap;
+ .add {
+ font-size: 12px;
+ font-weight: 400;
+ color: #435ebe;
+ cursor: pointer;
+ margin-top: 3px;
+ }
+ .config_data_item_reviewed_content_item {
+ padding: 3px 5px;
+ background: #f4f7fc;
+ border-radius: 2px;
+ box-sizing: border-box;
+ margin-right: 10px;
+ margin-bottom: 10px;
+ span {
+ font-size: 12px;
+ font-weight: 400;
+ color: #333333;
+ }
+ i {
+ color: #949ba2;
+ margin-left: 10px;
+ cursor: pointer;
+ }
+ }
+}
+.staff_modal {
+ display: flex;
+ .left {
+ width: 300px;
+ margin-right: 20px;
+ }
+ .transfer {
+ height: 600px;
+ ::v-deep .el-transfer-panel__body {
+ height: 500px;
+ }
+ ::v-deep .el-transfer-panel__list.is-filterable {
+ height: 480px;
+ }
+ }
+}
</style>
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index d5f30a6..85fa291 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -1,10 +1,9 @@
<template>
<div class="main_app">
- <div class="main_head mb20">
- <el-tabs v-model="currentPlatform" class="tabs">
- <!-- <el-tab-pane label="鐢ㄦ埛绠$悊" name="first" v-for="item in platformList" :key="item.id"></el-tab-pane> -->
- <el-tab-pane label="鐢ㄦ埛绠$悊" name="first"></el-tab-pane>
- </el-tabs>
+ <div class="mb20">
+ <el-select v-model="platformId" @change="getList()">
+ <el-option v-for="item in PlatformList" :key="item.id" :value="item.id" :label="item.name" />
+ </el-select>
<el-button type="primary" class="ml20" @click="handleSet"
>閰嶇疆鏈堝彴</el-button
>
@@ -213,11 +212,13 @@
</template>
<script>
+import { getPlatform, getPlatformJob } from '@/api'
export default {
- data() {
+ data () {
return {
- currentPlatform: '',
- platformList: [],
+ platformId: '',
+ PlatformList: [],
+ dataList: [],
isShowSet: false, // 鏈堝彴閰嶇疆
setParam: {},
@@ -227,22 +228,41 @@
queuingForm: {}
}
},
+ created () {
+ this.getPlatList()
+ this.getList()
+ },
methods: {
- handleQueuing(row) {
+ handleQueuing (row) {
this.isShowQueuing = true
},
- handleFinish(item) {
+ getList () {
+ const { platformId } = this
+ getPlatformJob({
+ model: { platformId }
+ }).then(res => {
+ this.dataList = res.records
+ })
+ },
+ handleFinish (item) {
this.$confirm('楂樻灦搴�6鍙锋湀鍙� 鐨朅12345 浣滀笟缁撴潫', '娓╅Θ鎻愮ず', {
confirmButtonText: '纭畾',
cancelButtonText: '鍙栨秷',
type: 'warning'
})
},
- handleSet() {
+ getPlatList () {
+ getPlatform({
+ model: {}
+ }).then(res => {
+ this.PlatformList = res.records
+ })
+ },
+ handleSet () {
this.isShowSet = true
},
- setReset() { },
- setSub() { }
+ setReset () { },
+ setSub () { }
}
}
</script>
diff --git a/admin/src/views/platform/set/index.vue b/admin/src/views/platform/set/index.vue
index a596791..9c2c790 100644
--- a/admin/src/views/platform/set/index.vue
+++ b/admin/src/views/platform/set/index.vue
@@ -6,7 +6,7 @@
@handleQuery="getList(1)"
@clear="clear"
/>
- <el-table v-loading="loading" :data="list" stripe>
+ <el-table v-loading="loading" :data="dataList" stripe>
<el-table-column
prop="name"
label="鏈堝彴鍚嶇О"
@@ -18,21 +18,31 @@
label="宸ヤ綔鏃堕棿"
min-width="100"
show-overflow-tooltip
- />
+ >
+ <template v-slot="scope">
+ <span>{{ scope.row.startTime }}-{{ scope.row.endTime }}</span>
+ </template>
+ </el-table-column>
<el-table-column
- prop="name"
- label="鍚屾椂浣滀笟鎶ヨ鏃堕棿"
+ prop="workingNum"
+ label="鍚屾椂浣滀笟杞﹁締鏁�"
min-width="100"
show-overflow-tooltip
/>
<el-table-column
- prop="name"
+ prop="alermTime"
+ label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓)"
+ min-width="100"
+ show-overflow-tooltip
+ />
+ <el-table-column
+ prop="wariCallTime"
label="鍙彿绛夊緟鏃堕棿(鍒嗛挓)"
min-width="80"
show-overflow-tooltip
/>
<el-table-column
- prop="name"
+ prop=""
label="鏈堝彴浣滀笟鏁堢巼(涓囨敮/灏忔椂)"
min-width="120"
show-overflow-tooltip
@@ -46,8 +56,9 @@
<template v-slot="scope">
<el-switch
v-model="scope.row.status"
- active-value="1"
- inactive-value="0"
+ active-value="0"
+ inactive-value="1"
+ @change="e => changeStatus(scope.row)"
>
</el-switch>
</template>
@@ -84,25 +95,32 @@
label-width="140px"
>
<el-form-item label="鏈堝彴鍚嶇О">
- <el-input v-model="param.aaa" class="w300" disabled></el-input>
+ <el-input v-model="param.name" class="w300" disabled></el-input>
</el-form-item>
<el-form-item label="宸ヤ綔鏃堕棿">
<el-time-picker
- is-range
- class="w300"
- v-model="param.val"
+ class="w100"
+ v-model="param.startTime"
+ range-separator="鑷�"
+ value-format="HH:mm"
+ format="HH:mm"
+ />
+ 鑷�
+ <el-time-picker
+ class="w100"
+ v-model="param.endTime"
range-separator="鑷�"
value-format="HH:mm"
format="HH:mm"
/>
</el-form-item>
<el-form-item label="鍚屾椂浣滀笟杞﹁締鏁�">
- <el-input v-model="param.aaa" class="w300"></el-input>
+ <el-input v-model="param.workingNum" class="w300"></el-input>
<span class="ml10">涓�</span>
</el-form-item>
<el-form-item label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿">
<el-input
- v-model="param.aaa"
+ v-model="param.alermTime"
placeholder="璇疯緭鍏�"
class="w300"
></el-input>
@@ -110,7 +128,7 @@
</el-form-item>
<el-form-item label="鍙彿绛夊緟鏃堕棿" prop="name">
<el-input
- v-model="param.aaa"
+ v-model="param.wariCallTime"
placeholder="璇疯緭鍏�"
class="w300"
></el-input>
@@ -125,6 +143,14 @@
/>
<span class="ml10">涓囨敮/灏忔椂</span>
</el-form-item>
+ <el-form-item label="浣滀笟瓒呮椂鎶ヨ鏃堕棿">
+ <el-input
+ v-model="param.aaa"
+ placeholder="璇疯緭鍏�"
+ class="w300"
+ ></el-input>
+ <span class="ml10">鍒嗛挓</span>
+ </el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowEdit = false">鍙栨秷</el-button>
@@ -137,6 +163,7 @@
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
+import { getPlatform, PlatformEdit, PlatformDel } from '@/api'
export default {
components: {
Pagination,
@@ -160,21 +187,66 @@
capacity: 10,
page: 1
},
- list: [{}],
+ dataList: [{}],
total: 0,
isShowEdit: false,
param: {},
rules: {}
}
},
+ created () {
+ this.getList()
+ },
methods: {
- getList (page) { },
- handleSub () { },
- clear () { },
+ getList (page) {
+ const { filters, pagination } = this
+ pagination.page = page || pagination.page
+ getPlatform({
+ model: { ...filters },
+ ...pagination
+ }).then(res => {
+ this.dataList = res.records
+ })
+ },
+ handleDel (item) {
+ this.$confirm('纭畾鍒犻櫎璇ユ湀鍙板悧, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(res => {
+ PlatformDel(item.id).then(() => {
+ this.getList()
+ this.$tip.success('鍒犻櫎鎴愬姛')
+ })
+ })
+ },
+ handleSub () {
+ const { param } = this
+ PlatformEdit({
+ ...param
+ }).then(res => {
+ this.isShowEdit = false
+ this.$tip.success('鎻愪氦鎴愬姛')
+ this.getList()
+ })
+ },
+ changeStatus (item) {
+ PlatformEdit({
+ ...item,
+ status: item.stauts == 1 ? 0 : 1
+ }).then(res => {
+ this.$tip.success('鏇存柊鎴愬姛')
+ this.getList()
+ })
+ },
+ clear () {
+ this.filters = {}
+ this.getList(0)
+ },
handleEdit (row) {
this.isShowEdit = true
+ this.param = { ...row }
},
- handleDel () { },
handleSizeChange (capacity) {
this.pagination.capacity = capacity
}
diff --git a/admin/src/views/task/dangetDetail.vue b/admin/src/views/task/dangetDetail.vue
new file mode 100644
index 0000000..76d3a71
--- /dev/null
+++ b/admin/src/views/task/dangetDetail.vue
@@ -0,0 +1,846 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="isShowModal" @confirm="confirm">
+ <div class="modal_wrap">
+ <div class="modal_content">
+ <div class="header">
+ <div class="left">
+ <div class="h1">{{ cateList[type] }}</div>
+ <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
+ </div>
+ <div class="right">{{ statusMap[info.status] }}</div>
+ </div>
+ <div class="info">
+ <div class="title">闅愭偅闅忔墜鎷嶄俊鎭�</div>
+ <div class="list">
+ <div class="item">
+ <div class="label">鎻愭姤浜�</div>
+ <div class="value">
+ {{ info.memberName }} {{ info.memberPhone }}
+ </div>
+ </div>
+ <div class="item">
+ <div class="label">闅愭偅鍖哄煙</div>
+ <div class="value">{{ info.areaName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">闅愭偅绫诲瀷</div>
+ <div class="value">{{ info.categoryName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">闅愭偅鎻忚堪</div>
+ <div class="value">{{ info.content }}</div>
+ </div>
+ <div class="item file">
+ <div class="label">鐜板満鎯呭喌</div>
+ <div class="value">
+ <div class="file_list">
+ <template v-for="item in info.submitFileList">
+ <img
+ v-if="item.type == 0"
+ :key="item.id"
+ :src="item.fileurlFull"
+ mode="widthFix"
+ class="img"
+ />
+ <video
+ v-if="item.type == 1"
+ :key="item.id"
+ :src="item.fileurlFull"
+ class="img"
+ controls
+ />
+ </template>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="side">
+ <div class="side_title">瀹℃壒娴佺▼</div>
+ <div
+ class="list"
+ v-if="
+ info.approveDateVO != null && info.approveDateVO.approveList != null
+ "
+ >
+ <div
+ class="item"
+ v-for="(item, index) in info.approveDateVO.approveList"
+ :key="item.id"
+ >
+ <div
+ class="separate"
+ v-if="index < info.approveDateVO.approveList.length - 1"
+ ></div>
+ <div class="info">
+ <img
+ src="@/assets/icons/ic_tongguo.png"
+ class="iconnew"
+ v-if="item.status == 2"
+ />
+ <img
+ src="@/assets/icons/ic_dangqian.png"
+ class="iconnew"
+ v-if="item.status == 1"
+ />
+ <img
+ src="@/assets/icons/ic_jujue.png"
+ class="iconnew"
+ v-if="item.status == 3"
+ />
+ <img
+ src="@/assets/icons/ic_grey.png"
+ class="iconnew"
+ v-if="item.status == null || item.status == 0"
+ />
+ <div style="display: inline" v-if="item.approveType != 1">
+ <img
+ v-if="item.faceImg != null && item.faceImg != ''"
+ :src="item.faceImg"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item.faceImg == null || item.faceImg == ''"
+ src="@/assets/avatar/man.png"
+ class="avatar"
+ alt=""
+ />
+ </div>
+ <div style="display: inline" v-if="item.approveType == 1">
+ <img
+ v-if="item.type != 1"
+ src="@/assets/icons/ic_duoren.png"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item.type == 1"
+ src="@/assets/icons/ic_chaosong.png"
+ class="avatar"
+ alt=""
+ />
+ </div>
+ <div class="content">
+ <div class="line">
+ <div class="name">{{ item.title }}</div>
+ <div class="time">{{ item.checkDate }}</div>
+ </div>
+ <div class="line">
+ <div class="company">
+ {{ item.memberName }}
+ <div
+ style="display: inline"
+ v-if="item.statusInfo != null && item.statusInfo != ''"
+ >
+ 锛�<span class="status-green">{{
+ item.statusInfo || ""
+ }}</span
+ >锛�
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div
+ v-if="
+ item.approveType != 1 &&
+ item.checkInfo != null &&
+ item.checkInfo != ''
+ "
+ class="remark"
+ >
+ {{ item.checkInfo || "" }}
+ </div>
+ <div v-if="item.approveType == 1" class="childList">
+ <div
+ class="m_content company"
+ v-for="item1 in item.approveList"
+ :key="item1.id"
+ >
+ <img
+ v-if="item1.faceImg != null && item1.faceImg != ''"
+ :src="item1.faceImg"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item1.faceImg == null || item1.faceImg == ''"
+ src="@/assets/avatar/man.png"
+ class="avatar"
+ alt=""
+ />
+ <span> {{ item1.memberName }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- -->
+ <template v-slot:footer>
+ <el-button @click="handleAppr" type="primary" class="status-red"
+ >澶勭悊</el-button
+ >
+ <el-button @click="isShowTransfer = true" type="primary" plain
+ >杞氦</el-button
+ >
+ <el-button @click="isShowBack = true" type="danger" plain>閫�鍥�</el-button>
+ <el-button @click="isShowModal = false">杩斿洖</el-button>
+ </template>
+ <!-- 鍚屾剰/鎷掔粷 -->
+ <el-dialog
+ append-to-body
+ title="闅愭偅杞氦"
+ :visible.sync="isShowTransfer"
+ width="600px"
+ >
+ <el-form
+ :model="transferForm"
+ :rules="handleRules"
+ ref="transferForm"
+ label-width="100px"
+ class="demo-ruleForm"
+ >
+ <el-form-item label="闅愭偅杞氦浜�" prop="checkUserId">
+ <el-select
+ v-model="transferForm.checkUserId"
+ filterable
+ placeholder="璇烽�夋嫨 鍗曢��"
+ >
+ <el-option
+ v-for="item in memberList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowTransfer = false">鍙栨秷</el-button>
+ <el-button :loading="subLoading" type="primary" @click="onTransfer"
+ >纭畾</el-button
+ >
+ </span>
+ </el-dialog>
+ <!-- 闅愭偅 -->
+ <el-dialog
+ append-to-body
+ title="闅愭偅鏁存敼"
+ :visible.sync="isShowProblem"
+ width="600px"
+ >
+ <el-form
+ :model="handleParam"
+ :rules="handleRules"
+ ref="handleForm"
+ label-width="100px"
+ >
+ <el-form-item label="鏁存敼鏃堕棿" prop="dealTime">
+ <el-date-picker
+ class="w300"
+ value-format="yyyy-MM-dd hh:mm:ss"
+ type="datetime"
+ placeholder="閫夋嫨鏃ユ湡"
+ v-model="handleParam.dealTime"
+ />
+ </el-form-item>
+ <el-form-item label="鏁存敼鍓�" prop="dealBeforeFileList">
+ <div class="upload_wrap">
+ <el-upload
+ class="avatar-uploader"
+ :action="uploadUrl"
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :before-upload="beforeAvatarUpload"
+ >
+ <img v-if="param.url" :src="param.url" class="avatar" />
+ <div v-else class="upload_box">
+ <el-icon class="el-icon-plus icon" />
+ <div class="text">鍥剧墖/瑙嗛</div>
+ </div>
+ </el-upload>
+ <template v-if="handleParam.dealBeforeFileList">
+ <div
+ class="img_wrap"
+ v-for="(img, i) in handleParam.dealBeforeFileList"
+ :key="i"
+ >
+ <img v-if="img.type == 0" :src="img.fileurlFull" alt="" />
+ <video
+ v-if="img.type == 1"
+ :src="img.fileurlFull"
+ controls
+ alt=""
+ />
+ </div>
+ </template>
+ </div>
+ </el-form-item>
+ <el-form-item label="鏁存敼鍚�" prop="dealAfterFileList">
+ <div class="upload_wrap">
+ <el-upload
+ class="avatar-uploader"
+ :action="uploadUrl"
+ :show-file-list="false"
+ :on-success="handleAfterSuccess"
+ :before-upload="beforeAvatarUpload"
+ >
+ <img v-if="param.url" :src="param.url" class="avatar" />
+ <div v-else class="upload_box">
+ <el-icon class="el-icon-plus icon" />
+ <div class="text">鍥剧墖/瑙嗛</div>
+ </div>
+ </el-upload>
+ <template v-if="handleParam.dealAfterFileList">
+ <div
+ class="img_wrap"
+ v-for="(img, i) in handleParam.dealAfterFileList"
+ :key="i"
+ >
+ <img v-if="img.type == 0" :src="img.fileurlFull" alt="" />
+ <video
+ v-if="img.type == 1"
+ :src="img.fileurlFull"
+ controls
+ alt=""
+ />
+ </div>
+ </template>
+ </div>
+ </el-form-item>
+ <el-form-item label="鏁存敼璇存槑">
+ <el-input
+ type="textarea"
+ placeholder="璇峰~鍐欒鏄�"
+ :rows="4"
+ v-model="handleParam.checkInfo"
+ />
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowProblem = false">鍙栨秷</el-button>
+ <el-button type="primary" :loading="subLoading" @click="onSubAppr"
+ >纭畾</el-button
+ >
+ </span>
+ </el-dialog>
+ <el-dialog
+ append-to-body
+ title="闅愭偅閫�鍥�"
+ :visible.sync="isShowBack"
+ width="600px"
+ >
+ <el-form
+ :model="backForm"
+ :rules="handleRules"
+ ref="backForm"
+ label-width="100px"
+ >
+ <el-form-item label="鏁存敼鏃堕棿" prop="dealTime">
+ <el-date-picker
+ class="w300"
+ value-format="yyyy-MM-dd hh:mm:ss"
+ type="datetime"
+ placeholder="閫夋嫨鏃ユ湡"
+ v-model="backForm.dealTime"
+ />
+ </el-form-item>
+ <el-form-item label="鏁存敼鍓�">
+ <div class="upload_wrap">
+ <el-upload
+ class="avatar-uploader"
+ :action="uploadUrl"
+ :show-file-list="false"
+ :on-success="handleBackSuccess"
+ :before-upload="beforeAvatarUpload"
+ >
+ <div class="upload_box">
+ <el-icon class="el-icon-plus icon" />
+ <div class="text">鍥剧墖/瑙嗛</div>
+ </div>
+ </el-upload>
+ <template v-if="backForm.dealBeforeFileList">
+ <div
+ class="img_wrap"
+ v-for="(img, i) in backForm.dealBeforeFileList"
+ :key="i"
+ >
+ <img v-if="img.type == 0" :src="img.fileurlFull" alt="" />
+ <video
+ v-if="img.type == 1"
+ :src="img.fileurlFull"
+ controls
+ alt=""
+ />
+ </div>
+ </template>
+ </div>
+ </el-form-item>
+ <el-form-item label="鏁存敼璇存槑">
+ <el-input
+ type="textarea"
+ placeholder="璇峰~鍐欒鏄�"
+ :rows="4"
+ v-model="backForm.checkInfo"
+ />
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowBack = false">鍙栨秷</el-button>
+ <el-button type="primary" :loading="subLoading" @click="onSubBack"
+ >纭畾</el-button
+ >
+ </span>
+ </el-dialog>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { memberList } from '@/api/business/hiddenDangerParam'
+import {
+ uploadFile,
+ hiddenDangerDetail,
+ dealHiddenDanger,
+ transferHiddenDanger
+} from '@/api/index'
+
+export default {
+ components: { GlobalWindow },
+ data () {
+ return {
+ id: '',
+ type: '',
+ uploadUrl: uploadFile,
+
+ title: '璁垮棰勭害璇︽儏',
+ isShowModal: false,
+ info: {},
+ isShowAppr: false,
+ apprTitle: '鍚屾剰',
+ subLoading: false,
+ param: {},
+ handleParam: {},
+ backForm: {},
+ isShowBack: false,
+ isShowTransfer: false,
+ transferForm: {},
+ memberList: [],
+ isShowProblem: false,
+ rules: {
+ checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
+ },
+ handleRules: {
+ dealTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+ dealBeforeFileList: [{ type: 'array', required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+ checkUserId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+ dealAfterFileList: [{ type: 'array', required: true, message: '璇烽�夋嫨', trigger: 'change' }]
+ },
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒鏈�氳繃',
+ 4: '宸插彇娑�',
+ 5: '浠栦汉鎴栫',
+ 6: '浠栦汉鎷掔粷'
+ },
+ cateList: {
+ 0: '璁垮鐢宠',
+ 1: '璁垮鎶ュ',
+ 2: '鐢ㄨ溅鐢宠',
+ 3: '闅愭偅闅忔墜鎷�',
+ 4: '鐗╂祦杞︾敵璇�'
+ }
+ }
+ },
+ created() {
+ this.getMemberList()
+ },
+ methods: {
+ onSubAppr () {
+ this.$refs.handleForm.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.subLoading = true
+ dealHiddenDanger({
+ ...this.handleParam,
+ status: 1,
+ id: this.id
+ })
+ .then(res => {
+ this.subLoading = false
+ this.$tip.apiSuccess('澶勭悊鎴愬姛')
+ this.getDetail()
+ this.isShowProblem = false
+ })
+ .finally(() => {
+ this.subLoading = false
+ })
+ })
+ },
+ onSubBack () {
+ this.$refs.backForm.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.subLoading = true
+ dealHiddenDanger({
+ ...this.backForm,
+ status: 2,
+ id: this.id
+ })
+ .then(res => {
+ this.subLoading = false
+ this.$tip.apiSuccess('閫�鍥炴垚鍔�')
+ this.getDetail()
+ this.isShowProblem = false
+ })
+ .finally(() => {
+ this.subLoading = false
+ })
+ })
+ },
+ onTransfer () {
+ this.$refs.transferForm.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.subLoading = true
+ transferHiddenDanger({
+ ...this.transferForm,
+ id: this.id
+ })
+ .then(res => {
+ this.subLoading = false
+ if (res.code !== 200) return
+ this.$tip.apiSuccess('杞氦鎴愬姛')
+ this.getDetail()
+ this.isShowTransfer = false
+ })
+ .finally(() => {
+ this.subLoading = false
+ })
+ })
+ },
+ getMemberList () {
+ memberList({}).then(res => {
+ this.memberList = res || []
+ })
+ },
+ getDetail () {
+ const { id } = this
+ hiddenDangerDetail(id).then(res => {
+ this.info = res
+ })
+ },
+ handleAppr (val) {
+ this.isShowProblem = true
+ },
+ confirm () {
+ console.log('--')
+ },
+ handleTransfer () {
+ this.isShowProblem = true
+ },
+ reject () { },
+ handleAvatarSuccess (res) {
+ if (res.code === 200) {
+ const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0
+ const arr = this.handleParam.dealBeforeFileList || []
+ arr.push({
+ type: str ? 0 : 1,
+ fileurl: res.data.imgaddr,
+ fileurlFull: res.data.url
+ })
+ this.$set(this.handleParam, 'dealBeforeFileList', arr)
+ }
+ },
+ handleAfterSuccess (res) {
+ if (res.code === 200) {
+ const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0
+ const arr = this.handleParam.dealAfterFileList || []
+ arr.push({
+ type: str ? 0 : 1,
+ fileurl: res.data.imgaddr,
+ fileurlFull: res.data.url
+ })
+ this.$set(this.handleParam, 'dealAfterFileList', arr)
+ }
+ },
+ handleBackSuccess (res) {
+ if (res.code === 200) {
+ const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0
+ const arr = this.backForm.dealBeforeFileList || []
+ arr.push({
+ type: str ? 0 : 1,
+ fileurl: res.data.imgaddr,
+ fileurlFull: res.data.url
+ })
+ this.$set(this.backForm, 'dealBeforeFileList', arr)
+ }
+ },
+ beforeAvatarUpload () { }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.upload_wrap {
+ display: flex;
+ flex-wrap: wrap;
+ .img_wrap {
+ width: 85px;
+ margin-right: 10px;
+ margin-bottom: 10px;
+ img,
+ video {
+ width: 100%;
+ }
+ }
+}
+.upload_box {
+ width: 84px;
+ height: 84px;
+ border-radius: 4px;
+ background-color: #f7f7f7;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ color: #999999;
+ border: 1px solid #e4e4e4;
+ .icon {
+ font-size: 24px;
+ }
+ .text {
+ font-size: 12px;
+ }
+}
+.side_title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
+.modal_wrap {
+ display: flex;
+ height: 100%;
+ .modal_content {
+ flex: 1;
+ padding: 0px 30px;
+ border-radius: 8px;
+ overflow: hidden;
+ height: 100%;
+
+ .title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #333333;
+ margin-bottom: 20px;
+ margin-top: 30px;
+ }
+ .info {
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .item {
+ display: flex;
+ width: 40%;
+ margin-bottom: 20px;
+ &:nth-of-type(2n) {
+ width: 60%;
+ }
+
+ .label {
+ color: #888888;
+ width: 100px;
+ }
+ .file_list {
+ display: flex;
+ .img {
+ width: 200px;
+ margin-right: 12px;
+ margin-bottom: 12px;
+ }
+ }
+ .value {
+ color: #111111;
+ }
+ }
+ .file {
+ width: 100%;
+ }
+ }
+ }
+
+ .header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20px 30px;
+ margin: 0 -30px;
+ border-radius: 8px 8px 0 0;
+ background: linear-gradient(to right, #f2f6fe, #cadffa);
+
+ .h1 {
+ font-weight: 600;
+ font-size: 22px;
+ color: #111111;
+ margin-bottom: 8px;
+ }
+
+ .time {
+ font-size: 14px;
+ color: #999999;
+ }
+
+ .right {
+ height: 40px;
+ font-size: 16px;
+ color: #ffffff;
+ line-height: 40px;
+ padding: 0 20px;
+ background: #207ff7;
+ box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
+ border-radius: 16px 0px 16px 0px;
+ }
+ }
+ .table_info {
+ .name_wrap {
+ display: flex;
+ align-items: center;
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin-right: 12px;
+ }
+ .content {
+ .line {
+ display: flex;
+ }
+ .tag {
+ color: #b2cbf9;
+ border: 1px solid #b2cbf9;
+ padding: 0px 4px;
+ border-radius: 4px;
+ margin-left: 6px;
+ }
+ }
+ }
+ }
+ }
+
+ .side {
+ height: 100%;
+ width: 420px;
+ background: #ffffff;
+ border-left: 20px solid #f7f7f7;
+ .list {
+ .item {
+ padding: 8px 0;
+ position: relative;
+ .separate {
+ position: absolute;
+ border-left: 2px dashed #cccccc;
+ left: 31px;
+ height: calc(100% - 36px);
+ top: 49px;
+ }
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin: 0 12px 0 16px;
+ //border: 1px solid;
+ }
+ .childList {
+ display: flex;
+ flex-wrap: wrap;
+ margin-left: 100px;
+ }
+ .company {
+ font-size: 13px;
+ color: #888888;
+ .status {
+ color: #00ba67;
+ }
+ }
+ .m_content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 4px;
+ }
+ .info {
+ display: flex;
+ align-items: center;
+ margin-left: 20px;
+ .icon {
+ position: relative;
+ z-index: 11;
+ color: #53b76f;
+ font-size: 24px;
+ }
+ .icon1 {
+ position: relative;
+ z-index: 11;
+ color: deepskyblue;
+ font-size: 24px;
+ }
+ .icon2 {
+ position: relative;
+ z-index: 11;
+ color: #dc362e;
+ font-size: 24px;
+ }
+ .iconnew {
+ width: 24px;
+ height: 24px;
+ }
+ .icon3 {
+ position: relative;
+ z-index: 11;
+ color: gray;
+ font-size: 24px;
+ }
+ .content {
+ flex: 1;
+ .line {
+ display: flex;
+ justify-content: space-between;
+ align-content: center;
+ margin-bottom: 6px;
+ .name {
+ font-weight: 600;
+ font-size: 16px;
+ color: #111111;
+ }
+ .time {
+ color: #888888;
+ }
+ }
+ }
+ }
+ .remark {
+ background: #f7f7f7;
+ border-radius: 4px;
+ padding: 13px 15px;
+ color: #666666;
+ margin-left: 100px;
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/admin/src/views/task/index.vue b/admin/src/views/task/index.vue
index d2673f6..fd6b9ad 100644
--- a/admin/src/views/task/index.vue
+++ b/admin/src/views/task/index.vue
@@ -7,41 +7,91 @@
@clear="clear"
/>
<!-- -->
- <el-tabs v-model="activeTab">
+ <el-tabs v-model="filters.queryType" @tab-click="(e) => getList(1)">
<el-tab-pane label="寰呭鐞�" name="0">
<template #label>
<span
>寰呭鐞�
- <el-badge :value="11" class="item" type="danger"> </el-badge>
+ <el-badge
+ v-if="headData.noticeWaitNum"
+ :value="headData.noticeWaitNum"
+ class="item"
+ type="danger"
+ >
+ </el-badge>
</span>
</template>
</el-tab-pane>
- <el-tab-pane label="宸插鐞�" name="1"></el-tab-pane>
- <el-tab-pane label="鎴戝彂璧风殑" name="2"></el-tab-pane>
- <el-tab-pane label="鎶勯�佹垜鐨�" name="3"></el-tab-pane>
+ <el-tab-pane :value="headData.noticeDealNum" label="宸插鐞�" name="1">
+ <template #label>
+ <span
+ >宸插鐞�
+ <el-badge
+ v-if="headData.noticeDealNum"
+ :value="headData.noticeDealNum"
+ class="item"
+ type="danger"
+ >
+ </el-badge>
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane :value="headData.noticeCreateNum" label="鎴戝彂璧风殑" name="2">
+ <template #label>
+ <span
+ >鎴戝彂璧风殑
+ <el-badge
+ v-if="headData.noticeCreateNum"
+ :value="headData.noticeCreateNum"
+ class="item"
+ type="danger"
+ >
+ </el-badge>
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane :value="headData.noticeCopyNum" label="鎶勯�佹垜鐨�" name="3">
+ <template #label>
+ <span
+ >鎶勯�佹垜鐨�
+ <el-badge
+ v-if="headData.noticeCopyNum"
+ :value="headData.noticeCopyNum"
+ class="item"
+ type="danger"
+ >
+ </el-badge>
+ </span>
+ </template>
+ </el-tab-pane>
</el-tabs>
<el-table
v-loading="loading"
- :data="list"
+ :data="dataList"
stripe
row-key="id"
default-expand-all
>
- <el-table-column
- prop="name"
- label="浠诲姟绫诲瀷"
- min-width="100"
- ></el-table-column>
- <el-table-column
- prop="name"
- label="鎻愪氦浜�"
- min-width="80"
- ></el-table-column>
- <el-table-column
- prop="companyNamePath"
- label="鎻愪氦鏃堕棿"
- min-width="100"
- ></el-table-column>
+ <el-table-column prop="name" label="浠诲姟绫诲瀷" min-width="100">
+ <template v-slot="scope">
+ <span
+ v-if="
+ (scope.row.objType || scope.row.objType == 0) &&
+ cateList[scope.row.objType].name
+ "
+ >{{ cateList[scope.row.objType].name }}</span
+ >
+ </template>
+ </el-table-column>
+ <el-table-column label="鎻愪氦浜�" min-width="80">
+ <template v-slot="scope">
+ <span v-if="scope.row.title">{{
+ scope.row.title.split(" - ")[1]
+ }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createDate" label="鎻愪氦鏃堕棿" min-width="100">
+ </el-table-column>
<el-table-column label="鎿嶄綔" width="230" fixed="right">
<template slot-scope="{ row }">
<el-button
@@ -59,62 +109,160 @@
:pagination="pagination"
/>
<TaskDetail v-if="isShowDetail" ref="DetailRef" />
+ <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" />
+ <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" />
+ <!-- 鐢ㄨ溅鐢宠 -->
+ <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getList"/>
+ <!-- 闅愭偅 -->
+ <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getList"/>
+ <!-- 棰勭害璇︽儏 -->
+ <OperaVisitsDesWindow ref="OperaVisitsDesWindow" />
</div>
</template>
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
-import TaskDetail from './taskDetail.vue'
+import TaskDetail from './visSubDetail.vue'
+import VisReportDetail from './visReportDetail.vue'
+import DangetDetail from './dangetDetail.vue'
+import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow'
+import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow'
+import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow'
+import {
+ taskCenterHead,
+ taskCenterPage
+} from '@/api'
export default {
components: {
TaskDetail,
+ VisReportDetail,
+ DangetDetail,
QueryForm,
- Pagination
+ Pagination,
+ OperaCarUseBookWindow,
+ OperaHiddenDangerWindow,
+ OperaVisitsDesWindow
},
data () {
return {
isShowDetail: false,
- activeTab: '0',
- filters: {},
+ isShowReport: false,
+ isShowDanger: false,
+ filters: {
+ queryType: '0'
+ },
queryFormConfig: {
formItems: [
{
- filed: 'taskType',
+ filed: 'type',
type: 'select',
label: '浠诲姟绫诲瀷',
- options: []
+ clearable: false,
+ options: [
+ { label: '璁垮鐢宠', value: '0' },
+ { label: '璁垮鎶ュ', value: '1' },
+ { label: '鐢ㄨ溅鐢宠', value: '2' },
+ { label: '闅愭偅闅忔墜鎷�', value: '3' },
+ { label: '鐗╂祦杞︾敵璇�', value: '4' }
+ ]
},
{
- filed: 'status',
+ filed: 'selDate',
type: 'daterange',
label: ''
}
],
online: true
},
- loading: false,
- sorting: false,
- searchForm: {
- // type: 1
- },
pagination: {
capacity: 10,
page: 1
},
- list: [{}],
- total: 0
+ loading: false,
+ dataList: [],
+ headData: {},
+ total: 0,
+
+ cateList: [
+ { name: '璁垮鐢宠', id: 0 },
+ { name: '璁垮鎶ュ', id: 1 },
+ { name: '鐢ㄨ溅鐢宠', id: 2 },
+ { name: '闅愭偅闅忔墜鎷�', id: 3 },
+ { name: '鐗╂祦杞︾敵璇�', id: 4 }
+ ]
}
},
+ created () {
+ this.getHeadData()
+ this.getList()
+ },
methods: {
- handleDetail () {
- this.isShowDetail = true
- this.$nextTick(() => {
- this.$refs.DetailRef.isShowModal = true
+ handleDetail (row) {
+ if (row.objType === 2) {
+ this.$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', row)
+ return
+ }
+ if (row.objType === 1) {
+ this.isShowReport = true
+ this.$nextTick(() => {
+ this.$refs.VisReportDetailRef.id = row.objId
+ this.$refs.VisReportDetailRef.type = row.objType
+ this.$refs.VisReportDetailRef.getDetail()
+ this.$refs.VisReportDetailRef.isShowModal = true
+ })
+ return
+ }
+ if (row.objType === 3) {
+ const obj = { ...row, id: row.objId }
+ this.$refs.OperaHiddenDangerWindow.open('闅愭偅闅忔墜鎷嶈鎯�', obj)
+ return
+ }
+ if (row.objType === 0) {
+ this.isShowDetail = true
+ this.$nextTick(() => {
+ this.$refs.DetailRef.id = row.objId
+ this.$refs.DetailRef.type = row.objType
+ this.$refs.DetailRef.getDetail()
+ this.$refs.DetailRef.isShowModal = true
+ })
+ }
+ },
+ getList (page) {
+ console.log(this.filters)
+ const { filters, pagination } = this
+ if (filters.selDate && filters.selDate.length > 0) {
+ filters.startDate = filters.selDate[0]
+ filters.endDate = filters.selDate[1]
+ } else {
+ filters.startDate = null
+ filters.endDate = null
+ }
+ pagination.page = page || pagination.page
+ taskCenterPage({
+ model: { ...filters, queryType: Number(filters.queryType) },
+ ...pagination
+ }).then(res => {
+ console.log('res', res)
+ this.dataList = res.records || []
+ this.dataList.forEach(i => {
+ i.param1 = JSON.parse(i.param1)
+ })
})
},
- getList (page) { },
- clear () { },
+ getHeadData () {
+ taskCenterHead({
+ isDetail: '1'
+ }).then(res => {
+ this.headData = res
+ })
+ },
+ clear () {
+ this.filters = {
+ queryType: '0'
+ }
+ this.getList(0)
+ },
handleSizeChange (capacity) {
this.pagination.capacity = capacity
}
diff --git a/admin/src/views/task/taskDetail.vue b/admin/src/views/task/taskDetail.vue
deleted file mode 100644
index 3337491..0000000
--- a/admin/src/views/task/taskDetail.vue
+++ /dev/null
@@ -1,417 +0,0 @@
-<template>
- <GlobalWindow
- :title="title"
- text="鍚屾剰"
- backText="鎷掔粷"
- :visible.sync="isShowModal"
- @confirm="confirm"
- @close="reject"
- >
- <div class="modal_wrap">
- <div class="modal_content">
- <div class="header">
- <div class="left">
- <div class="h1">璁垮棰勭害</div>
- <div class="time">鎻愪氦鏃堕棿锛�</div>
- </div>
- <div class="right">寰呭鏍�</div>
- </div>
- <div class="info">
- <div class="title">璁垮棰勭害淇℃伅</div>
- <div class="list">
- <div class="item">
- <div class="label">琚浜�</div>
- <div class="value"></div>
- </div>
- <div class="item">
- <div class="label">鏉ヨ鏃堕棿</div>
- <div class="value"></div>
- </div>
- <div class="item">
- <div class="label">鏉ヨ浜嬬敱</div>
- <div class="value"></div>
- </div>
- <div class="item">
- <div class="label">闅忚杞﹁締</div>
- <div class="value"></div>
- </div>
- <div class="item">
- <div class="label">鏂藉伐浜哄憳</div>
- <div class="value"></div>
- </div>
- <div class="item">
- <div class="label">鏂藉伐鍐呭</div>
- <div class="value"></div>
- </div>
- </div>
- </div>
- <div class="table_info">
- <div class="title">璁垮淇℃伅</div>
- <el-table :data="detail.datalist" border fit>
- <el-table-column label="濮撳悕" prop="" min-width="150">
- <template slot-scope="{ row }">
- <div class="name_wrap">
- <image src="" class="avatar" mode="" />
- <div class="content">
- <div class="line">
- <div class="name">鏉庝笢</div>
- <div class="tag">鐢宠浜�</div>
- </div>
- <div class="line placeholder9">1888888</div>
- </div>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="鎬у埆" prop="" min-width="40" />
- <el-table-column label="璇佷欢绫诲瀷" prop="" min-width="80" />
- <el-table-column label="璇佷欢鍙风爜" prop="" min-width="120" />
- <el-table-column label="鍏徃鍚嶇О" prop="" min-width="120" />
- <el-table-column label="浜鸿劯鐓х墖" prop="" min-width="80">
- <template slot-scope="{ row }">
- <el-image :src="row.url" :preview-src-list="[row.url]"> </el-image>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
- <div class="side">
- <div class="side_title">瀹℃壒娴佺▼</div>
- <div class="list">
- <div class="item">
- <div class="separate"></div>
- <div class="info">
- <i class="el-icon-success icon"></i>
- <img src="" class="avatar" alt="" />
- <div class="content">
- <div class="line">
- <div class="name">鍒樻煇鍒樻煇</div>
- <div class="time">2020-02-02 12:20</div>
- </div>
- <div class="line">
- <div class="company">涓浗绉诲姩鏈夐檺鍏徃</div>
- </div>
- </div>
- </div>
- </div>
- <div class="item">
- <!-- <div v-if="" class="separate"></div> -->
- <div class="info">
- <i class="el-icon-success icon"></i>
- <img src="" class="avatar" alt="" />
- <div class="content">
- <div class="line">
- <div class="name">鍒樻煇鍒樻煇</div>
- <div class="time">2020-02-02 12:20</div>
- </div>
- <div class="line">
- <div class="company">
- 涓浗绉诲姩鏈夐檺鍏徃( <span class="status">宸插悓鎰�</span> )
- </div>
- </div>
- </div>
- </div>
- <div class="remark">鎻愪氦绾﹀ソ鐨�</div>
- </div>
- </div>
- </div>
- </div>
- <!-- -->
- <template #btns>
- <el-button type="primary" plain @click="handleTransfer">杞氦</el-button>
- </template>
- <!-- 鍚屾剰/鎷掔粷 -->
- <el-dialog
- append-to-body
- :title="apprTitle"
- :visible.sync="isShowAppr"
- width="480px"
- >
- <el-input
- type="textarea"
- :placeholder="apprTitle + '璇存槑锛岄潪蹇呭~'"
- :rows="4"
- v-model="param.explain"
- />
- <span slot="footer" class="dialog-footer">
- <el-button @click="isShowAppr = false">鍙栨秷</el-button>
- <el-button type="primary" @click="isShowAppr = false">纭畾</el-button>
- </span>
- </el-dialog>
- <!-- 闅愭偅 -->
- <el-dialog
- append-to-body
- title="闅愭偅"
- :visible.sync="isShowProblem"
- width="480px"
- >
- <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
- <el-form-item label="閫�鍥炴椂闂�">
- <el-date-picker
- class="w300"
- value-format="yyyy-MM-dd"
- type="date"
- placeholder="閫夋嫨鏃ユ湡"
- v-model="param.date"
- />
- </el-form-item>
- <el-form-item label="鏁存敼鍓�">
- <div class="df_ac">
- <img src="@/assets/avatar/man.png" />
- <el-upload
- class="avatar-uploader"
- action="https://jsonplaceholder.typicode.com/posts/"
- :show-file-list="false"
- :on-success="handleAvatarSuccess"
- :before-upload="beforeAvatarUpload"
- >
- <img v-if="param.url" :src="param.url" class="avatar" />
- <div v-else class="upload_box">
- <el-icon class="el-icon-plus icon" />
- <div class="text">鍥剧墖/瑙嗛</div>
- </div>
- </el-upload>
- </div>
- </el-form-item>
- <el-form-item label="閫�鍥炶鏄�">
- <el-input
- type="textarea"
- placeholder="璇峰~鍐欒鏄�"
- :rows="4"
- v-model="param.explain"
- />
- </el-form-item>
- </el-form>
- <span slot="footer" class="dialog-footer">
- <el-button @click="isShowProblem = false">鍙栨秷</el-button>
- <el-button type="primary" @click="isShowProblem = false"
- >纭畾</el-button
- >
- </span>
- </el-dialog>
- </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-export default {
- components: { GlobalWindow },
- data() {
- return {
- title: '璁垮棰勭害璇︽儏',
- isShowModal: false,
- detail: {
- datalist: [{}]
- },
-
- isShowAppr: false,
- apprTitle: '鍚屾剰',
- param: {},
-
- isShowProblem: false,
- rules: {}
- }
- },
- methods: {
- confirm() {
- console.log('--')
- },
- handleTransfer() {
- this.isShowProblem = true
- },
- reject() { },
- handleAvatarSuccess() { },
- beforeAvatarUpload() { }
- }
-}
-</script>
-
-<style lang="scss" scoped>
-.upload_box {
- width: 84px;
- height: 84px;
- border-radius: 4px;
- background-color: #f7f7f7;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- color: #999999;
- border: 1px solid #e4e4e4;
- .icon {
- font-size: 24px;
- }
- .text {
- font-size: 12px;
- }
-}
-.modal_wrap {
- display: flex;
- height: 100%;
- .modal_content {
- flex: 1;
- padding: 0px 30px;
- border-radius: 8px;
- overflow: hidden;
- height: 100%;
-
- .title {
- font-weight: 600;
- font-size: 18px;
- color: #333333;
- margin-bottom: 20px;
- margin-top: 30px;
- }
-
- .info {
- .list {
- display: flex;
- flex-wrap: wrap;
-
- .item {
- display: flex;
- width: 40%;
- margin-bottom: 20px;
- &:nth-of-type(2n) {
- width: 60%;
- }
-
- .label {
- color: #888888;
- width: 68px;
- }
-
- .value {
- color: #111111;
- }
- }
- }
- }
-
- .header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 20px 30px;
- margin: 0 -30px;
- border-radius: 8px 8px 0 0;
- background: linear-gradient(to right, #f2f6fe, #cadffa);
-
- .h1 {
- font-weight: 600;
- font-size: 22px;
- color: #111111;
- margin-bottom: 8px;
- }
-
- .time {
- font-size: 14px;
- color: #999999;
- }
-
- .right {
- height: 40px;
- font-size: 16px;
- color: #ffffff;
- line-height: 40px;
- padding: 0 20px;
- background: #207ff7;
- box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
- border-radius: 16px 0px 16px 0px;
- }
- }
- .table_info {
- .name_wrap {
- display: flex;
- align-items: center;
- .avatar {
- width: 40px;
- height: 40px;
- border-radius: 50%;
- margin-right: 12px;
- }
- .content {
- .line {
- display: flex;
- }
- .tag {
- color: #b2cbf9;
- border: 1px solid #b2cbf9;
- padding: 0px 4px;
- border-radius: 4px;
- margin-left: 6px;
- }
- }
- }
- }
- }
-
- .side {
- height: 100%;
- width: 420px;
- background: #ffffff;
- border-left: 20px solid #f7f7f7;
- .list {
- .item {
- padding: 8px 0;
- position: relative;
- .separate {
- position: absolute;
- border-left: 2px dashed #cccccc;
- left: 51px;
- height: calc(100% - 24px);
- top: 46px;
- }
- .info {
- display: flex;
- align-items: center;
- margin-left: 40px;
- .icon {
- position: relative;
- z-index: 11;
- color: #53b76f;
- font-size: 24px;
- }
- .avatar {
- width: 40px;
- height: 40px;
- border-radius: 50%;
- margin: 0 12px 0 16px;
- border: 1px solid;
- }
- .content {
- flex: 1;
- .line {
- display: flex;
- justify-content: space-between;
- align-content: center;
- margin-bottom: 6px;
- .name {
- font-weight: 600;
- font-size: 16px;
- color: #111111;
- }
- .time {
- color: #888888;
- }
- .company {
- font-size: 13px;
- color: #888888;
- .status {
- color: #00ba67;
- }
- }
- }
- }
- }
- .remark {
- background: #f7f7f7;
- border-radius: 4px;
- padding: 13px 15px;
- color: #666666;
- margin-left: 120px;
- }
- }
- }
- }
-}
-</style>
diff --git a/admin/src/views/task/visReportDetail.vue b/admin/src/views/task/visReportDetail.vue
new file mode 100644
index 0000000..fa7d122
--- /dev/null
+++ b/admin/src/views/task/visReportDetail.vue
@@ -0,0 +1,594 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="isShowModal" @confirm="confirm">
+ <div class="modal_wrap">
+ <div class="modal_content">
+ <div class="header">
+ <div class="left">
+ <div class="h1">{{ cateList[type] }}</div>
+ <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
+ </div>
+ <div class="right">{{ statusMap[info.status] }}</div>
+ </div>
+ <div class="info">
+ <div class="title">璁垮鎶ュ淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="label">琚浜�</div>
+ <div class="value">{{ info.receptMemberName }} {{ info.receptMemberDepartment }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鏉ヨ鏃堕棿</div>
+ <div class="value">{{ info.starttime }}鑷硔{ info.endtime }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鏉ヨ鍗曚綅</div>
+ <div class="value">{{ info.companyName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鏉ヨ浜嬬敱</div>
+ <div class="value">{{ info.reason }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鑱旂郴浜�</div>
+ <div class="value">{{ info.name }} {{ info.phone }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鍏ュ洯杞﹁締</div>
+ <div class="value">{{ info.carNos }}</div>
+ </div>
+ <div class="item">
+ <div class="label">闅忚溅浜烘暟</div>
+ <div class="value">{{ info.memberNum || 0 }}浜�</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="side">
+ <div class="side_title">瀹℃壒娴佺▼</div>
+ <div
+ class="list"
+ v-if="
+ info.approveDateVO != null && info.approveDateVO.approveList != null
+ "
+ >
+ <div
+ class="item"
+ v-for="(item, index) in info.approveDateVO.approveList"
+ :key="item.id"
+ >
+ <div
+ class="separate"
+ v-if="index < info.approveDateVO.approveList.length - 1"
+ ></div>
+ <div class="info">
+ <img
+ src="@/assets/icons/ic_tongguo.png"
+ class="iconnew"
+ v-if="item.status == 2"
+ />
+ <img
+ src="@/assets/icons/ic_dangqian.png"
+ class="iconnew"
+ v-if="item.status == 1"
+ />
+ <img
+ src="@/assets/icons/ic_jujue.png"
+ class="iconnew"
+ v-if="item.status == 3"
+ />
+ <img
+ src="@/assets/icons/ic_grey.png"
+ class="iconnew"
+ v-if="item.status == null || item.status == 0"
+ />
+ <div style="display: inline" v-if="item.approveType != 1">
+ <img
+ v-if="item.faceImg != null && item.faceImg != ''"
+ :src="item.faceImg"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item.faceImg == null || item.faceImg == ''"
+ src="@/assets/avatar/man.png"
+ class="avatar"
+ alt=""
+ />
+ </div>
+ <div style="display: inline" v-if="item.approveType == 1">
+ <img
+ v-if="item.type != 1"
+ src="@/assets/icons/ic_duoren.png"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item.type == 1"
+ src="@/assets/icons/ic_chaosong.png"
+ class="avatar"
+ alt=""
+ />
+ </div>
+ <div class="content">
+ <div class="line">
+ <div class="name">{{ item.title }}</div>
+ <div class="time">{{ item.checkDate }}</div>
+ </div>
+ <div class="line">
+ <div class="company">
+ {{ item.memberName }}
+ <div
+ style="display: inline"
+ v-if="item.statusInfo != null && item.statusInfo != ''"
+ >
+ 锛�<span class="status-green">{{
+ item.statusInfo || ""
+ }}</span
+ >锛�
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div
+ v-if="
+ item.approveType != 1 &&
+ item.checkInfo != null &&
+ item.checkInfo != ''
+ "
+ class="remark"
+ >
+ {{ item.checkInfo || "" }}
+ </div>
+ <div v-if="item.approveType == 1" class="childList">
+ <div
+ class="m_content company"
+ v-for="item1 in item.approveList"
+ :key="item1.id"
+ >
+ <img
+ v-if="item1.faceImg != null && item1.faceImg != ''"
+ :src="item1.faceImg"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item1.faceImg == null || item1.faceImg == ''"
+ src="@/assets/avatar/man.png"
+ class="avatar"
+ alt=""
+ />
+ <span> {{ item1.memberName }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- -->
+ <template v-slot:footer>
+ <el-button
+ @click="handleAppr(2)"
+ type="primary"
+ class="status-red"
+ v-if="
+ info.approveDateVO != null &&
+ info.approveDateVO.canBeApproved != null &&
+ info.approveDateVO.canBeApproved == 1
+ "
+ >鍚屾剰</el-button
+ >
+ <el-button
+ @click="handleAppr(3)"
+ type="danger"
+ v-if="
+ info.approveDateVO != null &&
+ info.approveDateVO.canBeApproved != null &&
+ info.approveDateVO.canBeApproved == 1
+ "
+ >鎷掔粷</el-button
+ >
+ <el-button @click="isShowModal = false">杩斿洖</el-button>
+ </template>
+ <!-- 鍚屾剰/鎷掔粷 -->
+ <el-dialog
+ append-to-body
+ :title="apprTitle"
+ :visible.sync="isShowAppr"
+ width="480px"
+ >
+ <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+ <el-form-item :prop="param.status == 3 ? 'checkInfo' : ''" :label="param.status == 2 ? '鍚屾剰璇存槑' : '鎷掔粷璇存槑'">
+ <el-input
+ type="textarea"
+ :placeholder="
+ param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑蹇呭~'
+ "
+ :rows="4"
+ v-model="param.checkInfo"
+ />
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowAppr = false">鍙栨秷</el-button>
+ <el-button :loading="subLoading" type="primary" @click="onSubAppr">纭畾</el-button>
+ </span>
+ </el-dialog>
+ <!-- 闅愭偅 -->
+ <el-dialog
+ append-to-body
+ title="闅愭偅"
+ :visible.sync="isShowProblem"
+ width="480px"
+ >
+ <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
+ <el-form-item label="閫�鍥炴椂闂�">
+ <el-date-picker
+ class="w300"
+ value-format="yyyy-MM-dd"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ v-model="param.date"
+ />
+ </el-form-item>
+ <el-form-item label="鏁存敼鍓�">
+ <div class="df_ac">
+ <img src="@/assets/avatar/man.png" />
+ <el-upload
+ class="avatar-uploader"
+ action="https://jsonplaceholder.typicode.com/posts/"
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :before-upload="beforeAvatarUpload"
+ >
+ <img v-if="param.url" :src="param.url" class="avatar" />
+ <div v-else class="upload_box">
+ <el-icon class="el-icon-plus icon" />
+ <div class="text">鍥剧墖/瑙嗛</div>
+ </div>
+ </el-upload>
+ </div>
+ </el-form-item>
+ <el-form-item label="閫�鍥炶鏄�">
+ <el-input
+ type="textarea"
+ placeholder="璇峰~鍐欒鏄�"
+ :rows="4"
+ v-model="param.explain"
+ />
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowProblem = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="isShowProblem = false"
+ >纭畾</el-button
+ >
+ </span>
+ </el-dialog>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import {
+ getVisitedReDetail,
+ approveDo
+} from '@/api'
+export default {
+ components: { GlobalWindow },
+ data () {
+ return {
+ id: '',
+ type: '',
+
+ title: '璁垮棰勭害璇︽儏',
+ isShowModal: false,
+ info: {},
+ isShowAppr: false,
+ apprTitle: '鍚屾剰',
+ subLoading: false,
+ param: {},
+
+ isShowProblem: false,
+ rules: {
+ checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
+ },
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒鏈�氳繃',
+ 4: '宸插彇娑�',
+ 5: '浠栦汉鎴栫',
+ 6: '浠栦汉鎷掔粷'
+ },
+ cateList: {
+ 0: '璁垮鐢宠',
+ 1: '璁垮鎶ュ',
+ 2: '鐢ㄨ溅鐢宠',
+ 3: '闅愭偅闅忔墜鎷�',
+ 4: '鐗╂祦杞︾敵璇�'
+ }
+ }
+ },
+ methods: {
+ onSubAppr () {
+ this.$refs.ruleForm.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.$dialog.actionConfirm('鎿嶄綔纭', this.param.status === 2 ? '鎮ㄧ‘璁ゅ悓鎰忚鐢宠鍚楋紵' : '鎮ㄧ‘璁ゆ嫆缁濊鐢宠鍚楋紵')
+ .then(() => {
+ this.subLoading = true
+ approveDo({
+ objId: this.id,
+ objType: 2,
+ status: this.param.status,
+ checkInfo: this.param.checkInfo
+ })
+ .then(res => {
+ this.subLoading = false
+ this.$tip.apiSuccess('澶勭悊鎴愬姛')
+ this.getDetail()
+ this.isShowAppr = false
+ })
+ .finally(() => {
+ this.subLoading = false
+ })
+ })
+ })
+ },
+ getDetail () {
+ const { id } = this
+ getVisitedReDetail({ id }).then(res => {
+ this.info = res
+ })
+ },
+ handleAppr (val) {
+ this.$set(this.param, 'status', val)
+ this.isShowAppr = true
+ },
+ confirm () {
+ console.log('--')
+ },
+ handleTransfer () {
+ this.isShowProblem = true
+ },
+ reject () { },
+ handleAvatarSuccess () { },
+ beforeAvatarUpload () { }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.upload_box {
+ width: 84px;
+ height: 84px;
+ border-radius: 4px;
+ background-color: #f7f7f7;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ color: #999999;
+ border: 1px solid #e4e4e4;
+ .icon {
+ font-size: 24px;
+ }
+ .text {
+ font-size: 12px;
+ }
+}
+.side_title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
+.modal_wrap {
+ display: flex;
+ height: 100%;
+ .modal_content {
+ flex: 1;
+ padding: 0px 30px;
+ border-radius: 8px;
+ overflow: hidden;
+ height: 100%;
+
+ .title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #333333;
+ margin-bottom: 20px;
+ margin-top: 30px;
+ }
+ .info {
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .item {
+ display: flex;
+ width: 40%;
+ margin-bottom: 20px;
+ &:nth-of-type(2n) {
+ width: 60%;
+ }
+
+ .label {
+ color: #888888;
+ width: 100px;
+ }
+
+ .value {
+ color: #111111;
+ }
+ }
+ }
+ }
+
+ .header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20px 30px;
+ margin: 0 -30px;
+ border-radius: 8px 8px 0 0;
+ background: linear-gradient(to right, #f2f6fe, #cadffa);
+
+ .h1 {
+ font-weight: 600;
+ font-size: 22px;
+ color: #111111;
+ margin-bottom: 8px;
+ }
+
+ .time {
+ font-size: 14px;
+ color: #999999;
+ }
+
+ .right {
+ height: 40px;
+ font-size: 16px;
+ color: #ffffff;
+ line-height: 40px;
+ padding: 0 20px;
+ background: #207ff7;
+ box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
+ border-radius: 16px 0px 16px 0px;
+ }
+ }
+ .table_info {
+ .name_wrap {
+ display: flex;
+ align-items: center;
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin-right: 12px;
+ }
+ .content {
+ .line {
+ display: flex;
+ }
+ .tag {
+ color: #b2cbf9;
+ border: 1px solid #b2cbf9;
+ padding: 0px 4px;
+ border-radius: 4px;
+ margin-left: 6px;
+ }
+ }
+ }
+ }
+ }
+
+ .side {
+ height: 100%;
+ width: 420px;
+ background: #ffffff;
+ border-left: 20px solid #f7f7f7;
+ .list {
+ .item {
+ padding: 8px 0;
+ position: relative;
+ .separate {
+ position: absolute;
+ border-left: 2px dashed #cccccc;
+ left: 31px;
+ height: calc(100% - 36px);
+ top: 49px;
+ }
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin: 0 12px 0 16px;
+ //border: 1px solid;
+ }
+ .childList {
+ display: flex;
+ flex-wrap: wrap;
+ margin-left: 100px;
+ }
+ .company {
+ font-size: 13px;
+ color: #888888;
+ .status {
+ color: #00ba67;
+ }
+ }
+ .m_content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 4px;
+ }
+ .info {
+ display: flex;
+ align-items: center;
+ margin-left: 20px;
+ .icon {
+ position: relative;
+ z-index: 11;
+ color: #53b76f;
+ font-size: 24px;
+ }
+ .icon1 {
+ position: relative;
+ z-index: 11;
+ color: deepskyblue;
+ font-size: 24px;
+ }
+ .icon2 {
+ position: relative;
+ z-index: 11;
+ color: #dc362e;
+ font-size: 24px;
+ }
+ .iconnew {
+ width: 24px;
+ height: 24px;
+ }
+ .icon3 {
+ position: relative;
+ z-index: 11;
+ color: gray;
+ font-size: 24px;
+ }
+ .content {
+ flex: 1;
+ .line {
+ display: flex;
+ justify-content: space-between;
+ align-content: center;
+ margin-bottom: 6px;
+ .name {
+ font-weight: 600;
+ font-size: 16px;
+ color: #111111;
+ }
+ .time {
+ color: #888888;
+ }
+ }
+ }
+ }
+ .remark {
+ background: #f7f7f7;
+ border-radius: 4px;
+ padding: 13px 15px;
+ color: #666666;
+ margin-left: 100px;
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/admin/src/views/task/visSubDetail.vue b/admin/src/views/task/visSubDetail.vue
new file mode 100644
index 0000000..b9595dc
--- /dev/null
+++ b/admin/src/views/task/visSubDetail.vue
@@ -0,0 +1,647 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="isShowModal" @confirm="confirm">
+ <div class="modal_wrap">
+ <div class="modal_content">
+ <div class="header">
+ <div class="left">
+ <div class="h1">{{ cateList[type] }}</div>
+ <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
+ </div>
+ <div class="right">{{ statusMap[info.status] }}</div>
+ </div>
+ <div class="info">
+ <div class="title">璁垮棰勭害淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="label">琚浜�</div>
+ <div class="value">{{ info.visitUserName }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鏉ヨ鏃堕棿</div>
+ <div class="value">{{ info.visitTime }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鏉ヨ浜嬬敱</div>
+ <div class="value">{{ info.visitReason }}</div>
+ </div>
+ <div class="item">
+ <div class="label">闅忚杞﹁締</div>
+ <div class="value">{{ info.carNos }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鏂藉伐浜哄憳</div>
+ <div class="value">{{ info.type == "0" ? "鍚�" : "鏄�" }}</div>
+ </div>
+ <div class="item">
+ <div class="label">鏂藉伐鍐呭</div>
+ <div class="value">{{ info.constructionReason }}</div>
+ </div>
+ </div>
+ </div>
+ <div class="table_info">
+ <div class="title">璁垮淇℃伅</div>
+ <el-table :data="[info]" border fit>
+ <el-table-column label="濮撳悕" prop="" min-width="150">
+ <template slot-scope="{ row }">
+ <div class="name_wrap">
+ <image
+ :src="
+ row.prefix
+ ? row.prefix
+ : require('@/assets/avatar/man.png')
+ "
+ class="avatar"
+ mode=""
+ />
+ <div class="content">
+ <div class="line">
+ <div class="name">{{ row.name }}</div>
+ <div class="tag">鐢宠浜�</div>
+ </div>
+ <div class="line placeholder9">{{ row.phone }}</div>
+ </div>
+ </div>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column label="鎬у埆" prop="" min-width="40" /> -->
+ <el-table-column
+ label="璇佷欢绫诲瀷"
+ prop="idcardTypeName"
+ min-width="80"
+ />
+ <el-table-column
+ label="璇佷欢鍙风爜"
+ prop="idCardDecode"
+ min-width="120"
+ />
+ <el-table-column
+ label="鍏徃鍚嶇О"
+ prop="companyName"
+ min-width="120"
+ />
+ <el-table-column label="浜鸿劯鐓х墖" prop="" min-width="80">
+ <template slot-scope="{ row }">
+ <el-image :src="row.prefix" :preview-src-list="[row.prefix]">
+ </el-image>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ <div class="side">
+ <div class="side_title">瀹℃壒娴佺▼</div>
+ <div
+ class="list"
+ v-if="
+ info.approveDateVO != null && info.approveDateVO.approveList != null
+ "
+ >
+ <div
+ class="item"
+ v-for="(item, index) in info.approveDateVO.approveList"
+ :key="item.id"
+ >
+ <div
+ class="separate"
+ v-if="index < info.approveDateVO.approveList.length - 1"
+ ></div>
+ <div class="info">
+ <img
+ src="@/assets/icons/ic_tongguo.png"
+ class="iconnew"
+ v-if="item.status == 2"
+ />
+ <img
+ src="@/assets/icons/ic_dangqian.png"
+ class="iconnew"
+ v-if="item.status == 1"
+ />
+ <img
+ src="@/assets/icons/ic_jujue.png"
+ class="iconnew"
+ v-if="item.status == 3"
+ />
+ <img
+ src="@/assets/icons/ic_grey.png"
+ class="iconnew"
+ v-if="item.status == null || item.status == 0"
+ />
+ <div style="display: inline" v-if="item.approveType != 1">
+ <img
+ v-if="item.faceImg != null && item.faceImg != ''"
+ :src="item.faceImg"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item.faceImg == null || item.faceImg == ''"
+ src="@/assets/avatar/man.png"
+ class="avatar"
+ alt=""
+ />
+ </div>
+ <div style="display: inline" v-if="item.approveType == 1">
+ <img
+ v-if="item.type != 1"
+ src="@/assets/icons/ic_duoren.png"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item.type == 1"
+ src="@/assets/icons/ic_chaosong.png"
+ class="avatar"
+ alt=""
+ />
+ </div>
+ <div class="content">
+ <div class="line">
+ <div class="name">{{ item.title }}</div>
+ <div class="time">{{ item.checkDate }}</div>
+ </div>
+ <div class="line">
+ <div class="company">
+ {{ item.memberName }}
+ <div
+ style="display: inline"
+ v-if="item.statusInfo != null && item.statusInfo != ''"
+ >
+ 锛�<span class="status-green">{{
+ item.statusInfo || ""
+ }}</span
+ >锛�
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div
+ v-if="
+ item.approveType != 1 &&
+ item.checkInfo != null &&
+ item.checkInfo != ''
+ "
+ class="remark"
+ >
+ {{ item.checkInfo || "" }}
+ </div>
+ <div v-if="item.approveType == 1" class="childList">
+ <div
+ class="m_content company"
+ v-for="item1 in item.approveList"
+ :key="item1.id"
+ >
+ <img
+ v-if="item1.faceImg != null && item1.faceImg != ''"
+ :src="item1.faceImg"
+ class="avatar"
+ alt=""
+ />
+ <img
+ v-if="item1.faceImg == null || item1.faceImg == ''"
+ src="@/assets/avatar/man.png"
+ class="avatar"
+ alt=""
+ />
+ <span> {{ item1.memberName }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- -->
+ <template v-slot:footer>
+ <el-button
+ @click="handleAppr(2)"
+ type="primary"
+ class="status-red"
+ v-if="
+ info.approveDateVO != null &&
+ info.approveDateVO.canBeApproved != null &&
+ info.approveDateVO.canBeApproved == 1
+ "
+ >鍚屾剰</el-button
+ >
+ <el-button
+ @click="handleAppr(3)"
+ type="danger"
+ v-if="
+ info.approveDateVO != null &&
+ info.approveDateVO.canBeApproved != null &&
+ info.approveDateVO.canBeApproved == 1
+ "
+ >鎷掔粷</el-button
+ >
+ <el-button @click="isShowModal = false">杩斿洖</el-button>
+ </template>
+ <!-- 鍚屾剰/鎷掔粷 -->
+ <el-dialog
+ append-to-body
+ :title="apprTitle"
+ :visible.sync="isShowAppr"
+ width="480px"
+ >
+ <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+ <el-form-item :prop="param.status == 3 ? 'checkInfo' : ''" :label="param.status == 2 ? '鍚屾剰璇存槑' : '鎷掔粷璇存槑'">
+ <el-input
+ type="textarea"
+ :placeholder="
+ param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑蹇呭~'
+ "
+ :rows="4"
+ v-model="param.checkInfo"
+ />
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowAppr = false">鍙栨秷</el-button>
+ <el-button :loading="subLoading" type="primary" @click="onSubAppr">纭畾</el-button>
+ </span>
+ </el-dialog>
+ <!-- 闅愭偅 -->
+ <el-dialog
+ append-to-body
+ title="闅愭偅"
+ :visible.sync="isShowProblem"
+ width="480px"
+ >
+ <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
+ <el-form-item label="閫�鍥炴椂闂�">
+ <el-date-picker
+ class="w300"
+ value-format="yyyy-MM-dd"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ v-model="param.date"
+ />
+ </el-form-item>
+ <el-form-item label="鏁存敼鍓�">
+ <div class="df_ac">
+ <img src="@/assets/avatar/man.png" />
+ <el-upload
+ class="avatar-uploader"
+ action="https://jsonplaceholder.typicode.com/posts/"
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :before-upload="beforeAvatarUpload"
+ >
+ <img v-if="param.url" :src="param.url" class="avatar" />
+ <div v-else class="upload_box">
+ <el-icon class="el-icon-plus icon" />
+ <div class="text">鍥剧墖/瑙嗛</div>
+ </div>
+ </el-upload>
+ </div>
+ </el-form-item>
+ <el-form-item label="閫�鍥炶鏄�">
+ <el-input
+ type="textarea"
+ placeholder="璇峰~鍐欒鏄�"
+ :rows="4"
+ v-model="param.explain"
+ />
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowProblem = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="isShowProblem = false"
+ >纭畾</el-button
+ >
+ </span>
+ </el-dialog>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import {
+ getVisitedDetail,
+ approveDo
+} from '@/api'
+export default {
+ components: { GlobalWindow },
+ data () {
+ return {
+ id: '',
+ type: '',
+
+ title: '璁垮棰勭害璇︽儏',
+ isShowModal: false,
+ info: {},
+ isShowAppr: false,
+ apprTitle: '鍚屾剰',
+ subLoading: false,
+ param: {},
+
+ isShowProblem: false,
+ rules: {
+ checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
+ },
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒鏈�氳繃',
+ 4: '宸插彇娑�',
+ 5: '浠栦汉鎴栫',
+ 6: '浠栦汉鎷掔粷'
+ },
+ cateList: {
+ 0: '璁垮鐢宠',
+ 1: '璁垮鎶ュ',
+ 2: '鐢ㄨ溅鐢宠',
+ 3: '闅愭偅闅忔墜鎷�',
+ 4: '鐗╂祦杞︾敵璇�'
+ }
+ }
+ },
+ methods: {
+ onSubAppr () {
+ this.$refs.ruleForm.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.$dialog.actionConfirm('鎿嶄綔纭', this.param.status === 2 ? '鎮ㄧ‘璁ゅ悓鎰忚鐢宠鍚楋紵' : '鎮ㄧ‘璁ゆ嫆缁濊鐢宠鍚楋紵')
+ .then(() => {
+ this.subLoading = true
+ approveDo({
+ objId: this.id,
+ objType: this.info.type,
+ status: this.param.status,
+ checkInfo: this.param.checkInfo
+ })
+ .then(res => {
+ this.subLoading = false
+ this.$tip.apiSuccess('澶勭悊鎴愬姛')
+ this.getDetail()
+ this.isShowAppr = false
+ })
+ .finally(() => {
+ this.subLoading = false
+ })
+ })
+ })
+ },
+ getDetail () {
+ const { id, type } = this
+ console.log(id, type)
+ switch (type) {
+ case 0:
+ getVisitedDetail({ id }).then(res => {
+ this.info = res
+ })
+ break
+
+ default:
+ break
+ }
+ },
+ handleAppr (val) {
+ this.$set(this.param, 'status', val)
+ this.isShowAppr = true
+ },
+ confirm () {
+ console.log('--')
+ },
+ handleTransfer () {
+ this.isShowProblem = true
+ },
+ reject () { },
+ handleAvatarSuccess () { },
+ beforeAvatarUpload () { }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.upload_box {
+ width: 84px;
+ height: 84px;
+ border-radius: 4px;
+ background-color: #f7f7f7;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ color: #999999;
+ border: 1px solid #e4e4e4;
+ .icon {
+ font-size: 24px;
+ }
+ .text {
+ font-size: 12px;
+ }
+}
+.side_title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
+.modal_wrap {
+ display: flex;
+ height: 100%;
+ .modal_content {
+ flex: 1;
+ padding: 0px 30px;
+ border-radius: 8px;
+ overflow: hidden;
+ height: 100%;
+
+ .title {
+ font-weight: 600;
+ font-size: 18px;
+ color: #333333;
+ margin-bottom: 20px;
+ margin-top: 30px;
+ }
+ .info {
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .item {
+ display: flex;
+ width: 40%;
+ margin-bottom: 20px;
+ &:nth-of-type(2n) {
+ width: 60%;
+ }
+
+ .label {
+ color: #888888;
+ width: 100px;
+ }
+
+ .value {
+ color: #111111;
+ }
+ }
+ }
+ }
+
+ .header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20px 30px;
+ margin: 0 -30px;
+ border-radius: 8px 8px 0 0;
+ background: linear-gradient(to right, #f2f6fe, #cadffa);
+
+ .h1 {
+ font-weight: 600;
+ font-size: 22px;
+ color: #111111;
+ margin-bottom: 8px;
+ }
+
+ .time {
+ font-size: 14px;
+ color: #999999;
+ }
+
+ .right {
+ height: 40px;
+ font-size: 16px;
+ color: #ffffff;
+ line-height: 40px;
+ padding: 0 20px;
+ background: #207ff7;
+ box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
+ border-radius: 16px 0px 16px 0px;
+ }
+ }
+ .table_info {
+ .name_wrap {
+ display: flex;
+ align-items: center;
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin-right: 12px;
+ }
+ .content {
+ .line {
+ display: flex;
+ }
+ .tag {
+ color: #b2cbf9;
+ border: 1px solid #b2cbf9;
+ padding: 0px 4px;
+ border-radius: 4px;
+ margin-left: 6px;
+ }
+ }
+ }
+ }
+ }
+
+ .side {
+ height: 100%;
+ width: 420px;
+ background: #ffffff;
+ border-left: 20px solid #f7f7f7;
+ .list {
+ .item {
+ padding: 8px 0;
+ position: relative;
+ .separate {
+ position: absolute;
+ border-left: 2px dashed #cccccc;
+ left: 31px;
+ height: calc(100% - 36px);
+ top: 49px;
+ }
+ .avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ margin: 0 12px 0 16px;
+ //border: 1px solid;
+ }
+ .childList {
+ display: flex;
+ flex-wrap: wrap;
+ margin-left: 100px;
+ }
+ .company {
+ font-size: 13px;
+ color: #888888;
+ .status {
+ color: #00ba67;
+ }
+ }
+ .m_content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 4px;
+ }
+ .info {
+ display: flex;
+ align-items: center;
+ margin-left: 20px;
+ .icon {
+ position: relative;
+ z-index: 11;
+ color: #53b76f;
+ font-size: 24px;
+ }
+ .icon1 {
+ position: relative;
+ z-index: 11;
+ color: deepskyblue;
+ font-size: 24px;
+ }
+ .icon2 {
+ position: relative;
+ z-index: 11;
+ color: #dc362e;
+ font-size: 24px;
+ }
+ .iconnew {
+ width: 24px;
+ height: 24px;
+ }
+ .icon3 {
+ position: relative;
+ z-index: 11;
+ color: gray;
+ font-size: 24px;
+ }
+ .content {
+ flex: 1;
+ .line {
+ display: flex;
+ justify-content: space-between;
+ align-content: center;
+ margin-bottom: 6px;
+ .name {
+ font-weight: 600;
+ font-size: 16px;
+ color: #111111;
+ }
+ .time {
+ color: #888888;
+ }
+ }
+ }
+ }
+ .remark {
+ background: #f7f7f7;
+ border-radius: 4px;
+ padding: 13px 15px;
+ color: #666666;
+ margin-left: 100px;
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/h5/api/meeting.js b/h5/api/meeting.js
index 4f7a800..29ba261 100644
--- a/h5/api/meeting.js
+++ b/h5/api/meeting.js
@@ -48,6 +48,13 @@
data
})
}
+// 浼氳瀹� h5璇︽儏
+export const getAppRoomDetail = (id) => {
+ return http({
+ url: 'meetingAdmin/cloudService/business/bookings/'+id,
+ method: 'get'
+ })
+}
// 浼氳瀹� 绠$悊
export const myMeetingPage = (data) => {
return http({
@@ -56,3 +63,27 @@
data
})
}
+// 浼氳瀹� 褰撴湀
+export const monthMeetingPage = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/web/meeting/monthMeeting',
+ method: 'get',
+ data
+ })
+}
+// 浼氳瀹� 淇敼
+export const updateById = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/business/rooms/updateById',
+ method: 'post',
+ data
+ })
+}
+// 浼氳瀹� 鎾ゅ洖
+export const cancelById = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/business/meeting/reservationCancel',
+ method: 'get',
+ data
+ })
+}
diff --git a/h5/api/staff.js b/h5/api/staff.js
index 456d6f8..feebb25 100644
--- a/h5/api/staff.js
+++ b/h5/api/staff.js
@@ -76,6 +76,13 @@
data
})
}
+// 闅愭偅 璇︽儏
+export const hiddenDangerDetail = (id) => {
+ return http({
+ url: `visitsAdmin/cloudService/business/hiddenDanger/${id}`,
+ method: 'get'
+ })
+}
// 闅愭偅 绫诲瀷
export const DangerConfigType = (data) => {
return http({
@@ -92,7 +99,22 @@
data
})
}
-
+// 闅愭偅 澶勭悊
+export const dealHiddenDanger = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/hiddenDanger/dealHiddenDanger',
+ method: 'post',
+ data
+ })
+}
+// 闅愭偅 杞氦
+export const transferHiddenDanger = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/hiddenDanger/transferHiddenDanger',
+ method: 'post',
+ data
+ })
+}
// 杞﹁締 鍒楄〃
export const getCarsList = (data) => {
return http({
@@ -127,14 +149,6 @@
})
}
-// 浠诲姟涓績
-export const taskCenter = (data) => {
- return http({
- url: 'visitsAdmin/cloudService/web/member/taskCenter',
- method: 'post',
- data
- })
-}
// 鏌ヨ杞﹁締 娲捐溅璁板綍
export const carUseBookPaiche = (data) => {
return http({
@@ -149,4 +163,45 @@
url: 'visitsAdmin/cloudService/business/carUseBook/'+id,
method: 'get'
})
+}
+// 瀹℃壒
+export const carUseBookAppr = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/approve/approved',
+ method: 'post',
+ data
+ })
+}
+// 鏌ヨ杞﹁締 娲捐溅璁板綍 鎾ら攢鐢宠
+export const carUseBookBack = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/carUseBook/revoke',
+ method: 'get',
+ data
+ })
+}
+// 鏌ヨ杞﹁締 鍙告満鍒楄〃
+export const driveListPost = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/member/driveList',
+ method: 'post',
+ data
+ })
+}
+
+// 浠诲姟涓績 澶撮儴鏁版嵁
+export const stagingHead = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/staging/taskCenterHead',
+ method: 'get',
+ data
+ })
+}
+// 浠诲姟涓績 鍒嗛〉鏁版嵁
+export const stagingTaskPage = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/staging/taskPage',
+ method: 'post',
+ data
+ })
}
\ No newline at end of file
diff --git a/h5/api/visitor.js b/h5/api/visitor.js
index a684fe0..830597a 100644
--- a/h5/api/visitor.js
+++ b/h5/api/visitor.js
@@ -55,4 +55,11 @@
method: 'get',
data
})
+}
+// 璁垮鎶ュ璇︽儏
+export const getVisitedReDetail = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/visits/'+data.id,
+ method: 'get'
+ })
}
\ No newline at end of file
diff --git a/h5/n_pages/applicationRecord/applicationRecord.vue b/h5/n_pages/applicationRecord/applicationRecord.vue
index 9e82a7f..ca251ce 100644
--- a/h5/n_pages/applicationRecord/applicationRecord.vue
+++ b/h5/n_pages/applicationRecord/applicationRecord.vue
@@ -1,410 +1,430 @@
<template>
- <view class="box">
- <scroll-view scroll-x class="box_head">
- <view class="box_head_search">
- <view class="box_head_search_ipt">
- <image src="@/static/n/ic_search@2x.png" mode="widthFix"></image>
- <input type="text" placeholder="鎼滅储浠诲姟鍚嶇О" />
- </view>
- <view class="box_head_search_sha" @click="show = true">
- <image src="@/static/n/ic_shaixuan@2x.png" mode="widthFix"></image>
- <text>绛涢��</text>
- </view>
- </view>
- <view class="box_head_list">
- <view class="box_head_item active">寰呭鐞� 12</view>
- <view class="box_head_item">宸插鐞�</view>
- <view class="box_head_item">鎴戝彂璧风殑</view>
- </view>
- </scroll-view>
- <view class="box_list">
- <view class="box_list_item" v-for="(item, index) in 3" :key="index">
- <view class="box_list_item_head">
- <text>涓佹仼鍑殑鍔冲姟鍏ュ巶鐢宠</text>
- <text class="loading">寰呭鏍�</text>
- </view>
- <view class="box_list_item_nr">
- <view class="box_list_item_nr_item">
- <text>琚闂汉锛�</text>
- <text>浜轰簨閮�-鐜嬩簹钃�</text>
- </view>
- <view class="box_list_item_nr_item">
- <text>杩涘巶鏃堕棿锛�</text>
- <text>12-12 09:00</text>
- </view>
- <view class="box_list_item_nr_item">
- <text>绂诲巶鏃堕棿锛�</text>
- <text>12-12 12:00</text>
- </view>
- <view class="box_list_item_nr_item">
- <text>鍏ュ巶浜烘暟锛�</text>
- <text>10</text>
- </view>
- <view class="box_list_item_nr_item">
- <text>鏉ヨ浜嬬敱锛�</text>
- <text>涓氬姟鏉ュ線</text>
- </view>
- <view class="box_list_item_nr_x"></view>
- <view class="box_list_item_nr_text">
- 2023-12-12 09:00鎻愪氦
- </view>
- </view>
- </view>
- </view>
- <!-- 绛涢�� -->
- <u-popup :show="show" mode="bottom" :round="10" :closeable="true" @close="show = false">
- <view class="search">
- <view class="search_head">浠诲姟绛涢��</view>
- <view class="search_list">
- <view class="search_list_item">
- <view class="search_list_item_label">鍒涘缓鏃ユ湡</view>
- <view class="search_list_item_val">
- <view class="search_list_item_val_row" @click="tiemShow = true" :style="{ color: search.startTime ? '#000' : '' }">{{search.startTime ? search.startTime : '寮�濮嬫棩鏈�'}}</view>
- <view class="search_list_item_val_z">-</view>
- <view class="search_list_item_val_row" @click="tiemShow1 = true" :style="{ color: search.endTime ? '#000' : '' }">{{search.endTime ? search.endTime : '缁撴潫鏃ユ湡'}}</view>
- </view>
- </view>
- <view class="search_list_item">
- <view class="search_list_item_label">璁㈠崟鏉ユ簮</view>
- <view class="search_list_item_cates">
- <view :class="index === i ? 'search_list_item_cates_row active' : 'search_list_item_cates_row'"
- v-for="(item, index) in cate"
- :key="index"
- @click="clickItem(index)">
- {{item.name}}
- </view>
- </view>
- </view>
- </view>
- <view class="search_footer">
- <view class="search_footer_item" @click="show = false">鍙栨秷</view>
- <view class="search_footer_item t">鎻愪氦</view>
- </view>
- </view>
- </u-popup>
- <u-datetime-picker
- :show="tiemShow"
- v-model="time"
- mode="datetime"
- @confirm="confirmLeft"
- @cancel="tiemShow = false"
- ></u-datetime-picker>
- <u-datetime-picker
- :show="tiemShow1"
- v-model="time1"
- mode="datetime"
- @confirm="confirmRight"
- @cancel="tiemShow1 = false"
- ></u-datetime-picker>
- </view>
+ <view class="box">
+ <scroll-view scroll-x class="box_head">
+ <view class="box_head_search">
+ <view class="box_head_search_ipt">
+ <image src="@/static/n/ic_search@2x.png" mode="widthFix"></image>
+ <input type="text" placeholder="鎼滅储浠诲姟鍚嶇О" />
+ </view>
+ <view class="box_head_search_sha" @click="show = true">
+ <image src="@/static/n/ic_shaixuan@2x.png" mode="widthFix"></image>
+ <text>绛涢��</text>
+ </view>
+ </view>
+ <view class="box_head_list">
+ <view class="box_head_item active">寰呭鐞� 12</view>
+ <view class="box_head_item">宸插鐞�</view>
+ <view class="box_head_item">鎴戝彂璧风殑</view>
+ </view>
+ </scroll-view>
+ <view class="box_list">
+ <view class="box_list_item" v-for="(item, index) in 3" :key="index">
+ <view class="box_list_item_head">
+ <text>涓佹仼鍑殑鍔冲姟鍏ュ洯鐢宠</text>
+ <text class="loading">寰呭鏍�</text>
+ </view>
+ <view class="box_list_item_nr">
+ <view class="box_list_item_nr_item">
+ <text>琚闂汉锛�</text>
+ <text>浜轰簨閮�-鐜嬩簹钃�</text>
+ </view>
+ <view class="box_list_item_nr_item">
+ <text>杩涘巶鏃堕棿锛�</text>
+ <text>12-12 09:00</text>
+ </view>
+ <view class="box_list_item_nr_item">
+ <text>绂诲洯鏃堕棿锛�</text>
+ <text>12-12 12:00</text>
+ </view>
+ <view class="box_list_item_nr_item">
+ <text>鍏ュ洯浜烘暟锛�</text>
+ <text>10</text>
+ </view>
+ <view class="box_list_item_nr_item">
+ <text>鏉ヨ浜嬬敱锛�</text>
+ <text>涓氬姟鏉ュ線</text>
+ </view>
+ <view class="box_list_item_nr_x"></view>
+ <view class="box_list_item_nr_text"> 2023-12-12 09:00鎻愪氦 </view>
+ </view>
+ </view>
+ </view>
+ <!-- 绛涢�� -->
+ <u-popup
+ :show="show"
+ mode="bottom"
+ :round="10"
+ :closeable="true"
+ @close="show = false"
+ >
+ <view class="search">
+ <view class="search_head">浠诲姟绛涢��</view>
+ <view class="search_list">
+ <view class="search_list_item">
+ <view class="search_list_item_label">鍒涘缓鏃ユ湡</view>
+ <view class="search_list_item_val">
+ <view
+ class="search_list_item_val_row"
+ @click="tiemShow = true"
+ :style="{ color: search.startTime ? '#000' : '' }"
+ >{{ search.startTime ? search.startTime : "寮�濮嬫棩鏈�" }}</view
+ >
+ <view class="search_list_item_val_z">-</view>
+ <view
+ class="search_list_item_val_row"
+ @click="tiemShow1 = true"
+ :style="{ color: search.endTime ? '#000' : '' }"
+ >{{ search.endTime ? search.endTime : "缁撴潫鏃ユ湡" }}</view
+ >
+ </view>
+ </view>
+ <view class="search_list_item">
+ <view class="search_list_item_label">璁㈠崟鏉ユ簮</view>
+ <view class="search_list_item_cates">
+ <view
+ :class="
+ index === i
+ ? 'search_list_item_cates_row active'
+ : 'search_list_item_cates_row'
+ "
+ v-for="(item, index) in cate"
+ :key="index"
+ @click="clickItem(index)"
+ >
+ {{ item.name }}
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="search_footer">
+ <view class="search_footer_item" @click="show = false">鍙栨秷</view>
+ <view class="search_footer_item t">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ <u-datetime-picker
+ :show="tiemShow"
+ v-model="time"
+ mode="datetime"
+ @confirm="confirmLeft"
+ @cancel="tiemShow = false"
+ ></u-datetime-picker>
+ <u-datetime-picker
+ :show="tiemShow1"
+ v-model="time1"
+ mode="datetime"
+ @confirm="confirmRight"
+ @cancel="tiemShow1 = false"
+ ></u-datetime-picker>
+ </view>
</template>
<script>
- export default {
- data() {
- return {
- show: false,
- tiemShow: false,
- tiemShow1: false,
- time: '',
- i: null,
- time: '',
- time1: '',
- search: {
- startTime: '',
- endTime: ''
- },
- cate: [
- { name: '璁垮鐢宠', id: 1 },
- { name: '鍔冲姟鐢宠', id: 2 },
- { name: '鐢ㄨ溅鐢宠', id: 3 }
- ]
- };
- },
- methods: {
- clickItem(index) {
- this.i = index
- },
- confirmLeft(e) {
- console.log(uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss'))
- this.search.startTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
- this.tiemShow = false
- },
- confirmRight(e) {
- this.search.endTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
- this.tiemShow1 = false
- }
- }
- }
+export default {
+ data() {
+ return {
+ show: false,
+ tiemShow: false,
+ tiemShow1: false,
+ time: '',
+ i: null,
+ time: '',
+ time1: '',
+ search: {
+ startTime: '',
+ endTime: ''
+ },
+ cate: [
+ { name: '璁垮鐢宠', id: 1 },
+ { name: '鍔冲姟鐢宠', id: 2 },
+ { name: '鐢ㄨ溅鐢宠', id: 3 }
+ ]
+ }
+ },
+ methods: {
+ clickItem(index) {
+ this.i = index
+ },
+ confirmLeft(e) {
+ console.log(uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss'))
+ this.search.startTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
+ this.tiemShow = false
+ },
+ confirmRight(e) {
+ this.search.endTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
+ this.tiemShow1 = false
+ }
+ }
+}
</script>
<style>
- page {
- background-color: #F7F7F7 !important;
- }
+page {
+ background-color: #f7f7f7 !important;
+}
</style>
<style lang="scss" scoped>
- .box {
- width: 100%;
- .box_head {
- width: 100%;
- height: 190rpx;
- padding: 12rpx 30rpx;
- box-sizing: border-box;
- background: #FFFFFF;
- position: sticky;
- top: 0;
- left: 0;
- .box_head_search {
- width: 100%;
- height: 76rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 24rpx;
- .box_head_search_ipt {
- flex: 1;
- height: 100%;
- padding: 0 30rpx;
- box-sizing: border-box;
- display: flex;
- align-items: center;
- background: #F7F7F7;
- border-radius: 8rpx;
- margin-right: 30rpx;
- image {
- flex-shrink: 0;
- width: 28rpx;
- height: 28rpx;
- margin-right: 16rpx;
- }
- input {
- flex: 1;
- height: 100%;
- font-size: 26rpx;
- font-weight: 400;
- color: #B2B2B2;
- }
- }
- .box_head_search_sha {
- flex-shrink: 0;
- display: flex;
- align-items: center;
- image {
- width: 28rpx;
- height: 28rpx;
- margin-right: 8rpx;
- }
- text {
- font-size: 26rpx;
- font-weight: 400;
- color: #333333;
- }
- }
- }
- .box_head_list {
- width: 100%;
- display: flex;
- align-items: center;
- .active {
- border: 1rpx solid #025EEF !important;
- color: #025EEF !important;
- }
- .box_head_item {
- padding: 0 30rpx;
- height: 60rpx;
- line-height: 60rpx;
- box-sizing: border-box;
- border-radius: 30rpx;
- border: 1rpx solid #999999;
- font-size: 26rpx;
- font-weight: 400;
- color: #333333;
- margin-right: 20rpx;
- }
- }
- }
- .box_list {
- width: 100%;
- padding: 30rpx;
- box-sizing: border-box;
- .box_list_item {
- width: 100%;
- margin-bottom: 20rpx;
- &:last-child {
- margin: 0 !important;
- }
- .box_list_item_head {
- width: 100%;
- height: 100rpx;
- padding: 0 30rpx;
- box-sizing: border-box;
- background: linear-gradient(270deg, #FEFEFF 0%, #E1F7FE 100%);
- border-radius: 8rpx 8rpx 0rpx 0rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .loading {
- color: #025EEF;
- }
- .success {
- color: #03C68F;
- }
- .error {
- color: #E0312A;
- }
- text {
- &:nth-child(1) {
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 26rpx;
- font-weight: 400;
- }
- }
- }
- .box_list_item_nr {
- padding: 30rpx;
- width: 100%;
- box-sizing: border-box;
- background-color: #FFFFFF;
- .box_list_item_nr_x {
- width: 100%;
- height: 1rpx;
- background-color: #E5E5E5;
- }
- .box_list_item_nr_text {
- width: 100%;
- font-size: 26rpx;
- font-weight: 400;
- color: #999999;
- margin-top: 32rpx;
- }
- .box_list_item_nr_item {
- width: 100%;
- display: flex;
- align-items: center;
- margin-bottom: 20rpx;
- text {
- &:nth-child(1) {
- font-size: 26rpx;
- font-weight: 400;
- color: #666666;
- }
- &:nth-child(2) {
- font-size: 26rpx;
- font-weight: 400;
- color: #333333;
- }
- }
- }
- }
- }
- }
- .search {
- width: 100%;
- padding: 30rpx;
- box-sizing: border-box;
- .search_head {
- width: 100%;
- text-align: center;
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- }
- .search_list {
- width: 100%;
- margin-top: 34rpx;
- .search_list_item {
- width: 100%;
- display: flex;
- flex-direction: column;
- margin-bottom: 48rpx;
- .search_list_item_label {
- font-size: 30rpx;
- font-weight: 400;
- color: #222222;
- margin-bottom: 24rpx;
- }
- .search_list_item_cates {
- width: 100%;
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- .active {
- background: #025EEF !important;
- color: #ffffff !important;
- }
- .search_list_item_cates_row {
- padding: 0 26rpx;
- height: 64rpx;
- line-height: 64rpx;
- background: #F7F7F7;
- border-radius: 36rpx;
- margin-right: 20rpx;
- font-size: 26rpx;
- font-weight: 400;
- color: #333333;
- &:last-child {
- margin: 0;
- }
- }
- }
- .search_list_item_val {
- width: 100%;
- height: 64rpx;
- background: #F7F7F7;
- border-radius: 36rpx;
- border: 1rpx solid #E5E5E5;
- display: flex;
- align-items: center;
- .search_list_item_val_row {
- flex: 1;
- height: 100%;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 26rpx;
- font-weight: 400;
- color: #999999;
- }
- .search_list_item_val_z {
- flex-shrink: 0;
- font-size: 26rpx;
- font-weight: 400;
- color: #999999;
- margin: 0 30rpx;
- }
- }
- }
- }
- .search_footer {
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .t {
- background: #025EEF !important;
- color: #ffffff !important;
- }
- .search_footer_item {
- flex: 1;
- height: 88rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 32rpx;
- font-weight: 400;
- color: #025EEF;
- margin-right: 18rpx;
- border: 1rpx solid #025EEF;
- border-radius: 44rpx;
- &:last-child {
- margin: 0 !important;
- }
- }
- }
- }
- }
+.box {
+ width: 100%;
+ .box_head {
+ width: 100%;
+ height: 190rpx;
+ padding: 12rpx 30rpx;
+ box-sizing: border-box;
+ background: #ffffff;
+ position: sticky;
+ top: 0;
+ left: 0;
+ .box_head_search {
+ width: 100%;
+ height: 76rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 24rpx;
+ .box_head_search_ipt {
+ flex: 1;
+ height: 100%;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ background: #f7f7f7;
+ border-radius: 8rpx;
+ margin-right: 30rpx;
+ image {
+ flex-shrink: 0;
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 16rpx;
+ }
+ input {
+ flex: 1;
+ height: 100%;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #b2b2b2;
+ }
+ }
+ .box_head_search_sha {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 8rpx;
+ }
+ text {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+ .box_head_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ .active {
+ border: 1rpx solid #025eef !important;
+ color: #025eef !important;
+ }
+ .box_head_item {
+ padding: 0 30rpx;
+ height: 60rpx;
+ line-height: 60rpx;
+ box-sizing: border-box;
+ border-radius: 30rpx;
+ border: 1rpx solid #999999;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ margin-right: 20rpx;
+ }
+ }
+ }
+ .box_list {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ .box_list_item {
+ width: 100%;
+ margin-bottom: 20rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ .box_list_item_head {
+ width: 100%;
+ height: 100rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
+ border-radius: 8rpx 8rpx 0rpx 0rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .loading {
+ color: #025eef;
+ }
+ .success {
+ color: #03c68f;
+ }
+ .error {
+ color: #e0312a;
+ }
+ text {
+ &:nth-child(1) {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ &:nth-child(2) {
+ font-size: 26rpx;
+ font-weight: 400;
+ }
+ }
+ }
+ .box_list_item_nr {
+ padding: 30rpx;
+ width: 100%;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ .box_list_item_nr_x {
+ width: 100%;
+ height: 1rpx;
+ background-color: #e5e5e5;
+ }
+ .box_list_item_nr_text {
+ width: 100%;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-top: 32rpx;
+ }
+ .box_list_item_nr_item {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-bottom: 20rpx;
+ text {
+ &:nth-child(1) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ &:nth-child(2) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
+ }
+ .search {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ .search_head {
+ width: 100%;
+ text-align: center;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .search_list {
+ width: 100%;
+ margin-top: 34rpx;
+ .search_list_item {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 48rpx;
+ .search_list_item_label {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
+ .search_list_item_cates {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ .active {
+ background: #025eef !important;
+ color: #ffffff !important;
+ }
+ .search_list_item_cates_row {
+ padding: 0 26rpx;
+ height: 64rpx;
+ line-height: 64rpx;
+ background: #f7f7f7;
+ border-radius: 36rpx;
+ margin-right: 20rpx;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ &:last-child {
+ margin: 0;
+ }
+ }
+ }
+ .search_list_item_val {
+ width: 100%;
+ height: 64rpx;
+ background: #f7f7f7;
+ border-radius: 36rpx;
+ border: 1rpx solid #e5e5e5;
+ display: flex;
+ align-items: center;
+ .search_list_item_val_row {
+ flex: 1;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ .search_list_item_val_z {
+ flex-shrink: 0;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #999999;
+ margin: 0 30rpx;
+ }
+ }
+ }
+ }
+ .search_footer {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .t {
+ background: #025eef !important;
+ color: #ffffff !important;
+ }
+ .search_footer_item {
+ flex: 1;
+ height: 88rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 32rpx;
+ font-weight: 400;
+ color: #025eef;
+ margin-right: 18rpx;
+ border: 1rpx solid #025eef;
+ border-radius: 44rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ }
+ }
+ }
+}
</style>
diff --git a/h5/n_pages/visitorApplication/visitorApplication.vue b/h5/n_pages/visitorApplication/visitorApplication.vue
index 61f9b11..b6fcc14 100644
--- a/h5/n_pages/visitorApplication/visitorApplication.vue
+++ b/h5/n_pages/visitorApplication/visitorApplication.vue
@@ -1,1220 +1,1361 @@
<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="show1 = 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="show5 = true">
- <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" @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>
- <view class="list_item">
- <view class="list_item_label">
- <text>鎷滆浜嬬敱</text>
- <text></text>
- </view>
- <view class="list_item_content">
- <input type="text" v-model="form1.reason" placeholder="璇疯緭鍏ユ潵璁夸簨鐢�" placeholder-style="color: #999999;" />
- </view>
- </view>
- </view>
-
- <view class="list">
- <view class="list_item">
- <view class="list_item_label">
- <text>璁垮濮撳悕</text>
- <text>*</text>
- </view>
- <view class="list_item_content">
- <input type="text" v-model="form1.reason" 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">
- <input type="text" v-model="form1.reason" 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="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">
- <input type="text" v-model="form1.reason" placeholder="璇疯緭鍏ヨ瀹㈢殑璇佷欢鍙风爜" placeholder-style="color: #999999;" />
- </view>
- </view>
- <view class="list_item">
- <view class="list_item_label">
- <text>鍏徃鍚嶇О</text>
- </view>
- <view class="list_item_content">
- <input type="text" v-model="form1.reason" placeholder="璇疯緭鍏ヨ瀹㈢殑鍏徃鍚嶇О" placeholder-style="color: #999999;" />
- </view>
- </view>
- <view class="list_item">
- <view class="list_item_label">
- <text>闅忚杞﹁締</text>
- </view>
- <view class="list_item_content">
- <input type="text" v-model="form1.reason" placeholder="璇疯緭鍏ヨ溅鐗屽彿" placeholder-style="color: #999999;" />
- </view>
- </view>
- <view class="cell" style="padding: 24rpx 0;">
- <view class="title1">
- <text class="title1_a">浜鸿劯鐓х墖<b>*</b></text>
- <text class="title1_b">1銆佽鎻愪緵浜斿畼娓呮櫚锛屼汉鑴稿眳涓殑姝i潰浜鸿劯鍏�</text>
- <text class="title1_b">2銆佺収鐗囨棤閫嗗厜銆佹棤PS銆佹棤杩囧害缇庨澶勭悊</text>
- </view>
- <view class="content">
- <view class="content_uplaod" @click="upload('faceImg')">
- <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
- </view>
- <!-- <view class="content_uplaod" @click="upload('faceImg')" v-else>
+ <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="show1 = 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="show5 = true">
+ <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" @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>
+ <view class="list_item">
+ <view class="list_item_label">
+ <text>鎷滆浜嬬敱</text>
+ <text></text>
+ </view>
+ <view class="list_item_content">
+ <input
+ type="text"
+ v-model="form1.reason"
+ placeholder="璇疯緭鍏ユ潵璁夸簨鐢�"
+ placeholder-style="color: #999999;"
+ />
+ </view>
+ </view>
+ </view>
+
+ <view class="list">
+ <view class="list_item">
+ <view class="list_item_label">
+ <text>璁垮濮撳悕</text>
+ <text>*</text>
+ </view>
+ <view class="list_item_content">
+ <input
+ type="text"
+ v-model="form1.reason"
+ 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">
+ <input
+ type="text"
+ v-model="form1.reason"
+ 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="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">
+ <input
+ type="text"
+ v-model="form1.reason"
+ placeholder="璇疯緭鍏ヨ瀹㈢殑璇佷欢鍙风爜"
+ placeholder-style="color: #999999;"
+ />
+ </view>
+ </view>
+ <view class="list_item">
+ <view class="list_item_label">
+ <text>鍏徃鍚嶇О</text>
+ </view>
+ <view class="list_item_content">
+ <input
+ type="text"
+ v-model="form1.reason"
+ placeholder="璇疯緭鍏ヨ瀹㈢殑鍏徃鍚嶇О"
+ placeholder-style="color: #999999;"
+ />
+ </view>
+ </view>
+ <view class="list_item">
+ <view class="list_item_label">
+ <text>闅忚杞﹁締</text>
+ </view>
+ <view class="list_item_content">
+ <input
+ type="text"
+ v-model="form1.reason"
+ placeholder="璇疯緭鍏ヨ溅鐗屽彿"
+ placeholder-style="color: #999999;"
+ />
+ </view>
+ </view>
+ <view class="cell" style="padding: 24rpx 0">
+ <view class="title1">
+ <text class="title1_a">浜鸿劯鐓х墖<b>*</b></text>
+ <text class="title1_b">1銆佽鎻愪緵浜斿畼娓呮櫚锛屼汉鑴稿眳涓殑姝i潰浜鸿劯鍏�</text>
+ <text class="title1_b">2銆佺収鐗囨棤閫嗗厜銆佹棤PS銆佹棤杩囧害缇庨澶勭悊</text>
+ </view>
+ <view class="content">
+ <view class="content_uplaod" @click="upload('faceImg')">
+ <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
+ </view>
+ <!-- <view class="content_uplaod" @click="upload('faceImg')" v-else>
<image :src="visitorData.faceImgUrl" mode="widthFix"></image>
</view> -->
- </view>
- </view>
- <view class="cell" style="padding: 24rpx 0;">
- <view class="title">鍋ュ悍璇�<b>*</b></view>
- <view class="content">
- <view class="content_uplaod" @click="upload('imgurl')">
- <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
- </view>
- <!-- <view class="content_uplaod" @click="upload('imgurl')" v-else>
+ </view>
+ </view>
+ <view class="cell" style="padding: 24rpx 0">
+ <view class="title">鍋ュ悍璇�<b>*</b></view>
+ <view class="content">
+ <view class="content_uplaod" @click="upload('imgurl')">
+ <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
+ </view>
+ <!-- <view class="content_uplaod" @click="upload('imgurl')" v-else>
<image :src="visitorData.imgurlUrl" mode="widthFix"></image>
</view> -->
- </view>
- </view>
- </view>
- <view class="cate">
- <view class="cate_head">闅忚浜哄憳淇℃伅</view>
- <view class="cate_list">
- <view class="cate_list_item" v-for="(item,index) in personnel" :key="index">
- <text>{{item.name}}</text>
- <u-icon name="close" color="#999999" size="20" @click="deleUser(index)"></u-icon>
- </view>
- </view>
- <view class="cate_add" @click="show3 = true">+娣诲姞闅忚浜哄憳</view>
- </view>
- <view class="zw"></view>
- <view class="footer">
- <view class="footer_btn" @click="submit">鎻愪氦</view>
- </view>
- <!-- 鍏ュ満鏃堕棿 -->
- <u-datetime-picker
- :show="show4"
- :minDate="new Date().getTime()"
- mode="datetime"
- @cancel="show4 = false"
- @confirm="setinDate"
- ></u-datetime-picker>
- <!-- 绂诲満鏃堕棿 -->
- <u-datetime-picker
- :show="show5"
- :minDate="new Date().getTime()"
- mode="datetime"
- @cancel="show5 = false"
- @confirm="setoutDate"
- ></u-datetime-picker>
- <!-- 闂ㄧ -->
- <u-popup :show="show" :round="10" :safeAreaInsetBottom="true" :closeable="true" mode="bottom" @close="show = false">
- <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/video@2x.png" mode="widthFix" v-show="!item.active"></image>
- <image src="@/static/video_sel@2x.png" mode="widthFix" v-show="item.active"></image>
- </view>
- </scroll-view>
- <view class="menjin_footer">
- <view class="menjin_footer_item" @click="show = false">鍙栨秷</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">
+ </view>
+ </view>
+ </view>
+ <view class="cate">
+ <view class="cate_head">闅忚浜哄憳淇℃伅</view>
+ <view class="cate_list">
+ <view
+ class="cate_list_item"
+ v-for="(item, index) in personnel"
+ :key="index"
+ >
+ <text>{{ item.name }}</text>
+ <u-icon
+ name="close"
+ color="#999999"
+ size="20"
+ @click="deleUser(index)"
+ ></u-icon>
+ </view>
+ </view>
+ <view class="cate_add" @click="show3 = true">+娣诲姞闅忚浜哄憳</view>
+ </view>
+ <view class="zw"></view>
+ <view class="footer">
+ <view class="footer_btn" @click="submit">鎻愪氦</view>
+ </view>
+ <!-- 鍏ュ洯鏃堕棿 -->
+ <u-datetime-picker
+ :show="show4"
+ :minDate="new Date().getTime()"
+ mode="datetime"
+ @cancel="show4 = false"
+ @confirm="setinDate"
+ ></u-datetime-picker>
+ <!-- 绂诲洯鏃堕棿 -->
+ <u-datetime-picker
+ :show="show5"
+ :minDate="new Date().getTime()"
+ mode="datetime"
+ @cancel="show5 = false"
+ @confirm="setoutDate"
+ ></u-datetime-picker>
+ <!-- 闂ㄧ -->
+ <u-popup
+ :show="show"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ :closeable="true"
+ mode="bottom"
+ @close="show = false"
+ >
+ <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/video@2x.png"
+ mode="widthFix"
+ v-show="!item.active"
+ ></image>
+ <image
+ src="@/static/video_sel@2x.png"
+ mode="widthFix"
+ v-show="item.active"
+ ></image>
+ </view>
+ </scroll-view>
+ <view class="menjin_footer">
+ <view class="menjin_footer_item" @click="show = false">鍙栨秷</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">纭</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" 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">
- <input type="text" v-model="withUserList.carNos" 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>
- </view>
+ <view class="footer_btn">纭</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"
+ 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">
+ <input
+ type="text"
+ v-model="withUserList.carNos"
+ 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>
+ </view>
</template>
<script>
- export default {
- data() {
- return {
- show: false,
- show1: false,
- show3: false,
- show4: false,
- show5: false,
- show6: false,
- fileList: [],
- columns1: [[{name: '韬唤璇�', id: 0}, {name: '娓境璇佷欢', id: 1},{name: '鎶ょ収', id: 2}]],
- columns: [],
- personnel: [],
- userAnswerId: '',
- form1: {
- phone1: '',
- receptMemberId: '',
- receptMemberName: '',
- starttime: '',
- endtime: '',
- doors: '',
- doorSelectName: '',
- reason: '',
- carNos: ''
- },
- withUserList: {
- name: '',
- phone: '',
- idcardType: '',
- idcardTypeName: '',
- companyName: '',
- idcardNo: '',
- faceImg: '',
- faceImgUrl: '',
- imgurl: '',
- imgurlUrl: ''
- },
- visit: '',
- form: {},
- accessControl: '',
- verify: ''
- };
- },
- onLoad(options) {
- // this.form = JSON.parse(options.data)
- // this.getvisit()
- // this.getVisit1()
- // this.getUserValid()
- },
- methods: {
- submit() {
- if (!this.form1.receptMemberId) return uni.showToast({
- title: '琚浜轰笉鑳戒负绌�',
- icon: 'none'
- })
- if (!this.form1.starttime) return uni.showToast({
- title: '鍏ュ満鏃堕棿涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!this.form1.endtime) return uni.showToast({
- title: '绂诲満鏃堕棿涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!this.form1.doorSelectName) return uni.showToast({
- title: '璁块棶闂ㄧ涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!this.form1.reason) return uni.showToast({
- title: '鎷滆浜嬬敱涓嶈兘涓虹┖',
- icon: 'none'
- })
- this.$u.api.createFk({
- ...this.form,
- ...this.form1,
- openid: this.$store.state.openId,
- withUserList: this.personnel
- }).then(res => {
- if (res.code === 200) {
- console.log(res)
- }
- })
- },
- 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
- }
- })
- },
- submitUser() {
- if (!this.withUserList.name) return uni.showToast({
- title: '濮撳悕涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!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.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) {
- uni.chooseImage({
- success: (chooseImageRes) => {
- uni.showLoading({ title: '涓婁紶涓�', mask: true });
- for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
- uni.uploadFile({
- url: `${this.$baseUrl}public/api/uploadFtp.do`,
- filePath: chooseImageRes.tempFilePaths[i],
- name: 'file',
- formData: {
- folderCode: 'MEMBER_IMG'
- },
- success: (uploadFileRes) => {
- let res = JSON.parse(uploadFileRes.data)
- if (type === 'faceImg') {
- this.withUserList.faceImg = res.data.halfPath
- this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
- } else {
- this.withUserList.imgurl = res.data.halfPath
- this.withUserList.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
- }
- },
- complete() {
- if (i === chooseImageRes.tempFilePaths.length - 1) {
- uni.hideLoading();
- }
- }
- });
- }
- }
- });
- },
- 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
- }
- })
- },
- setinDate(e) {
- this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss');
- this.show4 = false
- },
- setoutDate(e) {
- this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss');
- this.show5 = false
- },
- // 鏌ヨ鐢ㄦ埛
- getUser() {
- console.log(this.verify)
- console.log(this.form1.phone1)
- console.log(this.form1.receptMemberName)
- if (this.verify === '0') {
- if (this.form1.phone1) {
- this.$u.api.getVisitedMember({
- mobile: this.form1.phone1
- }).then(res => {
- if (res.code === 200) {
- this.form1.receptMemberId = res.data.id
- this.form1.receptMemberName = res.data.name
- }
- })
- }
- } else {
- if (this.form1.phone1 && this.form1.receptMemberName) {
- this.$u.api.getVisitedMember({
- mobile: this.form1.phone1,
- name: this.form1.receptMemberName
- }).then(res => {
- if (res.code === 200) {
- this.form1.receptMemberId = res.data.id
- this.form1.receptMemberName = res.data.name
- }
- })
- }
- }
- },
- // 琚嫓璁夸汉淇℃伅鏍¢獙鏂瑰紡锛�0鎵嬫満鍙峰崟鐙牎楠� 1鎵嬫満鍙峰拰濮撳悕缁勫悎鏍¢獙锛�
- getUserValid() {
- this.$u.api.getSystemDictData({
- dictCode: 'SYSTEM',
- label: 'BEVISITED_USER_VALID'
- }).then(res => {
- if (res.code === 200) {
- console.log(res)
- this.verify = res.data.code
- }
- })
- },
- // 鑾峰彇鏄惁闇�瑕侀�夋嫨闂ㄧ/闂ㄧ鍒楄〃
- getvisit() {
- this.$u.api.getSystemDictData({
- dictCode: 'SYSTEM',
- label: 'SELECT_DOORS_VISIT_REQUIRED'
- }).then(res => {
- if (res.code === 200) {
- this.accessControl = res.data.code
- if (res.data.code === '1') {
- this.$u.api.deviceRoleList({ type: 1 })
- .then(device => {
- if (device.code === 200) {
- if (device.data.length > 0) {
- device.data.forEach(item => {
- item.active = false
- })
- this.columns = device.data
- }
- }
- })
- }
- }
- })
- },
- confirm(e) {
- this.show = false
- }
- }
- }
+export default {
+ data() {
+ return {
+ show: false,
+ show1: false,
+ show3: false,
+ show4: false,
+ show5: false,
+ show6: false,
+ fileList: [],
+ columns1: [[{ name: '韬唤璇�', id: 0 }, { name: '娓境璇佷欢', id: 1 }, { name: '鎶ょ収', id: 2 }]],
+ columns: [],
+ personnel: [],
+ userAnswerId: '',
+ form1: {
+ phone1: '',
+ receptMemberId: '',
+ receptMemberName: '',
+ starttime: '',
+ endtime: '',
+ doors: '',
+ doorSelectName: '',
+ reason: '',
+ carNos: ''
+ },
+ withUserList: {
+ name: '',
+ phone: '',
+ idcardType: '',
+ idcardTypeName: '',
+ companyName: '',
+ idcardNo: '',
+ faceImg: '',
+ faceImgUrl: '',
+ imgurl: '',
+ imgurlUrl: ''
+ },
+ visit: '',
+ form: {},
+ accessControl: '',
+ verify: ''
+ }
+ },
+ onLoad(options) {
+ // this.form = JSON.parse(options.data)
+ // this.getvisit()
+ // this.getVisit1()
+ // this.getUserValid()
+ },
+ methods: {
+ submit() {
+ if (!this.form1.receptMemberId) return uni.showToast({
+ title: '琚浜轰笉鑳戒负绌�',
+ icon: 'none'
+ })
+ if (!this.form1.starttime) return uni.showToast({
+ title: '鍏ュ洯鏃堕棿涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (!this.form1.endtime) return uni.showToast({
+ title: '绂诲洯鏃堕棿涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (!this.form1.doorSelectName) return uni.showToast({
+ title: '璁块棶闂ㄧ涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (!this.form1.reason) return uni.showToast({
+ title: '鎷滆浜嬬敱涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ this.$u.api.createFk({
+ ...this.form,
+ ...this.form1,
+ openid: this.$store.state.openId,
+ withUserList: this.personnel
+ }).then(res => {
+ if (res.code === 200) {
+ console.log(res)
+ }
+ })
+ },
+ 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
+ }
+ })
+ },
+ submitUser() {
+ if (!this.withUserList.name) return uni.showToast({
+ title: '濮撳悕涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (!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.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) {
+ uni.chooseImage({
+ success: (chooseImageRes) => {
+ uni.showLoading({ title: '涓婁紶涓�', mask: true })
+ for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
+ uni.uploadFile({
+ url: `${this.$baseUrl}public/api/uploadFtp.do`,
+ filePath: chooseImageRes.tempFilePaths[i],
+ name: 'file',
+ formData: {
+ folderCode: 'MEMBER_IMG'
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ if (type === 'faceImg') {
+ this.withUserList.faceImg = res.data.halfPath
+ this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
+ } else {
+ this.withUserList.imgurl = res.data.halfPath
+ this.withUserList.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
+ }
+ },
+ complete() {
+ if (i === chooseImageRes.tempFilePaths.length - 1) {
+ uni.hideLoading()
+ }
+ }
+ })
+ }
+ }
+ })
+ },
+ 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
+ }
+ })
+ },
+ setinDate(e) {
+ this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
+ this.show4 = false
+ },
+ setoutDate(e) {
+ this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
+ this.show5 = false
+ },
+ // 鏌ヨ鐢ㄦ埛
+ getUser() {
+ console.log(this.verify)
+ console.log(this.form1.phone1)
+ console.log(this.form1.receptMemberName)
+ if (this.verify === '0') {
+ if (this.form1.phone1) {
+ this.$u.api.getVisitedMember({
+ mobile: this.form1.phone1
+ }).then(res => {
+ if (res.code === 200) {
+ this.form1.receptMemberId = res.data.id
+ this.form1.receptMemberName = res.data.name
+ }
+ })
+ }
+ } else {
+ if (this.form1.phone1 && this.form1.receptMemberName) {
+ this.$u.api.getVisitedMember({
+ mobile: this.form1.phone1,
+ name: this.form1.receptMemberName
+ }).then(res => {
+ if (res.code === 200) {
+ this.form1.receptMemberId = res.data.id
+ this.form1.receptMemberName = res.data.name
+ }
+ })
+ }
+ }
+ },
+ // 琚嫓璁夸汉淇℃伅鏍¢獙鏂瑰紡锛�0鎵嬫満鍙峰崟鐙牎楠� 1鎵嬫満鍙峰拰濮撳悕缁勫悎鏍¢獙锛�
+ getUserValid() {
+ this.$u.api.getSystemDictData({
+ dictCode: 'SYSTEM',
+ label: 'BEVISITED_USER_VALID'
+ }).then(res => {
+ if (res.code === 200) {
+ console.log(res)
+ this.verify = res.data.code
+ }
+ })
+ },
+ // 鑾峰彇鏄惁闇�瑕侀�夋嫨闂ㄧ/闂ㄧ鍒楄〃
+ getvisit() {
+ this.$u.api.getSystemDictData({
+ dictCode: 'SYSTEM',
+ label: 'SELECT_DOORS_VISIT_REQUIRED'
+ }).then(res => {
+ if (res.code === 200) {
+ this.accessControl = res.data.code
+ if (res.data.code === '1') {
+ this.$u.api.deviceRoleList({ type: 1 })
+ .then(device => {
+ if (device.code === 200) {
+ if (device.data.length > 0) {
+ device.data.forEach(item => {
+ item.active = false
+ })
+ this.columns = device.data
+ }
+ }
+ })
+ }
+ }
+ })
+ },
+ confirm(e) {
+ this.show = false
+ }
+ }
+}
</script>
<style>
- page {
- background-color: #F7F7F7 !important;
- }
- .u-upload__button {
- margin: 0 !important;
- }
- .content_uplaod {
- width: 120rpx;
- height: 120rpx;
- background-color: #ececec;
- display: flex;
- align-items: center;
- justify-content: center;
- overflow: hidden;
- }
- .content_uplaod image {
- width: 100%;
- height: 100%;
- }
- .title {
- font-size: 30rpx;
- font-weight: 400;
- color: #222222;
- display: flex;
- align-items: center;
- }
-
- .title b {
- color: red;
- font-weight: bold;
- }
-
- .title1 {
- display: flex;
- flex-direction: column;
- .title1_a {
- font-size: 30rpx;
- font-weight: 400;
- color: #222222;
- display: flex;
- align-items: center;
- margin-bottom: 20rpx;
- b {
- color: red;
- font-weight: bold;
- }
- }
- .title1_b {
- font-size: 24rpx;
- font-weight: 400;
- color: #999999;
- }
- }
+page {
+ background-color: #f7f7f7 !important;
+}
+.u-upload__button {
+ margin: 0 !important;
+}
+.content_uplaod {
+ width: 120rpx;
+ height: 120rpx;
+ background-color: #ececec;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+}
+.content_uplaod image {
+ width: 100%;
+ height: 100%;
+}
+.title {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ display: flex;
+ align-items: center;
+}
+
+.title b {
+ color: red;
+ font-weight: bold;
+}
+
+.title1 {
+ display: flex;
+ flex-direction: column;
+ .title1_a {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ display: flex;
+ align-items: center;
+ margin-bottom: 20rpx;
+ b {
+ color: red;
+ font-weight: bold;
+ }
+ }
+ .title1_b {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+}
</style>
<style lang="scss" scoped>
- .visit {
- width: 100%;
- .menjin {
- width: 100%;
- .respondent-title {
- width: 100%;
- height: 100rpx;
- line-height: 100rpx;
- text-align: center;
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- }
- .list {
- width: 100%;
- height: 400rpx;
- display: flex;
- flex-direction: column;
- .list_item {
- width: 100%;
- 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: #025EEF;
- 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: 500;
- 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-shrink: 0;
- 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;
- text {
- &:nth-child(1) {
- font-size: 30rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 30rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #E0312A;
- }
- }
- }
- .adduser_list_item_ipt {
- flex: 1;
- 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: #025EEF !important;
- color: #ffffff !important;
- }
- .adduser_footer_item {
- width: 336rpx;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- border-radius: 44rpx;
- border: 1rpx solid #025EEF;
- font-size: 32rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #025EEF;
- 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: 500;
- 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: #025EEF !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: 500;
- 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;
- &:last-child {
- border: none;
- }
- .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: flex-start;
- flex-direction: column;
- text {
- &:nth-child(1) {
- font-size: 30rpx;
- font-weight: 400;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 26rpx;
- font-weight: 400;
- color: #777777;
- }
- }
- }
- }
- }
- .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: 100%;
- height: 72rpx;
- line-height: 72rpx;
- text-align: center;
- background: #025EEF;
- border-radius: 8rpx;
- font-size: 28rpx;
- font-weight: 500;
- color: #FFFFFF;
- border-radius: 44rpx;
- }
- }
- }
-
+.visit {
+ width: 100%;
+ .menjin {
+ width: 100%;
+ .respondent-title {
+ width: 100%;
+ height: 100rpx;
+ line-height: 100rpx;
+ text-align: center;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .list {
+ width: 100%;
+ height: 400rpx;
+ display: flex;
+ flex-direction: column;
+ .list_item {
+ width: 100%;
+ 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: #025eef;
+ 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: 500;
+ 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-shrink: 0;
+ 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;
+ text {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #222222;
+ }
+ &:nth-child(2) {
+ font-size: 30rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #e0312a;
+ }
+ }
+ }
+ .adduser_list_item_ipt {
+ flex: 1;
+ 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: #025eef !important;
+ color: #ffffff !important;
+ }
+ .adduser_footer_item {
+ width: 336rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ border-radius: 44rpx;
+ border: 1rpx solid #025eef;
+ font-size: 32rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #025eef;
+ margin-right: 18rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ }
+ }
+ }
- .head {
- width: 100%;
- padding: 20rpx 30rpx;
- box-sizing: border-box;
- font-size: 28rpx;
- font-weight: 400;
- color: #666666;
- }
+ .addcar {
+ padding: 30rpx;
+ width: 100%;
+ box-sizing: border-box;
+ .addcar_head {
+ text-align: center;
+ font-size: 32rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 500;
+ 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: #025eef !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;
+ }
+ }
+ }
+ }
- .list {
- width: 100%;
- padding: 0 30rpx;
- box-sizing: border-box;
- background-color: #ffffff;
- margin-bottom: 20rpx;
-
- &:last-child {
- margin: 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: 500;
+ 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;
+ &:last-child {
+ border: none;
+ }
+ .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: flex-start;
+ flex-direction: column;
+ text {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ &:nth-child(2) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #777777;
+ }
+ }
+ }
+ }
+ }
+ .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: 100%;
+ height: 72rpx;
+ line-height: 72rpx;
+ text-align: center;
+ background: #025eef;
+ border-radius: 8rpx;
+ font-size: 28rpx;
+ font-weight: 500;
+ color: #ffffff;
+ border-radius: 44rpx;
+ }
+ }
+ }
- .list_item {
- width: 100%;
- height: 98rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- border-bottom: 1rpx solid #E5E5E5;
+ .head {
+ width: 100%;
+ padding: 20rpx 30rpx;
+ box-sizing: border-box;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #666666;
+ }
- .list_item_label {
- flex-shrink: 0;
- display: flex;
- align-items: center;
+ .list {
+ width: 100%;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ margin-bottom: 20rpx;
- text {
- &:nth-child(1) {
- font-size: 30rpx;
- font-weight: 400;
- color: #222222;
- }
+ &:last-child {
+ margin: 0 !important;
+ }
- &:nth-child(2) {
- font-size: 30rpx;
- font-weight: 400;
- color: #E42D2D;
- }
- }
- }
+ .list_item {
+ width: 100%;
+ height: 98rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #e5e5e5;
- .list_item_content {
- flex: 1;
- height: 100%;
- margin-left: 30rpx;
- display: flex;
- align-items: center;
- justify-content: flex-end;
+ .list_item_label {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
- text {
- font-size: 28rpx;
- font-weight: 400;
- color: #999999;
- margin-right: 6rpx;
- }
+ text {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
- input {
- width: 100%;
- height: 100%;
- text-align: right;
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- }
- }
- }
- }
+ &:nth-child(2) {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #e42d2d;
+ }
+ }
+ }
- .cate {
- width: 100%;
- padding: 30rpx;
- box-sizing: border-box;
- background-color: #ffffff;
- margin-top: 20rpx;
+ .list_item_content {
+ flex: 1;
+ height: 100%;
+ margin-left: 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
- .cate_head {
- font-size: 32rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 500;
- color: #222222;
- }
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 6rpx;
+ }
- .cate_list {
- width: 100%;
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- margin-top: 30rpx;
+ input {
+ width: 100%;
+ height: 100%;
+ text-align: right;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
- .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;
+ .cate {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ margin-top: 20rpx;
- &:last-child {
- margin-right: 0 !important;
- }
+ .cate_head {
+ font-size: 32rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 500;
+ color: #222222;
+ }
- text {
- font-size: 26rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #333333;
- margin-right: 30rpx;
- }
- }
- }
+ .cate_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ margin-top: 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 #025EEF;
- font-size: 22rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- margin-top: 20rpx;
- color: #025EEF;
- margin: 0 auto;
- }
- }
+ .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;
- .zw {
- width: 100%;
- height: calc(env(safe-area-inset-bottom) + 118rpx);
- }
+ &:last-child {
+ margin-right: 0 !important;
+ }
- .footer {
- width: 100%;
- padding: 0 30rpx;
- padding-bottom: env(safe-area-inset-bottom);
- box-sizing: border-box;
- position: fixed;
- left: 0;
- bottom: 30rpx;
+ text {
+ font-size: 26rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ margin-right: 30rpx;
+ }
+ }
+ }
- .footer_btn {
- width: 100%;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- background: #025EEF;
- border-radius: 44rpx;
- font-size: 32rpx;
- font-weight: 500;
- color: #FFFFFF;
- }
- }
- }
+ .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 #025eef;
+ font-size: 22rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ margin-top: 20rpx;
+ color: #025eef;
+ 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;
+ position: fixed;
+ left: 0;
+ bottom: 30rpx;
+
+ .footer_btn {
+ width: 100%;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: #025eef;
+ border-radius: 44rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #ffffff;
+ }
+ }
+}
</style>
\ No newline at end of file
diff --git a/h5/n_pages/visitorApproval/visitorApproval.vue b/h5/n_pages/visitorApproval/visitorApproval.vue
index bae4881..ca23113 100644
--- a/h5/n_pages/visitorApproval/visitorApproval.vue
+++ b/h5/n_pages/visitorApproval/visitorApproval.vue
@@ -1,372 +1,368 @@
<template>
- <view class="box">
- <view class="box_list">
- <view class="box_list_name">涓佹仼鍑殑銆屾嫓璁跨敵璇枫��</view>
- <view class="box_list_job">鍌ㄨ繍绉�</view>
- <view class="box_list_status">寰呭鐞�</view>
- <view class="box_list_status1">
- <!-- <image src="@/static/ic_passed@2x.png" mode="widthFix"></image> -->
- <!-- <image src="@/static/ic_refused@2x.png" mode="widthFix"></image> -->
- </view>
- </view>
- <view class="box_list p">
- <view class="box_list_item">
- <text>鎷滆浜�</text>
- <text>寤栨垚鐟�</text>
- </view>
- <view class="box_list_item">
- <text>棰勮鍏�/绂诲巶鏃堕棿</text>
- <text>05/01 8:00 - 05/01 18:00</text>
- </view>
- </view>
- <view class="box_list p">
- <view class="box_list_item1">
- <view class="box_list_item1_head">
- 璁垮淇℃伅
- </view>
- <view class="box_list_item_img">
- <image src="@/static/logo@2x.png" mode="widthFix"></image>
- </view>
- <view class="box_list_item_info">
- <text>瀛欏織 18177665678</text>
- <text>韬唤璇� 3309****2910</text>
- <text>鐨朅88789</text>
- </view>
- </view>
- <view class="box_list_item1">
- <view class="box_list_item1_head">
- 闅忚浜哄憳
- </view>
- <view class="box_list_item_img">
- <image src="@/static/logo@2x.png" mode="widthFix"></image>
- </view>
- <view class="box_list_item_info">
- <text>鏉庡皬鍙� 18177665678</text>
- <text>韬唤璇� 3309****2910</text>
- <text>鐨朅88789</text>
- </view>
- </view>
- </view>
- <view class="box_list p">
- <view class="box_list_item">
- <text>鍏徃鍚嶇О</text>
- <text>瀹夊窘璞嗙背绉戞妧鏈夐檺鍏徃</text>
- </view>
- <view class="box_list_item">
- <text>鏉ヨ浜嬬敱</text>
- <text>鍟嗛噺鍚堝悓浜嬪疁</text>
- </view>
- <view class="box_list_item">
- <text>鍋ュ悍璇�</text>
- <view class="box_list_item_img">
- <image src="@/static/logo@2x.png" mode="widthFix"></image>
- </view>
- </view>
- </view>
- <view class="box_list">
- <view class="box_list_title">娴佺▼</view>
- <view class="box_list_list">
- <view class="box_list_list_item">
- <view class="left">
- <view class="left_d"></view>
- <view class="left_x"></view>
- </view>
- <view class="right">
- <view class="right_top">
- <text>鏍撳瓙鍝ユ彁浜ょ殑鐢宠</text>
- <text>2023-05-01 08:00</text>
- </view>
- <view class="right_bottom">
- <text>瀹夊窘璞嗙背绉戞妧鏈夐檺鍏徃</text>
- </view>
- </view>
- </view>
- <view class="box_list_list_item">
- <view class="left">
- <view class="left_d"></view>
- <view class="left_x"></view>
- </view>
- <view class="right">
- <view class="right_top">
- <text>鎷滆鍛樺伐</text>
- <text>2023-05-01 08:00</text>
- </view>
- <view class="right_bottom">
- <text>鐜嬩簹钃�(<text class="blue">瀹℃牳閫氳繃</text>)</text>
- </view>
- </view>
- </view>
- <view class="box_list_list_item">
- <view class="left">
- <view class="left_d"></view>
- <view class="left_x"></view>
- </view>
- <view class="right">
- <view class="right_top">
- <text>瀹℃壒浜�</text>
- <text>2023-05-01 08:00</text>
- </view>
- <view class="right_bottom">
- <text>椹��(<text class="blue">寰呭鏍�</text>)</text>
- </view>
- </view>
- </view>
- </view>
- </view>
- </view>
+ <view class="box">
+ <view class="box_list">
+ <view class="box_list_name">涓佹仼鍑殑銆屾嫓璁跨敵璇枫��</view>
+ <view class="box_list_job">鍌ㄨ繍绉�</view>
+ <view class="box_list_status">寰呭鐞�</view>
+ <view class="box_list_status1">
+ <!-- <image src="@/static/ic_passed@2x.png" mode="widthFix"></image> -->
+ <!-- <image src="@/static/ic_refused@2x.png" mode="widthFix"></image> -->
+ </view>
+ </view>
+ <view class="box_list p">
+ <view class="box_list_item">
+ <text>鎷滆浜�</text>
+ <text>寤栨垚鐟�</text>
+ </view>
+ <view class="box_list_item">
+ <text>棰勮鍏�/绂诲洯鏃堕棿</text>
+ <text>05/01 8:00 - 05/01 18:00</text>
+ </view>
+ </view>
+ <view class="box_list p">
+ <view class="box_list_item1">
+ <view class="box_list_item1_head"> 璁垮淇℃伅 </view>
+ <view class="box_list_item_img">
+ <image src="@/static/logo@2x.png" mode="widthFix"></image>
+ </view>
+ <view class="box_list_item_info">
+ <text>瀛欏織 18177665678</text>
+ <text>韬唤璇� 3309****2910</text>
+ <text>鐨朅88789</text>
+ </view>
+ </view>
+ <view class="box_list_item1">
+ <view class="box_list_item1_head"> 闅忚浜哄憳 </view>
+ <view class="box_list_item_img">
+ <image src="@/static/logo@2x.png" mode="widthFix"></image>
+ </view>
+ <view class="box_list_item_info">
+ <text>鏉庡皬鍙� 18177665678</text>
+ <text>韬唤璇� 3309****2910</text>
+ <text>鐨朅88789</text>
+ </view>
+ </view>
+ </view>
+ <view class="box_list p">
+ <view class="box_list_item">
+ <text>鍏徃鍚嶇О</text>
+ <text>瀹夊窘璞嗙背绉戞妧鏈夐檺鍏徃</text>
+ </view>
+ <view class="box_list_item">
+ <text>鏉ヨ浜嬬敱</text>
+ <text>鍟嗛噺鍚堝悓浜嬪疁</text>
+ </view>
+ <view class="box_list_item">
+ <text>鍋ュ悍璇�</text>
+ <view class="box_list_item_img">
+ <image src="@/static/logo@2x.png" mode="widthFix"></image>
+ </view>
+ </view>
+ </view>
+ <view class="box_list">
+ <view class="box_list_title">娴佺▼</view>
+ <view class="box_list_list">
+ <view class="box_list_list_item">
+ <view class="left">
+ <view class="left_d"></view>
+ <view class="left_x"></view>
+ </view>
+ <view class="right">
+ <view class="right_top">
+ <text>鏍撳瓙鍝ユ彁浜ょ殑鐢宠</text>
+ <text>2023-05-01 08:00</text>
+ </view>
+ <view class="right_bottom">
+ <text>瀹夊窘璞嗙背绉戞妧鏈夐檺鍏徃</text>
+ </view>
+ </view>
+ </view>
+ <view class="box_list_list_item">
+ <view class="left">
+ <view class="left_d"></view>
+ <view class="left_x"></view>
+ </view>
+ <view class="right">
+ <view class="right_top">
+ <text>鎷滆鍛樺伐</text>
+ <text>2023-05-01 08:00</text>
+ </view>
+ <view class="right_bottom">
+ <text>鐜嬩簹钃�(<text class="blue">瀹℃牳閫氳繃</text>)</text>
+ </view>
+ </view>
+ </view>
+ <view class="box_list_list_item">
+ <view class="left">
+ <view class="left_d"></view>
+ <view class="left_x"></view>
+ </view>
+ <view class="right">
+ <view class="right_top">
+ <text>瀹℃壒浜�</text>
+ <text>2023-05-01 08:00</text>
+ </view>
+ <view class="right_bottom">
+ <text>椹��(<text class="blue">寰呭鏍�</text>)</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
</template>
<script>
- export default {
- data() {
- return {
-
- };
- }
- }
+export default {
+ data() {
+ return {
+
+ }
+ }
+}
</script>
<style>
- page {
- background-color: #F7F7F7;
- }
+page {
+ background-color: #f7f7f7;
+}
</style>
<style lang="scss" scoped>
- .box {
- width: 100%;
- .p {
- padding: 0 30rpx !important;
- }
- .box_list {
- width: 100%;
- padding: 30rpx;
- box-sizing: border-box;
- background-color: #ffffff;
- display: flex;
- flex-direction: column;
- margin-bottom: 20rpx;
- position: relative;
- .box_list_title {
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- margin-bottom: 24rpx;
- }
- .box_list_list {
- width: 100%;
- display: flex;
- flex-direction: column;
- .box_list_list_item {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 36rpx;
- &:last-child {
- margin: 0;
- }
- .left {
- flex-shrink: 0;
- height: 100%;
- position: relative;
- .left_d {
- width: 16rpx;
- height: 16rpx;
- background: #81AFF7;
- border-radius: 50%;
- position: relative;
- z-index: 2;
- }
- .left_x {
- position: absolute;
- top: 0;
- left: 8rpx;
- width: 1rpx;
- height: 130rpx;
- background-color: #EEEEEE;
- }
- }
- .right {
- flex: 1;
- display: flex;
- flex-direction: column;
- margin-left: 30rpx;
- .right_top {
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: space-between;
- text {
- &:first-child {
- font-size: 30rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #333333;
- }
- &:last-child {
- font-size: 24rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #999999;
- }
- }
- }
- .right_bottom {
- width: 100%;
- margin-top: 10rpx;
- text {
- font-size: 26rpx;
- font-weight: 400;
- color: #777777;
- }
- .blue {
- color: #025EEF !important;
- }
- }
- }
- }
- }
- .box_list_item1 {
- width: 100%;
- padding: 30rpx 0;
- box-sizing: border-box;
- display: flex;
- align-items: flex-start;
- flex-wrap: wrap;
- justify-content: space-between;
- border-bottom: 1rpx solid #E5E5E5;
- .box_list_item1_head {
- width: 100%;
- font-size: 26rpx;
- font-weight: 400;
- color: #777777;
- margin-bottom: 24rpx;
- }
- .box_list_item_img {
- width: 100rpx;
- height: 100rpx;
- flex-shrink: 0;
- border-radius: 8rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- overflow: hidden;
- border: 1rpx solid #EEEEEE;
- margin-right: 20rpx;
- image {
- width: 100%;
- height: 100%;
- }
- }
- .box_list_item_info {
- flex: 1;
- display: flex;
- flex-direction: column;
- text {
- &:nth-child(1) {
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- margin-top: 20rpx;
- }
- &:nth-child(3) {
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- margin-top: 20rpx;
- }
- }
- }
- }
- .box_list_item {
- width: 100%;
- padding: 30rpx 0;
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- border-bottom: 1rpx solid #E5E5E5;
- .box_list_item_img {
- width: 100rpx;
- height: 100rpx;
- border-radius: 8rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- overflow: hidden;
- border: 1rpx solid #EEEEEE;
- margin-top: 24rpx;
- image {
- width: 100%;
- height: 100%;
- }
- }
- text {
- &:nth-child(1) {
- font-size: 26rpx;
- font-weight: 400;
- color: #777777;
- }
- &:nth-child(2) {
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- margin-top: 20rpx;
- }
- &:nth-child(3) {
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- margin-top: 20rpx;
- }
- &:nth-child(4) {
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- margin-top: 20rpx;
- }
- }
- }
- .box_list_name {
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- }
- .box_list_job {
- font-size: 26rpx;
- font-weight: 400;
- color: #666666;
- margin-top: 20rpx;
- }
- .box_list_status1 {
- position: absolute;
- right: 30rpx;
- top: 50%;
- transform: translate(0, -50%);
- width: 120rpx;
- height: 120rpx;
- image {
- width: 100%;
- height: 100%;
- }
- }
- .box_list_status {
- position: absolute;
- right: 0;
- top: 0;
- width: 140rpx;
- height: 60rpx;
- line-height: 60rpx;
- text-align: center;
- font-size: 26rpx;
- font-weight: 400;
- color: #025EEF;
- background: rgba(66,117,252,0.12);
- border-radius: 0rpx 0rpx 0rpx 30rpx;
- }
- }
- }
+.box {
+ width: 100%;
+ .p {
+ padding: 0 30rpx !important;
+ }
+ .box_list {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 20rpx;
+ position: relative;
+ .box_list_title {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
+ .box_list_list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .box_list_list_item {
+ width: 100%;
+ display: flex;
+ align-items: flex-start;
+ margin-bottom: 36rpx;
+ &:last-child {
+ margin: 0;
+ }
+ .left {
+ flex-shrink: 0;
+ height: 100%;
+ position: relative;
+ .left_d {
+ width: 16rpx;
+ height: 16rpx;
+ background: #81aff7;
+ border-radius: 50%;
+ position: relative;
+ z-index: 2;
+ }
+ .left_x {
+ position: absolute;
+ top: 0;
+ left: 8rpx;
+ width: 1rpx;
+ height: 130rpx;
+ background-color: #eeeeee;
+ }
+ }
+ .right {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ margin-left: 30rpx;
+ .right_top {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ text {
+ &:first-child {
+ font-size: 30rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ }
+ &:last-child {
+ font-size: 24rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ .right_bottom {
+ width: 100%;
+ margin-top: 10rpx;
+ text {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #777777;
+ }
+ .blue {
+ color: #025eef !important;
+ }
+ }
+ }
+ }
+ }
+ .box_list_item1 {
+ width: 100%;
+ padding: 30rpx 0;
+ box-sizing: border-box;
+ display: flex;
+ align-items: flex-start;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #e5e5e5;
+ .box_list_item1_head {
+ width: 100%;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #777777;
+ margin-bottom: 24rpx;
+ }
+ .box_list_item_img {
+ width: 100rpx;
+ height: 100rpx;
+ flex-shrink: 0;
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+ border: 1rpx solid #eeeeee;
+ margin-right: 20rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .box_list_item_info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ text {
+ &:nth-child(1) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ &:nth-child(2) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-top: 20rpx;
+ }
+ &:nth-child(3) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-top: 20rpx;
+ }
+ }
+ }
+ }
+ .box_list_item {
+ width: 100%;
+ padding: 30rpx 0;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #e5e5e5;
+ .box_list_item_img {
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+ border: 1rpx solid #eeeeee;
+ margin-top: 24rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ text {
+ &:nth-child(1) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #777777;
+ }
+ &:nth-child(2) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-top: 20rpx;
+ }
+ &:nth-child(3) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-top: 20rpx;
+ }
+ &:nth-child(4) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-top: 20rpx;
+ }
+ }
+ }
+ .box_list_name {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .box_list_job {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ margin-top: 20rpx;
+ }
+ .box_list_status1 {
+ position: absolute;
+ right: 30rpx;
+ top: 50%;
+ transform: translate(0, -50%);
+ width: 120rpx;
+ height: 120rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .box_list_status {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 140rpx;
+ height: 60rpx;
+ line-height: 60rpx;
+ text-align: center;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #025eef;
+ background: rgba(66, 117, 252, 0.12);
+ border-radius: 0rpx 0rpx 0rpx 30rpx;
+ }
+ }
+}
</style>
diff --git a/h5/pages.json b/h5/pages.json
index 0afcd34..72bb9f4 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -111,7 +111,6 @@
"navigationStyle": "custom"
}
},
- // 浼氳瀹�
{
"path": "pages/meeting/index/index",
"style": {
@@ -176,7 +175,6 @@
"navigationBarTitleText": "瀹夋嘲鐗╂祦",
"enablePullDownRefresh": false
}
-
},
{
"path": "pages/staff/visitorReport",
@@ -184,235 +182,230 @@
"navigationBarTitleText": "璁垮鎶ュ",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/snapshot",
"style": {
"navigationBarTitleText": "闅愭偅闅忔墜鎷�",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/memberSel",
"style": {
"navigationBarTitleText": "閫夋嫨浜哄憳",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/meetingSub",
"style": {
"navigationBarTitleText": "棰勭害浼氳瀹�",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/meetingSubOrder",
"style": {
"navigationBarTitleText": "纭棰勭害",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/vehicle/index",
"style": {
"navigationBarTitleText": "鐢ㄨ溅鐢宠",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/vehicle/shinei",
"style": {
"navigationBarTitleText": "鐢ㄨ溅鐢宠",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/vehicle/apply",
"style": {
"navigationBarTitleText": "鐢ㄨ溅鐢宠",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/vehicle/shiwai",
"style": {
"navigationBarTitleText": "鐢ㄨ溅鐢宠",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/task/index",
"style": {
"navigationBarTitleText": "浠诲姟涓績",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/task/visitorApprove",
"style": {
"navigationBarTitleText": "璁垮瀹℃壒",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
+ "path": "pages/staff/task/visitorReport",
+ "style": {
+ "navigationBarTitleText": "璁垮鎶ュ",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/staff/task/vDangetAppr",
+ "style": {
+ "navigationBarTitleText": "闅愭偅澶勭悊",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
"path": "pages/staff/vehicle/sendACar",
"style": {
"navigationBarTitleText": "娲捐溅璁板綍",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/meetingCalendar",
"style": {
"navigationBarTitleText": "浼氳鏃ュ巻",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/meetingDetail",
"style": {
"navigationBarTitleText": "浼氳璇︽儏",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/staff/meetingManager",
"style": {
"navigationBarTitleText": "浼氳瀹ょ鐞�",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/driver/index",
"style": {
"navigationBarTitleText": "鐗╂祦杞︿腑蹇�",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/driver/reserved",
"style": {
"navigationBarTitleText": "鍏ュ洯棰勭害",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/driver/reservedGuide",
"style": {
"navigationBarTitleText": "棰勭害鎸囧崡",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/driver/reservedRecord",
"style": {
"navigationBarTitleText": "棰勭害璁板綍",
"enablePullDownRefresh": false
}
-
- }, {
+ },
+ {
"path": "pages/driver/queueUp",
"style": {
"navigationBarTitleText": "鎺掗槦鎯呭喌",
"enablePullDownRefresh": false
}
-
+ },
+ {
+ "path": "pages/driver/queueUpRecord",
+ "style": {
+ "navigationBarTitleText": "浣滀笟涓溅杈�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/driver/taskDetail",
+ "style": {
+ "navigationBarTitleText": "浠诲姟璇︽儏",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/driver/reservedDetail",
+ "style": {
+ "navigationBarTitleText": "璁垮瀹℃壒",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/driver/taskConfirm",
+ "style": {
+ "navigationBarTitleText": "纭浠诲姟",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/auth/auth",
+ "style": {
+ "navigationBarTitleText": "寰俊鎺堟潈",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/staffLogin/forgetPsd",
+ "style": {
+ "navigationBarTitleText": "鎵惧洖瀵嗙爜",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/staff/snapshotResult",
+ "style": {
+ "navigationBarTitleText": "闅愭偅闅忔墜鎷�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/staff/vehicle/applePeo",
+ "style": {
+ "navigationBarTitleText": "閫夋嫨浜哄憳",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/staff/vehicle/sendACarDetail",
+ "style": {
+ "navigationBarTitleText": "鐢ㄨ溅瀹℃壒",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/staff/meetingSel",
+ "style": {
+ "navigationBarTitleText": "閫夋嫨浜哄憳",
+ "enablePullDownRefresh": false
+ }
}
- ,{
- "path" : "pages/driver/queueUpRecord",
- "style" :
- {
- "navigationBarTitleText": "浣滀笟涓溅杈�",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/driver/taskDetail",
- "style" :
- {
- "navigationBarTitleText": "浠诲姟璇︽儏",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/driver/reservedDetail",
- "style" :
- {
- "navigationBarTitleText": "璁垮瀹℃壒",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/driver/taskConfirm",
- "style" :
- {
- "navigationBarTitleText": "纭浠诲姟",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/auth/auth",
- "style" :
- {
- "navigationBarTitleText": "寰俊鎺堟潈",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/staffLogin/forgetPsd",
- "style" :
- {
- "navigationBarTitleText": "鎵惧洖瀵嗙爜",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/staff/snapshotResult",
- "style" :
- {
- "navigationBarTitleText": "闅愭偅闅忔墜鎷�",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/staff/vehicle/applePeo",
- "style" :
- {
- "navigationBarTitleText": "閫夋嫨浜哄憳",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/staff/vehicle/sendACarDetail",
- "style" :
- {
- "navigationBarTitleText": "鐢ㄨ溅瀹℃壒",
- "enablePullDownRefresh": false
- }
-
- }
- ,{
- "path" : "pages/staff/meetingSel",
- "style" :
- {
- "navigationBarTitleText": "閫夋嫨浜哄憳",
- "enablePullDownRefresh": false
- }
-
- }
- ],
- "subPackages": [{
+ ],
+ "subPackages": [
+ {
"root": "n_pages",
- "pages": [{
+ "pages": [
+ {
"path": "login/login",
"style": {
"navigationBarTitleText": "鐧诲綍",
@@ -457,7 +450,8 @@
{
"root": "packagesMine",
"name": "mine",
- "pages": [{
+ "pages": [
+ {
"path": "notice/notice",
"style": {
"navigationBarTitleText": "閫氱煡",
@@ -509,4 +503,4 @@
"backgroundColor": "#ffffff"
},
"uniIdRouter": {}
-}
+}
\ No newline at end of file
diff --git a/h5/pages/applicationRecord/applicationRecord.vue b/h5/pages/applicationRecord/applicationRecord.vue
index 8855dd0..5317783 100644
--- a/h5/pages/applicationRecord/applicationRecord.vue
+++ b/h5/pages/applicationRecord/applicationRecord.vue
@@ -36,7 +36,7 @@
:key="index"
>
<view class="box_list_item_head">
- <text>{{ item.name }}鐨勫姵鍔″叆鍘傜敵璇�</text>
+ <text>{{ item.name }}鐨勫姵鍔″叆鍥敵璇�</text>
<text class="loading">{{ statusMap[item.status] }}</text>
</view>
<view class="box_list_item_nr">
@@ -53,7 +53,7 @@
<text>{{ item.starttime }}</text>
</view>
<view class="box_list_item_nr_item">
- <text>绂诲巶鏃堕棿锛�</text>
+ <text>绂诲洯鏃堕棿锛�</text>
<text>{{ item.endtime }}</text>
</view>
<view class="box_list_item_nr_item">
@@ -122,9 +122,9 @@
},
}).then(res => {
if (res.data.records.length > 0) {
- if(pagination.page === 1){
+ if (pagination.page === 1) {
this.list = res.data.records
- }else{
+ } else {
this.list = [...list, ...res.data.records]
}
this.total = res.data.total
diff --git a/h5/pages/appointmentDetails/appointmentDetails.vue b/h5/pages/appointmentDetails/appointmentDetails.vue
index 997d0f0..c757a11 100644
--- a/h5/pages/appointmentDetails/appointmentDetails.vue
+++ b/h5/pages/appointmentDetails/appointmentDetails.vue
@@ -3,7 +3,7 @@
<view class="head_wrap head_success" v-if="info.status == 2">
<view class="h1">璁垮棰勭害瀹℃牳閫氳繃</view>
<view class="h2"
- >鎮ㄧ殑鏉ヨ鐢宠宸插鏍搁�氳繃锛岃鍦ㄨ瀹㈡満绛惧埌鍏ュ巶銆傚閬囩壒娈婃儏鍐碉紝鍙仈绯昏璁夸汉鎴栧畨淇濅汉鍛�</view
+ >鎮ㄧ殑鏉ヨ鐢宠宸插鏍搁�氳繃锛岃鍦ㄨ瀹㈡満绛惧埌鍏ュ洯銆傚閬囩壒娈婃儏鍐碉紝鍙仈绯昏璁夸汉鎴栧畨淇濅汉鍛�</view
>
</view>
<view class="qr_wrap" v-if="info.status == 2">
@@ -48,11 +48,13 @@
</view>
<view class="box_list_item">
<view class="box_list_item_label">鏂藉伐浜哄憳锛�</view>
- <view class="box_list_item_val">{{ info.type == 0 ? '鍚�' : '鏄�'}}</view>
+ <view class="box_list_item_val">{{
+ info.type == 0 ? "鍚�" : "鏄�"
+ }}</view>
</view>
- <view class="box_list_item" v-if="info.type == '1'">
+ <view class="box_list_item" v-if="info.type == '1'">
<view class="box_list_item_label">鏂藉伐鍐呭锛�</view>
- <view class="box_list_item_val">{{ info.constructionReason}}</view>
+ <view class="box_list_item_val">{{ info.constructionReason }}</view>
</view>
<view class="box_list_item">
<view class="box_list_item_label">闅忚杞﹁締锛�</view>
@@ -145,7 +147,7 @@
.box_head_qrcode {
width: 320rpx;
height: 320rpx;
- margin: 20rpx auto;
+ margin: 20rpx auto;
}
.text {
font-size: 30rpx;
diff --git a/h5/pages/driver/reservedDetail.vue b/h5/pages/driver/reservedDetail.vue
index 85c3da7..cc7ab63 100644
--- a/h5/pages/driver/reservedDetail.vue
+++ b/h5/pages/driver/reservedDetail.vue
@@ -1,372 +1,392 @@
<template>
- <view class="main_app">
- <view class="status_wrap">
- <view class="name">涓佹仼鍑殑璁垮鐢宠</view>
- <view class="desc">绛夊緟鎴戝鐞�</view>
- <view class="status">瀹℃壒涓�</view>
- </view>
- <!-- -->
- <view class="emyty"></view>
- <view class="module_list">
- <view class="item">
- <view class="label">鎷滆浜�</view>
- <view class="value">寤栨垚鐟�</view>
- </view>
- <view class="item">
- <view class="label">棰勮鍏�/绂诲巶鏃堕棿</view>
- <view class="value">05/01 8:00 - 05/01 18:00</view>
- </view>
- <view class="emyty"></view>
- <view class="item">
- <view class="label">璁垮淇℃伅</view>
- <view class="value">
- <image class="avatar" src="@/static/logo@2x.png" mode="widthFix"></image>
- <view class="info">
- <text class="name">瀛欏織 18177665678</text>
- <text>韬唤璇佸彿锛�3309****2910</text>
- <text>鍏ュ洯杞﹁締锛氱殩A88789</text>
- </view>
- </view>
- </view>
- <view class="item">
- <view class="label">鍏徃鍚嶇О</view>
- <view class="value">涓浗绉诲姩</view>
- </view>
- <view class="item">
- <view class="label">鏂藉伐浜哄憳</view>
- <view class="value">鍚�</view>
- </view>
- <view class="item">
- <view class="label">鏉ヨ浜嬬敱</view>
- <view class="value">涓氬姟娲借皥</view>
- </view>
- </view>
- <!-- 娴佺▼ -->
- <view class="flow_wrap">
- <view class="flow_title">娴佺▼</view>
- <view class="list">
- <view class="item">
- <view class="avatar">
- <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
- <image class="status" src="@/static/staff/liucheng_success@2x.png" mode="widthFix" />
- <view class="separate"></view>
- </view>
- <view class="content">
- <view class="head">
- <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
- <view class="time">time</view>
- </view>
- <view class="name_wrap">
- <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
- </view>
- <view class="remark">鍚屾剰鏀捐</view>
- </view>
- </view>
- <view class="item">
- <view class="avatar">
- <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
- <image class="status" src="@/static/staff/liucheng_success@2x.png" mode="widthFix" />
- </view>
- <view class="content">
- <view class="head">
- <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
- <view class="time">time</view>
- </view>
- <view class="name_wrap">
- <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
- </view>
- <view class="carbon">
- <view class="carbon_item" v-for="i in 12">
- <image src="@/static/logo@2x.png" mode="widthFix"></image>
- <view class="text">name</view>
- </view>
- </view>
- </view>
- </view>
- </view>
- </view>
- <view class="emyty"></view>
- <view class="main_footer">
- <view class="btn" @click="handleSub('0')">鎷掔粷</view>
- <view class="btn agree" @click="handleSub('1')">鍚屾剰</view>
- </view>
+ <view class="main_app">
+ <view class="status_wrap">
+ <view class="name">涓佹仼鍑殑璁垮鐢宠</view>
+ <view class="desc">绛夊緟鎴戝鐞�</view>
+ <view class="status">瀹℃壒涓�</view>
+ </view>
+ <!-- -->
+ <view class="emyty"></view>
+ <view class="module_list">
+ <view class="item">
+ <view class="label">鎷滆浜�</view>
+ <view class="value">寤栨垚鐟�</view>
+ </view>
+ <view class="item">
+ <view class="label">棰勮鍏�/绂诲洯鏃堕棿</view>
+ <view class="value">05/01 8:00 - 05/01 18:00</view>
+ </view>
+ <view class="emyty"></view>
+ <view class="item">
+ <view class="label">璁垮淇℃伅</view>
+ <view class="value">
+ <image
+ class="avatar"
+ src="@/static/logo@2x.png"
+ mode="widthFix"
+ ></image>
+ <view class="info">
+ <text class="name">瀛欏織 18177665678</text>
+ <text>韬唤璇佸彿锛�3309****2910</text>
+ <text>鍏ュ洯杞﹁締锛氱殩A88789</text>
+ </view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鍏徃鍚嶇О</view>
+ <view class="value">涓浗绉诲姩</view>
+ </view>
+ <view class="item">
+ <view class="label">鏂藉伐浜哄憳</view>
+ <view class="value">鍚�</view>
+ </view>
+ <view class="item">
+ <view class="label">鏉ヨ浜嬬敱</view>
+ <view class="value">涓氬姟娲借皥</view>
+ </view>
+ </view>
+ <!-- 娴佺▼ -->
+ <view class="flow_wrap">
+ <view class="flow_title">娴佺▼</view>
+ <view class="list">
+ <view class="item">
+ <view class="avatar">
+ <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
+ <image
+ class="status"
+ src="@/static/staff/liucheng_success@2x.png"
+ mode="widthFix"
+ />
+ <view class="separate"></view>
+ </view>
+ <view class="content">
+ <view class="head">
+ <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
+ <view class="time">time</view>
+ </view>
+ <view class="name_wrap">
+ <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
+ </view>
+ <view class="remark">鍚屾剰鏀捐</view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="avatar">
+ <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
+ <image
+ class="status"
+ src="@/static/staff/liucheng_success@2x.png"
+ mode="widthFix"
+ />
+ </view>
+ <view class="content">
+ <view class="head">
+ <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
+ <view class="time">time</view>
+ </view>
+ <view class="name_wrap">
+ <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
+ </view>
+ <view class="carbon">
+ <view class="carbon_item" v-for="i in 12">
+ <image src="@/static/logo@2x.png" mode="widthFix"></image>
+ <view class="text">name</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="emyty"></view>
+ <view class="main_footer">
+ <view class="btn" @click="handleSub('0')">鎷掔粷</view>
+ <view class="btn agree" @click="handleSub('1')">鍚屾剰</view>
+ </view>
- <!-- -->
- <u-popup :show="showApprModal" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="showApprModal = false">
- <view class="appr_modal">
- <view class="title">鍚屾剰</view>
- <textarea placeholder="鍚屾剰璇存槑锛岄潪蹇呭~" placeholder-class="placeholder9" />
- <view class="main_footer">
- <view class="btn" @click="showApprModal = false">鍙栨秷</view>
- <view class="btn agree">鎻愪氦</view>
- </view>
- </view>
- </u-popup>
- </view>
+ <!-- -->
+ <u-popup
+ :show="showApprModal"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ mode="bottom"
+ @close="showApprModal = false"
+ >
+ <view class="appr_modal">
+ <view class="title">鍚屾剰</view>
+ <textarea
+ placeholder="鍚屾剰璇存槑锛岄潪蹇呭~"
+ placeholder-class="placeholder9"
+ />
+ <view class="main_footer">
+ <view class="btn" @click="showApprModal = false">鍙栨秷</view>
+ <view class="btn agree">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
</template>
<script>
export default {
- data() {
- return {
- showApprModal: false,
- param: {}
- }
- },
- methods: {
- handleSub(flag) {
- // this.param.flag =
- if (flag === '1') {
+ data() {
+ return {
+ showApprModal: false,
+ param: {}
+ }
+ },
+ methods: {
+ handleSub(flag) {
+ // this.param.flag =
+ if (flag === '1') {
- } else {
+ } else {
- }
- this.showApprModal = true
- }
- },
+ }
+ this.showApprModal = true
+ }
+ },
}
</script>
<style>
page {
- background-color: #F7F7F7;
+ background-color: #f7f7f7;
}
</style>
<style lang="scss">
.main_app {
- background-color: #fff;
- padding-bottom: 0;
+ background-color: #fff;
+ padding-bottom: 0;
- .flow_wrap {
- padding: 30rpx 0;
+ .flow_wrap {
+ padding: 30rpx 0;
- .flow_title {
- font-weight: 500;
- font-size: 32rpx;
- color: #222222;
- margin-bottom: 24rpx;
- }
+ .flow_title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
- .list {
- .item {
- display: flex;
- margin-bottom: 48rpx;
+ .list {
+ .item {
+ display: flex;
+ margin-bottom: 48rpx;
- .avatar {
- width: 80rpx;
- height: 80rpx;
- position: relative;
- margin-right: 20rpx;
+ .avatar {
+ width: 80rpx;
+ height: 80rpx;
+ position: relative;
+ margin-right: 20rpx;
- .img {
- width: 80rpx;
- height: 80rpx;
- border-radius: 50%;
- }
+ .img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ }
- .status {
- width: 28rpx;
- height: 28rpx;
- border-radius: 50%;
- position: absolute;
- right: 0;
- bottom: 0;
- }
+ .status {
+ width: 28rpx;
+ height: 28rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ }
- .separate {
- position: absolute;
- width: 4rpx;
- height: 100%;
- background-color: #EEEEEE;
- left: 50%;
- transform: translate(-50%, 0);
- bottom: -80rpx;
- }
- }
+ .separate {
+ position: absolute;
+ width: 4rpx;
+ height: 100%;
+ background-color: #eeeeee;
+ left: 50%;
+ transform: translate(-50%, 0);
+ bottom: -80rpx;
+ }
+ }
- .content {
- flex: 1;
+ .content {
+ flex: 1;
- .head {
- display: flex;
- justify-content: space-between;
- margin-bottom: 4rpx;
+ .head {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 4rpx;
- .event {
- font-size: 30rpx;
- }
+ .event {
+ font-size: 30rpx;
+ }
- .time {
- font-size: 26rpx;
- color: #999999;
- }
- }
+ .time {
+ font-size: 26rpx;
+ color: #999999;
+ }
+ }
- .name_wrap {
- font-size: 26rpx;
- color: #777777;
+ .name_wrap {
+ font-size: 26rpx;
+ color: #777777;
- .status {
- color: $uni-color-primary;
- }
- }
+ .status {
+ color: $uni-color-primary;
+ }
+ }
- .remark {
- margin-top: 12rpx;
- background-color: #f7f7f7;
- padding: 14rpx 20rpx;
- border-radius: 8rpx;
- font-size: 26rpx;
- color: #666666;
- line-height: 36rpx;
- }
- }
- .carbon{
- display: flex;
- width: 590rpx;
- overflow-x: auto;
- margin-top: 12rpx;
- .carbon_item{
- text-align: center;
- flex-shrink: 0;
- width: 100rpx;
- image{
- width: 60rpx;
- height: 60rpx;
- margin: 0 auto;
- }
- view{
- font-size: 26rpx;
- color: #777777;
-
- }
- }
- }
- }
- }
- }
+ .remark {
+ margin-top: 12rpx;
+ background-color: #f7f7f7;
+ padding: 14rpx 20rpx;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ color: #666666;
+ line-height: 36rpx;
+ }
+ }
+ .carbon {
+ display: flex;
+ width: 590rpx;
+ overflow-x: auto;
+ margin-top: 12rpx;
+ .carbon_item {
+ text-align: center;
+ flex-shrink: 0;
+ width: 100rpx;
+ image {
+ width: 60rpx;
+ height: 60rpx;
+ margin: 0 auto;
+ }
+ view {
+ font-size: 26rpx;
+ color: #777777;
+ }
+ }
+ }
+ }
+ }
+ }
- .module_list {
- .item {
- padding: 30rpx 0;
- border-bottom: 1rpx solid #E5E5E5;
+ .module_list {
+ .item {
+ padding: 30rpx 0;
+ border-bottom: 1rpx solid #e5e5e5;
- .label {
- font-size: 26rpx;
- color: #666666;
- margin-bottom: 20rpx;
- }
+ .label {
+ font-size: 26rpx;
+ color: #666666;
+ margin-bottom: 20rpx;
+ }
- .value {
- font-size: 30rpx;
- display: flex;
- align-items: center;
+ .value {
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
- .avatar {
- margin-right: 20rpx;
- width: 120rpx;
- height: 120rpx;
- border-radius: 8rpx;
- border: 2rpx solid #E5E5E5;
- }
+ .avatar {
+ margin-right: 20rpx;
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 8rpx;
+ border: 2rpx solid #e5e5e5;
+ }
- .info {
- flex: 1;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- font-size: 26rpx;
- color: #666666;
+ .info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ font-size: 26rpx;
+ color: #666666;
- .name {
- font-size: 30rpx;
- color: #333333;
- }
- }
- }
- }
- }
+ .name {
+ font-size: 30rpx;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
- .status_wrap {
- position: relative;
- padding: 30rpx 0;
+ .status_wrap {
+ position: relative;
+ padding: 30rpx 0;
- .name {
- font-weight: 500;
- font-size: 32rpx;
- margin-bottom: 20rpx;
- color: #222222;
- }
+ .name {
+ font-weight: 500;
+ font-size: 32rpx;
+ margin-bottom: 20rpx;
+ color: #222222;
+ }
- .desc {
- font-size: 26rpx;
- color: #ED4545;
- }
+ .desc {
+ font-size: 26rpx;
+ color: #ed4545;
+ }
- .status {
- position: absolute;
- right: -30rpx;
- top: 0;
- height: 60rpx;
- line-height: 60rpx;
- padding: 0 32rpx;
- border-radius: 0rpx 0rpx 0rpx 30rpx;
- background-color: #e9edff;
- color: $uni-color-primary;
- }
- }
+ .status {
+ position: absolute;
+ right: -30rpx;
+ top: 0;
+ height: 60rpx;
+ line-height: 60rpx;
+ padding: 0 32rpx;
+ border-radius: 0rpx 0rpx 0rpx 30rpx;
+ background-color: #e9edff;
+ color: $uni-color-primary;
+ }
+ }
- .main_footer {
- padding-bottom: 64rpx;
- display: flex;
- justify-content: space-between;
+ .main_footer {
+ padding-bottom: 64rpx;
+ display: flex;
+ justify-content: space-between;
- .btn {
- width: 336rpx;
- height: 88rpx;
- line-height: 88rpx;
- background: #FFFFFF;
- border-radius: 44rpx;
- border: 1rpx solid #999999;
- font-size: 32rpx;
- text-align: center;
- margin: 16rpx 0;
- }
+ .btn {
+ width: 336rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 0;
+ }
- .agree {
- background: $uni-color-primary;
- color: #fff;
- border: 1rpx solid $uni-color-primary;
- }
- }
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
- .appr_modal {
- padding: 36rpx 30rpx 0;
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
- .title {
- font-weight: 500;
- font-size: 32rpx;
- color: #222222;
- margin-bottom: 40rpx;
- text-align: center;
- }
+ .title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 40rpx;
+ text-align: center;
+ }
- textarea {
- box-sizing: border-box;
- width: 690rpx;
- background-color: #f7f7f7;
- font-size: 28rpx;
- color: #333333;
- padding: 24rpx;
- border-radius: 8rpx;
- margin-bottom: 30rpx;
- }
- }
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ }
+ }
- .emyty {
- width: 750rpx;
- height: 20rpx;
- background-color: #f7f7f7;
- margin: 0 -30rpx;
- }
+ .emyty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+ }
}
</style>
diff --git a/h5/pages/driver/reservedRecord.vue b/h5/pages/driver/reservedRecord.vue
index 5fcf708..befa0a5 100644
--- a/h5/pages/driver/reservedRecord.vue
+++ b/h5/pages/driver/reservedRecord.vue
@@ -1,160 +1,179 @@
<template>
- <view class="main_app">
- <!-- -->
- <view class="box_list">
- <view class="box_list_item" v-for="(item, index) in 3" :key="index" @click="handleDetail()">
- <view class="box_list_item_head">
- <text>涓佹仼鍑殑鍔冲姟鍏ュ巶鐢宠</text>
- <text class="loading">寰呭鏍�</text>
- </view>
- <view class="box_list_item_nr">
- <view class="box_list_item_nr_item">
- <text>琚闂汉锛�</text>
- <text>浜轰簨閮�-鐜嬩簹钃�</text>
- </view>
- <view class="box_list_item_nr_item">
- <text>杩涘巶鏃堕棿锛�</text>
- <text>12-12 09:00</text>
- </view>
- <view class="box_list_item_nr_item">
- <text>绂诲巶鏃堕棿锛�</text>
- <text>12-12 12:00</text>
- </view>
- <view class="box_list_item_nr_item">
- <text>鏉ヨ浜嬬敱锛�</text>
- <text>涓氬姟鏉ュ線</text>
- </view>
- <view class="box_list_item_nr_item">
- <text>闅忚杞﹁締锛�</text>
- <text>鐨朅88888</text>
- </view>
- </view>
- </view>
- </view>
- <!-- 閫夋嫨杞﹁締 -->
- <u-picker keyName="name" closeOnClickOverlay @close="isShowCar = false" :show="isShowCar" :columns="carList" @confirm="seletedCar" @cancel="isShowCar = false"></u-picker>
- <!-- 鏃ユ湡 -->
- <u-datetime-picker :show="isShowDate" :minDate="minDate" @confirm="confirmDate" @cancel="isShowDate = false" mode="date"></u-datetime-picker>
- </view>
+ <view class="main_app">
+ <!-- -->
+ <view class="box_list">
+ <view
+ class="box_list_item"
+ v-for="(item, index) in 3"
+ :key="index"
+ @click="handleDetail()"
+ >
+ <view class="box_list_item_head">
+ <text>涓佹仼鍑殑鍔冲姟鍏ュ洯鐢宠</text>
+ <text class="loading">寰呭鏍�</text>
+ </view>
+ <view class="box_list_item_nr">
+ <view class="box_list_item_nr_item">
+ <text>琚闂汉锛�</text>
+ <text>浜轰簨閮�-鐜嬩簹钃�</text>
+ </view>
+ <view class="box_list_item_nr_item">
+ <text>杩涘巶鏃堕棿锛�</text>
+ <text>12-12 09:00</text>
+ </view>
+ <view class="box_list_item_nr_item">
+ <text>绂诲洯鏃堕棿锛�</text>
+ <text>12-12 12:00</text>
+ </view>
+ <view class="box_list_item_nr_item">
+ <text>鏉ヨ浜嬬敱锛�</text>
+ <text>涓氬姟鏉ュ線</text>
+ </view>
+ <view class="box_list_item_nr_item">
+ <text>闅忚杞﹁締锛�</text>
+ <text>鐨朅88888</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ <!-- 閫夋嫨杞﹁締 -->
+ <u-picker
+ keyName="name"
+ closeOnClickOverlay
+ @close="isShowCar = false"
+ :show="isShowCar"
+ :columns="carList"
+ @confirm="seletedCar"
+ @cancel="isShowCar = false"
+ ></u-picker>
+ <!-- 鏃ユ湡 -->
+ <u-datetime-picker
+ :show="isShowDate"
+ :minDate="minDate"
+ @confirm="confirmDate"
+ @cancel="isShowDate = false"
+ mode="date"
+ ></u-datetime-picker>
+ </view>
</template>
<script>
export default {
- data() {
- return {
- isShowCar: false,
- isShowDate: false,
- param: {},
- carList: [[{ name: 'aa', value: '11' }]],
- timeList: [{ time: '08:30-09:00' }, { time: '08:30-09:00' }, { time: '08:30-09:00' }, { time: '08:30-09:00' }]
- };
- },
- methods: {
- handleDetail() {
- uni.navigateTo({
- url: "/pages/driver/reservedDetail"
- })
- },
- confirmDate(e) {
- console.log(e.value);
- this.param.aa = dayjs(e.value).format('YYYY-MM-DD');
- this.isShowDate = false;
- },
- seletedCar(e) {
- console.log(e.value);
- this.param.aa = dayjs(e.value).format('YYYY-MM-DD');
- this.isShowDate = false;
- }
- }
+ data() {
+ return {
+ isShowCar: false,
+ isShowDate: false,
+ param: {},
+ carList: [[{ name: 'aa', value: '11' }]],
+ timeList: [{ time: '08:30-09:00' }, { time: '08:30-09:00' }, { time: '08:30-09:00' }, { time: '08:30-09:00' }]
+ }
+ },
+ methods: {
+ handleDetail() {
+ uni.navigateTo({
+ url: "/pages/driver/reservedDetail"
+ })
+ },
+ confirmDate(e) {
+ console.log(e.value)
+ this.param.aa = dayjs(e.value).format('YYYY-MM-DD')
+ this.isShowDate = false
+ },
+ seletedCar(e) {
+ console.log(e.value)
+ this.param.aa = dayjs(e.value).format('YYYY-MM-DD')
+ this.isShowDate = false
+ }
+ }
};
</script>
<style lang="scss">
- .main_app{
- background: #F7F7F7;
- padding: 0;
- }
+.main_app {
+ background: #f7f7f7;
+ padding: 0;
+}
.app_header {
- display: flex;
- align-items: center;
- margin: 0 -15rpx;
- background-color: #fff;
- .item {
- width: 360rpx;
- height: 72rpx;
- margin: 15rpx;
- padding: 0 30rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- align-items: center;
- }
+ display: flex;
+ align-items: center;
+ margin: 0 -15rpx;
+ background-color: #fff;
+ .item {
+ width: 360rpx;
+ height: 72rpx;
+ margin: 15rpx;
+ padding: 0 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ align-items: center;
+ }
}
.box_list {
- width: 100%;
- padding: 30rpx;
- box-sizing: border-box;
- .box_list_item {
- width: 100%;
- margin-bottom: 20rpx;
- &:last-child {
- margin: 0 !important;
- }
- .box_list_item_head {
- width: 100%;
- height: 100rpx;
- padding: 0 30rpx;
- box-sizing: border-box;
- background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
- border-radius: 8rpx 8rpx 0rpx 0rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .loading {
- color: #4c99a8;
- }
- .success {
- color: #03c68f;
- }
- .error {
- color: #e0312a;
- }
- text {
- &:nth-child(1) {
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 26rpx;
- font-weight: 400;
- }
- }
- }
- .box_list_item_nr {
- padding: 30rpx;
- width: 100%;
- box-sizing: border-box;
- background-color: #ffffff;
- .box_list_item_nr_item {
- width: 100%;
- display: flex;
- align-items: center;
- margin-bottom: 20rpx;
- text {
- &:nth-child(1) {
- font-size: 26rpx;
- font-weight: 400;
- color: #666666;
- }
- &:nth-child(2) {
- font-size: 26rpx;
- font-weight: 400;
- color: #333333;
- }
- }
- }
- }
- }
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ .box_list_item {
+ width: 100%;
+ margin-bottom: 20rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ .box_list_item_head {
+ width: 100%;
+ height: 100rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
+ border-radius: 8rpx 8rpx 0rpx 0rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .loading {
+ color: #4c99a8;
+ }
+ .success {
+ color: #03c68f;
+ }
+ .error {
+ color: #e0312a;
+ }
+ text {
+ &:nth-child(1) {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ &:nth-child(2) {
+ font-size: 26rpx;
+ font-weight: 400;
+ }
+ }
+ }
+ .box_list_item_nr {
+ padding: 30rpx;
+ width: 100%;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ .box_list_item_nr_item {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-bottom: 20rpx;
+ text {
+ &:nth-child(1) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ &:nth-child(2) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
}
</style>
diff --git a/h5/pages/laborApplication/laborApplication.vue b/h5/pages/laborApplication/laborApplication.vue
index 0cd0c33..cf1d7ff 100644
--- a/h5/pages/laborApplication/laborApplication.vue
+++ b/h5/pages/laborApplication/laborApplication.vue
@@ -1,818 +1,878 @@
<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">
- <input type="number" maxlength="11" 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">
- <input type="text" 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">
- <view class="list_item_content_item active">鐧界彮</view>
- <view class="list_item_content_item">澶滅彮</view>
- </view>
- </view>
- <view class="list_item">
- <view class="list_item_label">
- <text>棰勮鍏ュ巶鏃堕棿</text>
- <text>*</text>
- </view>
- <view class="list_item_content">
- <text>璇烽�夋嫨</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">
- <text>璇烽�夋嫨</text>
- <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
- </view>
- </view>
- <view class="list_item" @click="show = true">
- <view class="list_item_label">
- <text>璁块棶闂ㄧ</text>
- <text>*</text>
- </view>
- <view class="list_item_content">
- <text>璇烽�夋嫨</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">
- <input type="text" placeholder="璇疯緭鍏ユ潵璁夸簨鐢憋紝鎮ㄦ潵鍋氫粈涔堢殑" placeholder-style="color: #999999;" />
- </view>
- </view>
- </view>
- <view class="cate">
- <view class="cate_head">杞﹁締淇℃伅</view>
- <view class="cate_list">
- <view class="cate_list_item">
- <text>鐨朅D12178</text>
- <u-icon name="close" color="#999999" size="20"></u-icon>
- </view>
- </view>
- <view class="cate_add" @click="show2 = true">+娣诲姞杞﹁締</view>
- </view>
- <view class="cate">
- <view class="cate_head">闅忚浜哄憳淇℃伅</view>
- <view class="cate_list">
- <view class="cate_list_item">
- <text>浣曟睙瀹�</text>
- <u-icon name="close" color="#999999" size="20"></u-icon>
- </view>
- </view>
- <view class="cate_add" @click="show1 = true">+娣诲姞闅忚浜哄憳</view>
- </view>
- <view class="zw"></view>
- <view class="footer">
- <view class="footer_btn">鎻愪氦</view>
- </view>
- <!-- 闂ㄧ -->
- <u-picker :show="show" :columns="columns" :immediateChange="true" keyName="name" @cancel="show = false"
- @confirm="confirm"></u-picker>
- <!-- 闅忚浜哄憳 -->
- <!-- 閫夋嫨闅忚浜哄憳 -->
- <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" placeholder="璇疯緭鍏ヨ溅鐗屽彿" />
- </view>
- <view class="addcar_footer">
- <view class="addcar_footer_item">鍙栨秷</view>
- <view class="addcar_footer_item t">鎻愪氦</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" placeholder-style="color: #999999;" 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" maxlength="11" placeholder-style="color: #999999;" 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">
- <text>韬唤璇�</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" placeholder-style="color: #999999;" 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" placeholder-style="color: #999999;" placeholder="璇疯緭鍏ユ偍鐨勫叕鍙稿悕绉�" />
- </view>
- </view>
- <view class="adduser_list_item">
- <view class="adduser_list_item_label">
- <text>浜鸿劯鐓х墖</text>
- <text>*</text>
- </view>
- <view class="adduser_list_item_ipt1">
- <u-upload
- :fileList="fileList"
- @afterRead="afterRead"
- @delete="deletePic"
- name="1"
- multiple
- :maxCount="1"
- ></u-upload>
- </view>
- </view>
- <view class="adduser_list_item">
- <view class="adduser_list_item_label">
- <text>鍋ュ悍璇佺収鐗�</text>
- <text></text>
- </view>
- <view class="adduser_list_item_ipt1">
- <u-upload
- :fileList="fileList"
- @afterRead="afterRead"
- @delete="deletePic"
- name="1"
- multiple
- :maxCount="1"
- ></u-upload>
- </view>
- </view>
- </view>
- <view class="adduser_footer">
- <view class="adduser_footer_item">鍙栨秷</view>
- <view class="adduser_footer_item t">鎻愪氦</view>
- </view>
- </view>
- </u-popup>
- </view>
+ <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">
+ <input
+ type="number"
+ maxlength="11"
+ 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">
+ <input
+ type="text"
+ 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">
+ <view class="list_item_content_item active">鐧界彮</view>
+ <view class="list_item_content_item">澶滅彮</view>
+ </view>
+ </view>
+ <view class="list_item">
+ <view class="list_item_label">
+ <text>棰勮鍏ュ洯鏃堕棿</text>
+ <text>*</text>
+ </view>
+ <view class="list_item_content">
+ <text>璇烽�夋嫨</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">
+ <text>璇烽�夋嫨</text>
+ <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="list_item" @click="show = true">
+ <view class="list_item_label">
+ <text>璁块棶闂ㄧ</text>
+ <text>*</text>
+ </view>
+ <view class="list_item_content">
+ <text>璇烽�夋嫨</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">
+ <input
+ type="text"
+ placeholder="璇疯緭鍏ユ潵璁夸簨鐢憋紝鎮ㄦ潵鍋氫粈涔堢殑"
+ placeholder-style="color: #999999;"
+ />
+ </view>
+ </view>
+ </view>
+ <view class="cate">
+ <view class="cate_head">杞﹁締淇℃伅</view>
+ <view class="cate_list">
+ <view class="cate_list_item">
+ <text>鐨朅D12178</text>
+ <u-icon name="close" color="#999999" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="cate_add" @click="show2 = true">+娣诲姞杞﹁締</view>
+ </view>
+ <view class="cate">
+ <view class="cate_head">闅忚浜哄憳淇℃伅</view>
+ <view class="cate_list">
+ <view class="cate_list_item">
+ <text>浣曟睙瀹�</text>
+ <u-icon name="close" color="#999999" size="20"></u-icon>
+ </view>
+ </view>
+ <view class="cate_add" @click="show1 = true">+娣诲姞闅忚浜哄憳</view>
+ </view>
+ <view class="zw"></view>
+ <view class="footer">
+ <view class="footer_btn">鎻愪氦</view>
+ </view>
+ <!-- 闂ㄧ -->
+ <u-picker
+ :show="show"
+ :columns="columns"
+ :immediateChange="true"
+ keyName="name"
+ @cancel="show = false"
+ @confirm="confirm"
+ ></u-picker>
+ <!-- 闅忚浜哄憳 -->
+ <!-- 閫夋嫨闅忚浜哄憳 -->
+ <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" placeholder="璇疯緭鍏ヨ溅鐗屽彿" />
+ </view>
+ <view class="addcar_footer">
+ <view class="addcar_footer_item">鍙栨秷</view>
+ <view class="addcar_footer_item t">鎻愪氦</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"
+ placeholder-style="color: #999999;"
+ 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"
+ maxlength="11"
+ placeholder-style="color: #999999;"
+ 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">
+ <text>韬唤璇�</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"
+ placeholder-style="color: #999999;"
+ 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"
+ placeholder-style="color: #999999;"
+ placeholder="璇疯緭鍏ユ偍鐨勫叕鍙稿悕绉�"
+ />
+ </view>
+ </view>
+ <view class="adduser_list_item">
+ <view class="adduser_list_item_label">
+ <text>浜鸿劯鐓х墖</text>
+ <text>*</text>
+ </view>
+ <view class="adduser_list_item_ipt1">
+ <u-upload
+ :fileList="fileList"
+ @afterRead="afterRead"
+ @delete="deletePic"
+ name="1"
+ multiple
+ :maxCount="1"
+ ></u-upload>
+ </view>
+ </view>
+ <view class="adduser_list_item">
+ <view class="adduser_list_item_label">
+ <text>鍋ュ悍璇佺収鐗�</text>
+ <text></text>
+ </view>
+ <view class="adduser_list_item_ipt1">
+ <u-upload
+ :fileList="fileList"
+ @afterRead="afterRead"
+ @delete="deletePic"
+ name="1"
+ multiple
+ :maxCount="1"
+ ></u-upload>
+ </view>
+ </view>
+ </view>
+ <view class="adduser_footer">
+ <view class="adduser_footer_item">鍙栨秷</view>
+ <view class="adduser_footer_item t">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
</template>
<script>
- export default {
- data() {
- return {
- show: false,
- show1: false,
- show2: false,
- show3: false,
- fileList: [],
- columns: [
- [{
- name: '涓滈棬',
- id: 1
- },
- {
- name: '瑗块棬',
- id: 2
- }
- ]
- ]
- };
- },
- methods: {
- confirm(e) {
- console.log(e)
- this.show = false
- },
- // 鍒犻櫎鍥剧墖
- deletePic(event) {
- this[`fileList${event.name}`].splice(event.index, 1)
- },
- // 鏂板鍥剧墖
- async afterRead(event) {
- // 褰撹缃� multiple 涓� true 鏃�, file 涓烘暟缁勬牸寮忥紝鍚﹀垯涓哄璞℃牸寮�
- let lists = [].concat(event.file)
- let fileListLen = this[`fileList${event.name}`].length
- lists.map((item) => {
- this[`fileList${event.name}`].push({
- ...item,
- status: 'uploading',
- message: '涓婁紶涓�'
- })
- })
- for (let i = 0; i < lists.length; i++) {
- const result = await this.uploadFilePromise(lists[i].url)
- let item = this[`fileList${event.name}`][fileListLen]
- this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
- status: 'success',
- message: '',
- url: result
- }))
- fileListLen++
- }
- },
- uploadFilePromise(url) {
- return new Promise((resolve, reject) => {
- let a = uni.uploadFile({
- url: 'http://192.168.2.21:7001/upload', // 浠呬负绀轰緥锛岄潪鐪熷疄鐨勬帴鍙e湴鍧�
- filePath: url,
- name: 'file',
- formData: {
- user: 'test'
- },
- success: (res) => {
- setTimeout(() => {
- resolve(res.data.data)
- }, 1000)
- }
- });
- })
- },
- }
- }
+export default {
+ data() {
+ return {
+ show: false,
+ show1: false,
+ show2: false,
+ show3: false,
+ fileList: [],
+ columns: [
+ [{
+ name: '涓滈棬',
+ id: 1
+ },
+ {
+ name: '瑗块棬',
+ id: 2
+ }
+ ]
+ ]
+ }
+ },
+ methods: {
+ confirm(e) {
+ console.log(e)
+ this.show = false
+ },
+ // 鍒犻櫎鍥剧墖
+ deletePic(event) {
+ this[`fileList${event.name}`].splice(event.index, 1)
+ },
+ // 鏂板鍥剧墖
+ async afterRead(event) {
+ // 褰撹缃� multiple 涓� true 鏃�, file 涓烘暟缁勬牸寮忥紝鍚﹀垯涓哄璞℃牸寮�
+ let lists = [].concat(event.file)
+ let fileListLen = this[`fileList${event.name}`].length
+ lists.map((item) => {
+ this[`fileList${event.name}`].push({
+ ...item,
+ status: 'uploading',
+ message: '涓婁紶涓�'
+ })
+ })
+ for (let i = 0; i < lists.length; i++) {
+ const result = await this.uploadFilePromise(lists[i].url)
+ let item = this[`fileList${event.name}`][fileListLen]
+ this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+ status: 'success',
+ message: '',
+ url: result
+ }))
+ fileListLen++
+ }
+ },
+ uploadFilePromise(url) {
+ return new Promise((resolve, reject) => {
+ let a = uni.uploadFile({
+ url: 'http://192.168.2.21:7001/upload', // 浠呬负绀轰緥锛岄潪鐪熷疄鐨勬帴鍙e湴鍧�
+ filePath: url,
+ name: 'file',
+ formData: {
+ user: 'test'
+ },
+ success: (res) => {
+ setTimeout(() => {
+ resolve(res.data.data)
+ }, 1000)
+ }
+ })
+ })
+ },
+ }
+}
</script>
<style>
- page {
- background-color: #F7F7F7 !important;
- }
- .u-upload__button {
- margin: 0 !important;
- }
+page {
+ background-color: #f7f7f7 !important;
+}
+.u-upload__button {
+ margin: 0 !important;
+}
</style>
<style lang="scss" scoped>
- .visit {
- width: 100%;
-
- .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: 500;
- 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_label {
- flex-shrink: 0;
- 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: 30rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #E0312A;
- }
- }
- }
- .adduser_list_item_ipt {
- flex: 1;
- 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;
- text {
- font-size: 28rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #333333;
- }
- }
- }
- }
- .adduser_footer {
- width: 100%;
- margin-top: 60rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .t {
- background: #025EEF !important;
- color: #ffffff !important;
- }
- .adduser_footer_item {
- width: 336rpx;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- border-radius: 44rpx;
- border: 1rpx solid #025EEF;
- font-size: 32rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #025EEF;
- 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: 500;
- 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: #999999;
- text-align: center;
- }
- }
- .addcar_footer {
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-top: 60rpx;
- .t {
- background: #025EEF !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: 500;
- 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: 500;
- color: #FFFFFF;
- }
- }
- }
-
+.visit {
+ width: 100%;
- .head {
- width: 100%;
- padding: 20rpx 30rpx;
- box-sizing: border-box;
- font-size: 28rpx;
- font-weight: 400;
- color: #666666;
- }
+ .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: 500;
+ 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_label {
+ flex-shrink: 0;
+ 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: 30rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #e0312a;
+ }
+ }
+ }
+ .adduser_list_item_ipt {
+ flex: 1;
+ 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;
+ text {
+ font-size: 28rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+ }
+ .adduser_footer {
+ width: 100%;
+ margin-top: 60rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .t {
+ background: #025eef !important;
+ color: #ffffff !important;
+ }
+ .adduser_footer_item {
+ width: 336rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ border-radius: 44rpx;
+ border: 1rpx solid #025eef;
+ font-size: 32rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #025eef;
+ margin-right: 18rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ }
+ }
+ }
- .list {
- width: 100%;
- padding: 0 30rpx;
- box-sizing: border-box;
- background-color: #ffffff;
+ .addcar {
+ padding: 30rpx;
+ width: 100%;
+ box-sizing: border-box;
+ .addcar_head {
+ text-align: center;
+ font-size: 32rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 500;
+ 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: #999999;
+ text-align: center;
+ }
+ }
+ .addcar_footer {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-top: 60rpx;
+ .t {
+ background: #025eef !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;
+ }
+ }
+ }
+ }
- .list_item {
- width: 100%;
- height: 98rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- border-bottom: 1rpx solid #E5E5E5;
+ .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: 500;
+ 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: 500;
+ color: #ffffff;
+ }
+ }
+ }
- .list_item_label {
- flex-shrink: 0;
- display: flex;
- align-items: center;
+ .head {
+ width: 100%;
+ padding: 20rpx 30rpx;
+ box-sizing: border-box;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #666666;
+ }
- text {
- &:nth-child(1) {
- font-size: 30rpx;
- font-weight: 400;
- color: #222222;
- }
+ .list {
+ width: 100%;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ background-color: #ffffff;
- &:nth-child(2) {
- font-size: 30rpx;
- font-weight: 400;
- color: #E42D2D;
- }
- }
- }
+ .list_item {
+ width: 100%;
+ height: 98rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #e5e5e5;
- .list_item_content {
- flex: 1;
- height: 100%;
- margin-left: 30rpx;
- display: flex;
- align-items: center;
- justify-content: flex-end;
-
- .active {
- background: #025EEF !important;
- color: #FFFFFF !important;
- }
-
- .list_item_content_item {
- width: 104rpx;
- height: 64rpx;
- line-height: 64rpx;
- text-align: center;
- background: #EEEEEE;
- border-radius: 4rpx;
- font-size: 28rpx;
- font-weight: 400;
- color: #333333;
- margin-left: 20rpx;
- }
+ .list_item_label {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
- text {
- font-size: 28rpx;
- font-weight: 400;
- color: #999999;
- margin-right: 6rpx;
- }
+ text {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
- input {
- width: 100%;
- height: 100%;
- text-align: right;
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- }
- }
- }
- }
+ &:nth-child(2) {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #e42d2d;
+ }
+ }
+ }
- .cate {
- width: 100%;
- padding: 30rpx;
- box-sizing: border-box;
- background-color: #ffffff;
- margin-top: 20rpx;
+ .list_item_content {
+ flex: 1;
+ height: 100%;
+ margin-left: 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
- .cate_head {
- font-size: 32rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 500;
- color: #222222;
- }
+ .active {
+ background: #025eef !important;
+ color: #ffffff !important;
+ }
- .cate_list {
- width: 100%;
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- margin-top: 30rpx;
+ .list_item_content_item {
+ width: 104rpx;
+ height: 64rpx;
+ line-height: 64rpx;
+ text-align: center;
+ background: #eeeeee;
+ border-radius: 4rpx;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #333333;
+ margin-left: 20rpx;
+ }
- .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;
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 6rpx;
+ }
- &:last-child {
- margin-right: 0 !important;
- }
+ input {
+ width: 100%;
+ height: 100%;
+ text-align: right;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
- text {
- font-size: 26rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #333333;
- margin-right: 30rpx;
- }
- }
- }
+ .cate {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ margin-top: 20rpx;
- .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 #025EEF;
- font-size: 22rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- margin-top: 20rpx;
- color: #025EEF;
- margin: 0 auto;
- }
- }
+ .cate_head {
+ font-size: 32rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 500;
+ color: #222222;
+ }
- .zw {
- width: 100%;
- height: calc(env(safe-area-inset-bottom) + 118rpx);
- }
+ .cate_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ margin-top: 30rpx;
- .footer {
- width: 100%;
- padding: 0 30rpx;
- padding-bottom: env(safe-area-inset-bottom);
- box-sizing: border-box;
- position: fixed;
- left: 0;
- bottom: 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;
- .footer_btn {
- width: 100%;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- background: #025EEF;
- border-radius: 44rpx;
- font-size: 32rpx;
- font-weight: 500;
- color: #FFFFFF;
- }
- }
- }
+ &: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 #025eef;
+ font-size: 22rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ margin-top: 20rpx;
+ color: #025eef;
+ 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;
+ position: fixed;
+ left: 0;
+ bottom: 30rpx;
+
+ .footer_btn {
+ width: 100%;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: #025eef;
+ border-radius: 44rpx;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #ffffff;
+ }
+ }
+}
</style>
\ No newline at end of file
diff --git a/h5/pages/notice/notice.vue b/h5/pages/notice/notice.vue
index b114ef8..befb446 100644
--- a/h5/pages/notice/notice.vue
+++ b/h5/pages/notice/notice.vue
@@ -40,7 +40,7 @@
window.location.href = authURL
},
getInfo() {
- // 鍏ュ満椤荤煡璇︽儏
+ // 鍏ュ洯椤荤煡璇︽儏
getSystemDictData({
dictCode: 'SYSTEM',
label: 'VISIT_NOTICE'
diff --git a/h5/pages/staff/index.vue b/h5/pages/staff/index.vue
index cdde5d3..dedc392 100644
--- a/h5/pages/staff/index.vue
+++ b/h5/pages/staff/index.vue
@@ -48,7 +48,7 @@
<image class="img" src="@/static/staff/ic_renwuzhongxin.png"></image>
<view class="h1">浠诲姟涓績</view>
<view class="h2">TASK CENTER</view>
- <view class="task_num">99+</view>
+ <view class="task_num">{{ taskNum }}</view>
</view>
<view class="img_wrap" @click="jump('/pages/staff/meetingCalendar')">
<image class="img" src="@/static/staff/ic_wodehuiyi.png"></image>
@@ -74,15 +74,17 @@
</template>
<script>
-import { logoutPost } from '@/api'
+import { logoutPost, stagingHead } from '@/api'
export default {
data() {
return {
- userInfo: uni.getStorageSync('userInfo')
+ userInfo: uni.getStorageSync('userInfo'),
+ taskNum: 0
};
},
onLoad(){
console.log('userInfo', this.userInfo);
+ this.getTaskInfo()
},
methods: {
jump(path){
@@ -97,6 +99,13 @@
url: '/pages/staffLogin/login'
})
},
+ getTaskInfo() {
+ stagingHead({
+ isDetail: '0'
+ }).then(res => {
+ this.taskNum = res.data.taskNum
+ })
+ },
}
};
</script>
@@ -210,11 +219,12 @@
}
.task_num{
position: absolute;
- left: 164rpx;
- top: 20rpx;
- width: 60rpx;
- height: 48rpx;
+ left: 168rpx;
+ top: 26rpx;
+ width: 52rpx;
+ height: 52rpx;
border-radius: 50%;
+ /* border: 1px solid; */
background-color: #fff;
color: #db534c;
display: flex;
diff --git a/h5/pages/staff/meetingCalendar.vue b/h5/pages/staff/meetingCalendar.vue
index 7af417d..346a6b3 100644
--- a/h5/pages/staff/meetingCalendar.vue
+++ b/h5/pages/staff/meetingCalendar.vue
@@ -1,342 +1,489 @@
<template>
- <view class="main_app">
- <view class="tabs">
- <view class="tab" :class="{ active: activeTab === '0' }" @click="tabClick('0')">
- <text class="name">浼氳鏃ュ巻</text>
- <view class="line"></view>
- </view>
- <view class="tab" :class="{ active: activeTab === '1' }" @click="tabClick('1')">
- <text class="name">棰勭害璁板綍</text>
- <view class="line"></view>
- </view>
- </view>
- <!-- -->
- <template v-if="activeTab == '0'">
- <!-- <uni-calendar @change="changeCalendar" :selected="selected" /> -->
- <!-- 鏃ュ巻 -->
- <view class="container_b">
- <Calendar
- ref="Calendar"
- :currentTime="currentTime1"
- :mark="mark"
- :showLunar="false"
- @dayChange="dayChange"
- @monthChange="monthChange"
- :rangeMode="false"
- :maskColor="'#ffffff'"
- :dateStart="dateStart"
- :dateEnd="dateEnd"
- :canDrag="false"
- ></Calendar>
- </view>
- <!-- -->
- <view class="card_list">
- <view class="card_title">
- <view class="name">
- <view class="icon"></view>
- <view class="text">浠婃棩浼氳</view>
- </view>
- <view class="meeting">
- <view class="text mr24">鍏ㄩ儴浼氳瀹�</view>
- <u-icon name="arrow-down" size="12" color="#999999" />
- </view>
- </view>
- <view class="list">
- <view class="item">
- <view class="head">
- <view class="name">aaaaa閫夊瀷</view>
- <view class="status">鍗冲皢寮�濮�</view>
- </view>
- <view class="line">
- <view class="label">浼氳鏃堕棿锛�</view>
- <view class="value">12:00-12</view>
- </view>
- <view class="line">
- <view class="label">浼氳瀹わ細</view>
- <view class="value">202浼氳瀹�</view>
- </view>
- <view class="line">
- <view class="label">棰勭害浜猴細</view>
- <view class="value">鏉ㄦ煇鏌�</view>
- </view>
- <view class="line">
- <view class="label">澶囨敞锛�</view>
- <view class="value">--</view>
- </view>
- </view>
- </view>
- </view>
- </template>
- <!-- -->
- <template v-if="activeTab === '1'">
- <view class="card_list">
- <view class="list">
- <view class="item" @click="handleDetail()">
- <view class="head">
- <view class="name">aaaaa閫夊瀷</view>
- <view class="status">鍗冲皢寮�濮�</view>
- </view>
- <view class="line">
- <view class="label">浼氳鏃堕棿锛�</view>
- <view class="value">12:00-12</view>
- </view>
- <view class="line">
- <view class="label">浼氳瀹わ細</view>
- <view class="value">202浼氳瀹�</view>
- </view>
- <view class="line">
- <view class="label">棰勭害浜猴細</view>
- <view class="value">鏉ㄦ煇鏌�</view>
- </view>
- <view class="line">
- <view class="label">澶囨敞锛�</view>
- <view class="value">--</view>
- </view>
- </view>
- </view>
- </view>
- </template>
- </view>
+ <view class="main_app">
+ <view class="tabs">
+ <view
+ class="tab"
+ :class="{ active: activeTab === '0' }"
+ @click="tabClick('0')"
+ >
+ <text class="name">浼氳鏃ュ巻</text>
+ <view class="line"></view>
+ </view>
+ <view
+ class="tab"
+ :class="{ active: activeTab === '1' }"
+ @click="tabClick('1')"
+ >
+ <text class="name">棰勭害璁板綍</text>
+ <view class="line"></view>
+ </view>
+ </view>
+ <!-- -->
+ <template v-if="activeTab == '0'">
+ <!-- <uni-calendar @change="changeCalendar" :selected="selected" /> -->
+ <!-- 鏃ュ巻 -->
+ <view class="container_b">
+ <Calendar
+ ref="Calendar"
+ :currentTime="currentDate"
+ :mark="monthMark"
+ :showLunar="false"
+ @dayChange="dayChange"
+ @monthChange="monthChange"
+ :rangeMode="false"
+ :maskColor="'#ffffff'"
+ :dateStart="dateStart"
+ :dateEnd="dateEnd"
+ :canDrag="false"
+ ></Calendar>
+ </view>
+ <!-- -->
+ <view class="card_list">
+ <view class="card_title">
+ <view class="name">
+ <view class="icon"></view>
+ <view class="text">浠婃棩浼氳</view>
+ </view>
+ <view class="meeting">
+ <view class="text mr24" @click="isShowStatus = true">{{
+ activeRoom.name
+ }}</view>
+ <u-icon name="arrow-down" size="12" color="#999999" />
+ </view>
+ </view>
+ <view class="list">
+ <view
+ @click="handleDetail(item.id)"
+ class="item"
+ v-for="item in myMeetingList"
+ :key="item.id"
+ >
+ <view class="head">
+ <view class="name">{{ item.meetingName }}</view>
+ <view class="status" v-if="item.meetingStatus == '1'"
+ >鏈紑濮�</view
+ >
+ <view class="status red" v-if="item.meetingStatus == '2'"
+ >杩涜涓�</view
+ >
+ <view class="status" v-if="item.meetingStatus == '3'"
+ >宸茬粨鏉�</view
+ >
+ <view class="status padding" v-if="item.meetingStatus == '4'"
+ >鍗冲皢寮�濮�</view
+ >
+ <view class="status" v-if="item.meetingStatus == '5'"
+ >宸叉挙閿�</view
+ >
+ </view>
+ <view class="line">
+ <view class="label">浼氳鏃堕棿锛�</view>
+ <view class="value">{{ item.meetingTime }}</view>
+ </view>
+ <view class="line">
+ <view class="label">浼氳瀹わ細</view>
+ <view class="value">{{ item.roomName }}</view>
+ </view>
+ <view class="line">
+ <view class="label">棰勭害浜猴細</view>
+ <view class="value">{{ item.bookingUser }}</view>
+ </view>
+ <view class="line">
+ <view class="label">澶囨敞锛�</view>
+ <view class="value">{{ item.remark || item.meetingRemark }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </template>
+ <!-- -->
+ <template v-if="activeTab === '1'">
+ <view class="card_list">
+ <view class="list">
+ <view
+ class="item"
+ v-for="item in recordList"
+ :key="item.id"
+ @click="handleDetail(item.id)"
+ >
+ <view class="head">
+ <view class="name">{{ item.meetingName }}</view>
+ <view class="status" v-if="item.meetingStatus == '1'"
+ >鏈紑濮�</view
+ >
+ <view class="status red" v-if="item.meetingStatus == '2'"
+ >杩涜涓�</view
+ >
+ <view class="status" v-if="item.meetingStatus == '3'"
+ >宸茬粨鏉�</view
+ >
+ <view class="status padding" v-if="item.meetingStatus == '4'"
+ >鍗冲皢寮�濮�</view
+ >
+ <view class="status" v-if="item.meetingStatus == '5'"
+ >宸叉挙閿�</view
+ >
+ </view>
+ <view class="line">
+ <view class="label">浼氳鏃堕棿锛�</view>
+ <view class="value">{{ item.meetingTime }}</view>
+ </view>
+ <view class="line">
+ <view class="label">浼氳瀹わ細</view>
+ <view class="value">{{ item.roomName }}</view>
+ </view>
+ <view class="line">
+ <view class="label">棰勭害浜猴細</view>
+ <view class="value">{{ item.bookingUser }}</view>
+ </view>
+ <view class="line">
+ <view class="label">澶囨敞锛�</view>
+ <view class="value">{{ item.remark || item.meetingRemark }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </template>
+
+ <u-picker
+ keyName="name"
+ :show="isShowStatus"
+ :columns="meetingList"
+ @confirm="seletedStatus"
+ @cancel="isShowStatus = false"
+ ></u-picker>
+ </view>
</template>
<script>
-import Calendar from '@/components/Li-Calendar/Li-Calendar.vue';
-import { getDay } from '@/utils/utils.js';
+import Calendar from '@/components/Li-Calendar/Li-Calendar.vue'
+import dayja from 'dayjs'
+import { myMeetingPage, monthMeetingPage, roomsListPost } from '@/api'
function getDate(date, AddDayCount = 0) {
- if (!date) {
- date = new Date();
- }
- if (typeof date !== 'object') {
- date = date.replace(/-/g, '/');
- }
- const dd = new Date(date);
+ if (!date) {
+ date = new Date()
+ }
+ if (typeof date !== 'object') {
+ date = date.replace(/-/g, '/')
+ }
+ const dd = new Date(date)
- dd.setDate(dd.getDate() + AddDayCount); // 鑾峰彇AddDayCount澶╁悗鐨勬棩鏈�
+ dd.setDate(dd.getDate() + AddDayCount) // 鑾峰彇AddDayCount澶╁悗鐨勬棩鏈�
- const y = dd.getFullYear();
- const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1; // 鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈燂紝涓嶈冻10琛�0
- const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate(); // 鑾峰彇褰撳墠鍑犲彿锛屼笉瓒�10琛�0
- return {
- fullDate: y + '-' + m + '-' + d,
- year: y,
- month: m,
- date: d,
- day: dd.getDay()
- };
+ const y = dd.getFullYear()
+ const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈燂紝涓嶈冻10琛�0
+ const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 鑾峰彇褰撳墠鍑犲彿锛屼笉瓒�10琛�0
+ return {
+ fullDate: y + '-' + m + '-' + d,
+ year: y,
+ month: m,
+ date: d,
+ day: dd.getDay()
+ }
}
export default {
- components: {
- Calendar
+ components: {
+ Calendar
+ },
+ data() {
+ return {
+ activeTab: '0',
+ recordList: [],
+ recordPage: 1,
+ myPage: 1,
+ myMeetingList: [],
+ currentDate: '',
+ dateStart: '1999-05-01',
+ dateEnd: '2999-06-15',
+ monthMark: [],
+
+ isShowStatus: false,
+ activeRoom: {
+ name: '鍏ㄩ儴浼氳瀹�',
+ id: ''
+ },
+ meetingList: [],
+
+ }
+ },
+ onLoad() {
+ this.currentDate = dayja().format('YYYY-MM-DD')
+ this.initData()
+ this.getRoomList()
+ },
+ onShow() {
+ this.tabClick('0')
},
- data() {
- return {
- activeTab: '0',
- currentTime1: '',
- dateStart: '1999-05-01',
- dateEnd: '2999-06-15',
- mark: [],
- selected: [
- {
- date: getDate(new Date(), -3).fullDate
- // info: '鎵撳崱'
- },
- {
- date: getDate(new Date(), -2).fullDate,
- // info: '绛惧埌',
- data: {
- custom: '鑷畾涔変俊鎭�',
- name: '鑷畾涔夋秷鎭ご'
- }
- },
- {
- date: getDate(new Date(), -1).fullDate,
- info: '宸叉墦鍗�'
- }
- ]
- };
- },
- methods: {
- tabClick(val) {
- this.activeTab = val;
- },
- handleDetail(item) {
- uni.navigateTo({
- // url: `/pages/staff/meetingDetail?id=${item.id}`,
- url: `/pages/staff/meetingDetail`
- });
- },
- changeCalendar(e) {
- console.log(e);
- },
- // 鐐瑰嚮鏌愬ぉ
- dayChange(data) {
- console.log(data);
- let date = data.time;
- let yyyy = data.time.substring(0, 4);
- let mm = Number(data.time.substring(data.time.indexOf('-') + 1, data.time.lastIndexOf('-')));
- let dd = Number(data.time.substring(data.time.lastIndexOf('-') + 1, data.time.length));
- mm = mm < 10 ? `0${mm}` : mm;
- dd = dd < 10 ? `0${dd}` : dd;
- let riqi = `${yyyy}-${mm}-${dd}`;
- this.currentTime = riqi;
- this.list = [];
- this.next = false;
- this.page = 0;
- // this.getRoomList()
- },
- // 涓嬩竴鏈�
- monthChange(data) {
- let date = data.date.replace(/[/]/g, '-');
- let yyyy = date.substring(0, 4);
- let mm = Number(date.substring(date.indexOf('-') + 1, date.lastIndexOf('-')));
- let dd = Number(date.substring(date.lastIndexOf('-') + 1, date.length));
- mm = mm < 10 ? `0${mm}` : mm;
- dd = dd < 10 ? `0${dd}` : dd;
- let riqi = `${yyyy}-${mm}-${dd}`;
- console.log('鏃ユ湡', riqi);
- this.currentTime1 = riqi;
- // this.getDateNum()
- }
- }
+ onReachBottom() {
+ const { activeTab } = this
+ if (activeTab == '0') {
+ this.myPage = this.myPage + 1
+ this.getDayMeeting()
+ } else {
+ this.recordPage = this.recordPage + 1
+ this.getRecordList()
+ }
+ },
+ methods: {
+ initData() {
+ // 褰撴湀鏁版嵁
+ monthMeetingPage({
+ yearMonth: this.currentDate.slice(0, 7)
+ }).then(res => {
+ this.monthMark = res.data.filter(i => i.meetingNum > 0).map(j => {
+ return {
+ time: j.monthDate,
+ pointText: j.meetingNum,
+ pointTextColor: 'red'
+ }
+ })
+ })
+ },
+ getRoomList() {
+ roomsListPost({}).then(res => {
+ this.meetingList = [[{ id: '', name: '鍏ㄩ儴浼氳瀹�' }, ...res.data]]
+ console.log('meetingList', this.meetingList);
+ })
+ },
+ tabClick(val) {
+ this.activeTab = val
+ if (val === '1') {
+ this.recordPage = 1
+ this.getRecordList()
+ } else {
+ this.myMeetingList = []
+ this.activeRoom = {
+ name: '鍏ㄩ儴浼氳瀹�',
+ id: ''
+ }
+ this.myPage = 1
+ this.getDayMeeting()
+ }
+ },
+ seletedStatus(e) {
+ this.myMeetingList = []
+ this.activeRoom = { ...e.value[0] }
+ this.isShowStatus = false
+ this.getDayMeeting()
+ },
+ handleDetail(id) {
+ uni.navigateTo({
+ url: `/pages/staff/meetingDetail?id=${id}`,
+ // url: `/pages/staff/meetingDetail`
+ })
+ },
+ changeCalendar(e) {
+ console.log(e)
+ },
+ // 鐐瑰嚮鏌愬ぉ
+ dayChange(data) {
+ let date = data.time
+ let yyyy = data.time.substring(0, 4)
+ let mm = Number(data.time.substring(data.time.indexOf('-') + 1, data.time.lastIndexOf('-')))
+ let dd = Number(data.time.substring(data.time.lastIndexOf('-') + 1, data.time.length))
+ mm = mm < 10 ? `0${mm}` : mm
+ dd = dd < 10 ? `0${dd}` : dd
+ let riqi = `${yyyy}-${mm}-${dd}`
+ this.currentDate = riqi
+ this.myMeetingList = []
+ this.activeStatus = {
+ name: '鍏ㄩ儴浼氳瀹�',
+ key: ''
+ }
+ this.myPage = 1
+ this.getDayMeeting()
+ },
+ // 涓嬩竴鏈�
+ monthChange(data) {
+ let date = data.date.replace(/[/]/g, '-')
+ let yyyy = date.substring(0, 4)
+ let mm = Number(date.substring(date.indexOf('-') + 1, date.lastIndexOf('-')))
+ let dd = Number(date.substring(date.lastIndexOf('-') + 1, date.length))
+ mm = mm < 10 ? `0${mm}` : mm
+ dd = dd < 10 ? `0${dd}` : dd
+ let riqi = `${yyyy}-${mm}-${dd}`
+ console.log('鏃ユ湡', riqi)
+ this.currentDate = riqi
+ this.initData()
+ },
+ getRecordList() {
+ const { activeStatus } = this
+ myMeetingPage({
+ capacity: 10,
+ page: this.recordPage,
+ model: {
+ // status: activeStatus.key || null,
+ // roomsId: this.roomId,
+ queryType: 2
+ }
+ }).then(res => {
+ this.recordList = [...this.recordList, ...res.data.records]
+ })
+ },
+ getDayMeeting() {
+ const { myPage, activeRoom, currentDate } = this
+ // 褰撳ぉ鎴戝弬涓庣殑浼氳
+ myMeetingPage({
+ model: {
+ queryType: '1',
+ roomsId: activeRoom.id,
+ queryDate: currentDate
+ },
+ page: myPage,
+ capacity: 10
+ }).then(res => {
+ this.myMeetingList = [ ...this.myMeetingList, ...res.data.records ]
+ })
+ },
+ }
};
</script>
<style lang="scss">
page {
- background-color: #f7f7f7;
+ background-color: #f7f7f7;
}
.main_app {
- padding: 0;
- background-color: #f7f7f7;
- ::v-deep .uni-calendar-item--checked {
- background-color: $uni-color-primary;
- border-radius: 8rpx;
- }
- ::v-deep .uni-calendar-item--isDay-text {
- color: $uni-color-primary;
- }
- ::v-deep .uni-calendar-item--isDay {
- background-color: $uni-color-primary;
- color: #fff;
- border-radius: 8rpx;
- }
- .tabs {
- display: flex;
- background-color: #fff;
- .tab {
- flex: 1;
- height: 88rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 28rpx;
- color: #666666;
- position: relative;
- .line {
- width: 60rpx;
- height: 4rpx;
- background: #fff;
- border-radius: 3rpx;
- position: absolute;
- bottom: 0;
- left: 50%;
- transform: translate(-50%, 0);
- }
- }
- .active {
- font-weight: 500;
- font-size: 30rpx;
- color: #222222;
- .line {
- background-color: $uni-color-primary;
- }
- }
- }
- //
- .card_list {
- padding: 30rpx;
- .card_title {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 22rpx;
- .name {
- display: flex;
- align-items: center;
- .icon {
- width: 6rpx;
- height: 32rpx;
- background: $uni-color-primary;
- border-radius: 4rpx;
- margin-right: 16rpx;
- }
- .text {
- font-weight: 600;
- font-size: 32rpx;
- color: #222222;
- }
- }
- .meeting {
- display: flex;
- height: 52rpx;
- line-height: 52rpx;
- background: #ffffff;
- border-radius: 26rpx;
- border: 2rpx solid #eeeeee;
- padding: 0 24rpx;
- .text {
- font-size: 24rpx;
- color: #333333;
- }
- }
- }
- .list {
- .item {
- padding: 0rpx 30rpx 30rpx;
- background: #ffffff;
- border-radius: 8rpx;
- .head {
- display: flex;
- justify-content: space-between;
- align-items: center;
- border-bottom: 1rpx solid #e5e5e5;
- padding: 22rpx 0;
- margin-bottom: 22rpx;
- .name {
- font-weight: 600;
- font-size: 32rpx;
- color: #222222;
- }
- .status {
- height: 38rpx;
- line-height: 38rpx;
- padding: 0 16rpx;
- border-radius: 4rpx;
- border: 1rpx solid #999999;
- font-size: 22rpx;
- color: #999999;
- }
- }
- .line {
- display: flex;
- margin-bottom: 12rpx;
- .label {
- width: 140rpx;
- color: #666666;
- }
- .value {
- flex: 1;
- }
- }
- }
- }
- }
+ padding: 0;
+ background-color: #f7f7f7;
+ ::v-deep .uni-calendar-item--checked {
+ background-color: $uni-color-primary;
+ border-radius: 8rpx;
+ }
+ ::v-deep .uni-calendar-item--isDay-text {
+ color: $uni-color-primary;
+ }
+ ::v-deep .uni-calendar-item--isDay {
+ background-color: $uni-color-primary;
+ color: #fff;
+ border-radius: 8rpx;
+ }
+ .tabs {
+ display: flex;
+ background-color: #fff;
+ .tab {
+ flex: 1;
+ height: 88rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 28rpx;
+ color: #666666;
+ position: relative;
+ .line {
+ width: 60rpx;
+ height: 4rpx;
+ background: #fff;
+ border-radius: 3rpx;
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translate(-50%, 0);
+ }
+ }
+ .active {
+ font-weight: 500;
+ font-size: 30rpx;
+ color: #222222;
+ .line {
+ background-color: $uni-color-primary;
+ }
+ }
+ }
+ //
+ .card_list {
+ padding: 30rpx;
+ .card_title {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 22rpx;
+ .name {
+ display: flex;
+ align-items: center;
+ .icon {
+ width: 6rpx;
+ height: 32rpx;
+ background: $uni-color-primary;
+ border-radius: 4rpx;
+ margin-right: 16rpx;
+ }
+ .text {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ }
+ }
+ .meeting {
+ display: flex;
+ height: 52rpx;
+ line-height: 52rpx;
+ background: #ffffff;
+ border-radius: 26rpx;
+ border: 2rpx solid #eeeeee;
+ padding: 0 24rpx;
+ .text {
+ font-size: 24rpx;
+ color: #333333;
+ }
+ }
+ }
+ .list {
+ .item {
+ padding: 0rpx 30rpx 30rpx;
+ background: #ffffff;
+ border-radius: 8rpx;
+ margin-bottom: 24rpx;
+ .head {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ border-bottom: 1rpx solid #e5e5e5;
+ padding: 22rpx 0;
+ margin-bottom: 22rpx;
+ .name {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ }
+ .status {
+ height: 38rpx;
+ line-height: 38rpx;
+ padding: 0 16rpx;
+ border-radius: 4rpx;
+ border: 1rpx solid #999999;
+ font-size: 22rpx;
+ color: #999999;
+ }
+ .padding {
+ color: $uni-color-primary;
+ border: 1rpx solid $uni-color-primary;
+ }
+ .red {
+ color: #e23f29;
+ border: 1rpx solid #e23f29;
+ }
+ }
+ .line {
+ display: flex;
+ margin-bottom: 12rpx;
+ .label {
+ width: 140rpx;
+ color: #666666;
+ }
+ .value {
+ flex: 1;
+ }
+ }
+ }
+ }
+ }
}
.container_b {
- width: 100%;
- padding: 30rpx;
- background: #ffffff;
- padding-top: 20rpx;
- box-sizing: border-box;
+ width: 100%;
+ padding: 30rpx;
+ background: #ffffff;
+ padding-top: 20rpx;
+ box-sizing: border-box;
}
</style>
diff --git a/h5/pages/staff/meetingDetail.vue b/h5/pages/staff/meetingDetail.vue
index d2a52c6..d5a05e9 100644
--- a/h5/pages/staff/meetingDetail.vue
+++ b/h5/pages/staff/meetingDetail.vue
@@ -1,168 +1,244 @@
<template>
- <view class="main_app">
- <view class="head_app">
- <view class="title">璁ㄨ鏅鸿兘浼氳瀹ょ郴缁熼�夊瀷</view>
- <view class="text">201浼氳瀹わ綔2023骞�5鏈�4鏃� 10:00-12:00</view>
- </view>
- <!-- -->
- <view class="empty"></view>
- <view class="module_list">
- <view class="item">
- <view class="label">浼氳鍐呭</view>
- <view class="value">
- <!-- <text>涓昏璁ㄨ鏅鸿兘浼氳瀹ょ郴缁熼�夊瀷锛岃澶у涓�瀹氳鎸夋椂鏉ュ紑浼氾紝鏃堕棿瀹濊吹銆傛劅璋㈠ぇ瀹讹紒</text> -->
- <u-textarea border="none" v-model="param.aaa" count :maxlength="300" placeholder="璇疯緭鍏ヤ細璁唴瀹�" placeholder-class="placeholder9" />
- </view>
- </view>
- <view class="item">
- <view class="label">鍙備細浜哄憳</view>
- <view class="value">
- <view class="personnel">
- <view class="per_item" v-for="i in 10">
- <image src="../../static/logo@2x.png" class="avatar" mode=""></image>
- <view class="name">鑳″叓涓�</view>
- </view>
- </view>
- </view>
- </view>
- <view class="item">
- <view class="label">鏈嶅姟椤�</view>
- <view class="value">甯崱 | 鎶曞奖浠� | 绗旇鏈數鑴�</view>
- </view>
- <view class="item">
- <view class="label">澶囨敞</view>
- <view class="value">浠婂ぉ浜哄锛岃鎸夋椂鍙傚姞</view>
- </view>
- <view class="item">
- <view class="label">棰勭害浜�</view>
- <view class="value">琛屾斂閮� 璧靛己 18832319899</view>
- </view>
- </view>
- <view class="empty empty2"></view>
- <view class="main_footer">
- <view class="btn" @click="handleSub('0')">鎾ゅ洖</view>
- <view class="btn agree" @click="handleSub('1')">淇敼</view>
- </view>
- </view>
+ <view class="main_app">
+ <view class="head_app">
+ <view class="title">{{ detail.meetingName }}</view>
+ <view class="text"
+ >{{ detail.roomName }}锝渰{ detail.meetingDate }}
+ {{ detail.meetingTime }}</view
+ >
+ </view>
+ <!-- -->
+ <view class="empty"></view>
+ <view class="module_list">
+ <view class="item">
+ <view class="label">浼氳鍐呭</view>
+ <view class="value">
+ <!-- <text>涓昏璁ㄨ鏅鸿兘浼氳瀹ょ郴缁熼�夊瀷锛岃澶у涓�瀹氳鎸夋椂鏉ュ紑浼氾紝鏃堕棿瀹濊吹銆傛劅璋㈠ぇ瀹讹紒</text> -->
+ <u-textarea
+ border="none"
+ v-model="detail.meetingContent"
+ disabled
+ :maxlength="300"
+ placeholder="璇疯緭鍏ヤ細璁唴瀹�"
+ placeholder-class="placeholder9"
+ />
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鍙備細浜哄憳</view>
+ <view class="value">
+ <view class="personnel">
+ <view
+ class="per_item"
+ v-for="mem in detail.userResponseList"
+ :key="mem.id"
+ >
+ <image :src="mem.avatar" class="avatar" mode=""></image>
+ <view class="name">{{ mem.realname }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鏈嶅姟椤�</view>
+ <view class="value">
+ <template v-for="(ser, serI) in detail.projectsResponseList">
+ <text :key="ser.id">{{ ser.name }}</text>
+ <text
+ :key="ser.id"
+ class="mr12 ml12"
+ v-if="serI != detail.projectsResponseList.length - 1"
+ >
+ |
+ </text>
+ </template>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">澶囨敞</view>
+ <view class="value">{{ detail.remark || detail.meetingRemark }}</view>
+ </view>
+ <view class="item">
+ <view class="label">棰勭害浜�</view>
+ <view class="value"
+ >{{ detail.bookingUser.companyName || "" }}
+ {{ detail.bookingUser.realname }}
+ {{ detail.bookingUser.mobile }}</view
+ >
+ </view>
+ </view>
+ <view class="empty empty2"></view>
+ <view class="main_footer" v-if="detail.meetingStatus == '1'">
+ <view class="btn" @click="handleCancel(detail.id)">鎾ゅ洖</view>
+ <view class="btn agree" @click="handleEdit">淇敼</view>
+ </view>
+ <view class="main_footer" v-if="detail.meetingStatus == '2'">
+ <view class="btn agree" @click="handleSub('2')">缁撴潫</view>
+ </view>
+ </view>
</template>
<script>
- export default {
- data() {
- return {
- param: {}
- };
- },
- methods: {
- handleSub() {
-
- }
- }
- }
+import { meetingDetail, cancelById } from '@/api'
+export default {
+ data() {
+ return {
+ param: {},
+ detail: {},
+ id: ''
+ }
+ },
+ onLoad(option) {
+ this.id = option.id
+ this.getDetail()
+ },
+ methods: {
+ getDetail() {
+ const { id } = this
+ meetingDetail({ id }).then(res => {
+ this.detail = res.data
+ })
+ },
+ handleCancel(id) {
+ uni.showModal({
+ title: '鎻愮ず',
+ // confirmText: '纭',
+ content: '纭鎾ゅ洖璇ヤ細璁悧',
+ success: function (res) {
+ if (res.confirm) {
+ cancelById({ id }).then(res => {
+ if (res.code === 200) {
+ setTimeout(() => {
+ uni.showToast({
+ title: '鎾ゅ洖鎴愬姛',
+ icon: 'success'
+ })
+ })
+ setTimeout(() => {
+ uni.navigateBack()
+ })
+ }
+ })
+ }
+ }
+ })
+
+ },
+ handleEdit() {
+ const { id } = this
+ uni.navigateTo({
+ url: `/pages/staff/meetingSubOrder?id=${id}`
+ })
+ },
+ handleSub() {
+
+ }
+ }
+}
</script>
<style lang="scss">
- page{
- background-color: #f7f7f7;
- }
- .main_app{
- padding: 0 ;
- .head_app{
- padding: 30rpx;
- background-color: #fff;
- .title{
- font-weight: 600;
- font-size: 36rpx;
- color: #222222;
- margin-bottom: 30rpx;
- }
- .text{
- font-size: 28rpx;
- color: #666666;
- }
- }
- }
- .module_list {
- background-color: #fff;
- padding: 0 30rpx;
- .item {
- padding: 30rpx 0;
- border-bottom: 1rpx solid #E5E5E5;
-
- .label {
- font-size: 26rpx;
- color: #666666;
- margin-bottom: 20rpx;
- }
-
- .value {
- font-size: 30rpx;
- display: flex;
- align-items: center;
- ::v-deep textarea{
- padding: 0;
- background-color: #fff !important;
- }
- .personnel{
- display: flex;
- width: 100%;
- overflow-x: auto;
- .per_item{
- flex-shrink: 0;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- margin-right: 24rpx;
- .avatar{
- width: 72rpx;
- height: 72rpx;
- border-radius: 50%;
- }
- .name{
- font-size: 26rpx;
- color: #777777;
- }
- }
- }
- }
- }
- }
- .main_footer {
- padding-bottom: 64rpx;
- display: flex;
- justify-content: space-between;
- position: fixed;
- bottom: 0;
- left: 0;
- width: 100%;
- background-color: #fff;
- padding: 0 30rpx;
- .btn {
- width: 336rpx;
- height: 88rpx;
- line-height: 88rpx;
- background: #FFFFFF;
- border-radius: 44rpx;
- border: 1rpx solid #999999;
- font-size: 32rpx;
- text-align: center;
- margin: 16rpx 0;
- }
-
- .agree {
- background: $uni-color-primary;
- color: #fff;
- border: 1rpx solid $uni-color-primary;
- }
- }
-.empty{
- width: 750rpx;
- height: 20rpx;
- background-color: #f7f7f7;
- margin: 0 -30rpx;
+page {
+ background-color: #f7f7f7;
}
-.empty2{
- height: 280rpx !important;
+.main_app {
+ padding: 0;
+ .head_app {
+ padding: 30rpx;
+ background-color: #fff;
+ .title {
+ font-weight: 600;
+ font-size: 36rpx;
+ color: #222222;
+ margin-bottom: 30rpx;
+ }
+ .text {
+ font-size: 28rpx;
+ color: #666666;
+ }
+ }
+}
+.module_list {
+ background-color: #fff;
+ padding: 0 30rpx;
+ .item {
+ padding: 30rpx 0;
+ border-bottom: 1rpx solid #e5e5e5;
+
+ .label {
+ font-size: 26rpx;
+ color: #666666;
+ margin-bottom: 20rpx;
+ }
+
+ .value {
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
+ ::v-deep textarea {
+ padding: 0;
+ background-color: #fff !important;
+ }
+ .personnel {
+ display: flex;
+ width: 100%;
+ overflow-x: auto;
+ .per_item {
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ margin-right: 24rpx;
+ .avatar {
+ width: 72rpx;
+ height: 72rpx;
+ border-radius: 50%;
+ }
+ .name {
+ font-size: 26rpx;
+ color: #777777;
+ }
+ }
+ }
+ }
+ }
+}
+.main_footer {
+ padding-bottom: 64rpx;
+ display: flex;
+ justify-content: space-between;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ background-color: #fff;
+ padding: 0 30rpx;
+ .btn {
+ flex: 1;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 8rpx;
+ }
+
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+}
+.empty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+}
+.empty2 {
+ height: 280rpx !important;
}
</style>
diff --git a/h5/pages/staff/meetingManager.vue b/h5/pages/staff/meetingManager.vue
index 21a04b5..3a75d64 100644
--- a/h5/pages/staff/meetingManager.vue
+++ b/h5/pages/staff/meetingManager.vue
@@ -1,66 +1,87 @@
<template>
<view class="main_app">
- <!-- -->
- <!-- <uni-calendar @change="changeCalendar" :selected="selected" /> -->
- <!-- 鏃ュ巻 -->
- <view class="container_b">
- <Calendar
- ref="Calendar"
- :currentTime="currentDate"
- :mark="mark"
- :showLunar="false"
- @dayChange="dayChange"
- @monthChange="monthChange"
- :rangeMode="false"
- :maskColor="'#ffffff'"
- :dateStart="dateStart"
- :dateEnd="dateEnd"
- :canDrag="false"
- ></Calendar>
- </view>
- <!-- -->
- <view class="card_list">
- <view class="card_title">
- <view class="name">
- <view class="icon"></view>
- <view class="text">浠婃棩浼氳</view>
- </view>
- <view class="meeting" @click="isShowStatus = true">
- <view class="text mr24">{{ activeStatus.name }}</view>
- <u-icon name="arrow-down" size="12" color="#999999" />
- </view>
+ <template>
+ <!-- <uni-calendar @change="changeCalendar" :selected="selected" /> -->
+ <!-- 鏃ュ巻 -->
+ <view class="container_b">
+ <Calendar
+ ref="Calendar"
+ :currentTime="currentDate"
+ :mark="monthMark"
+ :showLunar="false"
+ @dayChange="dayChange"
+ @monthChange="monthChange"
+ :rangeMode="false"
+ :maskColor="'#ffffff'"
+ :dateStart="dateStart"
+ :dateEnd="dateEnd"
+ :canDrag="false"
+ ></Calendar>
</view>
- <view class="list">
- <view class="item">
- <view class="head">
- <view class="name">aaaaa閫夊瀷</view>
- <view class="status">鍗冲皢寮�濮�</view>
+ <!-- -->
+ <view class="card_list">
+ <view class="card_title">
+ <view class="name">
+ <view class="icon"></view>
+ <view class="text">浠婃棩浼氳</view>
</view>
- <view class="line">
- <view class="label">浼氳鏃堕棿锛�</view>
- <view class="value">12:00-12</view>
+ <view class="meeting">
+ <view class="text mr24" @click="isShowStatus = true">{{
+ activeRoom.name
+ }}</view>
+ <u-icon name="arrow-down" size="12" color="#999999" />
</view>
- <view class="line">
- <view class="label">浼氳瀹わ細</view>
- <view class="value">202浼氳瀹�</view>
- </view>
- <view class="line">
- <view class="label">棰勭害浜猴細</view>
- <view class="value">鏉ㄦ煇鏌�</view>
- </view>
- <view class="line">
- <view class="label">澶囨敞锛�</view>
- <view class="value">--</view>
+ </view>
+ <view class="list">
+ <view
+ @click="handleDetail(item.id)"
+ class="item"
+ v-for="item in myMeetingList"
+ :key="item.id"
+ >
+ <view class="head">
+ <view class="name">{{ item.meetingName }}</view>
+ <view class="status" v-if="item.meetingStatus == '1'"
+ >鏈紑濮�</view
+ >
+ <view class="status red" v-if="item.meetingStatus == '2'"
+ >杩涜涓�</view
+ >
+ <view class="status" v-if="item.meetingStatus == '3'"
+ >宸茬粨鏉�</view
+ >
+ <view class="status padding" v-if="item.meetingStatus == '4'"
+ >鍗冲皢寮�濮�</view
+ >
+ <view class="status" v-if="item.meetingStatus == '5'"
+ >宸叉挙閿�</view
+ >
+ </view>
+ <view class="line">
+ <view class="label">浼氳鏃堕棿锛�</view>
+ <view class="value">{{ item.meetingTime }}</view>
+ </view>
+ <view class="line">
+ <view class="label">浼氳瀹わ細</view>
+ <view class="value">{{ item.roomName }}</view>
+ </view>
+ <view class="line">
+ <view class="label">棰勭害浜猴細</view>
+ <view class="value">{{ item.bookingUser }}</view>
+ </view>
+ <view class="line">
+ <view class="label">澶囨敞锛�</view>
+ <view class="value">{{ item.remark || item.meetingRemark }}</view>
+ </view>
</view>
</view>
</view>
- </view>
-
+ </template>
<!-- -->
- <u-picker
+ <u-picker
keyName="name"
:show="isShowStatus"
- :columns="statusList"
+ :columns="meetingList"
@confirm="seletedStatus"
@cancel="isShowStatus = false"
></u-picker>
@@ -69,70 +90,100 @@
<script>
import Calendar from '@/components/Li-Calendar/Li-Calendar.vue'
-import dayjs from 'dayjs'
-import { myMeetingPage } from '@/api'
+import dayja from 'dayjs'
+import { myMeetingPage, monthMeetingPage, roomsListPost } from '@/api'
+function getDate(date, AddDayCount = 0) {
+ if (!date) {
+ date = new Date()
+ }
+ if (typeof date !== 'object') {
+ date = date.replace(/-/g, '/')
+ }
+ const dd = new Date(date)
+ dd.setDate(dd.getDate() + AddDayCount) // 鑾峰彇AddDayCount澶╁悗鐨勬棩鏈�
+
+ const y = dd.getFullYear()
+ const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈燂紝涓嶈冻10琛�0
+ const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 鑾峰彇褰撳墠鍑犲彿锛屼笉瓒�10琛�0
+ return {
+ fullDate: y + '-' + m + '-' + d,
+ year: y,
+ month: m,
+ date: d,
+ day: dd.getDay()
+ }
+}
export default {
components: {
Calendar
},
data() {
return {
+ activeTab: '0',
+ recordList: [],
+ recordPage: 1,
+ myPage: 1,
+ myMeetingList: [],
currentDate: '',
- dateStart: '2024-01-01',
+ dateStart: '1999-05-01',
dateEnd: '2999-06-15',
- mark: [
- {
- time: '2024-05-30'
- },
- {
- time: '2024-05-22',
- pointText: 'aaa',
- pointTextColor: '#fff'
- },
- {
- time: '2024-05-28',
- text: ['111','222'],
- pointTextColor: '#fff'
- }
- ],
- activeStatus: {
- name: '鍏ㄩ儴浼氳瀹�'
- },
- isShowStatus: false,
- statusList: [[
- { name: '鍏ㄩ儴浼氳瀹�', key: '' },
- { name: '鏈紑濮�', key: '1' },
- { name: '宸茬粨鏉�', key: '2' },
- ]],
- dataList: [],
- page: 1
+ monthMark: [],
+
+ isShowStatus: false,
+ activeRoom: {
+ name: '鍏ㄩ儴浼氳瀹�',
+ id: ''
+ },
+ meetingList: [],
+
}
},
onLoad() {
- this.currentDate = dayjs().format('YYYY-MM-DD')
- this.getList()
+ this.currentDate = dayja().format('YYYY-MM-DD')
+ this.initData()
+ this.getRoomList()
+ },
+ onShow() {
+ this.myPage = 1
+ this.myMeetingList = []
+ this.getDayMeeting()
+ },
+ onReachBottom() {
+ this.myPage = this.myPage + 1
+ this.getDayMeeting()
},
methods: {
- getList() {
- const { activeStatus } = this
- myMeetingPage({
- capacity: 10,
- page: this.page,
- model: {
- queryDate: this.currentDate,
- status: activeStatus.key || null,
- // roomsId: this.roomId,
- queryType: 1
- }
+ initData() {
+ // 褰撴湀鏁版嵁
+ monthMeetingPage({
+ yearMonth: this.currentDate.slice(0, 7)
}).then(res => {
- this.dataList = res.data.records
- })
+ this.monthMark = res.data.filter(i => i.meetingNum > 0).map(j => {
+ return {
+ time: j.monthDate,
+ pointText: j.meetingNum,
+ pointTextColor: 'red'
+ }
+ })
+ })
},
- handleDetail(item) {
+ getRoomList() {
+ roomsListPost({}).then(res => {
+ this.meetingList = [[{ id: '', name: '鍏ㄩ儴浼氳瀹�' }, ...res.data]]
+ console.log('meetingList', this.meetingList);
+ })
+ },
+ seletedStatus(e) {
+ this.myMeetingList = []
+ this.activeRoom = { ...e.value[0] }
+ this.isShowStatus = false
+ this.getDayMeeting()
+ },
+ handleDetail(id) {
uni.navigateTo({
- // url: `/pages/staff/meetingDetail?id=${item.id}`,
- url: `/pages/staff/meetingDetail`
+ url: `/pages/staff/meetingDetail?id=${id}`,
+ // url: `/pages/staff/meetingDetail`
})
},
changeCalendar(e) {
@@ -140,7 +191,6 @@
},
// 鐐瑰嚮鏌愬ぉ
dayChange(data) {
- console.log(data)
let date = data.time
let yyyy = data.time.substring(0, 4)
let mm = Number(data.time.substring(data.time.indexOf('-') + 1, data.time.lastIndexOf('-')))
@@ -148,11 +198,14 @@
mm = mm < 10 ? `0${mm}` : mm
dd = dd < 10 ? `0${dd}` : dd
let riqi = `${yyyy}-${mm}-${dd}`
- this.currentTime = riqi
- this.list = []
- this.next = false
- this.page = 0
- // this.getRoomList()
+ this.currentDate = riqi
+ this.myMeetingList = []
+ this.activeStatus = {
+ name: '鍏ㄩ儴浼氳瀹�',
+ key: ''
+ }
+ this.myPage = 1
+ this.getDayMeeting()
},
// 涓嬩竴鏈�
monthChange(data) {
@@ -164,14 +217,25 @@
dd = dd < 10 ? `0${dd}` : dd
let riqi = `${yyyy}-${mm}-${dd}`
console.log('鏃ユ湡', riqi)
- this.currentTime1 = riqi
- // this.getDateNum()
+ this.currentDate = riqi
+ this.initData()
},
- seletedStatus(e) {
- this.activeStatus = { ...e.value[0] }
- this.isShowStatus = false
- this.getList()
- },
+
+ getDayMeeting() {
+ const { myPage, activeRoom, currentDate } = this
+ // 褰撳ぉ鎴戝弬涓庣殑浼氳
+ myMeetingPage({
+ model: {
+ queryType: '1',
+ roomsId: activeRoom.id,
+ queryDate: currentDate
+ },
+ page: myPage,
+ capacity: 10
+ }).then(res => {
+ this.myMeetingList = [ ...this.myMeetingList, ...res.data.records ]
+ })
+ },
}
};
</script>
@@ -190,10 +254,6 @@
::v-deep .uni-calendar-item--isDay-text {
color: $uni-color-primary;
}
- ::v-deep .calendar-point {
- /* background-color: $uni-color-primary; */
- }
-
::v-deep .uni-calendar-item--isDay {
background-color: $uni-color-primary;
color: #fff;
@@ -274,6 +334,7 @@
padding: 0rpx 30rpx 30rpx;
background: #ffffff;
border-radius: 8rpx;
+ margin-bottom: 24rpx;
.head {
display: flex;
justify-content: space-between;
@@ -295,6 +356,14 @@
font-size: 22rpx;
color: #999999;
}
+ .padding {
+ color: $uni-color-primary;
+ border: 1rpx solid $uni-color-primary;
+ }
+ .red {
+ color: #e23f29;
+ border: 1rpx solid #e23f29;
+ }
}
.line {
display: flex;
diff --git a/h5/pages/staff/meetingSub.vue b/h5/pages/staff/meetingSub.vue
index fd13806..c33f1b5 100644
--- a/h5/pages/staff/meetingSub.vue
+++ b/h5/pages/staff/meetingSub.vue
@@ -67,18 +67,18 @@
>
<view class="detail_modal">
<view class="title">浼氳瀹ら绾︽儏鍐�</view>
- <view class="h1">璁ㄨxxxxx閫夊瀷</view>
+ <view class="h1">{{ activeInfo.meetingName }}</view>
<view class="line">
<view class="label">浼氳鏃堕棿</view>
- <view class="value">00000</view>
+ <view class="value">{{ activeInfo.meetingTime }}</view>
</view>
<view class="line">
<view class="label">浼氳瀹�</view>
- <view class="value">00000</view>
+ <view class="value">{{ activeInfo.roomName }}</view>
</view>
<view class="line">
<view class="label">棰勭害浜�</view>
- <view class="value">00000</view>
+ <view class="value">{{ activeInfo.bookingUserName }}</view>
</view>
<view class="btn" @click="isShowDetail = false">鍏抽棴</view>
</view>
@@ -101,6 +101,7 @@
},
selDatetime: '',
isShowDetail: false,
+ activeInfo: {},
meetingList: [],
timeList: [],
@@ -140,9 +141,10 @@
const obj = {
startTime: selTimeList[0].startTime,
endTime: selTimeList[selTimeList.length - 1].endTime,
+ bookingTimeList: selTimeList.map(i=>i.id).join(',')
}
uni.navigateTo({
- url: `/pages/staff/meetingSubOrder?yudingDate=${activeRoom.yudingDate}&roomName=${activeRoom.roomName}&roomId=${activeRoom.roomId}&startTime=${obj.startTime}&endTime=${obj.endTime}`
+ url: `/pages/staff/meetingSubOrder?yudingDate=${activeRoom.yudingDate}&roomName=${activeRoom.roomName}&roomId=${activeRoom.roomId}&startTime=${obj.startTime}&endTime=${obj.endTime}&bookingTimeList=${obj.bookingTimeList}`
})
// this.$jump('/pages/staff/vehicle/apply')
},
@@ -169,11 +171,11 @@
})
},
datetimeClick(item, index) {
- if (item.isUse == '1') return
- if(item.isChoose){
- this.getDetail(item.id)
+ if(item.bookingTimeId){
+ this.getDetail(item.bookingTimeId)
return
}
+ if (item.isUse == '1') return
const { timeList } = this
const selTimeList = timeList.filter(i => i.checked == '1')
if (selTimeList.length === 0) {
@@ -229,7 +231,10 @@
getDetail(id) {
meetingDetail({
id
- })
+ }).then(res => {
+ this.activeInfo = res.data
+ this.isShowDetail = true
+ })
},
}
}
diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue
index 7180c9a..18d5a41 100644
--- a/h5/pages/staff/meetingSubOrder.vue
+++ b/h5/pages/staff/meetingSubOrder.vue
@@ -5,7 +5,9 @@
<view class="name">浼氳鏃堕棿</view>
<view class="line">
<view class="label">
- {{ param.activeDate }} {{ param.startTime }}-{{ param.endTime }}
+ {{ param.activeDate || param.meetingDate }}
+ <text class="ml12" v-if="!param.id">{{ param.startTime }}-{{ param.endTime }}</text>
+ <text class="ml12" v-if="param.id">{{ param.meetingTime }}</text>
</view>
<u-icon name="arrow-right" color="#999999" size="14" />
</view>
@@ -60,8 +62,8 @@
<view class="line" @click="selPeople">
<view class="label">
<text v-if="param.sysList && param.sysList.length > 0">
- {{ param.sysList.map(i=>i.realname).join(',') }}
- </text>
+ {{ param.sysList.map((i) => i.realname).join(",") }}
+ </text>
<text
v-else
class="placeholder9"
@@ -83,10 +85,10 @@
<view class="label">
<view
class="service_item"
- :class="{active: item.checked}"
+ :class="{ active: item.checked }"
v-for="(item, index) in info.projectList"
:key="index"
- @click="serviceClick(item)"
+ @click="serviceClick(item)"
>
{{ item.projectName }}
</view>
@@ -108,7 +110,8 @@
</view>
</view>
- <view class="sub_btn" @click="onSubmit"> 纭棰勭害 </view>
+ <view v-if="param.id" class="sub_btn" @click="onUpdate">纭淇敼</view>
+ <view v-else class="sub_btn" @click="onSubmit"> 纭棰勭害 </view>
</view>
</view>
</template>
@@ -116,7 +119,10 @@
<script>
import {
reservationMeeting,
- getRoomDetail
+ getRoomDetail,
+ meetingDetail,
+ updateById,
+ getAppRoomDetail
} from '@/api'
import dayjs from 'dayjs'
export default {
@@ -124,68 +130,141 @@
return {
param: {},
userInfo: uni.getStorageSync('userInfo'),
- info: {},
+ info: {},
}
},
onLoad(option) {
- this.param = { ...option }
- this.$set(this.param, 'activeDate', dayjs(option.yudingDate).format('YYYY骞碝鏈圖鏃�'))
- this.initOption()
+ if (option.id) {
+ uni.setNavigationBarTitle({
+ title: '浼氳璇︽儏'
+ })
+ this.getDetail(option.id)
+ } else {
+ this.param = { ...option }
+ const bookingTimeList = option.bookingTimeList.split(',').map(i => {
+ return {
+ timeId: Number(i)
+ }
+ })
+ this.$set(this.param, 'bookingTimeList', bookingTimeList)
+ this.$set(this.param, 'activeDate', dayjs(option.yudingDate).format('YYYY骞碝鏈圖鏃�'))
+ this.initOption()
+ }
},
- mounted() {
+ mounted() {
this.$eventBus.$on('meetingPeo', (res) => {
- this.$set(this.param, 'sysList', res)
+ this.$set(this.param, 'sysList', res.map(i => {
+ i.userId = i.id
+ return i
+ }))
// this.$set(this.param, 'memberIds', res.map(i => i.id).join(','))
// this.$set(this.param, 'memberNames', res.map(i => i.name).join(','))
})
},
methods: {
- onSubmit() {
- const { param, info } = this
- if (!param.name) return uni.showToast({
+ getDetail(id) {
+ meetingDetail({ id }).then(res => {
+ this.param = { ...res.data,name: res.data.meetingName, content: res.data.meetingContent, sysList: res.data.userResponseList }
+ // this.param = { ...res.data }
+ if(this.param.sysList && this.param.sysList.length > 0){
+ this.param.sysList.forEach(i => {
+ i.userId = i.id
+ })
+ }
+ getRoomDetail({ roomId: res.data.roomId }).then(ress => {
+ this.info = ress.data
+ if (this.info && this.info.projectList) {
+ this.info.projectList.forEach(i => {
+ i.checked = false
+ if(res.data.projectsResponseList && res.data.projectsResponseList.length > 0){
+ res.data.projectsResponseList.forEach(item2 => {
+ if(i.projectId === item2.id){
+ i.checked = true
+ }
+ })
+ }
+ })
+ }
+ })
+ })
+ },
+ onUpdate() {
+ const { param, info } = this
+ if (!param.name) return uni.showToast({
title: '璇疯緭鍏ヤ細璁富棰�',
icon: 'none'
})
- reservationMeeting({
- ...param,
- startTime: `${param.yudingDate} ${param.startTime}:00`,
- endTime: `${param.yudingDate} ${param.endTime}:00`,
- projectList: info.projectList.filter(i => i.checked),
- }).then(res => {
- if(res.code === 200){
-
- }
- })
- },
+ reservationMeeting({
+ ...param,
+ projectList: info.projectList.filter(i => i.checked),
+ }).then(res => {
+ if (res.code === 200) {
+ setTimeout(() => {
+ uni.showToast({
+ title: '淇敼鎴愬姛',
+ icon: 'success',
+ duration: 2000
+ })
+ })
+ uni.redirectTo({
+ url: '/pages/staff/index'
+ })
+ }
+ })
+ },
+ onSubmit() {
+ const { param, info } = this
+ if (!param.name) return uni.showToast({
+ title: '璇疯緭鍏ヤ細璁富棰�',
+ icon: 'none'
+ })
+ reservationMeeting({
+ ...param,
+ startTime: `${param.yudingDate} ${param.startTime}:00`,
+ endTime: `${param.yudingDate} ${param.endTime}:00`,
+ projectList: info.projectList.filter(i => i.checked),
+ }).then(res => {
+ if (res.code === 200) {
+ setTimeout(() => {
+ uni.showToast({
+ title: '棰勭害鎴愬姛',
+ icon: 'success',
+ duration: 2000
+ })
+ })
+ uni.redirectTo({
+ url: '/pages/staff/index'
+ })
+ }
+ })
+ },
selPeople() {
- const { param } = this
- let startTime = param.yudingDate + ' ' + param.startTime
- let endTime = param.yudingDate + ' ' + param.endTime
+ const { param } = this
+ let startTime = param.yudingDate + ' ' + param.startTime
+ let endTime = param.yudingDate + ' ' + param.endTime
uni.navigateTo({
url: `/pages/staff/meetingSel?startTime=${startTime}&endTime=${endTime}`
})
},
- serviceClick(item) {
- const { info } = this
- info.projectList.forEach(ite => {
- if(ite.projectId === item.projectId){
- ite.checked = !ite.checked
- }
- })
- this.$forceUpdate()
- },
+ serviceClick(item) {
+ const { info } = this
+ info.projectList.forEach(ite => {
+ if (ite.projectId === item.projectId) {
+ ite.checked = !ite.checked
+ }
+ })
+ this.$forceUpdate()
+ },
initOption() {
- const roomId = Number(this.param.roomId)
+ const roomId = Number(this.param.roomId)
getRoomDetail({ roomId }).then(res => {
- res.data.projectList.forEach(item => {
- item.active = false
- })
this.info = res.data
- if(this.info && this.info.projectList){
- this.info.projectList.forEach(i => {
- i.checked = false
- })
- }
+ if (this.info && this.info.projectList) {
+ this.info.projectList.forEach(i => {
+ i.checked = false
+
+ })
+ }
})
}
}
@@ -215,10 +294,10 @@
padding: 0 24rpx;
margin-right: 20rpx;
}
- .active{
- background-color: #4d99a8;
- color: #fff;
- }
+ .active {
+ background-color: #4d99a8;
+ color: #fff;
+ }
}
}
}
diff --git a/h5/pages/staff/memberSel.vue b/h5/pages/staff/memberSel.vue
index ee96a16..2e2dc60 100644
--- a/h5/pages/staff/memberSel.vue
+++ b/h5/pages/staff/memberSel.vue
@@ -116,10 +116,8 @@
console.log( e.detail.value[0]);
const id = Number(e.detail.value[0])
const item = this.memberList.find(i => i.id === id)
- console.log('item', item);
- uni.navigateTo({
- url: `/pages/staff/snapshot?id=${item.id}&name=${item.name}`
- })
+ this.$eventBus.$emit('snapshotSel', item)
+ uni.navigateBack()
},
initData() {
const { param } = this
diff --git a/h5/pages/staff/snapshot.vue b/h5/pages/staff/snapshot.vue
index 9b8a315..a72a86b 100644
--- a/h5/pages/staff/snapshot.vue
+++ b/h5/pages/staff/snapshot.vue
@@ -55,23 +55,32 @@
class="adduser_list_item_ipt1_upload"
v-for="(item, i) in submitFileList"
:key="i"
- ><image :src="item.fileurlFull" mode="widthFix"></image
+ ><image
+ v-if="item.type == 0"
+ :src="item.fileurlFull"
+ mode="widthFix"
+ ></image
+ ><video
+ v-if="item.type == 1"
+ :src="item.fileurlFull"
+ ></video
></view>
</view>
</view>
<view class="empty"></view>
- <view class="upload_line" style="padding: 15px 0 0;">
- <view class="name" style="margin-bottom: 10rpx;">
- <text style="color: #e42d2d;">*</text>
+ <view class="upload_line" style="padding: 15px 0 0">
+ <view class="name" style="margin-bottom: 10rpx">
+ <text style="color: #e42d2d">*</text>
<text>鎯呭喌璇存槑</text>
</view>
- <view class="value"
- ><textarea
+ <view class="value">
+ <textarea
placeholder="璇疯缁嗘弿杩扮幇鍦烘儏鍐碉紝涓嶅皯浜�10涓瓧"
minlength="10"
v-model="param.content"
placeholder-style="color: #999999;"
- /></view>
+ />
+ </view>
</view>
<view class="empty"></view>
<view class="line">
@@ -184,17 +193,19 @@
}
},
onLoad(option) {
- if (option && option.id) {
- this.$set(this.param, 'checkUserId', option.id)
- this.$set(this.param, 'applyCheckUserId', option.id)
- this.$set(this.param, 'checkorName', option.name)
- }
this.initConfig()
const userInfo = uni.getStorageSync('userInfo') || {}
this.$set(this.param, 'memberName', userInfo.realname)
this.$set(this.param, 'memberPhone', userInfo.mobile)
this.$set(this.param, 'memberId', userInfo.id)
this.$set(this.param, 'submitTime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+ },
+ mounted() {
+ this.$eventBus.$on('snapshotSel', (option) => {
+ this.$set(this.param, 'checkUserId', option.id)
+ this.$set(this.param, 'applyCheckUserId', option.id)
+ this.$set(this.param, 'checkorName', option.name)
+ })
},
methods: {
onSubmit() {
@@ -258,7 +269,7 @@
uploadImage() {
this.showUpload = false
uni.chooseImage({
- count: 6,
+ count: 1,
success: (chooseImageRes) => {
console.log('chooseImageRes.tempFilePaths', chooseImageRes.tempFilePaths)
uni.showLoading({ title: '涓婁紶涓�', mask: true })
@@ -296,30 +307,27 @@
uni.chooseVideo({
success: (chooseImageRes) => {
uni.showLoading({ title: '涓婁紶涓�', mask: true })
- for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
- uni.uploadFile({
- url: `${uploadUrl}`,
- filePath: chooseImageRes.tempFilePaths[i],
- name: 'file',
- formData: {
- folderCode: 'HIDDEN_DANGER_FILE'
- },
- success: (uploadFileRes) => {
- let res = JSON.parse(uploadFileRes.data)
- console.log('uploadFileRes', res)
- let obj = { type: '1' }
- obj.fileurl = res.data.halfPath
- obj.fileurlFull = res.data.addr
- that.submitFileList.push(obj)
- console.log(that.submitFileList)
- },
- complete() {
- if (i === chooseImageRes.tempFilePaths.length - 1) {
- uni.hideLoading()
- }
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ filePath: chooseImageRes.tempFilePath,
+ name: 'file',
+ formData: {
+ folderCode: 'HIDDEN_DANGER_FILE'
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ console.log('res', res)
+ let obj = {
+ type: '1'
}
- })
- }
+ obj.fileurl = res.data.halfPath
+ obj.fileurlFull = res.data.addr
+ this.submitFileList.push(obj)
+ },
+ complete() {
+ uni.hideLoading()
+ }
+ })
}
})
},
@@ -366,7 +374,7 @@
}
.upload_line {
padding: 30rpx 0;
- .wrap{
+ .wrap {
display: flex;
flex-wrap: wrap;
}
@@ -387,6 +395,9 @@
width: 100%;
height: 100%;
}
+ video {
+ width: 100%;
+ }
}
}
}
diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue
index b9ed742..8410340 100644
--- a/h5/pages/staff/task/index.vue
+++ b/h5/pages/staff/task/index.vue
@@ -4,62 +4,128 @@
<view class="box_head_search">
<view class="box_head_search_ipt">
<image src="@/static/n/ic_search@2x.png" mode="widthFix"></image>
- <input type="text" placeholder="鎼滅储浠诲姟鍚嶇О" />
+ <input
+ v-model="search.title"
+ @blur="querylist"
+ type="text"
+ placeholder="鎼滅储浠诲姟鍚嶇О"
+ />
</view>
- <view class="box_head_search_sha" @click="show = true">
+ <view class="box_head_search_sha" @click="showFilter = true">
<image src="@/static/n/ic_shaixuan@2x.png" mode="widthFix"></image>
<text>绛涢��</text>
</view>
</view>
<view class="box_head_list">
- <view class="box_head_item active">寰呭鐞� 12</view>
- <view class="box_head_item">宸插鐞�</view>
- <view class="box_head_item">鎴戝彂璧风殑</view>
- <view class="box_head_item">鎶勯�佹垜鐨�</view>
+ <view
+ @click="statusClick(0)"
+ :class="{ active: search.queryType === 0 }"
+ class="box_head_item"
+ >寰呭鐞� {{ headData.noticeWaitNum }}</view
+ >
+ <view
+ @click="statusClick(1)"
+ :class="{ active: search.queryType === 1 }"
+ class="box_head_item"
+ >宸插鐞� {{ headData.noticeDealNum }}</view
+ >
+ <view
+ @click="statusClick(2)"
+ :class="{ active: search.queryType === 2 }"
+ class="box_head_item"
+ >鎴戝彂璧风殑 {{ headData.noticeCreateNum }}</view
+ >
+ <view
+ @click="statusClick(3)"
+ :class="{ active: search.queryType === 3 }"
+ class="box_head_item"
+ >鎶勯�佹垜鐨� {{ headData.noticeCopyNum }}</view
+ >
</view>
</scroll-view>
<view class="box_list">
- <view class="box_list_item" v-for="(item, index) in 3" :key="index">
+ <view class="chaosong" v-if="search.queryType === 3">
+ <view class="left">
+ <image
+ @click="readySearch(0)"
+ v-if="search.noRead && search.noRead == 1"
+ src="@/static/meeting/icon/ic_choose_sel@2x.png"
+ class="checked"
+ />
+ <image
+ @click="readySearch(1)"
+ v-else
+ src="@/static/meeting/icon/ic_choose@2x.png"
+ class="checked"
+ />
+ <text>浠呯湅鏈</text>
+ </view>
+ <view class="right">鍏ㄩ儴鏍囪宸茶</view>
+ </view>
+ <view
+ class="box_list_item"
+ v-for="(item, index) in dataList"
+ :key="index"
+ >
<view class="box_list_item_head">
- <text>涓佹仼鍑殑鍔冲姟鍏ュ巶鐢宠</text>
- <text class="loading">寰呭鏍�</text>
+ <view class="df_ac">
+ <text v-if="item.readed == 0" class="readed"></text>
+ <text class="tt">{{ item.title }}</text>
+ </view>
+ <view class="info loading">{{ item.info }}</view>
</view>
<view class="box_list_item_nr">
- <view class="box_list_item_nr_item">
- <text>琚闂汉锛�</text>
- <text>浜轰簨閮�-鐜嬩簹钃�</text>
+ <view v-if="item.param1.name" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.name }}</text>
</view>
- <view class="box_list_item_nr_item">
- <text>杩涘巶鏃堕棿锛�</text>
- <text>12-12 09:00</text>
+ <view v-if="item.param1.area" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.area }}</text>
</view>
- <view class="box_list_item_nr_item">
- <text>绂诲巶鏃堕棿锛�</text>
- <text>12-12 12:00</text>
+ <view v-if="item.param1.cate" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.cate }}</text>
</view>
- <view class="box_list_item_nr_item">
- <text>鏉ヨ浜嬬敱锛�</text>
- <text>涓氬姟鏉ュ線</text>
+ <view v-if="item.param1.sTime" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.sTime }}</text>
</view>
- <view class="box_list_item_nr_item">
- <text>闅忚杞﹁締锛�</text>
- <text>鐨朅88888</text>
+ <view v-if="item.param1.eTime" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.eTime }}</text>
+ </view>
+ <view v-if="item.param1.usrNum" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.usrNum }}</text>
+ </view>
+ <view v-if="item.param1.reason" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.reason }}</text>
+ </view>
+ <view v-if="item.param1.carNos" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.carNos }}</text>
+ </view>
+ <view v-if="item.param1.mdd" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.mdd }}</text>
</view>
<view class="box_list_item_nr_x"></view>
<view class="box_list_item_nr_text">
- <text class="time">2023-12-12 09:00鎻愪氦</text>
- <text class="btn" @click="handleAppr()">鍘诲鐞�</text>
+ <text class="time">{{ item.createDate }}鎻愪氦</text>
+ <text class="btn" @click="handleAppr(item)">鍘诲鐞�</text>
</view>
</view>
</view>
</view>
<!-- 绛涢�� -->
<u-popup
- :show="show"
+ :show="showFilter"
mode="bottom"
:round="10"
:closeable="true"
- @close="show = false"
+ @close="showFilter = false"
>
<view class="search">
<view class="search_head">浠诲姟绛涢��</view>
@@ -70,15 +136,19 @@
<view
class="search_list_item_val_row"
@click="tiemShow = true"
- :style="{ color: search.startTime ? '#000' : '' }"
- >{{ search.startTime ? search.startTime : "寮�濮嬫棩鏈�" }}</view
+ :style="{ color: modelParam.startDate ? '#000' : '' }"
+ >{{
+ modelParam.startDate ? modelParam.startDate : "寮�濮嬫棩鏈�"
+ }}</view
>
<view class="search_list_item_val_z">-</view>
<view
class="search_list_item_val_row"
@click="tiemShow1 = true"
- :style="{ color: search.endTime ? '#000' : '' }"
- >{{ search.endTime ? search.endTime : "缁撴潫鏃ユ湡" }}</view
+ :style="{ color: modelParam.endDate ? '#000' : '' }"
+ >{{
+ modelParam.endDate ? modelParam.endDate : "缁撴潫鏃ユ湡"
+ }}</view
>
</view>
</view>
@@ -87,11 +157,11 @@
<view class="search_list_item_cates">
<view
:class="
- index === i
+ item.id === modelParam.type
? 'search_list_item_cates_row active'
: 'search_list_item_cates_row'
"
- v-for="(item, index) in cate"
+ v-for="(item, index) in cateList"
:key="index"
@click="clickItem(index)"
>
@@ -101,22 +171,24 @@
</view>
</view>
<view class="search_footer">
- <view class="search_footer_item" @click="show = false">鍙栨秷</view>
- <view class="search_footer_item t">鎻愪氦</view>
+ <view class="search_footer_item" @click="showFilter = false"
+ >鍙栨秷</view
+ >
+ <view class="search_footer_item t" @click="modalSub">鎻愪氦</view>
</view>
</view>
</u-popup>
<u-datetime-picker
:show="tiemShow"
- v-model="time"
- mode="datetime"
+ v-model="modelParam.startDate"
+ mode="date"
@confirm="confirmLeft"
@cancel="tiemShow = false"
></u-datetime-picker>
<u-datetime-picker
:show="tiemShow1"
- v-model="time1"
- mode="datetime"
+ v-model="modelParam.endDate"
+ mode="date"
@confirm="confirmRight"
@cancel="tiemShow1 = false"
></u-datetime-picker>
@@ -124,57 +196,136 @@
</template>
<script>
-import { taskCenter } from '@/api'
+import { stagingHead, stagingTaskPage } from '@/api'
+import dayjs from 'dayjs'
export default {
data() {
return {
- show: false,
+ showFilter: false,
+ search: {
+ queryType: 0
+ },
+ modelParam: {
+ startDate: dayjs().format('YYYY-MM-DD'),
+ endDate: dayjs().format('YYYY-MM-DD'),
+ },
tiemShow: false,
tiemShow1: false,
- time: '',
- i: null,
- time: '',
- time1: '',
- search: {
- startTime: '',
- endTime: ''
+
+ pagination: {
+ capacity: 20,
+ page: 0
},
- pagination: {},
+ headData: {},
dataList: [],
- cate: [
- { name: '璁垮鐢宠', id: 1 },
- { name: '鍔冲姟鐢宠', id: 2 },
- { name: '鐢ㄨ溅鐢宠', id: 3 }
+ cateList: [
+ { name: '璁垮鐢宠', id: 0 },
+ { name: '璁垮鎶ュ', id: 1 },
+ { name: '鐢ㄨ溅鐢宠', id: 2 },
+ { name: '闅愭偅闅忔墜鎷�', id: 3 },
+ { name: '鐗╂祦杞︾敵璇�', id: 4 },
]
}
},
onLoad() {
+ this.getHeadList()
+ this.pagination.page = 0
+ this.getList()
+ },
+ onReachBottom() {
+ // this.pagination.page = 0
+ // this.dataList = []
+ this.getList()
+ },
+ onShow() {
+ this.pagination.page = 0
+ this.dataList = []
+ this.getHeadList()
this.getList()
},
methods: {
+ statusClick(val) {
+ this.pagination.page = 0
+ this.dataList = []
+ this.$set(this.search, 'queryType', val)
+ this.getList()
+ },
+ readySearch(val) {
+ this.pagination.page = 0
+ this.dataList = []
+ this.$set(this.search, 'noRead', val)
+ this.getList()
+ },
+ modalSub() {
+ this.search = { ...this.search, ...this.modelParam }
+ this.pagination.page = 0
+ this.dataList = []
+ this.getList()
+ this.showFilter = false
+ },
+ querylist() {
+ this.pagination.page = 0
+ this.dataList = []
+ this.getList()
+ },
getList() {
- const { pagination } = this
- taskCenter({
- model: {}
+ const { pagination, search } = this
+ pagination.page++
+ stagingTaskPage({
+ ...pagination,
+ model: {
+ ...search
+ }
}).then(res => {
- this.dataList = res.data.records
+ this.dataList = [...this.dataList, ...res.data.records]
+ this.dataList.forEach(i => {
+ i.param1 = JSON.parse(i.param1)
+ })
+ console.log('dataList', this.dataList)
+ })
+ },
+ getHeadList() {
+ stagingHead({
+ isDetail: '1'
+ }).then(res => {
+ this.headData = res.data
})
},
handleAppr(item) {
- uni.navigateTo({
- url: '/pages/staff/task/visitorApprove'
- })
+ const { objType, objId } = item
+ if (objType === 2) {
+ uni.navigateTo({
+ url: `/pages/staff/vehicle/sendACarDetail?id=${objId}&appr=1`
+ })
+ } else if (objType === 1) {
+ uni.navigateTo({
+ url: `/pages/staff/task/visitorReport?id=${objId}&objType=${objType}`
+ })
+ } else if (objType === 3) {
+ uni.navigateTo({
+ url: `/pages/staff/task/vDangetAppr?id=${objId}&objType=${objType}`
+ })
+ } else {
+ uni.navigateTo({
+ url: `/pages/staff/task/visitorApprove?id=${objId}&objType=${objType}`
+ })
+ }
},
clickItem(index) {
- this.i = index
+ this.$set(this.modelParam, 'type', this.cateList[index].id)
},
confirmLeft(e) {
- console.log(uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss'))
- this.search.startTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
+ console.log(uni.$u.timeFormat(e.value, 'yyyy-mm-dd'))
+ setTimeout(() => {
+ this.modelParam.startDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
+ })
this.tiemShow = false
},
confirmRight(e) {
- this.search.endTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
+ // this.modelParam.endDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
+ setTimeout(() => {
+ this.modelParam.endDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
+ })
this.tiemShow1 = false
}
}
@@ -275,6 +426,23 @@
width: 100%;
padding: 30rpx;
box-sizing: border-box;
+ .chaosong {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: #666666;
+ font-size: 24rpx;
+ margin-bottom: 20rpx;
+ .left {
+ display: flex;
+ align-items: center;
+ .checked {
+ width: 32rpx;
+ height: 32rpx;
+ margin-right: 10rpx;
+ }
+ }
+ }
.box_list_item {
width: 100%;
margin-bottom: 20rpx;
@@ -291,6 +459,12 @@
display: flex;
align-items: center;
justify-content: space-between;
+ .readed {
+ width: 12rpx;
+ height: 12rpx;
+ border-radius: 50%;
+ background-color: #e0312a;
+ }
.loading {
color: #4c99a8;
}
@@ -300,16 +474,14 @@
.error {
color: #e0312a;
}
- text {
- &:nth-child(1) {
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 26rpx;
- font-weight: 400;
- }
+ .tt {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .info {
+ font-size: 26rpx;
+ font-weight: 400;
}
}
.box_list_item_nr {
@@ -410,6 +582,7 @@
font-size: 26rpx;
font-weight: 400;
color: #333333;
+ margin-bottom: 20rpx;
&:last-child {
margin: 0;
}
diff --git a/h5/pages/staff/task/vDangetAppr.vue b/h5/pages/staff/task/vDangetAppr.vue
new file mode 100644
index 0000000..686d964
--- /dev/null
+++ b/h5/pages/staff/task/vDangetAppr.vue
@@ -0,0 +1,1201 @@
+<template>
+ <view class="main_app">
+ <view class="status_wrap">
+ <view class="name">{{ info.name }}鎻愪氦鐨剓{ cateList[type].name }}</view>
+ <view v-if="info.status == '0'" class="status">{{
+ statusMap[info.status]
+ }}</view>
+ <image
+ v-if="info.status == '2'"
+ src="@/static/ic_passed@2x.png"
+ mode="widthFix"
+ class="status_img"
+ ></image>
+ <image
+ v-if="info.status == '3' || info.status == '6'"
+ src="@/static/ic_refused@2x.png"
+ mode="widthFix"
+ class="status_img"
+ ></image>
+ <view>{{ info.content }}</view>
+ <view class="file_list">
+ <template v-for="item in info.submitFileList">
+ <image
+ v-if="item.type == 0"
+ :key="item.id"
+ :src="item.fileurlFull"
+ mode="widthFix"
+ class="img"
+ />
+ <video
+ v-if="item.type == 1"
+ :key="item.id"
+ :src="item.fileurlFull"
+ class="img"
+ controls
+ />
+ </template>
+ </view>
+ <view class="text_wrap">
+ <view class="line">
+ <text class="label">闅愭偅鍖哄煙锛�</text>
+ <text>{{ info.areaName }}</text>
+ </view>
+ <view class="line">
+ <text class="label">鎻愭姤浜猴細</text>
+ <text>{{ info.memberName }} {{ info.memberPhone }}</text>
+ </view>
+ </view>
+ </view>
+ <!-- -->
+ <view class="emyty"></view>
+ <view v-if="info.status == 1" class="module_list">
+ <view class="item">
+ <view class="label">澶勭悊缁撴灉</view>
+ <!-- <view class="value">{{ info. }}</view> -->
+ </view>
+ <view class="item">
+ <view class="label">鏁存敼鍓�</view>
+ <view class="value">
+ <view
+ class="adduser_list_item_ipt1_upload"
+ v-for="(item, i) in dealBeforeFileList"
+ :key="i"
+ ><image
+ v-if="item.type == 0"
+ :src="item.fileurlFull"
+ mode="widthFix"
+ ></image
+ ><video v-if="item.type == 1" :src="item.fileurlFull"></video
+ ></view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鏁存敼鍚�</view>
+ <view class="value">
+ <view
+ class="adduser_list_item_ipt1_upload"
+ v-for="(item, i) in dealAfterFileList"
+ :key="i"
+ ><image
+ v-if="item.type == 0"
+ :src="item.fileurlFull"
+ mode="widthFix"
+ ></image
+ ><video v-if="item.type == 1" :src="item.fileurlFull"></video
+ ></view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鏁存敼璇存槑</view>
+ <view class="value">{{ info.checkInfo }}</view>
+ </view>
+ </view>
+ <!-- 娴佺▼ -->
+ <view class="flow_wrap">
+ <view class="flow_title">澶勭悊娴佺▼</view>
+ <view
+ class="list"
+ v-if="
+ info.approveDateVO != null && info.approveDateVO.approveList != null
+ "
+ >
+ <view
+ class="item"
+ v-for="(item, index) in info.approveDateVO.approveList"
+ :key="item.id"
+ >
+ <view class="separate"></view>
+ <view class="avatar">
+ <image
+ class="img"
+ :src="
+ item.faceImg
+ ? item.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <image
+ class="status"
+ src="@/static/staff/liucheng_success@2x.png"
+ mode="widthFix"
+ />
+ </view>
+ <view class="content">
+ <view class="head">
+ <view class="event">{{ item.title }}</view>
+ <view class="time">{{ item.checkDate }}</view>
+ </view>
+ <view class="name_wrap">
+ <text
+ >{{ item.memberName
+ }}<text class="status" v-if="item.statusInfo"
+ >({{ item.statusInfo }})</text
+ ></text
+ >
+ </view>
+ <view v-if="item.checkInfo" class="remark">{{
+ item.checkInfo
+ }}</view>
+ <!-- 鎶勯�佷汉 -->
+ <view v-if="item.approveType == 1" class="children">
+ <view
+ class="child"
+ v-for="child in item.approveList"
+ :key="child.id"
+ >
+ <image
+ class="child_img"
+ :src="
+ child.faceImg
+ ? child.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <view>{{ child.memberName }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="emyty"></view>
+ <view class="main_footer">
+ <view class="btn" @click="isShowBack = true">閫�鍥�</view>
+ <view class="btn transfer" @click="handleTransfer">杞氦</view>
+ <view class="btn handle" @click="isShowHandle = true">澶勭悊</view>
+ </view>
+
+ <u-popup
+ :show="isShowBack"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ mode="bottom"
+ @close="isShowBack = false"
+ >
+ <view class="appr_modal">
+ <view class="title">闅愭偅閫�鍥�</view>
+ <view class="df_sb">
+ <view>閫�鍥炴椂闂�</view>
+ <view @click="isShowBackDate = true" v-if="backParam.dealTime">{{
+ backParam.dealTime.slice(0, 16)
+ }}</view>
+ <view @click="isShowBackDate = true" v-else class="placeholder9"
+ >璇烽�夋嫨</view
+ >
+ </view>
+
+ <view class="label">鍥剧墖/瑙嗛</view>
+ <view class="upload_wrap">
+ <view class="adduser_list_item_ipt1_upload" @click="showUpload = true"
+ ><u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon
+ ></view>
+ <view
+ class="adduser_list_item_ipt1_upload"
+ v-for="(item, i) in submitFileList"
+ :key="i"
+ ><image
+ v-if="item.type == 0"
+ :src="item.fileurlFull"
+ mode="widthFix"
+ ></image
+ ><video v-if="item.type == 1" :src="item.fileurlFull"></video
+ ></view>
+ </view>
+ <view class="label">閫�鍥炶鏄�</view>
+ <textarea
+ v-model="backParam.checkInfo"
+ placeholder="璇疯缁嗘弿杩扮幇鍦烘儏鍐碉紝涓嶅皯浜�10涓瓧"
+ placeholder-class="placeholder9"
+ />
+ <view class="back_footer">
+ <view class="btn" @click="isShowBack = false">鍙栨秷</view>
+ <view class="btn agree" @click="onSubBack">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ <!-- 澶勭悊 -->
+ <u-popup
+ :show="isShowHandle"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ mode="bottom"
+ @close="isShowBack = false"
+ >
+ <view class="appr_modal">
+ <view class="title">闅愭偅鏁存敼</view>
+ <view class="df_sb">
+ <view>鏁存敼鏃堕棿</view>
+ <view @click="isShowHandleDate = true" v-if="handleParam.dealTime">{{
+ handleParam.dealTime.slice(0, 16)
+ }}</view>
+ <view @click="isShowHandleDate = true" v-else class="placeholder9"
+ >璇烽�夋嫨</view
+ >
+ </view>
+
+ <view class="label"><text>*</text>鏁存敼鍓�</view>
+ <view class="upload_wrap">
+ <view
+ class="adduser_list_item_ipt1_upload"
+ @click="showUploadBe = true"
+ ><u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon
+ ></view>
+ <view
+ class="adduser_list_item_ipt1_upload"
+ v-for="(item, i) in dealBeforeFileList"
+ :key="i"
+ ><image
+ v-if="item.type == 0"
+ :src="item.fileurlFull"
+ mode="widthFix"
+ ></image
+ ><video v-if="item.type == 1" :src="item.fileurlFull"></video
+ ></view>
+ </view>
+ <view class="label"><text>*</text>鏁存敼鍚�</view>
+ <view class="upload_wrap">
+ <view
+ class="adduser_list_item_ipt1_upload"
+ @click="showUploadAf = true"
+ ><u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon
+ ></view>
+ <view
+ class="adduser_list_item_ipt1_upload"
+ v-for="(item, i) in dealAfterFileList"
+ :key="i"
+ ><image
+ v-if="item.type == 0"
+ :src="item.fileurlFull"
+ mode="widthFix"
+ ></image
+ ><video v-if="item.type == 1" :src="item.fileurlFull"></video
+ ></view>
+ </view>
+ <view class="label">鏁存敼璇存槑</view>
+ <textarea
+ v-model="handleParam.checkInfo"
+ placeholder="璇疯缁嗘弿杩扮幇鍦烘儏鍐碉紝涓嶅皯浜�10涓瓧"
+ placeholder-class="placeholder9"
+ />
+ <view class="back_footer">
+ <view class="btn" @click="isShowHandle = false">鍙栨秷</view>
+ <view class="btn agree" @click="onSubmit">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ <!-- 涓婁紶 -->
+ <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+ <view class="sel_upload_wrap">
+ <view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
+ <view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
+ </view>
+ </u-popup>
+ <u-popup
+ :show="showUploadBe"
+ @close="showUploadBe = false"
+ closeOnClickOverlay
+ >
+ <view class="sel_upload_wrap">
+ <view class="btn" @click="uploadBeImage">閫夋嫨鍥剧墖</view>
+ <view class="btn" @click="uploadBeVideo">閫夋嫨瑙嗛</view>
+ </view>
+ </u-popup>
+ <u-popup
+ :show="showUploadAf"
+ @close="showUploadAf = false"
+ closeOnClickOverlay
+ >
+ <view class="sel_upload_wrap">
+ <view class="btn" @click="uploadAfImage">閫夋嫨鍥剧墖</view>
+ <view class="btn" @click="uploadAfVideo">閫夋嫨瑙嗛</view>
+ </view>
+ </u-popup>
+ <!-- 杞氦 -->
+ <u-popup
+ :show="isShowTransfer"
+ :round="10"
+ safeAreaInsetBottom
+ mode="bottom"
+ @close="isShowTransfer = false"
+ >
+ <view class="appr_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="鎼滅储閮ㄩ棬/浜哄憳"
+ placeholder-style="color: #999999;"
+ />
+ </view>
+ <view class="member_list">
+ <view v-for="item in memberList" :key="item.id" class="line">
+ <image
+ :src="
+ item.faceImgFull
+ ? item.faceImgFull
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ class="avatar"
+ mode=""
+ ></image>
+ <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
+ @click="changeMem(item)"
+ v-if="transferParam.id == item.id"
+ src="@/static/meeting/icon/ic_choose_sel@2x.png"
+ mode="widthFix"
+ class="checked"
+ ></image>
+ <image
+ @click="changeMem(item)"
+ v-else
+ src="@/static/meeting/icon/ic_choose@2x.png"
+ mode="widthFix"
+ class="checked"
+ ></image>
+ <text></text>
+ </view>
+ <view class="empty"></view>
+ </view>
+ <view class="Transfer_footer">
+ <view class="btn" @click="isShowTransfer = fale">鍙栨秷</view>
+ <view class="btn active" @click="enterTransfer">纭杞氦</view>
+ </view>
+ </view>
+ </u-popup>
+ <!-- 閫�鍥炴椂闂� -->
+ <u-datetime-picker
+ :show="isShowBackDate"
+ @confirm="confirmBackDate"
+ @cancel="isShowBackDate = false"
+ mode="datetime"
+ ></u-datetime-picker>
+
+ <u-datetime-picker
+ :show="isShowHandleDate"
+ @confirm="confirmHandleDate"
+ @cancel="isShowHandleDate = false"
+ mode="datetime"
+ ></u-datetime-picker>
+ </view>
+</template>
+
+<script>
+import {
+ hiddenDangerDetail,
+ uploadUrl,
+ findHiddenAreaMemberList,
+ dealHiddenDanger,
+ transferHiddenDanger
+} from '@/api'
+import dayjs from 'dayjs'
+export default {
+ data() {
+ return {
+ isShowBack: false,
+ param: {},
+ info: {},
+
+ id: '',
+ type: '',
+ cateList: [
+ { name: '璁垮鐢宠', id: 0 },
+ { name: '璁垮鎶ュ', id: 1 },
+ { name: '鐢ㄨ溅鐢宠', id: 2 },
+ { name: '闅愭偅闅忔墜鎷�', id: 3 },
+ { name: '鐗╂祦杞︾敵璇�', id: 4 },
+ ],
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒鏈�氳繃',
+ 4: '宸插彇娑�',
+ 5: '浠栦汉鎴栫',
+ 6: '浠栦汉鎷掔粷',
+ },
+
+
+ showUpload: false,
+ isShowBackDate: false,
+ submitFileList: [],
+ backParam: {},
+
+ isShowHandle: false,
+ handleParam: {},
+ isShowHandleDate: false,
+ showUploadBe: false,
+ showUploadAf: false,
+ dealBeforeFileList: [],
+ dealAfterFileList: [],
+
+ isShowTransfer: false,
+ transferParam: {},
+ transferModel: {},
+ pagination: {
+ page: 1,
+ capacity: 50
+ },
+ memberList: []
+ }
+ },
+ onLoad(op) {
+ this.id = op.id
+ this.type = op.objType
+ this.getDetail()
+ },
+ methods: {
+ getDetail() {
+ const { id } = this
+ hiddenDangerDetail(id).then(res => {
+ this.info = res.data
+ })
+ },
+ onSubmit() {
+ const { dealBeforeFileList, dealAfterFileList, handleParam } = this
+ dealHiddenDanger({
+ ...handleParam,
+ dealBeforeFileList: dealBeforeFileList,
+ dealAfterFileList: dealAfterFileList,
+ status: 1,
+ id: this.id
+ }).then(res => {
+ if (res.code === 200) {
+ this.isShowHandle = false
+ setTimeout(() => {
+ uni.showToast({
+ title: '鎿嶄綔鎴愬姛',
+ icon: 'success'
+ })
+ })
+ uni.navigateBack()
+ }
+ })
+ },
+ enterTransfer() {
+ const { transferParam, id } = this
+ transferHiddenDanger({
+ checkUserId: transferParam.id,
+ id
+ }).then(res => {
+ if (res.code === 200) {
+ this.isShowTransfer = false
+ setTimeout(() => {
+ uni.showToast({
+ title: '鎿嶄綔鎴愬姛',
+ icon: 'success'
+ })
+ })
+ uni.navigateBack()
+ }
+ })
+ },
+ changeMem(e) {
+ this.transferParam = e
+ },
+ handleTransfer() {
+ this.isShowTransfer = true
+ this.getMemList()
+ },
+ getMemList() {
+ findHiddenAreaMemberList({
+ model: { ...this.transferModel },
+ ...this.pagination,
+ }).then(res => {
+ this.memberList = res.data || []
+ })
+ },
+ confirmBackDate(e) {
+ this.$set(this.backParam, 'dealTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'))
+ this.isShowBackDate = false
+ },
+ confirmHandleDate(e) {
+ this.$set(this.handleParam, 'dealTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'))
+ this.isShowHandleDate = false
+ },
+ onSubBack() {
+ const { submitFileList, backParam } = this
+ dealHiddenDanger({
+ ...backParam,
+ dealBeforeFileList: submitFileList,
+ status: 2,
+ id: this.id
+ }).then(res => {
+ if (res.code === 200) {
+ this.isShowBack = false
+ setTimeout(() => {
+ uni.showToast({
+ title: '鎿嶄綔鎴愬姛',
+ icon: 'success'
+ })
+ })
+ uni.navigateBack()
+ }
+ })
+ },
+ uploadBeImage() {
+ this.showUploadBe = false
+ uni.chooseImage({
+ count: 1,
+ success: (chooseImageRes) => {
+ console.log('chooseImageRes.tempFilePaths', chooseImageRes.tempFilePaths)
+ uni.showLoading({ title: '涓婁紶涓�', mask: true })
+ for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ filePath: chooseImageRes.tempFilePaths[i],
+ name: 'file',
+ formData: {
+ folderCode: 'HIDDEN_DANGER_FILE'
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ console.log('res', res)
+ let obj = {
+ type: '0'
+ }
+ obj.fileurl = res.data.halfPath
+ obj.fileurlFull = res.data.addr
+ this.dealBeforeFileList.push(obj)
+ },
+ complete() {
+ if (i === chooseImageRes.tempFilePaths.length - 1) {
+ uni.hideLoading()
+ }
+ }
+ })
+ }
+ }
+ })
+ },
+ uploadBeVideo() {
+ this.showUploadBe = false
+ let that = this
+ uni.chooseVideo({
+ success: (chooseImageRes) => {
+ uni.showLoading({ title: '涓婁紶涓�', mask: true })
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ filePath: chooseImageRes.tempFilePath,
+ name: 'file',
+ formData: {
+ folderCode: 'HIDDEN_DANGER_FILE'
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ console.log('res', res)
+ let obj = {
+ type: '1'
+ }
+ obj.fileurl = res.data.halfPath
+ obj.fileurlFull = res.data.addr
+ this.dealBeforeFileList.push(obj)
+ },
+ complete() {
+ uni.hideLoading()
+ }
+ })
+ }
+ })
+ },
+ uploadAfImage() {
+ this.showUploadAf = false
+ uni.chooseImage({
+ count: 1,
+ success: (chooseImageRes) => {
+ console.log('chooseImageRes.tempFilePaths', chooseImageRes.tempFilePaths)
+ uni.showLoading({ title: '涓婁紶涓�', mask: true })
+ for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ filePath: chooseImageRes.tempFilePaths[i],
+ name: 'file',
+ formData: {
+ folderCode: 'HIDDEN_DANGER_FILE'
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ console.log('res', res)
+ let obj = {
+ type: '0'
+ }
+ obj.fileurl = res.data.halfPath
+ obj.fileurlFull = res.data.addr
+ this.dealAfterFileList.push(obj)
+ },
+ complete() {
+ if (i === chooseImageRes.tempFilePaths.length - 1) {
+ uni.hideLoading()
+ }
+ }
+ })
+ }
+ }
+ })
+ },
+ uploadAfVideo() {
+ this.showUploadAf = false
+ let that = this
+ uni.chooseVideo({
+ success: (chooseImageRes) => {
+ uni.showLoading({ title: '涓婁紶涓�', mask: true })
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ filePath: chooseImageRes.tempFilePath,
+ name: 'file',
+ formData: {
+ folderCode: 'HIDDEN_DANGER_FILE'
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ console.log('res', res)
+ let obj = {
+ type: '1'
+ }
+ obj.fileurl = res.data.halfPath
+ obj.fileurlFull = res.data.addr
+ this.dealAfterFileList.push(obj)
+ },
+ complete() {
+ uni.hideLoading()
+ }
+ })
+ }
+ })
+ },
+ uploadImage() {
+ this.showUpload = false
+ uni.chooseImage({
+ count: 1,
+ success: (chooseImageRes) => {
+ console.log('chooseImageRes.tempFilePaths', chooseImageRes.tempFilePaths)
+ uni.showLoading({ title: '涓婁紶涓�', mask: true })
+ for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ filePath: chooseImageRes.tempFilePaths[i],
+ name: 'file',
+ formData: {
+ folderCode: 'HIDDEN_DANGER_FILE'
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ console.log('res', res)
+ let obj = {
+ type: '0'
+ }
+ obj.fileurl = res.data.halfPath
+ obj.fileurlFull = res.data.addr
+ this.submitFileList.push(obj)
+ },
+ complete() {
+ if (i === chooseImageRes.tempFilePaths.length - 1) {
+ uni.hideLoading()
+ }
+ }
+ })
+ }
+ }
+ })
+ },
+ uploadVideo() {
+ this.showUpload = false
+ let that = this
+ uni.chooseVideo({
+ success: (chooseImageRes) => {
+ uni.showLoading({ title: '涓婁紶涓�', mask: true })
+ uni.uploadFile({
+ url: `${uploadUrl}`,
+ filePath: chooseImageRes.tempFilePath,
+ name: 'file',
+ formData: {
+ folderCode: 'HIDDEN_DANGER_FILE'
+ },
+ success: (uploadFileRes) => {
+ let res = JSON.parse(uploadFileRes.data)
+ console.log('res', res)
+ let obj = {
+ type: '1'
+ }
+ obj.fileurl = res.data.halfPath
+ obj.fileurlFull = res.data.addr
+ this.submitFileList.push(obj)
+ },
+ complete() {
+ uni.hideLoading()
+ }
+ })
+ }
+ })
+ },
+ },
+}
+</script>
+<style>
+page {
+ background-color: #f7f7f7;
+}
+</style>
+<style lang="scss">
+.main_app {
+ background-color: #fff;
+ padding-bottom: 0;
+
+ .flow_wrap {
+ padding: 30rpx 0;
+
+ .flow_title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
+
+ .list {
+ .item {
+ display: flex;
+ margin-bottom: 48rpx;
+ position: relative;
+ .separate {
+ position: absolute;
+ width: 4rpx;
+ height: 100%;
+ background-color: #eeeeee;
+ left: 40rpx;
+ transform: translate(-50%, 0);
+ top: 80rpx;
+ }
+ .avatar {
+ width: 80rpx;
+ height: 80rpx;
+ position: relative;
+ margin-right: 20rpx;
+
+ .img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ }
+
+ .status {
+ width: 28rpx;
+ height: 28rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ }
+ }
+
+ .content {
+ flex: 1;
+
+ .head {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 4rpx;
+
+ .event {
+ font-size: 30rpx;
+ }
+
+ .time {
+ font-size: 26rpx;
+ color: #999999;
+ }
+ }
+
+ .name_wrap {
+ font-size: 26rpx;
+ color: #777777;
+
+ .status {
+ color: $uni-color-primary;
+ }
+ }
+ .children {
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: 12rpx;
+ .child {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ margin-right: 12rpx;
+ .child_img {
+ width: 48rpx;
+ height: 48rpx;
+ border-radius: 50%;
+ }
+ }
+ }
+
+ .remark {
+ margin-top: 12rpx;
+ background-color: #f7f7f7;
+ padding: 14rpx 20rpx;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ color: #666666;
+ line-height: 36rpx;
+ }
+ }
+ .carbon {
+ display: flex;
+ width: 590rpx;
+ overflow-x: auto;
+ margin-top: 12rpx;
+ .carbon_item {
+ text-align: center;
+ flex-shrink: 0;
+ width: 100rpx;
+ image {
+ width: 60rpx;
+ height: 60rpx;
+ margin: 0 auto;
+ }
+ view {
+ font-size: 26rpx;
+ color: #777777;
+ }
+ }
+ }
+ &:nth-last-child(1) {
+ .separate {
+ height: 0;
+ }
+ }
+ }
+ }
+ }
+
+ .module_list {
+ .item {
+ padding: 30rpx 0;
+ border-bottom: 1rpx solid #e5e5e5;
+
+ .label {
+ font-size: 26rpx;
+ color: #666666;
+ margin-bottom: 20rpx;
+ }
+
+ .value {
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
+
+ .avatar {
+ margin-right: 20rpx;
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 8rpx;
+ border: 2rpx solid #e5e5e5;
+ }
+
+ .info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ font-size: 26rpx;
+ color: #666666;
+
+ .name {
+ font-size: 30rpx;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
+
+ .status_wrap {
+ position: relative;
+ padding: 30rpx 0;
+
+ .name {
+ font-weight: 500;
+ font-size: 32rpx;
+ margin-bottom: 20rpx;
+ color: #222222;
+ }
+
+ .desc {
+ font-size: 26rpx;
+ color: #ed4545;
+ }
+ .gray {
+ color: #999999;
+ }
+ .file_list {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 20rpx;
+ .img {
+ width: 140rpx;
+ margin-right: 12rpx;
+ margin-bottom: 12rpx;
+ border-radius: 8rpx;
+ }
+ }
+ .text_wrap {
+ padding: 20rpx;
+ background-color: #f8f7f7;
+ border-radius: 8rpx;
+ margin-top: 20rpx;
+ .line {
+ margin-bottom: 12rpx;
+ display: flex;
+ font-size: 24rpx;
+ .label {
+ color: #999999;
+ width: 140rpx;
+ }
+ }
+ }
+
+ .status {
+ position: absolute;
+ right: -30rpx;
+ top: 0;
+ height: 60rpx;
+ line-height: 60rpx;
+ padding: 0 32rpx;
+ border-radius: 0rpx 0rpx 0rpx 30rpx;
+ background-color: #e9edff;
+ color: $uni-color-primary;
+ }
+ .status_img {
+ position: absolute;
+ right: 0rpx;
+ top: 20rpx;
+ width: 120rpx;
+ }
+ }
+
+ .main_footer {
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ left: 0;
+ padding: 30rpx 10rpx 60rpx;
+ display: flex;
+ justify-content: space-between;
+ background: #ffffff;
+ .btn {
+ flex: 1;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 8rpx;
+ }
+ .transfer {
+ color: $uni-color-primary;
+ border: 1rpx solid $uni-color-primary;
+ }
+
+ .handle {
+ flex: 2;
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
+
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
+ .title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 40rpx;
+ text-align: center;
+ }
+ .label {
+ text {
+ color: #ed4545;
+ }
+ }
+ .df_sb {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 90rpx;
+ border-bottom: 1rpx solid #e4e4e4;
+ margin-bottom: 30rpx;
+ }
+ .back_footer {
+ display: flex;
+ .btn {
+ flex: 1;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 8rpx;
+ }
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ min-height: 200rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ }
+ .upload_wrap {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 30rpx;
+ }
+ .adduser_list_item_ipt1_upload {
+ margin-top: 24rpx;
+ width: 120rpx;
+ height: 120rpx;
+ margin-right: 24rpx;
+ border: 2rpx solid #e5e5e5;
+ background: #f7f7f7;
+ color: #666666;
+ font-size: 22rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ video {
+ width: 100%;
+ }
+ }
+ }
+
+ .emyty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+ }
+}
+.sel_upload_wrap {
+ width: 100%;
+ border-top: 1px solid #333333;
+ box-shadow: 0 1 1 #333333;
+ .btn {
+ height: 90rpx;
+ line-height: 90rpx;
+ text-align: center;
+ }
+}
+.member_list {
+ height: 920rpx;
+ 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;
+ }
+ .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;
+ }
+}
+.Transfer_footer {
+ display: flex;
+ .btn {
+ flex: 1;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 8rpx;
+ }
+ .active {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+}
+</style>
diff --git a/h5/pages/staff/task/visitorApprove.vue b/h5/pages/staff/task/visitorApprove.vue
index c60e169..8f0b95e 100644
--- a/h5/pages/staff/task/visitorApprove.vue
+++ b/h5/pages/staff/task/visitorApprove.vue
@@ -1,372 +1,524 @@
<template>
- <view class="main_app">
- <view class="status_wrap">
- <view class="name">涓佹仼鍑殑璁垮鐢宠</view>
- <view class="desc">绛夊緟鎴戝鐞�</view>
- <view class="status">瀹℃壒涓�</view>
- </view>
- <!-- -->
- <view class="emyty"></view>
- <view class="module_list">
- <view class="item">
- <view class="label">鎷滆浜�</view>
- <view class="value">寤栨垚鐟�</view>
- </view>
- <view class="item">
- <view class="label">棰勮鍏�/绂诲巶鏃堕棿</view>
- <view class="value">05/01 8:00 - 05/01 18:00</view>
- </view>
- <view class="emyty"></view>
- <view class="item">
- <view class="label">璁垮淇℃伅</view>
- <view class="value">
- <image class="avatar" src="@/static/logo@2x.png" mode="widthFix"></image>
- <view class="info">
- <text class="name">瀛欏織 18177665678</text>
- <text>韬唤璇佸彿锛�3309****2910</text>
- <text>鍏ュ洯杞﹁締锛氱殩A88789</text>
- </view>
- </view>
- </view>
- <view class="item">
- <view class="label">鍏徃鍚嶇О</view>
- <view class="value">涓浗绉诲姩</view>
- </view>
- <view class="item">
- <view class="label">鏂藉伐浜哄憳</view>
- <view class="value">鍚�</view>
- </view>
- <view class="item">
- <view class="label">鏉ヨ浜嬬敱</view>
- <view class="value">涓氬姟娲借皥</view>
- </view>
- </view>
- <!-- 娴佺▼ -->
- <view class="flow_wrap">
- <view class="flow_title">娴佺▼</view>
- <view class="list">
- <view class="item">
- <view class="avatar">
- <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
- <image class="status" src="@/static/staff/liucheng_success@2x.png" mode="widthFix" />
- <view class="separate"></view>
- </view>
- <view class="content">
- <view class="head">
- <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
- <view class="time">time</view>
- </view>
- <view class="name_wrap">
- <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
- </view>
- <view class="remark">鍚屾剰鏀捐</view>
- </view>
- </view>
- <view class="item">
- <view class="avatar">
- <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
- <image class="status" src="@/static/staff/liucheng_success@2x.png" mode="widthFix" />
- </view>
- <view class="content">
- <view class="head">
- <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
- <view class="time">time</view>
- </view>
- <view class="name_wrap">
- <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
- </view>
- <view class="carbon">
- <view class="carbon_item" v-for="i in 12">
- <image src="../../../static/logo@2x.png" mode="widthFix"></image>
- <view class="text">name</view>
- </view>
- </view>
- </view>
- </view>
- </view>
- </view>
- <view class="emyty"></view>
- <view class="main_footer">
- <view class="btn" @click="handleSub('0')">鎷掔粷</view>
- <view class="btn agree" @click="handleSub('1')">鍚屾剰</view>
- </view>
+ <view class="main_app">
+ <view class="status_wrap">
+ <view class="name">{{ info.name }}鎻愪氦鐨剓{ cateList[type].name }}</view>
+ <view
+ class="desc"
+ :class="{
+ gray: info.status == '2' || info.status == '5' || info.status == '4',
+ }"
+ >{{ statusMap[info.status] }}</view
+ >
+ <view v-if="info.status == '0'" class="status">{{
+ statusMap[info.status]
+ }}</view>
+ <image
+ v-if="info.status == '2'"
+ src="@/static/ic_passed@2x.png"
+ mode="widthFix"
+ class="status_img"
+ ></image>
+ <image
+ v-if="info.status == '3' || info.status == '6'"
+ src="@/static/ic_refused@2x.png"
+ mode="widthFix"
+ class="status_img"
+ ></image>
+ </view>
+ <!-- -->
+ <view class="emyty"></view>
+ <view class="module_list">
+ <view class="item">
+ <view class="label">琚浜�</view>
+ <view class="value">{{ info.visitUserName }}</view>
+ </view>
+ <view class="item">
+ <view class="label">棰勮鍏�/绂诲洯鏃堕棿</view>
+ <view class="value" v-if="info.visitTime">{{ info.visitTime }}</view>
+ </view>
+ <view class="emyty"></view>
+ <view class="item">
+ <view class="label">璁垮淇℃伅</view>
+ <view class="value">
+ <image
+ class="avatar"
+ :src="
+ info.prefix
+ ? info.prefix + info.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ mode="widthFix"
+ ></image>
+ <view class="info">
+ <text class="name">{{ info.name }} {{ info.phone }}</text>
+ <text>韬唤璇佸彿锛歿{ info.idCardDecode }}</text>
+ <text>鍏ュ洯杞﹁締锛歿{ info.carNos }}</text>
+ </view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鍏徃鍚嶇О</view>
+ <view class="value">{{ info.companyName }}</view>
+ </view>
+ <view class="item">
+ <view class="label">鏂藉伐浜哄憳</view>
+ <view class="value">{{ info.type == 0 ? "鍚�" : "鏄�" }}</view>
+ </view>
+ <view class="item">
+ <view class="label">鏉ヨ浜嬬敱</view>
+ <view class="value">{{ info.visitReason }}</view>
+ </view>
+ </view>
+ <!-- 娴佺▼ -->
+ <view class="flow_wrap">
+ <view class="flow_title">娴佺▼</view>
+ <view
+ class="list"
+ v-if="
+ info.approveDateVO != null && info.approveDateVO.approveList != null
+ "
+ >
+ <view
+ class="item"
+ v-for="(item, index) in info.approveDateVO.approveList"
+ :key="item.id"
+ >
+ <view class="separate"></view>
+ <view class="avatar">
+ <image
+ class="img"
+ :src="
+ item.faceImg
+ ? item.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <image
+ class="status"
+ src="@/static/staff/liucheng_success@2x.png"
+ mode="widthFix"
+ />
+ </view>
+ <view class="content">
+ <view class="head">
+ <view class="event">{{ item.title }}</view>
+ <view class="time">{{ item.checkDate }}</view>
+ </view>
+ <view class="name_wrap">
+ <text
+ >{{ item.memberName
+ }}<text class="status" v-if="item.statusInfo"
+ >({{ item.statusInfo }})</text
+ ></text
+ >
+ </view>
+ <view v-if="item.checkInfo" class="remark">{{
+ item.checkInfo
+ }}</view>
+ <!-- 鎶勯�佷汉 -->
+ <view v-if="item.approveType == 1" class="children">
+ <view
+ class="child"
+ v-for="child in item.approveList"
+ :key="child.id"
+ >
+ <image
+ class="child_img"
+ :src="
+ child.faceImg
+ ? child.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <view>{{ child.memberName }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="emyty"></view>
+ <view class="main_footer">
+ <view class="btn" @click="handleSub(3)">鎷掔粷</view>
+ <view class="btn agree" @click="handleSub(2)">鍚屾剰</view>
+ </view>
- <!-- -->
- <u-popup :show="showApprModal" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="showApprModal = false">
- <view class="appr_modal">
- <view class="title">鍚屾剰</view>
- <textarea placeholder="鍚屾剰璇存槑锛岄潪蹇呭~" placeholder-class="placeholder9" />
- <view class="main_footer">
- <view class="btn" @click="showApprModal = false">鍙栨秷</view>
- <view class="btn agree">鎻愪氦</view>
- </view>
- </view>
- </u-popup>
- </view>
+ <u-popup
+ :show="showApprModal"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ mode="bottom"
+ @close="showApprModal = false"
+ >
+ <view class="appr_modal">
+ <view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
+ <textarea
+ v-model="param.checkInfo"
+ :placeholder="
+ param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑锛屽繀濉�'
+ "
+ placeholder-class="placeholder9"
+ />
+ <view class="main_footer">
+ <view class="btn" @click="showApprModal = false">鍙栨秷</view>
+ <view class="btn agree" @click="onSubmit">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
</template>
<script>
+import {
+ getVisitedDetail, // 璁垮棰勭害璇︽儏
+ carUseBookAppr
+} from '@/api'
export default {
- data() {
- return {
- showApprModal: false,
- param: {}
- }
- },
- methods: {
- handleSub(flag) {
- // this.param.flag =
- if (flag === '1') {
+ data() {
+ return {
+ showApprModal: false,
+ param: {},
+ info: {},
- } else {
-
- }
- this.showApprModal = true
- }
- },
+ id: '',
+ type: '',
+ cateList: [
+ { name: '璁垮鐢宠', id: 0 },
+ { name: '璁垮鎶ュ', id: 1 },
+ { name: '鐢ㄨ溅鐢宠', id: 2 },
+ { name: '闅愭偅闅忔墜鎷�', id: 3 },
+ { name: '鐗╂祦杞︾敵璇�', id: 4 },
+ ],
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒鏈�氳繃',
+ 4: '宸插彇娑�',
+ 5: '浠栦汉鎴栫',
+ 6: '浠栦汉鎷掔粷',
+ }
+ }
+ },
+ onLoad(op) {
+ this.id = op.id
+ this.type = op.objType
+ this.getDetail()
+ },
+ methods: {
+ getDetail() {
+ const { id } = this
+ getVisitedDetail({ id }).then(res => {
+ this.info = res.data
+ })
+ },
+ onSubmit() {
+ const { param, info } = this
+ carUseBookAppr({
+ status: param.status,
+ objType: info.type,
+ objId: this.id,
+ // driverId: param.driverId,
+ checkInfo: param.checkInfo
+ }).then(res => {
+ if (res.code === 200) {
+ this.showApprModal = false
+ setTimeout(() => {
+ uni.showToast({
+ title: '鎿嶄綔鎴愬姛',
+ icon: 'success'
+ })
+ })
+ uni.navigateBack()
+ }
+ })
+ },
+ handleSub(status) {
+ // this.param.flag =
+ this.param = {
+ status
+ }
+ this.showApprModal = true
+ this.showApprModal = true
+ },
+ },
}
</script>
<style>
page {
- background-color: #F7F7F7;
+ background-color: #f7f7f7;
}
</style>
<style lang="scss">
.main_app {
- background-color: #fff;
- padding-bottom: 0;
+ background-color: #fff;
+ padding-bottom: 0;
- .flow_wrap {
- padding: 30rpx 0;
+ .flow_wrap {
+ padding: 30rpx 0;
- .flow_title {
- font-weight: 500;
- font-size: 32rpx;
- color: #222222;
- margin-bottom: 24rpx;
- }
+ .flow_title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
- .list {
- .item {
- display: flex;
- margin-bottom: 48rpx;
+ .list {
+ .item {
+ display: flex;
+ margin-bottom: 48rpx;
+ position: relative;
+ .separate {
+ position: absolute;
+ width: 4rpx;
+ height: 100%;
+ background-color: #eeeeee;
+ left: 40rpx;
+ transform: translate(-50%, 0);
+ top: 80rpx;
+ }
+ .avatar {
+ width: 80rpx;
+ height: 80rpx;
+ position: relative;
+ margin-right: 20rpx;
- .avatar {
- width: 80rpx;
- height: 80rpx;
- position: relative;
- margin-right: 20rpx;
+ .img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ }
- .img {
- width: 80rpx;
- height: 80rpx;
- border-radius: 50%;
- }
+ .status {
+ width: 28rpx;
+ height: 28rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ }
+ }
- .status {
- width: 28rpx;
- height: 28rpx;
- border-radius: 50%;
- position: absolute;
- right: 0;
- bottom: 0;
- }
+ .content {
+ flex: 1;
- .separate {
- position: absolute;
- width: 4rpx;
- height: 100%;
- background-color: #EEEEEE;
- left: 50%;
- transform: translate(-50%, 0);
- bottom: -80rpx;
- }
- }
+ .head {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 4rpx;
- .content {
- flex: 1;
+ .event {
+ font-size: 30rpx;
+ }
- .head {
- display: flex;
- justify-content: space-between;
- margin-bottom: 4rpx;
+ .time {
+ font-size: 26rpx;
+ color: #999999;
+ }
+ }
- .event {
- font-size: 30rpx;
- }
+ .name_wrap {
+ font-size: 26rpx;
+ color: #777777;
- .time {
- font-size: 26rpx;
- color: #999999;
- }
- }
+ .status {
+ color: $uni-color-primary;
+ }
+ }
+ .children {
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: 12rpx;
+ .child {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ margin-right: 12rpx;
+ .child_img {
+ width: 48rpx;
+ height: 48rpx;
+ border-radius: 50%;
+ }
+ }
+ }
- .name_wrap {
- font-size: 26rpx;
- color: #777777;
+ .remark {
+ margin-top: 12rpx;
+ background-color: #f7f7f7;
+ padding: 14rpx 20rpx;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ color: #666666;
+ line-height: 36rpx;
+ }
+ }
+ .carbon {
+ display: flex;
+ width: 590rpx;
+ overflow-x: auto;
+ margin-top: 12rpx;
+ .carbon_item {
+ text-align: center;
+ flex-shrink: 0;
+ width: 100rpx;
+ image {
+ width: 60rpx;
+ height: 60rpx;
+ margin: 0 auto;
+ }
+ view {
+ font-size: 26rpx;
+ color: #777777;
+ }
+ }
+ }
+ &:nth-last-child(1) {
+ .separate {
+ height: 0;
+ }
+ }
+ }
+ }
+ }
- .status {
- color: $uni-color-primary;
- }
- }
+ .module_list {
+ .item {
+ padding: 30rpx 0;
+ border-bottom: 1rpx solid #e5e5e5;
- .remark {
- margin-top: 12rpx;
- background-color: #f7f7f7;
- padding: 14rpx 20rpx;
- border-radius: 8rpx;
- font-size: 26rpx;
- color: #666666;
- line-height: 36rpx;
- }
- }
- .carbon{
- display: flex;
- width: 590rpx;
- overflow-x: auto;
- margin-top: 12rpx;
- .carbon_item{
- text-align: center;
- flex-shrink: 0;
- width: 100rpx;
- image{
- width: 60rpx;
- height: 60rpx;
- margin: 0 auto;
- }
- view{
- font-size: 26rpx;
- color: #777777;
-
- }
- }
- }
- }
- }
- }
+ .label {
+ font-size: 26rpx;
+ color: #666666;
+ margin-bottom: 20rpx;
+ }
- .module_list {
- .item {
- padding: 30rpx 0;
- border-bottom: 1rpx solid #E5E5E5;
+ .value {
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
- .label {
- font-size: 26rpx;
- color: #666666;
- margin-bottom: 20rpx;
- }
+ .avatar {
+ margin-right: 20rpx;
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 8rpx;
+ border: 2rpx solid #e5e5e5;
+ }
- .value {
- font-size: 30rpx;
- display: flex;
- align-items: center;
+ .info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ font-size: 26rpx;
+ color: #666666;
- .avatar {
- margin-right: 20rpx;
- width: 120rpx;
- height: 120rpx;
- border-radius: 8rpx;
- border: 2rpx solid #E5E5E5;
- }
+ .name {
+ font-size: 30rpx;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
- .info {
- flex: 1;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- font-size: 26rpx;
- color: #666666;
+ .status_wrap {
+ position: relative;
+ padding: 30rpx 0;
- .name {
- font-size: 30rpx;
- color: #333333;
- }
- }
- }
- }
- }
+ .name {
+ font-weight: 500;
+ font-size: 32rpx;
+ margin-bottom: 20rpx;
+ color: #222222;
+ }
- .status_wrap {
- position: relative;
- padding: 30rpx 0;
+ .desc {
+ font-size: 26rpx;
+ color: #ed4545;
+ }
+ .gray {
+ color: #999999;
+ }
- .name {
- font-weight: 500;
- font-size: 32rpx;
- margin-bottom: 20rpx;
- color: #222222;
- }
+ .status {
+ position: absolute;
+ right: -30rpx;
+ top: 0;
+ height: 60rpx;
+ line-height: 60rpx;
+ padding: 0 32rpx;
+ border-radius: 0rpx 0rpx 0rpx 30rpx;
+ background-color: #e9edff;
+ color: $uni-color-primary;
+ }
+ .status_img {
+ position: absolute;
+ right: 0rpx;
+ top: 20rpx;
+ width: 120rpx;
+ }
+ }
- .desc {
- font-size: 26rpx;
- color: #ED4545;
- }
+ .main_footer {
+ padding-bottom: 64rpx;
+ display: flex;
+ justify-content: space-between;
+ width: 100%;
+ left: 0;
+ padding: 30rpx 10rpx 60rpx;
+ display: flex;
+ justify-content: space-between;
+ background: #ffffff;
+ .btn {
+ width: 336rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 0;
+ }
- .status {
- position: absolute;
- right: -30rpx;
- top: 0;
- height: 60rpx;
- line-height: 60rpx;
- padding: 0 32rpx;
- border-radius: 0rpx 0rpx 0rpx 30rpx;
- background-color: #e9edff;
- color: $uni-color-primary;
- }
- }
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
- .main_footer {
- padding-bottom: 64rpx;
- display: flex;
- justify-content: space-between;
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
- .btn {
- width: 336rpx;
- height: 88rpx;
- line-height: 88rpx;
- background: #FFFFFF;
- border-radius: 44rpx;
- border: 1rpx solid #999999;
- font-size: 32rpx;
- text-align: center;
- margin: 16rpx 0;
- }
+ .title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 40rpx;
+ text-align: center;
+ }
- .agree {
- background: $uni-color-primary;
- color: #fff;
- border: 1rpx solid $uni-color-primary;
- }
- }
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ }
+ }
- .appr_modal {
- padding: 36rpx 30rpx 0;
-
- .title {
- font-weight: 500;
- font-size: 32rpx;
- color: #222222;
- margin-bottom: 40rpx;
- text-align: center;
- }
-
- textarea {
- box-sizing: border-box;
- width: 690rpx;
- background-color: #f7f7f7;
- font-size: 28rpx;
- color: #333333;
- padding: 24rpx;
- border-radius: 8rpx;
- margin-bottom: 30rpx;
- }
- }
-
- .emyty {
- width: 750rpx;
- height: 20rpx;
- background-color: #f7f7f7;
- margin: 0 -30rpx;
- }
+ .emyty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+ }
}
</style>
diff --git a/h5/pages/staff/task/visitorReport.vue b/h5/pages/staff/task/visitorReport.vue
new file mode 100644
index 0000000..b877e17
--- /dev/null
+++ b/h5/pages/staff/task/visitorReport.vue
@@ -0,0 +1,517 @@
+<template>
+ <view class="main_app">
+ <view class="status_wrap">
+ <view class="name"
+ >{{ info.createMemberName }}鎻愪氦鐨剓{ cateList[type].name }}</view
+ >
+ <view
+ class="desc"
+ :class="{
+ gray: info.status == '2' || info.status == '5' || info.status == '4',
+ }"
+ >{{ statusMap[info.status] }}</view
+ >
+ <view v-if="info.status == '0'" class="status">{{
+ statusMap[info.status]
+ }}</view>
+ <image
+ v-if="info.status == '2'"
+ src="@/static/ic_passed@2x.png"
+ mode="widthFix"
+ class="status_img"
+ ></image>
+ <image
+ v-if="info.status == '3' || info.status == '6'"
+ src="@/static/ic_refused@2x.png"
+ mode="widthFix"
+ class="status_img"
+ ></image>
+ </view>
+ <!-- -->
+ <view class="emyty"></view>
+ <view class="module_list">
+ <view class="item">
+ <view class="label">琚浜�</view>
+ <view class="value"
+ >{{ info.receptMemberName }} {{ info.receptMemberDepartment }}</view
+ >
+ </view>
+ <view class="item">
+ <view class="label">棰勮鍏�/绂诲洯鏃堕棿</view>
+ <view class="value" v-if="info.starttime"
+ >{{ info.starttime.slice(0, 16) }} 鑷�
+ {{ info.endtime.slice(0, 16) }}</view
+ >
+ </view>
+ <view class="emyty"></view>
+
+ <view class="item">
+ <view class="label">鑱旂郴浜轰俊鎭�</view>
+ <view class="value">{{ info.name }} {{ info.phone }}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍏ュ洯杞﹁締</view>
+ <view class="value">{{ info.carNos }}</view>
+ </view>
+ <view class="item">
+ <view class="label">闅忚溅浜烘暟</view>
+ <view class="value">{{ info.memberNum }}浜�</view>
+ </view>
+ <view class="item">
+ <view class="label">鏉ヨ浜嬬敱</view>
+ <view class="value">{{ info.reason }}</view>
+ </view>
+ </view>
+ <!-- 娴佺▼ -->
+ <view class="flow_wrap">
+ <view class="flow_title">娴佺▼</view>
+ <view
+ class="list"
+ v-if="
+ info.approveDateVO != null && info.approveDateVO.approveList != null
+ "
+ >
+ <view
+ class="item"
+ v-for="(item, index) in info.approveDateVO.approveList"
+ :key="item.id"
+ >
+ <view class="separate"></view>
+ <view class="avatar">
+ <image
+ class="img"
+ :src="
+ item.faceImg
+ ? item.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <image
+ class="status"
+ src="@/static/staff/liucheng_success@2x.png"
+ mode="widthFix"
+ />
+ </view>
+ <view class="content">
+ <view class="head">
+ <view class="event">{{ item.title }}</view>
+ <view class="time">{{ item.checkDate }}</view>
+ </view>
+ <view class="name_wrap">
+ <text
+ >{{ item.memberName
+ }}<text class="status" v-if="item.statusInfo"
+ >({{ item.statusInfo }})</text
+ ></text
+ >
+ </view>
+ <view v-if="item.checkInfo" class="remark">{{
+ item.checkInfo
+ }}</view>
+ <!-- 鎶勯�佷汉 -->
+ <view v-if="item.approveType == 1" class="children">
+ <view
+ class="child"
+ v-for="child in item.approveList"
+ :key="child.id"
+ >
+ <image
+ class="child_img"
+ :src="
+ child.faceImg
+ ? child.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <view>{{ child.memberName }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="emyty"></view>
+ <view class="main_footer">
+ <view class="btn" @click="handleSub(3)">鎷掔粷</view>
+ <view class="btn agree" @click="handleSub(2)">鍚屾剰</view>
+ </view>
+
+ <u-popup
+ :show="showApprModal"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ mode="bottom"
+ @close="showApprModal = false"
+ >
+ <view class="appr_modal">
+ <view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
+ <textarea
+ v-model="param.checkInfo"
+ :placeholder="
+ param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑锛屽繀濉�'
+ "
+ placeholder-class="placeholder9"
+ />
+ <view class="main_footer">
+ <view class="btn" @click="showApprModal = false">鍙栨秷</view>
+ <view class="btn agree" @click="onSubmit">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+import {
+ getVisitedReDetail, // 璁垮棰勭害璇︽儏
+ carUseBookAppr
+} from '@/api'
+export default {
+ data() {
+ return {
+ showApprModal: false,
+ param: {},
+ info: {},
+
+ id: '',
+ type: '',
+ cateList: [
+ { name: '璁垮鐢宠', id: 0 },
+ { name: '璁垮鎶ュ', id: 1 },
+ { name: '鐢ㄨ溅鐢宠', id: 2 },
+ { name: '闅愭偅闅忔墜鎷�', id: 3 },
+ { name: '鐗╂祦杞︾敵璇�', id: 4 },
+ ],
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '瀹℃壒閫氳繃',
+ 3: '瀹℃壒鏈�氳繃',
+ 4: '宸插彇娑�',
+ 5: '浠栦汉鎴栫',
+ 6: '浠栦汉鎷掔粷',
+ }
+ }
+ },
+ onLoad(op) {
+ this.id = op.id
+ this.type = op.objType
+ this.getDetail()
+ },
+ methods: {
+ getDetail() {
+ const { id } = this
+ getVisitedReDetail({ id }).then(res => {
+ this.info = res.data
+ })
+ },
+ onSubmit() {
+ const { param, info } = this
+ carUseBookAppr({
+ status: param.status,
+ objType: 2,
+ objId: this.id,
+ // driverId: param.driverId,
+ checkInfo: param.checkInfo
+ }).then(res => {
+ if (res.code === 200) {
+ this.showApprModal = false
+ setTimeout(() => {
+ uni.showToast({
+ title: '鎿嶄綔鎴愬姛',
+ icon: 'success'
+ })
+ })
+ uni.navigateBack()
+ }
+ })
+ },
+ handleSub(status) {
+ // this.param.flag =
+ this.param = {
+ status
+ }
+ this.showApprModal = true
+ this.showApprModal = true
+ },
+ },
+}
+</script>
+<style>
+page {
+ background-color: #f7f7f7;
+}
+</style>
+<style lang="scss">
+.main_app {
+ background-color: #fff;
+ padding-bottom: 0;
+
+ .flow_wrap {
+ padding: 30rpx 0;
+
+ .flow_title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
+
+ .list {
+ .item {
+ display: flex;
+ margin-bottom: 48rpx;
+ position: relative;
+ .separate {
+ position: absolute;
+ width: 4rpx;
+ height: 100%;
+ background-color: #eeeeee;
+ left: 40rpx;
+ transform: translate(-50%, 0);
+ top: 80rpx;
+ }
+ .avatar {
+ width: 80rpx;
+ height: 80rpx;
+ position: relative;
+ margin-right: 20rpx;
+
+ .img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ }
+
+ .status {
+ width: 28rpx;
+ height: 28rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ }
+ }
+
+ .content {
+ flex: 1;
+
+ .head {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 4rpx;
+
+ .event {
+ font-size: 30rpx;
+ }
+
+ .time {
+ font-size: 26rpx;
+ color: #999999;
+ }
+ }
+
+ .name_wrap {
+ font-size: 26rpx;
+ color: #777777;
+
+ .status {
+ color: $uni-color-primary;
+ }
+ }
+ .children {
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: 12rpx;
+ .child {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ margin-right: 12rpx;
+ .child_img {
+ width: 48rpx;
+ height: 48rpx;
+ border-radius: 50%;
+ }
+ }
+ }
+
+ .remark {
+ margin-top: 12rpx;
+ background-color: #f7f7f7;
+ padding: 14rpx 20rpx;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ color: #666666;
+ line-height: 36rpx;
+ }
+ }
+ .carbon {
+ display: flex;
+ width: 590rpx;
+ overflow-x: auto;
+ margin-top: 12rpx;
+ .carbon_item {
+ text-align: center;
+ flex-shrink: 0;
+ width: 100rpx;
+ image {
+ width: 60rpx;
+ height: 60rpx;
+ margin: 0 auto;
+ }
+ view {
+ font-size: 26rpx;
+ color: #777777;
+ }
+ }
+ }
+ &:nth-last-child(1) {
+ .separate {
+ height: 0;
+ }
+ }
+ }
+ }
+ }
+
+ .module_list {
+ .item {
+ padding: 30rpx 0;
+ border-bottom: 1rpx solid #e5e5e5;
+
+ .label {
+ font-size: 26rpx;
+ color: #666666;
+ margin-bottom: 20rpx;
+ }
+
+ .value {
+ font-size: 30rpx;
+ display: flex;
+ align-items: center;
+
+ .avatar {
+ margin-right: 20rpx;
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 8rpx;
+ border: 2rpx solid #e5e5e5;
+ }
+
+ .info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ font-size: 26rpx;
+ color: #666666;
+
+ .name {
+ font-size: 30rpx;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
+
+ .status_wrap {
+ position: relative;
+ padding: 30rpx 0;
+
+ .name {
+ font-weight: 500;
+ font-size: 32rpx;
+ margin-bottom: 20rpx;
+ color: #222222;
+ }
+
+ .desc {
+ font-size: 26rpx;
+ color: #ed4545;
+ }
+ .gray {
+ color: #999999;
+ }
+
+ .status {
+ position: absolute;
+ right: -30rpx;
+ top: 0;
+ height: 60rpx;
+ line-height: 60rpx;
+ padding: 0 32rpx;
+ border-radius: 0rpx 0rpx 0rpx 30rpx;
+ background-color: #e9edff;
+ color: $uni-color-primary;
+ }
+ .status_img {
+ position: absolute;
+ right: 0rpx;
+ top: 20rpx;
+ width: 120rpx;
+ }
+ }
+
+ .main_footer {
+ padding-bottom: 64rpx;
+ display: flex;
+ justify-content: space-between;
+ width: 100%;
+ left: 0;
+ padding: 30rpx 10rpx 60rpx;
+ display: flex;
+ justify-content: space-between;
+ background: #ffffff;
+ .btn {
+ width: 336rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #ffffff;
+ border-radius: 44rpx;
+ border: 1rpx solid #999999;
+ font-size: 32rpx;
+ text-align: center;
+ margin: 16rpx 0;
+ }
+
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
+
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
+
+ .title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 40rpx;
+ text-align: center;
+ }
+
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ }
+ }
+
+ .emyty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+ }
+}
+</style>
diff --git a/h5/pages/staff/vehicle/sendACar.vue b/h5/pages/staff/vehicle/sendACar.vue
index f11605d..3df0a80 100644
--- a/h5/pages/staff/vehicle/sendACar.vue
+++ b/h5/pages/staff/vehicle/sendACar.vue
@@ -61,10 +61,11 @@
<!-- 鏃ユ湡 -->
<u-datetime-picker
mode="date"
+ v-model="param.queryDate"
:show="isShowDate"
:minDate="minDate"
+ closeOnClickOverlay
@close="isShowDate = false"
- :closeOnClickOverlay="true"
@confirm="seletedDate"
@cancel="isShowDate = false"
/>
@@ -81,6 +82,7 @@
isShowDate: false,
carsList: [],
param: {
+ queryDate: dayjs().format('YYYY-MM-DD'),
memberId: uni.getStorageSync('userInfo').memberId
},
minDate: '',
@@ -89,7 +91,7 @@
capacity: 10
},
total: 0,
- dataList: []
+ dataList: [],
}
},
onLoad() {
@@ -107,6 +109,10 @@
getList() {
const { param, pagination } = this
pagination.page = pagination.page + 1
+ if(param.queryDate){
+ param.queryStartTime = param.queryDate + ' 00:00:00'
+ param.queryEndTime = param.queryDate + ' 23:59:59'
+ }
carUseBookPaiche({
...pagination,
model: { ...param }
@@ -126,21 +132,17 @@
},
seletedCar(e) {
const item = e.value[0]
+ this.pagination.page = 0
this.$set(this.param, 'carCode', item.code)
this.$set(this.param, 'carId', item.id)
this.isShowCar = false
- if (this.param.carId && this.param.queryDate) {
- this.pagination.page = 0
- this.getList()
- }
+ this.getList()
},
seletedDate(e) {
this.param.queryDate = dayjs(e.value).format('YYYY-MM-DD')
+ this.pagination.page = 0
this.isShowDate = false
- if (this.param.carId && this.param.queryDate) {
- this.pagination.page = 0
- this.getList()
- }
+ this.getList()
},
endtimeClose() {
this.param.endTime = ''
diff --git a/h5/pages/staff/vehicle/sendACarDetail.vue b/h5/pages/staff/vehicle/sendACarDetail.vue
index af0f3ec..e266b61 100644
--- a/h5/pages/staff/vehicle/sendACarDetail.vue
+++ b/h5/pages/staff/vehicle/sendACarDetail.vue
@@ -16,19 +16,25 @@
<view class="module_list">
<view class="item">
<view class="label">棰勮鐢ㄨ溅鏃舵</view>
- <view class="value">{{ info.startTime.slice(0, 16) }}鑷硔{ info.endTime.slice(0, 16) }}</view>
+ <view class="value" v-if="info.startTime"
+ >{{ info.startTime.slice(0, 16) }}鑷硔{
+ info.endTime.slice(0, 16)
+ }}</view
+ >
</view>
- <view class="item">
+ <view class="item">
<view class="label">棰勮鍑哄彂鏃堕棿</view>
<view class="value">{{ info.planUseDate }}</view>
</view>
- <view class="item">
+ <view class="item">
<view class="label">涔樿溅浜哄憳</view>
<view class="value">{{ info.memberNames }}</view>
</view>
<view class="item">
<view class="label">鐩殑鍦�</view>
- <view class="value">{{ info.type == '1' ? '甯傚' : '瀹ゅ唴' }}锛歿{ info.addr }}</view>
+ <view class="value"
+ >{{ info.type == "1" ? "甯傚" : "瀹ゅ唴" }}锛歿{ info.addr }}</view
+ >
</view>
<view class="item">
<view class="label">鐢ㄨ溅浜嬬敱</view>
@@ -46,31 +52,27 @@
<!-- 娴佺▼ -->
<view class="flow_wrap">
<view class="flow_title">娴佺▼</view>
- <view class="list">
- <view class="item">
+ <view
+ class="list"
+ v-if="
+ info.approveDateVO != null && info.approveDateVO.approveList != null
+ "
+ >
+ <view
+ class="item"
+ v-for="(item, index) in info.approveDateVO.approveList"
+ :key="item.id"
+ >
+ <view class="separate"></view>
<view class="avatar">
- <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
<image
- class="status"
- src="@/static/staff/liucheng_success@2x.png"
- mode="widthFix"
+ class="img"
+ :src="
+ item.faceImg
+ ? item.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
/>
- <view class="separate"></view>
- </view>
- <view class="content">
- <view class="head">
- <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
- <view class="time">time</view>
- </view>
- <view class="name_wrap">
- <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
- </view>
- <view class="remark">鍚屾剰鏀捐</view>
- </view>
- </view>
- <view class="item">
- <view class="avatar">
- <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
<image
class="status"
src="@/static/staff/liucheng_success@2x.png"
@@ -79,19 +81,36 @@
</view>
<view class="content">
<view class="head">
- <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
- <view class="time">time</view>
+ <view class="event">{{ item.title }}</view>
+ <view class="time">{{ item.checkDate }}</view>
</view>
<view class="name_wrap">
- <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
+ <text
+ >{{ item.memberName
+ }}<text class="status" v-if="item.statusInfo"
+ >({{ item.statusInfo }})</text
+ ></text
+ >
</view>
- <view class="carbon">
- <view class="carbon_item" v-for="i in 12">
+ <view v-if="item.checkInfo" class="remark">{{
+ item.checkInfo
+ }}</view>
+ <!-- 鎶勯�佷汉 -->
+ <view v-if="item.approveType == 1" class="children">
+ <view
+ class="child"
+ v-for="child in item.approveList"
+ :key="child.id"
+ >
<image
- src="../../../static/logo@2x.png"
- mode="widthFix"
- ></image>
- <view class="text">name</view>
+ class="child_img"
+ :src="
+ child.faceImg
+ ? child.faceImg
+ : require('@/static/meeting/common/default_user@2x.png')
+ "
+ />
+ <view>{{ child.memberName }}</view>
</view>
</view>
</view>
@@ -100,10 +119,34 @@
</view>
<view class="emyty"></view>
<view class="main_footer">
- <view class="btn" @click="handleSub('0')">鎷掔粷</view>
- <view class="btn agree" @click="handleSub('1')">鍚屾剰</view>
+ <template v-if="appr == '1'">
+ <view class="btn" @click="handleSub(3)">鎷掔粷</view>
+ <view class="btn agree" @click="handleSub(2)">鍚屾剰</view>
+ </template>
+ <view v-else class="btn agree" @click="isShowBack = true">鎾ら攢鐢ㄨ溅</view>
</view>
+ <!-- 鎾ら攢 -->
+ <u-popup
+ :show="isShowBack"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ mode="bottom"
+ @close="isShowBack = false"
+ >
+ <view class="appr_modal">
+ <view class="title">鎾ら攢鐢ㄨ溅</view>
+ <view class="line"> 鎾ら攢璇存槑 </view>
+ <textarea
+ v-model="backParam.info"
+ placeholder="闈炲繀濉�"
+ placeholder-class="placeholder9"
+ />
+ <view class="main_footer">
+ <view class="btn agree" @click="onSubBack">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
<!-- -->
<u-popup
:show="showApprModal"
@@ -113,34 +156,60 @@
@close="showApprModal = false"
>
<view class="appr_modal">
- <view class="title">鍚屾剰</view>
+ <view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
+ <view v-if="param.status == 2" class="line" @click="isShowDrive = true">
+ <text v-if="param.driverName">{{ param.driverName }}</text>
+ <text v-else class="placeholder9">娲捐溅鍙告満</text>
+ <u-icon class="ml12" name="arrow-right" color="#999999" />
+ </view>
<textarea
- placeholder="鍚屾剰璇存槑锛岄潪蹇呭~"
+ v-model="param.checkInfo"
+ :placeholder="
+ param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑锛屽繀濉�'
+ "
placeholder-class="placeholder9"
/>
<view class="main_footer">
<view class="btn" @click="showApprModal = false">鍙栨秷</view>
- <view class="btn agree">鎻愪氦</view>
+ <view class="btn agree" @click="onSubmit">鎻愪氦</view>
</view>
</view>
</u-popup>
+ <!-- 鍙告満 -->
+ <u-picker
+ keyName="name"
+ :show="isShowDrive"
+ @close="isShowDrive = false"
+ :closeOnClickOverlay="true"
+ :columns="driveList"
+ @confirm="seletedDrive"
+ @cancel="isShowDrive = false"
+ ></u-picker>
</view>
</template>
<script>
-import { carUseBookDetail } from '@/api'
+import { carUseBookDetail, carUseBookAppr, driveListPost, carUseBookBack } from '@/api'
export default {
data() {
return {
showApprModal: false,
+ isShowBack: false,
+ backParam: {},
+ isShowDrive: false,
id: '',
+ appr: '',
info: {},
- param: {},
+ param: {
+ status: ''
+ },
+ driveList: []
}
},
onLoad(option) {
this.id = option.id
+ this.appr = option.appr || ''
this.getDetail()
},
methods: {
@@ -150,15 +219,69 @@
this.info = { ...res.data }
})
},
- handleSub(flag) {
+ onSubBack() {
+ carUseBookBack({
+ id: this.id,
+ info: this.backParam.info
+ }).then(res => {
+ if (res.code === 200) {
+ uni.showToast({
+ title: '鎾ら攢鎴愬姛',
+ icon: 'success',
+ duration: 2000
+ })
+ this.isShowBack = false
+ setTimeout(() => {
+ uni.navigateBack()
+ }, 1000)
+ }
+ })
+ },
+ onSubmit() {
+ const { param, info } = this
+ carUseBookAppr({
+ status: param.status,
+ objType: info.type == 1 ? 4 : 3,
+ objId: this.id,
+ driverId: param.driverId,
+ checkInfo: param.checkInfo
+ }).then(res => {
+ if (res.code === 200) {
+ this.showApprModal = false
+ setTimeout(() => {
+ uni.showToast({
+ title: '鎿嶄綔鎴愬姛',
+ icon: 'success'
+ })
+ })
+ uni.navigateBack()
+ }
+ })
+ },
+ handleSub(status) {
// this.param.flag =
- if (flag === '1') {
-
+ this.param = {
+ status
+ }
+ this.showApprModal = true
+ if (status === 2) { // 鍚屾剰
+ this.getDriveList()
} else {
}
this.showApprModal = true
- }
+ },
+ getDriveList() {
+ driveListPost({}).then(res => {
+ this.driveList = [res.data]
+ })
+ },
+ seletedDrive(e) {
+ console.log(e.value[0])
+ this.$set(this.param, 'driverId', e.value[0].id)
+ this.$set(this.param, 'driverName', e.value[0].name)
+ this.isShowDrive = false
+ },
},
}
</script>
@@ -186,7 +309,16 @@
.item {
display: flex;
margin-bottom: 48rpx;
-
+ position: relative;
+ .separate {
+ position: absolute;
+ width: 4rpx;
+ height: 100%;
+ background-color: #eeeeee;
+ left: 40rpx;
+ transform: translate(-50%, 0);
+ top: 80rpx;
+ }
.avatar {
width: 80rpx;
height: 80rpx;
@@ -206,16 +338,6 @@
position: absolute;
right: 0;
bottom: 0;
- }
-
- .separate {
- position: absolute;
- width: 4rpx;
- height: 100%;
- background-color: #eeeeee;
- left: 50%;
- transform: translate(-50%, 0);
- bottom: -80rpx;
}
}
@@ -243,6 +365,23 @@
.status {
color: $uni-color-primary;
+ }
+ }
+ .children {
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: 12rpx;
+ .child {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ margin-right: 12rpx;
+ .child_img {
+ width: 48rpx;
+ height: 48rpx;
+ border-radius: 50%;
+ }
}
}
@@ -274,6 +413,11 @@
font-size: 26rpx;
color: #777777;
}
+ }
+ }
+ &:nth-last-child(1) {
+ .separate {
+ height: 0;
}
}
}
@@ -356,7 +500,7 @@
justify-content: space-between;
.btn {
- width: 336rpx;
+ flex: 1;
height: 88rpx;
line-height: 88rpx;
background: #ffffff;
@@ -364,7 +508,7 @@
border: 1rpx solid #999999;
font-size: 32rpx;
text-align: center;
- margin: 16rpx 0;
+ margin: 16rpx;
}
.agree {
@@ -376,7 +520,14 @@
.appr_modal {
padding: 36rpx 30rpx 0;
-
+ .line {
+ height: 90rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #e4e4e4;
+ margin-bottom: 20rpx;
+ }
.title {
font-weight: 500;
font-size: 32rpx;
diff --git a/h5/pages/staff/visitorReport.vue b/h5/pages/staff/visitorReport.vue
index 0da47cb..040b1fa 100644
--- a/h5/pages/staff/visitorReport.vue
+++ b/h5/pages/staff/visitorReport.vue
@@ -18,7 +18,7 @@
<view class="list_item">
<view class="list_item_label">
<text>*</text>
- <text>鍏ュ巶鏃堕棿</text>
+ <text>鍏ュ洯鏃堕棿</text>
</view>
<view class="list_item_content" @click="show4 = true">
<text :style="{ color: form1.starttime ? '#000000' : '' }">{{
@@ -30,7 +30,7 @@
<view class="list_item">
<view class="list_item_label">
<text>*</text>
- <text>绂诲巶鏃堕棿</text>
+ <text>绂诲洯鏃堕棿</text>
</view>
<view class="list_item_content" @click="openLC">
<text :style="{ color: form1.endtime ? '#000000' : '' }">{{
@@ -124,7 +124,7 @@
<view class="footer"
><view class="footer_btn" @click="submit">鎻愪氦</view></view
>
- <!-- 鍏ュ満鏃堕棿 -->
+ <!-- 鍏ュ洯鏃堕棿 -->
<u-datetime-picker
:show="show4"
:minDate="new Date().getTime()"
@@ -132,7 +132,7 @@
@cancel="show4 = false"
@confirm="setinDate"
></u-datetime-picker>
- <!-- 绂诲満鏃堕棿 -->
+ <!-- 绂诲洯鏃堕棿 -->
<u-datetime-picker
v-if="form1.starttime"
:show="show5"
@@ -276,12 +276,12 @@
})
if (!this.form1.starttime)
return uni.showToast({
- title: '鍏ュ満鏃堕棿涓嶈兘涓虹┖',
+ title: '鍏ュ洯鏃堕棿涓嶈兘涓虹┖',
icon: 'none'
})
if (!this.form1.endtime)
return uni.showToast({
- title: '绂诲満鏃堕棿涓嶈兘涓虹┖',
+ title: '绂诲洯鏃堕棿涓嶈兘涓虹┖',
icon: 'none'
})
if (!this.form1.name) return uni.showToast({
@@ -385,7 +385,7 @@
openLC() {
if (!this.form1.starttime)
return uni.showToast({
- title: '璇峰厛閫夋嫨鍏ュ巶鏃堕棿',
+ title: '璇峰厛閫夋嫨鍏ュ洯鏃堕棿',
icon: 'none'
})
this.show5 = true
diff --git a/h5/pages/visitorApplication/visitorApplication.vue b/h5/pages/visitorApplication/visitorApplication.vue
index 6478aba..aa41896 100644
--- a/h5/pages/visitorApplication/visitorApplication.vue
+++ b/h5/pages/visitorApplication/visitorApplication.vue
@@ -1,8 +1,8 @@
<template>
- <view class="visit">
- <view class="head">鎷滆淇℃伅</view>
- <view class="list">
- <!-- <view class="list_item">
+ <view class="visit">
+ <view class="head">鎷滆淇℃伅</view>
+ <view class="list">
+ <!-- <view class="list_item">
<view class="list_item_label">
<text>琚浜烘墜鏈�</text>
<text>*</text>
@@ -20,37 +20,43 @@
<input type="text" placeholder="璇疯緭鍏ュ鍚�" v-model="form1.receptMemberName" @blur="getUser" 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="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">
+ <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>
@@ -60,1227 +66,1363 @@
<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> -->
- </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="zw"></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)"
- 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>
+ <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> -->
+ </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="zw"></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)"
+ 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.reLaunch({
- url: `/pages/appointmentDetails/appointmentDetails?id=${res.data}`
- })
- }
- })
- },
- deleUser(i) {
- this.personnel.splice(i, 1)
- },
- getVisit1() {
- // 鏄惁闇�瑕佺瓟棰�
- this.$u.api.getSystemDictData({
- dictCode: 'SYSTEM',
- label: 'HEALTH_CARD'
- }).then(res => {
- if (res.code === 200) {
- this.visit = res.data.code
- }
- })
- // 璧峰鏃堕棿鏃堕暱
- 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);
- 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
- }
- }
- }
+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.reLaunch({
+ url: `/pages/appointmentDetails/appointmentDetails?id=${res.data}`
+ })
+ }
+ })
+ },
+ deleUser(i) {
+ this.personnel.splice(i, 1)
+ },
+ getVisit1() {
+ // 鏄惁闇�瑕佺瓟棰�
+ this.$u.api.getSystemDictData({
+ dictCode: 'SYSTEM',
+ label: 'HEALTH_CARD'
+ }).then(res => {
+ if (res.code === 200) {
+ this.visit = res.data.code
+ }
+ })
+ // 璧峰鏃堕棿鏃堕暱
+ 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)
+ 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;
- }
+page {
+ background-color: #f7f7f7 !important;
+}
+.u-upload__button {
+ margin: 0 !important;
+}
</style>
<style lang="scss" scoped>
- .visit {
- width: 100%;
- .menjin {
- width: 100%;
- .respondent-title {
- width: 100%;
- height: 100rpx;
- line-height: 100rpx;
- text-align: center;
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- }
- .list {
- width: 100%;
- height: 400rpx;
- display: flex;
- flex-direction: column;
- .list_item {
- width: 100%;
- 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: #025EEF;
- 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: 500;
- 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;
- text {
- &:nth-child(1) {
- font-size: 30rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #222222;
- }
- &:nth-child(2) {
- font-size: 30rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #E0312A;
- }
- }
- }
- .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: 500;
- 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: 500;
- 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: 500;
- color: #FFFFFF;
- }
- }
- }
-
+.visit {
+ width: 100%;
+ .menjin {
+ width: 100%;
+ .respondent-title {
+ width: 100%;
+ height: 100rpx;
+ line-height: 100rpx;
+ text-align: center;
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .list {
+ width: 100%;
+ height: 400rpx;
+ display: flex;
+ flex-direction: column;
+ .list_item {
+ width: 100%;
+ 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: #025eef;
+ 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: 500;
+ 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;
+ text {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #222222;
+ }
+ &:nth-child(2) {
+ font-size: 30rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #e0312a;
+ }
+ }
+ }
+ .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;
+ }
+ }
+ }
+ }
- .head {
- width: 100%;
- padding: 20rpx 30rpx;
- box-sizing: border-box;
- font-size: 28rpx;
- font-weight: 400;
- color: #666666;
- }
+ .addcar {
+ padding: 30rpx;
+ width: 100%;
+ box-sizing: border-box;
+ .addcar_head {
+ text-align: center;
+ font-size: 32rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 500;
+ 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;
+ }
+ }
+ }
+ }
- .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;
+ .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: 500;
+ 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: 500;
+ color: #ffffff;
+ }
+ }
+ }
- .list_item_label {
- flex-shrink: 0;
- display: flex;
- align-items: center;
+ .head {
+ width: 100%;
+ padding: 20rpx 30rpx;
+ box-sizing: border-box;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #666666;
+ }
- text {
- &:nth-child(1) {
- font-size: 30rpx;
- font-weight: 400;
- color: #222222;
- }
+ .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;
- &:nth-child(2) {
- font-size: 30rpx;
- font-weight: 400;
- color: #E42D2D;
- }
- }
- }
+ .list_item_label {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
- .list_item_content {
- flex: 1;
- height: 100%;
- margin-left: 30rpx;
- display: flex;
- align-items: center;
- justify-content: flex-end;
+ text {
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
- text {
- font-size: 28rpx;
- font-weight: 400;
- color: #999999;
- margin-right: 6rpx;
- }
+ &:nth-child(2) {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #e42d2d;
+ }
+ }
+ }
- input {
- width: 100%;
- height: 100%;
- text-align: right;
- font-size: 28rpx;
- font-weight: 400;
- color: #222222;
- }
- }
- }
- }
+ .list_item_content {
+ flex: 1;
+ height: 100%;
+ margin-left: 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
- .cate {
- width: 100%;
- padding: 30rpx;
- box-sizing: border-box;
- background-color: #ffffff;
- .cate_head {
- font-size: 32rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 500;
- color: #222222;
- }
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #999999;
+ margin-right: 6rpx;
+ }
- .cate_list {
- width: 100%;
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- margin-top: 30rpx;
+ input {
+ width: 100%;
+ height: 100%;
+ text-align: right;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
- .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;
+ .cate {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ .cate_head {
+ font-size: 32rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 500;
+ color: #222222;
+ }
- &:last-child {
- margin-right: 0 !important;
- }
+ .cate_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ margin-top: 30rpx;
- text {
- font-size: 26rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #333333;
- margin-right: 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;
- .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;
- }
- }
+ &:last-child {
+ margin-right: 0 !important;
+ }
- .zw {
- width: 100%;
- height: calc(env(safe-area-inset-bottom) + 118rpx);
- }
+ text {
+ font-size: 26rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ margin-right: 30rpx;
+ }
+ }
+ }
- .footer {
- width: 100%;
- padding: 0 30rpx;
- padding-bottom: env(safe-area-inset-bottom);
- box-sizing: border-box;
- position: fixed;
- left: 0;
- bottom: 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;
+ }
+ }
- .footer_btn {
- width: 100%;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- background: #4c99a8;
- border-radius: 44rpx;
- font-size: 32rpx;
- font-weight: 500;
- color: #FFFFFF;
- }
- }
- }
+ .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;
+ 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: 500;
+ color: #ffffff;
+ }
+ }
+}
</style>
\ No newline at end of file
diff --git a/h5/pages/visitorApproval/visitorApproval.vue b/h5/pages/visitorApproval/visitorApproval.vue
index 4d59e66..4bba4aa 100644
--- a/h5/pages/visitorApproval/visitorApproval.vue
+++ b/h5/pages/visitorApproval/visitorApproval.vue
@@ -1,177 +1,177 @@
<template>
- <view class="box">
- <view class="box_list">
- <view class="box_list_name">涓佹仼鍑殑銆屾嫓璁跨敵璇枫��</view>
- <view class="box_list_job">鍌ㄨ繍绉�</view>
- <!-- <view class="box_list_status">寰呭鐞�</view> -->
- <view class="box_list_status1">
- <image src="@/static/ic_passed@2x.png" mode="widthFix"></image>
- <!-- <image src="@/static/ic_refused@2x.png" mode="widthFix"></image> -->
- </view>
- </view>
- <view class="box_list p">
- <view class="box_list_item">
- <text>鎷滆浜�</text>
- <text>寤栨垚鐟�</text>
- </view>
- <view class="box_list_item">
- <text>棰勮鍏�/绂诲巶鏃堕棿</text>
- <text>05/01 8:00 - 05/01 18:00</text>
- </view>
- </view>
- <view class="box_list p">
- <view class="box_list_item">
- <text>璁垮淇℃伅</text>
- <text>瀛欏織 18177665678</text>
- <text>3309****2910</text>
- </view>
- <view class="box_list_item">
- <text>闅忚浜哄憳</text>
- <text>鏉庣櫧 18177665678</text>
- <text>3309****2910</text>
- </view>
- <view class="box_list_item">
- <text>鏉滅敨 18177665678</text>
- <text>3309****2910</text>
- </view>
- </view>
- <view class="box_list p">
- <view class="box_list_item">
- <text>鍏徃鍚嶇О</text>
- <text>瀹夊窘璞嗙背绉戞妧鏈夐檺鍏徃</text>
- </view>
- <view class="box_list_item">
- <text>鏉ヨ浜嬬敱</text>
- <text>鍟嗛噺鍚堝悓浜嬪疁</text>
- </view>
- <view class="box_list_item">
- <text>浜鸿劯鐓х墖</text>
- <view class="box_list_item_img">
- <image src="@/static/logo@2x.png" mode="widthFix"></image>
- </view>
- </view>
- <view class="box_list_item">
- <text>鍋ュ悍璇�</text>
- <view class="box_list_item_img">
- <image src="@/static/logo@2x.png" mode="widthFix"></image>
- </view>
- </view>
- </view>
- </view>
+ <view class="box">
+ <view class="box_list">
+ <view class="box_list_name">涓佹仼鍑殑銆屾嫓璁跨敵璇枫��</view>
+ <view class="box_list_job">鍌ㄨ繍绉�</view>
+ <!-- <view class="box_list_status">寰呭鐞�</view> -->
+ <view class="box_list_status1">
+ <image src="@/static/ic_passed@2x.png" mode="widthFix"></image>
+ <!-- <image src="@/static/ic_refused@2x.png" mode="widthFix"></image> -->
+ </view>
+ </view>
+ <view class="box_list p">
+ <view class="box_list_item">
+ <text>鎷滆浜�</text>
+ <text>寤栨垚鐟�</text>
+ </view>
+ <view class="box_list_item">
+ <text>棰勮鍏�/绂诲洯鏃堕棿</text>
+ <text>05/01 8:00 - 05/01 18:00</text>
+ </view>
+ </view>
+ <view class="box_list p">
+ <view class="box_list_item">
+ <text>璁垮淇℃伅</text>
+ <text>瀛欏織 18177665678</text>
+ <text>3309****2910</text>
+ </view>
+ <view class="box_list_item">
+ <text>闅忚浜哄憳</text>
+ <text>鏉庣櫧 18177665678</text>
+ <text>3309****2910</text>
+ </view>
+ <view class="box_list_item">
+ <text>鏉滅敨 18177665678</text>
+ <text>3309****2910</text>
+ </view>
+ </view>
+ <view class="box_list p">
+ <view class="box_list_item">
+ <text>鍏徃鍚嶇О</text>
+ <text>瀹夊窘璞嗙背绉戞妧鏈夐檺鍏徃</text>
+ </view>
+ <view class="box_list_item">
+ <text>鏉ヨ浜嬬敱</text>
+ <text>鍟嗛噺鍚堝悓浜嬪疁</text>
+ </view>
+ <view class="box_list_item">
+ <text>浜鸿劯鐓х墖</text>
+ <view class="box_list_item_img">
+ <image src="@/static/logo@2x.png" mode="widthFix"></image>
+ </view>
+ </view>
+ <view class="box_list_item">
+ <text>鍋ュ悍璇�</text>
+ <view class="box_list_item_img">
+ <image src="@/static/logo@2x.png" mode="widthFix"></image>
+ </view>
+ </view>
+ </view>
+ </view>
</template>
<script>
- export default {
- data() {
- return {
-
- };
- }
- }
+export default {
+ data() {
+ return {
+
+ }
+ }
+}
</script>
<style>
- page {
- background-color: #F7F7F7;
- }
+page {
+ background-color: #f7f7f7;
+}
</style>
<style lang="scss" scoped>
- .box {
- width: 100%;
- .p {
- padding: 0 30rpx !important;
- }
- .box_list {
- width: 100%;
- padding: 30rpx;
- box-sizing: border-box;
- background-color: #ffffff;
- display: flex;
- flex-direction: column;
- margin-bottom: 20rpx;
- position: relative;
- .box_list_item {
- width: 100%;
- padding: 30rpx 0;
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- border-bottom: 1rpx solid #E5E5E5;
- .box_list_item_img {
- width: 100rpx;
- height: 100rpx;
- border-radius: 8rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- overflow: hidden;
- border: 1rpx solid #EEEEEE;
- margin-top: 24rpx;
- image {
- width: 100%;
- height: 100%;
- }
- }
- text {
- &:nth-child(1) {
- font-size: 26rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #777777;
- }
- &:nth-child(2) {
- font-size: 28rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #222222;
- margin-top: 20rpx;
- }
- &:nth-child(3) {
- font-size: 28rpx;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- color: #222222;
- margin-top: 20rpx;
- }
- }
- }
- .box_list_name {
- font-size: 32rpx;
- font-weight: 500;
- color: #222222;
- }
- .box_list_job {
- font-size: 26rpx;
- font-weight: 400;
- color: #666666;
- margin-top: 20rpx;
- }
- .box_list_status1 {
- position: absolute;
- right: 30rpx;
- top: 50%;
- transform: translate(0, -50%);
- width: 120rpx;
- height: 120rpx;
- image {
- width: 100%;
- height: 100%;
- }
- }
- .box_list_status {
- position: absolute;
- right: 0;
- top: 0;
- width: 140rpx;
- height: 60rpx;
- line-height: 60rpx;
- text-align: center;
- font-size: 26rpx;
- font-weight: 400;
- color: #025EEF;
- background: rgba(66,117,252,0.12);
- border-radius: 0rpx 0rpx 0rpx 30rpx;
- }
- }
- }
+.box {
+ width: 100%;
+ .p {
+ padding: 0 30rpx !important;
+ }
+ .box_list {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 20rpx;
+ position: relative;
+ .box_list_item {
+ width: 100%;
+ padding: 30rpx 0;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #e5e5e5;
+ .box_list_item_img {
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: 8rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+ border: 1rpx solid #eeeeee;
+ margin-top: 24rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ text {
+ &:nth-child(1) {
+ font-size: 26rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #777777;
+ }
+ &:nth-child(2) {
+ font-size: 28rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #222222;
+ margin-top: 20rpx;
+ }
+ &:nth-child(3) {
+ font-size: 28rpx;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 400;
+ color: #222222;
+ margin-top: 20rpx;
+ }
+ }
+ }
+ .box_list_name {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+ .box_list_job {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ margin-top: 20rpx;
+ }
+ .box_list_status1 {
+ position: absolute;
+ right: 30rpx;
+ top: 50%;
+ transform: translate(0, -50%);
+ width: 120rpx;
+ height: 120rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .box_list_status {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 140rpx;
+ height: 60rpx;
+ line-height: 60rpx;
+ text-align: center;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #025eef;
+ background: rgba(66, 117, 252, 0.12);
+ border-radius: 0rpx 0rpx 0rpx 30rpx;
+ }
+ }
+}
</style>
diff --git a/h5/pages/visitorSubGuide/index.vue b/h5/pages/visitorSubGuide/index.vue
index 5760f18..856379f 100644
--- a/h5/pages/visitorSubGuide/index.vue
+++ b/h5/pages/visitorSubGuide/index.vue
@@ -1,27 +1,27 @@
<template>
- <view class="box">
- <view class="line" v-for="item,i in guideList" :key="i">{{ item }}</view>
+ <view class="box">
+ <view class="line" v-for="(item, i) in guideList" :key="i">{{ item }}</view>
</view>
</template>
<script>
- export default {
- data() {
- return {
- guideList: [
- '1銆佽瀹㈤槄璇诲叆鍘傞』鐭ワ紝濉啓瀹夊叏绛旈銆�',
- '2銆佺瓟棰樺畬鎴愰绾︺��',
- '3銆侀绾﹀畬鎴愯鑷宠瀹㈡満绛惧埌銆�',
- '4銆佸埛鑴稿叆鍥��',
- '5銆佸嚭鍥绂�',
- ]
- };
- }
- }
+export default {
+ data() {
+ return {
+ guideList: [
+ '1銆佽瀹㈤槄璇诲叆鍥』鐭ワ紝濉啓瀹夊叏绛旈銆�',
+ '2銆佺瓟棰樺畬鎴愰绾︺��',
+ '3銆侀绾﹀畬鎴愯鑷宠瀹㈡満绛惧埌銆�',
+ '4銆佸埛鑴稿叆鍥��',
+ '5銆佸嚭鍥绂�',
+ ]
+ }
+ }
+}
</script>
<style lang="scss" scoped>
-.box{
+.box {
padding: 30rpx;
- .line{
+ .line {
margin-bottom: 16rpx;
}
}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/MeetingApi.java b/server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/MeetingApi.java
index 629e321..0c70925 100644
--- a/server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/MeetingApi.java
+++ b/server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/MeetingApi.java
@@ -138,6 +138,7 @@
LoginUserInfo user = getLoginUser(token);
bookingsRequest.setCreator(user.getId());
bookingsRequest.setEditor(user.getId());
+ bookingsRequest.setLoginUserInfo(user);
return ApiResponse.success("鎿嶄綔鎴愬姛",bookingsService.reservationMeeting(bookingsRequest));
}
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java
index e8e58bc..c5f169e 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java
@@ -22,9 +22,10 @@
- @Select(" select a.id , b.`NAME` as roomName , a.`NAME` as meetingName ,date_format(a.START_TIME,'%Y-%m-%d') as meetingDate , a.START_TIME as startTime, a.status ," +
+ @Select(" select a.id , a.START_TIME , a.END_TIME , b.`NAME` as roomName , a.`NAME` as meetingName ,date_format(a.START_TIME,'%Y-%m-%d') as meetingDate , a.START_TIME as startTime, a.status ," +
" CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime, c.REALNAME as bookingUser ," +
- " CASE WHEN a.START_TIME > now() and a.`STATUS` = 0 THEN 1 WHEN a.END_TIME < now() or a.`STATUS` = 1 THEN 3 ELSE 2 END meetingStatus , b.IMGURL as imgUrl " +
+ " CASE WHEN a.START_TIME > now() and a.`STATUS` = 0 THEN 1 WHEN a.END_TIME < now() or a.`STATUS` = 1 THEN 3 ELSE 2 END meetingStatus , b.IMGURL as imgUrl ," +
+ " a.remark " +
" from meeting_book a inner join meeting_rooms b on a.ROOM_ID = b.ID " +
" inner join system_user c on a.CREATOR = c.id " +
" ${ew.customSqlSegment} ")
@@ -32,7 +33,7 @@
- @Select(" select a.id , b.id as roomId, b.`NAME` as roomName , a.`NAME` as meetingName ,date_format(a.START_TIME,'%Y骞�%m鏈�%d鏃�') as meetingDate ," +
+ @Select(" select a.id , a.START_TIME , a.END_TIME , b.id as roomId, b.`NAME` as roomName , a.`NAME` as meetingName ,date_format(a.START_TIME,'%Y骞�%m鏈�%d鏃�') as meetingDate ," +
" CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime, c.REALNAME as bookingUserName ," +
" CASE WHEN a.START_TIME > now() and a.`STATUS` = 0 THEN 1 WHEN a.END_TIME < now() or a.`STATUS` = 1 THEN 3 ELSE 2 END meetingStatus ," +
" a.CONTENT as meetingContent, c.MOBILE as bookingUserMobile , e.`NAME` as bookingUserDepartment , a.CREATOR as bookingUserId , a.remark " +
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java
index 46178bd..401eae4 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingDetailResponse.java
@@ -8,6 +8,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.util.Date;
import java.util.List;
/**
@@ -35,6 +36,14 @@
@ApiModelProperty(value = "浼氳鏃ユ湡")
private String meetingDate;
+
+ @ApiModelProperty(value = "寮�濮嬫椂闂�")
+ private Date startTime;
+
+ @ApiModelProperty(value = "缁撴潫鏃堕棿")
+ private Date endTime;
+
+
@ApiModelProperty(value = "浼氳鏃堕棿 ( a ~ b)")
private String meetingTime;
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingListResponse.java b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingListResponse.java
index 4c21bae..01d666c 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingListResponse.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/dao/web/response/MeetingListResponse.java
@@ -33,6 +33,8 @@
@ApiModelProperty(value = "浼氳鏃堕棿 ( a ~ b)")
private String meetingTime;
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
@ApiModelProperty(value = "浼氳寮�濮嬫椂闂�",hidden = true)
private Date startTime;
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
index 08a1744..021421e 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -745,7 +745,7 @@
.apply(" id in ( select u.OBJ_ID from meeting_user_rel u where u.USER_ID = '" + userId + "' and u.ISDELETED = 0 and OBJ_TYPE = 1 ) ")
.eq("ISDELETED",MeetConstants.ZERO)
// .eq("STATUS",MeetConstants.ZERO)
- .apply(" ROOM_ID in ( select r.id from rooms r where r.ISDELETED = 0 and r.STATUS = 0 )")
+ .apply(" ROOM_ID in ( select r.id from meeting_rooms r where r.ISDELETED = 0 and r.STATUS = 0 )")
.like(StringUtils.isNotBlank(dateMsg), "START_TIME", dateMsg));
}
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/ProjectsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/ProjectsServiceImpl.java
index 3e90f10..16806fc 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/ProjectsServiceImpl.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/ProjectsServiceImpl.java
@@ -178,7 +178,7 @@
public List<ProjectsResponse> getProjectsList(Integer objId,Integer objType) {
return projectsMapper.getProjectsList(new QueryWrapper<ProjectsResponse>()
.eq("ISDELETED",MeetConstants.ZERO)
- .exists(" select 1 from meeting_project_rel p where p.PROJECT_ID = projects.id and p.OBJ_ID = "+objId+" and p.OBJ_TYPE = "+objType+" ")
+ .exists(" select 1 from meeting_project_rel p where p.PROJECT_ID = meeting_projects.id and p.OBJ_ID = "+objId+" and p.OBJ_TYPE = "+objType+" ")
);
}
}
diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomTimeServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomTimeServiceImpl.java
index f6500ee..f4b43de 100644
--- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomTimeServiceImpl.java
+++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomTimeServiceImpl.java
@@ -163,13 +163,8 @@
bookList.stream().forEach(a -> {
if (Constants.equalsInteger(s.getId(), a.getRoomTimeId())) {
s.setIsUse(true);
- }
- if (roomTime.getBookingId() != null && Constants.equalsInteger(roomTime.getBookingId(), a.getId())) {
- if (Constants.equalsInteger(a.getRoomTimeId(), s.getId())) {
- s.setIsChoose(true);
- // s.setIsUse(false);
- s.setBookingTimeId(a.getBookingTimeId());
- }
+ s.setIsChoose(true);
+ s.setBookingTimeId(a.getId());
}
});
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java
index a62bf46..5a6fbd5 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/FtpUtil.java
@@ -15,6 +15,7 @@
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
+import org.apache.xpath.operations.Bool;
import sun.misc.BASE64Encoder;
/** */
@@ -237,7 +238,6 @@
// 璁剧疆PassiveMode浼犺緭
try {
ftpClient.enterLocalPassiveMode();
-
// 璁剧疆浠ヤ簩杩涘埗娴佺殑鏂瑰紡浼犺緭
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.setControlEncoding("GBK");
@@ -266,6 +266,42 @@
}
return false;
}
+
+ public boolean uploadInputstreamBatch(InputStream inputStream, String remote, Boolean close) {
+ // 璁剧疆PassiveMode浼犺緭
+ try {
+ ftpClient.enterLocalPassiveMode();
+ // 璁剧疆浠ヤ簩杩涘埗娴佺殑鏂瑰紡浼犺緭
+ ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
+ ftpClient.setControlEncoding("GBK");
+ // 瀵硅繙绋嬬洰褰曠殑澶勭悊
+ String remoteFileName = remote;
+ if (remote.contains("/")) {
+ remoteFileName = remote.substring(remote.lastIndexOf("/") + 1);
+ // 鍒涘缓鏈嶅姟鍣ㄨ繙绋嬬洰褰曠粨鏋勶紝鍒涘缓澶辫触鐩存帴杩斿洖
+ if (StringUtils.equals(CreateDirecroty(remote, ftpClient), "2")) {
+ log.error("鍒涘缓ftp鐩綍澶辫触======================="+remote);
+ return false;
+ }
+ }
+ boolean result = ftpClient.storeFile(remoteFileName, inputStream);
+ inputStream.close();
+ if(close){
+ ftpClient.logout();
+ }
+ if(result){
+ log.info("涓婁紶鏂囦欢鎴愬姛======================"+remote);
+ }else{
+ log.error("涓婁紶鏂囦欢澶辫触======================="+remote);
+ }
+ return result;
+ }catch (Exception e){
+ e.printStackTrace();
+ log.error("涓婁紶鏂囦欢澶辫触======================="+remote);
+ }
+ return false;
+ }
+
public int getNumFromStr(String str,char searchstr) {
int count = 0;
char[] charArray = str.toCharArray();
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java b/server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java
new file mode 100644
index 0000000..d08a08c
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java
@@ -0,0 +1,38 @@
+package com.doumee.dao.system.dto;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/6/5 9:27
+ */
+@Data
+public class NoticesDTO {
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭",hidden = true)
+ private Integer memberId;
+
+ @ApiModelProperty(value = "鏌ヨ绫诲瀷: 0=寰呭鐞嗭紱1=宸插鐞嗭紱2=鎴戝彂甯冪殑锛�3=鎶勯�佹垜")
+ private Integer queryType;
+
+ @ApiModelProperty(value = "寮�濮嬫棩鏈�")
+ private Date startDate;
+
+ @ApiModelProperty(value = "缁撴潫鏃ユ湡")
+ private Date endDate;
+
+ @ApiModelProperty(value = "0璁垮瀹℃壒 1璁垮鎶ュ 2鐢ㄨ溅瀹℃壒 3闅愭偅澶勭悊 4鐗╂祦杞﹀鎵� 5绯荤粺绯荤粺")
+ private Integer type;
+
+ @ApiModelProperty(value = "鍙湅鏈锛�1=鏄紱0=鍚�")
+ private Integer noRead;
+
+ @ApiModelProperty(value = "浠诲姟鍚嶇О/鏍囬")
+ private String title;
+}
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java b/server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java
index 2b76c44..ab03953 100644
--- a/server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java
@@ -79,8 +79,8 @@
@ExcelColumn(name="鍏宠仈瀵硅薄鍚嶇О")
private String objName;
- @ApiModelProperty(value = "绫诲瀷")
- @ExcelColumn(name="绫诲瀷")
+ @ApiModelProperty(value = "绫诲瀷 0璁垮瀹℃壒 1璁垮鎶ュ 2鐢ㄨ溅瀹℃壒 3闅愭偅澶勭悊 4鐗╂祦杞﹀鎵� 5绯荤粺绯荤粺")
+ @ExcelColumn(name="绫诲瀷 0璁垮瀹℃壒 1璁垮鎶ュ 2鐢ㄨ溅瀹℃壒 3闅愭偅澶勭悊 4鐗╂祦杞﹀鎵� 5绯荤粺绯荤粺")
private Integer type;
@ApiModelProperty(value = "绫诲瀷鎻忚堪")
@@ -88,15 +88,15 @@
private String typeDetail;
- @ApiModelProperty(value = "鍏宠仈鍙傛暟1" ,notes = "瀛樺偍 娑堟伅灞曠ずJSON ")
+ @ApiModelProperty(value = "瀛樺偍 娑堟伅灞曠ずJSON" ,notes = "瀛樺偍 娑堟伅灞曠ずJSON ")
@ExcelColumn(name="鍏宠仈鍙傛暟1")
private String param1;
- @ApiModelProperty(value = "鍏宠仈鍙傛暟2",notes = "鐢ㄤ簬瀛樺偍 涓氬姟鐘舵�佷俊鎭� 0 =寰呭鐞�;1=宸插悓鎰�/宸插鐞�;2=宸叉嫆缁�/宸查��鍥�;3=宸茶浆浜�;4=宸叉挙閿�")
+ @ApiModelProperty(value = "鐢ㄤ簬瀛樺偍 涓氬姟鐘舵�佷俊鎭� 0 =寰呭鐞�;1=宸插悓鎰�/宸插鐞�;2=宸叉嫆缁�/宸查��鍥�;3=宸茶浆浜�;4=宸叉挙閿�",notes = "鐢ㄤ簬瀛樺偍 涓氬姟鐘舵�佷俊鎭� 0 =寰呭鐞�;1=宸插悓鎰�/宸插鐞�;2=宸叉嫆缁�/宸查��鍥�;3=宸茶浆浜�;4=宸叉挙閿�")
@ExcelColumn(name="鍏宠仈鍙傛暟2")
private String param2;
- @ApiModelProperty(value = "鍏宠仈鍙傛暟3")
+ @ApiModelProperty(value = "鍙戣捣浜�",notes = "鍙戣捣浜�")
@ExcelColumn(name="鍏宠仈鍙傛暟3")
private String param3;
diff --git a/server/system_service/src/main/java/com/doumee/service/system/NoticesService.java b/server/system_service/src/main/java/com/doumee/service/system/NoticesService.java
index d217439..0c45a5a 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/NoticesService.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/NoticesService.java
@@ -2,6 +2,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.dao.system.dto.NoticesDTO;
import com.doumee.dao.system.model.Notices;
import java.util.List;
@@ -97,5 +98,10 @@
long count(Notices notices);
+ PageData<Notices> taskCanterPage(PageWrap<NoticesDTO> pageWrap);
+
+ void signReadById(Integer noticesId);
+
+ void signRead(Integer memberId);
}
diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java
index 67cbee2..68ab7e8 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java
@@ -4,21 +4,26 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
+import com.doumee.dao.system.dto.NoticesDTO;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.Notices;
import com.doumee.service.system.NoticesService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.Objects;
/**
* 绯荤粺娑堟伅淇℃伅琛⊿ervice瀹炵幇
@@ -93,8 +98,6 @@
IPage<Notices> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-
queryWrapper.selectAll(Notices.class);
if (pageWrap.getModel().getIsdeleted() != null) {
queryWrapper.eq(Notices::getIsdeleted, pageWrap.getModel().getIsdeleted());
@@ -140,7 +143,82 @@
return noticesMapper.selectCount(wrapper);
}
+ @Override
+ public PageData<Notices> taskCanterPage(PageWrap<NoticesDTO> pageWrap) {
+ IPage<Notices> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ queryWrapper.selectAll(Notices.class);
+ NoticesDTO noticesDTO = pageWrap.getModel();
+ if(Objects.isNull(noticesDTO)
+ || Objects.isNull(noticesDTO.getMemberId())
+ || Objects.isNull(noticesDTO.getQueryType())){
+ queryWrapper.eq("1","2");
+ }
+ if(noticesDTO.getQueryType().equals(Constants.ZERO)){
+ queryWrapper.eq(Notices::getStatus,Constants.ZERO);
+ queryWrapper.eq(Notices::getSendacopy,Constants.ZERO);
+ queryWrapper.eq(Notices::getUserId, noticesDTO.getMemberId());
+ } else if(noticesDTO.getQueryType().equals(Constants.ONE)){
+ queryWrapper.eq(Notices::getStatus,Constants.ONE);
+ queryWrapper.eq(Notices::getSendacopy,Constants.ZERO);
+ } else if(noticesDTO.getQueryType().equals(Constants.TWO)){
+ queryWrapper.eq(Notices::getParam3, noticesDTO.getMemberId());
+ } else if (noticesDTO.getQueryType().equals(Constants.THREE)) {
+ queryWrapper.eq(Notices::getUserId, noticesDTO.getMemberId());
+ queryWrapper.eq(Notices::getSendacopy,Constants.ONE);
+ if(Objects.nonNull(noticesDTO.getNoRead())&&Constants.equalsInteger(noticesDTO.getNoRead(),Constants.ONE)){
+ queryWrapper.eq(Notices::getReaded,Constants.ONE);
+ }
+ }else{
+ queryWrapper.eq("1","2");
+ }
+ queryWrapper.ge(noticesDTO.getStartDate() != null, Notices::getCreateDate, Utils.Date.getStart(noticesDTO.getStartDate() ));
+ queryWrapper.le(noticesDTO.getStartDate() != null, Notices::getCreateDate, Utils.Date.getEnd(noticesDTO.getStartDate() ));
+ queryWrapper.ge(noticesDTO.getEndDate() != null, Notices::getCreateDate, Utils.Date.getStart(noticesDTO.getEndDate() ));
+ queryWrapper.le(noticesDTO.getEndDate() != null, Notices::getCreateDate, Utils.Date.getEnd(noticesDTO.getEndDate() ));
+ queryWrapper.eq(Objects.nonNull(noticesDTO.getType()),Notices::getType,noticesDTO.getType());
+ queryWrapper.eq(StringUtils.isNotBlank(noticesDTO.getTitle()),Notices::getTitle,noticesDTO.getTitle());
+ queryWrapper.orderByDesc(Notices::getCreateDate);
+ PageData<Notices> pageData = PageData.from(noticesMapper.selectJoinPage(page,Notices.class, queryWrapper));
+ return pageData;
+ }
+ /**
+ * 鏍囪宸茶
+ * @param noticesId
+ */
+ @Override
+ public void signReadById(Integer noticesId){
+ if(Objects.isNull(noticesId)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ Notices notices = noticesMapper.selectById(noticesId);
+ if(Objects.isNull(notices)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(Constants.equalsInteger(notices.getSendacopy(),Constants.ONE)){
+ if(Constants.equalsInteger(Constants.ZERO,notices.getReaded())){
+ noticesMapper.update(null,new UpdateWrapper<Notices>().lambda()
+ .set(Notices::getReaded,Constants.ONE).eq(Notices::getId,notices));
+ }
+ }else{
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴妱閫佹暟鎹�,鏃犳硶杩涜鏍囪");
+ }
+ }
+
+ /**
+ * 鎵归噺鏍囪宸茶
+ * @param memberId
+ */
+ @Override
+ public void signRead(Integer memberId) {
+ noticesMapper.update(null, new UpdateWrapper<Notices>().lambda()
+ .set(Notices::getReaded, Constants.ONE)
+ .eq(Notices::getSendacopy,Constants.ONE)
+ .eq(Notices::getReaded,Constants.ZERO)
+ .eq(Notices::getUserId, memberId));
+ }
}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java
index cd86296..41eeaf0 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java
@@ -104,7 +104,7 @@
@GetMapping("/{id}")
@RequiresPermissions("business:visits:query")
public ApiResponse<Visits> findById(@PathVariable Integer id) {
- return ApiResponse.success(visitsService.findById(id));
+ return ApiResponse.success(visitsService.findById(id,null));
}
@ApiOperation("婊炵暀浜哄憳")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/ApproveTemplCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/ApproveTemplCloudController.java
index 76addf2..59dc1b8 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/ApproveTemplCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/ApproveTemplCloudController.java
@@ -96,10 +96,10 @@
return ApiResponse.success(approveTemplService.findOne(templ));
}
- @ApiOperation("鏍规嵁ID鏌ヨ")
- @GetMapping("/{id}")
- @CloudRequiredPermission("business:approvetempl:query")
- public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
- return ApiResponse.success(approveTemplService.findById(id));
- }
+// @ApiOperation("鏍规嵁ID鏌ヨ")
+// @GetMapping("/{id}")
+// @CloudRequiredPermission("business:approvetempl:query")
+// public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+// return ApiResponse.success(approveTemplService.findById(id));
+// }
}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
index 0270a01..6c0dcb7 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
@@ -80,7 +80,7 @@
@ApiOperation("鏍规嵁ID鏌ヨ")
@GetMapping("/{id}")
@CloudRequiredPermission("business:hiddendanger:query")
- public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+ public ApiResponse<HiddenDanger> findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
return ApiResponse.success(hiddenDangerService.findById(id));
}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
index 4141bb9..4dddf78 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
@@ -1,18 +1,31 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.admin.response.StagingDataVO;
import com.doumee.dao.business.model.Visits;
+import com.doumee.dao.system.dto.NoticesDTO;
+import com.doumee.dao.system.model.Notices;
+import com.doumee.dao.web.response.InternalHomeVO;
+import com.doumee.service.business.ApproveService;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.VisitsService;
+import com.doumee.service.system.NoticesService;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+
+import java.util.Objects;
/**
* Created by IntelliJ IDEA.
@@ -32,6 +45,11 @@
@Autowired
private VisitsService visitsService;
+ @Autowired
+ private NoticesService noticesService;
+
+ @Autowired
+ private ApproveService approveService;
@ApiOperation("澶撮儴鏁版嵁")
@@ -63,4 +81,39 @@
return ApiResponse.success("鎿嶄綔鎴愬姛");
}
+
+
+ @ApiOperation(value = "浠诲姟涓績澶撮儴", notes = "H5")
+ @GetMapping("/taskCenterHead")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "isDetail", value = " 鏄惁鏌ヨ璇︾粏 1鏄紱0鍚�", required = true),
+ })
+ public ApiResponse<InternalHomeVO> taskCenterHead(@RequestParam Integer isDetail,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+ return ApiResponse.success("鏌ヨ鎴愬姛",approveService.getHomeData(getLoginUser(token).getMemberId(),isDetail));
+ }
+
+
+ @ApiOperation("浠诲姟涓績鍒嗛〉")
+ @PostMapping("/taskPage")
+ public ApiResponse<PageData<Notices>> taskPage (@RequestBody PageWrap<NoticesDTO> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+ LoginUserInfo loginUserInfo = getLoginUser(token);
+ pageWrap.getModel().setMemberId(loginUserInfo.getMemberId());
+ return ApiResponse.success(noticesService.taskCanterPage(pageWrap));
+ }
+
+ @ApiOperation("鏍囪宸茶")
+ @GetMapping("/signRead")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "noticesId", value = "璁板綍涓婚敭", required = false),
+ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "signType", value = "鏍囪绫诲瀷锛�0=鍗曚釜鏍囪;1=鏍囪鍏ㄩ儴鏈", required = false),
+ })
+ public ApiResponse signRead (Integer noticesId,@RequestParam Integer signType, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+ LoginUserInfo loginUserInfo = getLoginUser(token);
+ if(Constants.equalsInteger(signType,Constants.ZERO)){
+ noticesService.signReadById(noticesId);
+ }else{
+ noticesService.signRead(loginUserInfo.getMemberId());
+ }
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
index 1b048b2..ff53508 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
@@ -6,6 +6,7 @@
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -96,6 +97,7 @@
@PostMapping("/page")
@CloudRequiredPermission("business:visits:query")
public ApiResponse<PageData<Visits>> findPage (@RequestBody PageWrap<Visits> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+ pageWrap.getModel().setMemberId(getLoginUser(token).getMemberId());
return ApiResponse.success(visitsService.findPage(pageWrap));
}
@@ -110,7 +112,8 @@
@GetMapping("/{id}")
@CloudRequiredPermission("business:visits:query")
public ApiResponse<Visits> findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
- return ApiResponse.success(visitsService.findById(id));
+ LoginUserInfo loginUserInfo = getLoginUser(token);
+ return ApiResponse.success(visitsService.findById(id,loginUserInfo.getMemberId()));
}
@ApiOperation("婊炵暀浜哄憳")
@@ -126,7 +129,9 @@
@ApiOperation(value = "璁垮鎶ュ", notes = "璁垮鎶ュ")
@PostMapping("/createVisit")
public ApiResponse createVisit(@RequestBody Visits visits,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
- visits.setMemberId(getLoginUser(token).getMemberId());
+ LoginUserInfo loginUserInfo = getLoginUser(token);
+ visits.setMemberId(loginUserInfo.getMemberId());
+ visits.setCreateMemberId(loginUserInfo.getMemberId());
visits.setReceptMemberId(visits.getMemberId());
return ApiResponse.success("鏌ヨ鎴愬姛", visitsService.visitReporting(visits));
}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
index b8d7082..eb12019 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
@@ -1,13 +1,18 @@
package com.doumee.cloud.common;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.doumee.api.BaseController;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.FtpUtil;
import com.doumee.core.utils.aliyun.ALiYunUtil;
+import com.doumee.dao.system.model.SystemDict;
+import com.doumee.dao.system.model.SystemDictData;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -26,10 +31,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
/**
* @author Eva.Caesar Liu
@@ -50,6 +52,102 @@
public static FtpUtil ftp = null;
+ @ApiOperation(value = "鎵归噺涓婁紶鏂囦欢鍒癋TP")
+ @RequestMapping(method= RequestMethod.POST,value="/uploadBatch")
+ @ResponseBody
+ public void uploadBatch(HttpServletRequest request, HttpServletResponse response, String folder) throws Exception {
+ if(Objects.isNull(folder)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ SystemDictData folderData = systemDictDataBiz.queryByCode(Constants.FTP,folder);
+ if(Objects.isNull(folderData)||StringUtils.isBlank(folderData.getCode())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐩爣鏂囦欢澶归敊璇�");
+ }
+ folder = systemDictDataBiz.queryByCode(Constants.FTP,folder).getCode();
+ String prefixPath = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode();
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("text/html;charset=UTF-8");
+ Map<String, Object> context = new HashMap<>();
+ try {
+ if(ftp == null){
+ ftp = new FtpUtil(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_HOST).getCode(),
+ Integer.parseInt(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PORT).getCode()),
+ systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_USERNAME).getCode(),
+ systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PWD).getCode());
+ }else{
+ ftp.connect();
+ }
+
+ context.put("success", true);
+ context.put("code", 200);
+ context.put("errno",0);
+ CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
+ if (multipartResovler.isMultipart(request)) {
+ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+ List<MultipartFile> fileList = multipartRequest.getFiles("file");
+ Iterator<String> it = multipartRequest.getFileNames();
+ JSONArray jsonArray = new JSONArray();
+
+ if (fileList.size() > 0) {
+ //閬嶅巻鏂囦欢鍒楄〃
+ Iterator<MultipartFile> fileIte = fileList.iterator();
+ Integer index = Constants.ONE;
+ while (fileIte.hasNext()) {
+ //鑾峰緱姣忎竴涓枃浠�
+ MultipartFile file = fileIte.next();
+ String originname = file.getOriginalFilename();
+ InputStream is = file.getInputStream();
+ String endType = originname.substring(originname.lastIndexOf("."), originname.length());
+ String date = DateUtil.getNowShortDate();
+ String fName = date + "/" + UUID.randomUUID() + endType;
+ String fileName = folder + "/" + fName;
+ boolean r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,fileList.size()));
+ if (r) {
+ JSONObject fileJSON = new JSONObject();
+ fileJSON.put("url", prefixPath + fileName);
+ fileJSON.put("imgaddr", fName);
+ fileJSON.put("imgname", fileName);
+ fileJSON.put("originname", originname);
+ jsonArray.add(fileJSON);
+ }
+ index = index + 1;
+ }
+
+ }
+
+// while (it.hasNext()) {
+// MultipartFile file = multipartRequest.getFile(it.next());
+// String originname = file.getOriginalFilename();
+// is = file.getInputStream();
+// String endType = originname.substring(originname.lastIndexOf("."),originname.length());
+// String date = DateUtil.getNowShortDate();
+// String fName = date+"/"+ UUID.randomUUID()+endType;
+// String fileName = folder+"/"+fName;
+// boolean r = ftp.uploadInputstream(is,fileName);
+// if(r){
+// JSONObject fileJSON = new JSONObject();
+// fileJSON.put("url", prefixPath+fileName);
+// fileJSON.put("imgaddr", fName);
+// fileJSON.put("imgname", fileName);
+// fileJSON.put("originname", originname);
+// jsonArray.add(fileJSON);
+// }
+// }
+ context.put("data",jsonArray);
+ }
+ } catch (Exception e) {
+ log.error("銆愪笂浼燜TP澶辫触銆�======================"+e.getMessage());
+ context.put("code", 0);
+ context.put("message", "涓婁紶澶辫触");
+ context.put("errno",0);
+ writerJson(response, context);
+ return;
+
+ }
+ writerJson(response, context);
+ return;
+ }
+
@ApiOperation(value = "涓婁紶鏂囦欢鍒癋TP")
@RequestMapping(method= RequestMethod.POST,value="/upload")
@ResponseBody
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java
index 1739bfd..e0e31ec 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java
@@ -61,11 +61,11 @@
private ApproveService approveService;
- @ApiOperation(value = "鍐呴儴浜哄憳棣栭〉", notes = "H5")
- @GetMapping("/internalHome")
- public ApiResponse<InternalHomeVO> internalHome(@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
- return ApiResponse.success("鏌ヨ鎴愬姛",approveService.getHomeData(getLoginUser(token).getMemberId()));
- }
+// @ApiOperation(value = "鍐呴儴浜哄憳棣栭〉", notes = "H5")
+// @GetMapping("/internalHome")
+// public ApiResponse<InternalHomeVO> internalHome(@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+// return ApiResponse.success("鏌ヨ鎴愬姛",approveService.getHomeData(getLoginUser(token).getMemberId()));
+// }
@ApiOperation("浠诲姟涓績")
@PostMapping("/taskCenter")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveParam.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveParam.java
index f725a46..453b324 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveParam.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveParam.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
@@ -10,6 +11,7 @@
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
+import java.util.List;
/**
* 瀹℃壒妯$増閰嶇疆淇℃伅琛�
@@ -91,4 +93,9 @@
@ExcelColumn(name="鏃犱富绠¢�夐」 0娴佺▼缁撴潫 1鐢变笂绾т富绠′唬鏇垮鏍�")
private Integer noleaderOpt;
+
+ @ApiModelProperty(value = "瀹℃壒浜哄垪琛�")
+ @TableField(exist = false)
+ private List<Member> memberList;
+
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
index bf78546..1e2dbda 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
+import com.doumee.dao.business.vo.ApproveDataVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -292,4 +293,13 @@
@ApiModelProperty(value = "绂诲満鐘舵�侊紱0=鏈鍦�", example = "1",hidden = true)
@TableField(exist = false)
private Integer levelStatus;
+
+ @ApiModelProperty(value = "鍒涘缓浜哄鍚�", example = "1")
+ @TableField(exist = false)
+ private String createMemberName;
+
+ @ApiModelProperty(value = "瀹℃壒淇℃伅鏁版嵁")
+ @TableField(exist = false)
+ private ApproveDataVO approveDateVO;
+
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/InternalHomeVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/InternalHomeVO.java
index fac3cd2..086bb3c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/InternalHomeVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/InternalHomeVO.java
@@ -13,4 +13,15 @@
private Integer taskNum;
+ @ApiModelProperty(value = "寰呭鐞嗗緟鍔炴暟閲�")
+ private Long noticeWaitNum;
+
+ @ApiModelProperty(value = "宸插鐞嗗緟鍔炴暟閲�")
+ private Long noticeDealNum;
+
+ @ApiModelProperty(value = "鎴戝彂璧风殑寰呭姙鏁伴噺")
+ private Integer noticeCreateNum;
+
+ @ApiModelProperty(value = "鎶勯�佺殑寰呭姙鏁伴噺")
+ private Long noticeCopyNum;
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
index fb8029d..8254608 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
@@ -105,7 +105,7 @@
* @param memberId
* @return
*/
- InternalHomeVO getHomeData(Integer memberId);
+ InternalHomeVO getHomeData(Integer memberId,Integer isDetail);
void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
index b89edf1..35fdec6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -79,7 +79,7 @@
* @param id 涓婚敭
* @return Visits
*/
- Visits findById(Integer id);
+ Visits findById(Integer id,Integer memberId);
/**
* 鏉′欢鏌ヨ鍗曟潯璁板綍
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 19b432d..62379b0 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
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -30,8 +31,10 @@
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.xpath.operations.Bool;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -45,6 +48,7 @@
* @date 2023/12/28 14:09
*/
@Service
+@Slf4j
public class ApproveServiceImpl implements ApproveService {
@Autowired
@@ -232,13 +236,46 @@
/**
* 鍐呴儴浜哄憳H5椤甸潰棣栭〉
* @param memberId
+ * @param isDetail 鏄惁鏌ヨ璇︾粏 1鏄紱0鍚�
* @return
*/
@Override
- public InternalHomeVO getHomeData(Integer memberId){
+ public InternalHomeVO getHomeData(Integer memberId,Integer isDetail){
InternalHomeVO internalHomeVO = new InternalHomeVO();
internalHomeVO.setHomeImg(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.HOME_IMAGE).getCode());
- internalHomeVO.setTaskNum(approveMapper.selectCount(new QueryWrapper<Approve>().lambda().eq(Approve::getChekorId,memberId).eq(Approve::getStatus,Constants.ZERO)));
+ //浠诲姟鏁版嵁
+ List<Notices> noticesList = noticesJoinMapper.
+ selectList(new QueryWrapper<Notices>().lambda()
+ .eq(Notices::getUserId,memberId).orderByDesc(Notices::getCreateDate));
+ internalHomeVO.setTaskNum(noticesList.size());
+ if(Constants.equalsInteger(Constants.ONE,isDetail)){
+ if(CollectionUtils.isNotEmpty(noticesList)){
+ //寰呮垜澶勭悊鐨勬暟鎹�
+ internalHomeVO.setNoticeWaitNum(
+ noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
+ &&Constants.equalsInteger(i.getStatus(),Constants.ZERO)
+ &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO)
+ ).count()
+ );
+ internalHomeVO.setNoticeDealNum(
+ noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
+ &&Constants.equalsInteger(i.getStatus(),Constants.ONE)
+ &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO)
+ ).count()
+ );
+
+ internalHomeVO.setNoticeCreateNum(
+ noticesJoinMapper.selectCount(new QueryWrapper<Notices>().lambda().eq(Notices::getParam3,memberId))
+ );
+
+ internalHomeVO.setNoticeCopyNum(
+ noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
+ &&Constants.equalsInteger(i.getSendacopy(),Constants.ONE)
+ ).count()
+ );
+ }
+ }
+
return internalHomeVO;
}
@@ -308,6 +345,27 @@
* @param approveList
*/
public void organizeApproveData(ApproveTempl approveTempl,List<ApproveParam> approveParamList,Member createMember,Integer businessId,List<Approve> approveList){
+
+ //鍒涘缓榛樿浜轰俊鎭�
+ Approve createUserApprove = new Approve();
+ createUserApprove.setRemark("鍙戣捣鐢宠");
+ createUserApprove.setCreateDate(new Date());
+ createUserApprove.setIsdeleted(Constants.ZERO);
+ createUserApprove.setTemplatId(approveTempl.getId());
+ createUserApprove.setChekorId(createMember.getId());
+ createUserApprove.setStatus(Constants.approveStatus.pass);
+ createUserApprove.setTitle("鍙戣捣鐢宠");
+ createUserApprove.setStatusInfo("");
+ createUserApprove.setIsEndCheck(Constants.ZERO);
+ createUserApprove.setObjId(businessId);
+ createUserApprove.setLevel(-1);
+ createUserApprove.setObjType(approveTempl.getType());
+ createUserApprove.setApproveType(Constants.TWO);
+ createUserApprove.setDriverParam(Constants.ZERO);
+ createUserApprove.setAddrParam(Constants.ZERO);
+ createUserApprove.setType(Constants.ZERO);
+ approveList.add(createUserApprove);
+
//瀹℃壒涓氬姟鏁版嵁
for (int i = 0; i < approveParamList.size(); i++) {
ApproveParam approveParam = approveParamList.get(i);
@@ -321,6 +379,24 @@
if(i==0){
if(jsonMap.isEmpty()){
title = this.createNoticesData(noticeType,businessId,title,jsonMap);
+ }
+ if(j==0){
+ //榛樿鐢熸垚涓�鏉� 鐢宠浜虹殑鏁版嵁 鏍囪鍒犻櫎鐘舵�佺敤浜庡鐞嗗埌 浠诲姟涓績锛堟垜鍙戣捣锛変娇鐢�
+ Notices notices = new Notices();
+ notices.setCreateDate(new Date());
+ notices.setIsdeleted(Constants.ONE);
+ notices.setObjId(businessId);
+ notices.setObjType(noticeType);
+ notices.setType(noticeType);
+ notices.setTitle(title);
+ notices.setParam1(JSONObject.toJSONString(jsonMap));
+ notices.setStatus(Constants.ZERO);
+ notices.setReaded(Constants.ZERO);
+ notices.setSendacopy(Constants.ZERO);
+ notices.setParam2("0");
+ notices.setParam3(createMember.getId().toString());
+ notices.setInfo("澶勭悊涓�");
+ noticesJoinMapper.insert(notices);
}
Notices notices = new Notices();
notices.setCreateDate(new Date());
@@ -336,6 +412,7 @@
notices.setReaded(Constants.ZERO);
notices.setSendacopy(Constants.ZERO);
notices.setParam2("0");
+ notices.setParam3("");
notices.setInfo("寰呭鐞�");
noticesJoinMapper.insert(notices);
}
@@ -580,7 +657,6 @@
waitModel.setApproveList(copyList);
approveDateVO.getApproveList().add(waitModel);
}
-
return approveDateVO;
}
@@ -874,7 +950,19 @@
if(!approve.getStatus().equals(Constants.ONE)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒璁板綍鐘舵�侀敊璇�!");
}
-
+ //鏍规嵁瀹℃壒璁板綍鏌ヨ 褰撳墠澶勭悊鏁版嵁瀵瑰簲鐨� 閫氱煡璁板綍
+ Integer noticeType = Constants.approveTypeToNoticeType(approve.getObjType());
+ Notices notices = noticesJoinMapper.selectOne(new QueryWrapper<Notices>().lambda()
+ .eq(Notices::getObjId,approve.getObjId())
+ .eq(Notices::getObjType,noticeType)
+ .eq(Notices::getUserId,approve.getChekorId())
+ .eq(Notices::getSendacopy,Constants.ZERO)
+ .eq(Notices::getIsdeleted,Constants.ZERO)
+ );
+ if(Objects.isNull(notices)){
+ log.info("鏈煡璇㈠埌閫氱煡璁板綍");
+ return;
+ }
//澶勭悊瀹℃壒淇℃伅
approve.setStatus(approveDTO.getStatus());
approve.setCheckInfo(approveDTO.getCheckInfo());
@@ -882,9 +970,6 @@
approve.setCheckorName(approveDTO.getLoginUserInfo().getRealname());
approve.setCheckDate(new Date());
approve.setStatusInfo(approveDTO.getStatus()==Constants.TWO?"宸插悓鎰�":approveDTO.getCheckInfo());
- Visits visits = new Visits();
- CarUseBook carUseBook = new CarUseBook();
- this.dealBusinessData(approveDTO,approve,visits,carUseBook);
//鏈骇鎵�鏈� 寰呭鎵硅褰�
List<Approve> approveList = approveJoinMapper.selectJoinList(Approve.class,
new MPJLambdaWrapper<Approve>()
@@ -894,7 +979,17 @@
.eq(Approve::getObjType,approveDTO.getObjType())
.eq(Approve::getLevel,approve.getLevel())
.eq(Approve::getStatus,Constants.ONE)
+ .eq(Approve::getType,Constants.ZERO)
.ne(Approve::getId,approve.getId())
+ );
+ //涓氬姟鏁版嵁涓嬮厤缃殑鎵�鏈夋妱閫佽褰�
+ List<Approve> approveCopyList = approveJoinMapper.selectJoinList(Approve.class,
+ new MPJLambdaWrapper<Approve>()
+ .selectAll(Approve.class)
+ .eq(Approve::getIsdeleted,Constants.ZERO)
+ .eq(Approve::getObjId,approveDTO.getObjId())
+ .eq(Approve::getObjType,approveDTO.getObjType())
+ .eq(Approve::getType,Constants.ONE)
);
//澶勭悊鏈瀹℃壒鐨勪笟鍔℃暟鎹�
approveMapper.updateById(approve);
@@ -910,17 +1005,39 @@
.eq(Approve::getObjId,approve.getObjId())
.eq(Approve::getObjType,approve.getObjType())
.ne(Approve::getId,approve.getId()));
+ //澶勭悊鎵�鏈塏otice閫氱煡涓哄凡澶勭悊
+ if(approve.getApproveType().equals(Constants.ZERO)){
+ //淇敼鑷繁鐨勯�氱煡璁板綍
+ noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda()
+ .set(Notices::getEditDate,new Date())
+ .set(Notices::getReaded,Constants.ONE)
+ .set(Notices::getParam2,approve.getStatus())
+ .eq(Notices::getId,notices.getId())
+ );
+ //淇敼 鏈鐞嗙殑 閫氱煡鏁版嵁 涓烘妱閫�
+ if (!Constants.equalsInteger(approve.getApproveType(),Constants.TWO)){
+ noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda()
+ .set(Notices::getEditDate,new Date())
+ .set(Notices::getSendacopy,Constants.ONE)
+ .set(Notices::getParam2,approve.getStatus())
+ .eq(Notices::getObjId,notices.getObjId())
+ .eq(Notices::getObjType,notices.getObjType())
+ .eq(Notices::getReaded,Constants.ZERO)
+ .ne(Notices::getId,notices.getId())
+ );
+ }
+ }
+ return;
}else{
//澶勭悊鍏朵粬涓氬姟鏁版嵁
- if((approve.getApproveType().equals(Constants.ZERO)
- || approve.getApproveType().equals(Constants.TWO)) &&approve.getIsEndCheck()==Constants.ONE){
+ if((Constants.equalsInteger(approve.getApproveType(),Constants.ZERO)
+ || Constants.equalsInteger( approve.getApproveType(),Constants.TWO)) && Constants.equalsInteger(approve.getIsEndCheck(),Constants.ONE)){
//鎴栫 / 鍗曚汉瀹� 涓� 缁堝
approveJoinMapper.update(null,new UpdateWrapper<Approve>()
.lambda()
.set(Approve::getStatus,Constants.approveStatus.otherDeal)
.in(Approve::getId,approveList.stream().map(m->m.getId()).collect(Collectors.toList())));
dealBusinessBean = true;
-
}else if((approve.getApproveType().equals(Constants.ZERO)
|| approve.getApproveType().equals(Constants.TWO)) &&approve.getIsEndCheck()!=Constants.ONE){
//鎴栫 / 鍗曚汉瀹� 闈炵粓瀹� 鍒欏紑鍚笅涓�姝ヤ笟鍔℃祦绋�
@@ -938,122 +1055,146 @@
.eq(Approve::getObjType,approve.getObjType())
.eq(Approve::getLevel,(approve.getLevel()+1))
);
- //TODO 鏇存柊娑堟伅鏁版嵁 鍙戦�佷笅涓�绾ф暟鎹秷鎭�
- }else if(approve.getApproveType().equals(Constants.ONE)&&approve.getIsEndCheck()==Constants.ONE){
- //浼氱 涓旂粓瀹�
- if(approveList.size()==Constants.ZERO){
+ }else if(approve.getApproveType().equals(Constants.ONE)){
+ //浼氱 涓旂粓瀹�
+ //鏃犱粬浜哄鎵圭殑鎯呭喌 鍒欎慨鏀规暟鎹姸鎬�
+ if(Constants.equalsInteger(approveList.size(),Constants.ZERO)&&Constants.equalsInteger(approve.getIsEndCheck(),Constants.ONE)){
dealBusinessBean = true;
}
}
+ this.passNextNotices(dealBusinessBean,notices,approve,approveList,approveCopyList);
}
-
- if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit)
- ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit)
- ||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){
- // 璁垮 涓夌被涓氬姟鏁版嵁
- visitsMapper.updateById(visits);
- if(dealBusinessBean){
- //TODO 鍙戦�佸鎵归�氳繃娑堟伅
-
- }else if(approveDTO.getStatus().equals(Constants.THREE)){
- //TODO 瀹℃壒鏈�氳繃閫氱煡
-
- }
- }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals(
- Constants.approveObjectType.unCityUseCar)){
- // 甯傚唴澶栫敤杞︾敵璇�
- if(dealBusinessBean){
- //TODO 鍙戦�佸鎵归�氳繃娑堟伅
- carUseBookMapper.updateById(carUseBook);
- }else if(approveDTO.getStatus().equals(Constants.THREE)){
- //TODO 瀹℃壒鏈�氳繃閫氱煡
-
- }
- }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){
- //TODO 鐗╂祦杞﹂绾�
-
+ //澶勭悊涓氬姟鏁版嵁
+ if(dealBusinessBean){
+ this.dealBusinessData(approveDTO,approve);
}
}
- public void passNextNotices(Boolean dealBusinessBean,Approve approve){
- //鏍规嵁瀹℃壒璁板綍鏌ヨ 閫氱煡璁板綍
- Integer noticeType = Constants.approveTypeToNoticeType(approve.getObjType());
- Notices notices = noticesJoinMapper.selectOne(new QueryWrapper<Notices>().lambda()
- .eq(Notices::getObjId,approve.getObjId())
- .eq(Notices::getObjType,noticeType)
- .eq(Notices::getUserId,approve.getChekorId())
- .eq(Notices::getSendacopy,Constants.ZERO)
- .eq(Notices::getIsdeleted,Constants.ZERO)
+ /**
+ * 澶勭悊寰呭姙淇℃伅
+ * @param dealBusinessBean 鏄惁闇�瑕佽繘琛屾洿鏂颁笟鍔℃暟鎹姸鎬�
+ * @param approve 瀹℃壒璁板綍
+ * @param approveList 鍚岀骇寰呭鎵规暟鎹�
+ */
+ public void passNextNotices(Boolean dealBusinessBean,Notices notices,Approve approve,List<Approve> approveList,List<Approve> copyList){
+ //1銆佷慨鏀硅嚜宸辩殑鏁版嵁璁板綍
+ noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda()
+ .set(Notices::getEditDate,new Date())
+ .set(Notices::getReaded,Constants.ONE)
+ .set(dealBusinessBean,Notices::getParam2,approve.getStatus())
+ .eq(Notices::getId,notices.getId())
);
- if(Objects.isNull(notices)){
- return;
- }
-
-
if(Constants.equalsInteger(approve.getApproveType(),Constants.ZERO)){
//鎴栫
- //1銆佷慨鏀硅嚜宸辩殑鏁版嵁璁板綍
-
//2銆佹洿鏂颁粬浜虹殑鍚岀骇璁板綍 涓烘妱閫�
-
+ noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda()
+ .set(Notices::getEditDate,new Date())
+ .set(Notices::getReaded,Constants.ONE)
+ .set(Notices::getSendacopy,Constants.ONE)
+ .set(dealBusinessBean,Notices::getParam2,approve.getStatus())
+ .eq(Notices::getObjId,notices.getObjId())
+ .eq(Notices::getObjType,notices.getObjType())
+ .ne(Notices::getId,notices.getId())
+ );
//3銆佸鏋滀笉鏄粓瀹$敓鎴愪笅涓�绾х殑鏁版嵁璁板綍
-
-
+ if(Constants.equalsInteger(approve.getIsEndCheck(),Constants.ZERO)&&!dealBusinessBean){
+ this.saveNextNotice(notices,approve);
+ }
}else if(Constants.equalsInteger(approve.getApproveType(),Constants.ONE)){
//浼氱
- //1銆佷慨鏀硅嚜宸辩殑鏁版嵁璁板綍
-
- //2銆佹牴鎹槸鍚︿负鏈�鍚庝竴浣嶅鎵逛汉 濡傛灉涓嶆槸 鍒欑粨鏉�
-
- //3銆� 濡傛灉鏄渶鍚庝竴浣嶅鎵逛汉 涓斾笉鏄粓瀹″紑鍚笅涓�绾ф暟鎹�
-
+ //2銆佸鏋滄槸鏈�鍚庝竴浣嶅鎵逛汉 涓斾笉鏄粓瀹″紑鍚笅涓�绾ф暟鎹�
+ if(Constants.equalsInteger(Constants.ZERO,approveList.size())){
+ if(Constants.equalsInteger(approve.getIsEndCheck(),Constants.ZERO)){
+ this.saveNextNotice(notices,approve);
+ }
+ }
}else{
//鍗曚汉绛�
- //1銆佷慨鏀硅嚜宸辩殑鏁版嵁璁板綍
-
//2銆� 鏄惁鏄粓瀹� 寮�鍚笅涓�绾ф暟鎹�
+ if(Constants.equalsInteger(approve.getIsEndCheck(),Constants.ZERO)){
+ this.saveNextNotice(notices,approve);
+ }
+ }
+ //缁堝涓氬姟 涓� 澶勭悊鏁版嵁 杩涜鎶勯�佸彂閫�
+ if (Constants.equalsInteger(approve.getIsEndCheck(),Constants.ONE) && dealBusinessBean) {
+ if(CollectionUtils.isNotEmpty(copyList)){
+ Notices copyNotices = new Notices();
+ for (Approve copyApprove:copyList) {
+ if(Objects.isNull(copyNotices)){
+ BeanUtils.copyProperties(notices,copyNotices);
+ notices.setId(null);
+ notices.setCreateDate(new Date());
+ notices.setEditDate(new Date());
+ notices.setParam2("2");
+ notices.setParam3("");
+ notices.setUserId(copyApprove.getChekorId());
+ notices.setStatus(Constants.ZERO);
+ notices.setSendacopy(Constants.ONE);
+ notices.setReaded(Constants.ZERO);
+ noticesJoinMapper.insert(notices);
+ }else{
+ notices.setId(null);
+ notices.setUserId(copyApprove.getChekorId());
+ noticesJoinMapper.insert(notices);
+ }
+ }
+ }
}
- //涓氬姟閫氳繃 淇敼瀹℃壒瀵瑰簲娑堟伅璁板綍
- if(Constants.equalsInteger(approve.getStatus(),Constants.approveStatus.pass)){
-
- }
- //
-
- //缁堝涓氬姟 鍙戦�佹妱閫�
- if (Constants.equalsInteger(approve.getIsEndCheck(),Constants.ONE)) {
-
-
-
- }
-
-
-
-
-
-
-
}
- public void dealBusinessData(ApproveDTO approveDTO,Approve approve,Visits visits,CarUseBook carUseBook){
+
+ public void saveNextNotice(Notices notices,Approve approve){
+ List<Approve> nextApproveList = approveJoinMapper.selectList(new QueryWrapper<Approve>()
+ .lambda()
+ .eq(Approve::getObjId,approve.getObjId())
+ .eq(Approve::getObjType,approve.getObjType())
+ .eq(Approve::getType,Constants.ZERO)
+ .eq(Approve::getLevel,(approve.getLevel() + Constants.ONE))
+ );
+ if(CollectionUtils.isNotEmpty(nextApproveList)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒娴佹暟鎹紓甯�");
+ }
+ Notices newNotices = new Notices();
+ for (Approve nextDealApprove:nextApproveList) {
+ if(Objects.isNull(newNotices)){
+ BeanUtils.copyProperties(notices,newNotices);
+ notices.setId(null);
+ notices.setCreateDate(new Date());
+ notices.setParam2("0");
+ notices.setParam3("");
+ notices.setEditDate(new Date());
+ notices.setUserId(nextDealApprove.getChekorId());
+ notices.setStatus(Constants.ZERO);
+ notices.setSendacopy(Constants.ZERO);
+ notices.setReaded(Constants.ZERO);
+ noticesJoinMapper.insert(notices);
+ }else{
+ notices.setId(null);
+ notices.setUserId(nextDealApprove.getChekorId());
+ noticesJoinMapper.insert(notices);
+ }
+ }
+ }
+
+ public void dealBusinessData(ApproveDTO approveDTO,Approve approve){
if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit)
||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit)
||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){
// 璁垮 涓夌被涓氬姟鏁版嵁
- visits = visitsMapper.selectById(approveDTO.getObjId());
+ Visits visits = visitsMapper.selectById(approveDTO.getObjId());
if(Objects.isNull(visits)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐢宠璁板綍");
}
visits.setStatus(approveDTO.getStatus());
visits.setEditDate(new Date());
visits.setEditor(approveDTO.getLoginUserInfo().getMemberId());
-
-
+ visitsMapper.updateById(visits);
}else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals(
Constants.approveObjectType.unCityUseCar)){
// 甯傚唴澶栫敤杞︾敵璇�
- carUseBook = carUseBookMapper.selectById(approveDTO.getObjId());
+ CarUseBook carUseBook = carUseBookMapper.selectById(approveDTO.getObjId());
if(Objects.isNull(carUseBook)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈煡璇㈠埌鐢ㄨ溅璁板綍");
}
@@ -1068,7 +1209,7 @@
}
carUseBook.setDriverId(carDriver.getId());
}
-
+ carUseBookMapper.updateById(carUseBook);
}else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){
//TODO 鐗╂祦杞﹂绾�
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java
index 83bbb7b..3f3d105 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java
@@ -17,6 +17,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -158,6 +159,12 @@
.eq(ApproveParam::getTemplId,model.getId())
.orderByAsc(ApproveParam::getLevel)
);
+ for (ApproveParam approveParam :approveParamList) {
+ if(StringUtils.isNotBlank(approveParam.getObjIds())){
+ approveParam.setMemberList(memberMapper.selectList(new QueryWrapper<Member>()
+ .lambda().eq(Member::getIsdeleted,Constants.ZERO).in(Member::getId,approveParam.getObjIds().split(","))));
+ }
+ }
model.setParamList(approveParamList);
}
return model;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
index fba319f..4c324ed 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -10,13 +10,11 @@
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.ApproveMapper;
-import com.doumee.dao.business.CarDriverMapper;
-import com.doumee.dao.business.CarUseBookMapper;
-import com.doumee.dao.business.CarsMapper;
+import com.doumee.dao.business.*;
import com.doumee.dao.business.join.ApproveJoinMapper;
import com.doumee.dao.business.join.CarUseBookJoinMapper;
import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.ApproveDataVO;
import com.doumee.dao.business.vo.DateIntervalVO;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.model.SystemUser;
@@ -27,6 +25,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -70,6 +69,9 @@
@Autowired
private CarDriverMapper carDriverMapper;
+
+ @Autowired
+ private MemberMapper memberMapper;
@Override
@@ -179,11 +181,29 @@
.eq(CarUseBook::getId,id)
.last("limit 1" );
CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper);
- model.setApproveDateVO(
- approveService.arrangeApprovedData(id,
- model.getType().equals(Constants.ZERO)?3:4,
- memberId)
- );
+ ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id,
+ model.getType().equals(Constants.ZERO)?3:4,
+ memberId);
+ List<Approve> approveList = approveDataVO.getApproveList();
+ if(Constants.equalsInteger(model.getStatus(),Constants.FOUR)){
+ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+ Member member = memberMapper.selectById(model.getCancelUser());
+ Approve approve = new Approve();
+ approve.setApproveType(Constants.ZERO);
+ approve.setCreateDate(model.getCancelTime());
+ approve.setTitle("鎾ら攢浜�");
+ approve.setStatusInfo("宸叉挙閿�");
+ approve.setStatus(Constants.FOUR);
+ approve.setType(Constants.ZERO);
+ approve.setMemberName(member.getName());
+ if(StringUtils.isNotBlank(member.getFaceImg())){
+ approve.setFaceImg(path + member.getFaceImg());
+ }
+ approve.setCheckInfo(model.getCancelInfo());
+ approveList.add(approve);
+ }
+ model.setApproveDateVO(approveDataVO);
return model;
}
@@ -419,9 +439,11 @@
//澶勭悊瀹℃壒璁板綍
approveJoinMapper.update(null,new UpdateWrapper<Approve>()
.lambda()
+ .set(Approve::getIsdeleted,Constants.ONE)
.set(Approve::getStatus,Constants.FOUR)
.set(Approve::getCheckInfo,"鐢ㄨ溅鐢宠鍙栨秷")
.in(Approve::getStatus,Constants.ZERO,Constants.ONE)
+ .in(Approve::getObjType,Constants.approveObjectType.cityUseCar,Constants.approveObjectType.unCityUseCar)
.eq(Approve::getObjId,id)
);
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
index 7b8bb07..c263aac 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -10,6 +11,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.HiddenDangerLogMapper;
import com.doumee.dao.business.HiddenDangerMapper;
@@ -17,13 +19,17 @@
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.MultifileMapper;
+import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.Multifile;
+import com.doumee.dao.system.model.Notices;
import com.doumee.service.business.HiddenDangerLogService;
import com.doumee.service.business.HiddenDangerService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.C;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -54,6 +60,9 @@
private HiddenDangerLogMapper hiddenDangerLogMapper;
+ @Autowired
+ private NoticesJoinMapper noticesJoinMapper;
+
@Override
public Integer create(HiddenDanger hiddenDanger) {
if(Objects.isNull(hiddenDanger)
@@ -67,12 +76,17 @@
){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
+ hiddenDanger.setMemberId(hiddenDanger.getLoginUserInfo().getMemberId());
hiddenDanger.setIsdeleted(Constants.ZERO);
hiddenDanger.setCreateDate(new Date());
hiddenDanger.setEditDate(new Date());
HiddenDangerParam hiddenDangerParam = hiddenDangerParamMapper.selectById(hiddenDanger.getAreaId());
if(Objects.isNull(hiddenDangerParam)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌闅愭偅鍖哄煙");
+ }
+ HiddenDangerParam hiddenDangerCate = hiddenDangerParamMapper.selectById(hiddenDanger.getCateId());
+ if(Objects.isNull(hiddenDangerCate)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌闅愭偅绫诲瀷");
}
hiddenDanger.setCreator(hiddenDanger.getLoginUserInfo().getId());
hiddenDanger.setAreaName(hiddenDangerParam.getName());
@@ -96,7 +110,7 @@
hiddenDangerLog.setObjType(Constants.ZERO);
hiddenDangerLogMapper.insert(hiddenDangerLog);
- List<Multifile> multifiles = hiddenDanger.getMultifileList();
+ List<Multifile> multifiles = hiddenDanger.getSubmitFileList();
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifiles)){
for (int i = 0; i < multifiles.size(); i++) {
Multifile multifile = multifiles.get(i);
@@ -109,6 +123,46 @@
multifileMapper.insert(multifile);
}
}
+ String title = "[闅愭偅闅忔墜鎷峕鎻愭姤浜�-"+hiddenDanger.getLoginUserInfo().getRealname();
+ //json鏁版嵁
+ Map<String,Object> jsonMap = new HashMap<>();
+ jsonMap.put("area", "鍙戠幇鍖哄煙:" + hiddenDangerParam.getName());
+ jsonMap.put("cate", "闅愭偅绫诲瀷:" + hiddenDangerCate.getName());
+ jsonMap.put("sTime", "鍙戠幇鏃堕棿:" + DateUtil.DateToStr(hiddenDanger.getSubmitTime() , "yyyy-MM-dd HH:mm"));
+ //榛樿鐢熸垚涓�鏉� 鐢宠浜虹殑鏁版嵁 鏍囪鍒犻櫎鐘舵�佺敤浜庡鐞嗗埌 浠诲姟涓績锛堟垜鍙戣捣锛変娇鐢�
+ Notices createNotices = new Notices();
+ createNotices.setCreateDate(new Date());
+ createNotices.setIsdeleted(Constants.ONE);
+ createNotices.setObjId(hiddenDanger.getId());
+ createNotices.setObjType(Constants.THREE);
+ createNotices.setType(Constants.THREE);
+ createNotices.setTitle(title);
+ createNotices.setParam1(JSONObject.toJSONString(jsonMap));
+ createNotices.setStatus(Constants.ZERO);
+ createNotices.setReaded(Constants.ZERO);
+ createNotices.setSendacopy(Constants.ZERO);
+ createNotices.setParam2("0");
+ createNotices.setParam3(hiddenDanger.getLoginUserInfo().getMemberId().toString());
+ createNotices.setInfo("澶勭悊涓�");
+ noticesJoinMapper.insert(createNotices);
+
+ //瀛樺偍澶勭悊浜虹殑閫氱煡娑堟伅
+ Notices notices = new Notices();
+ notices.setId(null);
+ notices.setCreateDate(new Date());
+ notices.setIsdeleted(Constants.ZERO);
+ notices.setTitle(title);
+ notices.setParam1(JSONObject.toJSONString(jsonMap));
+ notices.setParam2("0");
+ notices.setObjId(hiddenDanger.getId());
+ notices.setObjType(Constants.THREE);
+ notices.setType(Constants.THREE);
+ notices.setEditDate(new Date());
+ notices.setUserId(hiddenDanger.getCheckUserId());
+ notices.setStatus(Constants.ZERO);
+ notices.setSendacopy(Constants.ZERO);
+ notices.setReaded(Constants.ZERO);
+ noticesJoinMapper.insert(notices);
return hiddenDanger.getId();
@@ -307,6 +361,17 @@
hiddenDangerLog.setTitle(hiddenDanger.getStatus().equals(Constants.ONE)?"闅愭偅澶勭悊":"闅愭偅閫�鍥�");
hiddenDangerLog.setObjType(hiddenDanger.getStatus().equals(Constants.ONE)?Constants.FOUR:Constants.TWO);
hiddenDangerLogMapper.insert(hiddenDangerLog);
+ //澶勭悊寰呭姙淇℃伅
+ noticesJoinMapper.update(null,new UpdateWrapper<Notices>()
+ .lambda()
+ .set(Notices::getReaded,Constants.ONE)
+ .set(Notices::getStatus,Constants.ONE)
+ .set(Notices::getParam2,hiddenDanger.getStatus())
+ .eq(Notices::getObjId,hiddenDanger.getId())
+ .eq(Notices::getObjType,Constants.THREE)
+ .eq(Notices::getUserId,hiddenDanger.getLoginUserInfo().getMemberId())
+ );
+
}
private void isParamValid(HiddenDanger hiddenDanger) {
@@ -432,6 +497,26 @@
hiddenDangerLog.setHiddenDangerId(hiddenDanger.getId());
hiddenDangerLog.setObjType(Constants.ONE);
hiddenDangerLogMapper.insert(hiddenDangerLog);
+ Notices notices = noticesJoinMapper.selectOne(new QueryWrapper<Notices>()
+ .lambda()
+ .eq(Notices::getObjId,hiddenDanger.getId())
+ .eq(Notices::getObjType,Constants.THREE)
+ .eq(Notices::getUserId,hiddenDanger.getLoginUserInfo().getMemberId())
+ .last(" limit 1 ")
+ );
+ if(Objects.nonNull(notices)){
+ Notices newNotices = new Notices();
+ BeanUtils.copyProperties(notices,newNotices);
+ newNotices.setId(null);
+ newNotices.setCreateDate(new Date());
+ newNotices.setParam2("3");
+ newNotices.setUserId(hiddenDanger.getCheckUserId());
+ noticesJoinMapper.insert(newNotices);
+ notices.setStatus(Constants.ONE);
+ notices.setEditDate(new Date());
+ notices.setReaded(Constants.ONE);
+ noticesJoinMapper.updateById(notices);
+ }
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index c17b755..82ee127 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1112,7 +1112,7 @@
queryWrapper.selectAll(Member.class)
.selectAs(Company::getName,Member::getCompanyName)
.eq(Member::getType,Constants.TWO)
- .exists("select d.id from car_driver b where b.isdeleted=0 and b.member_id=t.id");
+ .exists("select b.id from car_driver b where b.isdeleted=0 and b.member_id=t.id");
if(null != member.getType()) {
queryWrapper.eq(Member::getType,member.getType());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 63bf0b8..7d8d473 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -266,6 +266,7 @@
//鍒涘缓鏃堕棿
visits.setCreateDate(date);
//璁垮鎶ュ
+ visits.setIsdeleted(Constants.ZERO);
visits.setType(Constants.TWO);
visits.setReceptMemberId(visitMember.getId());
visits.setStatus(Constants.VisitStatus.waitCheck);
@@ -274,6 +275,7 @@
//鍒濆鍖栬瀹俊鎭�
// initVisitInfo(visits,date);
visitsMapper.insert(visits);
+ approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId());
return visits.getId();
}
@@ -621,12 +623,12 @@
}
}
//璁垮鎶ュ
- if(visits.getType().equals(Constants.TWO)
+ if(Constants.equalsInteger(visits.getType(),Constants.TWO)
&& (StringUtils.isBlank( visits.getName())
|| StringUtils.isBlank( visits.getPhone())
- || StringUtils.isBlank( visits.getCompanyName()))
+ || StringUtils.isBlank( visits.getCompanyName())
|| StringUtils.isBlank( visits.getCarNos())
- || Objects.isNull(visits.getReceptMemberId())
+ || Objects.isNull(visits.getReceptMemberId()))
){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
}else if(visits.getType().equals(Constants.ONE) && StringUtils.isBlank(visits.getConstructionReason())){
@@ -1085,14 +1087,16 @@
}
@Override
- public Visits findById(Integer id) {
+ public Visits findById(Integer id,Integer memberId) {
MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.selectAll(Visits.class);
queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName);
queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment);
+ queryWrapper.select("t3.name",Visits::getCreateMemberName);
queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
queryWrapper.leftJoin(Company.class,Company::getErpId,Member::getErpOrgId);
+ queryWrapper.leftJoin("Member t3 on t.CREATE_MEMBER_ID=t3.id");
queryWrapper.eq(Visits::getId,id);
Visits result = visitsJoinMapper.selectJoinOne(Visits.class,queryWrapper);
@@ -1119,6 +1123,13 @@
result.setWithUserList(visitsList);
result.setPrefixUrl(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode());
+
+ result.setApproveDateVO(
+ approveService.arrangeApprovedData(id,
+ result.getType(),
+ memberId)
+ );
+
return result;
}
@@ -1147,10 +1158,9 @@
queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
- queryWrapper.eq(pageWrap.getModel().getType()!=null,Visits::getType,pageWrap.getModel().getType());
queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Visits::getType,pageWrap.getModel().getType());
queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getOpenid()),Visits::getOpenid,pageWrap.getModel().getOpenid());
- queryWrapper.eq(StringUtils.isBlank(pageWrap.getModel().getOpenid()),"1","2");
+// queryWrapper.eq(StringUtils.isBlank(pageWrap.getModel().getOpenid()),"1","2");
queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Visits::getName,pageWrap.getModel().getName())
.or().like(Visits::getPhone,pageWrap.getModel().getName()))
.eq(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Visits::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, pageWrap.getModel().getIdcardNo()))
--
Gitblit v1.9.3