Browse Source

Merge branch 'master' into dev

shish 2 tháng trước cách đây
mục cha
commit
32f078dff5

+ 87 - 33
ghsApp/src/admin/home/components/OrderItem.vue

@@ -96,50 +96,64 @@
       <view class="list-bottom">
         <view class="list-button">
           <!-- #ifdef MP-WEIXIN -->
-          <view>
+          <view class="list-button-item">
             <button
               open-type="share"
               :data-order-id="item.id"
               :data-share-type="shareBtnType"
               @click.stop="shareOrder(item)"
-              class="admin-button-com bule"
-            >分享</button>
+              class="action-icon-btn share-icon-btn"
+            >
+              <image class="action-icon-btn__icon" :src="iconSrc('share_button')" mode="aspectFit" />
+            </button>
           </view>
           <!-- #endif -->
           <!-- #ifdef APP-PLUS -->
-          <view><button @click.stop="shareOrder(item)" class="admin-button-com bule">分享</button></view>
+          <view class="list-button-item action-icon-btn" @click.stop="shareOrder(item)">
+            <image class="action-icon-btn__icon" :src="iconSrc('share_button')" mode="aspectFit" />
+          </view>
           <!-- #endif -->
           <!-- #ifndef MP-WEIXIN -->
           <!-- #ifndef APP-PLUS -->
-          <view><button @click.stop="shareOrder(item)" class="admin-button-com bule">分享</button></view>
+          <view class="list-button-item action-icon-btn" @click.stop="shareOrder(item)">
+            <image class="action-icon-btn__icon" :src="iconSrc('share_button')" mode="aspectFit" />
+          </view>
           <!-- #endif -->
           <!-- #endif -->
           <block v-if="currentStatus == 2">
             <block v-if="item.book == 0">
-              <view><button @click.stop="directFh(item)" class="admin-button-com bule">发货</button> </view>
+              <view class="list-button-item"><button @click.stop="directFh(item)" class="admin-button-com bule">发货</button> </view>
             </block>
             <block v-else>
-              <view><button @click.stop="confirmFh(item)" class="admin-button-com bule">发货</button> </view>
+              <view class="list-button-item"><button @click.stop="confirmFh(item)" class="admin-button-com bule">发货</button> </view>
             </block>
           </block>
           <block v-else>
-            <view><button disabled="true" class="admin-button-com bule active">发货</button> </view>
+            <view class="list-button-item"><button disabled="true" class="admin-button-com bule active">发货</button> </view>
           </block>
-          <view v-if="currentStatus == 1">
-            <button disabled="true" class="admin-button-com bule active">打印(${item.printNum})</button>
+          <view class="list-button-item" v-if="currentStatus == 1">
+            <button
+              disabled="true"
+              class="admin-button-com bule active"
+              :class="{ 'print-btn--unprinted': !isPrinted(item) }"
+            >打印({{ item.printNum || 0 }})</button>
           </view>
-          <view v-else>
-            <button @click.stop="printOrder(item)" class="admin-button-com bule">
-              打印<text>({{ item.printNum }})</text>
+          <view class="list-button-item" v-else>
+            <button
+              @click.stop="printOrder(item)"
+              class="admin-button-com bule"
+              :class="{ 'print-btn--unprinted': !isPrinted(item) }"
+            >
+              打印<text>({{ item.printNum || 0 }})</text>
             </button>
           </view>
-          <view>
+          <view class="list-button-item">
             <button @click.stop="printWlFlag(item)" class="admin-button-com bule">
-              物流<text>({{ item.printWlNum || 0 }})</text>
+              物流<text>({{ item.printWlNum || 0 }})</text>
             </button>
           </view>
-          <view class="more-icon-btn" @click.stop="openMore(item)">
-            <image class="more-icon-btn__icon" :src="iconSrc('more_button')" mode="aspectFit" />
+          <view class="list-button-item action-icon-btn" @click.stop="openMore(item)">
+            <image class="action-icon-btn__icon" :src="iconSrc('more_button')" mode="aspectFit" />
           </view>
         </view>
       </view>
@@ -265,7 +279,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 +334,14 @@ 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 })
+    },
+    isPrinted(item) {
+      return Number(item && item.printNum) > 0
+    },
     directFh(info) {
       this.$emit('directFh', info);
     },
@@ -331,13 +353,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 +381,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()
       }
@@ -494,6 +529,11 @@ export default {
     border: 1upx solid #ccc;
   }
 }
