shish 2 месяцев назад
Родитель
Сommit
0fc44c6441

+ 26 - 8
ghsApp/src/admin/home/components/OrderItem.vue

@@ -265,7 +265,7 @@ import { getUserDet } from '@/api/member';
 import { createExpressOrder, cancelExpressOrder as cancelSFExpressOrder } from '@/api/express';
 import { cancelDeliveryOrder } from '@/api/express/delivery';
 import { createCallExpressOrder, cancelCallExpressOrder,getOrderFee } from '@/api/shop/shop-express';
-import { printWlLabel } from '@/api/order';
+import { printWlLabel, cloudPrintOrder } from '@/api/order';
 import { iconSrc } from '@/utils/iconSrc';
 export default {
   name: 'OrderItem',
@@ -320,6 +320,11 @@ export default {
     updateFiled(info) {
       this.$emit('listendUpdateFiled', info);
     },
+    bumpItemCount(item, key) {
+      const value = (Number(item[key]) || 0) + 1
+      this.$set(item, key, value)
+      this.updateFiled({ id: item.id, key, value })
+    },
     directFh(info) {
       this.$emit('directFh', info);
     },
@@ -331,13 +336,26 @@ export default {
       this.$emit('fillNoFh', info);
     },
     printOrder(item) {
-      let that = this;
+      const that = this
+      const doPrint = () => {
+        uni.showLoading({ title: '打印中...' })
+        cloudPrintOrder({ id: item.id }).then(res => {
+          uni.hideLoading()
+          if (res.code == 1) {
+            if (res.data.hasNoPrint == 1) {
+              that.$util.confirmModal({ content: '请先设置打印机' }, () => {
+                that.$util.pageTo({ url: '/admin/shop/print' })
+              })
+            } else {
+              that.bumpItemCount(item, 'printNum')
+            }
+          }
+        })
+      }
       if (item.printNum && Number(item.printNum) > 0) {
-        this.$util.confirmModal({ content: '请检查是否发过货,确认补打?' }, () => {
-          that.$emit('printOrder', item);
-        });
+        this.$util.confirmModal({ content: '请检查是否发过货,确认补打?' }, doPrint)
       } else {
-        that.$emit('printOrder', item);
+        doPrint()
       }
     },
     printWlFlag(item) {
@@ -346,12 +364,12 @@ export default {
         printWlLabel({ id: item.id }).then(res => {
           if (res.code == 1) {
             that.$msg(res.msg)
-            that.$set(item, 'printWlNum', (Number(item.printWlNum) || 0) + 1)
+            that.bumpItemCount(item, 'printWlNum')
           }
         })
       }
       if (item.printWlNum && Number(item.printWlNum) > 0) {
-        this.$util.confirmModal({ content: '确认补打物流标?' }, doPrint)
+        this.$util.confirmModal({ content: '确认是否补打物流标?' }, doPrint)
       } else {
         doPrint()
       }

+ 6 - 17
ghsApp/src/admin/home/newOrderList.vue

@@ -19,7 +19,7 @@
     <div class="list-wrap">
       <block v-if="!$util.isEmpty(list.data)">
         <div class="list" v-for="(item, index) in list.data" :key="index">
-          <OrderItem :item="item" :isScanEnv="isScanEnv" @printOrder="printOrder"></OrderItem>
+          <OrderItem :item="item" :isScanEnv="isScanEnv" @listendUpdateFiled="onUpdateItemField"></OrderItem>
         </div>
       </block>
       <block v-else>
@@ -43,7 +43,6 @@ import AppSearchModule from "@/components/module/app-search";
 import DropShopSelect from "@/components/module/shopSelect";
 import OrderItem from "./components/OrderItem";
 //import DateSelect from "@/components/module/dateSelect";
-import { cloudPrintOrder } from "@/api/order"
 export default {
   name: "order-list",
   components: {
@@ -128,21 +127,11 @@ export default {
 	  //#endif
   },
   methods: {
-    printOrder(item){
-      let that = this
-      uni.showLoading({title: '打印中...'});
-      cloudPrintOrder({id:item.id}).then((res) => {
-        uni.hideLoading()
-        if(res.code == 1){
-          if(res.data.hasNoPrint == 1){
-            that.$util.confirmModal({content:'请先设置打印机'},() => {
-              that.$util.pageTo({url: "/admin/shop/print"})
-            })
-          }else{
-            item.printNum++
-          }
-        }
-      })
+    onUpdateItemField({ id, key, value }) {
+      const index = this.list.data.findIndex(it => it.id === id)
+      if (index !== -1) {
+        this.$set(this.list.data[index], key, value)
+      }
     },
     setSearchType(){
       let that = this

+ 1 - 18
ghsApp/src/admin/home/order.vue

@@ -46,7 +46,6 @@
             :ref="`orderRef${item.id}`"
             :item="item"
             :isScanEnv="isScanEnv"
-            @printOrder="printOrder"
             @directFh="directFh"
             @fillNoFh="fillNoFh"
             @shareOrder="shareOrder"
@@ -181,7 +180,7 @@ import AppWrapperEmpty from '@/components/app-wrapper-empty';
 import ModalModule from '@/components/plugin/modal';
 import { list } from '@/mixins';
 import { mapGetters } from 'vuex';
-import { getListB, cloudPrintOrder, orderFh } from '@/api/order';
+import { getListB, orderFh } from '@/api/order';
 import AppSearchModule from '@/components/module/app-search';
 import DropShopSelect from '@/components/module/shopSelect';
 import OrderItem from './components/OrderItem';
@@ -499,22 +498,6 @@ export default {
       this.resetList();
       this.getOrderList();
     },
-    printOrder(item) {
-      let that = this;
-      uni.showLoading({ title: '打印中...' });
-      cloudPrintOrder({ id: item.id }).then((res) => {
-        uni.hideLoading();
-        if (res.code == 1) {
-          if (res.data.hasNoPrint == 1) {
-            that.$util.confirmModal({ content: '请先设置打印机' }, () => {
-              that.$util.pageTo({ url: '/admin/shop/print' });
-            });
-          } else {
-            item.printNum++;
-          }
-        }
-      });
-    },
     selectDateFn(val) {
       this.searchTime = val.searchTime;
       this.startTime = val.startTime;

+ 3 - 19
ghsApp/src/admin/order/customOrder.vue

@@ -4,10 +4,10 @@
       <block v-if="!$util.isEmpty(list.data)">
         <div class="list" v-for="(item, index) in list.data" :key="index">
           <div v-if="!$util.isEmpty(item.orderInfo)">
-            <OrderItem :item="item.orderInfo" @printOrder="printOrder"></OrderItem>
+            <OrderItem :item="item.orderInfo" @listendUpdateFiled="onUpdateItemField"></OrderItem>
           </div>
           <div v-else>
-            <OrderItem :ref="`orderRef${item.id}`" :item="item" @printOrder="printOrder" @directFh="directFh" @fillNoFh="fillNoFh" :moreOrderRemind="false"></OrderItem>
+            <OrderItem :ref="`orderRef${item.id}`" :item="item" @listendUpdateFiled="onUpdateItemField" @directFh="directFh" @fillNoFh="fillNoFh" :moreOrderRemind="false"></OrderItem>
           </div>
         </div>
       </block>
@@ -51,7 +51,7 @@ import { list } from "@/mixins";
 import { mapGetters } from "vuex";
 import orderMixin from "@/mixins/order";
 import OrderItem from "../home/components/OrderItem"
-import { getListB,cloudPrintOrder,mergePrintFn,allFhAction,orderFh} from "@/api/order";
+import { getListB,mergePrintFn,allFhAction,orderFh} from "@/api/order";
 export default {
   name: "customOrder",
   components: {
@@ -182,22 +182,6 @@ export default {
         })
       })
     },
-    printOrder(item){
-      let that = this
-      uni.showLoading({title: '打印中...'});
-      cloudPrintOrder({id:item.id}).then((res) => {
-        uni.hideLoading()
-        if(res.code == 1){
-          if(res.data.hasNoPrint == 1){
-            that.$util.confirmModal({content:'请先设置打印机'},() => {
-              that.$util.pageTo({url: "/admin/shop/print"})
-            })
-          }else{
-            item.printNum++
-          }
-        }
-      })
-    },
     getOrderList() {
         return getListB({ page: this.list.page,customId:this.option.customId }).then((res) => {
           this.completes(res)

+ 3 - 19
ghsApp/src/admin/order/mergeOrder.vue

@@ -4,10 +4,10 @@
       <block v-if="!$util.isEmpty(list.data)">
         <div class="list" v-for="(item, index) in list.data" :key="index">
           <div v-if="!$util.isEmpty(item.orderInfo)">
-            <OrderItem share-btn-type="single" :item="item.orderInfo" @printOrder="printOrder" @shareOrder="shareSingleOrder"></OrderItem>
+            <OrderItem share-btn-type="single" :item="item.orderInfo" @listendUpdateFiled="onUpdateItemField" @shareOrder="shareSingleOrder"></OrderItem>
           </div>
           <div v-else>
-            <OrderItem share-btn-type="single" :ref="`orderRef${item.id}`" :item="item" @printOrder="printOrder" @directFh="directFh" @fillNoFh="fillNoFh" @shareOrder="shareSingleOrder" :moreOrderRemind="false"></OrderItem>
+            <OrderItem share-btn-type="single" :ref="`orderRef${item.id}`" :item="item" @listendUpdateFiled="onUpdateItemField" @directFh="directFh" @fillNoFh="fillNoFh" @shareOrder="shareSingleOrder" :moreOrderRemind="false"></OrderItem>
           </div>
         </div>
       </block>
@@ -57,7 +57,7 @@ import { list } from "@/mixins";
 import { mapGetters } from "vuex";
 import orderMixin from "@/mixins/order";
 import OrderItem from "../home/components/OrderItem"
-import { getMergeOrderList,cloudPrintOrder,mergePrintFn,allFhAction,orderFh} from "@/api/order";
+import { getMergeOrderList,mergePrintFn,allFhAction,orderFh} from "@/api/order";
 import {
   buildMergeShareTitle,
   buildSingleSharePayload,
@@ -291,22 +291,6 @@ export default {
         })
       })
     },
-    printOrder(item){
-      let that = this
-      uni.showLoading({title: '打印中...'});
-      cloudPrintOrder({id:item.id}).then((res) => {
-        uni.hideLoading()
-        if(res.code == 1){
-          if(res.data.hasNoPrint == 1){
-            that.$util.confirmModal({content:'请先设置打印机'},() => {
-              that.$util.pageTo({url: "/admin/shop/print"})
-            })
-          }else{
-            item.printNum++
-          }
-        }
-      })
-    },
     getOrderList() {
         let mergeId = this.option.mergeId?this.option.mergeId:0
         return getMergeOrderList({ mergeId:mergeId }).then((res) => {

+ 3 - 19
ghsApp/src/admin/order/productOrder.vue

@@ -4,10 +4,10 @@
       <block v-if="!$util.isEmpty(list.data)">
         <div class="list" v-for="(item, index) in list.data" :key="index">
           <div v-if="!$util.isEmpty(item.orderInfo)">
-            <OrderItem :item="item.orderInfo" @printOrder="printOrder"></OrderItem>
+            <OrderItem :item="item.orderInfo" @listendUpdateFiled="onUpdateItemField"></OrderItem>
           </div>
           <div v-else>
-            <OrderItem :ref="`orderRef${item.id}`" :item="item" @printOrder="printOrder" @directFh="directFh" @fillNoFh="fillNoFh" :moreOrderRemind="false"></OrderItem>
+            <OrderItem :ref="`orderRef${item.id}`" :item="item" @listendUpdateFiled="onUpdateItemField" @directFh="directFh" @fillNoFh="fillNoFh" :moreOrderRemind="false"></OrderItem>
           </div>
         </div>
       </block>
@@ -52,7 +52,7 @@ import { mapGetters } from "vuex";
 import { getOrderInfoList } from "@/api/order-item";
 import orderMixin from "@/mixins/order";
 import OrderItem from "../home/components/OrderItem"
-import { getListB,cloudPrintOrder,mergePrintFn,allFhAction,orderFh} from "@/api/order";
+import { getListB,mergePrintFn,allFhAction,orderFh} from "@/api/order";
 export default {
   name: "productOrder",
   components: {
@@ -183,22 +183,6 @@ export default {
         })
       })
     },
-    printOrder(item){
-      let that = this
-      uni.showLoading({title: '打印中...'});
-      cloudPrintOrder({id:item.id}).then((res) => {
-        uni.hideLoading()
-        if(res.code == 1){
-          if(res.data.hasNoPrint == 1){
-            that.$util.confirmModal({content:'请先设置打印机'},() => {
-              that.$util.pageTo({url: "/admin/shop/print"})
-            })
-          }else{
-            item.printNum++
-          }
-        }
-      })
-    },
     getOrderList() {
         return getOrderInfoList({ productId:this.option.productId, page: this.list.page }).then((res) => {
           this.completes(res)

+ 12 - 0
ghsApp/src/mixins/order.js

@@ -11,6 +11,18 @@ export default {
 	watch:{
 	},
     methods: {
+    onUpdateItemField({ id, key, value }) {
+      if (!this.list || !this.list.data) {
+        return
+      }
+      this.list.data.forEach((row, index) => {
+        if (row.id === id) {
+          this.$set(this.list.data[index], key, value)
+        } else if (row.orderInfo && row.orderInfo.id === id) {
+          this.$set(this.list.data[index].orderInfo, key, value)
+        }
+      })
+    },
     toConfrim(params,title){
         let that = this
         that.$util.confirmModal({title: '订单完成',content:title},() => {

+ 10 - 3
ghsApp/src/pagesOrder/detail.vue

@@ -1369,12 +1369,12 @@ export default {
 				printWlLabel({ id: this.option.id }).then(res => {
 					if (res.code == 1) {
 						that.$msg(res.msg)
-						that.detailInfo.printWlNum = (Number(that.detailInfo.printWlNum) || 0) + 1
+						that.$set(that.detailInfo, 'printWlNum', (Number(that.detailInfo.printWlNum) || 0) + 1)
 					}
 				})
 			}
 			if (this.detailInfo.printWlNum && Number(this.detailInfo.printWlNum) > 0) {
-				this.$util.confirmModal({ content: '确认补打物流标?' }, doPrint)
+				this.$util.confirmModal({ content: '确认是否补打物流标?' }, doPrint)
 			} else {
 				doPrint()
 			}
@@ -1523,16 +1523,23 @@ export default {
 			}
 		},
 		beginPrintNoPrice(item){
+			const that = this
 			uni.showLoading({title:"打印中..."})
 			cloudPrintOrder({id:item.id,showPrice:0}).then((res) => {
 				uni.hideLoading()
+				if (res.code == 1 && !(res.data && res.data.hasNoPrint == 1)) {
+					that.$set(that.detailInfo, 'printNum', (Number(that.detailInfo.printNum) || 0) + 1)
+				}
 			})
 		},
 		printHasPrice(item){
+			const that = this
 			uni.showLoading({title:"打印中..."})
 			cloudPrintOrder({id:item.id}).then((res) => {
-				item.printNum++
 				uni.hideLoading()
+				if (res.code == 1 && !(res.data && res.data.hasNoPrint == 1)) {
+					that.$set(that.detailInfo, 'printNum', (Number(that.detailInfo.printNum) || 0) + 1)
+				}
 			})
 		},
 		clickBtn(s, item) {