wk
2024-08-13 b73d5b4f9d70e997690121a04a8e93e40327d10a
pages/public-page/forward/forward.vue
@@ -15,7 +15,7 @@
         <u-notice-bar :text="text"
            :fontSize="30"></u-notice-bar>
         <view class="notice-icon"
            style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/notice.png') no-repeat;background-size: cover; width: 42rpx;height: 42rpx;">
            style="background: url('https://wrzs.czjlchem.com:9090/appimg/image/banner/notice.png') no-repeat;background-size: cover; width: 42rpx;height: 42rpx;">
         </view>
      </view>
      <view v-else-if="roleType == 2"
@@ -28,46 +28,53 @@
                  v-for="(val, index) in jhOrderPlanForwardList"
                  :key="val.vid"
                  :name="val.vid"
                  @click="deleteGroup(index, val)">
                  <view class="forward-card">
                     <view class="card-content">
                        <u--form labelPosition="left"
                           :model="forwardForm"
                           ref="form1">
                           <u-form-item label="转发对象"
                              labelWidth="21%"
                              ref="item1"
                              @click="forwardObjectClick(index,val.name)">
                              <u--input v-model="val.name"
                                 placeholder="点击选择转发对象"
                                 :readonly="true"
                                 border="bottom"></u--input>
                           </u-form-item>
                           <u-form-item label="输入数量"
                              ref="item2"
                              labelWidth="21%">
                              <view class="forward-card-amount">
                                 <view class="forward-card-amount-input">
                                    <u--input v-model="val.carNum"
                                       placeholder="请输入转发数量"
                                       @input="debouncecarNumInput(index, val.carNum)"
                                       @blur="blurInput(index, val.carNum)"
                                       border="bottom"></u--input>
                  @click="deleteGroup(index, val,val.xsUserId)">
                  <view>
                     <view class="forward-card">
                        <view :style="{ 'color': errorDataList.includes(index) ? '#f56c6c' : '' }"
                           class="error-tip"
                           v-show="errorDataList.includes(index)">
                           * 此项数据错误,请更改后再次提交
                        </view>
                        <view class="card-content">
                           <u--form labelPosition="left"
                              :model="forwardForm"
                              ref="form1">
                              <u-form-item label="转发对象"
                                 labelWidth="21%"
                                 ref="item1"
                                 @click="forwardObjectClick(index,val.name,val.id)">
                                 <u--input v-model="val.name"
                                    placeholder="点击选择转发对象"
                                    :readonly="true"
                                    border="bottom"></u--input>
                              </u-form-item>
                              <u-form-item label="输入数量"
                                 ref="item2"
                                 labelWidth="21%">
                                 <view class="forward-card-amount">
                                    <view class="forward-card-amount-input">
                                       <u--input v-model="val.carNum"
                                          placeholder="请输入转发数量"
                                          @input="debouncecarNumInput(index, val.carNum,val.xsUserId)"
                                          @blur="blurInput(index, val.carNum,val.xsUserId)"
                                          border="bottom"></u--input>
                                    </view>
                                    <u-checkbox-group v-model="val.checkboxValue1"
                                       placement="column"
                                       @change="v => checkboxChange(v, index, val,val.xsUserId)">
                                       <u-checkbox size="30"
                                          shape="circle"
                                          labelSize="30"
                                          label="全部转发"
                                          name="全部转发"
                                          :disabled="val.ischecked"
                                          :checked="val.isSelected"></u-checkbox>
                                    </u-checkbox-group>
                                 </view>
                                 <u-checkbox-group v-model="val.checkboxValue1"
                                    placement="column"
                                    @change="v => checkboxChange(v, index, val)">
                                    <u-checkbox size="30"
                                       shape="circle"
                                       labelSize="30"
                                       label="全部转发"
                                       name="全部转发"
                                       :disabled="val.ischecked"
                                       :checked="val.isSelected"></u-checkbox>
                                 </u-checkbox-group>
                              </view>
                           </u-form-item>
                        </u--form>
                              </u-form-item>
                           </u--form>
                        </view>
                     </view>
                  </view>
               </u-swipe-action-item>
