jiangping
2024-08-28 d916428e822cdc8004768ac9d52d98eb52644129
Merge remote-tracking branch 'origin/master'

# Conflicts:
# server/system_service/src/main/java/com/doumee/core/utils/Constants.java
已修改11个文件
270 ■■■■ 文件已修改
h5/api/driver.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/index.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/queueUp.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/reserved.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/reservedDetail.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/taskDetail.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/task/driver.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staffLogin/login.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/store/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/api/driver.js
@@ -49,6 +49,14 @@
    data
  })
}
// 物流车预约修改
export const driverCarApplyEdit = (data) => {
  return http({
    url: 'visitsAdmin/cloudService/web/driverPlatform/applyEdit',
    method: 'post',
    data
  })
}
// 物流车撤销
export const driverCarRevoke= (data) => {
  return http({
@@ -73,3 +81,19 @@
    data
  })
}
// 月台 排队情况
export const driverLineUpDetail = (data) => {
  return http({
    url: 'visitsAdmin/cloudService/web/driverPlatform/lineUpDetail',
    method: 'post',
    data
  })
}
// 月台 任务详情
export const driverTaskJobDetail = (data) => {
  return http({
    url: 'visitsAdmin/cloudService/web/driverPlatform/jobDetail',
    method: 'post',
    data
  })
}
h5/pages/driver/index.vue
@@ -13,53 +13,37 @@
        <!--  -->
        <view class="task_list">
            <swiper circular class="task_swiper">
                <swiper-item>
                <swiper-item v-for="item in taskList" :key="item.id">
                    <view class="item">
                        <view class="head">
                            <view class="name">运输单222</view>
                            <view class="name">运输单{{ item.contractNum }}</view>
                            <view class="status">
                                <view class="text">请确认任务</view>
                                <view class="time">预计等待:12小时</view>
                                <view class="text" v-if="item.status == 0">请确认任务</view>
                                <view class="text" v-if="item.status == 1">请于{{item.arriveDate.slice(5,11)}}现场签到</view>
                                <view class="text" v-if="item.status == 2">前方排队:{{item.lineUpNum}}辆</view>
                                <view class="text" v-if="item.status == 3">请入园进入等待区</view>
                                <view class="text" v-if="item.status == 4">请入园停靠1号月台作业</view>
                                <view class="text" v-if="item.status == 5">1号月台作业中</view>
                                <view class="text" v-if="item.status == 6">作业已完成</view>
                                <view class="time" v-if="item.waitTime">{{ item.waitTime }}</view>
                            </view>
                        </view>
                        <view class="content">
                            <view class="info">
                                <view class="plate">
                                    <image src="@/static/driver/wuliu_ic_car@2x.png" class="icon" mode=""></image>
                                    <text>皖AD</text>
                                    <text>{{ item.carCodeFront }}</text>
                                </view>
                                <view class="plate">
                                    <image src="@/static/driver/wuliu_ic_huowu@2x.png" class="icon" mode=""></image>
                                    <text>3000万</text>
                                    <text>{{ item.totalNum }}万支</text>
                                </view>
                            </view>
                            <view class="sub">
                                <view class="time">02-01 08:11:11</view>
                                <view class="sub_btn" @click="handleTask()">确认任务</view>
                            </view>
                        </view>
                    </view>
                </swiper-item>
                <swiper-item>
                    <view class="item">
                        <view class="head">
                            <view class="name">运输单222</view>
                            <view class="status"><view class="text">请与现场签到</view></view>
                        </view>
                        <view class="content">
                            <view class="info">
                                <view class="plate">
                                    <image src="@/static/driver/wuliu_ic_car@2x.png" class="icon" mode=""></image>
                                    <text>皖AD</text>
                                </view>
                                <view class="plate">
                                    <image src="@/static/driver/wuliu_ic_huowu@2x.png" class="icon" mode=""></image>
                                    <text>3000万</text>
                                </view>
                            </view>
                            <view class="sub">
                                <view class="time">02-01 08:11:11</view>
                                <view class="sub_btn" @click="handleTask(1)">立即签到</view>
                                <view class="time" v-if="item.arriveDate">{{ item.arriveDate.slice(5) }}</view>
                                <view v-if="item.status == 0" class="sub_btn" @click="handleTask(item)">确认任务</view>
                                <view v-if="item.status == 1" class="sub_btn" @click="handleSign(item)">立即签到</view>
                                <view v-if="item.status == 2" class="sub_btn" @click="handleQueup(item)">查看排队</view>
                            </view>
                        </view>
                    </view>
@@ -112,13 +96,21 @@
export default {
    data() {
        return {
            driverInfo: uni.getStorageSync('driverInfo')
            taskList: [],
            driverInfo: uni.getStorageSync('driverInfo'),
        };
    },
    created() {
        this.initData();
    },
    methods: {
        handleSign(item) {
            uni.navigateTo({
                url: '/pages/driver/taskDetail?id=' + item.id
            });
        },
        handleQueup(item) {},
        initData() {
            driverHomeData().then(res => {
                if (res.code == 200) {
@@ -126,6 +118,7 @@
                        bookingTips: res.data.bookingTips,
                        reservationMap: res.data.reservationMap
                    });
                    this.taskList = res.data.platformJobList || []
                }
            });
        },
