付延余
2022-12-19 2c11814ecf148a5fe5a80d03e29481476e47f34d
pages/jihua/jihua.vue
@@ -1,5 +1,6 @@
<template>
   <view class="jihua-wrap">
      <u-overlay :show="overlayShow" @click="overlayShow = false"></u-overlay>
      <view class="qiehuan-box"><u-tabs :list="tabList" @click="tabClick"></u-tabs></view>
      <view class="jihua-main">
         <view class="shaixuan-box">
@@ -11,14 +12,8 @@
         </view>
         <view class="main-inside">
            <view v-if="isTomJihua == '全部'">
               <u-empty
                   v-if="fyData.length == 0"
                    mode="data"
                     icon="http://cdn.uviewui.com/uview/empty/data.png"
                     class="empty-container"
                 >
               </u-empty>
               <view class="main-block-box" v-for="(item, index) in fyData" :key="item.id">
               <u-empty v-if="fyData.length == 0" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" class="empty-container"></u-empty>
               <view id="u-dropdown" class="main-block-box" v-for="(item, index) in fyData" :key="item.id" ref="planViewRef">
                  <view class="jihua-main-line">
                     <!-- <view class="name">客户名称:{{item.customerName || ''}}</view> -->
                     <view class="name">收货单位:{{ item.customerAddressName || '' }}</view>
@@ -33,22 +28,35 @@
                     <view class="main-flex">
                        <view class="carNum-box">
                           <view>计划车数:</view>
                           <u--input placeholder="请输入发运车数" border="surround" v-model="item.numPlan" @change="inputChange"></u--input>
                           <!-- <u--input placeholder="请输入发运车数" border="surround" v-model="item.numPlan" @change="inputChange" @focus="faYunPlanCarsFocus(item)"></u--input> -->
                           <view class="planCars" :style="{color:item.numPlan  ? '#111':'#ccc'}" @click="faYunPlanCarsFocus(item)">
                              <text v-model="item.numPlan">{{ item.numPlan || '点击输入数量' }}</text>
                              <view class="cursor" v-if="isCursor && fayunPlanFocusId == item.id"><image src="@/static/cursor.gif" mode=""><image></view>
                           </view>
                        </view>
                        <view>实际发车数:{{ item.numReal || '' }}</view>
                        <view>实际发车数:{{ item.numReal || '暂无' }}</view>
                     </view>
                  </view>
                  <u-keyboard
                     @change="valChange"
                     @backspace="backspace"
                     @confirm="keyBoardConfirm"
                     @cancel="keyBoardCancel"
                     @close="keyBoardClose"
                     :show="keyBoardShow"
                     ref="uKeyboard"
                     mode="number"
                     :overlay="false"
                     :closeOnClickOverlay="false"
                     :dotDisabled="true"
                     zIndex="100000"
                  ></u-keyboard>
               </view>
               <u-button class="xiugai-btn" type="primary" text="提交" @click="dataFormSubmit"></u-button>
               <u-button class="xiugai-btn" type="primary" text="提交" @click="submit"></u-button>
            </view>
            <view v-if="isTomJihua == '已设置的计划'">
               <u-empty
                   v-if="fyData.length == 0"
                    mode="data"
                     icon="http://cdn.uviewui.com/uview/empty/data.png"
                     class="empty-container"
                 >
               </u-empty>
               <u-empty v-if="fyData.length == 0" mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" class="empty-container"></u-empty>
               <view class="main-block-box" v-for="(item, index) in fyData" :key="item.id">
                  <view class="jihua-main-line">
                     <view class="name">客户名称:{{ item.customerName || '' }}</view>
