| | |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // å
¬ä¼å·éç¥ å页å表 |
| | | 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 |
| | | } |
| | | }) |
| | | } |
| | |
| | | { required: true, message: '请è¾å
¥åå§å¯ç ' } |
| | | ], |
| | | newPwd: [ |
| | | { required: true, message: '请è¾å
¥æ°å¯ç ' } |
| | | { required: true, message: '请è¾å
¥å¯ç ', trigger: 'blur' }, |
| | | { validator: this.validatePassword, trigger: 'blur' }, |
| | | ], |
| | | confirmPwd: [ |
| | | { required: true, message: 'è¯·åæ¬¡è¾å
¥æ°å¯ç ' } |
| | |
| | | // title () { |
| | | // return this.$route.meta.title |
| | | // } |
| | | }, |
| | | mounted() { |
| | | console.log('userInfo',this.userInfo); |
| | | |
| | | }, |
| | | filters: { |
| | | // å±ç¤ºåç§° |
| | |
| | | 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 => { |
| | |
| | | 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; |
| | |
| | | :with-header="true" |
| | | :width="width" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | :wrapper-closable="false" |
| | | :append-to-body="true" |
| | | @close="close" |
| | |
| | | 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"> |
| | |
| | | } |
| | | .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 { |
| | | border-color: #bed6f9; |
| | | background-color: #bed6f9; |
| | | color: #fff; |
| | | background: #cccccc; |
| | | } |
| | | } |
| | | .color_op { |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="60%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <GlobalWindow :title="title" width="80%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm"> |
| | | <p class="tip">æ£å¨ä¸ºè§è²ã <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> |
| | |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | console.log(target); |
| | | console.log(target) |
| | | if (target.customData === undefined ||target.customData === null || target.customData === '') { |
| | | this.form.customData = [] |
| | | } else { |
| | |
| | | newItem.children = this.newTree(newItem.children) |
| | | } |
| | | return newItem |
| | | }); |
| | | }) |
| | | }, |
| | | __confirmCreate () { |
| | | // console.log(JSON.stringify(this.form.customData)); |
| | |
| | | } |
| | | } |
| | | </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> |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | width="582px" |
| | | title="é
ç½®è§è²æé" |
| | | @confirm="confirm" |
| | | > |
| | | <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> |
| | |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/style/variables.scss"; |
| | | |
| | | .global-window { |
| | | .tip { |
| | | em { |
| | |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | |
| | | .tip-warn { |
| | | margin: 4px 0 12px 0; |
| | | font-size: 12px; |
| | | color: #999; |
| | | |
| | | i { |
| | | color: orange; |
| | | margin-right: 4px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .transfer { |
| | | height: 600px; |
| | | width: 100%; |
| | |
| | | <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> |
| | | <template v-if="activeTab == '0'"> |
| | | <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"> |
| | |
| | | <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> |
| | | </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> |
| | | |
| | | <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> |
| | |
| | | isRemPsd: false, |
| | | username: '', |
| | | password: '', |
| | | activeTab: '1', |
| | | // éªè¯ç |
| | | captcha: { |
| | | loading: false, |
| | |
| | | .finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | getCode() { |
| | | console.log('getCode'); |
| | | |
| | | }, |
| | | tabClick(val) { |
| | | this.activeTab = val |
| | | }, |
| | | // å·æ°éªè¯ç |
| | | refreshCaptcha() { |
| | |
| | | background-color: #fff; |
| | | box-sizing: border-box; |
| | | /* padding: 50px 80px 20px; */ |
| | | padding: 80px 80px 20px; |
| | | padding: 50px 80px 20px; |
| | | position: relative; |
| | | |
| | | .tabs { |
| | |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | cursor: pointer; |
| | | |
| | | .icon { |
| | | width: 36px; |
| | |
| | | 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; |
| | |
| | | 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 { |
| | |
| | | .time-item { |
| | | margin-right: 8px; |
| | | margin-bottom: 8px; |
| | | border: #cccccc solid 1px; |
| | | font-size: 14px; |
| | | font-weight: 400; |
| | | line-height: 14px; |
| | |
| | | align-items: center; |
| | | border-radius: 5px; |
| | | color: #111; |
| | | border: #cccccc solid 1px; |
| | | cursor: pointer; |
| | | } |
| | | .time-item-sel { |
| | | border-color: $primary-color; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| | |
| | | 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%; |
| | | } |
| | |
| | | ] |
| | | }, |
| | | /* 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" : "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | /* å¿«åºç¨ç¹æç¸å
³ */ |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | <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" /> |
| | |
| | | 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() { |
| | |
| | | console.log('----'); |
| | | this.getTaskInfo() |
| | | }) |
| | | console.log('aaa', this.userInfo.permissions.indexOf('system:user:create')); |
| | | }, |
| | | methods: { |
| | | jump(path) { |
| | | uni.navigateTo({ |
| | | url: path |
| | | }) |
| | | }, |
| | | checkAuth(str) { |
| | | const permissions = this.userInfo.permissions |
| | | return permissions.indexOf(str) > -1 |
| | | }, |
| | | loginOut() { |
| | | this.$store.commit('empty') |
| | |
| | | .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; |
| | |
| | | .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; |
| | |
| | | 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">
|
| | |
| | | /> |
| | | </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"> |
| | |
| | | <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"> |
| | |
| | | <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" /> |
| | |
| | | }, |
| | | headData: {}, |
| | | dataList: [], |
| | | total: 0, |
| | | cateList: [ |
| | | { name: '访客ç³è¯·', id: 0 }, |
| | | { name: '访客æ¥å¤', id: 1 }, |
| | |
| | | // this.getList() |
| | | // }, |
| | | onReachBottom() { |
| | | // this.pagination.page = 0 |
| | | // this.dataList = [] |
| | | const { total, dataList} = this |
| | | if(dataList.length < total){ |
| | | this.getList() |
| | | } else { |
| | | this.showToast('ææ æ´å¤æ°æ®') |
| | | } |
| | | }, |
| | | onBackPress(options) { |
| | | setTimeout(()=>{ |
| | |
| | | } |
| | | }).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) |
| | |
| | | <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.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" /> |
| | |
| | | /> |
| | | </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" |
| | |
| | | <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" |
| | |
| | | minDate: '', |
| | | pagination: { |
| | | page: 0, |
| | | capacity: 10 |
| | | capacity: 6 |
| | | }, |
| | | total: 0, |
| | | dataList: [], |
| | |
| | | this.initData() |
| | | }, |
| | | onReachBottom() { |
| | | if (this.total > 10) { |
| | | console.log('onReachBottom'); |
| | | if (this.total > this.dataList.length) { |
| | | this.getList() |
| | | }else { |
| | | this.showToast('ææ æ´å¤æ°æ®') |
| | | } |
| | | }, |
| | | methods: { |
| | |
| | | ...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 |
| | | }) |
| | | }, |
| | |
| | | }, |
| | | initData() { |
| | | getCarsList({ |
| | | type: 1 |
| | | type: 0 |
| | | }).then(res => { |
| | | this.carsList = [res.data] |
| | | }) |
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="status_wrap"> |
| | | <view class="name">{{ info.memberName }}çç¨è½¦ç³è¯·</view> |
| | | <view class="placeholder9">{{ info.companyName }}</view> |
| | | <view class="name">{{ info.createMemberName }}æäº¤çç¨è½¦ç³è¯·</view> |
| | | <view |
| | | class="desc" |
| | | :class="{ |
| | | gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', |
| | | gray: info.status == '2' || info.status == '3' || info.status == '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 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) }}è³{{ |
| | | <view class="value" v-if="info.startTime">{{ info.startTime.slice(0, 16) }}è³{{
|
| | | info.endTime.slice(0, 16) |
| | | }}</view |
| | | > |
| | | }}</view>
|
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">é¢è®¡åºåæ¶é´</view> |
| | |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">ç®çå°</view> |
| | | <view class="value" |
| | | >{{ info.type == "1" ? "å¸å¤" : "室å
" }}ï¼{{ info.addr }}</view |
| | | > |
| | | <view class="value">{{ info.type == "1" ? "å¸å¤" : "å¸å
" }}ï¼{{ info.addr }}</view>
|
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">ç¨è½¦äºç±</view> |
| | |
| | | <!-- æµç¨ --> |
| | | <view class="flow_wrap"> |
| | | <view class="flow_title">æµç¨</view> |
| | | <view |
| | | class="list" |
| | | v-if=" |
| | | <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="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-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" |
| | | /> |
| | | <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="time">{{ item.checkDate }}</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text |
| | | >{{ item.memberName |
| | | }}<text class="status" v-if="item.statusInfo" |
| | | >({{ item.statusInfo }})</text |
| | | ></text |
| | | > |
| | | <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 == 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 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 class="emyty"></view> |
| | | <view |
| | | class="main_footer" |
| | | v-if=" |
| | | <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> |
| | |
| | | </view> |
| | | |
| | | <!-- æ¤é --> |
| | | <u-popup |
| | | :show="isShowBack" |
| | | :round="10" |
| | | :safeAreaInsetBottom="true" |
| | | mode="bottom" |
| | | @close="isShowBack = false" |
| | | > |
| | | <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" |
| | | /> |
| | | <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" |
| | | > |
| | | <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-else class="placeholder9">æ´¾è½¦å¸æº</text> |
| | | <u-icon class="ml12" name="arrow-right" color="#999999" /> |
| | | </view> |
| | | <textarea |
| | | v-model="param.checkInfo" |
| | | :placeholder=" |
| | | <textarea v-model="param.checkInfo" :placeholder="
|
| | | param.status == 2 ? 'åæè¯´æï¼éå¿
å¡«' : 'æç»è¯´æï¼å¿
å¡«' |
| | | " |
| | | placeholder-class="placeholder9" |
| | | /> |
| | | " placeholder-class="placeholder9" />
|
| | | <view class="main_footer"> |
| | | <view class="btn" @click="showApprModal = false">åæ¶</view> |
| | | <view class="btn agree" @click="onSubmit">æäº¤</view> |
| | |
| | | </view> |
| | | </u-popup> |
| | | <!-- 叿º --> |
| | | <u-picker |
| | | keyName="name" |
| | | :show="isShowDrive" |
| | | @close="isShowDrive = false" |
| | | :closeOnClickOverlay="true" |
| | | :columns="driveList" |
| | | @confirm="seletedDrive" |
| | | @cancel="isShowDrive = false" |
| | | ></u-picker> |
| | | <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' |
| | | import {
|
| | | carUseBookDetail,
|
| | | carUseBookAppr,
|
| | | driveListPost,
|
| | | carUseBookBack
|
| | | } from '@/api'
|
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | }, |
| | | methods: { |
| | | getDetail() { |
| | | const { id } = this |
| | | const {
|
| | | id
|
| | | } = this
|
| | | carUseBookDetail(id).then(res => { |
| | | this.info = { ...res.data } |
| | | 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() { |
| | |
| | | }) |
| | | }, |
| | | onSubmit() { |
| | | const { param, info } = this |
| | | const {
|
| | | param,
|
| | | info
|
| | | } = this
|
| | | carUseBookAppr({ |
| | | status: param.status, |
| | | objType: info.type == 1 ? 4 : 3, |
| | |
| | | display: flex; |
| | | margin-bottom: 48rpx; |
| | | position: relative; |
| | |
|
| | | .separate { |
| | | position: absolute; |
| | | width: 4rpx; |
| | |
| | | transform: translate(-50%, 0); |
| | | top: 80rpx; |
| | | } |
| | |
|
| | | .avatar { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | |
| | | 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; |
| | |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | |
|
| | | .children { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-top: 12rpx; |
| | |
|
| | | .child { |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | .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; |
| | | } |
| | |
| | | background-color: #e9edff; |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | |
| | | .status_img { |
| | | position: absolute; |
| | | right: 0rpx; |
| | | top: 20rpx; |
| | | width: 120rpx; |
| | | } |
| | | }
|
| | | .main_footer { |
| | | padding-bottom: 64rpx; |
| | | display: flex; |
| | |
| | | |
| | | .appr_modal { |
| | | padding: 36rpx 30rpx 0; |
| | |
|
| | | .line { |
| | | height: 90rpx; |
| | | display: flex; |
| | |
| | | border-bottom: 1rpx solid #e4e4e4; |
| | | margin-bottom: 20rpx; |
| | | } |
| | |
|
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | |
| | | }, |
| | | initData() { |
| | | getCarsList({ |
| | | type: 1 |
| | | type: 0 |
| | | }).then(res => { |
| | | this.carsList = [res.data] |
| | | }) |
| | |
| | | @confirm="seletedCar" |
| | | @cancel="isShowCar = false" |
| | | ></u-picker> |
| | | <u-datetime-picker |
| | | <!-- <u-datetime-picker |
| | | mode="datetime" |
| | | :show="isShowDate" |
| | | :filter="timeFilter" |
| | | title="å¼å§æ¶é´" |
| | | :minDate="minDate" |
| | | @close="isShowDate = false" |
| | | :closeOnClickOverlay="true" |
| | | @confirm="seletedDate" |
| | | @cancel="isShowDate = false" |
| | | /> --> |
| | | <u-datetime-picker |
| | | mode="datetime" |
| | | :show="isShowDate" |
| | | title="å¼å§æ¶é´" |
| | | :minDate="minDate" |
| | | @close="isShowDate = false" |
| | |
| | | <u-datetime-picker |
| | | mode="datetime" |
| | | :show="isShowEndDate" |
| | | :filter="timeFilter" |
| | | title="ç»ææ¶é´" |
| | | :minDate="new Date(param.startTime || null).getTime()" |
| | | @close="endtimeClose" |
| | |
| | | }, |
| | | initData() { |
| | | getCarsList({ |
| | | type: 1 |
| | | type: 0 |
| | | }).then(res => { |
| | | this.carsList = [res.data] |
| | | }) |