From 0ed2002103cfe3d0892ee2468d98b7d3fad8e7b9 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 18 十月 2024 15:45:06 +0800
Subject: [PATCH] ll
---
admin/src/views/login.vue | 2
pda/api/index.js | 8
pda/static/ic_refused@2x.png | 0
admin/src/components/common/GlobalAlertWindow.vue | 11
admin/src/views/business/approvalConfiguration.vue | 265 ++++-----
pda/static/staff/ic_chaosong@2x.png | 0
admin/src/views/operation/serviceCar/apprConfig.vue | 267 ++++-----
pda/pages.json | 7
pda/pages/index/SubDetail.vue | 466 +++++++++++++++++
admin/src/views/business/approvalReport.vue | 263 ++++-----
pda/static/staff/ic_shenpiren@2x.png | 0
admin/src/components/business/OperaPlatformApproveTemplWindow.vue | 20
pda/static/staff/liucheng_fail@2x.png | 0
pda/static/ic_passed@2x.png | 0
pda/pages/index/queueup.vue | 6
admin/src/components/common/CommonHeader.vue | 11
pda/pages/index/center.vue | 11
pda/manifest.json | 197 +++---
pda/static/staff/liucheng_success@2x.png | 0
19 files changed, 964 insertions(+), 570 deletions(-)
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 8af6eef..4b5996f 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -40,6 +40,8 @@
<GlobalAlertWindow
title="淇敼瀵嗙爜"
:visible.sync="visible.changePwd"
+ :showClose="!userInfo.needChangePwd || userInfo.needChangePwd == '1'"
+ :showCancel="userInfo.needChangePwd && userInfo.needChangePwd == '0'"
@confirm="confirmChangePwd"
@close="visible.changePwd = false"
>
@@ -62,7 +64,7 @@
v-model="changePwdData.form.newPwd"
type="password"
placeholder="璇疯緭鍏ユ柊瀵嗙爜"
- maxlength="30"
+ maxlength="20"
show-password
></el-input>
</el-form-item>
@@ -71,7 +73,7 @@
v-model="changePwdData.form.confirmPwd"
type="password"
placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜"
- maxlength="30"
+ maxlength="20"
show-password
></el-input>
</el-form-item>
@@ -136,7 +138,10 @@
// }
},
mounted() {
- console.log('userInfo',this.userInfo);
+ // console.log('userInfo',this.userInfo);
+ if(!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0'){
+ this.visible.changePwd = true
+ }
},
filters: {
diff --git a/admin/src/components/common/GlobalAlertWindow.vue b/admin/src/components/common/GlobalAlertWindow.vue
index 0907de8..f5b8623 100644
--- a/admin/src/components/common/GlobalAlertWindow.vue
+++ b/admin/src/components/common/GlobalAlertWindow.vue
@@ -9,6 +9,7 @@
:close-on-click-modal="false"
:wrapper-closable="false"
:append-to-body="true"
+ :show-close="!showClose"
@close="close"
>
<div slot="title" class="window__header">
@@ -20,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>
@@ -34,6 +35,14 @@
type: String,
default: '50%'
},
+ showClose: {
+ type: Boolean,
+ default: false
+ },
+ showCancel: {
+ type: Boolean,
+ default: true
+ },
// 鏄惁鍖呭惈搴曢儴鎿嶄綔
withFooter: {
type: Boolean,
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 d0312a4..296a05e 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -82,7 +82,7 @@
isRemPsd: false,
username: '',
password: '',
- activeTab: '1',
+ activeTab: '0',
// 楠岃瘉鐮�
captcha: {
loading: false,
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/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/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
--
Gitblit v1.9.3