admin/.env.test
@@ -1,4 +1,4 @@ # 测试环境配置 NODE_ENV = 'production' VUE_APP_API_URL = 'http://10.50.250.178:8088/gateway_interface/' VUE_APP_API_URL = 'http://192.168.5.13/gateway_interface' admin/src/api/platform/index.js
@@ -8,7 +8,11 @@ export function platformCallList(data) { return request.post('/visitsAdmin/cloudService/business/platform/platformCallList', data) } // 叫号 // 入园叫号 export function platformInPark(data) { return request.post('/visitsAdmin/cloudService/business/platform/platformInPark', data) } // 月台叫号 export function platformCallNumber(data) { return request.post('/visitsAdmin/cloudService/business/platform/platformCallNumber', data) } admin/src/api/workbench/index.js
@@ -2,7 +2,7 @@ // 顶部导航 export function getAppHeaderNav (data) { return request.get('/visitsAdmin/cloudService/business/hksync/getHkMenuLink', data) return request.get('/visitsAdmin/cloudService/business/hksync/getHkMenuLink?type='+ data) } // 主体数据 export function getWorkbenchBody (data) { admin/src/components/common/CommonHeader.vue
@@ -8,10 +8,10 @@ <div>服务中心</div> <div class="linellae"></div> </div> <div class="item" @click="getHeaderNav('')">安防中心</div> <div class="item" @click="getHeaderNav('')">消防中心</div> <div class="item" @click="getHeaderNav('')">能管中心</div> <div class="item" @click="getHeaderNav('')">驾驶舱</div> <div class="item" @click="getHeaderNav('0')">安防中心</div> <div class="item" @click="getHeaderNav('1')">消防中心</div> <div class="item" @click="getHeaderNav('2')">能管中心</div> <div class="item" @click="getHeaderNav('3')">驾驶舱</div> </div> <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> --> </div> @@ -155,11 +155,9 @@ this.$refs.changePwdDataForm.resetFields() }) }, getHeaderNav(){ getAppHeaderNav({ type: '' }).then(res => { this.headerNavData = res getHeaderNav(type){ getAppHeaderNav(type).then(res => { window.open(res, "_blank"); }) }, // 确定修改密码 admin/src/views/index.vue
@@ -65,7 +65,7 @@ <div class="funcs"> <div class="home_title">常用功能</div> <div class="list"> <div v-for="item in funcList" :key="item.name" class="item"> <div v-for="item in funcList" @click="funcClick(item)" :key="item.name" class="item"> <img class="mb10" :src="item.url" alt="" /> <div>{{ item.name }}</div> </div> @@ -227,7 +227,8 @@ import { weeks } from '@/utils/config' import { getWorkbenchBody, getWorkbenchHead getWorkbenchHead, getAppHeaderNav } from '@/api' const colors = ['#52a4f7', '#7678f7', '#5fc6d5'] export default { @@ -237,9 +238,9 @@ nowDate: '', nowWeek: '', funcList: [ { name: '访客报备', path: '', url: require('@/assets/icons/home_func1.png') }, { name: '隐患随手拍', path: '', url: require('@/assets/icons/home_func2.png') }, { name: '预约会议室', path: '', url: require('@/assets/icons/home_func3.png') }, { name: '访客报备', path: '', url: require('@/assets/icons/home_func1.png'), path: '/business/reportRecord' }, { name: '隐患随手拍', path: '', url: require('@/assets/icons/home_func2.png'), path: '/operation/danger/record' }, { name: '预约会议室', path: '', url: require('@/assets/icons/home_func3.png'), path: '/meeting/bookings' }, { name: '考勤工作台', path: '', url: require('@/assets/icons/home_func4.png') } ] } @@ -250,7 +251,6 @@ } }, created () { this.updateDate() setInterval(() => { this.updateDate() @@ -260,6 +260,15 @@ this.initData() }, methods: { funcClick(item) { if (item.name == '考勤工作台') { getAppHeaderNav(4).then(res => { window.open(res, "_blank") return }) } this.$router.push(item.path) }, updateDate () { this.nowDate = dayjs().format('YYYY年M月D日') this.nowWeek = weeks[new Date().getDay()] @@ -568,23 +577,28 @@ div { box-sizing: border-box; } .home_title { font-weight: 600; font-size: 16px; color: #222222; line-height: 22px; } .main { display: flex; position: relative; z-index: 99; .app_content { flex: 1; .static_card { height: 187px; color: #fff; display: flex; justify-content: space-between; .card { flex: 1; height: 187px; @@ -592,16 +606,20 @@ box-shadow: 0px 2px 10px 0px rgba(32, 127, 247, 0.4); border-radius: 8px; margin-right: 14px; &:nth-of-type(2) { background: linear-gradient(270deg, #8383ff 0%, #6b6eff 100%); } &:nth-of-type(3) { background: linear-gradient(270deg, #42d49d 0%, #12bb8b 100%); } &:nth-of-type(4) { margin-right: 0; background: linear-gradient(270deg, #30d3de 0%, #04b7cd 100%); } .header { height: 103px; display: flex; @@ -609,16 +627,19 @@ align-items: center; padding: 20px 20px 12px; border-bottom: 1px solid rgba(255, 255, 255, 0.2); img { width: 40px; height: 40px; } .num { font-weight: 600; font-size: 30px; margin-top: 12px; } } .content { height: 82px; display: flex; @@ -629,20 +650,25 @@ } } } .funcs { height: 149px; padding: 20px; background: #fff; margin: 10px 0; .list { display: flex; padding-top: 20px; .item { display: flex; flex-direction: column; align-items: center; justify-content: center; margin-right: 24px; cursor: pointer; img { width: 44px; height: 44px; @@ -651,9 +677,11 @@ } } } .app_side { width: 408px; margin-left: 10px; .task { background: #fff; border-radius: 2px; @@ -661,6 +689,7 @@ padding: 20px; height: 346px; margin-bottom: 10px; .header { .num { position: relative; @@ -675,27 +704,33 @@ border-radius: 8px; margin-left: 13px; } .more { font-size: 13px; color: #999999; } } .list { .item { display: flex; align-items: center; margin-top: 15px; .content { flex: 1; .title { color: #222222; margin-bottom: 5px; } .time { color: #999999; font-size: 12px; } } .btn { margin-left: 10px; width: 58px; @@ -711,12 +746,14 @@ } } } .warnning { background: #fff; border-radius: 2px; border: 1px solid #eeeeee; padding: 20px; height: 508px; .header { .num { position: relative; @@ -731,13 +768,16 @@ border-radius: 8px; margin-left: 13px; } .more { font-size: 13px; color: #999999; } } .list { padding-top: 6px; .item { margin-top: 10px; padding: 15px; @@ -745,28 +785,34 @@ height: 140px; background: rgba(32, 127, 247, 0.05); border-radius: 4px; .name_wrap { margin-bottom: 10px; .name { font-weight: 600; color: #222222; } .identity { font-size: 13px; color: #207ff7; } } .line { color: #666666; margin-bottom: 8px; font-size: 13px; } .auth { .time { font-weight: 600; font-size: 13px; color: #ee3821; } .btn{ margin-left: 10px; width: 58px; @@ -784,6 +830,7 @@ } } } .static_wrap { .wrap { background: #fff; @@ -792,30 +839,37 @@ border: 1px solid #eeeeee; height: 250px; flex: 1; &:nth-of-type(2n) { margin-left: 10px; } .echart { width: 100%; height: 190px; } .header { display: flex; justify-content: space-between; align-items: center; .more { font-size: 13px; color: #999999; } } } .static1 { .content { display: flex; justify-content: center; align-items: center; .echart_wrap { position: relative; .pie_text { position: absolute; left: 50%; @@ -824,16 +878,20 @@ z-index: 999; } } .echart { width: 150px; height: 150px; } .list { margin-left: 36px; .item { display: flex; align-items: center; margin: 8px 0; .icon { width: 16px; height: 16px; @@ -841,6 +899,7 @@ margin-right: 6px; background: linear-gradient(270deg, #29aeff 0%, #207ff7 100%); } .text { margin-right: 6px; } @@ -850,6 +909,7 @@ } } } .main_home { background: #f4f7fc; position: relative; @@ -858,6 +918,7 @@ overflow: auto; padding: 20px; padding-top: 92px; .home_header { position: absolute; top: 0; admin/src/views/platform/LogisticsRecord/leaveAuth.vue
@@ -47,7 +47,7 @@ <el-table-column label="操作" align="center" fixed="right" min-width="100" show-overflow-tooltip> <template v-slot="scope"> <el-button type="text" v-permissions="['business:platformbooks:detail']" @click="handleAuth(scope.row)">离远授权</el-button> @click="handleAuth(scope.row)">离园授权</el-button> </template> </el-table-column> </el-table> @@ -171,12 +171,11 @@ }) }, handleAuth(row) { this.$confirm('是否对当前运单的车辆进行离园授权,是则进行离园授权?', '提示', { this.$prompt('备注', '离园授权', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { platformPowerLevel({ jobId: row.id }).then(res => { }).then(({ remark }) => { platformPowerLevel({ jobId: row.id,remark }).then(res => { Message.success('离园授权成功') this.getList() }) admin/src/views/platform/LogisticsRecord/operation.vue
@@ -55,6 +55,8 @@ import UploadFaceImg from '@/components/common/UploadFaceImg' import { Message } from 'element-ui' import dayjs from 'dayjs' import duration from 'dayjs/plugin/duration' dayjs.extend(duration); export default { components: { Pagination, @@ -146,6 +148,7 @@ this.list.forEach(item => { item.inTypeTemp = item.inType == 0 ? '整托盘' : '件烟' item.taskOrigin = 'WMS获取' item.workTime = dayjs.duration(item.workTime, 'seconds').format('H时m分s秒'); }) this.pagination.total = res.total || 0 }, () => { admin/src/views/platform/LogisticsRecord/operationCity.vue
@@ -56,6 +56,8 @@ import UploadFaceImg from '@/components/common/UploadFaceImg' import { Message } from 'element-ui' import dayjs from 'dayjs' import duration from 'dayjs/plugin/duration' dayjs.extend(duration); export default { components: { Pagination, @@ -147,6 +149,7 @@ this.list.forEach(item => { item.inTypeTemp = item.inType == 0 ? '整托盘' : '件烟' item.taskOrigin = 'WMS获取' item.workTime = dayjs.duration(item.workTime, 'seconds').format('H时m分s秒'); }) this.pagination.total = res.total || 0 }, () => { admin/src/views/platform/LogisticsRecord/waybill.vue
@@ -39,10 +39,10 @@ </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 type="text" class="red" v-permissions="['business:platformjob:delete']" <el-button v-if="scope.row.status == '12'" type="text" class="red" v-permissions="['business:platformjob:delete']" @click="handleDel(scope.row)">删除</el-button> <el-button type="text" v-permissions="['business:platformjob:query']" @click="handleDetail(scope.row)">预约详情</el-button> <el-button v-if="scope.row != 12" type="text" v-permissions="['business:platformjob:query']" @click="handleDetail(scope.row)">运单详情</el-button> </template> </el-table-column> </el-table> @@ -143,8 +143,8 @@ model: { ...filters, jobType: '0', beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null, beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null, createDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null, createDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null, }, capacity: pagination.pageSize, page: page || pagination.page, admin/src/views/platform/components/PlatformQueuing.vue
@@ -1,18 +1,10 @@ <template> <GlobalWindow :title="'月台叫号-'+title" :visible.sync="isShowModal" :showConfirm="false" width="800px" > <GlobalWindow :title="callType == 1 ? '叫号入园-' + title : '月台叫号-' + 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-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> @@ -34,7 +26,7 @@ </div> <div v-else class="ite"> <span>运输单号:</span> <span>{{ item.code }}</span> <span>{{ item.billCode }}</span> </div> <div class="ite"> <span>驾驶员:</span> @@ -60,11 +52,7 @@ </div> </div> </div> <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination" > <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination"> </pagination> </div> </GlobalWindow> @@ -73,7 +61,7 @@ <script> import GlobalWindow from '@/components/common/GlobalWindow' import Pagination from '@/components/common/Pagination' import { platformCallList, platformCallNumber } from '@/api' import { platformCallList, platformCallNumber, platformInPark } from '@/api' import { statusMap } from '../config' import { Message } from 'element-ui' export default { @@ -93,6 +81,7 @@ }, carCodeFront: '', title: '', callType: '1', activePlat: {}, dataList: [] @@ -100,17 +89,27 @@ }, methods: { handleCall (item) { const activePlatform = this.activePlat platformCallNumber({ platformId: activePlatform.id, jobId: item.id }).then(res => { const { activePlat, callType } = this if (callType == 1) { // 入园叫号 platformInPark({ jobId: item.id, platformId: activePlat.id }).then(() => { Message.success('叫号成功') this.getList() }) } else { platformCallNumber({ platformId: activePlat.id, jobId: item.id }).then(res => { Message.success('叫号成功') this.$emit('success') this.getList() }) } }, getList () { const { activePlat, pagination, carCodeFront } = this const { activePlat, pagination, carCodeFront, callType } = this platformCallList({ model: { callType: '2', platformId: activePlat.id, carCodeFront }, model: { callType, platformId: activePlat.id, carCodeFront }, page: pagination.page, capacity: pagination.pageSize }).then(res => { @@ -153,8 +152,10 @@ <style lang="scss" scoped> @import "@/assets/style/variables.scss"; .queuing_modal { padding: 10px 30px; .list { .item { background: #f4fafb; @@ -162,8 +163,10 @@ border: 1px solid #dfe2e8; margin-bottom: 10px; padding: 16px; .head { margin-bottom: 15px; .plate { width: 90px; text-align: center; @@ -174,9 +177,11 @@ border: 1px solid #279baa; background-color: #fff; } .status { color: $primaryColor; } .code { display: flex; font-weight: 600; @@ -188,24 +193,29 @@ 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; @@ -213,6 +223,7 @@ } } } .footer { .detail { color: $primaryColor; admin/src/views/platform/index.vue
@@ -2,13 +2,8 @@ <div class="main_app"> <div class="mb20 main_header"> <div class="platgroup_tabs"> <div class="tab" :class="{ active: activeGroup.id === item.id }" @click="platgroupClick(item)" v-for="(item, i) in PlatGroupList" :key="i" > <div class="tab" :class="{ active: activeGroup.id === item.id }" @click="platgroupClick(item)" v-for="(item, i) in PlatGroupList" :key="i"> {{ item.name }} </div> <!-- <el-tabs v-model="activeGroup.id" @tab-click="platgroupClick"> @@ -20,9 +15,7 @@ /> </el-tabs> --> </div> <el-button type="primary" class="ml20" @click="handleSet" >配置月台</el-button > <el-button type="primary" class="ml20" @click="handleSet">配置月台</el-button> </div> <!-- --> <div v-if="activeGroup.platformList" class="platform_list"> @@ -34,38 +27,23 @@ </div> <div class="name">{{ item.name }}</div> <div class="ite"> <span class="placeholder9">作业:</span ><span>{{ item.platformWorkVO.workNum }}</span> <span class="placeholder9">作业:</span><span>{{ item.platformWorkVO.workNum }}</span> </div> <div class="ite"> <span class="placeholder9">已叫:</span ><span>{{ item.platformWorkVO.callNum }}</span> <span class="placeholder9">已叫:</span><span>{{ item.platformWorkVO.callNum }}</span> </div> <div class="ite"> <span class="placeholder9">等待:</span ><span>{{ item.platformWorkVO.waitNum }}</span> <span class="placeholder9">等待:</span><span>{{ item.platformWorkVO.waitNum }}</span> </div> <div class="ite"> <span class="placeholder9">异常:</span ><span class="red">{{ item.platformWorkVO.exceptionNum }}</span> <span class="placeholder9">异常:</span><span class="red">{{ item.platformWorkVO.exceptionNum }}</span> </div> </div> <el-button type="primary" @click="handleQueuing(item)"> <div class="df_ac"> <img class="shengyin" src="@/assets/icons/shengyin.png" alt=""> <span>叫号</span> <el-button @click="handleQueuing(item, 1)">叫号入园</el-button> <el-button type="primary" @click="handleQueuing(item, 2)">月台叫号</el-button> </div> </el-button> </div> <div class="list" v-if="item.platformWorkVO && item.platformWorkVO.platformJobList" > <div class="info" v-for="task in item.platformWorkVO.platformJobList" :key="task.id" > <div class="list" v-if="item.platformWorkVO && item.platformWorkVO.platformJobList"> <div class="info" :class="{err: task.status == 8}" v-for="task in item.platformWorkVO.platformJobList" :key="task.id"> <div class="line"> <div class="left"> <div v-if="task.carCodeFront" class="code"> @@ -76,18 +54,14 @@ </div> </div> <div class="right"> <div class="status" v-if="task.status != 4 && task.status != 5" :class="{ red: task.status == 8 }" > <div class="status_item" v-if="task.status != 4 && task.status != 5" :class="{ red: task.status == 8 }"> <span class="lab">{{ statusMap[task.status] }}</span> </div> <div class="status" v-if="task.status == 4"> <div class="status_item" v-if="task.status == 4"> <span class="lab">叫号中</span> {{ task.callDateTemp }} </div> <div class="status scs" v-if="task.status == 5"> <span class="lab">已作业</span> {{ task.startDateTemp }} <div class="status_item scs" v-if="task.status == 5"> <span class="lab">作业中</span> {{ task.startDateTemp }} </div> </div> </div> @@ -98,13 +72,13 @@ </div> <div v-else class="ite"> <span>运输单号:</span> <span>{{ task.code }}</span> <span>{{ task.billCode }}</span> </div> <div class="ite"> <div class="ite siji"> <span>驾驶员:</span> <span>{{ task.driverName }}</span> </div> <div class="ite"> <div class="ite phone"> <span>手机号:</span> <span>{{ task.drivierPhone }}</span> </div> @@ -120,65 +94,37 @@ </div> <div class="line"> <div v-if="task.type != 4" class="left"> <span class="primaryColor pointer" @click="handleDetail" >运单详情</span > <span class="primaryColor pointer" @click="handleDetail">运单详情</span> </div> <div v-else></div> <div class="right"> <el-button v-if="task.status == 5" plain @click="handleErr(task)" >异常挂起</el-button > <el-button v-if="task.status == 5 || task.status == 8" plain @click="handleTransform(item, task)" >转移月台</el-button > <el-button v-if="task.status == 4" plain @click="handlePass(task)" >过号</el-button > <el-button v-if="task.status == 5 || task.status == 8" type="primary" @click="handleFinish(task)" >作业完成</el-button > <el-button v-if="task.status == 4" type="primary" @click="handleWork(task)" >开始作业</el-button > <el-button v-if="task.status == 5" plain @click="handleErr(task)">异常挂起</el-button> <el-button v-if="task.status == 5 || task.status == 8" plain @click="handleTransform(item, task)">转移月台</el-button> <el-button v-if="task.status == 4" plain @click="handlePass(task)">过号</el-button> <el-button v-if="task.status == 5 || task.status == 8" type="primary" @click="handleFinish(task)">作业完成</el-button> <el-button v-if="task.status == 4" type="primary" @click="handleWork(task)">开始作业</el-button> </div> </div> </div> </div> <div v-if="!item.platformWorkVO.platformJobList || item.platformWorkVO.platformJobList.length == 0" class="empty_plat"> <div v-if="!item.platformWorkVO.platformJobList || item.platformWorkVO.platformJobList.length == 0" class="empty_plat"> <img src="@/assets/images/default_nodata.png" alt=""> <div>暂无车辆</div> </div> </div> </div> <!-- 配置显示月台 --> <GlobalWindow title="配置显示月台" :visible.sync="isShowSet" :confirm-working="setLoading" @confirm="handleSetSub" width="560px" > <GlobalWindow title="配置显示月台" :visible.sync="isShowSet" :confirm-working="setLoading" @confirm="handleSetSub" width="560px"> <div class="set_modal"> <div class="mb10" v-for="group in PlatGroupList" :key="group.id"> <div class="title">{{group.name}}</div> <div class="list"> <div class="item" @click="platformSetClick(item.id)" :class="{ active: item.showConfig }" v-for="item in group.platformList" :key="item.id"> <div class="item" @click="platformSetClick(item.id)" :class="{ active: item.showConfig }" v-for="item in group.platformList" :key="item.id"> <div>{{item.name}}</div> <div v-if="item.showConfig" class="bg"></div> <i v-if="item.showConfig" class="el-icon-check scs"></i> @@ -190,33 +136,14 @@ <!-- 运单详情 --> <!-- --> <!-- 叫号 --> <PlatformQueuing ref="PlatformQueuingRef" v-if="isShowQueuing" @success="getPlatGroupList" @close="isShowQueuing = false" /> <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" /> <el-dialog title="转移月台" :visible.sync="isShowTransform" width="500px" style="margin-top: 12vh" > <PlatformQueuing ref="PlatformQueuingRef" v-if="isShowQueuing" @success="getPlatGroupList" @close="isShowQueuing = false" /> <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" /> <el-dialog title="转移月台" :visible.sync="isShowTransform" width="500px" style="margin-top: 12vh"> <div class="df_ac"> <span>选择转移到的月台:</span> <el-select v-model="activePlatId"> <el-option v-for="item in activeGroup.platformList" :key="item.id" :label="item.name" :value="item.id" > <el-option v-for="item in activeGroup.platformList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </div> @@ -306,7 +233,7 @@ }) }, handlePass (item) { this.$confirm('您确认要对该任务进行过号吗', '温馨提示', { this.$confirm(`确认 ${item.carCodeFront}置为过号吗?过号后,需要重新签到才能进入园区`, '温馨提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' @@ -383,10 +310,11 @@ this.$forceUpdate() } }, handleQueuing (item) { handleQueuing(item, callType) { this.isShowQueuing = true this.$nextTick(() => { this.$refs.PlatformQueuingRef.isShowModal = true this.$refs.PlatformQueuingRef.callType = callType this.$refs.PlatformQueuingRef.activePlat = { ...item } this.$refs.PlatformQueuingRef.getList() this.$refs.PlatformQueuingRef.title = item.name @@ -443,8 +371,10 @@ <style lang="scss" scoped> @import "@/assets/style/variables.scss"; .platform_list { width: 100%; .item { /* padding: 16px 24px; */ background: #ffffff; @@ -452,6 +382,7 @@ border: 1px solid #dfe2e8; margin-bottom: 12px; width: 100%; .head { display: flex; justify-content: space-between; @@ -460,19 +391,23 @@ background: linear-gradient( 270deg, #FFFFFF 0%, #EBF6F7 100%); border-radius: 2px 2px 0px 0px; padding: 0 20px; .shengyin{ width: 12px; height: 12px; margin-right: 3px; } .left { flex: 1; display: flex; align-items: center; .name { font-size: 16px; margin-right: 50px; } .status { line-height: 25px; height: 25px; @@ -481,18 +416,19 @@ color: #ffffff; padding: 0 6px; } .ite { margin-right: 30px; } } } .list { display: flex; flex-wrap: wrap; justify-content: space-between; margin-top: 10px; padding: 16px; width: calc( 100% - 48px ); width: calc(100% - 0); .info { background: #f4fafb; border-radius: 2px; @@ -500,23 +436,41 @@ padding: 16px; border-radius: 2px; margin-bottom: 10px; width: calc( 31.6% - 16px ); .status { width: calc(31.6% - 22px); margin-right: 10px; &:nth-of-type(3n) { margin-right: 0; } .status_item { .lab { font-weight: 500; } color: #00ba67; } .line { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-bottom: 6px; .ite { width: 33.3%; margin-top: 8px; } .siji { width: 29%; } .phone { width: 37.6%; } .left { .code { display: flex; @@ -529,18 +483,21 @@ 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; } } } } .right { display: flex; align-items: center; @@ -549,17 +506,21 @@ } .jobing { background: #effbf5; .status { color: #00ba67; } } .err { background: #fef6f6; .status { color: #ed4545; } } } .empty_plat{ width: 100%; height: 170px; @@ -569,27 +530,33 @@ align-items: center; font-size: 12px; color: #B2B2B2; img{ width: 110px; } } } .emyty{ .head{ background: linear-gradient( 270deg, #FFFFFF 0%, #F7F7F7 100%) !important; } .status{ background: #CCCCCC !important; } } } .main_header { display: flex; position: relative; .platgroup_tabs { flex: 1; display: flex; border-bottom: 1px solid #dfe2e8; .tab { color: #666666; margin-right: 40px; @@ -597,6 +564,7 @@ padding-bottom: 18px; border-bottom: 2px solid #fff; } .active { font-weight: 500; font-size: 15px; @@ -604,6 +572,7 @@ border-bottom: 2px solid $primary-color; } } .ml20 { position: absolute; width: 120px; @@ -612,6 +581,7 @@ top: -4px; } } /* */ .set_modal { .title { @@ -619,9 +589,11 @@ font-weight: 600; margin-bottom: 16px; } .list { display: flex; flex-wrap: wrap; .item { cursor: pointer; padding: 0 36px; @@ -635,6 +607,7 @@ margin-right: 13px; position: relative; overflow: hidden; .bg{ position: absolute; right: -12px; @@ -644,6 +617,7 @@ background: $primaryColor; transform: rotate(45deg); } .scs{ position: absolute; right: -1px; @@ -653,6 +627,7 @@ transform:scale(.8) } } .active { background: rgba(39,155,170,0.06); border: 1px solid $primaryColor; @@ -660,6 +635,7 @@ } } } /* */ /* */ </style> admin/src/views/statistics/platformRecord.vue
@@ -1,71 +1,33 @@ <template> <div class="main_app"> <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" /> <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" /> <el-table v-loading="loading" :data="list" stripe> <el-table-column prop="name" label="月台名称" min-width="100" show-overflow-tooltip /> <el-table-column prop="name" label="月台组" min-width="100" show-overflow-tooltip /> <el-table-column prop="name" label="车前牌照号" min-width="100" show-overflow-tooltip /> <el-table-column prop="name" label="车后牌照号" min-width="100" show-overflow-tooltip /> <el-table-column prop="name" label="作业开始" min-width="100" show-overflow-tooltip /> <el-table-column prop="name" label="作业结束" min-width="100" show-overflow-tooltip /> <el-table-column prop="name" label="作业时长" min-width="100" show-overflow-tooltip /><el-table-column prop="name" label="运输单号/合同号" min-width="100" show-overflow-tooltip /> <el-table-column prop="platformName" label="月台名称" min-width="100" show-overflow-tooltip /> <el-table-column prop="platformGroupName" 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="100" show-overflow-tooltip /> <el-table-column prop="doneDate" label="作业结束" min-width="100" show-overflow-tooltip /> <el-table-column prop="workTime" label="作业时长" min-width="100" show-overflow-tooltip /><el-table-column prop="name" label="运输单号/合同号" min-width="100" show-overflow-tooltip> <template v-slot="scope"> <span>{{ scope.row.billCode || scope.row.contractNum }}</span> </template> </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> <div class="mt20"> <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> </div> </div> </template> <script> import Pagination from '@/components/common/Pagination' import QueryForm from '@/components/common/QueryForm' import dayjs from 'dayjs' import duration from 'dayjs/plugin/duration' dayjs.extend(duration); import { platformJobPage, getPlatformGroupList } from '@/api' export default { components: { Pagination, @@ -75,8 +37,9 @@ return { loading: false, pagination: { capacity: 10, page: 1 pageSize: 10, page: 1, total: 0 }, filters: {}, list: [], @@ -84,18 +47,18 @@ queryFormConfig: { formItems: [ { filed: 'aaaa', filed: 'platformName', type: 'input', label: '月台名称' }, { filed: 'bbb', filed: 'platformGroupId', type: 'select', label: '月台组', options: [] }, { filed: 'aaaa', filed: 'carCodeFront', type: 'input', label: '车牌号' }, @@ -109,6 +72,10 @@ } } }, created() { this.getList() this.getGroupList() }, methods: { handleSub () { this.$refs.ruleForm.validate((valid) => { @@ -117,14 +84,52 @@ } }) }, getList (page) { }, clear () { }, getGroupList() { getPlatformGroupList({queryData: 0,queryType: 0}).then(res => { this.queryFormConfig.formItems[1].options = res.map(i => { return { value: i.id, label: i.name } }) }) }, getList(page) { const { pagination, filters } = this this.loading = true platformJobPage({ model: { ...filters, queryStatus: '5,6,9,10', beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null, beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null, }, capacity: pagination.pageSize, page: page || pagination.page, }).then(res => { this.loading = false this.list = res.records || [] this.list.forEach(item => { item.inTypeTemp = item.inType == 0 ? '整托盘' : '件烟' item.taskOrigin = 'WMS获取' item.workTime = dayjs.duration(item.workTime, 'seconds').format('H时m分s秒'); }) this.pagination.total = res.total || 0 }, () => { this.loading = false }) }, clear() { this.filters = {} this.pagination.pageSize = 10 this.pagination.page = 1 this.getList() }, handleSizeChange (capacity) { this.pagination.capacity = capacity this.pagination.pageSize = capacity } } } </script> <style> </style> <style></style> h5/pages/driver/reserved.vue
@@ -7,8 +7,8 @@ <text>*</text> <text>入园原因</text> </view> <view class="value" @click="showReason = true"> <text class="mr6" :style="{ color: param.inReason ? '#000000' : '#999999' }">{{ param.inReason ? param.inReason : '请选择' }}</text> <view class="value" @click="reasonClick"> <text class="mr6" :class="{gray: param.id}" :style="{ color: param.inReason ? '#000000' : '#999999' }">{{ param.inReason ? param.inReason : '请选择' }}</text> <u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon> </view> </view> @@ -105,7 +105,8 @@ </view> <!-- --> <u-picker :show="showReason" keyName="reason" :columns="reasonList" @confirm="reasonConfirm"></u-picker> <u-picker :show="showReason" keyName="reason" closeOnClickOverlay @close="showReason = false" @cancel="showReason = false" :columns="reasonList" @confirm="reasonConfirm"></u-picker> <u-datetime-picker :show="showDatetime" closeOnClickOverlay @@ -149,6 +150,12 @@ this.initData() }, methods: { reasonClick() { if(this.param.id){ return } this.showReason = true }, onSubmit() { const param = { ...this.param } if (!param.arriveDate) return this.showToast('请选择到场时间') @@ -297,6 +304,9 @@ display: flex; align-items: center; justify-content: flex-end; .gray{ color: #999999 !important; } .btns { display: flex; align-items: center; h5/pages/staff/task/driver.vue
@@ -2,7 +2,7 @@ <view class="main_app"> <view class="status_wrap"> <view class="name">{{info.driverName}}的入园预约</view> <view class="desc">{{info.carCodeFront}}</view> <view class="gray">{{info.carCodeFront}}</view> <view class="desc" :class="{ gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', }">{{ infoStatus }}</view> @@ -428,11 +428,12 @@ .desc { font-size: 26rpx; color: #999999; color: #ed4545; margin-bottom: 12rpx; } .gray { color: #999999; margin-bottom: 12rpx; } .status { pda/pages/index/center.vue
@@ -1,47 +1,23 @@ <template> <view class="main_app"> <view class="main_content"> <view class="title" @click="showPlatformgroup = true" >{{ activePlatformGroup.name }}<u-icon name="arrow-down" size="20" class="ml12" color="#999999" ></u-icon ></view> <view class="title" @click="showPlatformgroup = true">{{ activePlatformGroup.name }}<u-icon name="arrow-down" size="20" class="ml12" color="#999999"></u-icon></view> <view class="platform_list"> <view class="item" :class="{ active: item.id === activePlatform.id }" v-for="(item, index) in activePlatformGroup.platformList" :key="index" @click="platformClick(item)" >{{ item.name }}</view > <view class="item" :class="{ active: item.id === activePlatform.id }" v-for="(item, index) in activePlatformGroup.platformList" :key="index" @click="platformClick(item)"> {{ item.name }}</view> </view> <view class="status_wrap"> <view class="status" >作业:<text>{{ platformTaskInfo.workNum }}</text></view > <view class="status" >已叫:<text>{{ platformTaskInfo.callNum }}</text></view > <view class="status" >等待:<text>{{ platformTaskInfo.waitNum }}</text></view > <view class="status" >异常:<text>{{ platformTaskInfo.exceptionNum }}</text></view > <view class="status">作业:<text>{{ platformTaskInfo.workNum }}</text></view> <view class="status">已叫:<text>{{ platformTaskInfo.callNum }}</text></view> <view class="status">等待:<text>{{ platformTaskInfo.waitNum }}</text></view> <view class="status">异常:<text>{{ platformTaskInfo.exceptionNum }}</text></view> </view> </view> <!-- --> <view style="padding-bottom: 140rpx"> <view v-for="item in platformTaskInfo.platformJobList" :key="item.id" class="platform_ing" > <view v-for="item in platformTaskInfo.platformJobList" :key="item.id" class="platform_ing"> <view class="head"> <view class="code"> <text>{{ item.carCodeFront.slice(0, 1) }}</text> @@ -49,18 +25,10 @@ <text>·</text> <text>{{ item.carCodeFront.slice(2) }}</text> </view> <view class="status" v-if="item.status != 4 && item.status != 5" :class="{ red: item.status == 8 }" >{{ statusMap[item.status] }}</view > <view class="status" v-if="item.status == 4" >叫号中 {{ item.callDateTemp }}</view > <view class="status scs" v-if="item.status == 5" >已作业 {{ item.startDateTemp }}</view > <view class="status" v-if="item.status != 4 && item.status != 5" :class="{ red: item.status == 8 }"> {{ statusMap[item.status] }}</view> <view class="status" v-if="item.status == 4">叫号中 {{ item.callDateTemp }}</view> <view class="status scs" v-if="item.status == 5">已作业 {{ item.startDateTemp }}</view> </view> <view class="line" v-if="item.type == 4"> <text class="label">合同单号</text> @@ -73,9 +41,7 @@ </view> <view class="line"> <text class="label">驾驶员</text> <text class="value" >{{ item.driverName }} {{ item.drivierPhone }}</text > <text class="value">{{ item.driverName }} {{ item.drivierPhone }}</text> </view> <view class="line"> <text class="label">总运输量</text> @@ -86,31 +52,12 @@ <text class="value">{{ item.carrierName }}</text> </view> <view class="btns"> <view v-if="item.status == 4" class="btn" @click="handlePass(item)" >过号</view > <view v-if="item.status == 4" class="btn active" @click="handleWork(item)" >开始作业</view > <view v-if="item.status == 4" class="btn" @click="handlePass(item)">过号</view> <view v-if="item.status == 4" class="btn active" @click="handleWork(item)">开始作业</view> <view v-if="item.status == 5" class="btn" @click="handleErr(item)" >异常挂起</view > <view v-if="item.status == 5 || item.status == 8" class="btn" @click="handleTransform(item)" >转移月台</view > <view v-if="item.status == 5 || item.status == 8" class="btn active" @click="handleFinish(item)" >作业完成</view > <view v-if="item.status == 5" class="btn" @click="handleErr(item)">异常挂起</view> <view v-if="item.status == 5 || item.status == 8" class="btn" @click="handleTransform(item)">转移月台</view> <view v-if="item.status == 5 || item.status == 8" class="btn active" @click="handleFinish(item)">作业完成</view> </view> </view> <view v-if="!platformTaskInfo.platformJobList || platformTaskInfo.platformJobList.length == 0" class="empty_wrap"> @@ -124,38 +71,18 @@ <view class="btn active" @click="PlatformCallClick(2)">月台叫号</view> </view> <!-- 叫号 --> <u-popup :show="showPlatformCall" closeable safeAreaInsetTop round="10" @close="showPlatformCall = false" > <view class="PlatformCallModal" :style="{ height: 'calc(100vh - ' + windowTop + 'px)' }" > <view class="title" v-if="callType == 2" >月台叫号({{ activePlatform.name }})</view > <u-popup :show="showPlatformCall" closeable safeAreaInsetTop round="10" @close="showPlatformCall = false"> <view class="PlatformCallModal" :style="{ height: 'calc(100vh - ' + windowTop + 'px)' }"> <view class="title" v-if="callType == 2">月台叫号({{ activePlatform.name }})</view> <view class="title" v-else>入园叫号</view> <view class="input_wrap"> <u-icon name="search" class="mr12" size="19" color="#999999" /> <input v-model="platformCallSearch" type="text" placeholder="搜索车辆牌照" placeholder-class="placeholder9" @confirm="callQuery" /> <input v-model="platformCallSearch" type="text" placeholder="搜索车辆牌照" placeholder-class="placeholder9" @confirm="callQuery" /> </view> <view class="order_list"> <scroll-view scroll-y="true" @scrolltolower="callScrolltolower" class="scroll_view"> <view class="platform_ing" v-for="item in platformCallList" :key="item.id" > <view class="platform_ing" v-for="item in platformCallList" :key="item.id"> <view class="head"> <view v-if="item.carCodeFront" class="code"> <text>{{ item.carCodeFront.slice(0, 1) }}</text> @@ -174,15 +101,11 @@ <view class="line" v-else> <text class="label">运输单号</text> <text class="value">{{ item.code }}</text> <text class="primaryColor" @click="handleDetail()" >运单详情</text > <text class="primaryColor" @click="handleDetail()">运单详情</text> </view> <view class="line"> <text class="label">驾驶员</text> <text class="value" >{{ item.driverName }} {{ item.drivierPhone }}</text > <text class="value">{{ item.driverName }} {{ item.drivierPhone }}</text> </view> <view class="line"> <text class="label">总运输量</text> @@ -201,17 +124,8 @@ </view> </u-popup> <!-- 运单详情 --> <u-popup :show="showDetail" closeable safeAreaInsetTop round="10" @close="showDetail = false" > <view class="PlatformCallModal" :style="{ height: 'calc(100vh - ' + windowTop + 'px)' }" > <u-popup :show="showDetail" closeable safeAreaInsetTop round="10" @close="showDetail = false"> <view class="PlatformCallModal" :style="{ height: 'calc(100vh - ' + windowTop + 'px)' }"> <view class="title">运单详情</view> <view class="platform_ing" style="padding: 0"> <view class="head"> @@ -242,53 +156,38 @@ <view class="orderId">合同编号:{{ 111 }}</view> <view class="addr">收货地:{{ 111 }}</view> <view class="content"> <view class="line" ><view class="label">物料:</view ><view class="value">黄山</view></view > <view class="line" ><view class="label">数量:</view ><view class="value">黄山</view></view > <view class="line" ><view class="label">物料:</view ><view class="value">黄山</view></view > <view class="line" ><view class="label">数量:</view ><view class="value">黄山</view></view > <view class="line"> <view class="label">物料:</view> <view class="value">黄山</view> </view> <view class="line"> <view class="label">数量:</view> <view class="value">黄山</view> </view> <view class="line"> <view class="label">物料:</view> <view class="value">黄山</view> </view> <view class="line"> <view class="label">数量:</view> <view class="value">黄山</view> </view> </view> </view> </view> </view> </u-popup> <!-- 转移月台 --> <u-popup :show="showTransform" closeable safeAreaInsetTop round="10" @close="showTransform = false" > <u-popup :show="showTransform" closeable safeAreaInsetTop round="10" @close="showTransform = false"> <view class="TransformModal"> <view class="title">转移月台</view> <view class="transform_list"> <view class="line" @click="transformPlatClick(item)" v-for="item in activePlatformGroup.platformList" :key="item.id" > <view class="line" @click="transformPlatClick(item)" v-for="item in activePlatformGroup.platformList" :key="item.id"> <view class="name">{{ item.name }}</view> <view class="status" :class="{ green: item.workStatus == 1 }" >({{ item.workStatus == 0 ? "空闲" : "作业中" }})</view > <image v-if="transformPlatId == item.id" src="@/static/ic_select@2x.png" class="checked" /> <view class="status" :class="{ green: item.workStatus == 1 }">({{ item.workStatus == 0 ? "空闲" : "作业中" }}) </view> <image v-if="transformPlatId == item.id" src="@/static/ic_select@2x.png" class="checked" /> </view> </view> <view class="btns"> @@ -298,13 +197,8 @@ </view> </u-popup> <!-- --> <u-picker :show="showPlatformgroup" keyName="name" :columns="[platformGroupList]" @cancel="showPlatformgroup = false" @confirm="platConfirm" ></u-picker> <u-picker :show="showPlatformgroup" keyName="name" :columns="[platformGroupList]" @cancel="showPlatformgroup = false" @confirm="platConfirm"></u-picker> </view> </template> @@ -321,7 +215,9 @@ platformErr, platformOverNumber } from '@/api' import { statusMap } from '@/utils/config.js' import { statusMap } from '@/utils/config.js' import dayjs from 'dayjs' import duration from 'dayjs/plugin/duration' dayjs.extend(duration) @@ -373,7 +269,9 @@ }) }, getPlatformTask() { getPlatformWorkData({ platformId: this.activePlatform.id }).then(res => { getPlatformWorkData({ platformId: this.activePlatform.id }).then(res => { this.platformTaskInfo = res.data this.circulInitTaskList() setInterval(() => { @@ -382,7 +280,8 @@ }) }, circulInitTaskList() { if (this.platformTaskInfo && this.platformTaskInfo.platformJobList && this.platformTaskInfo.platformJobList.length > 0) { if (this.platformTaskInfo && this.platformTaskInfo.platformJobList && this.platformTaskInfo.platformJobList .length > 0) { let time = new Date() this.platformTaskInfo.platformJobList.forEach(item => { if (item.callDate) { @@ -422,23 +321,30 @@ this.showDetail = true }, handleFinish(item) { finishWork({ jobId: item.id }).then(res => { finishWork({ jobId: item.id }).then(res => { this.showToast('完成作业') this.getPlatformTask() }) }, handleWork(item) { // 开始作业 beginWork({ jobId: item.id }).then(res => { beginWork({ jobId: item.id }).then(res => { this.showToast('已开始作业') this.getPlatformTask() }) }, handlePass(item) { uni.showModal({ content: '您确认要对该任务进行过号吗', content: `确认 ${item.carCodeFront}置为过号吗?过号后,需要重新签到才能进入园区`, success: (res) => { if (res.confirm) { platformOverNumber({ jobId: item.id, platformId: this.activePlatform.id }).then(res => { platformOverNumber({ jobId: item.id, platformId: this.activePlatform.id }).then(res => { this.showToast('过号成功') this.getPlatformTask() }) @@ -448,16 +354,24 @@ }, handleCall(item) { const { callType, activePlatform } = this const { callType, activePlatform } = this this.platformCallList = [] this.platformCallPage = 1 if (callType == 1) { // 入园叫号 platformInPark({ jobId: item.id }).then(res => { platformInPark({ jobId: item.id }).then(res => { this.showToast('叫号成功') this.getPlatformCallList() }) } else { // 月台叫号 platformCallNumber({ platformId: activePlatform.id, jobId: item.id }).then(res => { platformCallNumber({ platformId: activePlatform.id, jobId: item.id }).then(res => { this.showToast('叫号成功') this.getPlatformCallList() this.getPlatformTask() @@ -478,15 +392,27 @@ this.getPlatformCallList() }, callScrolltolower() { const { platformCallTotal, platformCallList } = this const { platformCallTotal, platformCallList } = this if(platformCallTotal > platformCallList.length){ this.getPlatformCallList() } }, getPlatformCallList() { const { platformCallPage, callType, activePlatform, platformCallSearch } = this const { platformCallPage, callType, activePlatform, platformCallSearch } = this platformCallList({ model: { callType, platformId: activePlatform.id, carCodeFront: platformCallSearch }, model: { callType, platformId: activePlatform.id, carCodeFront: platformCallSearch }, capacity: 10, page: platformCallPage }).then(res => { @@ -504,15 +430,23 @@ this.showTransform = false }, transformSub() { const { transformPlatId, transformId } = this platformMove({ platformId: transformPlatId, jobId: transformId }).then(res => { const { transformPlatId, transformId } = this platformMove({ platformId: transformPlatId, jobId: transformId }).then(res => { this.showToast('转移月台成功') this.transformCancel() this.getPlatformTask() }) }, handleTransform(item) { let { activePlatform } = this let { activePlatform } = this this.transformId = item.id this.transformPlatId = activePlatform.id this.showTransform = true @@ -522,7 +456,9 @@ content: '您确认要对该任务进行异常挂起吗', success: (res) => { if (res.confirm) { platformErr({ jobId: item.id }).then(ress => { platformErr({ jobId: item.id }).then(ress => { this.showToast('异常挂起成功') this.getPlatformTask() }) @@ -541,12 +477,15 @@ color: #333333; background: url("@/static/bg_yuetai@2x.png") no-repeat; background-size: 100% 100%; .main_content { background-color: #fff; padding: 30rpx; .platform_list { display: flex; flex-wrap: wrap; .item { width: 210rpx; height: 80rpx; @@ -559,16 +498,19 @@ color: #222222; margin-bottom: 20rpx; margin-right: 30rpx; &:nth-of-type(3n) { margin-right: 0; } } .active { color: #fff; background-color: $uni-color-primary; border-color: $uni-color-primary; } } .status_wrap { display: flex; align-items: center; @@ -579,11 +521,14 @@ background: #ffffff; box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0, 0, 0, 0.18); border-radius: 8rpx; .status { color: #666666; text { color: #111111; } &:nth-last-child(1) { text { color: #ed4545; @@ -591,6 +536,7 @@ } } } .title { font-weight: 500; font-size: 32rpx; @@ -601,15 +547,18 @@ justify-content: center; } } .platform_ing { margin-top: 20rpx; padding: 30rpx; background-color: #fff; .head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30rpx; .code { display: flex; font-weight: 600; @@ -619,41 +568,51 @@ color: #111111; border-radius: 8rpx; border: 1rpx solid #dfdede; text { &:nth-of-type(1) { background: #e9f5f6; padding: 0 12rpx; } &:nth-of-type(2) { padding-left: 4rpx; } &:nth-of-type(4) { padding-right: 6rpx; } } } .status { font-size: 30rpx; color: $uni-color-primary; } .scs { color: #00ba67; } } .line { display: flex; margin-bottom: 20rpx; .label { width: 144rpx; color: #666666; } .value { flex: 1; } } .btns { display: flex; justify-content: flex-end; .btn { width: 210rpx; height: 76rpx; @@ -664,6 +623,7 @@ border: 1rpx solid #999999; margin-left: 20rpx; } .active { background-color: $uni-color-primary; color: #fff; @@ -671,10 +631,12 @@ } } } .empty { width: 220rpx; margin: 160rpx auto; } .main_footer { width: 750rpx; height: 136rpx; @@ -686,6 +648,7 @@ justify-content: space-between; font-size: 32rpx; background-color: #fff; .btn { width: 224rpx; height: 88rpx; @@ -696,6 +659,7 @@ color: $uni-color-primary; border: 1rpx solid $uni-color-primary; } .active { width: 436rpx; background-color: $uni-color-primary; @@ -704,13 +668,16 @@ } } } .PlatformCallModal { height: calc(100vh - 44px); padding: 30rpx; .title { text-align: center; margin: 0 0 30rpx; } .input_wrap { display: flex; align-items: center; @@ -720,50 +687,62 @@ border-radius: 38rpx; padding: 0 30rpx; } .order_list { height: calc(100% - 140rpx); .scroll_view { height: 100%; } .platform_ing { border-radius: 8rpx; border: 1rpx solid #dfe2e8; } } .detail_list { border-top: 1rpx solid #e5e5e5; padding: 30rpx 0; .orderId { font-size: 30rpx; color: $uni-color-primary; margin-bottom: 14rpx; } .addr { font-size: 26rpx; color: #666666; margin-bottom: 20rpx; } .content { width: 100%; padding: 20rpx; background: #f7f7f7; border-radius: 8rpx; .line { display: flex; margin-bottom: 20rpx; &:nth-of-type(2n) { padding-bottom: 20rpx; border-bottom: 1rpx solid #e5e5e5; } &:last-child { padding-bottom: 0rpx; border-bottom: none; } .label { font-size: 28rpx; color: #666666; width: 88rpx; } .value { font-size: 28rpx; color: #222222; @@ -771,10 +750,12 @@ } } } .btns { display: flex; align-items: center; justify-content: space-between; .btn { width: 336rpx; height: 88rpx; @@ -786,20 +767,24 @@ justify-content: center; align-items: center; } .active { color: #fff; background-color: $uni-color-primary; } } } .TransformModal { height: 900rpx; padding: 30rpx; position: relative; .title { text-align: center; margin: 0 0 30rpx; } .btns { display: flex; align-items: center; @@ -808,6 +793,7 @@ z-index: 999; left: 30rpx; bottom: 30rpx; .btn { width: 336rpx; height: 88rpx; @@ -819,35 +805,42 @@ justify-content: center; align-items: center; } .active { color: #fff; margin-left: 18rpx; background-color: $uni-color-primary; } } .transform_list { height: 660rpx; margin-bottom: 30rpx; overflow: auto; .line { display: flex; align-items: center; border-bottom: 1rpx solid #e5e5e5; padding-bottom: 30rpx; margin-bottom: 30rpx; .name { font-size: 32rpx; color: #111111; } .status { flex: 1; font-size: 28rpx; color: $uni-color-primary; margin-left: 12rpx; } .green { color: #00ba67; } .checked { width: 40rpx; height: 40rpx; pda/pages/index/queueup.vue
@@ -21,7 +21,7 @@ /> </view> <view class="count" >已签到车辆:<text>{{ total }}</text></view >总排队车辆:<text>{{ total }}</text></view > </view> <!-- --> @@ -139,6 +139,7 @@ platConfirm(e) { const index = e.indexs[0] this.platformGroup = this.platformGroupList[index] this.platformLineUpList = [] this.getList() this.showPlatformgroup = false }, server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkInterfaceTestCloudController.java
@@ -35,11 +35,10 @@ * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Api(tags = "海康数据同步接口") @Api(tags = "海康接口测试工具接口") @RestController @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/hktest") public class HkInterfaceTestCloudController extends BaseController { @Autowired private SystemDictDataBiz systemDictDataBiz; @@ -67,32 +66,32 @@ return ApiResponse.success( HKService.wxAccessToken(configId,tageId)); } @ApiOperation("【海康】测试分页获取告警事件") @GetMapping("/nhEventPageList") @PostMapping("/nhEventPageList") @LoginNoRequired public ApiResponse<BaseResponse> nhEventPageList(@RequestBody NhEventPageListRequest param, HttpServletResponse response) { return ApiResponse.success( HKService.nhEventPageList(param)); } @ApiOperation("【海康】分页查询消防传感器部件状态") @GetMapping("/sensorStatusSearch") @PostMapping("/sensorStatusSearch") @LoginNoRequired public ApiResponse<BaseResponse> sensorStatusSearch(@RequestBody SensorStatusListRequest param, HttpServletResponse response) { return ApiResponse.success( HKService.sensorStatusSearch(param)); } @ApiOperation("【海康】查询消防传感器列表") @GetMapping("/fireChannelSearch") @PostMapping("/fireChannelSearch") @LoginNoRequired public ApiResponse<BaseResponse> fireChannelSearch(@RequestBody FireChannelListRequest param, HttpServletResponse response) { return ApiResponse.success( HKService.fireChannelSearch(param)); } @ApiOperation("【海康】海康询消防设备列表") @GetMapping("/fireDeviceSearch") @PostMapping("/fireDeviceSearch") @LoginNoRequired public ApiResponse<BaseResponse> fireDeviceSearch(@RequestBody FireDeviceListRequest param, HttpServletResponse response) { return ApiResponse.success( HKService.fireDeviceSearch(param)); } @ApiOperation("【海康】分页查询消防设备部件状态") @GetMapping("/fireDeviceStatusSearch") @PostMapping("/fireDeviceStatusSearch") @LoginNoRequired public ApiResponse<BaseResponse> fireDeviceStatusSearch(@RequestBody FireDeviceStatuslListRequest param, HttpServletResponse response) { return ApiResponse.success( HKService.fireDeviceStatusSearch(param)); server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -593,24 +593,24 @@ * @param body * @return */ public static String fireDeviceStatusSearch(Map<String,String> body) { return startDoGetStringArtemis(HKConstants.InterfacePath.fireDeviceStatusSearch,body); public static String fireDeviceStatusSearch(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.fireDeviceStatusSearch,body); } /** * 分页查询消防传感器部件状态 * @param body * @return */ public static String sensorStatusSearch(Map<String,String> body) { return startDoGetStringArtemis(HKConstants.InterfacePath.sensorStatusSearch,body); public static String sensorStatusSearch(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.sensorStatusSearch,body); } /** * 询消防设备列表 * @param body * @return */ public static String fireChannelSearch(Map<String,String> body) { return startDoGetStringArtemis(HKConstants.InterfacePath.fireChannelSearch,body); public static String fireChannelSearch(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.fireChannelSearch,body); } /** @@ -618,8 +618,8 @@ * @param body * @return */ public static String fireDeviceSearch(Map<String,String> body) { return startDoGetStringArtemis(HKConstants.InterfacePath.fireDeviceSearch,body); public static String fireDeviceSearch(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.fireDeviceSearch,body); } /** * 获取全量用户列表 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageResponse.java
@@ -13,6 +13,6 @@ private int pageNo ;// number False 当前页码 private int totalPage;// number False 总页数 @JSONField(name="list",alternateNames = {"rows","records"}) @JSONField(name="list",alternateNames = {"rows","list"}) private List<T> list ;// object[] False 权限组对象列表 } server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/FireDeviceStatusListResponse.java
@@ -4,21 +4,16 @@ @Data public class FireDeviceStatusListResponse { private String id ;//String false 预告警事件唯一标识 private String warningName ;//String false 预告警名称 private String nodeType ;//Number false 节点类型 private String nodeId ;//String false 节点ID private String nodeName;// String false 节点名称 private String nodePath;// String false 节点路径 private String ruleType ;//String false 预告警类型 private String warningLevel ;//Number false 预告警等级,1:一般,2:严重,3:故障 private String warningValue ;//String false 数据项当前值 private String warningEventTip;// String false 异常原因 private String createTime;// String false 发生时间 private String benchmark;// String false 基准数据 private String handleStatus;// Number false 处理状态:1:未处理,2:已处理 private String note;// String false 处理意见 private String handleTime;// String false 处理时间 private String normal;// Boolean false 预告警是否正常 private String deviceId;// String false 设备id private String cn ;//String false private String regionIndexCode ;//String false private String indexCode;// String false private String regionName;// String false private String deviceIndexCode;// String false private String deviceType;// Number false private String unitStatus ;//Number false private String online;// Number false private String collectTime;// String false private String faultType;// String false private String faultName;// String false private String faultNum;// String false } server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -926,7 +926,7 @@ public static BaseResponse<BaseListPageResponse<FireDeviceStatusListResponse>> fireDeviceStatusSearch(FireDeviceStatuslListRequest param){ log.info("【海康查询消防设备部件状态】================开始===="+JSONObject.toJSONString(param)); try { String res = HKTools.fireDeviceStatusSearch(toMap(param)); String res = HKTools.fireDeviceStatusSearch(JSONObject.toJSONString(param)); TypeReference typeReference = new TypeReference<BaseResponse<BaseListPageResponse<FireDeviceStatusListResponse>>>(){}; BaseResponse<BaseListPageResponse<FireDeviceStatusListResponse>> result = JSONObject.parseObject(res, typeReference.getType()); @@ -944,7 +944,7 @@ public static BaseResponse<BaseListPageResponse<SensorStatusListResponse>> sensorStatusSearch(SensorStatusListRequest param){ log.info("【海康分页查询消防传感器部件状态】================开始===="+JSONObject.toJSONString(param)); try { String res = HKTools.sensorStatusSearch(toMap(param)); String res = HKTools.sensorStatusSearch(JSONObject.toJSONString(param)); TypeReference typeReference = new TypeReference<BaseResponse<BaseListPageResponse<SensorStatusListResponse>>>(){}; BaseResponse<BaseListPageResponse<SensorStatusListResponse>> result = JSONObject.parseObject(res, typeReference.getType()); @@ -963,7 +963,7 @@ public static BaseResponse<BaseListPageResponse<FireChannelListResponse>> fireChannelSearch(FireChannelListRequest param){ log.info("【海康查询消防传感器列表】================开始===="+JSONObject.toJSONString(param)); try { String res = HKTools.fireChannelSearch(toMap(param)); String res = HKTools.fireChannelSearch(JSONObject.toJSONString(param)); TypeReference typeReference = new TypeReference<BaseResponse<BaseListPageResponse<FireChannelListResponse>>>(){}; BaseResponse<BaseListPageResponse<FireChannelListResponse>> result = JSONObject.parseObject(res, typeReference.getType()); @@ -981,7 +981,7 @@ public static BaseResponse<BaseListPageResponse<FireDeviceListResponse>> fireDeviceSearch(FireDeviceListRequest param){ log.info("【海康询消防设备列表】================开始===="+JSONObject.toJSONString(param)); try { String res = HKTools.fireDeviceSearch(toMap(param)); String res = HKTools.fireDeviceSearch(JSONObject.toJSONString(param)); TypeReference typeReference = new TypeReference<BaseResponse<BaseListPageResponse<FireDeviceListResponse>>>(){}; BaseResponse<BaseListPageResponse<FireDeviceListResponse>> result = JSONObject.parseObject(res, typeReference.getType()); @@ -1338,7 +1338,6 @@ log.error("【海康获取全部月台信息】================失败====:\n" + e.getMessage()); } return null; } /** *发送消息给LED server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -1027,7 +1027,6 @@ */ private void dealCarsInErrorPlatformBiz( PlatformJob model,EventPlatformCarsStatusInfoRequest status) { //TODO-----------------处理车辆进入错误月台业务逻辑 List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda() .eq(PlatformDevice::getPlatformId,model.getPlatformId()) .eq(PlatformDevice::getIsdeleted,Constants.ZERO)); @@ -1041,7 +1040,6 @@ continue; } if(Constants.equalsInteger(device.getType(),Constants.ZERO)){ //如果是LED TransparentChannelBodyRequest body = new TransparentChannelBodyRequest(); TransparentChannelHeadRequest head = new TransparentChannelHeadRequest(); @@ -1053,16 +1051,21 @@ body.setMethod("ControlLedGereral");//固定值 request.setIndexCode(device.getHkId()); request.setOperationType(219);//固定值 regions.setActionType(0); regions.setActionType(32); regions.setContent(content); regions.setRegionNo(1); regions.setRegionType(14); regions.setFontColor(2); regions.setFontColor(1); regions.setCircleTimes(1);//循环次数 regions.setFontSize(31);// regions.setFontSize(32);// regions.setStayTime(1);//单位?? regions.setRegionLeftTopXPos(0); regions.setRegionLeftTopYPos(0); regions.setRegionRightBottomXPos(255); regions.setRegionRightBottomYPos(31); request.setRegions(new ArrayList<>()); request.getRegions().add(regions); regions.setSpeed(13); body.setParams(request); HKService.transparentchannel(head,body); }else if(Constants.equalsInteger(device.getType(),Constants.ZERO)){ @@ -1073,9 +1076,9 @@ if(broadcastList.size()>0){ CustomBroadcastRequest request = new CustomBroadcastRequest(); request.setAudioPointIndexCode(broadcastList); request.setPlayDuration(60);//单位秒 request.setPlayDuration(15);//单位秒 request.setBroadCastMode("tts"); request.setPriority(15); request.setPriority(1); request.setState(1);//播放/停止标识 1-播放,0-停止 request.setPlayTtsContent(content); HKService.customBroadcast(request);