| <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">  | 
|                 <u-radio-group v-model="radioValue" @change="groupChange">  | 
|                     <u-radio style="margin-right: 30rpx;" shape="square" label="全部" name="全部"></u-radio>  | 
|                     <u-radio style="margin-right: 30rpx;" shape="square" label="已设置的计划" name="已设置的计划"></u-radio>  | 
|                     <!-- <u-radio shape="square" label="未设置的计划" name="未设置的计划"></u-radio> -->  | 
|                 </u-radio-group>  | 
|             </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 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>  | 
|                         </view>  | 
|                         <view class="jihua-main-line">  | 
|                             <view class="main-flex">  | 
|                                 <view>煤种:{{ item.coalName || '' }}</view>  | 
|                                 <view>剩余量:{{ item.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="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>  | 
|                         </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="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>  | 
|                     <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>  | 
|                         </view>  | 
|                         <view class="jihua-main-line">  | 
|                             <view class="main-flex">  | 
|                                 <view>煤种:{{ item.order.coalName || '' }}</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)" @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="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>  | 
|         <!-- 菜单栏 -->  | 
|         <popup-menu @menuShow="menushow" ref="menuRef"></popup-menu>  | 
|     </view>  | 
| </template>  | 
|   | 
| <script>  | 
| import popupMenu from '@/components/common/popup-menu/popup-menu.vue';  | 
| import tool from '@/utils/tool.js';  | 
| export default {  | 
|     components: {  | 
|         popupMenu  | 
|     },  | 
|     data() {  | 
|         return {  | 
|             radioValue: '全部',  | 
|             tabList: [  | 
|                 {    | 
|                     name: '今日发运计划'  | 
|                 },  | 
|                 {  | 
|                     name: '明日发运计划'  | 
|                 }  | 
|             ],  | 
|             carValue: 0,  | 
|             fyData: [],  | 
|             fyData2: [],  | 
|             info: {  | 
|                 shippingDate: this.todayDate()  | 
|             },  | 
|             isTomJihua: '全部',  | 
|             editRow: '', //修改行的行  | 
|             menuShow: false,  | 
|             scrollTop: 0, // 返回顶部按钮绑定,  | 
|             // 键盘  | 
|             keyBoardShow: false,  | 
|             keyBoardValue: '',  | 
|             fayunPlanFocusId: null,  | 
|             isCursor: false ,// 日计划车辆输入框焦点动画  | 
|             overlayShow:false // 遮罩层  | 
|         };  | 
|     },  | 
|     onShow() {  | 
|         if (this.menuShow == true) {  | 
|             this.$refs.menuRef.menuClick();  | 
|         }  | 
|         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() {  | 
|             this.fyList();  | 
|         },  | 
|         menushow(e) {  | 
|             this.menuShow = e;  | 
|         },  | 
|         //提交  | 
|         dataFormSubmit() {  | 
|             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 => {  | 
|                 this.$u.toast('修改成功');  | 
|                 this.xscarshippingdayplan();  | 
|             });  | 
|         },  | 
|         // 修改日计划防抖按钮  | 
|         editPlan:tool.throttle(function(){  | 
|             this.getOrderCarNum();  | 
|         }),  | 
|         // 切换全部和已设置  | 
|         groupChange(n) {  | 
|             console.log(n, 'n================');  | 
|             this.isTomJihua = n;  | 
|             if (n == '已设置的计划') {  | 
|                 this.xscarshippingdayplan();  | 
|             } 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();  | 
|             let date = new Date(yes);  | 
|             let y = date.getFullYear();  | 
|             let m = date.getMonth() + 1;  | 
|             m = m < 10 ? '0' + m : m;  | 
|             let d = date.getDate();  | 
|             d = d < 10 ? '0' + d : d;  | 
|             const time = y + '-' + m + '-' + d;  | 
|             console.log('todayDate---------', time);  | 
|             return time;  | 
|         },  | 
|         tomorrowDate() {  | 
|             let yes = new Date().getTime() + 60 * 24 * 60 * 1000;  | 
|             let date = new Date(yes);  | 
|             let y = date.getFullYear();  | 
|             let m = date.getMonth() + 1;  | 
|             m = m < 10 ? '0' + m : m;  | 
|             let d = date.getDate();  | 
|             d = d < 10 ? '0' + d : d;  | 
|             const time = y + '-' + m + '-' + d;  | 
|             console.log('tomorrowDate---------222', time);  | 
|             return time;  | 
|         }  | 
|     }  | 
| };  | 
| </script>  | 
|   | 
| <style lang="scss" scoped>  | 
| ::v-deep {  | 
|     .u-tabs__wrapper__nav {  | 
|         padding-left: vww(75.5);  | 
|     }  | 
|   | 
|     .u-radio__text {  | 
|         span {  | 
|             font-size: vww(14);  | 
|         }  | 
|     }  | 
|     .u-radio {  | 
|         margin-right: vww(10);  | 
|     }  | 
|     .u-radio__text {  | 
|         font-size: vww(14) !important;  | 
|     }  | 
|     .u-input {  | 
|         height: vww(16);  | 
|         width: vww(100);  | 
|         z-index: 1;  | 
|     }  | 
|     .u-button {  | 
|         position: fixed !important;  | 
|         left: 50%;  | 
|         bottom: vww(20);  | 
|         width: vww(200) !important;  | 
|         transform: translateX(-50%);  | 
|         border-radius: vww(20);  | 
|         z-index: 9999;  | 
|     }  | 
|     .u-radio-group--row {  | 
|         height: 100%;  | 
|         width: 100%;  | 
|         display: flex;  | 
|         justify-content: right;  | 
|     }  | 
|   | 
|     .u-radio__icon-wrap {  | 
|         width: vww(18) !important;  | 
|         height: vww(18) !important;  | 
|     }  | 
|     .u-icon__icon {  | 
|         font-size: vww(12) !important;  | 
|         line-height: vww(12) !important;  | 
|     }  | 
|     .u-empty {  | 
|         width: 100%;  | 
|         height: vww(300);  | 
|     }  | 
| }  | 
|   | 
| .qiehuan-box {  | 
|     position: fixed;  | 
|     top: 0;  | 
|     left: 0;  | 
|     right: 0;  | 
|     width: 100%;  | 
|     height: vww(44);  | 
|     z-index: 10;  | 
|     background-color: #fff;  | 
| }  | 
|   | 
| .jihua-wrap {  | 
|     width: 100%;  | 
|     height: 100%;  | 
|     // overflow-y: auto; // 会引起键盘弹出页面布局  | 
|     display: flex;  | 
|     flex-direction: column;  | 
|   | 
|     // .xiugai-btn {  | 
|     //     position: absolute;  | 
|     //     left: 50%;  | 
|     //     bottom: vww(20);  | 
|     //     width: vww(200);  | 
|     //     transform: translateX(-50%);  | 
|     //     border-radius: vww(20);  | 
|     // }  | 
| }  | 
|   | 
| .jihua-main {  | 
|     display: flex;  | 
|     flex-direction: column;  | 
|     width: 100%;  | 
|     padding: vww(44) vww(10) vww(70) vww(10);  | 
|     box-sizing: border-box;  | 
|     .main-inside {  | 
|         width: 100%;  | 
|         height: calc(100% - vww(44));  | 
|     }  | 
|   | 
|     .shaixuan-box {  | 
|         height: vww(40);  | 
|         position: sticky;  | 
|         top: vww(44);  | 
|         left: 0;  | 
|         right: 0;  | 
|         width: 100%;  | 
|         z-index: 10;  | 
|         background-color: #fff;  | 
|     }  | 
|   | 
|     .main-block-box {  | 
|         box-shadow: 0px 0px 8px 0px rgba(216, 218, 238, 0.8);  | 
|         height: vww(120);  | 
|         padding: vww(10);  | 
|         box-sizing: border-box;  | 
|         margin-top: vww(12);  | 
|         border-radius: vww(8);  | 
|         &:first-child {  | 
|             margin-top: vww(5);  | 
|         }  | 
|         .jihua-main-line {  | 
|             width: 100%;  | 
|             display: flex;  | 
|   | 
|             view {  | 
|                 font-size: vww(14);  | 
|             }  | 
|   | 
|             .name {  | 
|                 font-weight: 600 !important;  | 
|             }  | 
|   | 
|             .main-flex {  | 
|                 width: 100%;  | 
|                 display: flex;  | 
|                 justify-content: space-between;  | 
|                 view {  | 
|                     font-size: vww(14);  | 
|                     line-height: vww(32);  | 
|                 }  | 
|                 .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);  | 
|                     }  | 
|                 }  | 
|             }  | 
|         }  | 
|     }  | 
| }  | 
| </style> |