From e6acb39a2475e211f2c1decc45a95c868239c25f Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 18 十月 2024 14:28:32 +0800
Subject: [PATCH] ll
---
h5/pages/staff/vehicle/shiwai.vue | 17
h5/pages/staff/vehicle/sendACar.vue | 17
h5/pages/staff/vehicle/shinei.vue | 2
admin/src/api/system/sms.js | 17
admin/src/components/system/role/PermissionConfigWindow.vue | 35
admin/src/components/operation/OperCarUseBookParamWindow.vue | 39
h5/pages/staff/task/visitorApprove.vue | 3
h5_meeting/unpackage/release/apk/会议室.apk | 0
h5/pages/staff/task/driver.vue | 1
admin/src/components/common/CommonHeader.vue | 28
h5/pages/staff/memberSel.vue | 5
admin/src/components/system/role/OperaSystemRoleDataWindow.vue | 84 +-
h5/manifest.json | 40 +
admin/src/views/login.vue | 91 ++
h5/pages/staff/meetingSubOrder.vue | 2
h5/pages/staff/task/visitorReport.vue | 1
h5/pages/staff/index.vue | 161 ++---
h5/pages/staff/meetingSel.vue | 5
admin/src/components/common/GlobalAlertWindow.vue | 1
h5/pages/staff/task/index.vue | 11
admin/src/views/system/publicMsg.vue | 159 ++++
h5/App.vue | 13
h5/pages/staff/vehicle/sendACarDetail.vue | 1144 +++++++++++++++++------------------
h5/pages/staff/vehicle/applePeo.vue | 4
admin/src/views/meeting/components/OperaBookingsWindow.vue | 3
pda/unpackage/release/apk/pda.apk | 0
26 files changed, 1,071 insertions(+), 812 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/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index cab4be2..8af6eef 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -119,7 +119,8 @@
{ required: true, message: '璇疯緭鍏ュ師濮嬪瘑鐮�' }
],
newPwd: [
- { required: true, message: '璇疯緭鍏ユ柊瀵嗙爜' }
+ { required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur' },
+ { validator: this.validatePassword, trigger: 'blur' },
],
confirmPwd: [
{ required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜' }
@@ -133,6 +134,10 @@
// title () {
// return this.$route.meta.title
// }
+ },
+ mounted() {
+ console.log('userInfo',this.userInfo);
+
},
filters: {
// 灞曠ず鍚嶇О
@@ -154,6 +159,26 @@
this.$nextTick(() => {
this.$refs.changePwdDataForm.resetFields()
})
+ },
+ 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 => {
@@ -277,6 +302,7 @@
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;
diff --git a/admin/src/components/common/GlobalAlertWindow.vue b/admin/src/components/common/GlobalAlertWindow.vue
index 53b0597..0907de8 100644
--- a/admin/src/components/common/GlobalAlertWindow.vue
+++ b/admin/src/components/common/GlobalAlertWindow.vue
@@ -6,6 +6,7 @@
:with-header="true"
:width="width"
:close-on-press-escape="false"
+ :close-on-click-modal="false"
:wrapper-closable="false"
:append-to-body="true"
@close="close"
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/login.vue b/admin/src/views/login.vue
index 652081b..d0312a4 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: '1',
// 楠岃瘉鐮�
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/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/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..a4c96ae 100644
--- a/h5/pages/staff/index.vue
+++ b/h5/pages/staff/index.vue
@@ -20,7 +20,15 @@
</view>
<view 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,19 @@
<view class="h1">淇敼瀵嗙爜</view>
<view class="h2">CHANGE PASSWORD</view>
</view>
- </view>
+ </view> -->
</view>
<!-- -->
<view class="title_wrap"><view class="name">涓氬姟鏌ヨ</view></view>
<view class="container2">
- <view class="img_wrap" @click="jump('/pages/staff/task/index')">
+ <view class="list">
+ <view class="item" @click="jump(item.url)" v-for="item in list2" :key="item.name">
+ <image :src="item.img" class="icon" />
+ <view class="name">{{item.name}}</view>
+ </view>
+ </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 +96,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 +110,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 +182,7 @@
console.log('----');
this.getTaskInfo()
})
+ console.log('aaa', this.userInfo.permissions.indexOf('system:user:create'));
},
methods: {
jump(path) {
@@ -159,6 +190,10 @@
url: path
})
},
+ checkAuth(str) {
+ const permissions = this.userInfo.permissions
+ return permissions.indexOf(str) > -1
+ },
loginOut() {
this.$store.commit('empty')
logoutPost()
@@ -203,6 +238,25 @@
.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;
+ image{
+ width: 88rpx;
+ height: 88rpx;
+ margin-bottom: 20rpx;
+ }
+ }
+}
.banner_wrap {
padding: 54rpx 44rpx;
color: #fff;
@@ -227,107 +281,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..afe5576 100644
--- a/h5/pages/staff/task/visitorReport.vue
+++ b/h5/pages/staff/task/visitorReport.vue
@@ -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_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/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
--
Gitblit v1.9.3