| | |
| | | NODE_ENV = 'development' |
| | | |
| | | VUE_APP_API_URL = 'http://localhost:10010' |
| | | VUE_APP_API_URL = 'http://192.168.0.103:10010' |
| | | # VUE_APP_API_URL = 'http://10.50.250.178:8088/gateway_interface' |
| | | # VUE_APP_API_URL = 'http://192.168.0.103:10010' |
| | | VUE_APP_API_URL = 'http://10.50.250.178:8088/gateway_interface' |
| | | s |
| | |
| | | </section> |
| | | </el-form> |
| | | <template v-slot:menu> |
| | | <div style="width: 100%; height: 50px; background: rgba(242, 242, 242, 1); line-height: 50px; text-align: center; font-size: 14px;">企业组织架构</div> |
| | | <div |
| | | style="width: 100%; height: 50px; background: rgba(242, 242, 242, 1); line-height: 50px; text-align: center; font-size: 14px;"> |
| | | 企业组织架构</div> |
| | | <div style="width: 100%; height: calc(100vh - 170px); overflow-y: scroll;"> |
| | | <Tree :list="companyTree" :defaultProps="{name: 'name', status: 'fsStatus', children: 'childList', id: 'id'}" @callback="callback" /> |
| | | <Tree :list="companyTree" :defaultProps="{ name: 'name', status: 'fsStatus', children: 'childList', id: 'id' }" |
| | | @callback="callback" /> |
| | | </div> |
| | | </template> |
| | | <!-- 表格和分页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:member:delete','business:member:create,business:empower:create']"> |
| | | <li><el-button type="primary" v-permissions="['business:member:sync']" :loading="loading" @click="synchronous()">同步</el-button></li> |
| | | <li><el-button type="primary" @click="$refs.OperaMemberWindow.open('新建员工',null,department,searchForm.companyType)" icon="el-icon-plus" v-permissions="['business:member:create']">新建员工</el-button></li> |
| | | <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('人员导入',searchForm.companyType)" icon="el-icon-plus" v-permissions="['business:member:create']">人员导入</el-button></li> |
| | | <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">批量删除</el-button></li> |
| | | <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()" icon="el-icon-plus">下发授权</el-button></li> |
| | | <li><el-button type="primary" v-permissions="['business:member:sync']" :loading="loading" |
| | | @click="synchronous()">同步</el-button></li> |
| | | <li><el-button type="primary" |
| | | @click="$refs.OperaMemberWindow.open('新建员工', null, department, searchForm.companyType)" icon="el-icon-plus" |
| | | v-permissions="['business:member:create']">新建员工</el-button></li> |
| | | <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('人员导入', searchForm.companyType)" |
| | | icon="el-icon-plus" v-permissions="['business:member:create']">人员导入</el-button></li> |
| | | <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" |
| | | v-permissions="['business:member:delete']">批量删除</el-button></li> |
| | | <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()" |
| | | icon="el-icon-plus">下发授权</el-button></li> |
| | | <li style="float: right"> |
| | | <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1" @change="search" >是否包含下级组织</el-checkbox> |
| | | <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1" |
| | | @change="search">是否包含下级组织</el-checkbox> |
| | | </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="姓名" min-width="110px"> |
| | | <template slot-scope="{row}"> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="在职状态"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | @change="changeWorkStatus($event, row)" |
| | | v-model="row.workStatus" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="0" |
| | | :inactive-value="1"> |
| | | <el-switch @change="changeWorkStatus($event, row)" v-model="row.workStatus" active-color="#13ce66" |
| | | inactive-color="#ff4949" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="是否可拜访"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | @change="changeCanvisit($event, row)" |
| | | v-model="row.canVisit" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="1" |
| | | :inactive-value="0"> |
| | | <el-switch @change="changeCanvisit($event, row)" v-model="row.canVisit" active-color="#13ce66" |
| | | inactive-color="#ff4949" :active-value="1" :inactive-value="0"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <el-table-column prop="code" label="工号" min-width="100px"></el-table-column> |
| | | <el-table-column label="卡片" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | <el-button @click="$refs.cardOpeningRecord.open('开卡记录', row.id)" type="text">{{row.memberCardCount || '0'}}</el-button> |
| | | <el-button @click="$refs.cardOpeningRecord.open('开卡记录', row.id)" type="text">{{ row.memberCardCount || |
| | | '0'}}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="editorName" label="操作人" min-width="100px"></el-table-column> |
| | | <el-table-column prop="editDate" label="最后操作时间" min-width="150px"></el-table-column> |
| | | <el-table-column fixed="right" label="人脸信息" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-image |
| | | v-if="row.faceImgFull" |
| | | style="width: 60px; height: 60px" |
| | | :src="row.faceImgFull" |
| | | <el-image v-if="row.faceImgFull" style="width: 60px; height: 60px" :src="row.faceImgFull" |
| | | :preview-src-list="[row.faceImgFull]"> |
| | | </el-image> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:member:update', 'business:member:delete','business:empower:create'])" |
| | | label="操作" |
| | | min-width="280" |
| | | fixed="right" |
| | | > |
| | | label="操作" min-width="280" fixed="right"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('编辑员工信息',row,department)" v-permissions="['business:empower:update']">编辑</el-button> |
| | | <el-button type="text" icon="el-icon-plus" @click="empower(row.id)" v-permissions="['business:empower:create']">重新授权</el-button> |
| | | <el-button type="text" :loading="heading" style="color: red" icon="el-icon-delete" @click="updateHead(row,0)" v-if="row.headStatus ==1 " v-permissions="['business:member:head']">取消主管</el-button> |
| | | <el-button type="text" :loading="heading" icon="el-icon-edit" @click="updateHead(row,1)" v-if="row.headStatus == 0" v-permissions="['business:member:head']">设为主管</el-button> |
| | | <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:member:delete']">删除</el-button> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('编辑员工信息', row, department)" |
| | | v-permissions="['business:empower:update']">编辑</el-button> |
| | | <el-button type="text" icon="el-icon-plus" @click="empower(row.id)" |
| | | v-permissions="['business:empower:create']">重新授权</el-button> |
| | | <el-button type="text" :loading="heading" style="color: red" icon="el-icon-delete" |
| | | @click="updateHead(row, 0)" v-if="row.headStatus == 1" |
| | | v-permissions="['business:member:head']">取消主管</el-button> |
| | | <el-button type="text" :loading="heading" icon="el-icon-edit" @click="updateHead(row, 1)" |
| | | v-if="row.headStatus == 0" v-permissions="['business:member:head']">设为主管</el-button> |
| | | <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" style="color: red" |
| | | v-permissions="['business:member: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> |
| | | <!-- 查看人员开卡记录 --> |
| | | <cardOpeningRecord ref="cardOpeningRecord" @success="handlePageChange" /> |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | |
| | | .box { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .box_menu { |
| | | width: 100px; |
| | | height: 100%; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .box_tab { |
| | | flex: 1; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .zhuguan{ |
| | | color: $primary-color; |
| | | border: 1px solid $primary-color; |
| | |
| | | <el-table-column prop="carrierName" label="运输公司" min-width="100" show-overflow-tooltip /> --> |
| | | <el-table-column prop="driverName" label="驾驶员" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="drivierPhone" label="联系方式" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="confirmTaskDate" label="确认时间" min-width="150" show-overflow-tooltip /> |
| | | <!-- <el-table-column prop="confirmTaskDate" label="确认时间" min-width="150" show-overflow-tooltip /> --> |
| | | <el-table-column prop="signDate" label="签到时间" min-width="150" show-overflow-tooltip /> |
| | | <el-table-column prop="callDate" label="叫号时间" min-width="150" show-overflow-tooltip /> |
| | | <el-table-column prop="startDate" label="作业开始时间" min-width="150" show-overflow-tooltip /> |
| | |
| | | platformId: activePlat.id |
| | | }).then(() => { |
| | | Message.success('叫号成功') |
| | | this.$emit('success') |
| | | this.getList() |
| | | }) |
| | | } else { |
| | |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | | <!-- <section> --> |
| | | <el-button type="primary" @click="search">搜索</el-button> |
| | | <el-button @click="reset">重置</el-button> |
| | | </section> |
| | | <!-- </section> --> |
| | | </el-form> |
| | | </SearchFormCollapse> |
| | | <!-- 表格和分页 --> |
| | |
| | | "/admin_interface" : { |
| | | // 这个字段名需与你配置的basePrefixUrl一致,系统识别到带有/dev-api请求的地址时,会在前面拼接上代理服务器地址 |
| | | // "target" : "http://172.20.10.7:10010", // 代理服务器域名或IP地址 |
| | | "target" : "http://192.168.0.100:10010", // 代理服务器域名或IP地址 |
| | | // "target" : "http://10.50.250.178:8088/gateway_interface", // 代理服务器域名或IP地址 |
| | | // "target" : "http://192.168.0.100:10010", // 代理服务器域名或IP地址 |
| | | "target" : "http://10.50.250.178:8088/gateway_interface", // 代理服务器域名或IP地址 |
| | | "changeOrigin" : true, // 允许跨域 |
| | | "pathRewrite" : { |
| | | "^/admin_interface" : "" |
| | |
| | | </view> |
| | | </view> |
| | | <view class="sub"> |
| | | <view class="time" v-if="item.arriveDate">{{ item.arriveDate.slice(5) }}</view> |
| | | <view class="time" v-if="item.arriveDate && item.type == 4">{{ item.arriveDate.slice(5) }}</view> |
| | | <view class="time" v-if="item.type != 4 && item.platformWmsJob && item.platformWmsJob.ioCreatedate">{{ item.platformWmsJob.ioCreatedate.slice(5, 19) }}</view> |
| | | <view v-if="item.status == 0" class="sub_btn">确认任务</view> |
| | | <view v-if="item.status == 1" class="sub_btn">立即签到</view> |
| | | <view v-if="item.status == 2" class="sub_btn">查看排队</view> |
| | | <view v-if="item.status == 2" class="sub_btn" @click.stop="handleQueue(item)">查看排队</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | console.log(item); |
| | | if(status == 0){ |
| | | uni.navigateTo({url: '/pages/driver/taskConfirm?id=' + item.id}); |
| | | }else if(status == 2){ |
| | | uni.navigateTo({url:'/pages/driver/queueUp?jobId=' + item.id}) |
| | | }else{ |
| | | } |
| | | // else if(status == 2){ |
| | | // uni.navigateTo({url:'/pages/driver/queueUp?jobId=' + item.id}) |
| | | // } |
| | | else{ |
| | | uni.navigateTo({url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`}); |
| | | } |
| | | }, |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 0 30rpx 24rpx; |
| | | height: 68rpx; |
| | | padding: 0 30rpx 0; |
| | | .time { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | |
| | | return { |
| | | form: { |
| | | username: '18056814089', |
| | | password: '1' |
| | | password: '123456' |
| | | }, |
| | | isShowProtocol: false, |
| | | countDown: 0 |
| | |
| | | driverLineUpDetail({ |
| | | mobile: jobId ? '' : uni.getStorageSync('driverInfo').mobile, |
| | | queryType: jobId ? 1 : 0, |
| | | jobId: jobId |
| | | jobId: jobId, |
| | | }).then(res => { |
| | | this.platformGroupList = res.data.platformGroupList |
| | | if (res.data && res.data.platformGroupList && res.data.platformGroupList.length > 0) { |
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="status_wrap"> |
| | | <image |
| | | class="bg" |
| | | src="../../static/driver/bg_renwu@2x.png" |
| | | mode="" |
| | | ></image> |
| | | <image class="bg" src="../../static/driver/bg_renwu@2x.png" mode=""></image>
|
| | | <view class="name" v-if="param.status == 1">请与{{ param.arriveDate.slice(0,11) }}现场签到</view> |
| | | <view class="name" v-if="param.status == 2">前方排队:{{param.lineUpNum}}辆</view> |
| | | <view class="name" v-if="param.status == 3">入园等待</view> |
| | | <view class="name" v-if="param.status == 5">月台作业中</view> |
| | | <view class="name" v-if="param.status == 6">作业已完成</view> |
| | | <view class="id_card">{{ param.carCodeFront }}</view> |
| | |
| | | <template v-if="param.type != 4"> |
| | | <view class="line"> |
| | | <view class="label">运输单号</view> |
| | | <view class="value" @click="showDetail = true"> |
| | | <view class="value" @click="wmsDetail">
|
| | | <text class="waybill_num">{{param.billCode}}</text> |
| | | <text class="btn">运单详情</text> |
| | | </view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">作业类型</view> |
| | | <view class="value">市公司外协车卸货</view> |
| | | <view class="value" v-if="param.type == 0">自有车卸货</view> |
| | | <view class="value" v-if="param.type == 1">自有车装货</view> |
| | | <view class="value" v-if="param.type == 2">外协车卸货</view> |
| | | <view class="value" v-if="param.type == 3">外协车装货</view>
|
| | | </view> |
| | | </template> |
| | | <template v-else> |
| | |
| | | <view class="value">2022</view> |
| | | </view> --> |
| | | <view v-if="param.status == 1" class="signIn_wrap" @click="handleSignIn"> |
| | | <image |
| | | :src=" |
| | | <image :src="
|
| | | param.getDistance < signDistance |
| | | ? require('@/static/driver/btn_qiandao@2x.png') |
| | | : require('@/static/driver/btn_qiandao_fail@2x.png') |
| | | " |
| | | class="img" |
| | | mode="widthFix" |
| | | ></image> |
| | | " class="img" mode="widthFix"></image>
|
| | | <view class="handle">{{ param.getDistance > signDistance ? '无法签到' : '签到' }}</view> |
| | | <view class="time">{{nowTime}}</view> |
| | | </view> |
| | |
| | | </view> |
| | | |
| | | <!-- modal --> |
| | | <u-popup |
| | | :show="showDetail" |
| | | :round="10" |
| | | :safeAreaInsetBottom="true" |
| | | closeOnClickOverlay |
| | | :closeable="true" |
| | | mode="bottom" |
| | | @close="showDetail = false" |
| | | > |
| | | <u-popup :show="showDetail" :round="10" :safeAreaInsetBottom="true" closeOnClickOverlay :closeable="true"
|
| | | mode="bottom" @close="showDetail = false">
|
| | | <view class="detail_modal"> |
| | | <view class="modal_title">运单详情</view> |
| | | <view class="id_card"> |
| | | <view class="last">皖</view> |
| | | <view class="name">AD1111</view> |
| | | <view v-if="wmsInfo.plateNumber" class="id_card">
|
| | | <text>{{ wmsInfo.plateNumber.slice(0, 1) }}</text>
|
| | | <text>{{ wmsInfo.plateNumber.slice(1, 2) }}</text>
|
| | | <text>·</text>
|
| | | <text>{{ wmsInfo.plateNumber.slice(2) }}</text>
|
| | | </view> |
| | | <!-- --> |
| | | <view class="info"> |
| | | <view class="line"> |
| | | <view class="label">运输单号</view> |
| | | <view class="value">2222</view> |
| | | <view class="value">{{ wmsInfo.carryBillCode }}</view>
|
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">驾驶员</view> |
| | | <view class="value">2222</view> |
| | | <view class="value">{{ wmsInfo.driverName }} {{ wmsInfo.driverPhone }}</view>
|
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">总运输量</view> |
| | | <view class="value">2222</view> |
| | | <view class="value">{{ wmsInfo.ioQty }}万支</view>
|
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">运输公司</view> |
| | | <view class="value">2222</view> |
| | | <view class="value">{{ wmsInfo.carrierName }}</view>
|
| | | </view> |
| | | </view> |
| | | <view class="separate"></view> |
| | | <view class="contract_list"> |
| | | <view class="title">合同号:111</view> |
| | | <view class="address">aadd</view> |
| | | <view class="contract_list" v-for="item in wmsInfo.wmsJobContractVOList">
|
| | | <view class="title">合同号:{{ item.contractCode }}</view>
|
| | | <view class="address">收货地:{{ item.address }}</view>
|
| | | <view class="list"> |
| | | <view class="item" v-for="line in item.platformWmsDetailList">
|
| | | <view class="line"> |
| | | <view class="label">物料:</view> |
| | | <view class="value">黄山黑马</view> |
| | | <view class="value">{{ line.materialName }}</view>
|
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">数量:</view> |
| | | <view class="value">黄山黑马</view> |
| | | <view class="value">{{ line.ioQty }}</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> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { driverTaskJobDetail, driverSignInTask } from '@/api'; |
| | | import { statusMap } from '@/utils/config.js'; |
| | | import {
|
| | | driverTaskJobDetail,
|
| | | driverSignInTask,
|
| | | wmsJobDetail
|
| | | } from '@/api';
|
| | | import {
|
| | | statusMap
|
| | | } from '@/utils/config.js';
|
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | | data() { |
| | |
| | | lat: '31.783205', |
| | | lnt: '117.262635', |
| | | nowTime: '', |
| | | wmsInfo: {},
|
| | | signDistance: uni.getStorageSync('driverGuide').signDistance, |
| | | showDetail: false, |
| | | } |
| | |
| | | }, |
| | | methods: { |
| | | handleSignIn() { |
| | | const { param, signDistance, lat, lnt, jobId } = this |
| | | const {
|
| | | param,
|
| | | signDistance,
|
| | | lat,
|
| | | lnt,
|
| | | jobId
|
| | | } = this
|
| | | if(param.getDistance > signDistance) return |
| | | driverSignInTask({ |
| | | jobId, lat, lnt,signType: 0 |
| | | jobId,
|
| | | lat,
|
| | | lnt,
|
| | | signType: 0
|
| | | }).then(res => { |
| | | this.showToast('签到成功') |
| | | this.getDetail() |
| | | }) |
| | | }, |
| | | getDetail() { |
| | | const { jobId, lat, lnt } = this |
| | | const {
|
| | | jobId,
|
| | | lat,
|
| | | lnt
|
| | | } = this
|
| | | driverTaskJobDetail({ |
| | | jobId: this.jobId, |
| | | lat, |
| | | lnt |
| | | }).then(ress => { |
| | | this.param = { ...ress.data } |
| | | this.param = {
|
| | | ...ress.data
|
| | | }
|
| | | })
|
| | | },
|
| | | wmsDetail() {
|
| | | const {
|
| | | param
|
| | | } = this
|
| | | wmsJobDetail({
|
| | | id: param.id
|
| | | }).then(res => {
|
| | | this.wmsInfo = res.data
|
| | | this.showDetail = true
|
| | | }) |
| | | }, |
| | | getLocation() { |
| | | const { jobId } = this |
| | | const {
|
| | | jobId
|
| | | } = this
|
| | | uni.getLocation({ |
| | | type: 'wgs84', |
| | | success: (res) => { |
| | |
| | | <style lang="scss"> |
| | | .main_app { |
| | | padding: 0; |
| | |
|
| | | .main_content { |
| | | background: #ffffff; |
| | | border-radius: 20rpx 20rpx 0rpx 0rpx; |
| | |
| | | position: relative; |
| | | bottom: 32rpx; |
| | | z-index: 999; |
| | |
|
| | | .line { |
| | | padding: 24rpx 0 28rpx; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | display: flex; |
| | |
|
| | | .label { |
| | | width: 150rpx; |
| | | font-size: 30rpx; |
| | | color: #666666; |
| | | } |
| | |
|
| | | .value { |
| | | flex: 1; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | font-size: 30rpx; |
| | |
|
| | | .waybill_num { |
| | | flex: 1; |
| | | } |
| | |
|
| | | .btn { |
| | | font-size: 28rpx; |
| | | color: $uni-color-primary; |
| | | display: flex; |
| | | align-items: center; |
| | |
|
| | | .icon{ |
| | | width: 30rpx; |
| | | height: 30rpx; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .warnning { |
| | | display: flex; |
| | | color: #ed4545; |
| | | align-items: center; |
| | | margin: 40rpx 0; |
| | | } |
| | |
|
| | | .signIn_wrap { |
| | | margin: 80rpx auto; |
| | | width: 260rpx; |
| | |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | |
|
| | | .handle { |
| | | font-weight: 600; |
| | | font-size: 40rpx; |
| | | line-height: 56rpx; |
| | | } |
| | |
|
| | | .time { |
| | | color: rgba(255, 255, 255, 0.7); |
| | | } |
| | |
|
| | | .img { |
| | | position: absolute; |
| | | top: 0; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .status_wrap { |
| | | height: 200rpx; |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | position: relative; |
| | | color: #fff; |
| | |
|
| | | .bg { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | left: 0; |
| | | z-index: -1; |
| | | } |
| | |
|
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 40rpx; |
| | | line-height: 56rpx; |
| | | margin-bottom: 12rpx; |
| | | } |
| | |
|
| | | .id_card { |
| | | color: rgba(255, 255, 255, 0.8); |
| | | } |
| | |
|
| | | .status { |
| | | position: absolute; |
| | | right: 0; |
| | |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | |
|
| | | .space { |
| | | width: 750rpx; |
| | | height: 200rpx; |
| | | } |
| | |
|
| | | .padding_wrap { |
| | | position: fixed; |
| | | z-index: 999; |
| | |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
|
| | | .btn { |
| | | height: 96rpx; |
| | | line-height: 96rpx; |
| | |
| | | border-radius: 48rpx; |
| | | border: 1rpx solid #999999; |
| | | } |
| | |
|
| | | .check { |
| | | background: $uni-color-primary; |
| | | border: 1rpx solid $uni-color-primary; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .detail_modal { |
| | | padding: 36rpx 30rpx; |
| | |
|
| | | .modal_title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | |
| | | text-align: center; |
| | | margin-bottom: 36rpx; |
| | | } |
| | |
|
| | | .contract_list { |
| | | .list { |
| | | background: #f7f7f7; |
| | | border-radius: 8rpx; |
| | | padding: 20rpx; |
| | |
|
| | | .line { |
| | | display: flex; |
| | | margin-bottom: 20rpx; |
| | |
|
| | | &:nth-of-type(3n) { |
| | | border-top: 1rpx solid #e5e5e5; |
| | | padding-top: 20rpx; |
| | | } |
| | |
|
| | | .label { |
| | | color: #666666; |
| | | width: 86rpx; |
| | | } |
| | |
|
| | | .value { |
| | | flex: 1; |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 30rpx; |
| | | color: $uni-color-primary; |
| | | margin-bottom: 12rpx; |
| | | } |
| | |
|
| | | .address { |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | } |
| | |
|
| | | .info { |
| | | .line { |
| | | display: flex; |
| | | margin-bottom: 20rpx; |
| | |
|
| | | .label { |
| | | font-size: 30rpx; |
| | | color: #666666; |
| | | width: 150rpx; |
| | | } |
| | |
|
| | | .value { |
| | | flex: 1; |
| | | font-size: 30rpx; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .separate { |
| | | width: 750rpx; |
| | | height: 2rpx; |
| | | margin: 30rpx -30rpx; |
| | | border: 1rpx solid #e5e5e5; |
| | | } |
| | |
|
| | | .id_card { |
| | | border-radius: 8rpx; |
| | | display: flex; |
| | | font-weight: 600;
|
| | | height: 60rpx; |
| | | line-height: 60rpx; |
| | | font-weight: 600; |
| | | font-size: 36rpx; |
| | | font-size: 32rpx;
|
| | | color: #111111; |
| | | text-align: center; |
| | | margin-bottom: 30rpx; |
| | | .last { |
| | | border-radius: 8rpx;
|
| | | border: 1rpx solid #dfdede;
|
| | | width: 220rpx;
|
| | | margin-bottom: 15rpx;
|
| | |
|
| | | text {
|
| | | &:nth-of-type(1) {
|
| | | background: #e9f5f6; |
| | | width: 60rpx; |
| | | border-radius: 8rpx 0rpx 0rpx 8rpx; |
| | | border: 1rpx solid #dfdede; |
| | | padding: 0 12rpx;
|
| | | } |
| | | .name { |
| | | width: 186rpx; |
| | | border: 1rpx solid #dfdede; |
| | |
|
| | | &:nth-of-type(2) {
|
| | | padding-left: 10rpx;
|
| | | }
|
| | |
|
| | | &:nth-of-type(4) {
|
| | | padding-right: 6rpx;
|
| | | }
|
| | | } |
| | | } |
| | | } |
| | |
| | | data |
| | | }) |
| | | } |
| | | // wms运单详情 |
| | | export const wmsJobDetail = (data) => { |
| | | return http({ |
| | | url: 'visitsAdmin/cloudService/web/pdaPlatform/wmsJobDetail', |
| | | method: 'get', |
| | | data |
| | | }) |
| | | } |
| | |
| | | "proxy": {
|
| | | "/gateway_interface": {
|
| | | // 这个字段名需与你配置的basePrefixUrl一致,系统识别到带有/dev-api请求的地址时,会在前面拼接上代理服务器地址
|
| | | // "target" : "http://10.50.250.178:8088/gateway_interface", // 代理服务器域名或IP地址
|
| | | "target": "http://192.168.0.100:10010", // 代理服务器域名或IP地址
|
| | | "target" : "http://10.50.250.178:8088/gateway_interface", // 代理服务器域名或IP地址
|
| | | // "target": "http://192.168.0.100:10010", // 代理服务器域名或IP地址
|
| | | "changeOrigin": true, // 允许跨域
|
| | | "pathRewrite": {
|
| | | "^/gateway_interface": "" // 重写地址,如果实际接口中是不带/dev-api,需要将这个前缀置空,因为这个前缀只是为了识别用,识别完之后就没用了
|
| | |
| | | <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>
|
| | | {{ item.name }}
|
| | | </view>
|
| | | </view>
|
| | | <view class="status_wrap">
|
| | | <view class="status">作业:<text>{{ platformTaskInfo.workNum }}</text></view>
|
| | |
| | | <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>
|
| | | {{ 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-else>
|
| | | <text class="label">运输单号</text>
|
| | | <text class="value">{{ item.code }}</text>
|
| | | <text class="primaryColor" @click="handleDetail()">运单详情</text>
|
| | | <text class="primaryColor" @click="handleDetail(item)">运单详情</text>
|
| | | </view>
|
| | | <view class="line">
|
| | | <text class="label">驾驶员</text>
|
| | |
| | | </view>
|
| | | <view class="line" v-else>
|
| | | <text class="label">运输单号</text>
|
| | | <text class="value">{{ item.code }}</text>
|
| | | <text class="primaryColor" @click="handleDetail()">运单详情</text>
|
| | | <text class="value">{{ item.billCode }}</text>
|
| | | <text class="primaryColor" @click="handleDetail(item)">运单详情</text>
|
| | | </view>
|
| | | <view class="line">
|
| | | <text class="label">驾驶员</text>
|
| | |
| | | </view>
|
| | | </u-popup>
|
| | | <!-- 运单详情 -->
|
| | | <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">
|
| | | <view class="code">
|
| | | <text>皖</text>
|
| | | <text>AD1212</text>
|
| | | <u-popup :show="showDetail" :round="10" :safeAreaInsetBottom="true" closeOnClickOverlay :closeable="true"
|
| | | mode="bottom" @close="showDetail = false">
|
| | | <view class="detail_modal">
|
| | | <view class="modal_title">运单详情</view>
|
| | | <view v-if="wmsInfo.plateNumber" class="id_card">
|
| | | <text>{{ wmsInfo.plateNumber.slice(0, 1) }}</text>
|
| | | <text>{{ wmsInfo.plateNumber.slice(1, 2) }}</text>
|
| | | <text>·</text>
|
| | | <text>{{ wmsInfo.plateNumber.slice(2) }}</text>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="info">
|
| | | <view class="line">
|
| | | <view class="label">运输单号</view>
|
| | | <view class="value">{{ wmsInfo.carryBillCode }}</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <text class="label">运输单号</text>
|
| | | <text class="value">11111</text>
|
| | | <view class="label">驾驶员</view>
|
| | | <view class="value">{{ wmsInfo.driverName }} {{ wmsInfo.driverPhone }}</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <text class="label">驾驶员</text>
|
| | | <text class="value">11111</text>
|
| | | <view class="label">总运输量</view>
|
| | | <view class="value">{{ wmsInfo.ioQty }}万支</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <text class="label">总运输量</text>
|
| | | <text class="value">11111</text>
|
| | | </view>
|
| | | <view class="line">
|
| | | <text class="label">运输公司</text>
|
| | | <text class="value">11111</text>
|
| | | <view class="label">运输公司</view>
|
| | | <view class="value">{{ wmsInfo.carrierName }}</view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="detail_list">
|
| | | <view class="item">
|
| | | <view class="orderId">合同编号:{{ 111 }}</view>
|
| | | <view class="addr">收货地:{{ 111 }}</view>
|
| | | <view class="content">
|
| | | <view class="separate"></view>
|
| | | <view class="contract_list" v-for="item in wmsInfo.wmsJobContractVOList">
|
| | | <view class="title">合同号:{{ item.contractCode }}</view>
|
| | | <view class="address">收货地:{{ item.address }}</view>
|
| | | <view class="list">
|
| | | <view class="item" v-for="line in item.platformWmsDetailList">
|
| | | <view class="line">
|
| | | <view class="label">物料:</view>
|
| | | <view class="value">黄山</view>
|
| | | <view class="value">{{ line.materialName }}</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 class="value">{{ line.ioQty }}万支</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | finishWork,
|
| | | platformMove,
|
| | | platformErr,
|
| | | platformOverNumber
|
| | | platformOverNumber,
|
| | | wmsJobDetail
|
| | | } from '@/api'
|
| | | import {
|
| | | statusMap
|
| | |
| | |
|
| | | transformPlatId: '', // 转移记录月台id
|
| | | transformId: '', // 转移记录任务id
|
| | | wmsInfo: {}
|
| | | }
|
| | | },
|
| | | onLoad() {
|
| | |
| | | this.activePlatform = item
|
| | | this.getPlatformTask()
|
| | | },
|
| | | handleDetail() {
|
| | | handleDetail(param) {
|
| | | wmsJobDetail({
|
| | | id: param.id
|
| | | }).then(res => {
|
| | | this.wmsInfo = res.data
|
| | | this.showDetail = true
|
| | | })
|
| | | },
|
| | | handleFinish(item) {
|
| | | finishWork({
|
| | |
| | | this.platformCallPage = 1
|
| | | if (callType == 1) { // 入园叫号
|
| | | platformInPark({
|
| | | jobId: item.id
|
| | | jobId: item.id, |
| | | platformId: activePlatform.id
|
| | | }).then(res => {
|
| | | this.showToast('叫号成功')
|
| | | this.getPlatformCallList()
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .detail_modal {
|
| | | padding: 36rpx 30rpx;
|
| | |
|
| | | .modal_title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | line-height: 44rpx;
|
| | | text-align: center;
|
| | | margin-bottom: 36rpx;
|
| | | }
|
| | |
|
| | | .contract_list {
|
| | | .list {
|
| | | background: #f7f7f7;
|
| | | border-radius: 8rpx;
|
| | | padding: 20rpx;
|
| | |
|
| | | .line {
|
| | | display: flex;
|
| | | margin-bottom: 20rpx;
|
| | |
|
| | | &:nth-of-type(3n) {
|
| | | border-top: 1rpx solid #e5e5e5;
|
| | | padding-top: 20rpx;
|
| | | }
|
| | |
|
| | | .label {
|
| | | color: #666666;
|
| | | width: 92rpx;
|
| | | }
|
| | |
|
| | | .value {
|
| | | flex: 1;
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .title {
|
| | | font-weight: 600;
|
| | | font-size: 30rpx;
|
| | | color: $uni-color-primary;
|
| | | margin-bottom: 12rpx;
|
| | | }
|
| | |
|
| | | .address {
|
| | | font-size: 26rpx;
|
| | | color: #666666;
|
| | | margin-bottom: 20rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .info {
|
| | | .line {
|
| | | display: flex;
|
| | | margin-bottom: 20rpx;
|
| | |
|
| | | .label {
|
| | | font-size: 30rpx;
|
| | | color: #666666;
|
| | | width: 150rpx;
|
| | | }
|
| | |
|
| | | .value {
|
| | | flex: 1;
|
| | | font-size: 30rpx;
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .separate {
|
| | | width: 750rpx;
|
| | | height: 2rpx;
|
| | | margin: 30rpx -30rpx;
|
| | | border: 1rpx solid #e5e5e5;
|
| | | }
|
| | |
|
| | | .id_card {
|
| | | display: flex;
|
| | | font-weight: 600;
|
| | | height: 60rpx;
|
| | | line-height: 60rpx;
|
| | | font-size: 32rpx;
|
| | | color: #111111;
|
| | | border-radius: 8rpx;
|
| | | border: 1rpx solid #dfdede;
|
| | | width: 220rpx;
|
| | | margin-bottom: 15rpx;
|
| | |
|
| | | text {
|
| | | &:nth-of-type(1) {
|
| | | background: #e9f5f6;
|
| | | padding: 0 12rpx;
|
| | | }
|
| | |
|
| | | &:nth-of-type(2) {
|
| | | padding-left: 10rpx;
|
| | | }
|
| | |
|
| | | &:nth-of-type(4) {
|
| | | padding-right: 6rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | </style> |
| | |
| | | </view> |
| | | <view class="line" v-else> |
| | | <text class="label">运输单号</text> |
| | | <text class="value">{{ item.code }}</text> |
| | | <text class="primaryColor" @click="handleDetail()">运单详情</text> |
| | | <text class="value">{{ item.billCode }}</text> |
| | | <text class="primaryColor" @click="handleDetail(item)">运单详情</text> |
| | | </view> |
| | | <view class="line"> |
| | | <text class="label">驾驶员</text> |
| | |
| | | <text>暂无作业车辆</text> |
| | | </view> |
| | | </view> |
| | | <u-popup :show="showDetail" :round="10" :safeAreaInsetBottom="true" closeOnClickOverlay :closeable="true" |
| | | mode="bottom" @close="showDetail = false"> |
| | | <view class="detail_modal"> |
| | | <view class="modal_title">运单详情</view> |
| | | <view v-if="wmsInfo.plateNumber" class="id_card"> |
| | | <text>{{ wmsInfo.plateNumber.slice(0, 1) }}</text> |
| | | <text>{{ wmsInfo.plateNumber.slice(1, 2) }}</text> |
| | | <text>·</text> |
| | | <text>{{ wmsInfo.plateNumber.slice(2) }}</text> |
| | | </view> |
| | | <!-- --> |
| | | <view class="info"> |
| | | <view class="line"> |
| | | <view class="label">运输单号</view> |
| | | <view class="value">{{ wmsInfo.carryBillCode }}</view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">驾驶员</view> |
| | | <view class="value">{{ wmsInfo.driverName }} {{ wmsInfo.driverPhone }}</view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">总运输量</view> |
| | | <view class="value">{{ wmsInfo.ioQty }}万支</view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">运输公司</view> |
| | | <view class="value">{{ wmsInfo.carrierName }}</view> |
| | | </view> |
| | | </view> |
| | | <view class="separate"></view> |
| | | <view class="contract_list" v-for="item in wmsInfo.wmsJobContractVOList"> |
| | | <view class="title">合同号:{{ item.contractCode }}</view> |
| | | <view class="address">收货地:{{ item.address }}</view> |
| | | <view class="list"> |
| | | <view class="item" v-for="line in item.platformWmsDetailList"> |
| | | <view class="line"> |
| | | <view class="label">物料:</view> |
| | | <view class="value">{{ line.materialName }}</view> |
| | | </view> |
| | | <view class="line"> |
| | | <view class="label">数量:</view> |
| | | <view class="value">{{ line.ioQty }}万支</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | <u-picker |
| | | :show="showPlatformgroup" |
| | | keyName="name" |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { platformLineUpPage, getPlatformGroupList } from '@/api' |
| | | import { platformLineUpPage, getPlatformGroupList, wmsJobDetail } from '@/api' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | total: 0, |
| | | carCodeFront: '', |
| | | platformGroup: {}, |
| | | wmsInfo: {}, |
| | | platformGroupList: [], |
| | | platformLineUpList: [] |
| | | } |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | handleDetail() { |
| | | handleDetail(param) { |
| | | wmsJobDetail({ id: param.id }).then(res => { |
| | | this.wmsInfo = res.data |
| | | this.showDetail = true |
| | | }) |
| | | }, |
| | | getPlatformGroup() { |
| | | getPlatformGroupList({ |
| | |
| | | getList() { |
| | | const { page, capacity, platformGroup, carCodeFront } = this |
| | | platformLineUpPage({ |
| | | capacity, page, model: { platformGroupId: platformGroup.id, callType: 2, carCodeFront } |
| | | capacity, page, model: { platformGroupId: platformGroup.id, callType: 3, carCodeFront } |
| | | }).then(res => { |
| | | if (res.data) { |
| | | this.platformLineUpList = [...this.platformLineUpList, ...res.data.records || []] |
| | |
| | | } |
| | | } |
| | | } |
| | | .detail_modal {
|
| | | padding: 36rpx 30rpx;
|
| | |
|
| | | .modal_title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | line-height: 44rpx;
|
| | | text-align: center;
|
| | | margin-bottom: 36rpx;
|
| | | }
|
| | |
|
| | | .contract_list {
|
| | | .list {
|
| | | background: #f7f7f7;
|
| | | border-radius: 8rpx;
|
| | | padding: 20rpx;
|
| | |
|
| | | .line {
|
| | | display: flex;
|
| | | margin-bottom: 20rpx;
|
| | |
|
| | | &:nth-of-type(3n) {
|
| | | border-top: 1rpx solid #e5e5e5;
|
| | | padding-top: 20rpx;
|
| | | }
|
| | |
|
| | | .label {
|
| | | color: #666666;
|
| | | width: 86rpx;
|
| | | }
|
| | |
|
| | | .value {
|
| | | flex: 1;
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .title {
|
| | | font-weight: 600;
|
| | | font-size: 30rpx;
|
| | | color: $uni-color-primary;
|
| | | margin-bottom: 12rpx;
|
| | | }
|
| | |
|
| | | .address {
|
| | | font-size: 26rpx;
|
| | | color: #666666;
|
| | | margin-bottom: 20rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .info {
|
| | | .line {
|
| | | display: flex;
|
| | | margin-bottom: 20rpx;
|
| | |
|
| | | .label {
|
| | | font-size: 30rpx;
|
| | | color: #666666;
|
| | | width: 150rpx;
|
| | | }
|
| | |
|
| | | .value {
|
| | | flex: 1;
|
| | | font-size: 30rpx;
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .separate {
|
| | | width: 750rpx;
|
| | | height: 2rpx;
|
| | | margin: 30rpx -30rpx;
|
| | | border: 1rpx solid #e5e5e5;
|
| | | }
|
| | |
|
| | | .id_card {
|
| | | display: flex;
|
| | | font-weight: 600;
|
| | | height: 60rpx;
|
| | | line-height: 60rpx;
|
| | | font-size: 32rpx;
|
| | | color: #111111;
|
| | | border-radius: 8rpx;
|
| | | border: 1rpx solid #dfdede;
|
| | | width: 220rpx;
|
| | | margin-bottom: 15rpx;
|
| | |
|
| | | text {
|
| | | &:nth-of-type(1) {
|
| | | background: #e9f5f6;
|
| | | padding: 0 12rpx;
|
| | | }
|
| | |
|
| | | &:nth-of-type(2) {
|
| | | padding-left: 10rpx;
|
| | | }
|
| | |
|
| | | &:nth-of-type(4) {
|
| | | padding-right: 6rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | } |
| | | </style> |