h5/pages/driver/login.vue
@@ -37,7 +37,7 @@
  data() {
    return {
      form: {
                username: '13996529050',
                username: '13333333333',
                password: '1'
      },
      isShowProtocol: false,
h5/pages/driver/queueUp.vue
@@ -35,13 +35,23 @@
</template>
<script>
    import { driverLineUpDetail } from '@/api'
export default {
  data() {
    return {
    }
  },
    onLoad() {
        this.getData()
    },
  methods: {
        getData() {
            driverLineUpDetail({
                  mobile: uni.getStorageSync('driverInfo').mobile,
                  queryType: 0
            })
        },
    handleCheck() {
      uni.navigateTo({
        url: "/pages/driver/queueUpRecord"
h5/pages/driver/reserved.vue
@@ -121,7 +121,7 @@
<script>
import keyboardInput from '@/components/keyboard-input/keyboard-input.vue';
import { uploadUrl, driverCarApply, driverReasonList } from '@/api';
import { uploadUrl, driverCarApply,driverCarApplyEdit, driverReasonList, driverApplyDetail } from '@/api';
import dayjs from 'dayjs'
export default {
    components: {
@@ -142,7 +142,10 @@
            inputType: ''
        };
    },
    created() {
    onLoad(option) {
        if(option && option.id){
            this.getDetail(option.id, option.type)
        }
        this.initData()
    },
    methods: {
@@ -158,9 +161,21 @@
            if (!param.carCodeBack) return this.showToast('请输入车后牌号')
            if (!param.transportImgFull) return this.showToast('请上传准运证照片')
            param.arriveDate = param.arriveDate + ':00'
            driverCarApply({...param}).then(res => {
            let fn = param.id ? driverCarApplyEdit : driverCarApply
            fn({...param}).then(res => {
                if(res && res.code === 200){
                    uni.navigateBack()
                    setTimeout(() => {
                        this.showToast('预约申请成功')
                    })
                    this.$jump('/pages/driver/reservedRecord')
                }
            })
        },
        getDetail(id, type) {
            driverApplyDetail({id}).then(res => {
                this.param = { ...res.data, transportImgFull: res.data.prefixUrl + res.data.transportImg }
                if(type && type == 'reject'){
                    this.$set(this.param, 'id', null)
                }
            })
        },
h5/pages/driver/reservedDetail.vue
@@ -134,21 +134,32 @@
    },
  methods: {
        handleCancel(){
            const { info } = this
            uni.showModal({
                title: '提示',
                content: '这是一个模态弹窗',
                content: '您确认要撤回当前申请吗?',
                success: function (res) {
                    if (res.confirm) {
                        console.log('用户点击确定');
                        driverCarRevoke({
                            id: info.id, info: ''
                        })
                    } else if (res.cancel) {
                        console.log('用户点击取消');
                    }
                }
            });
            // driverCarRevoke
        },
        handleEdit(){},
        handleAga(){},
        handleEdit(){
            uni.navigateTo({
                url: '/pages/driver/reserved?id=' + this.info.id
            })
        },
        handleAga(){
            const { info } = this
            uni.navigateTo({
                url: `/pages/driver/reserved?id=${info.id}&type=reject`
            })
        },
        getDetail(id) {
            driverApplyDetail({id}).then(res => {
                this.info = res.data
@@ -200,7 +211,15 @@
      .item {
        display: flex;
        margin-bottom: 48rpx;
                position: relative;
                .separate {
                  position: absolute;
                  width: 4rpx;
                  height: calc( 100% - 52rpx );
                  background-color: #eeeeee;
                  left: 40rpx;
                  top: 90rpx;
                }
        .avatar_wrap {
          width: 80rpx;
          height: 80rpx;
@@ -222,15 +241,6 @@
            bottom: 0;
          }
          .separate {
            position: absolute;
            width: 4rpx;
            height: 100%;
            background-color: #eeeeee;
            left: 50%;
            transform: translate(-50%, 0);
            bottom: -80rpx;
          }
        }
        .content {
h5/pages/driver/taskDetail.vue
@@ -6,34 +6,40 @@
        src="../../static/driver/bg_renwu@2x.png"
        mode=""
      ></image>
      <view class="name">作业已完成</view>
      <view class="id_card">皖AD1212</view>
      <view class="status">作业完成</view>
      <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 == 5">月台作业中</view>
      <view class="name" v-if="param.status == 6">作业已完成</view>
      <view class="id_card">{{ param.carCodeFront }}</view>
      <view class="status" v-if="param.status == 1">等待签到</view>
      <view class="status" v-if="param.status == 2">等待叫号</view>
      <view class="status" v-if="param.status == 5">作业中</view>
      <view class="status" v-if="param.status == 6">作业完成</view>
    </view>
    <!--  -->
    <view class="main_content">
      <view class="line">
        <view class="label">司机姓名</view>
        <view class="value">刘某</view>
        <view class="value">{{param.lineUpNum}}</view>
      </view>
      <view class="line">
        <view class="label">手机号</view>
        <view class="value">188</view>
        <view class="value">{{param.lineUpNum}}</view>
      </view>
      <view class="line">
        <view class="label">运输单号</view>
        <view class="value" @click="showDetail = true">
          <text class="waybill_num">Y111</text>
          <text class="waybill_num">{{param.lineUpNum}}</text>
          <text class="btn">运单详情</text>
        </view>
      </view>
      <view class="line">
        <view class="label">作业类型</view>
        <view class="value">入园装货</view>
        <view class="value">{{param.lineUpNum}}</view>
      </view>
      <view class="line">
        <view class="label">车牌照</view>
        <view class="value">前:皖A21</view>
        <view class="value">{{param.lineUpNum}}</view>
      </view>
      <!--  -->
      <view class="line">
@@ -147,6 +153,7 @@
</template>
<script>
    import { driverTaskJobDetail } from '@/api'
export default {
  data() {
    return {
@@ -156,16 +163,26 @@
      showDetail: false,
    }
  },
    onLoad(option) {
        this.getLocation(option.id)
    },
  methods: {
    handleSignIn() {
      const { param } = this
      this.param.status = param.status == '0' ? '1' : '0'
    },
    getLocation() {
    getLocation(jobId) {
      uni.getLocation({
        type: 'wgs84',
                
        success: function (res) {
                    driverTaskJobDetail({
                        jobId,
                        lat: res.latitude,
                        lnt: res.longitude,
                    }).then(ress => {
                        this.param = { ...ress.data }
                    })
                    console.log(res);
          console.log('当前位置的经度:' + res.longitude)
          console.log('当前位置的纬度:' + res.latitude)
h5/pages/staff/task/driver.vue
@@ -121,6 +121,7 @@
      <view class="appr_modal">
        <view class="title">{{ this.flag == '0' ? '拒绝' : '同意' }}</view>
        <textarea
                    v-model="checkInfo"
          :placeholder="this.flag == '0' ? '拒绝说明,必填' : '同意说明,非必填'"
          placeholder-class="placeholder9"
        />
@@ -176,7 +177,7 @@
        },
        handleAppy() {
            const {flag,checkInfo, type,info } = this
            if(flag == 0 && !checkInfo) return this.showToast('拒绝说明必填')
            if(flag == 0 && checkInfo == '') return this.showToast('拒绝说明必填')
            carUseBookAppr({
                checkInfo,objId: info.id,objType: 6,status: flag == 0 ? 3 : 2
            }).then(res => {
h5/pages/staffLogin/login.vue
@@ -71,11 +71,12 @@
  data() {
    return {
      form: {
        account: '',
        password: '',
        username: '13996529050',
        password: '123456',
                code: 1
      },
      isShowProtocol: false,
      ProtocolFlag: false,
      ProtocolFlag: true,
      captcha: {},
      htmlText: ''
    }
h5/store/index.js
@@ -82,7 +82,9 @@
        empty(state) {
            state.token = ''
            state.userInfo = {}
            state.driverInfo = {}
            uni.removeStorageSync('userInfo')
            uni.removeStorageSync('driverInfo')
            uni.removeStorageSync('token')
        }
    },
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -154,6 +154,8 @@
    // 超时预警配置
    public static final String TIMEOUT_WARNING = "TIMEOUT_WARNING";
    // FTP文件服务器资源访问地址
    public static String getRandom6Num( ) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
@@ -741,6 +743,69 @@
    /**
     * 月台作业 状态
     * 0任务创建 1司机确认任务 2司机签到 3入园等待 4月台叫号 5开始作业 6作业完成 7月台转移 8任务挂起 9下发授权离园 10离园
     */
    public  enum PlatformJobLogType {
        CREATE(0, "任务创建","任务创建" ),
        CONFIRM_TASK(1, "司机确认任务","司机确认任务" ),
        SIGN(2, "司机签到","司机签到"),
        IN_WAIT(3, "入园等待","入园等待" ),
        CALLED(4, "月台叫号","月台叫号" ),
        WORKING(5, "开始作业","开始作业" ),
        DONE(6, "作业完成 ","作业完成 " ),
        TRANSFERING(7, "月台转移","月台转移" ),
        EXCEPTION(8, "任务挂起","任务挂起" ),
        AUTHED_LEAVE(9, "下发授权离园","下发授权离园" ),
        LEAVED(10, "已离园 ","已离园 " ),
        ;
        // 成员变量
        private int key;
        private String name;
        private String info;
        // 构造方法
        PlatformJobLogType(int key, String name,String info ) {
            this.key = key;
            this.info = info;
            this.name = name;
        }
        public static String getName(int index) {
            for (PlatformJobLogType c : PlatformJobLogType.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
    }
    /**
     * 月台作业 状态
     * 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 已过号
     */
    public  enum PlatformJobStatus {