@@ -56,27 +64,45 @@
                  <view class="jihua-main-line">
                     <view class="main-flex">
                        <view>煤种:{{ item.order.coalName || '' }}</view>
                        <view>剩余量:{{ item.order.executiveSurplus || '' }}</view>
                        <view>剩余量:{{ item.order.executiveSurplus || '' }}</view>
                     </view>
                  </view>
                  <view class="jihua-main-line">
                     <view class="main-flex">
                        <view class="carNum-box">
                           <view>计划车数:</view>
                           <u--input placeholder="请输入发运车数" border="surround" v-model="item.numPlan" @change="inputTotalChange(item)"></u--input>
                           <!-- <u--input placeholder="请输入发运车数" border="surround" v-model="item.numPlan" @change="inputTotalChange(item)" @focus="faYunPlanCarsFocus(item)"></u--input> -->
                           <view class="planCars" :style="{color:item.numPlan  ? '#111':'#ccc'}" @click="faYunPlanCarsFocus(item)">
                              <text v-model="item.numPlan">{{ item.numPlan || '点击输入数量' }}</text>
                              <view class="cursor" v-if="isCursor && fayunPlanFocusId == item.id">
                                 <image src="@/static/cursor.gif" mode="" />
                              </view>
                           </view>
                        </view>
                        <view>实际发车数:{{ item.order.numReal == null ? '暂无' : item.order.numReal }}</view>
                     </view>
                  </view>
                  <u-keyboard
                     @change="valChange"
                     @backspace="backspace"
                     @confirm="keyBoardConfirm"
                     @cancel="keyBoardCancel"
                     @close="keyBoardClose"
                     :show="keyBoardShow"
                     ref="uKeyboard"
                     mode="number"
                     :overlay="false"
                     :closeOnClickOverlay="false"
                     :dotDisabled="true"
                     zIndex="100000"
                  ></u-keyboard>
               </view>
               <u-button class="xiugai-btn" type="primary" text="修改" @click="getOrderCarNum"></u-button>
               <u-button class="xiugai-btn" type="primary" text="修改" @click="editPlan"></u-button>
            </view>
         </view>
      </view>
      <view class="back-top-container">
         <u-back-top :scroll-top="scrollTop" icon="arrow-up" mode='square'></u-back-top>
      </view>
      <view class="back-top-container"><u-back-top :scroll-top="scrollTop" icon="arrow-up" mode="square"></u-back-top></view>
      <!-- 菜单栏 -->
      <popup-menu @menuShow="menushow" ref="menuRef"></popup-menu>
   </view>
