From dfba7e1ef745a0e1f03bc596855c350067b8bbd2 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 18 十月 2024 18:21:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
h5/static/home/ic_kaoqin@3x.png | 0
h5/pages/staff/vehicle/shiwai.vue | 17
pda/unpackage/res/icons/40x40.png | 0
h5/pages/staff/vehicle/sendACar.vue | 17
h5/pages/staff/vehicle/shinei.vue | 2
admin/src/api/system/sms.js | 17
admin/src/components/business/OperaPlatformApproveTemplWindow.vue | 20
admin/src/views/task/visReportDetail.vue | 32
h5_meeting/unpackage/release/apk/会议室.apk | 0
admin/src/components/common/CommonHeader.vue | 116 +
h5/pages/staff/memberSel.vue | 5
pda/pages/index/center.vue | 11
admin/src/components/system/role/OperaSystemRoleDataWindow.vue | 84
h5/manifest.json | 40
pda/static/staff/liucheng_success@2x.png | 0
h5/pages/staff/meetingSubOrder.vue | 2
pda/static/ic_refused@2x.png | 0
pda/unpackage/res/icons/80x80.png | 0
pda/unpackage/res/icons/144x144.png | 0
h5/pages/staff/index.vue | 186 +-
h5/pages/staff/meetingSel.vue | 5
admin/src/components/common/GlobalAlertWindow.vue | 12
pda/static/staff/ic_chaosong@2x.png | 0
admin/src/views/business/approvalReport.vue | 263 +--
h5/static/home/ic_yongcheshenqing@3x.png | 0
pda/pages/index/login.vue | 4
pda/unpackage/res/icons/96x96.png | 0
h5/static/home/ic_xiugaimima@3x.png | 0
pda/unpackage/res/icons/167x167.png | 0
h5/pages/staff/task/index.vue | 11
admin/src/views/platform/index.vue | 22
h5/pages/staff/vehicle/sendACarDetail.vue | 1144 ++++++++--------
pda/unpackage/res/icons/1024x1024.png | 0
pda/unpackage/res/icons/72x72.png | 0
admin/src/views/task/dangetDetail.vue | 3
pda/unpackage/res/icons/192x192.png | 0
pda/unpackage/res/icons/152x152.png | 0
pda/api/index.js | 8
h5/static/home/ic_paichejilu@3x.png | 0
h5/static/home/ic_yinhuansuishoupai@3x.png | 0
admin/src/views/business/approvalConfiguration.vue | 265 +--
pda/pages.json | 7
h5/static/home/ic_huiyishiguanli@3x.png | 0
admin/src/components/system/role/PermissionConfigWindow.vue | 35
admin/src/components/operation/OperCarUseBookParamWindow.vue | 39
h5/pages/staff/task/visitorApprove.vue | 3
pda/unpackage/res/icons/87x87.png | 0
pda/pages/index/queueup.vue | 6
h5/pages/staff/task/driver.vue | 1
pda/unpackage/res/icons/58x58.png | 0
h5/static/home/ic_yuyuehuiyishi@3x.png | 0
admin/src/components/business/OperaCarUseBookWindow.vue | 242 ++-
pda/unpackage/res/icons/20x20.png | 0
admin/src/views/task/visSubDetail.vue | 2
admin/src/views/task/driverDetail.vue | 35
admin/src/views/login.vue | 91
h5/pages/staff/task/visitorReport.vue | 3
pda/unpackage/res/icons/180x180.png | 0
h5/static/home/ic_fangkebaobei@3x.png | 0
pda/unpackage/res/icons/29x29.png | 0
admin/src/views/operation/serviceCar/apprConfig.vue | 267 +--
h5/static/home/ic_wodehuiyi@3x.png | 0
pda/pages/index/SubDetail.vue | 466 +++++++
pda/unpackage/res/icons/120x120.png | 0
pda/static/staff/ic_shenpiren@2x.png | 0
pda/static/staff/liucheng_fail@2x.png | 0
pda/static/ic_passed@2x.png | 0
h5/static/home/ic_renwuzhongxin@3x.png | 0
admin/src/views/task/index.vue | 5
pda/unpackage/res/icons/60x60.png | 0
admin/src/views/system/publicMsg.vue | 159 ++
admin/src/components/business/OperaHiddenDangerWindow.vue | 3
pda/unpackage/release/apk/__UNI__8789FB4__20241018164933.apk | 0
pda/unpackage/res/icons/76x76.png | 0
h5/App.vue | 13
h5/pages/staff/vehicle/applePeo.vue | 4
pda/manifest.json | 197 +-
admin/src/views/meeting/components/OperaBookingsWindow.vue | 3
pda/unpackage/release/apk/pda.apk | 0
79 files changed, 2,295 insertions(+), 1,572 deletions(-)
diff --git a/admin/src/api/system/sms.js b/admin/src/api/system/sms.js
index 9a34d4d..6c3eedb 100644
--- a/admin/src/api/system/sms.js
+++ b/admin/src/api/system/sms.js
@@ -16,3 +16,20 @@
}
})
}
+
+// 鍏紬鍙烽�氱煡 鍒嗛〉鍒楄〃
+export function getH5List (data) {
+ return request.post('/visitsAdmin/cloudService/business/wxNoticeConfig/page', data)
+}
+// 鍏紬鍙烽�氱煡 鐘舵�佹洿鏂�
+export function H5StatusUpdate (data) {
+ return request.post('/visitsAdmin/cloudService/business/wxNoticeConfig/updateById', data)
+}
+// 鍏紬鍙烽�氱煡 鎵归噺鐘舵�佹洿鏂�
+export function H5StatussUpdate (data) {
+ return request.get('/visitsAdmin/cloudService/business/wxNoticeConfig/updateStatus/batch', {
+ params: {
+ ...data
+ }
+ })
+}
\ No newline at end of file
diff --git a/admin/src/components/business/OperaCarUseBookWindow.vue b/admin/src/components/business/OperaCarUseBookWindow.vue
index 8321ae4..e1afa43 100644
--- a/admin/src/components/business/OperaCarUseBookWindow.vue
+++ b/admin/src/components/business/OperaCarUseBookWindow.vue
@@ -1,18 +1,14 @@
<template>
- <GlobalWindow
- :title="title"
- :visible.sync="visible"
- @confirm="confirm"
- >
+ <GlobalWindow :title="title" :visible.sync="visible" @confirm="confirm">
<div class="modal_wrap">
<div class="modal_content">
<div class="header">
<div class="left">
<div class="h1">鍏姟杞︾敵璇�</div>
- <div class="time">鎻愪氦鏃堕棿锛歿{model.createDate}}</div>
+ <div class="time">鎻愪氦鏃堕棿锛歿{ model.createDate }}</div>
</div>
- <span class="right" v-if="model.status === 0">鐢宠涓�</span>
- <span class="right" v-if="model.status === 1">瀹℃壒涓�</span>
+ <span class="right" v-if="model.status === 0">鐢宠涓�</span>
+ <span class="right" v-if="model.status === 1">瀹℃壒涓�</span>
<span class="right" style="background:#53b76f " v-if="model.status === 2">瀹℃壒閫氳繃</span>
<span class="right" style="background:#dc362e " v-if="model.status === 3">瀹℃壒涓嶉�氳繃</span>
<span class="right" style="background:#B2B2B2; " v-if="model.status === 4">宸叉挙閿�</span>
@@ -22,86 +18,98 @@
<div class="list">
<div class="item" style="width: 100%">
<div class="label">鐢宠浜�</div>
- <div class="value">{{model.memberName || ''}} {{model.memberPhone || ''}} ({{model.companyName || ''}})</div>
+ <div class="value">{{ model.memberName || '' }} {{ model.memberPhone || '' }} ({{ model.companyName || '' }})
+ </div>
</div>
<div class="item">
<div class="label">鐢宠杞﹁締</div>
- <div class="value">{{model.carCode || ''}}</div>
+ <div class="value">{{ model.carCode || '' }}</div>
</div>
<div class="item">
<div class="label">鍙告満淇℃伅</div>
- <div class="value" v-if="model.driverId !=null">{{model.driverName || ''}} {{model.driverPhone || ''}}</div>
- <div class="value" v-if="model.driverId ==null">鏈寚娲�</div>
+ <div class="value" v-if="model.driverId != null">{{ model.driverName || '' }} {{ model.driverPhone || '' }}
+ </div>
+ <div class="value" v-if="model.driverId == null">鏈寚娲�</div>
</div>
- <div class="item" >
- <div class="label">鐢ㄨ溅浜嬬敱</div>
- <div class="value">{{model.content}}</div>
- </div>
+ <div class="item">
+ <div class="label">鐢ㄨ溅浜嬬敱</div>
+ <div class="value">{{ model.content }}</div>
+ </div>
<div class="item">
<div class="label">涔樿溅浜哄憳</div>
- <div class="value">{{model.memberNames || ''}}</div>
+ <div class="value">{{ model.memberNames || '' }}</div>
</div>
<div class="item">
<div class="label">鐩殑鍦扮被鍒�</div>
<div class="value status-green" v-if="model.type == 0">銆愬競鍐呯敤杞︺��</div>
- <div class="value status-red" v-if="model.type == 1">銆愬競澶栫敤杞︺��</div>
+ <div class="value status-red" v-if="model.type == 1">銆愬競澶栫敤杞︺��</div>
</div>
<div class="item">
<div class="label">鐩殑鍦�</div>
- <div class="value">{{model.addr || ''}}</div>
+ <div class="value">{{ model.addr || '' }}</div>
</div>
<div class="item">
<div class="label">棰勮鍑哄彂鏃堕棿</div>
- <div class="value">{{model.planUseDate || ''}}</div>
+ <div class="value">{{ model.planUseDate || '' }}</div>
</div>
<div class="item">
<div class="label">鐢ㄨ溅鏃舵</div>
- <div class="value">濮�:{{model.startTime || ''}}<br>姝�:{{model.endTime || ''}}</div>
+ <div class="value">濮�:{{ model.startTime || '' }}<br>姝�:{{ model.endTime || '' }}</div>
</div>
</div>
</div>
</div>
<div class="side">
<div class="side_title">瀹℃壒娴佺▼</div>
- <div class="list" v-if="model.approveDateVO !=null && model.approveDateVO.approveList !=null">
- <div class="item" v-for="(item,index) in model.approveDateVO.approveList" :key="item.id">
- <div class="separate" v-if=" (index < model.approveDateVO.approveList.length-1)"></div>
+ <div class="list" v-if="
+ model.approveDateVO != null && model.approveDateVO.approveList != null
+ ">
+ <div class="item" v-for="(item, index) in model.approveDateVO.approveList" :key="item.id">
+ <div class="separate" v-if="index < model.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="" />
+ <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 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="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 style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
+ 锛�<span :class="{ padding: item.statusInfo == '澶勭悊涓�' || item.status == '1' }">{{
+ item.statusInfo || ""
+ }}</span>锛�
</div>
</div>
</div>
</div>
</div>
- <div v-if="item.approveType != 1 && item.checkInfo !=null && item.checkInfo !=''" class="remark">
- {{ item.checkInfo || '' }}
+ <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 v-if="item.approveType == 0 || item.type == 1 || 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>
+ <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>
@@ -109,38 +117,27 @@
</div>
</div>
<!-- -->
- <template v-slot:footer>
- <el-button @click="agreeOpen" type="primary" v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 " class="status-red">鍚屾剰</el-button>
- <el-button @click="jectOpen" type="danger" v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 " >鎷掔粷</el-button>
- <el-button @click="visible=false">杩斿洖</el-button>
+ <template v-slot:footer>
+ <el-button @click="agreeOpen" type="primary"
+ v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1"
+ class="status-red">鍚屾剰</el-button>
+ <el-button @click="jectOpen" type="danger"
+ v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1">鎷掔粷</el-button>
+ <el-button @click="visible = false">杩斿洖</el-button>
</template>
- <el-dialog
- append-to-body
- title="鍚屾剰鐢宠"
- style="text-align: center"
- class="dialogCl"
- :visible.sync="isShowProblem"
- width="480px"
- >
- <el-form :model="dealForm" :rules="rules" ref="dealForm" >
+ <el-dialog append-to-body title="鍚屾剰鐢宠" style="text-align: center" class="dialogCl" :visible.sync="isShowProblem"
+ width="480px">
+ <el-form :model="dealForm" :rules="rules" ref="dealForm">
<!-- <el-form-item label="娲捐溅鍙告満" prop="driverId" required v-if="model.approveDateVO!=null && model.approveDateVO.driverParam === 1"> -->
- <el-form-item label="娲捐溅鍙告満" prop="driverId" v-if="model.approveDateVO!=null && model.approveDateVO.driverParam == 1">
- <el-select v-model="dealForm.driverId" style="width: 300px" filterable clearable placeholder="璇烽�夋嫨娲鹃仯鍙告満">
- <el-option
- v-for="item in memberList"
- :key="item.id"
- :label="item.name+'-'+item.phone"
- :value="item.id">
+ <el-form-item label="娲捐溅鍙告満" prop="driverId"
+ v-if="model.approveDateVO != null && model.approveDateVO.driverParam == 1">
+ <el-select v-model="dealForm.driverId" style="width: 300px" filterable clearable placeholder="璇烽�夋嫨娲鹃仯鍙告満">
+ <el-option v-for="item in memberList" :key="item.id" :label="item.name + '-' + item.phone" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="鍚屾剰璇存槑">
- <el-input
- type="textarea"
- placeholder="璇峰~鍐欒鏄�"
- :rows="4"
- v-model="dealForm.checkInfo"
- />
+ <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="dealForm.checkInfo" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@@ -148,26 +145,15 @@
<el-button type="primary" :loading="dealing" @click="dealDo">纭畾</el-button>
</span>
</el-dialog>
- <el-dialog
- append-to-body
- title="鎷掔粷鐢宠"
- style="text-align: center"
- class="dialogCl"
- :visible.sync="isBackProblem"
- width="600px"
- >
- <el-form :model="backForm" ref="backForm" label-width="100px">
+ <el-dialog append-to-body title="鎷掔粷鐢宠" style="text-align: center" class="dialogCl" :visible.sync="isBackProblem"
+ width="600px">
+ <el-form :model="backForm" ref="backForm" label-width="100px">
<el-form-item label="鎷掔粷璇存槑">
- <el-input
- type="textarea"
- placeholder="璇峰~鍐欒鏄�"
- :rows="4"
- v-model="backForm.checkInfo"
- />
+ <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="isBackProblem= false">鍙栨秷</el-button>
+ <el-button @click="isBackProblem = false">鍙栨秷</el-button>
<el-button type="primary" :loading="dealing" @click="backDo">纭畾</el-button>
</span>
</el-dialog>
@@ -184,12 +170,12 @@
name: 'OperaCarUseBookWindow',
components: { GlobalWindow },
extends: BaseOpera,
- data () {
+ data() {
return {
title: '鍏姟杞︾敵璇�',
visible: false,
dataId: null,
- model: { },
+ model: {},
dealing: false,
isShowProblem: false,
isBackProblem: false,
@@ -209,14 +195,14 @@
computed: {
...mapState(['userInfo'])
},
- created () {
+ created() {
this.config({
api: '/business/carUseBook',
'field.id': 'id'
})
},
methods: {
- dealDo () {
+ dealDo() {
this.$refs.dealForm.validate((valid) => {
if (!valid) {
return
@@ -242,18 +228,18 @@
})
})
},
- agreeOpen () {
+ agreeOpen() {
this.isShowProblem = true
this.$set(this.dealForm, 'checkInfo', '')
this.loadMemberList()
},
- jectOpen () {
+ jectOpen() {
this.isBackProblem = true
this.backForm = {
checkInfo: null
}
},
- backDo () {
+ backDo() {
this.$refs.backForm.validate((valid) => {
if (!valid) {
return
@@ -275,7 +261,7 @@
})
})
},
- open (title, target) {
+ open(title, target) {
this.title = title
this.visible = true
this.model = {}
@@ -292,14 +278,26 @@
this.getDetail()
})
},
- getDetail () {
+ getDetail() {
this.api.detail(this.dataId)
.then(res => {
this.model = res
+ if (this.model.approveDateVO && this.model.approveDateVO.approveList.length > 0) {
+ this.model.approveDateVO.approveList.forEach(item => {
+ if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.status = item.approveList[0].status
+ item.approveList = []
+ }
+ })
+ }
this.dealForm.driveId = res.driveId
})
},
- loadMemberList () {
+ loadMemberList() {
driveList({}).then(res => {
this.memberList = res
})
@@ -309,6 +307,8 @@
</script>
<style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
+
.upload_box {
width: 84px;
height: 84px;
@@ -320,14 +320,17 @@
align-items: center;
color: #999999;
border: 1px solid #e4e4e4;
+
.icon {
font-size: 24px;
}
+
.text {
font-size: 12px;
}
}
-.side_title{
+
+.side_title {
font-weight: 600;
font-size: 18px;
color: #111111;
@@ -335,9 +338,11 @@
margin-left: 20px;
margin-top: 20px;
}
+
.modal_wrap {
display: flex;
height: 100%;
+
.modal_content {
flex: 1;
padding: 0px 30px;
@@ -352,6 +357,7 @@
margin-bottom: 20px;
margin-top: 30px;
}
+
.info {
.list {
display: flex;
@@ -361,6 +367,7 @@
display: flex;
width: 40%;
margin-bottom: 20px;
+
&:nth-of-type(2n) {
width: 60%;
}
@@ -410,20 +417,24 @@
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;
@@ -441,17 +452,20 @@
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);
+ height: calc(100% - 30px);
top: 49px;
}
+
.avatar {
width: 40px;
height: 40px;
@@ -459,75 +473,98 @@
margin: 0 12px 0 16px;
//border: 1px solid;
}
- .childList{
+
+ .childList {
display: flex;
flex-wrap: wrap;
margin-left: 100px;
}
+
.company {
font-size: 13px;
color: #888888;
+
.status {
- color: #00ba67;
+ color: $primaryColor;
}
}
- .m_content{
+
+ .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{
+
+ .iconnew {
width: 24px;
height: 24px;
}
+
.icon3 {
position: relative;
z-index: 11;
- color:gray;
+ color: gray;
font-size: 24px;
}
+
.content {
flex: 1;
+
.line {
display: flex;
justify-content: space-between;
align-content: center;
margin-bottom: 6px;
+
+ .status {
+ color: #888888;
+ }
+
+ .padding {
+ color: $primaryColor;
+ }
+
.name {
font-weight: 600;
font-size: 16px;
color: #111111;
}
+
.time {
color: #888888;
}
}
}
}
+
.remark {
background: #f7f7f7;
border-radius: 4px;
@@ -535,7 +572,6 @@
color: #666666;
margin-left: 100px;
}
-
}
}
}
diff --git a/admin/src/components/business/OperaHiddenDangerWindow.vue b/admin/src/components/business/OperaHiddenDangerWindow.vue
index 6937591..694ad5b 100644
--- a/admin/src/components/business/OperaHiddenDangerWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerWindow.vue
@@ -551,6 +551,7 @@
</script>
<style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
.side_title{
font-weight: 600;
font-size: 18px;
@@ -748,7 +749,7 @@
font-size: 13px;
color: #888888;
.status {
- color: #00ba67;
+ color: $primaryColor;
}
}
}
diff --git a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
index b9c8038..47520d4 100644
--- a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
+++ b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
@@ -82,7 +82,7 @@
<!-- 鎶勯�佷汉 -->
<template v-if="apprList[activeIndex].type == '1'">
<div class="config_data_item_reviewed_content">
- <div v-for="(mem,memIndex) in apprList[activeIndex].objIds" :key="mem.id"
+ <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id"
class="config_data_item_reviewed_content_item">
<span>{{ mem.name }}</span>
<i @click="memDel(memIndex)" class="el-icon-close"></i>
@@ -163,7 +163,7 @@
">
浼佷笟缁勭粐鏋舵瀯
</div>
- <div style="width: 100%; height: 100%; overflow-y: scroll">
+ <div style="width: 100%; max-height: 560px; overflow-y: scroll">
<Tree :list="companyTree" :defaultProps="{
name: 'name',
status: 'fsStatus',
@@ -172,7 +172,7 @@
}" @callback="callback" />
</div>
</div>
- <el-transfer filterable :titles="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
+ <el-transfer filterable :titles="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
</el-transfer>
</div>
@@ -207,7 +207,7 @@
activeType: '6',
subLoading: false,
apprList: [
- { remark: '瀹℃壒浜�', active: false,approveType: 0, memberType: 1, type: '1', objIds: [] },
+ { remark: '瀹℃壒浜�', active: false, approveType: 0, memberType: 1, type: '1', objIds: [] },
{ remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
],
activeIndex: 0,
@@ -230,7 +230,7 @@
this.getfindCompanyTreePage()
this.apprList = [
{ remark: '瀹℃壒浜�', active: false, type: '0', memberType: 1, objIds: [] },
- { remark: '鎶勯�佷汉', active: false,approveType: 0, type: '1', objIds: [] }
+ { remark: '鎶勯�佷汉', active: false, approveType: 0, type: '1', objIds: [] }
]
this.param = {}
this.searchForm = {}
@@ -313,7 +313,7 @@
this.activeIndex = 0
},
handleAddAppr() {
- this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�',approveType: 0, active: false, memberType: 1, type: 0, objIds: [] })
+ this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, memberType: 1, type: 0, objIds: [] })
// this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
},
// 鑾峰彇缁勭粐鏍�
@@ -338,11 +338,11 @@
erpOrgId: '',
hasFace: '',
hkStatus: '',
- includeChild: false,
+ includeChild: true,
type: 2
},
page: 1,
- capacity: 30
+ capacity: 300
}).then(res => {
this.memberList = res.records || []
this.memberList.forEach(item => {
@@ -658,10 +658,12 @@
display: flex;
justify-content: center;
align-items: center;
- ::v-deep .el-transfer-panel{
+
+ ::v-deep .el-transfer-panel {
flex: 1;
height: 100%;
}
+
::v-deep .el-transfer-panel__body {
height: 500px;
}
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index cab4be2..f72b38a 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -19,61 +19,35 @@
<el-dropdown v-if="isLogined" trigger="click">
<span class="el-dropdown-link">
<!-- <img v-if="userInfo != null" :src="userInfo.avatar == null ? `${require('@/assets/avatar/man.png')}` : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> -->
- <img
- v-if="userInfo != null"
- style="width: 30px !important"
- src="@/assets/avatar/man.png"
- alt=""
- />{{ userInfo | displayName
+ <img v-if="userInfo != null" style="width: 30px !important" src="@/assets/avatar/man.png" alt="" />{{
+ userInfo | displayName
}}<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
- <el-dropdown-item @click.native="changePwd"
- >淇敼瀵嗙爜</el-dropdown-item
- >
+ <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
<el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<!-- 淇敼瀵嗙爜 -->
- <GlobalAlertWindow
- title="淇敼瀵嗙爜"
- :visible.sync="visible.changePwd"
- @confirm="confirmChangePwd"
- @close="visible.changePwd = false"
- >
- <el-form
- :model="changePwdData.form"
- ref="changePwdDataForm"
- :rules="changePwdData.rules"
- >
+ <GlobalAlertWindow title="淇敼瀵嗙爜" :visible.sync="visible.changePwd"
+ :showClose="!userInfo.needChangePwd || userInfo.needChangePwd == '1'"
+ :showCancel="!userInfo.needChangePwd || userInfo.needChangePwd == '1'" @confirm="confirmChangePwd"
+ @close="visible.changePwd = false">
+ <el-form :model="changePwdData.form" ref="changePwdDataForm" :rules="changePwdData.rules">
<el-form-item label="鍘熷瀵嗙爜" prop="oldPwd" required>
- <el-input
- v-model="changePwdData.form.oldPwd"
- type="password"
- placeholder="璇疯緭鍏ュ師濮嬪瘑鐮�"
- maxlength="30"
- show-password
- ></el-input>
+ <el-input v-model="changePwdData.form.oldPwd" type="password" placeholder="璇疯緭鍏ュ師濮嬪瘑鐮�" maxlength="30"
+ show-password></el-input>
</el-form-item>
<el-form-item label="鏂板瘑鐮�" prop="newPwd" required>
- <el-input
- v-model="changePwdData.form.newPwd"
- type="password"
- placeholder="璇疯緭鍏ユ柊瀵嗙爜"
- maxlength="30"
- show-password
- ></el-input>
+ <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛屽瘑鐮侀渶鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ" maxlength="20"
+ show-password></el-input>
</el-form-item>
+ <!-- <div style="font-size: 12px;color:#999999">瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ</div> -->
<el-form-item label="纭鏂板瘑鐮�" prop="confirmPwd" required>
- <el-input
- v-model="changePwdData.form.confirmPwd"
- type="password"
- placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜"
- maxlength="30"
- show-password
- ></el-input>
+ <el-input v-model="changePwdData.form.confirmPwd" type="password" placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜" maxlength="20"
+ show-password></el-input>
</el-form-item>
</el-form>
</GlobalAlertWindow>
@@ -119,7 +93,8 @@
{ required: true, message: '璇疯緭鍏ュ師濮嬪瘑鐮�' }
],
newPwd: [
- { required: true, message: '璇疯緭鍏ユ柊瀵嗙爜' }
+ { required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur' },
+ { validator: this.validatePassword, trigger: 'blur' },
],
confirmPwd: [
{ required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜' }
@@ -133,6 +108,13 @@
// title () {
// return this.$route.meta.title
// }
+ },
+ mounted() {
+ // console.log('userInfo',this.userInfo);
+ if (!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0') {
+ // this.visible.changePwd = true
+ }
+
},
filters: {
// 灞曠ず鍚嶇О
@@ -155,9 +137,29 @@
this.$refs.changePwdDataForm.resetFields()
})
},
- getHeaderNav(type){
+ validatePassword(rule, value, callback) {
+ if (!value) {
+ callback(new Error('璇疯緭鍏ュ瘑鐮�'))
+ } else {
+ const lengthValid = /^.{6,20}$/.test(value)
+ const hasLetter = /[a-zA-Z]/.test(value)
+ const hasNumber = /[0-9]/.test(value)
+ const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value)
+
+ const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length
+
+ if (!lengthValid) {
+ callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�'))
+ } else if (typesCount < 2) {
+ callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ'))
+ } else {
+ callback() // 楠岃瘉閫氳繃
+ }
+ }
+ },
+ getHeaderNav(type) {
getAppHeaderNav(type).then(res => {
- window.open(res, "_blank");
+ window.open(res, "_blank")
})
},
// 纭畾淇敼瀵嗙爜
@@ -185,7 +187,7 @@
this.visible.changePwd = false
})
.catch(e => {
- // this.$tip.apiFailed(e)
+ // this.$tip.apiFailed(e)
})
.finally(() => {
this.isWorking.changePwd = false
@@ -211,15 +213,18 @@
<style scoped lang="scss">
@import "@/assets/style/variables.scss";
+
.common-header {
background-color: #2080f7;
}
-.list{
+
+.list {
flex: 1;
display: flex;
align-items: center;
margin-left: 60px;
- .item{
+
+ .item {
margin-right: 40px;
font-size: 16px;
font-weight: 400;
@@ -229,16 +234,19 @@
justify-content: flex-start;
height: 40px;
cursor: pointer;
- .linellae{
+
+ .linellae {
width: 64px;
height: 2px;
background: #FFFFFF;
}
}
- .active{
+
+ .active {
font-weight: 500;
}
}
+
.header {
overflow: hidden;
// background: #fff;
@@ -259,9 +267,11 @@
color: #fff;
display: flex;
align-items: center;
- .title{
+
+ .title {
width: 200px;
}
+
// display: inline;
.title-en {
font-size: 11px;
@@ -269,6 +279,7 @@
color: rgb(202, 214, 238);
}
}
+
.user {
width: 212px;
box-sizing: border-box;
@@ -277,10 +288,13 @@
background: url("../../assets/images/top_ic_bolang@2x.png") no-repeat;
flex-shrink: 0;
text-align: right;
+ cursor: pointer;
+
.el-dropdown {
top: 2px;
color: #fff;
}
+
img {
width: 32px;
position: relative;
@@ -289,9 +303,11 @@
}
}
}
+
// 涓嬫媺鑿滃崟妗�
.el-dropdown-menu {
width: 140px;
+
.el-dropdown-menu__item:hover {
background: #e3edfb;
color: $primary-color;
diff --git a/admin/src/components/common/GlobalAlertWindow.vue b/admin/src/components/common/GlobalAlertWindow.vue
index 53b0597..f252722 100644
--- a/admin/src/components/common/GlobalAlertWindow.vue
+++ b/admin/src/components/common/GlobalAlertWindow.vue
@@ -6,8 +6,10 @@
:with-header="true"
:width="width"
:close-on-press-escape="false"
+ :close-on-click-modal="false"
:wrapper-closable="false"
:append-to-body="true"
+ :show-close="!showClose"
@close="close"
>
<div slot="title" class="window__header">
@@ -19,7 +21,7 @@
<div v-if="withFooter" class="window__footer">
<slot name="footer">
<el-button @click="confirm" :loading="confirmWorking" type="primary">纭畾</el-button>
- <el-button @click="close">鍙栨秷</el-button>
+ <el-button v-if="!showCancel" @click="close">鍙栨秷</el-button>
</slot>
</div>
</el-dialog>
@@ -33,6 +35,14 @@
type: String,
default: '50%'
},
+ showClose: {
+ type: Boolean,
+ default: false
+ },
+ showCancel: {
+ type: Boolean,
+ default: false
+ },
// 鏄惁鍖呭惈搴曢儴鎿嶄綔
withFooter: {
type: Boolean,
diff --git a/admin/src/components/operation/OperCarUseBookParamWindow.vue b/admin/src/components/operation/OperCarUseBookParamWindow.vue
index 64f9063..980be80 100644
--- a/admin/src/components/operation/OperCarUseBookParamWindow.vue
+++ b/admin/src/components/operation/OperCarUseBookParamWindow.vue
@@ -107,7 +107,7 @@
title="閫夋嫨鐢ㄨ溅鏃堕棿"
:visible.sync="isShowTime"
append-to-body
- width="600px"
+ width="640px"
>
<el-form :model="form" ref="modalRef" class="el_form" :rules="rules">
<el-form-item label="鐢ㄨ溅鏃ユ湡" prop="dateDay">
@@ -587,32 +587,41 @@
div {
line-height: 28px;
}
- }
+ }
}
.time_list {
display: flex;
- justify-content: space-between;
flex-wrap: wrap;
.item {
- width: 154px;
- height: 32px;
- line-height: 32px;
- text-align: center;
- background: #f7f7f7;
- border-radius: 4px;
- margin-bottom: 10px;
+ margin-right: 8px;
+ margin-bottom: 8px;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 14px;
+ width: 124px;
+ height: 36px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 5px;
+ color: #111;
+ border: #cccccc solid 1px;
+ cursor: pointer;
}
.active {
- background-color: $primary-color;
- color: #fff;
+ border-color: $primary-color;
+ background-color: #f6f9fe;
+ color: $primary-color;
}
.disable {
+ color: #fff;
+ border-color: #cccccc;
background-color: #cccccc;
- color: #999999;
}
.hasSub {
- color: #fff;
- background: #cccccc;
+ border-color: #bed6f9;
+ background-color: #bed6f9;
+ color: #fff;
}
}
.color_op {
diff --git a/admin/src/components/system/role/OperaSystemRoleDataWindow.vue b/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
index 9528a0b..5727a97 100644
--- a/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
+++ b/admin/src/components/system/role/OperaSystemRoleDataWindow.vue
@@ -1,32 +1,16 @@
<template>
- <GlobalWindow
- :title="title"
- width="60%"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- >
- <p class="tip">姝e湪涓鸿鑹层�� <em>{{role.name || '-'}}</em>銆� 閰嶇疆鏁版嵁鏉冮檺</p>
+ <GlobalWindow :title="title" width="80%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <p class="tip">姝e湪涓鸿鑹层�� <em>{{ role.name || '-' }}</em>銆� 閰嶇疆鏁版嵁鏉冮檺</p>
<p class="tip-warn"><i class="el-icon-warning"></i>鎻愰啋锛氭潈闄愰厤缃悗闇�閲嶆柊鐧诲綍鍚庣敓鏁�</p>
<el-form :model="form" ref="form" style="margin-top:15px">
<el-form-item label="鏉冮檺绫诲瀷锛�" prop="type">
<el-select v-model="form.type" clearable filterable placeholder="璇烽�夋嫨鏉冮檺绫诲瀷">
- <el-option
- v-for="(item, index) in options"
- :key="index"
- :label="item.name"
- :value="item.id"
- >
+ <el-option v-for="(item, index) in options" :key="index" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item v-if="form.type == 4" label="鑷畾涔夐儴闂細" prop="customData">
- <el-cascader
- :options="departments"
- v-model="form.customData"
- :props=defaultProps
- clearable
- ></el-cascader>
+ <el-cascader :options="departments" v-model="form.customData" :props=defaultProps clearable></el-cascader>
</el-form-item>
</el-form>
@@ -38,13 +22,13 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import { createRoleDataPermission } from '@/api/system/role'
import { fetchList } from '@/api/business/company'
- // import the styles
+// import the styles
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
name: 'OperaSystemRoleWindow',
extends: BaseOpera,
components: { GlobalWindow },
- data () {
+ data() {
return {
options: [
{ name: '鍏ㄩ儴', id: 0 },
@@ -71,11 +55,11 @@
value: 'id',
emitPath: false
},
- role:{},
+ role: {},
departments: []
}
},
- created () {
+ created() {
this.config({
api: '/system/role',
'field.id': 'id'
@@ -84,18 +68,18 @@
},
methods: {
// 閮ㄩ棬鏍戠姸缁撴瀯鏁版嵁
- treeComList () {
+ treeComList() {
fetchList()
.then(res => {
// this.departments = this.tree([res])
- this.departments =this.newTree(res)
+ this.departments = this.newTree(res)
})
},
- open (title, target,role) {
+ open(title, target, role) {
// console.log(title, target)
this.title = title
this.visible = true
- this.role=role
+ this.role = role
// 鏂板缓
if (target == null) {
this.$nextTick(() => {
@@ -109,33 +93,33 @@
for (const key in this.form) {
this.form[key] = target[key]
}
- console.log(target);
- if (target.customData === undefined ||target.customData === null || target.customData === '') {
+ console.log(target)
+ if (target.customData === undefined || target.customData === null || target.customData === '') {
this.form.customData = []
} else {
- const customD = this.form.customData.split(',')
+ const customD = this.form.customData.split(',')
this.form.customData = customD.map((item) => { return parseInt(item) })
}
})
},
newTree(tree) {
- if(tree ==null){
+ if (tree == null) {
return []
}
return tree.map(item => {
- let newItem = {...item}
- if(newItem){
- newItem.children=newItem.childList
+ let newItem = { ...item }
+ if (newItem) {
+ newItem.children = newItem.childList
}
if (item.children && item.children.length == 0) {
- this.$delete( newItem, 'children' )
+ this.$delete(newItem, 'children')
} else {
newItem.children = this.newTree(newItem.children)
}
return newItem
- });
+ })
},
- __confirmCreate () {
+ __confirmCreate() {
// console.log(JSON.stringify(this.form.customData));
// return
this.$refs.form.validate((valid) => {
@@ -164,7 +148,7 @@
})
})
},
- __confirmEdit () {
+ __confirmEdit() {
// console.log(JSON.stringify(this.form.customData));
// return
this.$refs.form.validate((valid) => {
@@ -196,3 +180,25 @@
}
}
</script>
+<style scoped lang="scss">
+.transfer {
+ height: 600px;
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ ::v-deep .el-transfer-panel {
+ flex: 1;
+ height: 100%;
+ }
+
+ ::v-deep .el-transfer-panel__body {
+ height: 500px;
+ }
+
+ ::v-deep .el-transfer-panel__list.is-filterable {
+ height: 480px;
+ }
+}
+</style>
diff --git a/admin/src/components/system/role/PermissionConfigWindow.vue b/admin/src/components/system/role/PermissionConfigWindow.vue
index 63f4835..4a08fbf 100644
--- a/admin/src/components/system/role/PermissionConfigWindow.vue
+++ b/admin/src/components/system/role/PermissionConfigWindow.vue
@@ -1,25 +1,12 @@
<template>
- <GlobalWindow
- :visible.sync="visible"
- :confirm-working="isWorking"
- width="582px"
- title="閰嶇疆瑙掕壊鏉冮檺"
- @confirm="confirm"
- >
- <p class="tip" v-if="role != null">涓鸿鑹� <em>{{role.name}}</em> 閰嶇疆鏉冮檺</p>
+ <GlobalWindow :visible.sync="visible" :confirm-working="isWorking" width="80%" title="閰嶇疆瑙掕壊鏉冮檺" @confirm="confirm">
+ <p class="tip" v-if="role != null">涓鸿鑹� <em>{{ role.name }}</em> 閰嶇疆鏉冮檺</p>
<p class="tip-warn"><i class="el-icon-warning"></i>鎻愰啋锛氭潈闄愰厤缃悗闇�閲嶆柊鐧诲綍鍚庣敓鏁�</p>
- <el-transfer
- ref="permissionTransfer"
- v-model="selectedIds"
- filterable
- class="transfer"
- :filter-method="filterPermissions"
- :titles="['鏈巿鏉冩潈闄�', '宸叉巿鏉冩潈闄�']"
- :props="{
+ <el-transfer ref="permissionTransfer" v-model="selectedIds" filterable class="transfer"
+ :filter-method="filterPermissions" :titles="['鏈巿鏉冩潈闄�', '宸叉巿鏉冩潈闄�']" :props="{
key: 'id',
label: 'name'
- }"
- :data="permissions">
+ }" :data="permissions">
</el-transfer>
</GlobalWindow>
</template>
@@ -31,7 +18,7 @@
export default {
name: 'PermissionConfigWindow',
components: { GlobalWindow },
- data () {
+ data() {
return {
visible: false,
isWorking: false,
@@ -47,7 +34,7 @@
/**
* @role 瑙掕壊瀵硅薄
*/
- open (role) {
+ open(role) {
if (this.$refs.permissionTransfer) {
this.$refs.permissionTransfer.clearQuery('left')
this.$refs.permissionTransfer.clearQuery('right')
@@ -72,7 +59,7 @@
})
},
// 纭閫夋嫨鏉冮檺
- confirm () {
+ confirm() {
this.isWorking = true
createRolePermission({
roleId: this.role.id,
@@ -91,7 +78,7 @@
})
},
// 鎼滅储鏉冮檺
- filterPermissions (query, item) {
+ filterPermissions(query, item) {
const lowerCaseQuery = query.toLowerCase()
return item.code.toLowerCase().indexOf(lowerCaseQuery) > -1 || item.name.toLowerCase().indexOf(lowerCaseQuery) > -1
}
@@ -101,6 +88,7 @@
<style scoped lang="scss">
@import "@/assets/style/variables.scss";
+
.global-window {
.tip {
em {
@@ -109,10 +97,12 @@
font-weight: bold;
}
}
+
.tip-warn {
margin: 4px 0 12px 0;
font-size: 12px;
color: #999;
+
i {
color: orange;
margin-right: 4px;
@@ -122,6 +112,7 @@
}
}
}
+
.transfer {
height: 600px;
width: 100%;
diff --git a/admin/src/views/business/approvalConfiguration.vue b/admin/src/views/business/approvalConfiguration.vue
index cd61e1f..09b2d8f 100644
--- a/admin/src/views/business/approvalConfiguration.vue
+++ b/admin/src/views/business/approvalConfiguration.vue
@@ -20,45 +20,35 @@
<img src="@/assets/images/peizhi_ar@2x.png" alt="" />
</div>
<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="item yellow" :class="{
+ active: activeIndex == index,
+ blue: item.type == '1',
+ }" @click="flowClick(index)">
<div class="head">{{ item.remark }}</div>
<div class="content">
<!-- 瀹℃壒 -->
<template v-if="item.type == 0">
<template v-if="item.memberType == '0'">
- <div>琚浜�</div>
- </template>
+ <div>琚浜�</div>
+ </template>
<template v-if="item.memberType == '2'">
<div>閮ㄩ棬涓荤</div>
</template>
<template v-if="item.memberType == '1'">
<div v-if="item.objIds && item.objIds.length === 1">
- <span
- >{{ item.objIds[0].name }}
- {{ item.objIds[0].companyName }}</span
- >
+ <span>{{ item.objIds[0].name }}
+ {{ item.objIds[0].companyName }}</span>
<span v-if="item.approveType == 0 && item.type == '0'">
- 鎴栫</span
- >
+ 鎴栫</span>
<span v-if="item.approveType == 1 && item.type == '0'">
- 浼氱</span
- >
+ 浼氱</span>
</div>
<div v-else-if="item.objIds && item.objIds.length > 1">
<span>{{ item.objIds[0].name }} 绛�</span>
<span v-if="item.approveType == 0 && item.type == '0'">
- 鎴栫</span
- >
+ 鎴栫</span>
<span v-if="item.approveType == 1 && item.type == '0'">
- 浼氱</span
- >
+ 浼氱</span>
</div>
<div v-else>璇烽�夋嫨</div>
<i class="el-icon-arrow-right"></i>
@@ -67,19 +57,14 @@
<!-- 鎶勯�� -->
<template v-if="item.type == 1">
<div v-if="item.objIds && item.objIds.length === 1">
- <span
- >{{ item.objIds[0].name }}
- {{ item.objIds[0].companyName }}</span
- >
- </div>
- <div v-else-if="item.objIds && item.objIds.length > 1">
- <span>{{ item.objIds[0].name }} 绛�</span>
- </div>
- <div v-else>璇烽�夋嫨</div>
- <i
- v-if="item.memberType == '1'"
- class="el-icon-arrow-right"
- ></i>
+ <span>{{ item.objIds[0].name }}
+ {{ item.objIds[0].companyName }}</span>
+ </div>
+ <div v-else-if="item.objIds && item.objIds.length > 1">
+ <span>{{ item.objIds[0].name }} 绛�</span>
+ </div>
+ <div v-else>璇烽�夋嫨</div>
+ <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
</template>
</div>
</div>
@@ -88,11 +73,7 @@
<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>
+ <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
</div>
</div>
</div>
@@ -102,118 +83,74 @@
<div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
<div class="df_ac mb10">
<div>瀹℃壒鑺傜偣鍚嶇О</div>
- <el-input
- class="w200 ml10"
- v-model="apprList[activeIndex].remark"
- ></el-input>
+ <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, memIndex in apprList[activeIndex].objIds"
- :key="mem.id"
- class="config_data_item_reviewed_content_item"
- >
+ <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
+ class="config_data_item_reviewed_content_item">
<span>{{ mem.name }}</span>
<i @click="memDel(memIndex)" 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-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="apprList[activeIndex].memberType == 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
- v-for="mem,memIndex in apprList[activeIndex].objIds"
- :key="mem.id"
- class="config_data_item_reviewed_content_item"
- >
+ <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="apprList[activeIndex].memberType == 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="apprList[activeIndex].objLevel"
- placeholder="璇烽�夋嫨"
- style="margin: 0 20px 0 10px"
- >
+ <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
<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="apprList[activeIndex].noleaderOpt"
- :true-label="1"
- :false-label="0"
- >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
- >
+ <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="
- (apprList[activeIndex].memberType == 1 ||
- apprList[activeIndex].memberType == 2) &&
- apprList[activeIndex].type == '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="apprList[activeIndex].approveType"
- style="display: flex; flex-direction: column"
- >
- <el-radio :label="0" style="margin-bottom: 20px"
- >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio
- >
+ <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
+ <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
<el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
</el-radio-group>
</div>
<div class="config_data_submit">
- <el-button
- @click="onSubmit"
- :loading="subLoading"
- style="background: #435ebe"
- type="primary"
- >淇濆瓨閰嶇疆椤�</el-button
- >
- <el-button
- v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
- type="danger"
- plain
- @click="handleDel"
- >鍒犻櫎鑺傜偣</el-button
- >
+ <el-button @click="onSubmit" :loading="subLoading" 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>
@@ -222,41 +159,27 @@
<el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
<div class="staff_modal">
<div class="left">
- <div
- style="
+ <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 style="width: 100%; max-height: 560px; 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 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">
@@ -280,7 +203,7 @@
TableLayout,
Tree
},
- data () {
+ data() {
return {
activeType: '0',
subLoading: false,
@@ -297,12 +220,12 @@
companyTree: []
}
},
- created () {
+ created() {
this.getfindCompanyTreePage()
this.initDate()
},
methods: {
- handleClick () {
+ handleClick() {
this.apprList = []
const arr = [
{ remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] },
@@ -311,12 +234,12 @@
this.apprList = [...arr]
this.initDate()
},
- flowClick (i) {
+ flowClick(i) {
this.activeIndex = i
this.apprList.forEach((item, index) => {
if (i === index) {
item.active = true
- console.log("====================",item.objIds)
+ console.log("====================", item.objIds)
if (item.objIds && item.objIds.length > 0) {
const objIds = item.objIds.map(i => {
return `${i.id}-${i.name}${i.companyName ? '-' + i.companyName : ''}`
@@ -330,7 +253,7 @@
}
})
},
- initDate () {
+ initDate() {
const { activeType } = this
approveTemplByType(activeType).then(res => {
if (res && res.paramList) {
@@ -344,7 +267,7 @@
companyName: i.companyName
}
})
- }else{
+ } else {
item.objIds = []
}
})
@@ -356,7 +279,7 @@
// console.log(res);
})
},
- onSubmit () {
+ onSubmit() {
const { apprList, activeType } = this
const temp = JSON.parse(JSON.stringify(apprList))
temp.forEach((item, index) => {
@@ -378,18 +301,18 @@
this.subLoading = false
})
},
- handleDel () {
+ handleDel() {
const { activeIndex } = this
this.apprList.splice(activeIndex, 1)
this.activeIndex = 0
},
- handleAddAppr () {
- this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�',approveType: 0, active: false, type: 0, objIds: [] })
+ handleAddAppr() {
+ this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
// this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
},
// 鑾峰彇缁勭粐鏍�
- getfindCompanyTreePage () {
+ getfindCompanyTreePage() {
fetchList()
.then(res => {
if (res && res.length > 0) {
@@ -401,7 +324,7 @@
}
})
},
- getMemberList () {
+ getMemberList() {
memberListPost({
model: {
companyId: this.searchForm.companyId || '',
@@ -410,11 +333,11 @@
erpOrgId: '',
hasFace: '',
hkStatus: '',
- includeChild: false,
+ includeChild: true,
type: 2
},
page: 1,
- capacity: 30
+ capacity: 300
}).then(res => {
this.memberList = res.records || []
this.memberList.forEach(item => {
@@ -423,13 +346,13 @@
// console.log('defaultProps', res)
})
},
- callback (row) {
+ callback(row) {
console.log(row)
this.$set(this.searchForm, 'companyId', row.id)
this.$set(this.searchForm, 'erpOrgId', row.erpId)
this.getMemberList()
},
- TransferSub () {
+ TransferSub() {
const { activeIndex } = this
if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
@@ -450,7 +373,7 @@
this.isShowTransfer = false
console.log(this.searchForm.objIds)
},
- memDel (memIndex) {
+ memDel(memIndex) {
const { activeIndex } = this
this.apprList.forEach((item, index) => {
if (activeIndex === index) {
@@ -462,11 +385,11 @@
}
})
},
- selStaff () {
+ selStaff() {
this.isShowTransfer = true
this.getMemberList()
},
- seleItem (i) {
+ seleItem(i) {
this.list.forEach((item, index) => {
item.active = index === i
})
@@ -484,6 +407,7 @@
display: flex;
align-items: center;
justify-content: space-between;
+
.config_list {
width: 543px;
height: 100%;
@@ -493,18 +417,21 @@
box-sizing: border-box;
border: 1px solid #eeeeee;
background: #f7f7f7;
+
.config_list_head {
width: 100%;
height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
+
span {
font-size: 18px;
font-weight: 500;
color: #222222;
}
}
+
.config_content {
width: 100%;
height: calc(100% - 40px);
@@ -514,28 +441,35 @@
display: flex;
align-items: center;
flex-direction: column;
+
&::-webkit-scrollbar {
width: 0;
}
+
.active {
border: 2px solid #4456ac !important;
}
+
.yellow {
background: #e89e42 !important;
}
+
.blue {
background: #5094f3 !important;
}
+
.arrows {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
+
.line {
width: 1px;
height: 60px;
background-color: #ccc;
}
+
.add {
font-size: 40px;
color: #2080f7;
@@ -544,10 +478,12 @@
z-index: 999;
top: 10px;
}
+
img {
width: 12px;
}
}
+
.item {
width: 200px;
cursor: pointer;
@@ -558,12 +494,14 @@
position: relative;
display: flex;
flex-direction: column;
+
.head {
height: 32px;
line-height: 32px;
padding: 2px 12px;
color: #fff;
}
+
.content {
flex: 1;
background-color: #fff;
@@ -572,32 +510,39 @@
padding: 0 12px;
justify-content: space-between;
}
+
&:last-child {
margin: 0 !important;
}
}
}
}
+
.config_data {
flex: 1;
height: 100%;
margin-left: 20px;
+
.config_data_submit {
margin-top: 50px;
}
+
.config_data_item {
width: 100%;
display: flex;
flex-direction: column;
margin-bottom: 30px;
+
&:last-child {
margin: 0 !important;
}
+
.config_data_item_label {
font-size: 16px;
font-weight: 500;
color: #222222;
margin-bottom: 20px;
+
span {
font-size: 12px;
font-weight: 400;
@@ -605,14 +550,17 @@
margin-left: 10px;
}
}
+
.config_data_item_reviewed {
width: 100%;
margin-top: 20px;
+
.config_data_item_reviewed_r {
margin-top: 10px;
width: 100%;
display: flex;
align-items: center;
+
span {
flex-shrink: 0;
font-size: 14px;
@@ -620,15 +568,18 @@
color: #666666;
}
}
+
.config_data_item_reviewed_label {
display: flex;
align-items: center;
+
span {
&:nth-child(1) {
font-size: 14px;
font-weight: 400;
color: #222222;
}
+
&:nth-child(2) {
font-size: 12px;
font-weight: 400;
@@ -641,6 +592,7 @@
}
}
}
+
.config_data_item_reviewed_content {
width: 400px;
margin-top: 10px;
@@ -652,6 +604,7 @@
display: flex;
align-items: flex-start;
flex-wrap: wrap;
+
.add {
font-size: 12px;
font-weight: 400;
@@ -659,6 +612,7 @@
cursor: pointer;
margin-top: 3px;
}
+
.config_data_item_reviewed_content_item {
padding: 3px 5px;
background: #f4f7fc;
@@ -666,11 +620,13 @@
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;
@@ -678,22 +634,27 @@
}
}
}
+
.staff_modal {
display: flex;
+
.left {
width: 300px;
margin-right: 20px;
}
+
.transfer {
height: 600px;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
- ::v-deep .el-transfer-panel{
+
+ ::v-deep .el-transfer-panel {
flex: 1;
height: 100%;
}
+
::v-deep .el-transfer-panel__body {
height: 500px;
}
diff --git a/admin/src/views/business/approvalReport.vue b/admin/src/views/business/approvalReport.vue
index 0ce20bd..d37953a 100644
--- a/admin/src/views/business/approvalReport.vue
+++ b/admin/src/views/business/approvalReport.vue
@@ -9,52 +9,42 @@
<div class="config_content">
<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 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="item yellow" :class="{
+ active: activeIndex == index,
+ blue: item.type == '1',
+ }" @click="flowClick(index)">
<div class="head">{{ item.remark }}</div>
<div class="content">
<!-- 瀹℃壒 -->
<template v-if="item.type == 0">
<template v-if="item.memberType == '0'">
- <div>琚浜�</div>
- </template>
+ <div>琚浜�</div>
+ </template>
<template v-if="item.memberType == '2'">
<div>閮ㄩ棬涓荤</div>
</template>
<template v-if="item.memberType == '1'">
<div v-if="item.objIds && item.objIds.length === 1">
- <span
- >{{ item.objIds[0].name }}
- {{ item.objIds[0].companyName }}</span
- >
+ <span>{{ item.objIds[0].name }}
+ {{ item.objIds[0].companyName }}</span>
<span v-if="item.approveType == 0 && item.type == '0'">
- 鎴栫</span
- >
+ 鎴栫</span>
<span v-if="item.approveType == 1 && item.type == '0'">
- 浼氱</span
- >
+ 浼氱</span>
</div>
<div v-else-if="item.objIds && item.objIds.length > 1">
<span>{{ item.objIds[0].name }} 绛�</span>
<span v-if="item.approveType == 0 && item.type == '0'">
- 鎴栫</span
- >
+ 鎴栫</span>
<span v-if="item.approveType == 1 && item.type == '0'">
- 浼氱</span
- >
+ 浼氱</span>
</div>
<div v-else>璇烽�夋嫨</div>
<i class="el-icon-arrow-right"></i>
@@ -63,19 +53,14 @@
<!-- 鎶勯�� -->
<template v-if="item.type == 1">
<div v-if="item.objIds && item.objIds.length === 1">
- <span
- >{{ item.objIds[0].name }}
- {{ item.objIds[0].companyName }}</span
- >
- </div>
- <div v-else-if="item.objIds && item.objIds.length > 1">
- <span>{{ item.objIds[0].name }} 绛�</span>
- </div>
- <div v-else>璇烽�夋嫨</div>
- <i
- v-if="item.memberType == '1'"
- class="el-icon-arrow-right"
- ></i>
+ <span>{{ item.objIds[0].name }}
+ {{ item.objIds[0].companyName }}</span>
+ </div>
+ <div v-else-if="item.objIds && item.objIds.length > 1">
+ <span>{{ item.objIds[0].name }} 绛�</span>
+ </div>
+ <div v-else>璇烽�夋嫨</div>
+ <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
</template>
</div>
</div>
@@ -84,11 +69,7 @@
<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>
+ <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
</div>
</div>
</div>
@@ -98,118 +79,74 @@
<div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
<div class="df_ac mb10">
<div>瀹℃壒鑺傜偣鍚嶇О</div>
- <el-input
- class="w200 ml10"
- v-model="apprList[activeIndex].remark"
- ></el-input>
+ <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,memIndex in apprList[activeIndex].objIds"
- :key="mem.id"
- class="config_data_item_reviewed_content_item"
- >
+ <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
+ class="config_data_item_reviewed_content_item">
<span>{{ mem.name }}</span>
<i @click="memDel(memIndex)" 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-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="apprList[activeIndex].memberType == 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
- v-for="(mem, memIndex) in apprList[activeIndex].objIds"
- :key="mem.id"
- class="config_data_item_reviewed_content_item"
- >
+ <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="apprList[activeIndex].memberType == 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="apprList[activeIndex].objLevel"
- placeholder="璇烽�夋嫨"
- style="margin: 0 20px 0 10px"
- >
+ <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
<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="apprList[activeIndex].noleaderOpt"
- :true-label="1"
- :false-label="0"
- >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
- >
+ <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="
- (apprList[activeIndex].memberType == 1 ||
- apprList[activeIndex].memberType == 2) &&
- apprList[activeIndex].type == '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="apprList[activeIndex].approveType"
- style="display: flex; flex-direction: column"
- >
- <el-radio :label="0" style="margin-bottom: 20px"
- >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio
- >
+ <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
+ <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
<el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
</el-radio-group>
</div>
<div class="config_data_submit">
- <el-button
- @click="onSubmit"
- :loading="subLoading"
- style="background: #435ebe"
- type="primary"
- >淇濆瓨閰嶇疆椤�</el-button
- >
- <el-button
- v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
- type="danger"
- plain
- @click="handleDel"
- >鍒犻櫎鑺傜偣</el-button
- >
+ <el-button @click="onSubmit" :loading="subLoading" 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>
@@ -218,41 +155,27 @@
<el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
<div class="staff_modal">
<div class="left">
- <div
- style="
+ <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 style="width: 100%; max-height: 560px; 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 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">
@@ -276,7 +199,7 @@
TableLayout,
Tree
},
- data () {
+ data() {
return {
activeType: '2',
subLoading: false,
@@ -293,12 +216,12 @@
companyTree: []
}
},
- created () {
+ created() {
this.getfindCompanyTreePage()
this.initDate()
},
methods: {
- flowClick (i) {
+ flowClick(i) {
this.activeIndex = i
this.apprList.forEach((item, index) => {
if (i === index) {
@@ -316,7 +239,7 @@
}
})
},
- initDate () {
+ initDate() {
const { activeType } = this
approveTemplByType(activeType).then(res => {
if (res && res.paramList) {
@@ -330,7 +253,7 @@
companyName: i.companyName
}
})
- }else{
+ } else {
item.objIds = []
}
})
@@ -342,7 +265,7 @@
// console.log(res);
})
},
- onSubmit () {
+ onSubmit() {
const { apprList, activeType } = this
const temp = JSON.parse(JSON.stringify(apprList))
temp.forEach((item, index) => {
@@ -364,18 +287,18 @@
this.subLoading = false
})
},
- handleDel () {
+ handleDel() {
const { activeIndex } = this
this.apprList.splice(activeIndex, 1)
this.activeIndex = 0
},
- handleAddAppr () {
- this.apprList.splice(this.apprList.length - 2, 0, { remark: '瀹℃壒浜�',approveType: 0, active: false, type: 0, objIds: [] })
+ handleAddAppr() {
+ this.apprList.splice(this.apprList.length - 2, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
// this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
},
// 鑾峰彇缁勭粐鏍�
- getfindCompanyTreePage () {
+ getfindCompanyTreePage() {
fetchList()
.then(res => {
if (res && res.length > 0) {
@@ -387,7 +310,7 @@
}
})
},
- getMemberList () {
+ getMemberList() {
memberListPost({
model: {
companyId: this.searchForm.companyId || '',
@@ -396,11 +319,11 @@
erpOrgId: '',
hasFace: '',
hkStatus: '',
- includeChild: false,
+ includeChild: true,
type: 2
},
page: 1,
- capacity: 30
+ capacity: 300
}).then(res => {
this.memberList = res.records || []
this.memberList.forEach(item => {
@@ -409,13 +332,13 @@
// console.log('defaultProps', res)
})
},
- callback (row) {
+ callback(row) {
console.log(row)
this.$set(this.searchForm, 'companyId', row.id)
this.$set(this.searchForm, 'erpOrgId', row.erpId)
this.getMemberList()
},
- TransferSub () {
+ TransferSub() {
const { activeIndex } = this
if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
@@ -436,7 +359,7 @@
this.isShowTransfer = false
console.log(this.searchForm.objIds)
},
- memDel (memIndex) {
+ memDel(memIndex) {
const { activeIndex } = this
this.apprList.forEach((item, index) => {
if (activeIndex === index) {
@@ -448,11 +371,11 @@
}
})
},
- selStaff () {
+ selStaff() {
this.isShowTransfer = true
this.getMemberList()
},
- seleItem (i) {
+ seleItem(i) {
this.list.forEach((item, index) => {
item.active = index === i
})
@@ -470,6 +393,7 @@
display: flex;
align-items: center;
justify-content: space-between;
+
.config_list {
width: 543px;
height: 100%;
@@ -479,18 +403,21 @@
box-sizing: border-box;
border: 1px solid #eeeeee;
background: #f7f7f7;
+
.config_list_head {
width: 100%;
height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
+
span {
font-size: 18px;
font-weight: 500;
color: #222222;
}
}
+
.config_content {
width: 100%;
height: calc(100% - 40px);
@@ -500,28 +427,35 @@
display: flex;
align-items: center;
flex-direction: column;
+
&::-webkit-scrollbar {
width: 0;
}
+
.active {
border: 2px solid #4456ac !important;
}
+
.yellow {
background: #e89e42 !important;
}
+
.blue {
background: #5094f3 !important;
}
+
.arrows {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
+
.line {
width: 1px;
height: 60px;
background-color: #ccc;
}
+
.add {
font-size: 40px;
color: #2080f7;
@@ -530,10 +464,12 @@
z-index: 999;
top: 10px;
}
+
img {
width: 12px;
}
}
+
.item {
width: 200px;
cursor: pointer;
@@ -544,12 +480,14 @@
position: relative;
display: flex;
flex-direction: column;
+
.head {
height: 32px;
line-height: 32px;
padding: 2px 12px;
color: #fff;
}
+
.content {
flex: 1;
background-color: #fff;
@@ -558,32 +496,39 @@
padding: 0 12px;
justify-content: space-between;
}
+
&:last-child {
margin: 0 !important;
}
}
}
}
+
.config_data {
flex: 1;
height: 100%;
margin-left: 20px;
+
.config_data_submit {
margin-top: 50px;
}
+
.config_data_item {
width: 100%;
display: flex;
flex-direction: column;
margin-bottom: 30px;
+
&:last-child {
margin: 0 !important;
}
+
.config_data_item_label {
font-size: 16px;
font-weight: 500;
color: #222222;
margin-bottom: 20px;
+
span {
font-size: 12px;
font-weight: 400;
@@ -591,14 +536,17 @@
margin-left: 10px;
}
}
+
.config_data_item_reviewed {
width: 100%;
margin-top: 20px;
+
.config_data_item_reviewed_r {
margin-top: 10px;
width: 100%;
display: flex;
align-items: center;
+
span {
flex-shrink: 0;
font-size: 14px;
@@ -606,15 +554,18 @@
color: #666666;
}
}
+
.config_data_item_reviewed_label {
display: flex;
align-items: center;
+
span {
&:nth-child(1) {
font-size: 14px;
font-weight: 400;
color: #222222;
}
+
&:nth-child(2) {
font-size: 12px;
font-weight: 400;
@@ -627,6 +578,7 @@
}
}
}
+
.config_data_item_reviewed_content {
width: 400px;
margin-top: 10px;
@@ -638,6 +590,7 @@
display: flex;
align-items: flex-start;
flex-wrap: wrap;
+
.add {
font-size: 12px;
font-weight: 400;
@@ -645,6 +598,7 @@
cursor: pointer;
margin-top: 3px;
}
+
.config_data_item_reviewed_content_item {
padding: 3px 5px;
background: #f4f7fc;
@@ -652,11 +606,13 @@
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;
@@ -664,22 +620,27 @@
}
}
}
+
.staff_modal {
display: flex;
+
.left {
width: 300px;
margin-right: 20px;
}
+
.transfer {
height: 600px;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
- ::v-deep .el-transfer-panel{
+
+ ::v-deep .el-transfer-panel {
flex: 1;
height: 100%;
}
+
::v-deep .el-transfer-panel__body {
height: 500px;
}
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 652081b..296a05e 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -6,39 +6,55 @@
<div class="h3">鏅烘収鐗╂祦鍥尯瀹夋秷涓�浣撳寲绯荤粺</div>
</div>
<div class="form_wrap">
- <!-- <div class="tabs">
- <div class="tab active">
+ <div class="tabs">
+ <div class="tab" @click="tabClick('0')" :class="{ active: activeTab == '0' }">
<div class="name">甯愬彿鐧诲綍</div>
<div class="icon"></div>
</div>
- <div class="tab">
+ <div class="tab" @click="tabClick('1')" :class="{ active: activeTab == '1' }">
<div class="name">鎵嬫満鐧诲綍</div>
<div class="icon"></div>
</div>
- </div> -->
- <div class="df_ac">
- <div class="label">甯愬彿</div>
- <div class="line">
- <el-input v-model="username" placeholder="璇疯緭鍏ュ笎鍙�" maxlength="50" v-trim />
- </div>
</div>
- <div class="df_ac">
- <div class="label">瀵嗙爜</div>
- <div class="line">
- <el-input v-model="password" placeholder="璇疯緭鍏ュ瘑鐮�" type="password" maxlength="30" show-password />
+ <template v-if="activeTab == '0'">
+ <div class="df_ac">
+ <div class="label">甯愬彿</div>
+ <div class="line">
+ <el-input v-model="username" placeholder="璇疯緭鍏ュ笎鍙�" maxlength="50" v-trim />
+ </div>
</div>
- </div>
+ <div class="df_ac">
+ <div class="label">瀵嗙爜</div>
+ <div class="line">
+ <el-input v-model="password" placeholder="璇疯緭鍏ュ瘑鐮�" type="password" maxlength="30" show-password />
+ </div>
+ </div>
+ <div class="df_ac">
+ <div class="label">楠岃瘉鐮�</div>
+ <div class="line">
+ <el-input v-model="captcha.value" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="4" @keypress.enter.native="login" />
+ <img v-if="!captcha.loading" class="code_image" :src="captcha.uri" @click="refreshCaptcha">
+ <span v-else><i class="el-icon-loading"></i></span>
+ </div>
+ </div>
+ </template>
+ <template v-if="activeTab == '1'">
+ <div class="df_ac">
+ <div class="label">鎵嬫満鍙�</div>
+ <div class="line">
+ <el-input v-model="password" placeholder="璇疯緭鍏ユ墜鏈哄彿" type="password" maxlength="30" show-password />
+ </div>
+ </div>
+ <div class="df_ac">
+ <div class="label">楠岃瘉鐮�</div>
+ <div class="line">
+ <el-input v-model="captcha.value" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="4" @keypress.enter.native="login" />
+ <span class="code_get" @click="getCode">鑾峰彇楠岃瘉鐮�</span>
+ </div>
+ </div>
+ </template>
- <div class="df_ac">
- <div class="label">楠岃瘉鐮�</div>
- <div class="line">
- <el-input v-model="captcha.value" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="4" @keypress.enter.native="login" />
- <img v-if="!captcha.loading" class="code_image" :src="captcha.uri" @click="refreshCaptcha">
- <span v-else><i class="el-icon-loading"></i></span>
- </div>
- </div>
- <el-button :loading="loading" type="primary" class="login_btn"
- @click.native.prevent="login">绔嬪嵆鐧诲綍</el-button>
+ <el-button :loading="loading" type="primary" class="login_btn" @click.native.prevent="login">绔嬪嵆鐧诲綍</el-button>
<div class="btn_wrap">
<el-checkbox v-model="isRemPsd">
<span style="font-size: 13px; font-weight: 400" class="placeholder9">璁颁綇瀵嗙爜</span>
@@ -66,6 +82,7 @@
isRemPsd: false,
username: '',
password: '',
+ activeTab: '0',
// 楠岃瘉鐮�
captcha: {
loading: false,
@@ -120,6 +137,13 @@
.finally(() => {
this.loading = false
})
+ },
+ getCode() {
+ console.log('getCode');
+
+ },
+ tabClick(val) {
+ this.activeTab = val
},
// 鍒锋柊楠岃瘉鐮�
refreshCaptcha() {
@@ -221,7 +245,7 @@
background-color: #fff;
box-sizing: border-box;
/* padding: 50px 80px 20px; */
- padding: 80px 80px 20px;
+ padding: 50px 80px 20px;
position: relative;
.tabs {
@@ -236,6 +260,7 @@
flex-direction: column;
justify-content: center;
align-items: center;
+ cursor: pointer;
.icon {
width: 36px;
@@ -287,10 +312,11 @@
margin-bottom: 17px;
display: flex;
width: 100%;
-
+ align-items: center;
+ position: relative;
.el-input {
height: 40px;
-
+ flex: 1;
// font-size: 14px;
::v-deep .el-input__inner {
height: 40px !important;
@@ -301,6 +327,17 @@
width: 100px;
margin-left: 10px;
}
+ .code_get{
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ font-size: 14px;
+ width: 72px;
+ z-index: 11;
+ margin-left: 10px;
+ cursor: pointer;
+ color: $primary-color;
+ }
}
.forget {
diff --git a/admin/src/views/meeting/components/OperaBookingsWindow.vue b/admin/src/views/meeting/components/OperaBookingsWindow.vue
index 2d9a785..3f5b2c7 100644
--- a/admin/src/views/meeting/components/OperaBookingsWindow.vue
+++ b/admin/src/views/meeting/components/OperaBookingsWindow.vue
@@ -466,7 +466,6 @@
.time-item {
margin-right: 8px;
margin-bottom: 8px;
- border: #cccccc solid 1px;
font-size: 14px;
font-weight: 400;
line-height: 14px;
@@ -477,6 +476,8 @@
align-items: center;
border-radius: 5px;
color: #111;
+ border: #cccccc solid 1px;
+ cursor: pointer;
}
.time-item-sel {
border-color: $primary-color;
diff --git a/admin/src/views/operation/serviceCar/apprConfig.vue b/admin/src/views/operation/serviceCar/apprConfig.vue
index 53a5e9c..e0bb8c7 100644
--- a/admin/src/views/operation/serviceCar/apprConfig.vue
+++ b/admin/src/views/operation/serviceCar/apprConfig.vue
@@ -20,14 +20,10 @@
<img src="@/assets/images/peizhi_ar@2x.png" alt="" />
</div>
<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="item yellow" :class="{
+ active: activeIndex == index,
+ blue: item.type == '1',
+ }" @click="flowClick(index)">
<div class="head">{{ item.remark }}</div>
<div class="content">
<!-- 瀹℃壒 -->
@@ -37,25 +33,19 @@
</template>
<template v-if="item.memberType == '1'">
<div v-if="item.objIds && item.objIds.length === 1">
- <span
- >{{ item.objIds[0].name }}
- {{ item.objIds[0].companyName }}</span
- >
+ <span>{{ item.objIds[0].name }}
+ {{ item.objIds[0].companyName }}</span>
<span v-if="item.approveType == 0 && item.type == '0'">
- 鎴栫</span
- >
+ 鎴栫</span>
<span v-if="item.approveType == 1 && item.type == '0'">
- 浼氱</span
- >
+ 浼氱</span>
</div>
<div v-else-if="item.objIds && item.objIds.length > 1">
<span>{{ item.objIds[0].name }} 绛�</span>
<span v-if="item.approveType == 0 && item.type == '0'">
- 鎴栫</span
- >
+ 鎴栫</span>
<span v-if="item.approveType == 1 && item.type == '0'">
- 浼氱</span
- >
+ 浼氱</span>
</div>
<div v-else>璇烽�夋嫨</div>
<i class="el-icon-arrow-right"></i>
@@ -64,19 +54,14 @@
<!-- 鎶勯�� -->
<template v-if="item.type == 1">
<div v-if="item.objIds && item.objIds.length === 1">
- <span
- >{{ item.objIds[0].name }}
- {{ item.objIds[0].companyName }}</span
- >
- </div>
- <div v-else-if="item.objIds && item.objIds.length > 1">
- <span>{{ item.objIds[0].name }} 绛�</span>
- </div>
- <div v-else>璇烽�夋嫨</div>
- <i
- v-if="item.memberType == '1'"
- class="el-icon-arrow-right"
- ></i>
+ <span>{{ item.objIds[0].name }}
+ {{ item.objIds[0].companyName }}</span>
+ </div>
+ <div v-else-if="item.objIds && item.objIds.length > 1">
+ <span>{{ item.objIds[0].name }} 绛�</span>
+ </div>
+ <div v-else>璇烽�夋嫨</div>
+ <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
</template>
</div>
</div>
@@ -85,11 +70,7 @@
<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>
+ <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
</div>
</div>
</div>
@@ -99,127 +80,79 @@
<div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
<div class="df_ac mb10">
<div>瀹℃壒鑺傜偣鍚嶇О</div>
- <el-input
- class="w200 ml10"
- v-model="apprList[activeIndex].remark"
- ></el-input>
+ <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, memIndex in apprList[activeIndex].objIds"
- :key="mem.id"
- class="config_data_item_reviewed_content_item"
- >
+ <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
+ class="config_data_item_reviewed_content_item">
<span>{{ mem.name }}</span>
<i @click="memDel(memIndex)" 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-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="apprList[activeIndex].memberType == 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
- v-for="(mem, memIndex) in apprList[activeIndex].objIds"
- :key="mem.id"
- class="config_data_item_reviewed_content_item"
- >
+ <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="apprList[activeIndex].memberType == 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="apprList[activeIndex].objLevel"
- placeholder="璇烽�夋嫨"
- style="margin: 0 20px 0 10px"
- >
+ <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
<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="apprList[activeIndex].noleaderOpt"
- :true-label="1"
- :false-label="0"
- >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox
- >
+ <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="
- (apprList[activeIndex].memberType == 1 ||
- apprList[activeIndex].memberType == 2) &&
- apprList[activeIndex].type == '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="apprList[activeIndex].approveType"
- style="display: flex; flex-direction: column"
- >
- <el-radio :label="0" style="margin-bottom: 20px"
- >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio
- >
+ <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
+ <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
<el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
</el-radio-group>
</div>
<div v-if="apprList[activeIndex].type == '0'" class="df_ac mb10">
<div>鍏佽淇敼"椹鹃┒鍛�"</div>
- <el-switch
- class="ml10"
- :active-value="1"
- :inactive-value="0"
- v-model="apprList[activeIndex].driverParam"
- ></el-switch>
+ <el-switch class="ml10" :active-value="1" :inactive-value="0"
+ v-model="apprList[activeIndex].driverParam"></el-switch>
</div>
<div class="config_data_submit">
- <el-button
- @click="onSubmit"
- :loading="subLoading"
- style="background: #435ebe"
- type="primary"
- >淇濆瓨閰嶇疆椤�</el-button
- >
- <el-button
- v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1"
- type="danger"
- plain
- @click="handleDel"
- >鍒犻櫎鑺傜偣</el-button
- >
+ <el-button @click="onSubmit" :loading="subLoading" 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>
@@ -228,41 +161,27 @@
<el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
<div class="staff_modal">
<div class="left">
- <div
- style="
+ <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 style="width: 100%; max-height: 560px; 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 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">
@@ -286,7 +205,7 @@
TableLayout,
Tree
},
- data () {
+ data() {
return {
activeType: '3',
subLoading: false,
@@ -303,12 +222,12 @@
companyTree: []
}
},
- created () {
+ created() {
this.getfindCompanyTreePage()
this.initDate()
},
methods: {
- handleClick () {
+ handleClick() {
this.apprList = []
const arr = [
{ remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] },
@@ -317,7 +236,7 @@
this.apprList = [...arr]
this.initDate()
},
- flowClick (i) {
+ flowClick(i) {
this.activeIndex = i
this.apprList.forEach((item, index) => {
if (i === index) {
@@ -335,7 +254,7 @@
}
})
},
- initDate () {
+ initDate() {
const { activeType } = this
approveTemplByType(activeType).then(res => {
if (res && res.paramList) {
@@ -349,7 +268,7 @@
companyName: i.companyName
}
})
- }else{
+ } else {
item.objIds = []
}
})
@@ -361,7 +280,7 @@
// console.log(res);
})
},
- onSubmit () {
+ onSubmit() {
const { apprList, activeType } = this
const temp = JSON.parse(JSON.stringify(apprList))
temp.forEach((item, index) => {
@@ -383,18 +302,18 @@
this.subLoading = false
})
},
- handleDel () {
+ handleDel() {
const { activeIndex } = this
this.apprList.splice(activeIndex, 1)
this.activeIndex = 0
},
- handleAddAppr () {
- this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�',approveType: 0, active: false, type: 0, objIds: [] })
+ handleAddAppr() {
+ this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
// this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
},
// 鑾峰彇缁勭粐鏍�
- getfindCompanyTreePage () {
+ getfindCompanyTreePage() {
fetchList()
.then(res => {
if (res && res.length > 0) {
@@ -406,7 +325,7 @@
}
})
},
- getMemberList () {
+ getMemberList() {
memberListPost({
model: {
companyId: this.searchForm.companyId || '',
@@ -415,11 +334,11 @@
erpOrgId: '',
hasFace: '',
hkStatus: '',
- includeChild: false,
+ includeChild: true,
type: 2
},
page: 1,
- capacity: 30
+ capacity: 300
}).then(res => {
this.memberList = res.records || []
this.memberList.forEach(item => {
@@ -428,13 +347,13 @@
// console.log('defaultProps', res)
})
},
- callback (row) {
+ callback(row) {
console.log(row)
this.$set(this.searchForm, 'companyId', row.id)
this.$set(this.searchForm, 'erpOrgId', row.erpId)
this.getMemberList()
},
- TransferSub () {
+ TransferSub() {
const { activeIndex } = this
if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
@@ -455,7 +374,7 @@
this.isShowTransfer = false
console.log(this.searchForm.objIds)
},
- memDel (memIndex) {
+ memDel(memIndex) {
const { activeIndex } = this
this.apprList.forEach((item, index) => {
if (activeIndex === index) {
@@ -467,11 +386,11 @@
}
})
},
- selStaff () {
+ selStaff() {
this.isShowTransfer = true
this.getMemberList()
},
- seleItem (i) {
+ seleItem(i) {
this.list.forEach((item, index) => {
item.active = index === i
})
@@ -489,6 +408,7 @@
display: flex;
align-items: center;
justify-content: space-between;
+
.config_list {
width: 543px;
height: 100%;
@@ -498,18 +418,21 @@
box-sizing: border-box;
border: 1px solid #eeeeee;
background: #f7f7f7;
+
.config_list_head {
width: 100%;
height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
+
span {
font-size: 18px;
font-weight: 500;
color: #222222;
}
}
+
.config_content {
width: 100%;
height: calc(100% - 40px);
@@ -519,28 +442,35 @@
display: flex;
align-items: center;
flex-direction: column;
+
&::-webkit-scrollbar {
width: 0;
}
+
.active {
border: 2px solid #4456ac !important;
}
+
.yellow {
background: #e89e42 !important;
}
+
.blue {
background: #5094f3 !important;
}
+
.arrows {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
+
.line {
width: 1px;
height: 60px;
background-color: #ccc;
}
+
.add {
font-size: 40px;
color: #2080f7;
@@ -549,10 +479,12 @@
z-index: 999;
top: 10px;
}
+
img {
width: 12px;
}
}
+
.item {
width: 200px;
cursor: pointer;
@@ -563,12 +495,14 @@
position: relative;
display: flex;
flex-direction: column;
+
.head {
height: 32px;
line-height: 32px;
padding: 2px 12px;
color: #fff;
}
+
.content {
flex: 1;
background-color: #fff;
@@ -577,32 +511,39 @@
padding: 0 12px;
justify-content: space-between;
}
+
&:last-child {
margin: 0 !important;
}
}
}
}
+
.config_data {
flex: 1;
height: 100%;
margin-left: 20px;
+
.config_data_submit {
margin-top: 50px;
}
+
.config_data_item {
width: 100%;
display: flex;
flex-direction: column;
margin-bottom: 30px;
+
&:last-child {
margin: 0 !important;
}
+
.config_data_item_label {
font-size: 16px;
font-weight: 500;
color: #222222;
margin-bottom: 20px;
+
span {
font-size: 12px;
font-weight: 400;
@@ -610,14 +551,17 @@
margin-left: 10px;
}
}
+
.config_data_item_reviewed {
width: 100%;
margin-top: 20px;
+
.config_data_item_reviewed_r {
margin-top: 10px;
width: 100%;
display: flex;
align-items: center;
+
span {
flex-shrink: 0;
font-size: 14px;
@@ -625,15 +569,18 @@
color: #666666;
}
}
+
.config_data_item_reviewed_label {
display: flex;
align-items: center;
+
span {
&:nth-child(1) {
font-size: 14px;
font-weight: 400;
color: #222222;
}
+
&:nth-child(2) {
font-size: 12px;
font-weight: 400;
@@ -646,6 +593,7 @@
}
}
}
+
.config_data_item_reviewed_content {
width: 400px;
margin-top: 10px;
@@ -657,6 +605,7 @@
display: flex;
align-items: flex-start;
flex-wrap: wrap;
+
.add {
font-size: 12px;
font-weight: 400;
@@ -664,6 +613,7 @@
cursor: pointer;
margin-top: 3px;
}
+
.config_data_item_reviewed_content_item {
padding: 3px 5px;
background: #f4f7fc;
@@ -671,11 +621,13 @@
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;
@@ -683,22 +635,27 @@
}
}
}
+
.staff_modal {
display: flex;
+
.left {
width: 300px;
margin-right: 20px;
}
+
.transfer {
height: 600px;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
- ::v-deep .el-transfer-panel{
+
+ ::v-deep .el-transfer-panel {
flex: 1;
height: 100%;
}
+
::v-deep .el-transfer-panel__body {
height: 500px;
}
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index 6e75cf5..7b3ed4a 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -62,27 +62,27 @@
</div>
</div>
<div class="line">
- <div v-if="task.billCode" class="ite">
+ <div v-if="task.billCode" style="width: 40%;" class="ite">
<span>杩愯緭鍗曞彿锛�</span>
<span>{{ task.billCode }}</span>
</div>
- <div v-else class="ite">
+ <div v-else class="ite" style="width: 40%;">
<span>鍚堝悓鍗曞彿锛�</span>
<span>{{ task.contractNum }}</span>
</div>
- <div class="ite siji">
+ <div class="ite jiashi">
<span>椹鹃┒鍛橈細</span>
- <span>{{ task.driverName }}</span>
+ <span>{{ task.driverName }} {{ task.drivierPhone }}</span>
</div>
- <div class="ite phone">
+ <!-- <div class="ite phone">
<span>鎵嬫満鍙凤細</span>
<span>{{ task.drivierPhone }}</span>
- </div>
- <div class="ite">
+ </div> -->
+ <div class="ite" style="width: 40%">
<span>鎬昏繍杈撻噺锛�</span>
<span>{{ task.totalNum }}涓囨敮</span>
</div>
- <div v-if="task.billCode" class="ite" style="width: 66.6%">
+ <div v-if="task.billCode" class="ite" style="width: 60%">
<span>杩愯緭鍏徃锛�</span>
<span>{{ task.carrierName }}</span>
</div>
@@ -497,12 +497,12 @@
margin-bottom: 6px;
.ite {
- width: 33.3%;
+ width: 50%;
margin-top: 8px;
}
- .siji {
- width: 29%;
+ .jiashi {
+ width: 60%;
}
.phone {
diff --git a/admin/src/views/system/publicMsg.vue b/admin/src/views/system/publicMsg.vue
new file mode 100644
index 0000000..085dbd0
--- /dev/null
+++ b/admin/src/views/system/publicMsg.vue
@@ -0,0 +1,159 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear">
+ </QueryForm>
+ <div class="pt16 mb10">
+ <el-button type="primary" @click="batchStatus(0)" v-permissions="['business:platformjob:update']">鎵归噺鍚敤</el-button>
+ <el-button @click="batchStatus(1)" v-permissions="['business:platformjob:update']">鎵归噺绂佺敤</el-button>
+ </div>
+ <el-table @selection-change="handleSelectionChange" class="mb20" v-loading="loading" :data="list" stripe>
+ <el-table-column align="center" type="selection" width="55">
+ </el-table-column>
+ <el-table-column prop="titile" label="娑堟伅鏍囬" min-width="160" show-overflow-tooltip />
+ <el-table-column prop="objCode" label="娑堟伅缂栫爜" min-width="150" show-overflow-tooltip />
+ <el-table-column prop="tempId" label="妯℃澘ID" min-width="300" show-overflow-tooltip />
+ <el-table-column label="鐘舵��" width="120" align="center" fixed="right">
+ <template v-slot="scope">
+ <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status"
+ @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ </el-table>
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+import { getH5List, H5StatusUpdate, H5StatussUpdate } from '@/api/system/sms'
+
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { Message } from 'element-ui'
+import dayjs from 'dayjs'
+export default {
+ components: {
+ Pagination,
+ QueryForm,
+ GlobalWindow,
+ },
+ data() {
+ return {
+ ids: [],
+ isShowDetail: false,
+ exLoading: false,
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ filters: {},
+ list: [],
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'titile',
+ type: 'input',
+ label: '娑堟伅鏍囬'
+ },
+ {
+ filed: 'status',
+ type: 'select',
+ label: '鍚敤鐘舵��',
+ options: [
+ { value: 0, label: '鍚敤' },
+ { value: 1, label: '绂佺敤' },
+ ]
+ },
+ {
+ filed: 'objCode',
+ type: 'input',
+ label: '娑堟伅缂栫爜'
+ }
+ ],
+ online: true
+ },
+ }
+ },
+ created() {
+ this.getList()
+ },
+ methods: {
+ handleSelectionChange(val) {
+ this.ids = val.map(i => i.id)
+ console.log('ids', this.ids)
+ },
+ batchStatus(status) {
+ const { ids } = this
+ if (ids.length == 0) return Message.error('璇峰厛閫夋嫨瑕佹洿鏀圭殑鐭俊閫氱煡')
+ this.$confirm(`纭畾${status == 0 ? '鍚敤' : '绂佺敤'}閫変腑鐨勬墍鏈夌煭淇¢�氱煡鍚�?`, '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ H5StatussUpdate({
+ ids: ids.join(','),
+ status
+ }).then(res => {
+ Message.success('鎵归噺鏇存柊鎴愬姛')
+ this.getList()
+ }, () => {
+ this.getList()
+ })
+ })
+
+ },
+ changeStatus(row) {
+ console.log('row', row)
+ H5StatusUpdate({
+ ...row
+ }).then(res => {
+ Message.success('鐘舵�佹洿鏂版垚鍔�')
+ }, () => {
+ this.getList()
+ })
+ },
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ getH5List({
+ model: {
+ ...filters,
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
+ item.taskOrigin = 'WMS鑾峰彇'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+
+
+ clear() {
+ this.pagination.page = 1
+ this.filters = {}
+ this.getList()
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
+ }
+ }
+}
+</script>
+<style lang="scss" scoped>
+.param_title {
+ font-size: 18px;
+ font-weight: 600;
+ color: #000000;
+ margin-bottom: 15px;
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/task/dangetDetail.vue b/admin/src/views/task/dangetDetail.vue
index 700880c..35c7845 100644
--- a/admin/src/views/task/dangetDetail.vue
+++ b/admin/src/views/task/dangetDetail.vue
@@ -601,6 +601,7 @@
</script>
<style lang="scss" scoped>
+@import "@/assets/style/variables.scss";
.upload_wrap {
display: flex;
flex-wrap: wrap;
@@ -800,7 +801,7 @@
font-size: 13px;
color: #888888;
.status {
- color: #00ba67;
+ color: $primaryColor;
}
}
.m_content {
diff --git a/admin/src/views/task/driverDetail.vue b/admin/src/views/task/driverDetail.vue
index a63e59c..385d4dd 100644
--- a/admin/src/views/task/driverDetail.vue
+++ b/admin/src/views/task/driverDetail.vue
@@ -3,15 +3,19 @@
<div class="modal_wrap">
<div class="modal_content">
<div class="header">
- <img v-if="info.status == '3' || info.status == '6'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
- <img v-else-if="info.status == '2' || info.status == '5'" class="head_bg" src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
+ <img v-if="info.status == '3' || info.status == '6'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png"
+ alt="">
+ <img v-else-if="info.status == '2' || info.status == '5'" class="head_bg"
+ src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
<img v-else-if="info.status == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt="">
<img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
<div class="left">
<div class="h1">鐗╂祦杞﹂绾�</div>
<div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
</div>
- <div class="right" :class="{ scs: info.status == '2' || info.status == '5', msg: info.status == '3' || info.status == '6' }">{{ statusMap[info.status] }}</div>
+ <div class="right"
+ :class="{ scs: info.status == '2' || info.status == '5', msg: info.status == '3' || info.status == '6' }">{{
+ statusMap[info.status] }}</div>
</div>
<div class="info">
<div class="title">鐗╂祦杞﹂绾︿俊鎭�</div>
@@ -43,7 +47,8 @@
<div class="item">
<div class="label">鍑嗚繍璇佺収鐗�</div>
<div v-if="info.transportImg" class="value">
- <el-image style="width: 100px" :preview-src-list="[info.prefixUrl + info.transportImg]" :src="info.prefixUrl + info.transportImg" alt="" />
+ <el-image style="width: 100px" :preview-src-list="[info.prefixUrl + info.transportImg]"
+ :src="info.prefixUrl + info.transportImg" alt="" />
</div>
</div>
</div>
@@ -210,7 +215,7 @@
}
})
},
- close(){
+ close() {
this.isShowModal = false
this.$emit('close')
},
@@ -275,6 +280,7 @@
border-radius: 8px;
overflow: hidden;
height: 100%;
+
.title {
font-weight: 600;
font-size: 18px;
@@ -317,7 +323,8 @@
margin: 0 -30px;
border-radius: 8px 8px 0 0;
position: relative;
- .head_bg{
+
+ .head_bg {
position: absolute;
width: 100%;
height: 100%;
@@ -325,6 +332,7 @@
top: 0;
z-index: 9;
}
+
.h1 {
font-weight: 600;
font-size: 22px;
@@ -349,10 +357,12 @@
position: relative;
z-index: 99;
}
- .scs{
+
+ .scs {
background-color: #00BA67;
}
- .msg{
+
+ .msg {
background-color: #ED4545;
}
}
@@ -398,6 +408,7 @@
display: flex;
margin-bottom: 24px;
position: relative;
+
.separate {
position: absolute;
border-left: 2px dashed #cccccc;
@@ -405,15 +416,18 @@
height: calc(100% - 2px);
top: 42px;
}
- .info{
+
+ .info {
padding-top: 10px;
margin-left: 20px;
margin-right: 16px;
+
.iconnew {
width: 24px;
height: 24px;
}
}
+
.avatar_wrap {
width: 40px;
height: 40px;
@@ -460,7 +474,7 @@
color: #777777;
.status {
- color: $primary-color;
+ color: $primaryColor;
}
}
@@ -480,6 +494,7 @@
width: 100%;
overflow-x: auto;
margin-top: 12px;
+
.carbon_item {
text-align: center;
flex-shrink: 0;
diff --git a/admin/src/views/task/index.vue b/admin/src/views/task/index.vue
index 28e27df..ac5d8d1 100644
--- a/admin/src/views/task/index.vue
+++ b/admin/src/views/task/index.vue
@@ -165,12 +165,12 @@
},
pagination: {
capacity: 10,
- page: 1
+ page: 1,
+ total: 0,
},
loading: false,
dataList: [],
headData: {},
- total: 0,
cateList: [
{ name: '璁垮鐢宠', id: 0 },
@@ -268,6 +268,7 @@
}).then(res => {
console.log('res', res)
this.dataList = res.records || []
+ this.pagination.total = res.total || 0
this.dataList.forEach(i => {
i.param1 = JSON.parse(i.param1)
})
diff --git a/admin/src/views/task/visReportDetail.vue b/admin/src/views/task/visReportDetail.vue
index 60f8ec5..83c8ce0 100644
--- a/admin/src/views/task/visReportDetail.vue
+++ b/admin/src/views/task/visReportDetail.vue
@@ -3,19 +3,17 @@
<div class="modal_wrap">
<div class="modal_content">
<div class="header">
- <img v-if="info.businessStatus == '3'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png"
+ <img v-if="info.businessStatus == '3'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
+ <img v-else-if="info.businessStatus == '2'" class="head_bg" src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
+ <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png"
alt="">
- <img v-else-if="info.businessStatus == '2'" class="head_bg"
- src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
- <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt="">
<img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
<div class="left">
<div class="h1">{{ cateList[type] }}</div>
<div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
</div>
- <div class="right"
- :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{
- statusMap[info.businessStatus] }}</div>
+ <div class="right" :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{
+ statusMap[info.businessStatus] }}</div>
</div>
<div class="info">
<div class="title">璁垮鎶ュ淇℃伅</div>
@@ -83,7 +81,7 @@
<div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
锛�<span :class="{ padding: item.statusInfo == '澶勭悊涓�' || item.status == '1' }">{{
item.statusInfo || ""
- }}</span>锛�
+ }}</span>锛�
</div>
</div>
</div>
@@ -96,7 +94,7 @@
" class="remark">
{{ item.checkInfo || "" }}
</div>
- <div v-if="item.approveType == 1" class="childList">
+ <div v-if="item.approveType == 0 || item.type == 1 || 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"
@@ -238,7 +236,7 @@
})
})
},
- close(){
+ close() {
this.isShowModal = false
this.$emit('close')
},
@@ -246,6 +244,18 @@
const { id } = this
getVisitedReDetail({ id }).then(res => {
this.info = res
+ if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) {
+ this.info.approveDateVO.approveList.forEach(item => {
+ if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.status = item.approveList[0].status
+ item.approveList = []
+ }
+ })
+ }
})
},
handleAppr(val) {
@@ -463,7 +473,7 @@
color: #888888;
.status {
- color: #00ba67;
+ color: $primaryColor;
}
}
diff --git a/admin/src/views/task/visSubDetail.vue b/admin/src/views/task/visSubDetail.vue
index db8dd9b..d9f19b2 100644
--- a/admin/src/views/task/visSubDetail.vue
+++ b/admin/src/views/task/visSubDetail.vue
@@ -516,7 +516,7 @@
color: #888888;
.status {
- color: #00ba67;
+ color: $primaryColor;
}
}
diff --git a/h5/App.vue b/h5/App.vue
index 137957d..487c8ad 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -29,7 +29,18 @@
max-width: 800rpx;
overflow-y: auto;
}
-
+.empty_wrap{
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ color: #666666;
+ min-height: 600rpx;
+ image{
+ width: 300rpx;
+ height: 300rpx;
+ }
+}
.doumee-container .ivu-tabs-nav {
width: 100%;
}
diff --git a/h5/manifest.json b/h5/manifest.json
index bde4892..aa547f7 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -41,9 +41,45 @@
]
},
/* ios鎵撳寘閰嶇疆 */
- "ios" : {},
+ "ios" : {
+ "dSYMs" : false
+ },
/* SDK閰嶇疆 */
- "sdkConfigs" : {}
+ "sdkConfigs" : {
+ "ad" : {}
+ },
+ "icons" : {
+ "android" : {
+ "hdpi" : "",
+ "xhdpi" : "",
+ "xxhdpi" : "",
+ "xxxhdpi" : ""
+ },
+ "ios" : {
+ "appstore" : "",
+ "ipad" : {
+ "app" : "",
+ "app@2x" : "",
+ "notification" : "",
+ "notification@2x" : "",
+ "proapp@2x" : "",
+ "settings" : "",
+ "settings@2x" : "",
+ "spotlight" : "",
+ "spotlight@2x" : ""
+ },
+ "iphone" : {
+ "app@2x" : "",
+ "app@3x" : "",
+ "notification@2x" : "",
+ "notification@3x" : "",
+ "settings@2x" : "",
+ "settings@3x" : "",
+ "spotlight@2x" : "",
+ "spotlight@3x" : ""
+ }
+ }
+ }
}
},
/* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
diff --git a/h5/pages/staff/index.vue b/h5/pages/staff/index.vue
index bc60368..87dae86 100644
--- a/h5/pages/staff/index.vue
+++ b/h5/pages/staff/index.vue
@@ -18,9 +18,17 @@
mode="widthFix"
></image>
</view>
- <view class="title_wrap"><view class="name">涓氬姟鍔炵悊</view></view>
+ <view v-if="list1.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap"><view class="name">涓氬姟鍔炵悊</view></view>
<view class="container1">
- <view class="left">
+ <view class="list">
+ <block v-for="item in list1" :key="item.name">
+ <view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)">
+ <image :src="item.img" class="icon" />
+ <view class="name">{{item.name}}</view>
+ </view>
+ </block>
+ </view>
+<!-- <view class="left">
<view class="img_wrap img1" @click="jump('/pages/staff/visitorReport')">
<image src="@/static/staff/ic_fangkebaobei.png" class="img"></image>
<view class="h1">璁垮鎶ュ</view>
@@ -54,12 +62,22 @@
<view class="h1">淇敼瀵嗙爜</view>
<view class="h2">CHANGE PASSWORD</view>
</view>
- </view>
+ </view> -->
</view>
<!-- -->
- <view class="title_wrap"><view class="name">涓氬姟鏌ヨ</view></view>
+ <view v-if="list2.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap"><view class="name">涓氬姟鏌ヨ</view></view>
<view class="container2">
- <view class="img_wrap" @click="jump('/pages/staff/task/index')">
+ <view class="list">
+ <block v-for="item in list2" :key="item.name">
+ <view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)">
+ <image :src="item.img" class="icon" />
+ <view class="name">{{item.name}}</view>
+ <view v-if="item.name == '浠诲姟涓績' && taskInfo" class="task_num">{{ taskInfo }}</view>
+ </view>
+ </block>
+ </view>
+
+<!-- <view class="img_wrap" @click="jump('/pages/staff/task/index')">
<image class="img" src="@/static/staff/ic_renwuzhongxin.png"></image>
<view class="h1">浠诲姟涓績</view>
<view class="h2">TASK CENTER</view>
@@ -81,7 +99,7 @@
<image class="img" src="@/static/staff/ic_huiyishiguanli.png"></image>
<view class="h1">浼氳瀹ょ鐞�</view>
<view class="h2">MANAGE MEETING ROOMS</view>
- </view>
+ </view> -->
</view>
<view class="copyright">
<image src="@/static/logo_s@2x.png" mode="widthFix" />
@@ -95,8 +113,23 @@
export default {
data() {
return {
- userInfo: uni.getStorageSync('userInfo'),
- taskInfo: 0
+ userInfo: uni.getStorageSync('userInfo') || {permissions: []},
+ taskInfo: 0,
+ list1: [
+ { name: '璁垮鎶ュ', url: '/pages/staff/visitorReport', img: require('@/static/home/ic_fangkebaobei@3x.png'),auth: 'weixin:menu:visitcar' },
+ { name: '闅愭偅闅忔墜鎷�', url: '/pages/staff/snapshot', img: require('@/static/home/ic_yinhuansuishoupai@3x.png'),auth: 'weixin:menu:hiddendanger' },
+ { name: '鐢ㄨ溅鐢宠', url: '/pages/staff/vehicle/index', img: require('@/static/home/ic_yongcheshenqing@3x.png'),auth: 'weixin:menu:usecar' },
+ { name: '棰勭害浼氳瀹�', url: '/pages/staff/meetingSub', img: require('@/static/home/ic_yuyuehuiyishi@3x.png'),auth: 'weixin:menu:meeting' },
+ { name: '淇敼瀵嗙爜', url: '/pages/changePassword/changePassword', img: require('@/static/home/ic_xiugaimima@3x.png'),auth: 'weixin:menu:password' },
+ { name: '鍛樺伐鑰冨嫟', url: '', img: require('@/static/home/ic_kaoqin@3x.png'),auth: 'weixin:menu:attendance' },
+ ],
+ list2: [
+ { name: '浠诲姟涓績', url: '/pages/staff/task/index', img: require('@/static/home/ic_renwuzhongxin@3x.png'),auth: 'weixin:menu:taskcenter' },
+ { name: '鎴戠殑浼氳鏃ュ巻', url: '/pages/staff/meetingCalendar', img: require('@/static/home/ic_wodehuiyi@3x.png'),auth: 'weixin:menu:meetingcalendar' },
+ { name: '娲捐溅璁板綍', url: '/pages/staff/vehicle/sendACar', img: require('@/static/home/ic_paichejilu@3x.png'),auth: 'weixin:menu:usecarrecord' },
+ { name: '浼氳瀹ょ鐞�', url: '/pages/staff/meetingManager', img: require('@/static/home/ic_huiyishiguanli@3x.png'),auth: 'weixin:menu:meetingmanage' }
+ ],
+
}
},
onLoad() {
@@ -152,6 +185,7 @@
console.log('----');
this.getTaskInfo()
})
+ console.log('aaa', this.userInfo.permissions.indexOf('system:user:create'));
},
methods: {
jump(path) {
@@ -159,6 +193,10 @@
url: path
})
},
+ checkAuth(str) {
+ const permissions = this.userInfo.permissions
+ return permissions.indexOf(str) > -1
+ },
loginOut() {
this.$store.commit('empty')
logoutPost()
@@ -171,6 +209,9 @@
isDetail: '1'
}).then(res => {
this.taskInfo = res.data.noticeWaitNum + res.data.noticeCopyNum
+ if(this.taskInfo && this.taskInfo > 99){
+ this.taskInfo = 99
+ }
})
},
}
@@ -203,6 +244,40 @@
.main_app {
padding-top: 12rpx;
}
+.list{
+ display: flex;
+ width: 100%;
+ flex-wrap: wrap;
+ .item{
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ width: 25%;
+ margin-bottom: 40rpx;
+ font-size: 26rpx;
+ position: relative;
+ image{
+ width: 88rpx;
+ height: 88rpx;
+ margin-bottom: 20rpx;
+ }
+ .task_num{
+ position: absolute;
+ top: -10rpx;
+ right: 28rpx;
+ font-size: 24rpx;
+ width: 36rpx;
+ height: 36rpx;
+ background-color: red;
+ color: #fff;
+ border-radius: 50%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ }
+}
.banner_wrap {
padding: 54rpx 44rpx;
color: #fff;
@@ -227,107 +302,22 @@
.container1 {
display: flex;
flex-wrap: wrap;
- view {
- width: 336rpx;
- }
- .left {
- margin-right: 18rpx;
- }
- .img_wrap {
- position: relative;
- padding: 24rpx 0rpx 0 28rpx;
- border-radius: 8rpx;
- overflow: hidden;
- .h1 {
- font-weight: 600;
- font-size: 32rpx;
- color: #222222;
- line-height: 48rpx;
- margin-bottom: 4rpx;
- }
- .h2 {
- font-size: 22rpx;
- color: #7b9da1;
- line-height: 34rpx;
- }
- .img {
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0;
- left: 0;
- z-index: -1;
- }
- }
- .img1 {
- width: 336rpx;
- height: 296rpx;
- margin-bottom: 16rpx;
- }
- .img2 {
- width: 336rpx;
- height: 140rpx;
- margin-bottom: 16rpx;
- }
+ padding: 10rpx 0 10rpx;
}
.container2 {
display: flex;
flex-wrap: wrap;
- .img_wrap {
- width: 336rpx;
- height: 140rpx;
- margin-bottom: 16rpx;
- position: relative;
- border-radius: 8rpx;
- overflow: hidden;
- padding: 24rpx 0rpx 0 28rpx;
- &:nth-of-type(2n) {
- margin-left: 18rpx;
- }
- .task_num {
- position: absolute;
- left: 168rpx;
- top: 26rpx;
- width: 52rpx;
- height: 52rpx;
- border-radius: 50%;
- /* border: 1px solid; */
- background-color: #fff;
- color: #db534c;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 24rpx;
- }
- .h1 {
- font-weight: 600;
- font-size: 32rpx;
- color: #222222;
- line-height: 48rpx;
- margin-bottom: 4rpx;
- }
- .h2 {
- font-size: 22rpx;
- color: #7b9da1;
- line-height: 34rpx;
- }
- .img {
- width: 100%;
- height: 100%;
- position: absolute;
- top: 0;
- left: 0;
- z-index: -1;
- }
- }
}
.copyright {
display: flex;
align-items: center;
justify-content: center;
- margin-top: 44rpx;
font-size: 24rpx;
color: #666666;
+ position: fixed;
+ width: 100%;
+ left: 0;
+ bottom: 88rpx;
image {
width: 40rpx;
height: 40rpx;
diff --git a/h5/pages/staff/meetingSel.vue b/h5/pages/staff/meetingSel.vue
index 9fb133c..a5b2594 100644
--- a/h5/pages/staff/meetingSel.vue
+++ b/h5/pages/staff/meetingSel.vue
@@ -22,7 +22,10 @@
mode="widthFix" class="checked"></image>
<text></text>
</view>
- <view class="empty"></view>
+ <view v-if="memberList.length == 0" class="empty">
+ <image src="@/static/empty.png" mode=""></image>
+ <text>鏆傛棤鏁版嵁</text>
+ </view>
</view>
<!-- -->
<view class="sub_wrap">
diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue
index 1d82d33..a99b6a1 100644
--- a/h5/pages/staff/meetingSubOrder.vue
+++ b/h5/pages/staff/meetingSubOrder.vue
@@ -80,7 +80,7 @@
/>
</view>
</view>
- <view class="item">
+ <view class="item" v-if="info.projectList && info.projectList.length > 0">
<view class="name">閫夋嫨鏈嶅姟椤�</view>
<view class="line">
<view class="label">
diff --git a/h5/pages/staff/memberSel.vue b/h5/pages/staff/memberSel.vue
index 8405ca0..0ec93ae 100644
--- a/h5/pages/staff/memberSel.vue
+++ b/h5/pages/staff/memberSel.vue
@@ -35,7 +35,10 @@
<text></text>
</view>
</checkbox-group>
- <view class="empty"></view>
+ <view v-if="memberList.length == 0" class="empty_wrap">
+ <image src="../../static/empty.png"></image>
+ <text>鏆傛棤鏁版嵁</text>
+ </view>
</view>
<!-- -->
<!-- <view class="sub_wrap">
diff --git a/h5/pages/staff/task/driver.vue b/h5/pages/staff/task/driver.vue
index 7018b5d..9726ae1 100644
--- a/h5/pages/staff/task/driver.vue
+++ b/h5/pages/staff/task/driver.vue
@@ -70,6 +70,7 @@
<image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
<image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
src="@/static/staff/ic_shenpiren@2x.png" />
+ <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
<span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
<image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png"
mode="widthFix" />
diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue
index 8ee559c..56ed2e0 100644
--- a/h5/pages/staff/task/index.vue
+++ b/h5/pages/staff/task/index.vue
@@ -242,6 +242,7 @@
},
headData: {},
dataList: [],
+ total: 0,
cateList: [
{ name: '璁垮鐢宠', id: 0 },
{ name: '璁垮鎶ュ', id: 1 },
@@ -258,9 +259,12 @@
// this.getList()
// },
onReachBottom() {
- // this.pagination.page = 0
- // this.dataList = []
- this.getList()
+ const { total, dataList} = this
+ if(dataList.length < total){
+ this.getList()
+ } else {
+ this.showToast('鏆傛棤鏇村鏁版嵁')
+ }
},
onBackPress(options) {
setTimeout(()=>{
@@ -316,6 +320,7 @@
}
}).then(res => {
this.dataList = [...this.dataList, ...res.data.records]
+ this.total = res.data.total
this.dataList.forEach(i => {
if (i.param1) {
i.param1 = JSON.parse(i.param1)
diff --git a/h5/pages/staff/task/visitorApprove.vue b/h5/pages/staff/task/visitorApprove.vue
index d695e11..da9ddc3 100644
--- a/h5/pages/staff/task/visitorApprove.vue
+++ b/h5/pages/staff/task/visitorApprove.vue
@@ -68,7 +68,8 @@
<view class="avatar">
<image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
<image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
- src="@/static/staff/ic_shenpiren@2x.png" />
+ src="@/static/staff/ic_shenpiren@2x.png" />
+ <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
<span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
<image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png"
mode="widthFix" />
diff --git a/h5/pages/staff/task/visitorReport.vue b/h5/pages/staff/task/visitorReport.vue
index 15e713a..b51016a 100644
--- a/h5/pages/staff/task/visitorReport.vue
+++ b/h5/pages/staff/task/visitorReport.vue
@@ -44,7 +44,7 @@
</view>
<view class="item">
<view class="label">璁垮鍗曚綅</view>
- <view class="value">{{ info.companyName }}浜�</view>
+ <view class="value">{{ info.companyName }}</view>
</view>
<view class="item">
<view class="label">鏉ヨ浜嬬敱</view>
@@ -63,6 +63,7 @@
<image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
<image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
src="@/static/staff/ic_shenpiren@2x.png" />
+ <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
<span v-else class="img_name">{{ item.memberName && item.memberName.slice(0, 1) }}</span>
<image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png"
mode="widthFix" />
diff --git a/h5/pages/staff/vehicle/applePeo.vue b/h5/pages/staff/vehicle/applePeo.vue
index 42e4a0e..58ec92a 100644
--- a/h5/pages/staff/vehicle/applePeo.vue
+++ b/h5/pages/staff/vehicle/applePeo.vue
@@ -15,7 +15,7 @@
/>
</view>
<view class="member_list">
- <view v-for="(item, index) in memberList" :key="item.id" class="line">
+ <view @click="changeMem(item, index)" v-for="(item, index) in memberList" :key="item.id" class="line">
<image
v-if="item.faceImgFull"
:src="item.faceImgFull"
@@ -31,14 +31,12 @@
<view class="depart">{{ item.companyName }}</view>
</view>
<image
- @click="changeMem(item, index)"
v-if="item.checked"
src="@/static/checkbox_sel@2x.png"
mode="widthFix"
class="checked"
></image>
<image
- @click="changeMem(item, index)"
v-if="!item.checked"
src="@/static/meeting/icon/ic_choose@2x.png"
mode="widthFix"
diff --git a/h5/pages/staff/vehicle/sendACar.vue b/h5/pages/staff/vehicle/sendACar.vue
index 997a031..bcf1fcc 100644
--- a/h5/pages/staff/vehicle/sendACar.vue
+++ b/h5/pages/staff/vehicle/sendACar.vue
@@ -96,7 +96,7 @@
minDate: '',
pagination: {
page: 0,
- capacity: 10
+ capacity: 6
},
total: 0,
dataList: [],
@@ -109,9 +109,12 @@
this.initData()
},
onReachBottom() {
- if (this.total > 10) {
+ console.log('onReachBottom');
+ if (this.total > this.dataList.length) {
this.getList()
- }
+ }else {
+ this.showToast('鏆傛棤鏇村鏁版嵁')
+ }
},
methods: {
getList() {
@@ -125,11 +128,7 @@
...pagination,
model: { ...param }
}).then(res => {
- if (pagination.page === 1) {
- this.dataList = res.data.records
- } else {
- this.dataList = [...list, ...res.data.records]
- }
+ this.dataList = [...this.dataList, ...res.data.records]
this.total = res.data.total
})
},
@@ -167,7 +166,7 @@
},
initData() {
getCarsList({
- type: 1
+ type: 0
}).then(res => {
this.carsList = [res.data]
})
diff --git a/h5/pages/staff/vehicle/sendACarDetail.vue b/h5/pages/staff/vehicle/sendACarDetail.vue
index da13b54..6e62334 100644
--- a/h5/pages/staff/vehicle/sendACarDetail.vue
+++ b/h5/pages/staff/vehicle/sendACarDetail.vue
@@ -1,538 +1,506 @@
-<template>
- <view class="main_app">
- <view class="status_wrap">
- <view class="name">{{ info.memberName }}鐨勭敤杞︾敵璇�</view>
- <view class="placeholder9">{{ info.companyName }}</view>
- <view
- class="desc"
- :class="{
- gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
- }"
- >{{ infoStatus }}</view
- >
- <view class="status">
- <text class="loading" :class="{
- grr: info.status == 1 || info.status == 2 || info.status == 4,
- error: info.status == 3
- }" v-if="info.status == '0'">{{statusMap[info.status]}}</text>
- </view>
- </view>
- <!-- -->
- <view class="emyty"></view>
- <view class="module_list">
- <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="item">
- <view class="label">棰勮鍑哄彂鏃堕棿</view>
- <view class="value">{{ info.planUseDate }}</view>
- </view>
- <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>
- <view class="item">
- <view class="label">鐢ㄨ溅浜嬬敱</view>
- <view class="value">{{ info.content }}</view>
- </view>
- <view class="item">
- <view class="label">杞﹁締淇℃伅</view>
- <view class="value">{{ info.carCode }}</view>
- </view>
- <view class="item">
- <view class="label">鍙告満淇℃伅</view>
- <view class="value">{{ info.driverName }} {{ info.driverPhone }}</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
- v-if="item.type == 1"
- class="img"
- src="@/static/staff/ic_chaosong@2x.png"
- />
- <image
- v-else-if="item.approveType == 1 || item.approveType == 0"
- class="img"
- src="@/static/staff/ic_shenpiren@2x.png"
- />
- <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
- <image
- v-if="item.status == 2"
- class="status"
- src="@/static/staff/liucheng_success@2x.png"
- mode="widthFix"
- />
- <image
- v-if="item.status == 3"
- class="status"
- src="@/static/staff/liucheng_fail@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"
- v-if="
- info.approveDateVO != null &&
- info.approveDateVO.canBeApproved != null &&
- info.approveDateVO.canBeApproved == 1
- "
- >
- <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"
- :round="10"
- :safeAreaInsetBottom="true"
- mode="bottom"
- @close="showApprModal = false"
- >
- <view class="appr_modal">
- <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
- 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>
- <!-- 鍙告満 -->
- <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, carUseBookAppr, driveListPost, carUseBookBack } from '@/api'
-export default {
- data() {
- return {
- showApprModal: false,
- isShowBack: false,
- backParam: {},
- isShowDrive: false,
- id: '',
- appr: '',
- infoStatus: '',
- info: {},
- param: {
- status: ''
- },
- statusMap: {
- 0: '寰呭鎵�',
- 1: '瀹℃壒涓�',
- 2: '宸查�氳繃',
- 3: '鎾ゅ洖鐢宠',
- 4: '宸插彇娑�',
- },
- driveList: []
-
- }
- },
- onLoad(option) {
- this.id = option.id
- this.appr = option.appr || ''
- this.infoStatus = option.info
- this.getDetail()
- },
- methods: {
- getDetail() {
- const { id } = this
- carUseBookDetail(id).then(res => {
- this.info = { ...res.data }
- })
- },
- 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 =
- 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>
-<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: 600;
- 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;
- display: flex;
- align-items: center;
- justify-content: center;
- .img {
- width: 80rpx;
- height: 80rpx;
- border-radius: 50%;
- }
- .img_name{
- font-size: 32rpx;
- color: #FFFFFF;
- }
- .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;
- font-size: 26rpx;
- color: #777777;
- .child_img {
- width: 48rpx;
- height: 48rpx;
- border-radius: 50%;
- margin-bottom: 2rpx;
- }
- .child_name{
- margin-bottom: 2rpx;
- width: 48rpx;
- height: 48rpx;
- text-align: center;
- justify-content: center;
- padding-top: 4rpx;
- font-size: 28rpx;
- border-radius: 50%;
- color: #FFFFFF;
- background-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;
- }
- }
- }
- &: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 {
+<template>
+ <view class="main_app">
+ <view class="status_wrap">
+ <view class="name">{{ info.createMemberName }}鎻愪氦鐨勭敤杞︾敵璇�</view>
+ <view
+ class="desc"
+ :class="{
+ gray: info.status == '2' || info.status == '3' || info.status == '4',
+ }"
+ >{{ infoStatus }}</view
+ >
+ <view v-if="info.status == '0' || info.status == '1'" 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" v-if="info.startTime">{{ info.startTime.slice(0, 16) }}鑷硔{
+ info.endTime.slice(0, 16)
+ }}</view>
+ </view>
+ <view class="item">
+ <view class="label">棰勮鍑哄彂鏃堕棿</view>
+ <view class="value">{{ info.planUseDate }}</view>
+ </view>
+ <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>
+ <view class="item">
+ <view class="label">鐢ㄨ溅浜嬬敱</view>
+ <view class="value">{{ info.content }}</view>
+ </view>
+ <view class="item">
+ <view class="label">杞﹁締淇℃伅</view>
+ <view class="value">{{ info.carCode }}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍙告満淇℃伅</view>
+ <view class="value">{{ info.driverName }} {{ info.driverPhone }}</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 v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
+ <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
+ src="@/static/staff/ic_shenpiren@2x.png" />
+ <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
+ <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
+ <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png"
+ mode="widthFix" />
+ <image v-if="item.status == 3" class="status" src="@/static/staff/liucheng_fail@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: item.statusInfo == '澶勭悊涓�' || item.status == '1' }"
+ v-if="item.statusInfo">({{ item.statusInfo }})</text></text>
+ </view>
+ <view v-if="item.checkInfo" class="remark">{{
+ item.checkInfo
+ }}</view>
+ <!-- 鎶勯�佷汉 -->
+ <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children">
+ <view class="child" v-for="child in item.approveList" :key="child.id">
+ <image v-if="child.faceImg" class="child_img" :src="child.faceImg" />
+ <view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view>
+ <view>{{ child.memberName }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="emyty"></view>
+ <view class="main_footer" v-if="
+ info.approveDateVO != null &&
+ info.approveDateVO.canBeApproved != null &&
+ info.approveDateVO.canBeApproved == 1
+ ">
+ <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" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="showApprModal = false">
+ <view class="appr_modal">
+ <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 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>
+ <!-- 鍙告満 -->
+ <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,
+ carUseBookAppr,
+ driveListPost,
+ carUseBookBack
+ } from '@/api'
+ export default {
+ data() {
+ return {
+ showApprModal: false,
+ isShowBack: false,
+ backParam: {},
+ isShowDrive: false,
+ id: '',
+ appr: '',
+ infoStatus: '',
+ info: {},
+ param: {
+ status: ''
+ },
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '宸查�氳繃',
+ 3: '鎾ゅ洖鐢宠',
+ 4: '宸插彇娑�',
+ },
+ driveList: []
+
+ }
+ },
+ onLoad(option) {
+ this.id = option.id
+ this.appr = option.appr || ''
+ this.infoStatus = option.info
+ this.getDetail()
+ },
+ methods: {
+ getDetail() {
+ const {
+ id
+ } = this
+ carUseBookDetail(id).then(res => {
+ this.info = {
+ ...res.data
+ }
+ if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) {
+ this.info.approveDateVO.approveList.forEach(item => {
+ if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.status = item.approveList[0].status
+ item.approveList = []
+ }
+ })
+ }
+ })
+ },
+ 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 =
+ 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>
+<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: 600;
+ 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;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ }
+
+ .img_name {
+ font-size: 32rpx;
+ color: #FFFFFF;
+ }
+
+ .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;
+ font-size: 26rpx;
+ color: #777777;
+
+ .child_img {
+ width: 48rpx;
+ height: 48rpx;
+ border-radius: 50%;
+ margin-bottom: 2rpx;
+ }
+
+ .child_name {
+ margin-bottom: 2rpx;
+ width: 48rpx;
+ height: 48rpx;
+ text-align: center;
+ justify-content: center;
+ padding-top: 4rpx;
+ font-size: 28rpx;
+ border-radius: 50%;
+ color: #FFFFFF;
+ background-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;
+ }
+ }
+ }
+
+ &: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: 600;
font-size: 32rpx;
- margin-bottom: 16rpx;
+ margin-bottom: 20rpx;
color: #222222;
}
.desc {
font-size: 26rpx;
color: #ed4545;
- margin-top: 16rpx;
}
+
.gray {
color: #999999;
}
@@ -548,67 +516,75 @@
background-color: #e9edff;
color: $uni-color-primary;
}
- }
- .main_footer {
- padding-bottom: 64rpx;
- display: flex;
- justify-content: space-between;
-
- .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;
+ .status_img {
+ position: absolute;
+ right: 0rpx;
+ top: 20rpx;
+ width: 120rpx;
}
-
- .agree {
- background: $uni-color-primary;
- color: #fff;
- border: 1rpx solid $uni-color-primary;
- }
- }
-
- .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: 600;
- 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>
+ }
+ .main_footer {
+ padding-bottom: 64rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .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;
+ }
+
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
+
+ .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: 600;
+ 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>
\ No newline at end of file
diff --git a/h5/pages/staff/vehicle/shinei.vue b/h5/pages/staff/vehicle/shinei.vue
index 5413edf..35e29fe 100644
--- a/h5/pages/staff/vehicle/shinei.vue
+++ b/h5/pages/staff/vehicle/shinei.vue
@@ -226,7 +226,7 @@
},
initData() {
getCarsList({
- type: 1
+ type: 0
}).then(res => {
this.carsList = [res.data]
})
diff --git a/h5/pages/staff/vehicle/shiwai.vue b/h5/pages/staff/vehicle/shiwai.vue
index ff51cda..8470ad9 100644
--- a/h5/pages/staff/vehicle/shiwai.vue
+++ b/h5/pages/staff/vehicle/shiwai.vue
@@ -83,7 +83,7 @@
@confirm="seletedCar"
@cancel="isShowCar = false"
></u-picker>
- <u-datetime-picker
+ <!-- <u-datetime-picker
mode="datetime"
:show="isShowDate"
:filter="timeFilter"
@@ -93,11 +93,20 @@
:closeOnClickOverlay="true"
@confirm="seletedDate"
@cancel="isShowDate = false"
- />
+ /> -->
+ <u-datetime-picker
+ mode="datetime"
+ :show="isShowDate"
+ title="寮�濮嬫椂闂�"
+ :minDate="minDate"
+ @close="isShowDate = false"
+ :closeOnClickOverlay="true"
+ @confirm="seletedDate"
+ @cancel="isShowDate = false"
+ />
<u-datetime-picker
mode="datetime"
:show="isShowEndDate"
- :filter="timeFilter"
title="缁撴潫鏃堕棿"
:minDate="new Date(param.startTime || null).getTime()"
@close="endtimeClose"
@@ -204,7 +213,7 @@
},
initData() {
getCarsList({
- type: 1
+ type: 0
}).then(res => {
this.carsList = [res.data]
})
diff --git a/h5/static/home/ic_fangkebaobei@3x.png b/h5/static/home/ic_fangkebaobei@3x.png
new file mode 100644
index 0000000..d1018ca
--- /dev/null
+++ b/h5/static/home/ic_fangkebaobei@3x.png
Binary files differ
diff --git a/h5/static/home/ic_huiyishiguanli@3x.png b/h5/static/home/ic_huiyishiguanli@3x.png
new file mode 100644
index 0000000..a7a0263
--- /dev/null
+++ b/h5/static/home/ic_huiyishiguanli@3x.png
Binary files differ
diff --git a/h5/static/home/ic_kaoqin@3x.png b/h5/static/home/ic_kaoqin@3x.png
new file mode 100644
index 0000000..da0d369
--- /dev/null
+++ b/h5/static/home/ic_kaoqin@3x.png
Binary files differ
diff --git a/h5/static/home/ic_paichejilu@3x.png b/h5/static/home/ic_paichejilu@3x.png
new file mode 100644
index 0000000..de7192e
--- /dev/null
+++ b/h5/static/home/ic_paichejilu@3x.png
Binary files differ
diff --git a/h5/static/home/ic_renwuzhongxin@3x.png b/h5/static/home/ic_renwuzhongxin@3x.png
new file mode 100644
index 0000000..0e54df7
--- /dev/null
+++ b/h5/static/home/ic_renwuzhongxin@3x.png
Binary files differ
diff --git a/h5/static/home/ic_wodehuiyi@3x.png b/h5/static/home/ic_wodehuiyi@3x.png
new file mode 100644
index 0000000..77bd6c2
--- /dev/null
+++ b/h5/static/home/ic_wodehuiyi@3x.png
Binary files differ
diff --git a/h5/static/home/ic_xiugaimima@3x.png b/h5/static/home/ic_xiugaimima@3x.png
new file mode 100644
index 0000000..612d5bd
--- /dev/null
+++ b/h5/static/home/ic_xiugaimima@3x.png
Binary files differ
diff --git a/h5/static/home/ic_yinhuansuishoupai@3x.png b/h5/static/home/ic_yinhuansuishoupai@3x.png
new file mode 100644
index 0000000..0850454
--- /dev/null
+++ b/h5/static/home/ic_yinhuansuishoupai@3x.png
Binary files differ
diff --git a/h5/static/home/ic_yongcheshenqing@3x.png b/h5/static/home/ic_yongcheshenqing@3x.png
new file mode 100644
index 0000000..b84bb18
--- /dev/null
+++ b/h5/static/home/ic_yongcheshenqing@3x.png
Binary files differ
diff --git a/h5/static/home/ic_yuyuehuiyishi@3x.png b/h5/static/home/ic_yuyuehuiyishi@3x.png
new file mode 100644
index 0000000..f444555
--- /dev/null
+++ b/h5/static/home/ic_yuyuehuiyishi@3x.png
Binary files differ
diff --git "a/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk" "b/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk"
new file mode 100644
index 0000000..eff3492
--- /dev/null
+++ "b/h5_meeting/unpackage/release/apk/\344\274\232\350\256\256\345\256\244.apk"
Binary files differ
diff --git a/pda/api/index.js b/pda/api/index.js
index c7c9064..7ac7ff8 100644
--- a/pda/api/index.js
+++ b/pda/api/index.js
@@ -157,4 +157,12 @@
method: 'get',
data
})
+}
+// 棰勭害 璇︽儏
+export const driverApplyDetail = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/getDetail',
+ method: 'get',
+ data
+ })
}
\ No newline at end of file
diff --git a/pda/manifest.json b/pda/manifest.json
index cb7800a..06d4bc0 100644
--- a/pda/manifest.json
+++ b/pda/manifest.json
@@ -1,96 +1,101 @@
-{
- "name": "pda",
- "appid": "__UNI__8789FB4",
- "description": "",
- "versionName": "1.0.0",
- "versionCode": "100",
- "transformPx": false,
- "h5": {
- "router": {
- "mode": "hash",
- "base": "./"
- },
- // "base" : "/h5/"
- "devServer": {
- "port": 8090,
- "historyApiFallback": true,
- "disableHostCheck": true,
- "proxy": {
- "/gateway_interface": {
- // 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
- "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- // "target": "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- "changeOrigin": true, // 鍏佽璺ㄥ煙
- "pathRewrite": {
- "^/gateway_interface": "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
- }
- }
- },
- "https": false
- }
- },
- /* 5+App鐗规湁鐩稿叧 */
- "app-plus": {
- "usingComponents": true,
- "nvueStyleCompiler": "uni-app",
- "compilerVersion": 3,
- "splashscreen": {
- "alwaysShowBeforeRender": true,
- "waiting": true,
- "autoclose": true,
- "delay": 0
- },
- /* 妯″潡閰嶇疆 */
- "modules": {},
- /* 搴旂敤鍙戝竷淇℃伅 */
- "distribute": {
- /* android鎵撳寘閰嶇疆 */
- "android": {
- "permissions": [
- "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
- "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
- "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
- "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
- "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
- "<uses-permission android:name=\"android.permission.CAMERA\"/>",
- "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
- "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
- "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
- "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
- "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
- "<uses-feature android:name=\"android.hardware.camera\"/>",
- "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
- ]
- },
- /* ios鎵撳寘閰嶇疆 */
- "ios": {},
- /* SDK閰嶇疆 */
- "sdkConfigs": {}
- }
- },
- /* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
- "quickapp": {},
- /* 灏忕▼搴忕壒鏈夌浉鍏� */
- "mp-weixin": {
- "appid": "",
- "setting": {
- "urlCheck": false
- },
- "usingComponents": true
- },
- "mp-alipay": {
- "usingComponents": true
- },
- "mp-baidu": {
- "usingComponents": true
- },
- "mp-toutiao": {
- "usingComponents": true
- },
- "uniStatistics": {
- "enable": false
- },
- "vueVersion": "2"
-}
\ No newline at end of file
+{
+ "name" : "鏈堝彴璋冨害",
+ "appid" : "__UNI__8789FB4",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ "h5" : {
+ "router" : {
+ "mode" : "hash",
+ "base" : "./"
+ },
+ // "base" : "/h5/"
+ "devServer" : {
+ "port" : 8090,
+ "historyApiFallback" : true,
+ "disableHostCheck" : true,
+ "proxy" : {
+ "/gateway_interface" : {
+ // 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
+ "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+
+ // "target": "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "changeOrigin" : true, // 鍏佽璺ㄥ煙
+ "pathRewrite" : {
+ "^/gateway_interface" : "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
+ }
+ }
+ },
+ "https" : false
+ }
+ },
+ /* 5+App鐗规湁鐩稿叧 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 妯″潡閰嶇疆 */
+ "modules" : {},
+ /* 搴旂敤鍙戝竷淇℃伅 */
+ "distribute" : {
+ /* android鎵撳寘閰嶇疆 */
+ "android" : {
+ "permissions" : [
+ "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+ "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+ "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+ "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+ "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+ "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+ "<uses-feature android:name=\"android.hardware.camera\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+ ]
+ },
+ /* ios鎵撳寘閰嶇疆 */
+ "ios" : {
+ "dSYMs" : false
+ },
+ /* SDK閰嶇疆 */
+ "sdkConfigs" : {
+ "ad" : {}
+ }
+ }
+ },
+ /* 蹇簲鐢ㄧ壒鏈夌浉鍏� */
+ "quickapp" : {},
+ /* 灏忕▼搴忕壒鏈夌浉鍏� */
+ "mp-weixin" : {
+ "appid" : "",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "vueVersion" : "2"
+}
diff --git a/pda/pages.json b/pda/pages.json
index 1ee5126..6d9ccbf 100644
--- a/pda/pages.json
+++ b/pda/pages.json
@@ -44,6 +44,13 @@
"navigationBarTitleText": "閰嶇疆鏄剧ず鏈堝彴",
"enablePullDownRefresh": false
}
+ },
+ {
+ "path": "pages/index/SubDetail",
+ "style": {
+ "navigationBarTitleText": "棰勭害璇︽儏",
+ "enablePullDownRefresh": false
+ }
}
],
"globalStyle": {
diff --git a/pda/pages/index/SubDetail.vue b/pda/pages/index/SubDetail.vue
new file mode 100644
index 0000000..c554aa8
--- /dev/null
+++ b/pda/pages/index/SubDetail.vue
@@ -0,0 +1,466 @@
+<template>
+ <view class="main_app">
+ <view class="status_wrap">
+ <view class="name">{{info.driverName}}鐨勫叆鍥绾�</view>
+ <view class="gray">{{info.carCodeFront}}</view>
+<!-- <view class="desc" :class="{
+ gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
+ }">{{ infoStatus }}</view> -->
+ <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view>
+ <image v-if="info.status == 2" class="icon" src="@/static/ic_passed@2x.png" mode=""></image>
+ <image v-if="info.status == 3" class="icon" src="@/static/ic_refused@2x.png" mode=""></image>
+ </view>
+ <!-- -->
+ <view class="emyty"></view>
+ <view class="module_list">
+ <view class="item">
+ <view class="label">鍏ュ洯鍘熷洜</view>
+ <view class="value">{{info.inReason}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍚堝悓缂栧彿</view>
+ <view class="value">{{info.contractNum}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍒板満鏃堕棿</view>
+ <view v-if="info.arriveDate" class="value">{{info.arriveDate.slice(0,16)}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍑嗚繍璇佺収鐗�</view>
+ <view class="value">
+ <image
+ v-if="info.transportImg"
+ class="avatar_wrap"
+ :src="info.prefixUrl + info.transportImg"
+ ></image>
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鍏ュ簱绫诲瀷</view>
+ <view class="value">{{info.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'}}</view>
+ </view>
+ <view class="item">
+ <view class="label">鎬昏繍鏁伴噺</view>
+ <view class="value">{{info.totalNum}}涓囨敮</view>
+ </view>
+ <view class="emyty"></view>
+ <view class="item">
+ <view class="label">鍙告満濮撳悕</view>
+ <view class="value">{{info.driverName}}
+ </view>
+ </view>
+ <view class="item">
+ <view class="label">鎵嬫満鍙�</view>
+ <view class="value">{{info.driverPhone}}</view>
+ </view>
+ <view class="item">
+ <view class="label">杞︾墝鐓�</view>
+ <view class="value">鍓� {{info.carCodeFront}}锛屽悗 {{info.carCodeBack}}</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 v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
+ <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
+ src="@/static/staff/ic_shenpiren@2x.png" />
+ <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
+ <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
+ <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png"
+ mode="widthFix" />
+ <image v-if="item.status == 3" class="status" src="@/static/staff/liucheng_fail@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: item.statusInfo == '澶勭悊涓�' || item.status == '1' }"
+ v-if="item.statusInfo">({{ item.statusInfo }})</text></text>
+ </view>
+ <view v-if="item.checkInfo" class="remark">{{
+ item.checkInfo
+ }}</view>
+ <!-- 鎶勯�佷汉 -->
+ <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children">
+ <view class="child" v-for="child in item.approveList" :key="child.id">
+ <image v-if="child.faceImg" class="child_img" :src="child.faceImg" />
+ <view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view>
+ <view>{{ child.memberName }}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="emyty"></view>
+
+ </view>
+</template>
+
+<script>
+ import { driverApplyDetail } from '@/api'
+export default {
+ data() {
+ return {
+ showApprModal: false,
+ checkInfo: '',
+ infoStatus: '',
+ flag: '1',
+ info: {},
+ type: 0,
+ statusMap: {
+ 0: '寰呭鎵�',
+ 1: '瀹℃壒涓�',
+ 2: '宸查�氳繃',
+ 3: '宸叉嫆缁�',
+ 4: '宸插彇娑�',
+ },
+ }
+ },
+ onLoad(option) {
+ // this.type = option.objType
+ // this.infoStatus = option.info
+ this.getDetail(option.id)
+ },
+ methods: {
+ getDetail(id) {
+ driverApplyDetail({id}).then(res => {
+ this.info = res.data
+ if(this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0 ){
+ this.info.approveDateVO.approveList.forEach(item => {
+ if(item.approveList && item.approveList.length == 1 && item.type !== 1){
+ item.title = item.approveList[0].title
+ item.faceImg = item.approveList[0].faceImg
+ item.memberName = item.approveList[0].memberName
+ item.statusInfo = item.approveList[0].statusInfo
+ item.approveList = []
+ }
+ })
+ }
+ console.log('this.info.approveDateVO', this.info.approveDateVO.approveList);
+ })
+ },
+ },
+}
+</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: 600;
+ 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;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ }
+
+ .img_name {
+ font-size: 32rpx;
+ color: #FFFFFF;
+ }
+
+ .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;
+ font-size: 26rpx;
+ color: #777777;
+
+ .child_img {
+ width: 48rpx;
+ height: 48rpx;
+ border-radius: 50%;
+ margin-bottom: 2rpx;
+ }
+
+ .child_name {
+ margin-bottom: 2rpx;
+ width: 48rpx;
+ height: 48rpx;
+ text-align: center;
+ justify-content: center;
+ padding-top: 4rpx;
+ font-size: 28rpx;
+ border-radius: 50%;
+ color: #FFFFFF;
+ background-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;
+ }
+ }
+ }
+
+ &: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_wrap {
+ 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: 600;
+ font-size: 32rpx;
+ margin-bottom: 20rpx;
+ color: #222222;
+ }
+
+ .desc {
+ font-size: 26rpx;
+ color: #ed4545;
+ margin-bottom: 12rpx;
+ }
+ .gray {
+ color: #999999;
+ margin-bottom: 12rpx;
+ }
+
+ .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;
+ }
+ .icon{
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0rpx;
+ top: 20rpx;
+
+ }
+ }
+
+ .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;
+ }
+
+ .agree {
+ background: $uni-color-primary;
+ color: #fff;
+ border: 1rpx solid $uni-color-primary;
+ }
+ }
+
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
+
+ .title {
+ font-weight: 600;
+ 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/pda/pages/index/center.vue b/pda/pages/index/center.vue
index 478bfab..1452c7a 100644
--- a/pda/pages/index/center.vue
+++ b/pda/pages/index/center.vue
@@ -39,7 +39,8 @@
</view>
<view class="line" v-else>
<text class="label">鍚堝悓鍗曞彿</text>
- <text class="value">{{ item.contractNum }}</text>
+ <text class="value">{{ item.contractNum }}</text>
+ <text class="primaryColor" @click="subDetail(item)">棰勭害璇︽儏</text>
</view>
<view class="line">
<text class="label">椹鹃┒鍛�</text>
@@ -103,7 +104,8 @@
</view>
<view class="line" v-else>
<text class="label">鍚堝悓鍗曞彿</text>
- <text class="value">{{ item.contractNum }}</text>
+ <text class="value">{{ item.contractNum }}</text>
+ <text class="primaryColor" @click="subDetail(item)">棰勭害璇︽儏</text>
</view>
<view class="line">
<text class="label">椹鹃┒鍛�</text>
@@ -325,6 +327,11 @@
this.wmsInfo = res.data
this.showDetail = true
})
+ },
+ subDetail(item) {
+ uni.navigateTo({
+ url: `/pages/index/SubDetail?id=${item.bookId}`
+ })
},
handleFinish(item) {
finishWork({
diff --git a/pda/pages/index/login.vue b/pda/pages/index/login.vue
index 8a53efa..e07389e 100644
--- a/pda/pages/index/login.vue
+++ b/pda/pages/index/login.vue
@@ -42,8 +42,8 @@
data() {
return {
form: {
- username: '13996529050',
- password: '123456',
+ username: '',
+ password: '',
},
err: '',
isShowProtocol: false,
diff --git a/pda/pages/index/queueup.vue b/pda/pages/index/queueup.vue
index f3e8a24..816e324 100644
--- a/pda/pages/index/queueup.vue
+++ b/pda/pages/index/queueup.vue
@@ -46,6 +46,7 @@
<view class="line" v-else>
<text class="label">鍚堝悓鍗曞彿</text>
<text class="value">{{ item.contractNum }}</text>
+ <text class="primaryColor" @click="subDetail(item)">棰勭害璇︽儏</text>
</view>
<view class="line">
<text class="label">椹鹃┒鍛�</text>
@@ -163,6 +164,11 @@
this.showDetail = true
})
},
+ subDetail(item) {
+ uni.navigateTo({
+ url: `/pages/index/SubDetail?id=${item.bookId}`
+ })
+ },
getPlatformGroup() {
getPlatformGroupList({
queryData: 1,
diff --git a/pda/static/ic_passed@2x.png b/pda/static/ic_passed@2x.png
new file mode 100644
index 0000000..97d3aa1
--- /dev/null
+++ b/pda/static/ic_passed@2x.png
Binary files differ
diff --git a/pda/static/ic_refused@2x.png b/pda/static/ic_refused@2x.png
new file mode 100644
index 0000000..87fb1d0
--- /dev/null
+++ b/pda/static/ic_refused@2x.png
Binary files differ
diff --git a/pda/static/staff/ic_chaosong@2x.png b/pda/static/staff/ic_chaosong@2x.png
new file mode 100644
index 0000000..8743f53
--- /dev/null
+++ b/pda/static/staff/ic_chaosong@2x.png
Binary files differ
diff --git a/pda/static/staff/ic_shenpiren@2x.png b/pda/static/staff/ic_shenpiren@2x.png
new file mode 100644
index 0000000..6f2c7c9
--- /dev/null
+++ b/pda/static/staff/ic_shenpiren@2x.png
Binary files differ
diff --git a/pda/static/staff/liucheng_fail@2x.png b/pda/static/staff/liucheng_fail@2x.png
new file mode 100644
index 0000000..c686a8c
--- /dev/null
+++ b/pda/static/staff/liucheng_fail@2x.png
Binary files differ
diff --git a/pda/static/staff/liucheng_success@2x.png b/pda/static/staff/liucheng_success@2x.png
new file mode 100644
index 0000000..9fb9e77
--- /dev/null
+++ b/pda/static/staff/liucheng_success@2x.png
Binary files differ
diff --git a/pda/unpackage/release/apk/__UNI__8789FB4__20241018164933.apk b/pda/unpackage/release/apk/__UNI__8789FB4__20241018164933.apk
new file mode 100644
index 0000000..304d595
--- /dev/null
+++ b/pda/unpackage/release/apk/__UNI__8789FB4__20241018164933.apk
Binary files differ
diff --git a/pda/unpackage/release/apk/pda.apk b/pda/unpackage/release/apk/pda.apk
new file mode 100644
index 0000000..b25044c
--- /dev/null
+++ b/pda/unpackage/release/apk/pda.apk
Binary files differ
diff --git a/pda/unpackage/res/icons/1024x1024.png b/pda/unpackage/res/icons/1024x1024.png
new file mode 100644
index 0000000..8e5ccd4
--- /dev/null
+++ b/pda/unpackage/res/icons/1024x1024.png
Binary files differ
diff --git a/pda/unpackage/res/icons/120x120.png b/pda/unpackage/res/icons/120x120.png
new file mode 100644
index 0000000..650cc00
--- /dev/null
+++ b/pda/unpackage/res/icons/120x120.png
Binary files differ
diff --git a/pda/unpackage/res/icons/144x144.png b/pda/unpackage/res/icons/144x144.png
new file mode 100644
index 0000000..1b2fc49
--- /dev/null
+++ b/pda/unpackage/res/icons/144x144.png
Binary files differ
diff --git a/pda/unpackage/res/icons/152x152.png b/pda/unpackage/res/icons/152x152.png
new file mode 100644
index 0000000..0bc20ba
--- /dev/null
+++ b/pda/unpackage/res/icons/152x152.png
Binary files differ
diff --git a/pda/unpackage/res/icons/167x167.png b/pda/unpackage/res/icons/167x167.png
new file mode 100644
index 0000000..bd290e8
--- /dev/null
+++ b/pda/unpackage/res/icons/167x167.png
Binary files differ
diff --git a/pda/unpackage/res/icons/180x180.png b/pda/unpackage/res/icons/180x180.png
new file mode 100644
index 0000000..93ab56f
--- /dev/null
+++ b/pda/unpackage/res/icons/180x180.png
Binary files differ
diff --git a/pda/unpackage/res/icons/192x192.png b/pda/unpackage/res/icons/192x192.png
new file mode 100644
index 0000000..e6e6595
--- /dev/null
+++ b/pda/unpackage/res/icons/192x192.png
Binary files differ
diff --git a/pda/unpackage/res/icons/20x20.png b/pda/unpackage/res/icons/20x20.png
new file mode 100644
index 0000000..ceaeb7c
--- /dev/null
+++ b/pda/unpackage/res/icons/20x20.png
Binary files differ
diff --git a/pda/unpackage/res/icons/29x29.png b/pda/unpackage/res/icons/29x29.png
new file mode 100644
index 0000000..154fa02
--- /dev/null
+++ b/pda/unpackage/res/icons/29x29.png
Binary files differ
diff --git a/pda/unpackage/res/icons/40x40.png b/pda/unpackage/res/icons/40x40.png
new file mode 100644
index 0000000..d1c2b47
--- /dev/null
+++ b/pda/unpackage/res/icons/40x40.png
Binary files differ
diff --git a/pda/unpackage/res/icons/58x58.png b/pda/unpackage/res/icons/58x58.png
new file mode 100644
index 0000000..a4cc188
--- /dev/null
+++ b/pda/unpackage/res/icons/58x58.png
Binary files differ
diff --git a/pda/unpackage/res/icons/60x60.png b/pda/unpackage/res/icons/60x60.png
new file mode 100644
index 0000000..d42638d
--- /dev/null
+++ b/pda/unpackage/res/icons/60x60.png
Binary files differ
diff --git a/pda/unpackage/res/icons/72x72.png b/pda/unpackage/res/icons/72x72.png
new file mode 100644
index 0000000..f6ef39e
--- /dev/null
+++ b/pda/unpackage/res/icons/72x72.png
Binary files differ
diff --git a/pda/unpackage/res/icons/76x76.png b/pda/unpackage/res/icons/76x76.png
new file mode 100644
index 0000000..afed12c
--- /dev/null
+++ b/pda/unpackage/res/icons/76x76.png
Binary files differ
diff --git a/pda/unpackage/res/icons/80x80.png b/pda/unpackage/res/icons/80x80.png
new file mode 100644
index 0000000..e0b8ee0
--- /dev/null
+++ b/pda/unpackage/res/icons/80x80.png
Binary files differ
diff --git a/pda/unpackage/res/icons/87x87.png b/pda/unpackage/res/icons/87x87.png
new file mode 100644
index 0000000..09839e1
--- /dev/null
+++ b/pda/unpackage/res/icons/87x87.png
Binary files differ
diff --git a/pda/unpackage/res/icons/96x96.png b/pda/unpackage/res/icons/96x96.png
new file mode 100644
index 0000000..dcccdbc
--- /dev/null
+++ b/pda/unpackage/res/icons/96x96.png
Binary files differ
--
Gitblit v1.9.3