@@ -81,17 +88,25 @@
               :hairline="false"
               @click.stop="addForm"
               :disabled="whetherClick"></u-button></view>
         <!--分享日计划  -->
         <view
         class="AdddBtn" v-if="isshow"><u-button text="分享日计划"
               :hairline="false"
               open-type="share"
               :loading='loading'></u-button></view>
         <!-- 提交按钮 -->
         <view class="forwardBtn"><u-button text="提交"
         <view
         class="forwardBtn"><u-button text="提交"
               :hairline="false"
               type="warning"
               @click.stop="submitForm"
               :disabled="whetherClick1"
               :loading='loading'></u-button></view>
      </view>
      <!-- 增加按钮 -->
      <!-- 选择货代或车队弹出框 -->
      <!-- 选择承运商或车队弹出框 -->
      <view class="selectHuoDaiOrFleet-container">
         <u-popup :show="selectPopupShow"
            mode="bottom"
@@ -145,85 +160,69 @@
   export default {
      onLoad(params) {
         console.log(params, '转发页面的参数');
         let reg=RegExp(/销/)
         this.isshow=!reg.test(params.orderType)
         // 客户
         this.cars2 = Number(params.cars2);
         this.tempcarNumSurplus1 = this.carNumSurplus1 = Number(params.carNumSurplus1);
         // 货代
         this.tempcarNumSurplus1 = this.carNumSurplus1 = Number(params.carNumSurplus1 || 0);
         // 承运商
         this.carNum = Number(params.carNum);
         this.carNumSurplusHuodai = this.forwardSurplus = Number(params.carNumSurplusHuodai);
         this.carNumSurplusHuodai = this.forwardSurplus = Number(params.carNumSurplusHuodai || 0);
         this.orderPlanId = params.orderPlanId;
         this.$reqGet('forwardList', { OrderPlanId: params.orderPlanId }).then(res => {
            if (res.data.length !== 0 && this.roleType == 1) {
               this.jhOrderPlanForwardList = res.data.map((item, index) => {
                  return {
                     id: item.id,
                     orderPlanId: item.orderPlanId,
                     name: item.xsUserName === '' ? item.fleetName : item.xsUserName,
                     carNum: item.carNum,
                     xsUserId: item.xsUserId === '' ? 0 : item.xsUserId,
                     fleetId: item.fleetId === '' ? 0 : item.fleetId,
                     checkboxValue1: '',
                     vid: `${new Date().getTime()}${index}${item.id}`
                  };
               });
            } else if (res.data.length !== 0 && this.roleType == 2) {
               this.jhOrderPlanForwardList = res.data.map((item, index) => {
                  return {
                     id: item.id,
                     orderPlanId: item.orderPlanId,
                     name: item.fleetName,
                     carNum: item.carNum,
                     xsUserId: item.xsUserId === '' ? 0 : item.xsUserId,
                     fleetId: item.fleetId === '' ? 0 : item.fleetId,
                     checkboxValue1: '',
                     vid: `${new Date().getTime()}${index}${item.id}`
                  };
               });
            } else {
               this.jhOrderPlanForwardList = this.jhOrderPlanForwardList.map((item, index) => {
                  if (!item.orderPlanId) {
                     return {
                        ...item,
                        orderPlanId: params.orderPlanId,
                        vid: `${new Date().getTime()}${index}${item.id}`
                     };
                  }
               });
            }
         });
         // 判断是否转发完成 完成则不可再添加
         if (this.roleType === 1) {  //roleType 1客户
            this.whetherClick = this.carNumSurplus1 === 0
         } else if (this.roleType === 2) {  //roleType 2承运商
            this.whetherClick = this.forwardSurplus === 0
         }
         this.getOrderPlan()
      },
      onShareAppMessage(res) {
        if (res.from === 'button') {// 来自页面内分享按钮
          console.log(res.target)
        }
        return {
          title: '分享日计划',
          path: 'pages/driver-page/delivery-my/delivery-my/delivery-my?'+ `id=${this.orderPlanId}`
        }
      },
      data() {
         return {
            isshow:false,
            forwardSurplus: 0,
            paramsName: {},
            huoDaiData: [],
            isClickFlag:true,// true 可以 or false for forward and back to the direction of the car direction (default
            fleetData: [],
            // 日计划id
            orderPlanId: '',
            jhOrderPlanForwardList: [{
               orderPlanId: '',
               name: '',
               carNum: null,
               xsUserId: 0,
               fleetId: 0,
               checkboxValue1: '',
            jhOrderPlanForwardList: [{  //转发对象
               orderPlanId: '',  //日计划Id
               name: '',  //车队或承运商名称
               carNum: null,  //转发数量
               xsUserId: 0,  //承运商Id
               fleetId: 0,  //车队Id
               checkboxValue1: '',  //全部转发
               isSelected: false
            }],
            // 索引,利用索引正确显示
            index: '',
            checkboxValue1: '',
            selectPopupShow: false,
            list1: [{ name: '车队' }, { name: '货代' }],
            list1: [{ name: '车队' }, { name: '承运商' }],
            tabHuoDai: false,
            carNumSurplus1: '',
            carNumSurplus1: '',  //剩余的收发单数量(转发的数量 - 领取的数量)
            tempcarNumSurplus1: '',
            cars2: '',
            cars2: '',  //已经领取的车数
            carNum: '',
            carNumSurplusHuodai: '',
            formNum: 1,
            // 个人转发数据
            personalForward: {},
            whetherClick: false,
            whetherClick: false,  //添加按钮
            whetherClick1: false,
            // 滑动单元格配置
            options1: [{
@@ -234,7 +233,10 @@
            }],
            loading: false, //提交loading
            originForwardName: '', //原转发对象
            laterForwardName: '', //后转发对象
            laterForwardName: '', //后转发对象
            errorDataList: [], // 错误数据
            isDirectAdd: false, // 是否是在原来有对象的item修改 是的为true
            forwardId: '' //原来有对象 点击赋值
         };
      },
      onShow() {
@@ -249,13 +251,61 @@
            return uni.getStorageSync('roleType');
         },
         text() {
            return `已领取${this.cars2}张提煤单,剩余${this.carNumSurplus1}张提煤单`;
            return `已领取${this.cars2}张收发单,剩余${this.carNumSurplus1}张收发单`;
         },
         text1() {
            return `已拥有${this.carNum}张提煤单,剩余${this.carNumSurplusHuodai}张提煤单`;
            return `已拥有${this.carNum}张收发单,剩余${this.carNumSurplusHuodai}张收发单`;
         }
      },
      methods: {
         getOrderPlan() {
            uni.showLoading({
               title: '加载中'
            })
            this.$reqGet('forwardList', { OrderPlanId: this.orderPlanId }).then(res => {
               uni.hideLoading()
               if (res.data.length !== 0 && this.roleType == 1) {
                  this.jhOrderPlanForwardList = res.data.map((item, index) => {
                     return {
                        id: item.id,
                        orderPlanId: item.orderPlanId,
                        name: item.xsUserName === '' ? item.fleetName : item.xsUserName,
                        carNum: item.carNum,
                        xsUserId: item.xsUserId === '' ? 0 : item.xsUserId,
                        fleetId: item.fleetId === '' ? 0 : item.fleetId,
                        checkboxValue1: '',
                        vid: `${new Date().getTime()}${index}${item.id}`,
                        forWardType: item.xsUserId === '' ? 2 : 1
                     };
                  });
               } else if (res.data.length !== 0 && this.roleType == 2) {
                  this.jhOrderPlanForwardList = res.data.map((item, index) => {
                     return {
                        id: item.id,
                        orderPlanId: item.orderPlanId,
                        name: item.fleetName,
                        carNum: item.carNum,
                        xsUserId: item.xsUserId === '' ? 0 : item.xsUserId,
                        fleetId: item.fleetId === '' ? 0 : item.fleetId,
                        checkboxValue1: '',
                        vid: `${new Date().getTime()}${index}${item.id}`,
                     };
                  });
               } else {
                  this.jhOrderPlanForwardList = this.jhOrderPlanForwardList.map((item, index) => {
                     if (!item.orderPlanId) {
                        return {
                           ...item,
                           orderPlanId: this.orderPlanId,
                           vid: `${new Date().getTime()}${index}${item.id}`,
                        };
                     }
                  });
               }
            }).catch(e => {
               uni.hideLoading()
            })
         },
         // 返回上一页
         back() {
            uni.navigateBack({
@@ -293,7 +343,8 @@
               return Number(x);
            }
         },
         checkboxChange(value, index, v) {
         checkboxChange(value, index, v, xsUserId) {
            this.$set(this.jhOrderPlanForwardList[index], 'forWardType', xsUserId ? 1 : 2);
            this.jhOrderPlanForwardList = this.jhOrderPlanForwardList.map(v => {
               return {
                  ...v,
@@ -323,7 +374,7 @@
               this.calculate(this.jhOrderPlanForwardList);
            }
         },
         // 获取货代列表
         // 获取承运商列表
         getAllHuoDaiByCustomerId() {
            this.$reqGet('getAllHuoDaiByCustomerId').then(res => {
               this.huoDaiData = res.data;
@@ -335,19 +386,50 @@
               this.fleetData = res.data;
            });
         },
         // 转发
         forwardObjectClick(index, name) {
         // 转发对象
         forwardObjectClick(index, name, id) {
            if(!id){
            this.selectPopupShow = true;
            this.index = index;
            this.originForwardName = name || ''
            this.isDirectAdd = this.originForwardName !== ''
            this.forwardId = id
            }else{
               return
            }
         },
         selectPopupClose() {
            this.selectPopupShow = false;
         },
         selectPopupOpen() {},
         // 转发选择货代
         // 转发选择承运商
         forwardHuoDaiObjectSelect(item, index) {
            this.$nextTick(() => {
               // let isableAdd = this.jhOrderPlanForwardList.filter(v => item.name === v.name);
               // if (isableAdd.length > 0) {
               //    this.$u.toast('存在重复添加');
               //    this.selectPopupShow = true;
               //    return
               // }
               // if (this.isDirectAdd) {
               //    if (this.originForwardName && this.originForwardName !== item.name && (this
               //          .carNumSurplus1 !== 0 || this.carNumSurplusHuodai !== 0)) {
               //       this.addForm(item.name)
               // this.jhOrderPlanForwardList.forEach(v => {
               //    if (v.id === this.forwardId) {
               //       v.xsUserId = item.userId;
               //       v.name = item.name;
               //       v.fleetId = 0;
               //       v.forWardType = 1;
               //    }
               // })
               //    this.selectPopupShow = false;
               // } else {
               //    this.$u.toast('收发单剩余数为0或已添加');
               //    this.selectPopupShow = true;
               // }
               // } else {
               let isableAdd = this.jhOrderPlanForwardList.filter(v => item.name === v.name);
               if (isableAdd.length > 0) {
                  this.$u.toast('存在重复添加');
@@ -357,15 +439,38 @@
                  this.jhOrderPlanForwardList[this.index].xsUserId = item.userId;
                  this.jhOrderPlanForwardList[this.index].name = item.name;
                  this.jhOrderPlanForwardList[this.index].fleetId = 0;
                  if (this.originForwardName) {
                     this.addForm(item.name)
                  }
                  this.jhOrderPlanForwardList[this.index].forWardType = 1;  //forWardType 转发类型 承运商1 车队2
               }
               // }
            });
         },
         // 转发选择车队
         forwardFleetObjectSelect(item, index) {
            this.$nextTick(() => {
               // let isableAdd = this.jhOrderPlanForwardList.filter(v => item.name === v.name);
               // if (isableAdd.length > 0) {
               //    this.$u.toast('存在重复添加');
               //    this.selectPopupShow = true;
               //    return
               // }
               // if (this.isDirectAdd) {
               //    if (this.originForwardName && this.originForwardName !== item.name && (this
               //          .carNumSurplus1 !== 0 || this.carNumSurplusHuodai !== 0)) {
               //       this.addForm(item.name)
               // this.jhOrderPlanForwardList.forEach(v => {
               //    if (v.id === this.forwardId) {
               //       v.xsUserId = item.userId;
               //       v.name = item.name;
               //       v.fleetId = 0;
               //       v.forWardType = 1;
               //    }
               // })
               //    this.selectPopupShow = false;
               // } else {
               //    this.$u.toast('收发单剩余数为0或已添加');
               //    this.selectPopupShow = true;
               // }
               // } else {
               let isableAdd = this.jhOrderPlanForwardList.filter(v => item.name === v.name);
               if (isableAdd.length > 0) {
                  this.$u.toast('存在重复添加');
@@ -375,47 +480,57 @@
                  this.jhOrderPlanForwardList[this.index].fleetId = item.id;
                  this.jhOrderPlanForwardList[this.index].name = item.name;
                  this.jhOrderPlanForwardList[this.index].xsUserId = 0;
                  if (this.originForwardName) {
                     this.addForm(item.name)
                  }
                  this.jhOrderPlanForwardList[this.index].forWardType = 2;
               }
               // }
            });
         },
         // 计算提煤单数量,添加或删除时调用
         // 计算收发单数量,添加或删除时调用
         calculate(arr) {
            let total = arr.reduce((prev, cur) => {
               return cur.carNum + prev;
            }, 0);
            console.log(total, '提煤单一共的数据');
            console.log(total, '收发单一共的数据');
        //roleType 1客户 2 承运商 3司机 5装卸员
            if (this.roleType == 1) {
               if (Number(this.cars2) >= total) {
               if (Number(this.cars2) > total) {
                  this.carNumSurplus1 = Number(this.cars2) - total;
                  this.whetherClick = false;
                  this.whetherClick1 = false;
               } else if (Number(this.cars2) == total) {  //剩余的收发单为0(添加、提交按钮不能点击)
                  this.whetherClick = true;
                  this.whetherClick1 = false;
                  this.carNumSurplus1 = Number(this.cars2) - total;
               } else {
                  this.carNumSurplus1 = 0;
                  this.$u.toast('剩余提煤单数量不足');
                  this.$u.toast('剩余收发单数量不足');
                  this.whetherClick = true;
                  this.whetherClick1 = true;
               }
            }
            if (this.roleType == 2) {
               if (Number(this.carNum) >= total) {
               if (Number(this.carNum) > total) {
                  this.carNumSurplusHuodai = Number(this.carNum) - total;
                  this.whetherClick = false;
                  this.whetherClick1 = false;
               } else if (Number(this.carNum) == total) {
                  this.whetherClick = true;
                  this.whetherClick1 = false;
                  this.carNumSurplusHuodai = Number(this.carNum) - total;
               } else {
                  this.carNumSurplusHuodai = 0;
                  this.$u.toast('剩余提煤单数量不足');
                  this.$u.toast('剩余收发单数量不足');
                  this.whetherClick = true;
                  this.whetherClick1 = true;
               }
            }
         },
         debouncecarNumInput(index, value) {
         debouncecarNumInput(index, value, xsUserId) {
            let time;
            let that = this;
            that.$set(that.jhOrderPlanForwardList[index], 'carNum', Number(value));
        //forWardType 转发类型 1承运商 2车队
            that.$set(that.jhOrderPlanForwardList[index], 'forWardType', xsUserId ? 1 : 2);
            return (function() {
               if (!time) {
                  time = setTimeout(() => {
@@ -448,44 +563,32 @@
               }
            })();
         },
         blurInput(index, value) {
         blurInput(index, value, xsUserId) {
            this.$set(this.jhOrderPlanForwardList[index], 'carNum', Number(value));
            this.$set(this.jhOrderPlanForwardList[index], 'forWardType', xsUserId ? 1 : 2);
            this.calculate(this.jhOrderPlanForwardList);
         },
         // 添加一组表单
         addForm(name) {
            // 判断是否有一个复选,如果有则禁止新加的复选,没有则不禁止
            let ischeck = this.jhOrderPlanForwardList.some(v => v.ischecked == true);
            if (!ischeck) {
               this.jhOrderPlanForwardList.push({
                  orderPlanId: this.orderPlanId,
                  name: name || '',
                  carNum: null,
                  xsUserId: 0,
                  fleetId: 0,
                  checkboxValue1: '',
                  ischecked: false,
                  vid: new Date().getTime(),
                  isSelected: false
               });
            } else {
               this.jhOrderPlanForwardList.push({
                  orderPlanId: this.orderPlanId,
                  name: name || '',
                  carNum: null,
                  xsUserId: 0,
                  fleetId: 0,
                  checkboxValue1: '',
                  ischecked: true,
                  vid: new Date().getTime(),
                  isSelected: false
               });
            }
            this.jhOrderPlanForwardList.push({
               orderPlanId: this.orderPlanId,
               name: name || '',
               carNum: null,
               xsUserId: 0,
               fleetId: 0,
               checkboxValue1: '',
               ischecked: ischeck,
               vid: Math.random() * 100,
               isSelected: false
            });
            this.calculate(this.jhOrderPlanForwardList);
         },
         // 删除一组表单
         deleteGroup(index, v) {
         deleteGroup(index, v, xsUserId) {
            let tempcarNum = v.carNum;
            this.$set(this.jhOrderPlanForwardList[index], 'forWardType', xsUserId ? 1 : 2);
            if (v.id) {
               this.$reqPost('deleteForward', { id: v.id }, 'params').then(res => {
                  if (res.code === 0) {
@@ -519,11 +622,13 @@
                  return isPass;
               }
            });
            console.log(this.jhOrderPlanForwardList,'jhOderPlan')
            if (isPass) {
               this.loading = true;
               this.$reqPost('forward', this.jhOrderPlanForwardList, 'json').then(res => {
                  console.log(res, 'zh');
                  if (res.code == 0) {
                  // res.data.length == 0 提交成功 否则提交失败
                  if (res.data.length == 0) {
                     this.loading = false
                     this.$u.toast('提交成功');
                     setTimeout(() => {
@@ -531,18 +636,21 @@
                     }, 1000);
                  } else {
                     this.loading = false
                     this.$u.toast(res.msg);
                     this.errorDataList = res.data
                     this.$u.toast(res.msg ? res.msg : '数据有误,请检查');
                  }
               });
               }).catch(e => {
                  this.loading = false
               })
            }
         },
         tabClick(item) {
            if (item.name == '货代') {
            if (item.name == '承运商') {
               this.tabHuoDai = true;
            } else {
               this.tabHuoDai = false;
            }
         }
         },
      }
   };
</script>
@@ -640,6 +748,14 @@
               background: #ffffff;
               box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15);
               border-radius: 20rpx;
               position: relative;
               .error-tip {
                  position: absolute;
                  bottom: vww(5);
                  left: vww(22);
                  font-size: vww(14);
               }
               .card-content {
                  width: 612rpx;
@@ -698,11 +814,12 @@
      }
      .utils-buttonGroup {
         width: 610rpx;
         width: 700rpx;
         @include flex;
         justify-content: space-between;
         position: fixed;
         bottom: vww(30);
         left: vww(30);
         left: vww(18);
         z-index: 3;
         .AdddBtn,
@@ -748,4 +865,4 @@
         }
      }
   }
</style>
</style>