ll
liukangdong
2024-09-25 b33b256a0e996df1e8ca1859ba538fe3ea085509
ll
已修改14个文件
682 ■■■■ 文件已修改
admin/.env.development 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalMember.vue 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/LogisticsRecord/operationCity.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/components/PlatformQueuing.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/platform.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/manifest.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/queueUp.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/taskDetail.vue 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/api/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/manifest.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/pages/index/center.vue 195 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/pages/index/queueup.vue 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.development
@@ -2,6 +2,6 @@
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
admin/src/views/business/internalMember.vue
@@ -37,29 +37,34 @@
            </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}">
@@ -91,25 +96,15 @@
              </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>
@@ -147,41 +142,38 @@
              <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" />
@@ -387,20 +379,24 @@
<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;
admin/src/views/platform/LogisticsRecord/operationCity.vue
@@ -26,7 +26,7 @@
      <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 />
admin/src/views/platform/components/PlatformQueuing.vue
@@ -96,6 +96,7 @@
          platformId: activePlat.id
        }).then(() => {
          Message.success('叫号成功')
          this.$emit('success')
          this.getList()
        })
      } else {
admin/src/views/platform/platform.vue
@@ -13,10 +13,10 @@
            </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>
    <!-- 表格和分页 -->
h5/manifest.json
@@ -92,8 +92,8 @@
                "/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" : ""
h5/pages/driver/index.vue
@@ -40,10 +40,11 @@
                                </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>
@@ -129,9 +130,11 @@
            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}`});
            }
        },
@@ -317,7 +320,8 @@
                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;
h5/pages/driver/login.vue
@@ -38,7 +38,7 @@
    return {
      form: {
                username: '18056814089',
                password: '1'
                password: '123456'
      },
      isShowProtocol: false,
      countDown: 0
h5/pages/driver/queueUp.vue
@@ -68,7 +68,7 @@
      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) {
h5/pages/driver/taskDetail.vue
@@ -1,13 +1,10 @@
<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>
@@ -26,14 +23,17 @@
            <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>
@@ -94,15 +94,11 @@
                <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>
@@ -114,60 +110,49 @@
    </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>
@@ -177,8 +162,14 @@
</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() {
@@ -193,6 +184,7 @@
            lat: '31.783205',
            lnt: '117.262635',
            nowTime: '',
                wmsInfo: {},
            signDistance: uni.getStorageSync('driverGuide').signDistance,
      showDetail: false,
    }
@@ -211,27 +203,55 @@
    },
  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) => {
@@ -256,6 +276,7 @@
<style lang="scss">
.main_app {
  padding: 0;
  .main_content {
    background: #ffffff;
    border-radius: 20rpx 20rpx 0rpx 0rpx;
@@ -263,29 +284,35 @@
    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;
@@ -293,12 +320,14 @@
        }
      }
    }
    .warnning {
      display: flex;
      color: #ed4545;
      align-items: center;
      margin: 40rpx 0;
    }
    .signIn_wrap {
      margin: 80rpx auto;
      width: 260rpx;
@@ -310,14 +339,17 @@
      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;
@@ -327,12 +359,14 @@
      }
    }
  }
  .status_wrap {
    height: 200rpx;
    width: 100%;
    padding: 30rpx;
    position: relative;
    color: #fff;
    .bg {
      width: 100%;
      height: 100%;
@@ -341,15 +375,18 @@
      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;
@@ -363,10 +400,12 @@
      color: $uni-color-primary;
    }
  }
  .space {
    width: 750rpx;
    height: 200rpx;
  }
  .padding_wrap {
    position: fixed;
        z-index: 999;
@@ -376,6 +415,7 @@
    width: 100%;
    display: flex;
    justify-content: space-between;
    .btn {
      height: 96rpx;
      line-height: 96rpx;
@@ -387,6 +427,7 @@
      border-radius: 48rpx;
      border: 1rpx solid #999999;
    }
    .check {
      background: $uni-color-primary;
      border: 1rpx solid $uni-color-primary;
@@ -394,8 +435,10 @@
    }
  }
}
.detail_modal {
  padding: 36rpx 30rpx;
  .modal_title {
    font-weight: 600;
    font-size: 32rpx;
@@ -404,49 +447,59 @@
    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;
@@ -454,31 +507,39 @@
      }
    }
  }
  .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;
                }
    }
  }
}
pda/api/index.js
@@ -150,3 +150,11 @@
    data
  })
}
//  wms运单详情
export const wmsJobDetail = (data) => {
  return http({
    url: 'visitsAdmin/cloudService/web/pdaPlatform/wmsJobDetail',
    method: 'get',
    data
  })
}
pda/manifest.json
@@ -18,8 +18,8 @@
            "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,需要将这个前缀置空,因为这个前缀只是为了识别用,识别完之后就没用了
pda/pages/index/center.vue
@@ -6,7 +6,8 @@
            <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>
@@ -26,7 +27,8 @@
                        <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>
@@ -37,7 +39,7 @@
                <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>
@@ -100,8 +102,8 @@
                            </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>
@@ -124,53 +126,48 @@
            </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>
@@ -213,7 +210,8 @@
        finishWork,
        platformMove,
        platformErr,
        platformOverNumber
        platformOverNumber,
        wmsJobDetail
    } from '@/api'
    import {
        statusMap
@@ -245,6 +243,7 @@
                transformPlatId: '', // 转移记录月台id
                transformId: '', // 转移记录任务id
                wmsInfo: {}
            }
        },
        onLoad() {
@@ -317,8 +316,13 @@
                this.activePlatform = item
                this.getPlatformTask()
            },
            handleDetail() {
            handleDetail(param) {
                wmsJobDetail({
                    id: param.id
                }).then(res => {
                    this.wmsInfo = res.data
                this.showDetail = true
                })
            },
            handleFinish(item) {
                finishWork({
@@ -362,7 +366,8 @@
                this.platformCallPage = 1
                if (callType == 1) { // 入园叫号
                    platformInPark({
                        jobId: item.id
                        jobId: item.id,
                        platformId: activePlatform.id
                    }).then(res => {
                        this.showToast('叫号成功')
                        this.getPlatformCallList()
@@ -848,4 +853,112 @@
            }
        }
    }
    .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>
pda/pages/index/queueup.vue
@@ -44,8 +44,8 @@
        </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>
@@ -70,6 +70,54 @@
        <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"
@@ -81,7 +129,7 @@
</template>
<script>
import { platformLineUpPage, getPlatformGroupList } from '@/api'
import { platformLineUpPage, getPlatformGroupList, wmsJobDetail } from '@/api'
export default {
  data() {
    return {
@@ -92,6 +140,7 @@
      total: 0,
      carCodeFront: '',
      platformGroup: {},
      wmsInfo: {},
      platformGroupList: [],
      platformLineUpList: []
    }
@@ -105,8 +154,11 @@
        }
    },
  methods: {
    handleDetail() {
    handleDetail(param) {
      wmsJobDetail({ id: param.id }).then(res => {
          this.wmsInfo = res.data
      this.showDetail = true
      })
    },
    getPlatformGroup() {
      getPlatformGroupList({
@@ -123,7 +175,7 @@
    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 || []]
@@ -258,4 +310,111 @@
    }
  }
}
.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>