+.print-btn--unprinted {
+  color: #fff;
+  background-color: $mainColor;
+  border-color: $mainColor;
+}
 .list-top,
 .list-bottom {
   padding: 15upx 30upx;
@@ -515,25 +555,39 @@ export default {
     flex-wrap: wrap;
     justify-content: space-around;
     align-items: center;
-    .admin-button-com {
+    .list-button-item {
+      display: flex;
+      align-items: center;
+      justify-content: center;
       margin: 0 6upx 12upx 6upx;
+      flex: none;
+      min-height: 48upx;
+    }
+    .admin-button-com {
+      margin: 0;
       min-width: 90upx;
       max-width: 140upx;
       flex: none;
       box-sizing: border-box;
     }
-    .more-icon-btn {
-      margin: 0 6upx 12upx 6upx;
-      width: 65upx;
-      height: 65upx;
+    .action-icon-btn {
+      width: 52upx;
+      height: 52upx;
+      padding: 0;
+      line-height: 1;
       display: flex;
       align-items: center;
       justify-content: center;
       flex: none;
+      background: transparent;
+      border: none;
+      &::after {
+        border: none;
+      }
     }
-    .more-icon-btn__icon {
-      width: 63upx;
-      height: 63upx;
+    .action-icon-btn__icon {
+      width: 52upx;
+      height: 52upx;
     }
   }
 }

+ 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

+ 85 - 20
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"
@@ -84,6 +83,21 @@
     <view v-if="showFilterPanel" class="filter-overlay" @click="closeFilterPanel">
       <view class="filter-panel" @click.stop>
         <view class="filter-header">筛选订单</view>
+        <scroll-view class="filter-body" scroll-y>
+        <view class="filter-section">
+          <view class="filter-title">挂账</view>
+          <view class="filter-options">
+            <view
+              v-for="(item, index) in debtOptions"
+              :key="index"
+              class="filter-option"
+              :class="{ active: filterDebt === item.value }"
+              @click="onSelectDebt(index)"
+            >
+              {{ item.label }}
+            </view>
+          </view>
+        </view>
         <view class="filter-section">
           <view class="filter-title">在线支付</view>
           <view class="filter-options">
@@ -112,6 +126,21 @@
             </view>
           </view>
         </view>
+        <view class="filter-section">
+          <view class="filter-title">片区</view>
+          <view class="filter-options">
+            <view class="filter-option" :class="{ active: filterDistId === 0 }" @click="onSelectDist(0)">全部</view>
+            <view
+              v-for="(item, index) in distList"
+              :key="index"
+              class="filter-option"
+              :class="{ active: filterDistId === item.id }"
+              @click="onSelectDist(item.id)"
+            >
+              {{ item.name }}
+            </view>
+          </view>
+        </view>
         <view class="filter-section">
           <view class="filter-title">开单员工</view>
           <view class="filter-options">
@@ -147,6 +176,7 @@
             </view>
           </view>
         </view>
+        </scroll-view>
         <view class="filter-actions">
           <button class="filter-action-btn clear-btn" @click="clearFilters">重置</button>
           <button class="filter-action-btn confirm-btn" @click="confirmFilters">确定</button>
@@ -181,7 +211,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';
@@ -196,6 +226,7 @@ import {
 } from '@/utils/orderShare';
 import { getList } from '@/api/member';
 import { getStaffList } from '@/api/staff';
+import { getAllDist } from '@/api/dist';
 export default {
   name: 'order',
   components: {
@@ -213,7 +244,14 @@ export default {
     ...mapGetters(['getLoginInfo', 'getDictionariesInfo']),
     ...mapGetters({ dictInfo: 'getDictionariesInfo' }),
     hasActiveFilters() {
-      return this.filterOnlinePay !== -1 || this.filterBook !== -1 || this.filterShopAdminId !== 0 || this.filterSendType !== -1;
+      return (
+        this.filterDistId !== 0 ||
+        this.filterDebt !== -1 ||
+        this.filterOnlinePay !== -1 ||
+        this.filterBook !== -1 ||
+        this.filterShopAdminId !== 0 ||
+        this.filterSendType !== -1
+      );
     }
   },
   data() {
@@ -279,11 +317,19 @@ export default {
       pendingSharePayload: null,
       singleShareOrderId: 0,
       showFilterPanel: false,
+      distList: [],
       staffList: [],
+      filterDistId: 0,
+      filterDebt: -1,
       filterShopAdminId: 0,
       filterBook: -1,
       filterOnlinePay: -1,
       filterSendType: -1,
+      debtOptions: [
+        { label: '全部', value: -1 },
+        { label: '挂账', value: 1 },
+        { label: '非挂账', value: 0 }
+      ],
       onlinePayOptions: [
         { label: '全部', value: -1 },
         { label: '在线支付', value: 2 },
@@ -439,9 +485,17 @@ export default {
       });
     },
     init() {
+      this.loadDistList();
       this.loadStaffList();
       this.getOrderList();
     },
+    loadDistList() {
+      getAllDist().then((res) => {
+        if (res.code == 1) {
+          this.distList = res.data.list || [];
+        }
+      });
+    },
     loadStaffList() {
       getStaffList().then((res) => {
         if (res.code == 1) {
@@ -455,6 +509,15 @@ export default {
     closeFilterPanel() {
       this.showFilterPanel = false;
     },
+    onSelectDist(id) {
+      this.filterDistId = id;
+    },
+    onSelectDebt(index) {
+      const item = this.debtOptions[index];
+      if (item) {
+        this.filterDebt = item.value;
+      }
+    },
     onSelectOnlinePay(index) {
       const item = this.onlinePayOptions[index];
       if (item) {
@@ -477,6 +540,8 @@ export default {
       }
     },
     clearFilters() {
+      this.filterDistId = 0;
+      this.filterDebt = -1;
       this.filterOnlinePay = -1;
       this.filterBook = -1;
       this.filterShopAdminId = 0;
@@ -499,22 +564,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;
@@ -548,6 +597,8 @@ export default {
       this.searchTime = '';
       this.startTime = '';
       this.endTime = '';
+      this.filterDistId = 0;
+      this.filterDebt = -1;
       this.filterOnlinePay = -1;
       this.filterBook = -1;
       this.filterShopAdminId = 0;
@@ -580,6 +631,8 @@ export default {
         page: this.list.page,
         searchType: this.searchType,
         customId: this.customId,
+        customDistId: this.filterDistId,
+        debt: this.filterDebt,
         shopAdminId: this.filterShopAdminId,
         book: this.filterBook,
         onlinePay: this.filterOnlinePay,
@@ -731,12 +784,19 @@ page {
   background-color: rgba(0, 0, 0, 0.5);
 }
 .filter-panel {
+  display: flex;
+  flex-direction: column;
   width: 100%;
   max-height: 90vh;
-  overflow-y: auto;
+  overflow: hidden;
   border-radius: 0 0 24upx 24upx;
   background: #fff;
 }
+.filter-body {
+  flex: 1;
+  max-height: calc(90vh - 200upx);
+  overflow: hidden;
+}
 .filter-header {
   padding: 24upx 0;
   text-align: center;
@@ -778,8 +838,13 @@ page {
   font-weight: 700;
 }
 .filter-actions {
+  flex-shrink: 0;
   display: flex;
   padding: 30upx 40upx 40upx;
+  padding-bottom: calc(40upx + constant(safe-area-inset-bottom));
+  padding-bottom: calc(40upx + env(safe-area-inset-bottom));
+  border-top: 1upx solid #f0f0f0;
+  background: #fff;
 }
 .filter-action-btn {
   flex: 1;

+ 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},() => {

+ 11 - 4
ghsApp/src/pagesOrder/detail.vue

@@ -60,7 +60,7 @@
 				<view class="flex" style="color: #3385ff;font-weight: 400">
 					<view @click.stop="openAgain()" style="margin-left:0upx;">继续开单</view>
 					<view @click.stop="allotFn()" style="margin-left:50upx;">分配</view>
-					<view @click.stop="printWlFlag()" style="margin-left:50upx;">打印物流标</view>
+					<view @click.stop="printWlFlag()" style="margin-left:50upx;">打印物流标({{ detailInfo.printWlNum || 0 }})</view>
 				</view>
 			</view>
 			<view class="bills-info_box content-box">
@@ -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) {

+ 1 - 0
ghsApp/src/static/icons/share_button.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1780202772296" class="icon" viewBox="0 0 1078 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2083" xmlns:xlink="http://www.w3.org/1999/xlink" width="33.6875" height="32"><path d="M533.800421 432.828632c84.399158-121.882947 222.208-205.446737 409.788632-248.643368l-205.150316-111.885474C725.396211 65.212632 720.572632 48.936421 727.578947 35.893895l6.440421-11.991579c7.087158-13.177263 23.525053-18.054737 36.648421-10.913684l256.916211 140.099368c27.270737 14.874947 36.352 49.664 19.860211 75.964632l-148.965053 237.352421c-7.949474 12.665263-24.710737 16.437895-37.322105 8.380632l-11.264-7.194947c-12.476632-7.949474-16.195368-24.495158-8.326737-37.052632l112.586105-179.442526c-168.205474 39.477895-290.896842 113.367579-364.894316 219.782737-52.547368 75.560421-71.141053 157.157053-77.500632 212.345263-3.880421 33.684211-3.206737 67.018105-1.913263 89.519158 0.889263 15.252211-11.290947 28.106105-26.570105 28.294737l-13.581474 0.161684c-14.362947 0.188632-26.273684-10.805895-27.243789-25.141895C438.460632 717.716211 439.592421 568.805053 533.800421 432.828632zM404.210526 161.684211 107.789474 161.684211c-59.526737 0-107.789474 48.262737-107.789474 107.789474l0 646.736842c0 59.526737 48.262737 107.789474 107.789474 107.789474l808.421053 0c59.526737 0 107.789474-48.262737 107.789474-107.789474L1024 565.894737c0-14.874947-12.072421-26.947368-26.947368-26.947368l0 0c-14.874947 0-26.947368 12.072421-26.947368 26.947368l0 350.315789c0 29.776842-24.117895 53.894737-53.894737 53.894737L107.789474 970.105263c-29.776842 0-53.894737-24.117895-53.894737-53.894737L53.894737 269.473684c0-29.776842 24.117895-53.894737 53.894737-53.894737l296.421053 0c14.874947 0 26.947368-12.072421 26.947368-26.947368l0 0C431.157895 173.756632 419.085474 161.684211 404.210526 161.684211z" p-id="2084" fill="#3385FF"></path></svg>