Merge remote-tracking branch 'origin/master'
| | |
| | | NODE_ENV = 'development' |
| | | |
| | | VUE_APP_API_URL = 'http://localhost:10010' |
| | | VUE_APP_API_URL = 'http://192.168.137.1:10010' |
| | | VUE_APP_API_URL = 'http://192.168.0.103:10010' |
| | | # VUE_APP_API_URL = 'http://10.50.250.178:8088/gateway_interface' |
| | | s |
| | |
| | | export function startById(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/meeting/start', data) |
| | | } |
| | | // ç»æ |
| | | export function meetingEndById(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/meeting/reservationOver', data) |
| | | } |
| | | // æåå¼å§ |
| | | export function startEarlyById(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/meeting/startEarly', data) |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | // è·åæå°ç»ä¿¡æ¯ |
| | | export function getPlatformGroupList (data) { |
| | | export function getPlatformGroupList(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/getPlatformGroupList', data) |
| | | } |
| | | // å«å·å表 |
| | | export function platformCallList (data) { |
| | | export function platformCallList(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/platformCallList', data) |
| | | } |
| | | // å«å· |
| | | export function platformCallNumber (data) { |
| | | export function platformCallNumber(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/platformCallNumber', data) |
| | | } |
| | | // å¼å§ä½ä¸ |
| | | export function platformBeginWork (data) { |
| | | export function platformBeginWork(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/beginWork', data) |
| | | } |
| | | // 宿ä½ä¸ |
| | | export function platformFinishWork (data) { |
| | | export function platformFinishWork(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/finishWork', data) |
| | | } |
| | | // è¿å· |
| | | export function platformOverNumber (data) { |
| | | export function platformOverNumber(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/platformOverNumber', data) |
| | | } |
| | | // å¼å¸¸æèµ· |
| | | export function platformErr (data) { |
| | | export function platformErr(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/platformErr', data) |
| | | } |
| | | // å¼å¸¸æèµ· |
| | | export function platformMove (data) { |
| | | export function platformMove(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/platformMove', data) |
| | | } |
| | | // æå°é
ç½® |
| | | export function updUserPlatformConfig (data) { |
| | | export function updUserPlatformConfig(data) { |
| | | return request.get('/visitsAdmin/cloudService/business/platform/updUserPlatformConfig?ids=' + data) |
| | | } |
| | | |
| | | // æ ¹æ®æå°ç»è·åæå°åè¡¨ä¿¡æ¯ |
| | | export function listByGroupId (id) { |
| | | export function listByGroupId(id) { |
| | | return request.get('/visitsAdmin/cloudService/business/platform/listByGroupId?groupId=' + id) |
| | | } |
| | | // æå°å表 ç¼è¾ |
| | | export function PlatformEdit (data) { |
| | | export function PlatformEdit(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/updateById', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | // æå°å表 å é¤ |
| | | export function PlatformDel (id) { |
| | | export function PlatformDel(id) { |
| | | return request.get('/visitsAdmin/cloudService/business/platform/delete/' + id, { |
| | | trim: true |
| | | }) |
| | | } |
| | | // æå°è°åº¦ä¸å¿ å表 |
| | | export function getPlatformJob (data) { |
| | | export function getPlatformJob(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformJob/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | // è½¦è¾æéæ
åµ |
| | | export function platformLineUpPage (data) { |
| | | export function platformLineUpPage(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/platformLineUpPage', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // å
¥ååå |
| | | export function platformReasonList () { |
| | | export function platformReasonList() { |
| | | return request.get('/visitsAdmin/cloudService/business/platformBooks/platformReasonList') |
| | | } |
| | | // ç©æµè½¦é¢çº¦ |
| | | export function platformBooksApply (data) { |
| | | export function platformBooksApply(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformBooks/apply', data) |
| | | } |
| | | // è·åæå°ç» çå¾
ä¸å¼å¸¸æèµ·æ°æ® |
| | | export function getPlatformGroupWork (id) { |
| | | export function getPlatformGroupWork(id) { |
| | | return request.get('/visitsAdmin/cloudService/business/platform/getPlatformGroupWork?platformGroupId=' + id) |
| | | } |
| | | // æå°å
¥åé¢çº¦ å页å表 |
| | | export function platformBooksPage (data) { |
| | | export function platformBooksPage(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformBooks/page', data) |
| | | } |
| | | // æå°å
¥åé¢çº¦ åè¡¨å¯¼åº |
| | | export function platformBooksExport (data) { |
| | | export function platformBooksExport(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformBooks/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | // æå°è°åº¦ä½ä¸ä»»å¡ å页å表 |
| | | export function platformJobPage (data) { |
| | | export function platformJobPage(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformJob/page', data) |
| | | } |
| | | // æå°è°åº¦ä½ä¸ä»»å¡ å é¤ |
| | | export function platformJobDel (id) { |
| | | export function platformJobDel(id) { |
| | | return request.get('/visitsAdmin/cloudService/business/platformJob/delete?id=' + id) |
| | | } |
| | | // æå°è°åº¦ä½ä¸ä»»å¡ ç¾å° |
| | | export function platformJobSign(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformJob/signIn', data) |
| | | } |
| | | // æå°è°åº¦ä½ä¸ä»»å¡ ç¦»åææ |
| | | export function platformPowerLevel (data) { |
| | | export function platformPowerLevel(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platform/powerLevel', data) |
| | | } |
| | | // æå°è°åº¦ä½ä¸ä»»å¡ åè¡¨å¯¼åº |
| | | export function platformJobExport (data) { |
| | | export function platformJobExport(data) { |
| | | return request.post('/visitsAdmin/cloudService/business/platformJob/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="50%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <GlobalWindow :title="title" width="50%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm"> |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="æå°åç§°ï¼" > |
| | | <span>{{form.name}}</span> |
| | | <el-form-item label="æå°åç§°ï¼"> |
| | | <span>{{ form.name }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="æå°ç¼ç ï¼" prop="code"> |
| | | <el-input v-model="form.code" placeholder="请è¾å
¥æå°ç¼ç " v-trim/> |
| | | <span class="tip-warn"><i class="el-icon-warning"></i>说æï¼å¯¹åºWMSç³»ç»ä¸çç¼ç </span> |
| | | <el-input v-model="form.code" placeholder="请è¾å
¥æå°ç¼ç " v-trim /> |
| | | <span class="tip-warn"><i class="el-icon-warning"></i>说æï¼å¯¹åºWMSç³»ç»ä¸çç¼ç </span> |
| | | </el-form-item> |
| | | <el-form-item label="æå±æå°åç»ï¼" prop="groupId"> |
| | | <el-select v-model="form.groupId" > |
| | | <el-option |
| | | v-for="item in groupList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | <el-select v-model="form.groupId"> |
| | | <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="广æè®¾å¤ï¼" prop="broadcastIds"> |
| | | <el-select v-model="form.broadcastIds" multiple > |
| | | <el-option |
| | | v-for="item in broadcastList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | <el-select v-model="form.broadcastIds" multiple> |
| | | <el-option v-for="item in broadcastList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="LED设å¤ï¼" prop="ledIds"> |
| | | <el-select v-model="form.ledIds" multiple > |
| | | <el-option |
| | | v-for="item in ledList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | <el-select v-model="form.ledIds" multiple> |
| | | <el-option v-for="item in ledList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åæ¶ä½ä¸æ°éï¼" prop="workingNum" > |
| | | <el-input type="number" v-model="form.workingNum" placeholder="请è¾å
¥åæ¶ä½ä¸æ°é" v-trim/> |
| | | <el-form-item label="åæ¶ä½ä¸æ°éï¼" prop="workingNum"> |
| | | <el-input type="number" v-model="form.workingNum" placeholder="请è¾å
¥åæ¶ä½ä¸æ°é" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="æå°ä½ä¸æç(ä¸åª/å°æ¶)ï¼" prop="workRate"> |
| | | <el-input type="number" v-model="form.workRate" placeholder="请è¾å
¥æå°ä½ä¸æç(ä¸åª/å°æ¶)" v-trim/> |
| | | <el-input type="number" v-model="form.workRate" placeholder="请è¾å
¥æå°ä½ä¸æç(ä¸åª/å°æ¶)" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="ä½ä¸è¶
æ¶æ¥è¦æ¶é´(åé)ï¼" prop="workTimeoutAlarmTime"> |
| | | <el-input type="number" v-model="form.workTimeoutAlarmTime" placeholder="请è¾å
¥ä½ä¸è¶
æ¶æ¥è¦æ¶é´(åé)" v-trim/> |
| | | <el-input type="number" v-model="form.workTimeoutAlarmTime" placeholder="请è¾å
¥ä½ä¸è¶
æ¶æ¥è¦æ¶é´(åé)" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="åçè¶
æ¶æ¥è¦æ¶é´(åéï¼ï¼" prop="stayTmeoutAlarmTime"> |
| | | <el-input type="number" v-model="form.stayTmeoutAlarmTime" placeholder="请è¾å
¥åçè¶
æ¶æ¥è¦æ¶é´(åé)" v-trim/> |
| | | <el-form-item label="åçè¶
æ¶æ¥è¦æ¶é´(åéï¼ï¼" prop="stayTimeoutAlarmTime"> |
| | | <el-input type="number" v-model="form.stayTimeoutAlarmTime" placeholder="请è¾å
¥åçè¶
æ¶æ¥è¦æ¶é´(åé)" v-trim /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | |
| | | name: 'OperaPlatformWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | groupList: [], |
| | |
| | | endTime: '', |
| | | workingNum: 1, |
| | | workRate: '', |
| | | stayTmeoutAlarmTime: '', |
| | | stayTimeoutAlarmTime: '', |
| | | workTimeoutAlarmTime: '', |
| | | }, |
| | | // éªè¯è§å |
| | |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.config({ |
| | | api: '/platform/platform', |
| | | 'field.id': 'id' |
| | |
| | | * @title çªå£æ é¢ |
| | | * @target ç¼è¾ç对象 |
| | | */ |
| | | open (title, target) { |
| | | open(title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.loadGroupList() |
| | |
| | | this.form.workingNum = this.form.workingNum || 1 |
| | | }) |
| | | }, |
| | | loadGroupList () { |
| | | loadGroupList() { |
| | | allList({}) |
| | | .then(res => { |
| | | this.groupList = res || [] |
| | | }) |
| | | }, |
| | | loadLedList () { |
| | | loadLedList() { |
| | | deviceList({ type: 2 }) |
| | | .then(res => { |
| | | this.ledList = res || [] |
| | | }) |
| | | }, |
| | | loadBroadcastList () { |
| | | loadBroadcastList() { |
| | | deviceList({ type: 3 }) |
| | | .then(res => { |
| | | this.broadcastList = res || [] |
| | |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .labelTip{ |
| | | .labelTip { |
| | | font-size: 12px; |
| | | color: #666666; |
| | | } |
| | |
| | | 'business:bookings:update', |
| | | 'business:bookings:delete', |
| | | ]) |
| | | " label="æä½" min-width="100" align="center" fixed="right"> |
| | | " label="æä½" min-width="140" align="center" fixed="right"> |
| | | <template slot-scope="{ row }"> |
| | | <template> |
| | | <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('ä¼è®®è¯¦æ
', row)">æ¥ç详æ
</el-button> |
| | |
| | | @click="$refs.operaBookingsWindow.open('ç¼è¾ä¼è®®é¢çº¦', row)" |
| | | v-permissions="['business:bookings:update']">ç¼è¾</el-button> |
| | | <el-button type="text" v-if="row.meetingStatus == '1'" @click="handleStart(row)">å¼å§</el-button> |
| | | <el-button type="text" v-if="row.meetingStatus == '2'" @click="handleEnd(row)">ç»æ</el-button> |
| | | <el-button v-if="row.meetingStatus == '1'" type="text" @click="cancelMeeting(row.id)" |
| | | v-permissions="['business:bookings:update']">æ¤å</el-button> |
| | | </template> |
| | |
| | | import { findList } from '@/api/meeting/rooms' |
| | | import { getSystemDictData } from '@/api/system/dictData' |
| | | import { fetchList } from '@/api/business/company' |
| | | import { cancelById, bookingsDetail, startEarlyById, startById } from '@/api/meeting/bookings' |
| | | import { cancelById, bookingsDetail, startEarlyById, startById, meetingEndById } from '@/api/meeting/bookings' |
| | | import { timeForMat } from '@/utils/util' |
| | | export default { |
| | | name: 'Bookings', |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | handleEnd(row) { |
| | | this.$dialog.messageWaring('ç»æä¼è®®', 'æ¯å¦ç»æå½åä¼è®®ï¼') |
| | | .then(() => { |
| | | meetingEndById({ id: row.id }) |
| | | .then(() => { |
| | | this.$message.success('ä¼è®®å·²ç»æ') |
| | | this.handlePageChange() |
| | | }) |
| | | .catch(e => { |
| | | }) |
| | | }) |
| | | }, |
| | | cancelMeeting(id) { |
| | | this.$dialog.messageWaring('åæ¶ä¼è®®', 'æ¯å¦åæ¶å½åä¼è®®ï¼') |
| | | .then(() => { |
| | |
| | | </div> |
| | | <el-table class="mb20" v-loading="loading" :data="list" stripe> |
| | | <el-table-column type="index" label="åºå·" width="70" show-overflow-tooltip /> |
| | | <el-table-column prop="code" label="è¿åå·" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="billCode" label="è¿åå·" min-width="100" show-overflow-tooltip /> |
| | | <!-- <el-table-column prop="totalNum" label="æ»ä½ä¸é(䏿¯)" min-width="100" show-overflow-tooltip /> --> |
| | | <el-table-column prop="carCodeFront" label="车çå·" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="carCodeBack" label="çµåéç¶æ" min-width="100" show-overflow-tooltip> |
| | |
| | | <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformjob:exportExcel']">导åº</el-button> |
| | | </div> |
| | | <el-table class="mb20" v-loading="loading" :data="list" stripe> |
| | | <el-table-column prop="code" label="è¿åå·" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="billCode" label="è¿åå·" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="totalNum" label="æ»ä½ä¸é(䏿¯)" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="carCodeFront" label="车çåç
§å·" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="carCodeBack" label="车çåç
§å·" min-width="100" show-overflow-tooltip /> |
| | |
| | | <el-table-column prop="startDate" label="ä½ä¸å¼å§æ¶é´" min-width="150" show-overflow-tooltip /> |
| | | <el-table-column prop="doneDate" label="ä½ä¸å®ææ¶é´" min-width="150" show-overflow-tooltip /> |
| | | <el-table-column prop="workTime" label="ä½ä¸æ¶é¿" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="platformName" label="å«å·æå°" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="platformNames" label="å«å·æå°" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column label="ä½ä¸æ
åµ" fixed="right" min-width="100" show-overflow-tooltip> |
| | | <template v-slot="scope"> |
| | | <span>{{ statusMap[scope.row.status] }}</span> |
| | |
| | | <template> |
| | | <div class="main_app"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" @clear="clear"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" |
| | | @clear="clear"> |
| | | <template #fastdate> |
| | | <el-radio-group |
| | | v-model="filters.fastdate" |
| | | size="small" |
| | | @input="changeRadio" |
| | | > |
| | | <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio"> |
| | | <el-radio-button label="0">å½å¤©</el-radio-button> |
| | | <el-radio-button label="6">è¿7天</el-radio-button> |
| | | <el-radio-button label="29">è¿30天</el-radio-button> |
| | |
| | | </template> |
| | | </QueryForm> |
| | | <div class="pt16"> |
| | | <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformJob:exportExcel']">导åº</el-button> |
| | | <el-button :loading="exLoading" @click="handleEx" |
| | | v-permissions="['business:platformjob:exportExcel']">导åº</el-button> |
| | | </div> |
| | | <el-table class="mb20" v-loading="loading" :data="list" stripe> |
| | | <el-table-column prop="code" label="è¿åå·" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="billCode" label="è¿åå·" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="carCodeFront" label="车çåç
§å·" min-width="100" show-overflow-tooltip /> |
| | | <!-- <el-table-column prop="carCodeBack" label="车çåç
§å·" min-width="100" show-overflow-tooltip /> --> |
| | | <el-table-column prop="taskOrigin" label="任塿¥æº" min-width="100" show-overflow-tooltip /> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="æä½" min-width="120" align="center" fixed="right" show-overflow-tooltip> |
| | | <template v-slot="scope"> |
| | | <el-button v-if="scope.row.status == 12" type="text" class="red" v-permissions="['business:platformJob:delete']" |
| | | <el-button type="text" class="red" v-permissions="['business:platformjob:delete']" |
| | | @click="handleDel(scope.row)">å é¤</el-button> |
| | | <el-button type="text" v-permissions="['business:platformJob:query']" |
| | | <el-button type="text" v-permissions="['business:platformjob:query']" |
| | | @click="handleDetail(scope.row)">é¢çº¦è¯¦æ
</el-button> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <script> |
| | | import Pagination from '@/components/common/Pagination' |
| | | import QueryForm from '@/components/common/QueryForm' |
| | | import { platformJobPage, platformJobExport,platformJobDel } from '@/api' |
| | | import { platformJobPage, platformJobExport, platformJobDel } from '@/api' |
| | | import { statusMap } from '../config' |
| | | import DriverDetail from "@/views/task/driverDetail" |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | |
| | | list: [], |
| | | queryFormConfig: { |
| | | formItems: [ |
| | | { |
| | | { |
| | | filed: 'code', |
| | | type: 'input', |
| | | label: 'è¿åå·' |
| | |
| | | this.getList() |
| | | }, |
| | | methods: { |
| | | changeRadio (day) { |
| | | changeRadio(day) { |
| | | const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59'] |
| | | this.$set(this.filters, 'selDate', arr) |
| | | this.getList() |
| | | }, |
| | | changeForm (str) { |
| | | changeForm(str) { |
| | | if (str === 'selDate') { |
| | | this.$set(this.filters, 'fastdate', null) |
| | | this.getList() |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | title="æå°å«å·-xxå·æå°" |
| | | :title="'æå°å«å·-'+title" |
| | | :visible.sync="isShowModal" |
| | | :showConfirm="false" |
| | | width="800px" |
| | |
| | | page: 1 |
| | | }, |
| | | carCodeFront: '', |
| | | title: '', |
| | | activePlat: {}, |
| | | dataList: [] |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow title="车è¾ç¾å°" :visible.sync="isShowModal" :showConfirm="false" width="800px"> |
| | | <div class="queuing_modal"> |
| | | <div class="df_ac mb20"> |
| | | <span>æç´¢è½¦è¾ï¼</span> |
| | | <el-input class="flex1 mr20" v-model="carCodeFront" placeholder="请è¾å
¥è½¦çå·"></el-input> |
| | | <el-button type="primary" @click="getList">æ¥æ¾</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </div> |
| | | <div class="list"> |
| | | <div class="item" v-for="item in dataList" :key="item.id"> |
| | | <div class="head df_sb"> |
| | | <div v-if="item.carCodeFront" class="code"> |
| | | <span>{{ item.carCodeFront.slice(0, 1) }}</span> |
| | | <span>{{ item.carCodeFront.slice(1, 2) }}</span> |
| | | <span>·</span> |
| | | <span>{{ item.carCodeFront.slice(2) }}</span> |
| | | </div> |
| | | <div class="status" :class="{ red: item.status == 0 }">{{ statusMap[item.status] }}</div> |
| | | </div> |
| | | <div class="info"> |
| | | <div v-if="item.type == 4" class="ite"> |
| | | <span>åååå·ï¼</span> |
| | | <span>{{ item.contractNum }}</span> |
| | | </div> |
| | | <div v-else class="ite"> |
| | | <span>è¿è¾åå·ï¼</span> |
| | | <span>{{ item.billCode }}</span> |
| | | </div> |
| | | <div class="ite"> |
| | | <span>驾驶åï¼</span> |
| | | <span>{{ item.driverName }}</span> |
| | | </div> |
| | | <div class="ite"> |
| | | <span>ææºå·ï¼</span> |
| | | <span>{{ item.drivierPhone }}</span> |
| | | </div> |
| | | <div class="ite"> |
| | | <span>æ»è¿è¾éï¼</span> |
| | | <span>{{ item.totalNum }}䏿¯</span> |
| | | </div> |
| | | <div v-if="item.type != 4" class="ite" style="width: 66%"> |
| | | <span>è¿è¾å
¬å¸ï¼</span> |
| | | <span>{{ item.carrierName }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="footer df_sb"> |
| | | <div v-if="item.type != 4" class="detail">è¿å详æ
</div> |
| | | <div v-else></div> |
| | | <el-button type="primary" @click="handleCall(item)">ç¾å°</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination"> |
| | | </pagination> |
| | | </div> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import { platformJobPage, platformJobSign } from '@/api' |
| | | import { statusMap } from '../config' |
| | | import { Message } from 'element-ui' |
| | | export default { |
| | | components: { |
| | | GlobalWindow, |
| | | Pagination |
| | | }, |
| | | data() { |
| | | return { |
| | | statusMap, |
| | | isShowModal: false, |
| | | subLoading: false, |
| | | pagination: { |
| | | total: 0, |
| | | pageSize: 10, |
| | | page: 1 |
| | | }, |
| | | carCodeFront: '', |
| | | // activePlat: {}, |
| | | dataList: [] |
| | | |
| | | } |
| | | }, |
| | | methods: { |
| | | handleCall(item) { |
| | | // const activePlatform = this.activePlat |
| | | platformJobSign({ jobId: item.id, signType: '2' }).then(res => { |
| | | Message.success('ç¾å°æå') |
| | | this.$emit('success') |
| | | this.getList() |
| | | }) |
| | | }, |
| | | getList() { |
| | | const { activePlat, pagination, carCodeFront } = this |
| | | platformJobPage({ |
| | | model: { platformGroupId: activePlat.id, queryStatus: '0,1' }, |
| | | page: pagination.page, |
| | | capacity: pagination.pageSize |
| | | }).then(res => { |
| | | this.dataList = res.records |
| | | this.pagination.total = res.total |
| | | }) |
| | | }, |
| | | reset() { |
| | | this.carCodeFront = '' |
| | | this.pagination.page = 1 |
| | | this.pagination.pageSize = 10 |
| | | this.getList() |
| | | }, |
| | | handleSizeChange(e) { |
| | | this.pagination.pageSize = e |
| | | this.getList() |
| | | }, |
| | | handlePageChange(e) { |
| | | this.pagination.page = e |
| | | this.getList() |
| | | }, |
| | | handleSub() { |
| | | const { param } = this |
| | | this.subLoading = true |
| | | PlatformEdit({ |
| | | ...param |
| | | }).then(res => { |
| | | this.subLoading = false |
| | | this.isShowEdit = false |
| | | this.$tip.success('æäº¤æå') |
| | | this.getList() |
| | | }, () => { |
| | | this.subLoading = false |
| | | }) |
| | | } |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/variables.scss"; |
| | | |
| | | .queuing_modal { |
| | | padding: 10px 30px; |
| | | |
| | | .list { |
| | | .item { |
| | | background: #f4fafb; |
| | | border-radius: 2px; |
| | | border: 1px solid #dfe2e8; |
| | | margin-bottom: 10px; |
| | | padding: 16px; |
| | | |
| | | .head { |
| | | margin-bottom: 15px; |
| | | |
| | | .plate { |
| | | width: 90px; |
| | | text-align: center; |
| | | font-size: 15px; |
| | | color: #111111; |
| | | padding: 4px 5px; |
| | | font-weight: 700; |
| | | border: 1px solid #279baa; |
| | | background-color: #fff; |
| | | } |
| | | |
| | | .status { |
| | | color: $primaryColor; |
| | | } |
| | | |
| | | .code { |
| | | display: flex; |
| | | font-weight: 600; |
| | | height: 30px; |
| | | line-height: 30px; |
| | | font-size: 15px; |
| | | color: #111111; |
| | | background-color: #fff; |
| | | border-radius: 4px; |
| | | border: 1px solid $primaryColor; |
| | | padding-right: 4px; |
| | | |
| | | span { |
| | | &:nth-of-type(1) { |
| | | background: $primaryColor; |
| | | padding: 0 8px; |
| | | color: #fff; |
| | | } |
| | | |
| | | &:nth-of-type(2) { |
| | | padding-left: 4px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .info { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | |
| | | .ite { |
| | | width: 33.3%; |
| | | margin-bottom: 8px; |
| | | |
| | | span { |
| | | &:nth-child(1) { |
| | | color: #666666; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .footer { |
| | | .detail { |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | this.$refs.PlatformQueuingRef.isShowModal = true |
| | | this.$refs.PlatformQueuingRef.activePlat = { ...item } |
| | | this.$refs.PlatformQueuingRef.getList() |
| | | this.$refs.PlatformQueuingRef.title = item.name |
| | | }) |
| | | }, |
| | | handleDetail () { |
| | |
| | | <SearchFormCollapse slot="search-form" :need-more="false"> |
| | | <el-form ref="searchForm" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="" prop="name"> |
| | | <el-input v-model="searchForm.name" clearable placeholder="请è¾å
¥æå°åç§°" @keypress.enter.native="search"></el-input> |
| | | <el-input v-model="searchForm.name" clearable placeholder="请è¾å
¥æå°åç§°" |
| | | @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="" > |
| | | <el-select v-model="searchForm.groupId" placeholder="è¯·éæ©æå°åç»" @change="search" clearable> |
| | | <el-option |
| | | v-for="item in groupList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | <el-form-item label=""> |
| | | <el-select v-model="searchForm.groupId" placeholder="è¯·éæ©æå°åç»" @change="search" clearable> |
| | | <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:hksync:platforms']"> |
| | | <li><el-button type="primary" :loading="working" @click="syncData" icon="el-icon-plus" v-permissions="['business:hksync:platforms']">忥</el-button></li> |
| | | <li><el-button type="primary" :loading="working1" @click="syncStatus" icon="el-icon-plus" v-permissions="['business:hksync:platforms']">忥宿¶ç¶æ</el-button></li> |
| | | <li><el-button type="primary" :loading="working" @click="syncData" icon="el-icon-plus" |
| | | v-permissions="['business:hksync:platforms']">忥</el-button></li> |
| | | <li><el-button type="primary" :loading="working1" @click="syncStatus" icon="el-icon-plus" |
| | | v-permissions="['business:hksync:platforms']">忥宿¶ç¶æ</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="æå°åç§°" fixed min-width="100px"></el-table-column> |
| | | <el-table-column prop="code" label="æå°ç¼ç " fixed min-width="100px"></el-table-column> |
| | | <el-table-column prop="groupName" label="æå±æå°ç»" fixed min-width="150px"></el-table-column> |
| | | <el-table-column prop="workingNum" label="åæ¶å«å·è½¦è¾æ°" min-width="120px"></el-table-column> |
| | | <el-table-column label="ç¦/å¯ç¨" min-width="120px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | @change="changeStatus($event, row)" |
| | | v-model="row.status" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="0" |
| | | :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="stayTmeoutAlarmTime" label="åçè¶
æ¶æ¥è¦æ¶é´(åéï¼" min-width="180px"> |
| | | <template scope="{row}">{{row.stayTmeoutAlarmTime?(row.stayTmeoutAlarmTime):'-'}}</template> |
| | | <el-table-column prop="stayTimeoutAlarmTime" label="åçè¶
æ¶æ¥è¦æ¶é´(åéï¼" min-width="180px"> |
| | | <template scope="{row}">{{ row.stayTimeoutAlarmTime ? (row.stayTimeoutAlarmTime) : '-' }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="workTimeoutAlarmTime" label="ä½ä¸è¶
æ¶æ¥è¦æ¶é´(åéï¼" min-width="180px"> |
| | | <template scope="{row}"> {{row.workTimeoutAlarmTime?(row.workTimeoutAlarmTime):'-'}}</template> |
| | | <template scope="{row}"> {{ row.workTimeoutAlarmTime ? (row.workTimeoutAlarmTime) : '-' }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="workRate" label="æå°ä½ä¸æç(ä¸åª/å°æ¶)" min-width="180px"></el-table-column> |
| | | <el-table-column prop="platformStatus" label="æå°ç¶æ" min-width="100px"> |
| | | <!-- <el-table-column prop="platformStatus" label="æå°ç¶æ" min-width="100px"> |
| | | <template scope="{row}"> |
| | | <span v-if="row.platformStatus == 0">æ 车</span> |
| | | <span v-if="row.platformStatus == 1">æè½¦</span> |
| | | <span v-if="row.platformStatus == 2">è¶
æ¶åé </span> |
| | | <span v-if="row.platformStatus == 3">é误åé </span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | <el-table-column prop="broadcastNames" label="å
³è广æ" min-width="100px"></el-table-column> |
| | | <el-table-column prop="ledNames" label="å
³èLED" min-width="100px"></el-table-column> |
| | | <el-table-column prop="hkDate" label="忥æ¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:platform:update', 'business:platform:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <el-table-column label="æå°ç¶æ" fixed="right" width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaPlatformWindow.open('ç¼è¾æå°ä¿¡æ¯è¡¨', row)" icon="el-icon-edit" v-permissions="['business:platform:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platform:delete']">å é¤</el-button> |
| | | <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66" |
| | | inactive-color="#ff4949" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="containPermissions(['business:platform:update', 'business:platform:delete'])" label="æä½" |
| | | min-width="120" fixed="right"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaPlatformWindow.open('ç¼è¾æå°ä¿¡æ¯è¡¨', row)" icon="el-icon-edit" |
| | | v-permissions="['business:platform:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" |
| | | v-permissions="['business:platform:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaPlatformWindow ref="operaPlatformWindow" @success="handlePageChange"/> |
| | | <OperaPlatformWindow ref="operaPlatformWindow" @success="handlePageChange" /> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | |
| | | name: 'Platform', |
| | | extends: BaseTable, |
| | | components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformWindow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | groupList: [], |
| | | // æç´¢ |
| | |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.config({ |
| | | module: 'æå°ä¿¡æ¯è¡¨', |
| | | api: '/platform/platform', |
| | |
| | | this.loadGroupList() |
| | | }, |
| | | methods: { |
| | | loadGroupList () { |
| | | loadGroupList() { |
| | | allList({}) |
| | | .then(res => { |
| | | this.groupList = res || [] |
| | | }) |
| | | }, |
| | | changeStatus (e, row) { |
| | | changeStatus(e, row) { |
| | | this.api.updateStatusById({ |
| | | id: row.id, |
| | | status: e |
| | | }) |
| | | }, |
| | | syncData () { |
| | | syncData() { |
| | | this.$dialog.actionConfirm('æä½ç¡®è®¤æé', 'æ¨ç¡®è®¤åæ¥å
¨é¨ä¿¡æ¯åï¼') |
| | | .then(() => { |
| | | this.isWorking.working = true |
| | |
| | | this.isWorking.working = false |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | .catch(() => { }) |
| | | }, |
| | | syncStatus () { |
| | | syncStatus() { |
| | | this.$dialog.actionConfirm('æä½ç¡®è®¤æé', 'æ¨ç¡®è®¤åæ¥å
¨é¨ä¿¡æ¯åï¼') |
| | | .then(() => { |
| | | this.isWorking.working = true |
| | |
| | | this.isWorking.working = false |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | .catch(() => { }) |
| | | } |
| | | } |
| | | } |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <QueryForm v-model="filters" :query-form-config="queryQueueUpConfig" @handleQuery="getList(1)" @clear="clear"> |
| | | </QueryForm> |
| | | <div class="df_sb"> |
| | | <QueryForm v-model="filters" :query-form-config="queryQueueUpConfig" @handleQuery="getList(1)" @clear="clear"> |
| | | </QueryForm> |
| | | <el-button @click="openSign" type="primary" style="align-self: flex-start;">车è¾ç¾å°</el-button> |
| | | </div> |
| | | <div class="main_content"> |
| | | <div class="static_wrap"> |
| | | <span>çå¾
ï¼<span class="num">{{ staticParam.waitNum }}</span></span> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="carrierName" label="è¿è¾å
¬å¸" min-width="200" /> |
| | | <el-table-column prop="code" label="è¿åå·" min-width="200" /> |
| | | <el-table-column prop="billCode" label="è¿åå·" min-width="200" /> |
| | | <el-table-column prop="totalNum" label="æ»è¿è¾é(䏿¯)" min-width="130" /> |
| | | <el-table-column prop="driverName" label="驾驶å" min-width="140"> |
| | | <template slot-scope="{ row }"> |
| | |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination" /> |
| | | |
| | | <!-- --> |
| | | <WaybillDetail |
| | | ref="WaybillDetailRef" |
| | | v-if="isShowDetail" |
| | | @success="getList" |
| | | @close="isShowDetail = false" |
| | | /> |
| | | <PlatformSign ref="PlatformSignRef" v-if="isPlatformSign" @success="getPlatGroupList" |
| | | @close="isPlatformSign = false" /> |
| | | <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | } from '@/api' |
| | | import { queryQueueUpConfig } from './config' |
| | | import WaybillDetail from './components/WaybillDetail.vue' |
| | | import PlatformSign from './components/PlatformSign.vue' |
| | | export default { |
| | | components: { |
| | | Pagination, |
| | | QueryForm, |
| | | PlatformSign, |
| | | WaybillDetail |
| | | }, |
| | | data() { |
| | |
| | | staticParam: {}, |
| | | dataList: [], |
| | | loading: false, |
| | | isPlatformSign: false, |
| | | pagination: { |
| | | pageSize: 10, |
| | | page: 1, |
| | |
| | | this.getPlatGroupList() |
| | | }, |
| | | methods: { |
| | | openSign() { |
| | | this.isPlatformSign = true |
| | | this.$nextTick(() => { |
| | | this.$refs.PlatformSignRef.isShowModal = true |
| | | this.$refs.PlatformSignRef.activePlat = this.activeGroup |
| | | this.$refs.PlatformSignRef.getList() |
| | | }) |
| | | }, |
| | | getPlatGroupList() { |
| | | getPlatformGroupList({ |
| | | queryData: 1, |
| | |
| | | color: #111111; |
| | | border-radius: 4px; |
| | | border: 1px solid #dfdede; |
| | | |
| | | span { |
| | | &:nth-of-type(1) { |
| | | background: $primary-color; |
| | |
| | | "proxy" : { |
| | | "/admin_interface" : { |
| | | // è¿ä¸ªå段åéä¸ä½ é
ç½®çbasePrefixUrlä¸è´ï¼ç³»ç»è¯å«å°å¸¦æ/dev-api请æ±çå°åæ¶ï¼ä¼å¨å颿¼æ¥ä¸ä»£çæå¡å¨å°å |
| | | "target" : "http://172.20.10.7:10010", // 代çæå¡å¨ååæIPå°å |
| | | // "target" : "http://192.168.31.42:10010", // 代çæå¡å¨ååæIPå°å |
| | | // "target" : "http://172.20.10.7:10010", // 代çæå¡å¨ååæIPå°å |
| | | "target" : "http://192.168.0.103:10010", // 代çæå¡å¨ååæIPå°å |
| | | // "target" : "http://10.50.250.178:8088/gateway_interface", // 代çæå¡å¨ååæIPå°å |
| | | "changeOrigin" : true, // å
许跨å |
| | | "pathRewrite" : { |
| | |
| | | } |
| | | }, |
| | | "https" : false |
| | | }, |
| | | "sdkConfigs" : { |
| | | "maps" : { |
| | | "amap" : { |
| | | "key" : "d9a554b1808ce10a12a932ed9b0db1d0", |
| | | "securityJsCode" : "", |
| | | "serviceHost" : "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | data() { |
| | | return { |
| | | form: { |
| | | username: '13333333333', |
| | | username: '18056814089', |
| | | password: '1' |
| | | }, |
| | | isShowProtocol: false, |
| | |
| | | </view> |
| | | <view class="box_list_item_nr_item"> |
| | | <text>叿ºå§åï¼</text> |
| | | <text>{{item.driverName}}</text> |
| | | <text>{{item.driverName}} {{item.driverPhone}}</text> |
| | | </view> |
| | | <view class="box_list_item_nr_item"> |
| | | <text>车è¾ä¿¡æ¯ï¼</text> |
| | |
| | | status: '0' |
| | | }, |
| | | jobId: '', |
| | | lat: '', |
| | | lnt: '', |
| | | // lat: '', |
| | | // lnt: '', |
| | | lat: '31.783205', |
| | | lnt: '117.262635', |
| | | nowTime: '', |
| | | signDistance: uni.getStorageSync('driverGuide').signDistance, |
| | | showDetail: false, |
| | |
| | | }, |
| | | onLoad(option) { |
| | | this.jobId = option.id |
| | | if(option.status && option.status == '1'){ |
| | | this.getLocation() |
| | | }else{ |
| | | this.getDetail() |
| | | } |
| | | |
| | | // this.getDetail({ |
| | | // jobId: option.id, |
| | | // lat: 31.769137, |
| | | // lnt: 117.232241, |
| | | // }) |
| | | // if(option.status && option.status == '1'){ |
| | | // this.getLocation() |
| | | // }else{ |
| | | // this.getDetail() |
| | | // } |
| | | this.getDetail() |
| | | setInterval(() => { |
| | | this.nowTime = dayjs().format('HH:mm:ss') |
| | | }) |
| | |
| | | this.getDetail() |
| | | }, |
| | | fail:(err) => { |
| | | console.log('err', err); |
| | | this.showToast('è·åå®ä½å¤±è´¥') |
| | | } |
| | | }) |
| | | }, |
| | |
| | | <view class="status_wrap"> |
| | | <view class="name">{{info.driverName}}çå
¥åé¢çº¦</view> |
| | | <view class="desc">{{info.carCodeFront}}</view> |
| | | <view class="desc" :class="{ |
| | | gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', |
| | | }">{{ infoStatus }}</view> |
| | | <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view> |
| | | <image v-if="info.status == 2" class="icon" src="@/static/ic_passed@2x.png" mode=""></image> |
| | | <image v-if="info.status == 3" class="icon" src="@/static/ic_refused@2x.png" mode=""></image> |
| | |
| | | <!-- æµç¨ --> |
| | | <view 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"> |
| | | <view v-if="index != info.approveDateVO.approveList.length - 1" 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.createDate}}</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text>{{item.memberName}}<text v-if="item.statusInfo" class="status">({{item.statusInfo}})</text></text> |
| | | </view> |
| | | <div v-if="item.checkInfo" class="remark"> |
| | | {{ item.checkInfo }} |
| | | </div> |
| | | <view v-if="item.approveType == 1" class="carbon"> |
| | | <view class="carbon_item" v-for="child in item.approveList" |
| | | :key="child.id"> |
| | | <image :src=" |
| | | child.faceImg |
| | | ? child.faceImg |
| | | : require('@/static/meeting/common/default_user@2x.png') |
| | | "></image> |
| | | <view class="text">{{ child.memberName }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </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: 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> |
| | |
| | | return { |
| | | showApprModal: false, |
| | | checkInfo: '', |
| | | infoStatus: '', |
| | | flag: '1', |
| | | info: {}, |
| | | type: 0, |
| | |
| | | }, |
| | | onLoad(option) { |
| | | this.type = option.objType |
| | | this.infoStatus = option.info |
| | | this.getDetail(option.id) |
| | | }, |
| | | methods: { |
| | |
| | | padding-bottom: 0; |
| | | |
| | | .flow_wrap { |
| | | padding: 30rpx 0; |
| | | padding: 30rpx 0; |
| | | |
| | | .flow_title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 24rpx; |
| | | } |
| | | .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; |
| | | .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{ |
| | | |
| | | .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; |
| | | .status { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | right: 0; |
| | | bottom: 0; |
| | | } |
| | | } |
| | | |
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 4rpx; |
| | | .content { |
| | | flex: 1; |
| | | |
| | | .event { |
| | | font-size: 30rpx; |
| | | } |
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 4rpx; |
| | | |
| | | .time { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | } |
| | | } |
| | | .event { |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | .name_wrap { |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | .time { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | } |
| | | } |
| | | |
| | | .status { |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | .children { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-top: 12rpx; |
| | | .child { |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | margin-right: 12rpx; |
| | | .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%; |
| | | |
| | | .child_img { |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | border-radius: 50%; |
| | | margin-bottom: 2rpx; |
| | | } |
| | | .child_name{ |
| | | } |
| | | |
| | | .child_name { |
| | | margin-bottom: 2rpx; |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .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 { |
| | |
| | | .desc { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | margin-bottom: 12rpx; |
| | | } |
| | | .gray { |
| | | color: #999999; |
| | | } |
| | | |
| | | .status { |
| | | position: absolute; |
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="status_wrap"> |
| | | <view class="name">{{ info.name }}æäº¤ç{{ cateList[type].name }}</view> |
| | | <view |
| | | class="desc" |
| | | :class="{ |
| | | gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', |
| | | }" |
| | | >{{ infoStatus }}</view |
| | | > |
| | | <view v-if="info.businessStatus == '0' || info.businessStatus == '1'" class="status">{{ |
| | | statusMap[info.businessStatus] |
| | | }}</view> |
| | | <image |
| | | v-if="info.businessStatus == '2'" |
| | | src="@/static/ic_passed@2x.png" |
| | | mode="widthFix" |
| | | class="status_img" |
| | | ></image> |
| | | <image |
| | | v-if="info.businessStatus == '3'" |
| | | src="@/static/ic_refused@2x.png" |
| | | mode="widthFix" |
| | | class="status_img" |
| | | ></image> |
| | | </view> |
| | | <!-- --> |
| | | <view class="emyty"></view> |
| | | <view class="module_list"> |
| | | <view class="item"> |
| | | <view class="label">被访人</view> |
| | | <view class="value">{{ info.visitUserName }}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">é¢è®¡å
¥/ç¦»åæ¶é´</view> |
| | | <view class="value" v-if="info.visitTime">{{ info.visitTime }}</view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | <view class="item"> |
| | | <view class="label">访客信æ¯</view> |
| | | <view class="value"> |
| | | <image |
| | | class="avatar" |
| | | :src=" |
| | | info.prefix |
| | | ? info.prefix + info.faceImg |
| | | : require('@/static/meeting/common/default_user@2x.png') |
| | | " |
| | | mode="widthFix" |
| | | ></image> |
| | | <view class="info"> |
| | | <text class="name">{{ info.name }} {{ info.phone }}</text> |
| | | <text>身份è¯å·ï¼{{ info.idCardDecode }}</text> |
| | | <text>å
¥å车è¾ï¼{{ info.carNos }}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">å
¬å¸åç§°</view> |
| | | <view class="value">{{ info.companyName }}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">æ½å·¥äººå</view> |
| | | <view class="value">{{ info.type == 0 ? "å¦" : "æ¯" }}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">æ¥è®¿äºç±</view> |
| | | <view class="value">{{ info.visitReason }}</view> |
| | | </view> |
| | | <view v-if="info.constructionReason" class="item"> |
| | | <view class="label">æ½å·¥å
容</view> |
| | | <view class="value">{{ info.constructionReason }}</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: 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 |
| | | v-if=" |
| | | info.approveDateVO != null && |
| | | info.approveDateVO.canBeApproved != null && |
| | | info.approveDateVO.canBeApproved == 1 |
| | | " |
| | | class="main_footer" |
| | | > |
| | | <view class="btn" @click="handleSub(3)">æç»</view> |
| | | <view class="btn agree" @click="handleSub(2)">åæ</view> |
| | | </view> |
| | | |
| | | <u-popup |
| | | :show="showApprModal" |
| | | :round="10" |
| | | :safeAreaInsetBottom="true" |
| | | mode="bottom" |
| | | @close="showApprModal = false" |
| | | > |
| | | <view class="appr_modal"> |
| | | <view class="title">{{ param.status == 2 ? "åæ" : "æç»" }}</view> |
| | | <textarea |
| | | v-model="param.checkInfo" |
| | | :placeholder=" |
| | | param.status == 2 ? 'åæè¯´æï¼éå¿
å¡«' : 'æç»è¯´æï¼å¿
å¡«' |
| | | " |
| | | placeholder-class="placeholder9" |
| | | /> |
| | | <view class="main_footer"> |
| | | <view class="btn" @click="showApprModal = false">åæ¶</view> |
| | | <view class="btn agree" @click="onSubmit">æäº¤</view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getVisitedDetail, // 访客é¢çº¦è¯¦æ
|
| | | carUseBookAppr |
| | | } from '@/api' |
| | | export default { |
| | | data() { |
| | | return { |
| | | showApprModal: false, |
| | | param: {}, |
| | | info: {}, |
| | | |
| | | id: '', |
| | | type: '', |
| | | infoStatus: '', |
| | | cateList: [ |
| | | { name: '访客ç³è¯·', id: 0 }, |
| | | { name: '访客æ¥å¤', id: 1 }, |
| | | { name: 'ç¨è½¦ç³è¯·', id: 2 }, |
| | | { name: '鿣鿿', id: 3 }, |
| | | { name: 'ç©æµè½¦ç³è¯·', id: 4 }, |
| | | ], |
| | | statusMap: { |
| | | 0: 'å¾
审æ¹', |
| | | 1: '审æ¹ä¸', |
| | | 2: 'å·²éè¿', |
| | | 3: 'å·²æç»', |
| | | 4: '已忶', |
| | | } |
| | | } |
| | | }, |
| | | onLoad(op) { |
| | | this.id = op.id |
| | | this.type = op.objType |
| | | this.infoStatus = op.info |
| | | this.getDetail() |
| | | }, |
| | | methods: { |
| | | getDetail() { |
| | | const { id } = this |
| | | getVisitedDetail({ 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 = [] |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | onSubmit() { |
| | | const { param, info } = this |
| | | if(param.status == '3' && !param.checkInfo){ |
| | | return uni.showToast({ |
| | | title: '请è¾å
¥æç»è¯´æ', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | carUseBookAppr({ |
| | | status: param.status, |
| | | objType: info.type, |
| | | objId: this.id, |
| | | // driverId: param.driverId, |
| | | checkInfo: param.checkInfo |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.showApprModal = false |
| | | setTimeout(() => { |
| | | uni.showToast({ |
| | | title: 'æä½æå', |
| | | icon: 'success' |
| | | }) |
| | | }) |
| | | uni.navigateBack() |
| | | } |
| | | }) |
| | | }, |
| | | handleSub(status) { |
| | | // this.param.flag = |
| | | this.param = { |
| | | status |
| | | } |
| | | this.showApprModal = true |
| | | }, |
| | | }, |
| | | } |
| | | </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: 20rpx; |
| | | color: #222222; |
| | | } |
| | | |
| | | .desc { |
| | | font-size: 26rpx; |
| | | color: #ed4545; |
| | | } |
| | | .gray { |
| | | color: #999999; |
| | | } |
| | | |
| | | .status { |
| | | position: absolute; |
| | | right: -30rpx; |
| | | top: 0; |
| | | height: 60rpx; |
| | | line-height: 60rpx; |
| | | padding: 0 32rpx; |
| | | border-radius: 0rpx 0rpx 0rpx 30rpx; |
| | | background-color: #e9edff; |
| | | color: $uni-color-primary; |
| | | } |
| | | .status_img { |
| | | position: absolute; |
| | | right: 0rpx; |
| | | top: 20rpx; |
| | | width: 120rpx; |
| | | } |
| | | } |
| | | |
| | | .main_footer { |
| | | padding-bottom: 64rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | width: 100%; |
| | | left: 0; |
| | | // padding: 30rpx 10rpx 60rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | background: #ffffff; |
| | | .btn { |
| | | width: 336rpx; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | background: #ffffff; |
| | | border-radius: 44rpx; |
| | | border: 1rpx solid #999999; |
| | | font-size: 32rpx; |
| | | text-align: center; |
| | | margin: 16rpx 0; |
| | | } |
| | | |
| | | .agree { |
| | | background: $uni-color-primary; |
| | | color: #fff; |
| | | border: 1rpx solid $uni-color-primary; |
| | | } |
| | | } |
| | | |
| | | .appr_modal { |
| | | padding: 36rpx 30rpx 0; |
| | | |
| | | .title { |
| | | font-weight: 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> |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="status_wrap">
|
| | | <view class="name">{{ info.name }}æäº¤ç{{ cateList[type].name }}</view>
|
| | | <view class="desc" :class="{
|
| | | gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
|
| | | }">{{ infoStatus }}</view>
|
| | | <view v-if="info.businessStatus == '0' || info.businessStatus == '1'" class="status">{{
|
| | | statusMap[info.businessStatus]
|
| | | }}</view>
|
| | | <image v-if="info.businessStatus == '2'" src="@/static/ic_passed@2x.png" mode="widthFix" class="status_img">
|
| | | </image>
|
| | | <image v-if="info.businessStatus == '3'" src="@/static/ic_refused@2x.png" mode="widthFix" class="status_img">
|
| | | </image>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="emyty"></view>
|
| | | <view class="module_list">
|
| | | <view class="item">
|
| | | <view class="label">被访人</view>
|
| | | <view class="value">{{ info.visitUserName }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">é¢è®¡å
¥/ç¦»åæ¶é´</view>
|
| | | <view class="value" v-if="info.visitTime">{{ info.visitTime }}</view>
|
| | | </view>
|
| | | <view class="emyty"></view>
|
| | | <view class="item">
|
| | | <view class="label">访客信æ¯</view>
|
| | | <view class="value">
|
| | | <image class="avatar" :src="
|
| | | info.prefix
|
| | | ? info.prefix + info.faceImg
|
| | | : require('@/static/meeting/common/default_user@2x.png')
|
| | | " mode="widthFix"></image>
|
| | | <view class="info">
|
| | | <text class="name">{{ info.name }} {{ info.phone }}</text>
|
| | | <text>身份è¯å·ï¼{{ info.idCardDecode }}</text>
|
| | | <text>å
¥å车è¾ï¼{{ info.carNos }}</text>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">å
¬å¸åç§°</view>
|
| | | <view class="value">{{ info.companyName }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">æ½å·¥äººå</view>
|
| | | <view class="value">{{ info.type == 0 ? "å¦" : "æ¯" }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="label">æ¥è®¿äºç±</view>
|
| | | <view class="value">{{ info.visitReason }}</view>
|
| | | </view>
|
| | | <view v-if="info.constructionReason" class="item">
|
| | | <view class="label">æ½å·¥å
容</view>
|
| | | <view class="value">{{ info.constructionReason }}</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: 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 v-if="
|
| | | info.approveDateVO != null &&
|
| | | info.approveDateVO.canBeApproved != null &&
|
| | | info.approveDateVO.canBeApproved == 1
|
| | | " class="main_footer">
|
| | | <view class="btn" @click="handleSub(3)">æç»</view>
|
| | | <view class="btn agree" @click="handleSub(2)">åæ</view>
|
| | | </view>
|
| | |
|
| | | <u-popup :show="showApprModal" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="showApprModal = false">
|
| | | <view class="appr_modal">
|
| | | <view class="title">{{ param.status == 2 ? "åæ" : "æç»" }}</view>
|
| | | <textarea v-model="param.checkInfo" :placeholder="
|
| | | param.status == 2 ? 'åæè¯´æï¼éå¿
å¡«' : 'æç»è¯´æï¼å¿
å¡«'
|
| | | " placeholder-class="placeholder9" />
|
| | | <view class="main_footer">
|
| | | <view class="btn" @click="showApprModal = false">åæ¶</view>
|
| | | <view class="btn agree" @click="onSubmit">æäº¤</view>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | getVisitedDetail, // 访客é¢çº¦è¯¦æ
|
| | | carUseBookAppr
|
| | | } from '@/api'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | showApprModal: false,
|
| | | param: {},
|
| | | info: {},
|
| | |
|
| | | id: '',
|
| | | type: '',
|
| | | infoStatus: '',
|
| | | cateList: [{
|
| | | name: '访客ç³è¯·',
|
| | | id: 0
|
| | | },
|
| | | {
|
| | | name: '访客æ¥å¤',
|
| | | id: 1
|
| | | },
|
| | | {
|
| | | name: 'ç¨è½¦ç³è¯·',
|
| | | id: 2
|
| | | },
|
| | | {
|
| | | name: '鿣鿿',
|
| | | id: 3
|
| | | },
|
| | | {
|
| | | name: 'ç©æµè½¦ç³è¯·',
|
| | | id: 4
|
| | | },
|
| | | ],
|
| | | statusMap: {
|
| | | 0: 'å¾
审æ¹',
|
| | | 1: '审æ¹ä¸',
|
| | | 2: 'å·²éè¿',
|
| | | 3: 'å·²æç»',
|
| | | 4: '已忶',
|
| | | }
|
| | | }
|
| | | },
|
| | | onLoad(op) {
|
| | | this.id = op.id
|
| | | this.type = op.objType
|
| | | this.infoStatus = op.info
|
| | | this.getDetail()
|
| | | },
|
| | | methods: {
|
| | | getDetail() {
|
| | | const {
|
| | | id
|
| | | } = this
|
| | | getVisitedDetail({
|
| | | 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 = []
|
| | | }
|
| | | })
|
| | | }
|
| | | })
|
| | | },
|
| | | onSubmit() {
|
| | | const {
|
| | | param,
|
| | | info
|
| | | } = this
|
| | | if (param.status == '3' && !param.checkInfo) {
|
| | | return uni.showToast({
|
| | | title: '请è¾å
¥æç»è¯´æ',
|
| | | icon: 'none'
|
| | | })
|
| | | }
|
| | | carUseBookAppr({
|
| | | status: param.status,
|
| | | objType: info.type,
|
| | | objId: this.id,
|
| | | // driverId: param.driverId,
|
| | | checkInfo: param.checkInfo
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | this.showApprModal = false
|
| | | setTimeout(() => {
|
| | | uni.showToast({
|
| | | title: 'æä½æå',
|
| | | icon: 'success'
|
| | | })
|
| | | })
|
| | | uni.navigateBack()
|
| | | }
|
| | | })
|
| | | },
|
| | | handleSub(status) {
|
| | | // this.param.flag = |
| | | this.param = {
|
| | | status
|
| | | }
|
| | | this.showApprModal = true
|
| | | },
|
| | | },
|
| | | }
|
| | | </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: 20rpx;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .desc {
|
| | | font-size: 26rpx;
|
| | | color: #ed4545;
|
| | | }
|
| | |
|
| | | .gray {
|
| | | color: #999999;
|
| | | }
|
| | |
|
| | | .status {
|
| | | position: absolute;
|
| | | right: -30rpx;
|
| | | top: 0;
|
| | | height: 60rpx;
|
| | | line-height: 60rpx;
|
| | | padding: 0 32rpx;
|
| | | border-radius: 0rpx 0rpx 0rpx 30rpx;
|
| | | background-color: #e9edff;
|
| | | color: $uni-color-primary;
|
| | | }
|
| | |
|
| | | .status_img {
|
| | | position: absolute;
|
| | | right: 0rpx;
|
| | | top: 20rpx;
|
| | | width: 120rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .main_footer {
|
| | | padding-bottom: 64rpx;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | width: 100%;
|
| | | left: 0;
|
| | | // padding: 30rpx 10rpx 60rpx;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | background: #ffffff;
|
| | |
|
| | | .btn {
|
| | | width: 336rpx;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | background: #ffffff;
|
| | | border-radius: 44rpx;
|
| | | border: 1rpx solid #999999;
|
| | | font-size: 32rpx;
|
| | | text-align: center;
|
| | | margin: 16rpx 0;
|
| | | }
|
| | |
|
| | | .agree {
|
| | | background: $uni-color-primary;
|
| | | color: #fff;
|
| | | border: 1rpx solid $uni-color-primary;
|
| | | }
|
| | | }
|
| | |
|
| | | .appr_modal {
|
| | | padding: 36rpx 30rpx 0;
|
| | |
|
| | | .title {
|
| | | font-weight: 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> |
| | |
| | | data() { |
| | | return { |
| | | form: { |
| | | username: '13996529050', |
| | | username: '18056814089', |
| | | password: '123456', |
| | | code: 1 |
| | | }, |
| | |
| | | "historyApiFallback": true,
|
| | | "disableHostCheck": true,
|
| | | "proxy": {
|
| | | "/admin_interface": {
|
| | | "/gateway_interface": {
|
| | | // è¿ä¸ªå段åéä¸ä½ é
ç½®çbasePrefixUrlä¸è´ï¼ç³»ç»è¯å«å°å¸¦æ/dev-api请æ±çå°åæ¶ï¼ä¼å¨å颿¼æ¥ä¸ä»£çæå¡å¨å°å
|
| | | // "target" : "http://192.168.0.173/admin_interface", // 代çæå¡å¨ååæIPå°å
|
| | | "target": "http://192.168.0.139:10010", // 代çæå¡å¨ååæIPå°å
|
| | | "target" : "http://10.50.250.178:8088/gateway_interface", // 代çæå¡å¨ååæIPå°å
|
| | | // "target": "http://192.168.0.139:10010", // 代çæå¡å¨ååæIPå°å
|
| | | "changeOrigin": true, // å
许跨å
|
| | | "pathRewrite": {
|
| | | "^/admin_interface": "" // éåå°åï¼å¦æå®é
æ¥å£ä¸æ¯ä¸å¸¦/dev-apiï¼éè¦å°è¿ä¸ªåç¼ç½®ç©ºï¼å 为è¿ä¸ªåç¼åªæ¯ä¸ºäºè¯å«ç¨ï¼è¯å«å®ä¹å就没ç¨äº
|
| | | "^/gateway_interface": "" // éåå°åï¼å¦æå®é
æ¥å£ä¸æ¯ä¸å¸¦/dev-apiï¼éè¦å°è¿ä¸ªåç¼ç½®ç©ºï¼å 为è¿ä¸ªåç¼åªæ¯ä¸ºäºè¯å«ç¨ï¼è¯å«å®ä¹å就没ç¨äº
|
| | | }
|
| | | }
|
| | | },
|
| | |
| | | { |
| | | "path": "pages/index/index", |
| | | "style": { |
| | | "navigationBarTitleText": "è°åº¦å¹³å°", |
| | | "navigationStyle": "custom", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | },
|
| | |
| | | <view class="data_list"> |
| | | <view class="line" v-for="(platform, i) in item.platformList" :key="platform.id"> |
| | | <view class="name">{{platform.name}}</view> |
| | | <u-switch v-model="platform.status" activeColor="#279BAA" inactiveColor="#cccccc" :inactiveValue="0" :activeValue="1" @change="e => changeStatus(platform)" /> |
| | | <u-switch v-model="platform.status" activeColor="#279BAA" inactiveColor="#cccccc" :inactiveValue="1" :activeValue="0" @change="e => changeStatus(platform)" /> |
| | | </view> |
| | | </view> |
| | | </template> |
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="banner">
|
| | | <image src="@/static/banner_diaodu@2x.png" mode=""></image>
|
| | | </view>
|
| | | <view class="module">
|
| | | <view class="item" @click="jump('/pages/index/center')">
|
| | | <image src="@/static/ic_yuetaidiaodu@2x.png" mode=""></image>
|
| | | <view class="text">æå°è°åº¦ä¸å¿</view>
|
| | | </view>
|
| | | <view class="item" @click="jump('/pages/index/queueup')">
|
| | | <image src="@/static/ic_cheliangpaidui@2x.png" mode=""></image>
|
| | | <view class="text">车éæéæ
åµ</view>
|
| | | </view>
|
| | | <view class="item" @click="jump('/pages/index/control')">
|
| | | <image src="@/static/ic_qiyong@2x.png" mode=""></image>
|
| | | <view class="text">æå°å¯ç¨åç¨</view>
|
| | | </view>
|
| | | <view class="item" @click="jump('/pages/index/set')">
|
| | | <image src="@/static/ic_peizhiyuetai@2x.png" mode=""></image>
|
| | | <view class="text">é
ç½®æ¾ç¤ºæå°</view>
|
| | | </view>
|
| | | </view>
|
| | | <!-- footer -->
|
| | | <view class="main_footer">
|
| | | <image src="@/static/logo@2x.png" mode=""></image>
|
| | | <text>å®å¾½å®æ³°ç©æµæé责任å
¬å¸çæææ</text>
|
| | | <view class="main_app"> |
| | | <view class="main_header"> |
| | | <image src="../../static/back.svg" class="back"></image> |
| | | <view class="title">è°åº¦å¹³å°</view> |
| | | <view class="loginout" @click="loginout">éåºç»å½</view> |
| | | </view>
|
| | | <view class="main_content"> |
| | | <view class="banner"> |
| | | <image src="@/static/banner_diaodu@2x.png" mode=""></image> |
| | | </view> |
| | | <view class="module"> |
| | | <view class="item" @click="jump('/pages/index/center')"> |
| | | <image src="@/static/ic_yuetaidiaodu@2x.png" mode=""></image> |
| | | <view class="text">æå°è°åº¦ä¸å¿</view> |
| | | </view> |
| | | <view class="item" @click="jump('/pages/index/queueup')"> |
| | | <image src="@/static/ic_cheliangpaidui@2x.png" mode=""></image> |
| | | <view class="text">车éæéæ
åµ</view> |
| | | </view> |
| | | <view class="item" @click="jump('/pages/index/control')"> |
| | | <image src="@/static/ic_qiyong@2x.png" mode=""></image> |
| | | <view class="text">æå°å¯ç¨åç¨</view> |
| | | </view> |
| | | <view class="item" @click="jump('/pages/index/set')"> |
| | | <image src="@/static/ic_peizhiyuetai@2x.png" mode=""></image> |
| | | <view class="text">é
ç½®æ¾ç¤ºæå°</view> |
| | | </view> |
| | | </view> |
| | | <!-- footer --> |
| | | <view class="main_footer"> |
| | | <image src="@/static/logo@2x.png" mode=""></image> |
| | | <text>å®å¾½å®æ³°ç©æµæé责任å
¬å¸çæææ</text> |
| | | </view> |
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
| | | onLoad() {
|
| | |
|
| | | },
|
| | | methods: {
|
| | | methods: { |
| | | loginout() { |
| | | uni.showModal({ |
| | | title: 'æç¤º', |
| | | content: '确认è¦éåºç»å½å', |
| | | success: (res) => { |
| | | if (res.confirm) { |
| | | uni.clearStorageSync({}) |
| | | uni.redirectTo({ |
| | | url: '/pages/index/login' |
| | | }) |
| | | } else if (res.cancel) { |
| | | console.log('ç¨æ·ç¹å»åæ¶'); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | },
|
| | | jump(path) {
|
| | | uni.navigateTo({
|
| | | url: path
|
| | |
| | | }
|
| | | }
|
| | | </script>
|
| | | <style lang="scss">
|
| | | <style lang="scss"> |
| | | .main_header{ |
| | | width: 100%; |
| | | height: 176rpx; |
| | | padding: 88rpx 30rpx 0; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | background-color: $uni-color-primary; |
| | | color: #fff; |
| | | .back{ |
| | | width: 42rpx; |
| | | height: 42rpx; |
| | | } |
| | | .title{ |
| | | font-weight: 500; |
| | | font-size: 36rpx; |
| | | } |
| | | }
|
| | | .main_app {
|
| | | padding: 30rpx;
|
| | | min-height: 100vh;
|
| | | background: #f7f7f7;
|
| | | background: #f7f7f7; |
| | | padding: 0; |
| | | .main_content{ |
| | | padding: 30rpx; |
| | | }
|
| | | .banner {
|
| | | width: 100%;
|
| | | height: 270rpx;
|
| | |
| | | <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" /> |
| | | <view class="login_title" style="marginTop: 40rpx;">宿³°ç©æµæºæ
§ååº</view> |
| | | <view class="login_title" style="marginBottom: 60rpx;">æ°ååæå°è°åº¦å¹³å°</view> |
| | | <view class=""> |
| | | {{err}} |
| | | </view> |
| | | <view class="login_list"> |
| | | <view class="login_list_item"> |
| | | <image src="@/static/login_ic_phone@2x.png" mode="widthFix" /> |
| | |
| | | }) |
| | | } |
| | | }, err => { |
| | | this.err = JSON.stringify(err) |
| | | // this.err = JSON.stringify(err) |
| | | }) |
| | | }, |
| | | getContent() { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727082453936" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4342" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M395.21518 513.604544l323.135538-312.373427c19.052938-18.416442 19.052938-48.273447 0-66.660212-19.053961-18.416442-49.910737-18.416442-68.964698 0L291.75176 480.290811c-19.052938 18.416442-19.052938 48.273447 0 66.660212l357.633237 345.688183c9.525957 9.207709 22.01234 13.796214 34.497699 13.796214 12.485359 0 24.971741-4.588505 34.466999-13.82896 19.052938-18.416442 19.052938-48.242747 0-66.660212L395.21518 513.604544z" fill="#ffffff" p-id="4343"></path></svg> |
| | |
| | | |
| | | export const baseUrl = 'admin_interface/' |
| | | export const baseUrl = 'gateway_interface/' |
| | | // export const baseUrl = 'http://192.168.0.139:10010/admin_interface/' |
| | | export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do` |
| | | export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch` |
| | |
| | | .eq(Bookings::getRoomId,bookings.getRoomId()) |
| | | .ne(Bookings::getId,bookings.getId()) |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å卿ªå¼å¯ä¼è®®ï¼æ æ³è¿è¡å¼å§ä¼è®®"); |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å卿ªå¼å¯ä¼è®®ï¼æ æ³å¼å§ä¼è®®"); |
| | | }; |
| | | |
| | | if(bookingsMapper.selectCount(new QueryWrapper<Bookings>() |
| | |
| | | .eq(Bookings::getStatus,Constants.ZERO) |
| | | .eq(Bookings::getRoomId,bookings.getRoomId()) |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å½åå¼å¯æ¶é´ä¸å
¶ä»ä¼è®®åå¨å²çªï¼æ æ³è¿è¡å¼å§ä¼è®®"); |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å½åå¼å¯æ¶é´ä¸å
¶ä»ä¼è®®åå¨å²çªï¼æ æ³å¼å§ä¼è®®"); |
| | | }; |
| | | }else{ |
| | | if(bookings.getStartTime().getTime() > System.currentTimeMillis()){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æªå°ä¼è®®ç³è¯·å¼å§æ¶é´ï¼æ æ³è¿è¡å¼å§"); |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æªå°ä¼è®®ç³è¯·å¼å§æ¶é´ï¼æ æ³å¼å§"); |
| | | } |
| | | } |
| | | bookings.setStartTimeReal(new Date()); |
| | |
| | | Integer re = recordisExist(rooms.getId()); |
| | | if (Constants.equalsInteger(re, Constants.ONE)) { |
| | | //åä¸é¢çº¦è®°å½ä¸å
è®¸æ´æ°å¼æ¾æ¶é´åç²åº¦åé |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "ä¼è®®å®¤åå¨é¢çº¦ä¸çè®°å½ï¼ä¸å
许修æ¹"); |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "ä¼è®®å®¤åå¨é¢çº¦ä¸çè®°å½ï¼ä¸å
许修æ¹"); |
| | | rooms.setStartTime(null); |
| | | rooms.setEndTime(null); |
| | | rooms.setIntervalTime(null); |
| | |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.dao.business.model.PlatformJob; |
| | | import com.doumee.dao.web.reqeust.JobDetailDTO; |
| | | import com.doumee.dao.web.reqeust.SignInDTO; |
| | | import com.doumee.service.business.PlatformJobService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | public ApiResponse<PlatformJob> jobDetail (@RequestBody JobDetailDTO jobDetailDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | return ApiResponse.success(platformJobService.getDetail(jobDetailDTO)); |
| | | } |
| | | |
| | | @ApiOperation("ä»»å¡ç¾å°") |
| | | @PostMapping("/signIn") |
| | | public ApiResponse signIn (@RequestBody SignInDTO signInDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){ |
| | | signInDTO.setLoginUserInfo(getLoginUser(token)); |
| | | platformJobService.signIn(signInDTO); |
| | | return ApiResponse.success("æä½æå"); |
| | | } |
| | | } |
| | |
| | | public ApiResponse<List<PlatformWarnEventListResponse>> warningEventList(@RequestBody PlatformWarnEventListRequest param) { |
| | | return ApiResponse.success(new ArrayList<>()); |
| | | } |
| | | |
| | | @LoginNoRequired |
| | | @PreventRepeat |
| | | @ApiOperation("ãæå°ãæå°ç¶æ") |
| | | @PostMapping("/platform/getStatusList") |
| | | public ApiResponse<List<PlatformStatusListResponse>> getStatusList() { |
| | | return ApiResponse.success(platformService.getPlatformStatusList()); |
| | | } |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @ExcelColumn(name="æ´æ°æ¶é´") |
| | | |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤0å¦ 1æ¯", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "æåäºä»¶æ¨éæ¶é´") |
| | | @ExcelColumn(name="æåäºä»¶æ¨éæ¶é´") |
| | | |
| | | private Date lastEventTime; |
| | | |
| | | @ApiModelProperty(value = "çæ§ç¹åç§°ï¼å¤ä¸ªç¨è±æéå·éå¼") |
| | |
| | | private String groupName; |
| | | @ApiModelProperty(value = "å
³èLEDç¼ç éåï¼è±æéå·éå¼", example = "1") |
| | | @TableField(exist = false) |
| | | private String ledIds; |
| | | private List<Integer> ledIds; |
| | | @ApiModelProperty(value = "å
³è广æç¼ç éåï¼è±æéå·éå¼", example = "1") |
| | | @TableField(exist = false) |
| | | private String broadcastIds; |
| | | private List<Integer> broadcastIds; |
| | | @ApiModelProperty(value = "å
³èLEDåç§°éåï¼è±æéå·éå¼", example = "1") |
| | | @TableField(exist = false) |
| | | private String ledNames; |
| | |
| | | @TableField(exist = false) |
| | | private Integer workStatus; |
| | | |
| | | @ApiModelProperty(value = "ä½ä¸è½¦è¾è½¦çç
§") |
| | | @TableField(exist = false) |
| | | private String workCarCode; |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value = "æå°ä½ä¸æ°æ®") |
| | |
| | | @ExcelColumn(name="ç¾å°æ¶é´") |
| | | private Date signDate; |
| | | |
| | | @ApiModelProperty(value = "ç¾å°æ¹å¼ 0appç¾å° 1æ«ç ç¾å°", example = "1") |
| | | @ExcelColumn(name="ç¾å°æ¹å¼ 0appç¾å° 1æ«ç ç¾å°") |
| | | @ApiModelProperty(value = "ç¾å°æ¹å¼ 0appç¾å° 1æ«ç ç¾å° 2åå°ç¾å°", example = "1") |
| | | @ExcelColumn(name="ç¾å°æ¹å¼ 0appç¾å° 1æ«ç ç¾å° 2åå°ç¾å°") |
| | | private Integer singType; |
| | | @ApiModelProperty(value = "éç¥WMSä½ä¸ç»å®æå°æ¶é´") |
| | | @ExcelColumn(name="éç¥WMSä½ä¸ç»å®æå°æ¶é´") |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.openapi.response; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by IntelliJ IDEA. |
| | | * |
| | | * @Author : Rk |
| | | * @create 2023/12/7 11:19 |
| | | */ |
| | | @Data |
| | | @ApiModel("ãæå°ãæå°ç¶æ") |
| | | public class PlatformStatusListResponse { |
| | | |
| | | @ApiModelProperty(value = "æå°ID" ) |
| | | private String platformHkId; |
| | | @ApiModelProperty(value = "æå°åç§°" ) |
| | | private String platformName; |
| | | @ApiModelProperty(value = "车çå·" ) |
| | | private String carCode; |
| | | @ApiModelProperty(value = "æå°ç¶æ 0-æ 车 1-æè½¦ 2-è¶
æ¶åé 3-é误åé " ) |
| | | private Integer status; |
| | | |
| | | } |
| | |
| | | private Date createDate; |
| | | @ApiModelProperty(value = "äºä»¶å
容说æ") |
| | | private String content; |
| | | @ApiModelProperty(value = "æå°åç§°") |
| | | private String platformName; |
| | | @ApiModelProperty(value = "æå°ç¼ç ") |
| | | private String platfromHkId; |
| | | } |
| | |
| | | @ApiModelProperty(value = "ä»»å¡ä¸»é®") |
| | | private Integer jobId; |
| | | |
| | | @ApiModelProperty(value = "ç¾å°ç±»åï¼ 0=appç¾å° 1=æ«ç ç¾å°") |
| | | @ApiModelProperty(value = "ç¾å°ç±»åï¼ 0=appç¾å° 1=æ«ç ç¾å° 2=åå°ç¾å°") |
| | | private Integer signType; |
| | | |
| | | @ApiModelProperty(value = "ç¾å°äºç»´ç å¼") |
| | |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.Platform; |
| | | import com.doumee.dao.openapi.response.PlatformNumByStatusResponse; |
| | | import com.doumee.dao.openapi.response.PlatformStatusListResponse; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | |
| | | PlatformNumByStatusResponse getPlatformNumByStatusResponse(); |
| | | |
| | | List<PlatformStatusListResponse> getPlatformStatusList(); |
| | | |
| | | } |
| | |
| | | .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId()) |
| | | |
| | | .apply(pageWrap.getModel().getQueryStatus() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatus()+"')") |
| | | .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart())) |
| | | .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd())) |
| | | .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart())) |
| | | .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd())) |
| | | .eq(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh) |
| | | .ne(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ZERO,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh) |
| | | ; |
| | |
| | | }else{ |
| | | platformJob.setWaitTime("çå¾
å«å·"); |
| | | } |
| | | }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){ |
| | | }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey()) |
| | | || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){ |
| | | //æ¥è¯¢æåå¼å§ä»»å¡çæå°è®°å½ æ¥å¿è¡¨ å 为åå¨å¼å¸¸æèµ· 转移 çé®é¢ |
| | | PlatformLog platformLog = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda() |
| | | .eq(PlatformLog::getJobId,platformJob.getId()) |
| | |
| | | .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId) |
| | | .eq(PlatformJob::getIsdeleted,Constants.ZERO) |
| | | .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile()) |
| | | .like(PlatformJob::getArriveDate,DateUtil.getCurrDate()) |
| | | // .like(PlatformJob::getArriveDate,DateUtil.getCurrDate()) |
| | | .orderByDesc(PlatformJob::getId) |
| | | ); |
| | | for (PlatformJob platformJob:platformJobList) { |
| | |
| | | |
| | | PlatformJob oldPlatformJob = new PlatformJob(); |
| | | BeanUtils.copyProperties(platformJob,oldPlatformJob); |
| | | |
| | | platformJob.setConfirmTaskDate(new Date()); |
| | | platformJob.setArriveDate(confirmTaskDTO.getArriveDate()); |
| | | platformJob.setCarCodeBack(confirmTaskDTO.getCarCodeBack()); |
| | | platformJob.setStatus(Constants.PlatformJobStatus.WART_SIGN_IN.getKey()); |
| | | platformJob.setEditDate(new Date()); |
| | | platformJobMapper.updateById(platformJob); |
| | |
| | | if(Objects.isNull(platformJob)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¸å¡ç¶æå·²æµè½¬ï¼è¯·å·æ°æ¥ç"); |
| | | } |
| | | |
| | | PlatformJob oldPlatformJob = new PlatformJob(); |
| | | BeanUtils.copyProperties(platformJob,oldPlatformJob); |
| | | |
| | | if(Constants.equalsInteger(signInDTO.getSignType(),Constants.ZERO)){ |
| | | if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¸å¡ç¶æå·²æµè½¬ï¼è¯·å·æ°æ¥ç"); |
| | | } |
| | | this.distanceSignIn(signInDTO,platformJob); |
| | | }else if(Constants.equalsInteger(signInDTO.getSignType(),Constants.ONE)){ |
| | | if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¸å¡ç¶æå·²æµè½¬ï¼è¯·å·æ°æ¥ç"); |
| | | } |
| | | this.sceneSignIn(signInDTO); |
| | | }else if(Constants.equalsInteger(signInDTO.getSignType(),Constants.TWO)){ |
| | | if(!(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CONFIRM.getKey())|| |
| | | Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ä¸å¡ç¶æå·²æµè½¬ï¼è¯·å·æ°æ¥ç"); |
| | | } |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"ç¾å°ç±»åé误"); |
| | | } |
| | | platformJob.setSignDate(new Date()); |
| | | platformJob.setSingType(Constants.ZERO); |
| | | platformJob.setSingType(signInDTO.getSignType()); |
| | | platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey()); |
| | | platformJobMapper.updateById(platformJob); |
| | | //å卿使¥å¿ |
| | |
| | | Constants.PlatformJobLogType.SIGN.getInfo()); |
| | | } |
| | | |
| | | |
| | | public void distanceSignIn(SignInDTO signInDTO , PlatformJob platformJob){ |
| | | if(Objects.isNull(signInDTO.getLat()) |
| | | || Objects.isNull(signInDTO.getLnt())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"ç»çº¬åº¦ä¿¡æ¯å¼å¸¸"); |
| | | } |
| | | |
| | | //è·åç¾å°ç¹çç»çº¬åº¦ |
| | | Double lat = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LAT).getCode()); |
| | | Double lnt = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LNT).getCode()); |
| | |
| | | } |
| | | |
| | | public void sceneSignIn(SignInDTO signInDTO){ |
| | | |
| | | if( StringUtils.isNotBlank(signInDTO.getQrCodeKey())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | |
| | | || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){ |
| | | //TODO ä¸åå
¥åæé |
| | | |
| | | |
| | | } |
| | | //å卿使¥å¿ |
| | | savePlatformLog(Constants.PlatformJobLogType.IN_WAIT.getKey(),oldPlatformJob,platformJob, |
| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import cn.emay.sdk.util.StringUtil; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.DeviceMapper; |
| | | import com.doumee.dao.business.PlatformDeviceMapper; |
| | | import com.doumee.dao.business.PlatformMapper; |
| | | import com.doumee.dao.business.join.PlatformJoinMapper; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.Platform; |
| | | import com.doumee.dao.business.model.PlatformGroup; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.openapi.response.PlatformNumByStatusResponse; |
| | | import com.doumee.dao.openapi.response.PlatformStatusListResponse; |
| | | import com.doumee.service.business.PlatformDeviceService; |
| | | import com.doumee.service.business.PlatformService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | private PlatformMapper platformMapper; |
| | | @Autowired |
| | | private PlatformJoinMapper platformJoinMapper; |
| | | @Autowired |
| | | private PlatformDeviceMapper platformDeviceMapper; |
| | | @Autowired |
| | | private DeviceMapper deviceMapper; |
| | | |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public Integer create(Platform platform) { |
| | | platform.setCreateDate(new Date()); |
| | | platform.setIsdeleted(Constants.ZERO); |
| | | platform.setCreator(platform.getLoginUserInfo().getId()); |
| | | platformMapper.insert(platform); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platform.getLedIds())){ |
| | | List<PlatformDevice> platformDeviceList = new ArrayList<>(); |
| | | for (Integer ledId:platform.getLedIds()) { |
| | | Device device = deviceMapper.selectById(ledId); |
| | | if(Objects.isNull(device)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"æªæ¥è¯¢å°led设å¤ä¿¡æ¯ã"+ledId+"ã"); |
| | | } |
| | | PlatformDevice platformDevice = new PlatformDevice(); |
| | | platformDevice.setIsdeleted(Constants.ZERO); |
| | | platformDevice.setPlatformId(platform.getId()); |
| | | platformDevice.setCreateDate(new Date()); |
| | | platformDevice.setCreator(platform.getLoginUserInfo().getId()); |
| | | platformDevice.setType(Constants.ZERO); |
| | | platformDevice.setDeviceId(ledId.toString()); |
| | | platformDevice.setHkId(device.getHkId()); |
| | | platformDevice.setName(device.getName()); |
| | | platformDeviceList.add(platformDevice); |
| | | } |
| | | platformDeviceMapper.insert(platformDeviceList); |
| | | } |
| | | |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platform.getBroadcastIds())){ |
| | | List<PlatformDevice> platformDeviceList = new ArrayList<>(); |
| | | for (Integer broadcastId:platform.getBroadcastIds()) { |
| | | Device device = deviceMapper.selectById(broadcastId); |
| | | if(Objects.isNull(device)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"æªæ¥è¯¢å°å¹¿æè®¾å¤ä¿¡æ¯ã"+broadcastId+"ã"); |
| | | } |
| | | PlatformDevice platformDevice = new PlatformDevice(); |
| | | platformDevice.setIsdeleted(Constants.ZERO); |
| | | platformDevice.setPlatformId(platform.getId()); |
| | | platformDevice.setCreateDate(new Date()); |
| | | platformDevice.setCreator(platform.getLoginUserInfo().getId()); |
| | | platformDevice.setType(Constants.TWO); |
| | | platformDevice.setDeviceId(broadcastId.toString()); |
| | | platformDevice.setHkId(device.getHkId()); |
| | | platformDevice.setName(device.getName()); |
| | | platformDeviceList.add(platformDevice); |
| | | } |
| | | platformDeviceMapper.insert(platformDeviceList); |
| | | } |
| | | |
| | | return platform.getId(); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public void updateById(Platform platform) { |
| | | platform.setEditor(platform.getLoginUserInfo().getId()); |
| | | platform.setEditDate(new Date()); |
| | | //å é¤LED/å¹¿ææ°æ® |
| | | platformDeviceMapper.delete(new QueryWrapper<PlatformDevice>().lambda() |
| | | .eq(PlatformDevice::getPlatformId,platform.getId()) |
| | | .in(PlatformDevice::getType,Constants.ZERO,Constants.TWO) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platform.getLedIds())){ |
| | | List<PlatformDevice> platformDeviceList = new ArrayList<>(); |
| | | String ledNames = ""; |
| | | for (Integer ledId:platform.getLedIds()) { |
| | | Device device = deviceMapper.selectById(ledId); |
| | | if(Objects.isNull(device)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"æªæ¥è¯¢å°led设å¤ä¿¡æ¯ã"+ledId+"ã"); |
| | | } |
| | | PlatformDevice platformDevice = new PlatformDevice(); |
| | | platformDevice.setIsdeleted(Constants.ZERO); |
| | | platformDevice.setPlatformId(platform.getId()); |
| | | platformDevice.setCreateDate(new Date()); |
| | | platformDevice.setCreator(platform.getLoginUserInfo().getId()); |
| | | platformDevice.setType(Constants.ZERO); |
| | | platformDevice.setDeviceId(ledId.toString()); |
| | | platformDevice.setHkId(device.getHkId()); |
| | | platformDevice.setName(device.getName()); |
| | | platformDeviceList.add(platformDevice); |
| | | } |
| | | platformDeviceMapper.insert(platformDeviceList); |
| | | platform.setLedNames(ledNames); |
| | | } |
| | | |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platform.getBroadcastIds())){ |
| | | List<PlatformDevice> platformDeviceList = new ArrayList<>(); |
| | | String ledNames = ""; |
| | | for (Integer broadcastId:platform.getBroadcastIds()) { |
| | | Device device = deviceMapper.selectById(broadcastId); |
| | | if(Objects.isNull(device)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"æªæ¥è¯¢å°å¹¿æè®¾å¤ä¿¡æ¯ã"+broadcastId+"ã"); |
| | | } |
| | | PlatformDevice platformDevice = new PlatformDevice(); |
| | | platformDevice.setIsdeleted(Constants.ZERO); |
| | | platformDevice.setPlatformId(platform.getId()); |
| | | platformDevice.setCreateDate(new Date()); |
| | | platformDevice.setCreator(platform.getLoginUserInfo().getId()); |
| | | platformDevice.setType(Constants.TWO); |
| | | platformDevice.setDeviceId(broadcastId.toString()); |
| | | platformDevice.setHkId(device.getHkId()); |
| | | platformDevice.setName(device.getName()); |
| | | platformDeviceList.add(platformDevice); |
| | | } |
| | | platformDeviceMapper.insert(platformDeviceList); |
| | | } |
| | | |
| | | platformMapper.updateById(platform); |
| | | } |
| | | |
| | |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | } |
| | | } |
| | | return PageData.from(platformMapper.selectJoinPage(page,Platform.class, queryWrapper)); |
| | | PageData<Platform> platformPageData = PageData.from(platformMapper.selectJoinPage(page,Platform.class, queryWrapper)); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformPageData.getRecords())){ |
| | | for (Platform platform:platformPageData.getRecords()) { |
| | | List<PlatformDevice> ledDevice = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda() |
| | | .eq(PlatformDevice::getPlatformId,platform.getId()) |
| | | .eq(PlatformDevice::getType,Constants.ZERO) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ledDevice)){ |
| | | platform.setLedNames(String.join(",", ledDevice.stream().map(m->m.getName()).collect(Collectors.toList()))); |
| | | platform.setLedIds( |
| | | ledDevice.stream().map(m->Integer.valueOf(m.getDeviceId())).collect(Collectors.toList()) |
| | | ); |
| | | } |
| | | |
| | | List<PlatformDevice> broadcastDevice = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda() |
| | | .eq(PlatformDevice::getPlatformId,platform.getId()) |
| | | .eq(PlatformDevice::getType,Constants.TWO) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(broadcastDevice)){ |
| | | platform.setBroadcastNames(String.join(",", broadcastDevice.stream().map(m->m.getName()).collect(Collectors.toList()))); |
| | | platform.setBroadcastIds( |
| | | broadcastDevice.stream().map(m->Integer.valueOf(m.getDeviceId())).collect(Collectors.toList()) |
| | | ); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | return platformPageData; |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public List<PlatformStatusListResponse> getPlatformStatusList(){ |
| | | List<Platform> platformList = platformJoinMapper.selectJoinList(Platform.class,new MPJLambdaWrapper<Platform>() |
| | | .selectAll(Platform.class) |
| | | .select(" ( select count(1) from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" ) as workStatus ") |
| | | .select(" ( select pj.CAR_CODE_FRONT from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" limit 1 ) as workCarCode ") |
| | | .eq(Platform::getIsdeleted,Constants.ZERO) |
| | | ); |
| | | List<PlatformStatusListResponse> platformStatusListResponses = new ArrayList<>(); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformList)){ |
| | | for (Platform platform:platformList) { |
| | | PlatformStatusListResponse response = new PlatformStatusListResponse(); |
| | | response.setPlatformHkId(platform.getHkId()); |
| | | response.setPlatformName(platform.getName()); |
| | | response.setStatus(platform.getPlatformStatus()); |
| | | if(Constants.equalsInteger(platform.getPlatformStatus(),Constants.ONE)){ |
| | | response.setCarCode(platform.getWorkCarCode()); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | return platformStatusListResponses; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |