快乐的昕的电脑
2025-10-15 a3298d4e03b929a1fb9e00f3211baa577338b9c8
components/WorkOrderPrint.vue
@@ -24,7 +24,7 @@
               <tbody>
                  <tr>
                     <td>{{ nowTime }}</td>
                     <td>{{ staffNo || '-' }}</td>
                     <td>{{ staffName || '-' }}</td>
                     <td>{{ orderNo || '-' }}</td>
                     <td>{{ order.daa003 || '-' }}</td>
                     <td>{{ planQtyDisplay }}</td>
@@ -69,7 +69,6 @@
            </view>
         </view>
         <!-- 已移除: 产品编码 / 产品名称 / 产品规格 输入区域 -->
         <!-- 不良数量 -->
         <view class="print-section" style="margin-top:10px;">
            <view class="barcode-info">
@@ -85,21 +84,21 @@
         </view>
         <!-- 报工人选择 -->
         <!-- 替换原有报工人选择区域 -->
         <view class="current-user-section">
            <text>当前报工人:</text>
            <text class="current-user-name">{{ staffNo ? staffNo.split(':')[1] : '未选择' }}</text>
            <text class="current-user-name">{{ staffName || '未选择' }}</text>
            <button class="select-user-btn" @click="isShowUserSelect = true">选人</button>
         </view>
         <!-- 选人弹窗 -->
         <view v-if="isShowUserSelect" class="overlay">
            <view class="popup user-select-popup">
               <!-- 滚动区域,按钮超出时可滚动 -->
               <view class="user-list-scroll">
                  <view class="user-list-grid">
                     <button v-for="(u, index) in users" :key="index"
                     <button v-for="(u, index) in users"
                           :key="index"
                           class="user-list-btn"
                           :class="{'selected': u === staffNo}"
                           @click="selectUser(u)">
                        {{ u.split(':')[1] }}
                     </button>