@@ -84,6 +110,7 @@
<script>
import popupMenu from '@/components/common/popup-menu/popup-menu.vue';
import tool from '@/utils/tool.js';
export default {
   components: {
      popupMenu
@@ -92,7 +119,7 @@
      return {
         radioValue: '全部',
         tabList: [
            {
            {
               name: '今日发运计划'
            },
            {
@@ -108,7 +135,13 @@
         isTomJihua: '全部',
         editRow: '', //修改行的行
         menuShow: false,
         scrollTop: 0 // 返回顶部按钮绑定
         scrollTop: 0, // 返回顶部按钮绑定,
         // 键盘
         keyBoardShow: false,
         keyBoardValue: '',
         fayunPlanFocusId: null,
         isCursor: false ,// 日计划车辆输入框焦点动画
         overlayShow:false // 遮罩层
      };
   },
   onShow() {
@@ -118,12 +151,57 @@
      this.init();
   },
   onPageScroll(e) {
      // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
      this.scrollTop = e.scrollTop;
   },
   },
   // 点击导航栏菜单后
   onNavigationBarButtonTap(e) {
      // console.log(e);
      this.$refs.menuRef.menuClick();
   },
   mounted() {
      // setInterval(() => {
      //    uni.hideKeyboard();
      // }, 1);
   },
   watch: {
      isTomJihua: {
         handler: function(newV, oldV) {
            if (newV != oldV) {
               this.keyBoardShow = false;
            }
         },
         deep: true,
         immediate: true
      },
      keyBoardValue: {
         handler: function(newV, oldV) {
            console.log('键盘输入值', newV, oldV);
            this.fyData.map(item => {
               if (item.id == this.fayunPlanFocusId) {
                  if (item.numPlan && item.numPlan != newV) {
                     item.numPlan = this.keyBoardValue;
                     if (this.isTomJihua == '已设置的计划') {
                        this.editRow = item;
                     }
                  }
               }
            });
         },
         deep: true,
         immediate: true
      },
      scrollTop: {
         handler: function(newV, oldV) {
            // console.log('页面滑动', newV);
            if (newV != oldV) {
               this.keyBoardClose();
               // this.keyBoardShow = false;
            }
         }
      },
      deep: true,
      immediate: true
   },
   methods: {
      init() {
@@ -132,22 +210,30 @@
      menushow(e) {
         this.menuShow = e;
      },
      //提交
      dataFormSubmit() {
         //提交订单
         this.fyData.forEach(e => {
            e.shippingDate = this.info.shippingDate;
            if (e.planId && !e.numPlan) {
               e.numPlan = -1; //删除设置为空的计划
            }
            let orderId = e.id;
            e.id = e.planId;
            e.orderId = orderId;
         });
         this.$reqPost('addObj', this.fyData).then(res => {
            this.$u.toast('添加成功');
            this.fyList();
         });
         console.log('日发运计划更新数据提交',this.fyData);
            this.overlayShow = true;
            this.fyData.forEach(e => {
               e.shippingDate = this.info.shippingDate;
               if (e.planId && !e.numPlan) {
                  e.numPlan = -1; // 删除设置为空的计划
               }
               let orderId = e.id;  // 订单id
               e.orderId = orderId;
               // e.id = e.planId;
            });
            this.$reqPost('addObj', this.fyData).then(res => {
               console.log('addObj接口返回',res);
               this.$u.toast('添加成功');
               this.fyList();
            });
      },
      // 全部日计划提交按钮防抖
      submit:tool.throttle(function(){
            this.dataFormSubmit();
      }),
      // 修改日计划按钮
      getOrderCarNum() {
         //修改
         this.$reqPost('setCarNums', this.editRow).then(res => {
@@ -155,6 +241,11 @@
            this.xscarshippingdayplan();
         });
      },
      // 修改日计划防抖按钮
      editPlan:tool.throttle(function(){
         this.getOrderCarNum();
      }),
      // 切换全部和已设置
      groupChange(n) {
         console.log(n, 'n================');
         this.isTomJihua = n;
@@ -163,6 +254,140 @@
         } else {
            this.fyList();
         }
      },
      fyList() {
         this.overlayShow = true;
         //列表查询
         uni.showLoading({
            title: '正在加载...'
         });
         let compId = uni.getStorageSync('userInfo').compId;
         let params = {
            current: 1,
            size: 100,
            status: 2,
            trainType: 1,
            compId: compId
         };
         this.$reqGet('fyList', params).then(res => {
            if (res.code == 0) {
               console.log('fylist--------',res.data);
               this.xscarshippingdayplan(res.data);
            }
         });
      },
      xscarshippingdayplan(allList) {
         uni.showLoading({
            title: '正在加载...'
         });
         this.overlayShow = true;
         //已经设置的
         let params = {
            current: 1,
            size: 50,
            shippingDate: this.info.shippingDate
         };
         this.$reqGet('xscarshippingdayplan', params)
            .then(res => {
               console.log('不知道是什么---------------',res);
               if (res.code == 0) {
                  if (allList) {
                     let selectFyData = res.data.records;
                     allList.forEach(e => {
                        selectFyData.forEach(ee => {
                           if (e.id == ee.orderId) {
                              e.numPlan = ee.numPlan;
                              e.numReal = ee.numReal;
                              // e.planId = ee.id;
                              console.log('修改planid操作',`planId:${ee.id}`);
                              if (ee.carNums != null) {
                                 e.carNums = ee.carNums;
                              }
                           }
                        });
                     });
                     this.fyData = allList;
                  } else {
                     this.fyData = res.data.records;
                  }
                  uni.hideLoading();
                  this.overlayShow = false;
               }
            })
            .catch(e => {
               uni.hideLoading();
               this.overlayShow = false;
            });
      },
      //切换今日和明日
      tabClick(item) {
         console.log(item, 'item==========');
         if (item.index == 1) {
            this.info.shippingDate = this.tomorrowDate();
            if (this.isTomJihua == '已设置的计划') {
               this.xscarshippingdayplan();
            } else {
               this.fyList();
            }
         } else {
            this.info.shippingDate = this.todayDate();
            if (this.isTomJihua == '已设置的计划') {
               this.xscarshippingdayplan();
            } else {
               this.fyList();
            }
         }
      },
      inputChange(val) {
         console.log('全部计划', val);
      },
      inputTotalChange(val) {
         console.log(val, 'val2=======val2,已设置计划');
         this.editRow = val;
      },
      // input获取焦点
      faYunPlanCarsFocus(item) {
         // 获取该焦点在页面的位置
         // let boxBottom = document.getElementById('#u-dropdown');
         // console.log('元素',boxBottom);
         // let bottom = this.$refs.planViewRef.offsetHeight
         this.fayunPlanFocusId = item.id;
         this.keyBoardShow = true;
         this.isCursor = true;
         this.keyBoardValue = item.numPlan + '';
      },
      // 键盘
      valChange(val) {
         // this.keyBoardValue += val;
         // 将每次按键的值拼接到value变量中,注意+=写法
         this.fyData.map(item => {
            if (item.id == this.fayunPlanFocusId) {
               if (item.numPlan) {
                  item.numPlan = this.keyBoardValue += val + '';
                  this.keyBoardValue = item.numPlan;
               } else {
                  item.numPlan = val;
                  this.keyBoardValue = item.numPlan;
               }
            }
         });
      },
      backspace() {
         this.keyBoardValue = this.keyBoardValue.substr(0, this.keyBoardValue.length - 1);
      },
      keyBoardConfirm(val) {
         console.log('键盘点击确定的值', val);
         this.keyBoardClose();
      },
      keyBoardCancel() {
         this.keyBoardClose();
      },
      keyBoardClose() {
         console.log('键盘关闭了');
         this.fayunPlanFocusId = null;
         this.keyBoardShow = false;
         this.isCursor = false;
      },
      todayDate() {
         let yes = new Date().getTime();
@@ -187,92 +412,6 @@
         const time = y + '-' + m + '-' + d;
         console.log('tomorrowDate---------222', time);
         return time;
      },
      fyList() {
         //列表查询
         uni.showLoading({
            title: '正在加载...'
         });
         let compId = uni.getStorageSync('userInfo').compId;
         let params = {
            current: 1,
            size: 100,
            status: 2,
            trainType: 1,
            compId: compId
         };
         this.$reqGet('fyList', params).then(res => {
            if (res.code == 0) {
               this.xscarshippingdayplan(res.data);
            }
         });
      },
      xscarshippingdayplan(allList) {
         //已经设置的
         console.log(allList, 'allList==========');
         let params = {
            current: 1,
            size: 50,
            shippingDate: this.info.shippingDate
         };
         this.$reqGet('xscarshippingdayplan', params)
            .then(res => {
               if (res.code == 0) {
                  if (!allList) {
                     this.fyData = res.data.records;
                     console.log(this.fyData, 'this.fyData=========11111111');
                  } else {
                     let l = res.data.records;
                     allList.forEach(e => {
                        l.forEach(ee => {
                           if (e.id == ee.orderId) {
                              e.numPlan = ee.numPlan;
                              e.numReal = ee.numReal;
                              e.planId = ee.id;
                              if (ee.carNums != null) {
                                 e.carNums = ee.carNums;
                              }
                           }
                        });
                     });
                     this.fyData = allList;
                     console.log(this.fyData, 'this.fyData=========22222222');
                  }
                  console.log(this.fyData, 'this.fyData=========333333333');
                  uni.hideLoading();
               }
            })
            .catch(e => {
               uni.hideLoading();
            });
      },
      tabClick(item) {
         //切换今日和明日
         console.log(item, 'item==========');
         if (item.index == 1) {
            this.info.shippingDate = this.tomorrowDate();
            if (this.isTomJihua == '已设置的计划') {
               this.xscarshippingdayplan();
            } else {
               this.fyList();
            }
         } else {
            this.info.shippingDate = this.todayDate();
            if (this.isTomJihua == '已设置的计划') {
               this.xscarshippingdayplan();
            } else {
               this.fyList();
            }
         }
      },
      inputChange(val) {
         console.log(val);
      },
      inputTotalChange(val) {
         console.log(val, 'val2=======val2');
         this.editRow = val;
      }
   }
};
@@ -324,9 +463,9 @@
      font-size: vww(12) !important;
      line-height: vww(12) !important;
   }
   .u-empty{
      width:100%;
      height:vww(300);
   .u-empty {
      width: 100%;
      height: vww(300);
   }
}
@@ -412,6 +551,30 @@
            }
            .carNum-box {
               display: flex;
               .planCars {
                  display: flex;
                  box-sizing: border-box;
                  overflow: auto;
                  width: vww(120);
                  border: 1px solid #dddddd;
                  border-radius: vww(4);
                  padding: vww(1) vww(10);
                  // 输入焦点图片
                  .cursor {
                     // float: left;
                     width: vww(1);
                     height: vww(15);
                     vertical-align: middle;
                     align-self: center;
                     image {
                        width: vww(1);
                        display: block;
                        height: vww(15);
                     }
                  }
               }
               view {
                  font-size: vww(14);
                  line-height: vww(32);
@@ -421,4 +584,4 @@
      }
   }
}
</style>
</style>