From 86f1c66a999c26536c66e97363e41674e6a7141c Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 05 六月 2024 18:28:32 +0800
Subject: [PATCH] date
---
h5/pages.json | 266 ++--
h5/pages/staff/task/visitorApprove.vue | 806 ++++++++-----
h5/pages/staff/task/index.vue | 312 ++++-
admin/src/views/task/index.vue | 107 +
h5/pages/staff/task/visitorReport.vue | 517 +++++++++
h5/api/visitor.js | 7
h5/pages/staff/index.vue | 24
h5/api/staff.js | 51
admin/src/api/business/approve.js | 14
h5/pages/staff/vehicle/sendACarDetail.vue | 16
h5/pages/staff/task/vDangetAppr.vue | 1201 +++++++++++++++++++++
admin/src/api/business/index.js | 1
12 files changed, 2,739 insertions(+), 583 deletions(-)
diff --git a/admin/src/api/business/approve.js b/admin/src/api/business/approve.js
index 6efee93..4c427e6 100644
--- a/admin/src/api/business/approve.js
+++ b/admin/src/api/business/approve.js
@@ -1,8 +1,18 @@
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)
+}
diff --git a/admin/src/api/business/index.js b/admin/src/api/business/index.js
index 895083b..1948cdc 100644
--- a/admin/src/api/business/index.js
+++ b/admin/src/api/business/index.js
@@ -1,4 +1,5 @@
import request from '../../utils/request'
+export * from './approve'
// 瀹℃壒妯℃澘淇℃伅 鍙戝竷
export function approveTemplSave (data) {
diff --git a/admin/src/views/task/index.vue b/admin/src/views/task/index.vue
index d2673f6..0e66235 100644
--- a/admin/src/views/task/index.vue
+++ b/admin/src/views/task/index.vue
@@ -7,38 +7,55 @@
@clear="clear"
/>
<!-- -->
- <el-tabs v-model="activeTab">
+ <el-tabs v-model="filters.queryType">
<el-tab-pane label="寰呭鐞�" name="0">
<template #label>
<span
>寰呭鐞�
- <el-badge :value="11" class="item" type="danger"> </el-badge>
+ <el-badge
+ :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"
+ ></el-tab-pane>
+ <el-tab-pane
+ :value="headData.noticeCreateNum"
+ label="鎴戝彂璧风殑"
+ name="2"
+ ></el-tab-pane>
+ <el-tab-pane
+ :value="headData.noticeCopyNum"
+ label="鎶勯�佹垜鐨�"
+ name="3"
+ ></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="100">
+ <template v-slot="scope">
+ <span>{{ cateList[scope.row.objType].name }}</span>
+ </template>
+ </el-table-column>
<el-table-column
prop="name"
label="鎻愪氦浜�"
min-width="80"
></el-table-column>
<el-table-column
- prop="companyNamePath"
+ prop="createDate"
label="鎻愪氦鏃堕棿"
min-width="100"
></el-table-column>
@@ -66,6 +83,10 @@
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
import TaskDetail from './taskDetail.vue'
+import {
+ taskCenterHead,
+ taskCenterPage
+} from '@/api'
export default {
components: {
TaskDetail,
@@ -75,18 +96,25 @@
data () {
return {
isShowDetail: false,
- activeTab: '0',
- filters: {},
+ filters: {
+ queryType: 0
+ },
queryFormConfig: {
formItems: [
{
- filed: 'taskType',
+ filed: 'type',
type: 'select',
label: '浠诲姟绫诲瀷',
- options: []
+ options: [
+ { label: '璁垮鐢宠', value: 0 },
+ { label: '璁垮鎶ュ', value: 1 },
+ { label: '鐢ㄨ溅鐢宠', value: 2 },
+ { label: '闅愭偅闅忔墜鎷�', value: 3 },
+ { label: '鐗╂祦杞︾敵璇�', value: 4 }
+ ]
},
{
- filed: 'status',
+ filed: 'selDate',
type: 'daterange',
label: ''
}
@@ -102,9 +130,22 @@
capacity: 10,
page: 1
},
- list: [{}],
- total: 0
+ 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 () {
@@ -113,7 +154,33 @@
this.$refs.DetailRef.isShowModal = true
})
},
- getList (page) { },
+ getList (page) {
+ const { filters, pagination } = this
+ if (filters.selDate && filters.length > 0) {
+ filters.startDate = filters.selDate[0]
+ filters.endDate = filters.selDate[1]
+ } else {
+ filters.startDate = null
+ filters.endDate = null
+ }
+ taskCenterPage({
+ model: { ...filters },
+ ...pagination
+ }).then(res => {
+ console.log('res', res)
+ this.dataList = res.records || []
+ this.dataList.forEach(i => {
+ i.param1 = JSON.parse(i.param1)
+ })
+ })
+ },
+ getHeadData () {
+ taskCenterHead({
+ isDetail: '1'
+ }).then(res => {
+ this.headData = res
+ })
+ },
clear () { },
handleSizeChange (capacity) {
this.pagination.capacity = capacity
diff --git a/h5/api/staff.js b/h5/api/staff.js
index 093a0b4..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({
@@ -150,7 +164,7 @@
method: 'get'
})
}
-// 鏌ヨ杞﹁締 娲捐溅璁板綍 瀹℃壒
+// 瀹℃壒
export const carUseBookAppr = (data) => {
return http({
url: 'visitsAdmin/cloudService/business/approve/approved',
@@ -173,4 +187,21 @@
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/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/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/task/index.vue b/h5/pages/staff/task/index.vue
index febd30f..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 @click="statusClick()" class="box_head_item active">寰呭鐞�</view>
- <view @click="statusClick()" class="box_head_item">宸插鐞�</view>
- <view @click="statusClick()" class="box_head_item">鎴戝彂璧风殑</view>
- <view @click="statusClick()" 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,68 +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: 10,
- page: 1
+ capacity: 20,
+ page: 0
},
+ 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 = 1
+ 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, search } = this
pagination.page++
- taskCenter({
+ stagingTaskPage({
...pagination,
model: {
...search
}
}).then(res => {
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
}
}
@@ -286,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;
@@ -302,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;
}
@@ -311,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 {
@@ -421,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..27aee4d 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..024544b
--- /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/sendACarDetail.vue b/h5/pages/staff/vehicle/sendACarDetail.vue
index 8ffdd4c..e266b61 100644
--- a/h5/pages/staff/vehicle/sendACarDetail.vue
+++ b/h5/pages/staff/vehicle/sendACarDetail.vue
@@ -119,9 +119,11 @@
</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 class="btn agree" @click="isShowBack = true">鎾ら攢鐢ㄨ溅</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>
<!-- 鎾ら攢 -->
@@ -155,7 +157,7 @@
>
<view class="appr_modal">
<view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
- <view class="line" @click="isShowDrive = true">
+ <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" />
@@ -163,7 +165,7 @@
<textarea
v-model="param.checkInfo"
:placeholder="
- param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑锛岄潪蹇呭~'
+ param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑锛屽繀濉�'
"
placeholder-class="placeholder9"
/>
@@ -187,7 +189,7 @@
</template>
<script>
-import { carUseBookDetail, carUseBookAppr, driveListPos, carUseBookBack } from '@/api'
+import { carUseBookDetail, carUseBookAppr, driveListPost, carUseBookBack } from '@/api'
export default {
data() {
return {
@@ -196,6 +198,7 @@
backParam: {},
isShowDrive: false,
id: '',
+ appr: '',
info: {},
param: {
status: ''
@@ -206,6 +209,7 @@
},
onLoad(option) {
this.id = option.id
+ this.appr = option.appr || ''
this.getDetail()
},
methods: {
--
Gitblit v1.9.3