@@ -182,7 +181,13 @@
         calculatedCurrentCount() { return (this.productionCount || 0) - (this.initialValue || 0); },
         calculatedTotalProduction() { return (this.kgQty || 0) + this.calculatedCurrentCount; },
         calculatedDefectiveCount() { return this.calculatedTotalProduction - (this.sQuantity || 0); },
         planQtyDisplay() { return this.order.planQty || this.order.planQuantity || this.order.daa007 || this.order.daa010 || 0; }
         planQtyDisplay() { return this.order.planQty || this.order.planQuantity || this.order.daa007 || this.order.daa010 || 0; },
         // 新增:解析姓名
         staffName() {
            if (!this.staffNo) return '';
            const parts = this.staffNo.split(':');
            return parts.length > 1 ? parts[1] : this.staffNo;
         }
      },
      created() {
         this.initializeData();
@@ -203,19 +208,16 @@
            const d = new Date(), p = n => n.toString().padStart(2, '0');
            this.nowTime = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}`;
         },
         // 初始化数据
         initializeData() {
            this.productionCount = this.printedCount = this.defectiveCount = 0;
            this.icount = 1; this.bqty = 0; this.sQuantity = 0; this.kgQty = 0;
            this.initialValue = 0; this.qqty = 0;
            this.isGeneratingBarcode = false; this.lastGenerateTime = 0; this.generateRequestId = null;
         },
         // 重置条码生成状态
         resetGenerateState() {
            this.isGeneratingBarcode = false; this.generateRequestId = null; this.lastGenerateTime = 0;
            this.$showMessage("已重置条码生成状态");
         },
         // 刷新数据
         refresh() {
            this.$sendPostRequest({
               url: "http://192.168.0.94:9095/Numerical/RefreshDev",
@@ -223,7 +225,6 @@
               contentType: "application/json"
            }).then(r => { r.code == 200 ? this.fetchData(true) : this.$showMessage("同步失败"); });
         },
         // 工单切换
         onDaa003Change(v) {
            let o = this.lineList[this.DAA003List.indexOf(v)];
            this.orderId = o.id; this.orderNo = o.daa001;
@@ -232,7 +233,6 @@
            uni.setStorageSync('orderNo', this.orderNo);
            this.fetchData(false);
         },
         // 拉取数据
         fetchData(flag) {
            if (!this.orderId && !this.orderNo) return;
            this.getOrderById();
@@ -245,13 +245,11 @@
                  });
            }
         },
         // 旧弹窗选人
         toggleUser(u) {
            if (!u) return;
            this.user = this.user === u ? null : u;
            this.staffNo = this.user;
         },
         // 提交不良数量
         confirmCustomAmount() {
            if (!this.customAmount || isNaN(Number(this.customAmount))) {
               this.$showMessage('请输入有效的数量'); return;
@@ -267,14 +265,11 @@
               this.customAmount = '';
            }).catch(() => this.$showMessage('报废数量填写失败,请重试'));
         },
         // 保存
         save() {
            if (!this.staffNo) { this.$showMessage('请选择报工人'); return; }
            uni.showToast({ title: '保存成功', icon: 'success' });
         },
         // 取消
         cancel() { uni.showToast({ title: '取消操作', icon: 'none' }); },
         // 获取工单信息
         getOrderById() {
            this.$post({ url: "/Womdaa/GetWomdaaById", data: { orderId: this.orderId, orderNo: this.orderNo } })
               .then(res => {
@@ -284,7 +279,6 @@
                  this.productionCount = this.order.todayOutput || 0;
               });
         },
         // 获取所有员工
         getXS0101() {
            this.$post({ url: "/MesStaff/GetAllXS0101" })
               .then(res => {
@@ -292,7 +286,6 @@
                  this.users = this.staff.map(s => s.staffNo + ":" + s.staffName);
               });
         },
         // 获取工单打印信息
         getWomdaaPrintById() {
            this.$post({ url: "/Womdaa/GetWomdaaPrintById", data: { orderId: this.orderId } })
               .then(res => {
@@ -307,11 +300,9 @@
                  if (this.bqty === 0) this.Completed();
               }).catch(() => { });
         },
         // 工单完成
         Completed() {
            this.$post({ url: "/MesOrderSta/Completed", data: { orderId: this.orderId, orderNo: this.orderNo } });
         },
         // 蓝牙初始化
         init() {
            try {
               const v = this.getAndroidVersion();
@@ -357,7 +348,6 @@
               }
            } catch (e) { }
         },
         // 关闭弹窗并重置
         deleteBarcode() {
            this.isShow = false;
            this.isGeneratingBarcode = false;
@@ -377,11 +367,10 @@
      box-sizing: border-box;
   }
      /* 弹窗出现时仅禁用底层普通内容,不禁用弹窗本身 */
      .page.has-overlay .status-section > :not(.overlay) {
         pointer-events: none;
      }
      /* 确保弹窗继续可交互 */
      .page.has-overlay .status-section > .overlay {
         pointer-events: auto;
      }
@@ -569,7 +558,6 @@
      border-radius: 8px;
   }
   /* 关键: 弹窗层级 */
   .overlay {
      position: fixed;
      top: 0;
@@ -594,7 +582,7 @@
      max-height: 80vh;
      overflow-y: auto;
      border-radius: 8px;
      z-index: 1001; /* 高于 overlay 背景层 */
      z-index: 1001;
   }
   .clean-btn {
@@ -642,7 +630,6 @@
      margin-left: 8px;
   }
   /* 选人弹窗整体布局,内容区滚动,底部按钮固定 */
   .user-select-popup {
      width: 480px;
      max-width: 96vw;
@@ -685,6 +672,10 @@
      box-sizing: border-box;
   }
      .user-list-btn.selected {
         background: #ff9500;
      }
   @media (max-width:1400px) {
      input.highlight {
         font-size: 14px;