快乐的昕的电脑
2025-10-13 729310a090413ae277f680457e4239e66a95cf5d
components/mold.vue
@@ -105,7 +105,7 @@
      data() {
         return {
            machineNo: '',//机台编码
                workOrderNo: '',//工单号
            workOrderNo: '',//工单号
            pageIndex: 1,
            pageSize: 18,
            total: 0,
@@ -136,13 +136,28 @@
               }),
               headers: { 'Content-Type': 'application/json' }
            });
            if (res.status === 0) {
               this.filteredTools = res.data.tbBillList.map(t => ({
                  no: t.cutterId || t.no,
                  name: t.cutterName || t.name,
                  model: t.cutterModel || t.model
               // 兼容不同返回结构:直接数组 / { tbBillList, total } / { data: [...] }
               const payload = Array.isArray(res.data) ? res.data
                  : (res.data && res.data.tbBillList) ? res.data.tbBillList
                     : (res.data && res.data.data) ? res.data.data
                        : [];
               const getField = (obj, ...keys) => {
                  for (const k of keys) if (obj?.[k] !== undefined && obj?.[k] !== null) return obj[k];
                  return null;
               };
               this.filteredTools = (payload || []).map(t => ({
                  no: getField(t, 'cutterId', 'CUTTER_ID', 'cutteR_ID', 'daA001', 'no'),
                  name: getField(t, 'cutterName', 'CUTTER_NAME', 'cutteR_NAME', 'name'),
                  model: getField(t, 'cutterModel', 'CUTTER_MODEL', 'cutteR_MODEL', 'model')
               }));
               this.total = res.data.total || 0; // 假设后端返回总数
               // 总数兼容多个字段名
               this.total = (res.data && (res.data.total ?? res.totalCount ?? res.total))
                  || payload.length || 0;
            } else {
               this.$showMessage(res.message || '查询失败');
            }
@@ -173,144 +188,144 @@
            this.showToolDialog = false;
         },
         async handleUpTool() {
                if (!this.workOrderNo) {
                    this.$showMessage('工单号不能为空');
                    return;
                }
                if (!this.machineNo) {
                    this.$showMessage('机台号不能为空');
                    return;
                }
                if (!this.selectedToolNo) {
                    this.$showMessage('刀具编号不能为空');
                    return;
                }
                if (!this.useLimitInput) {
                    this.$showMessage('使用上限不能为空');
                    return;
            if (!this.workOrderNo) {
               this.$showMessage('工单号不能为空');
               return;
            }
                const useLimit = Number(this.useLimitInput);
                if (isNaN(useLimit) || useLimit <= 0) {
                    this.$showMessage('请输入有效的使用上限');
                    return;
                }
                const payload = {
                    workOrderNo: this.workOrderNo,   // 工单号
                    machineNo: this.machineNo,       // 机台编号
                    toolNo: this.selectedToolNo,     // 刀具编号
                    type: '上刀',                         // 上刀
                    useLimit: this.useLimitInput ? Number(this.useLimitInput) : null // 使用上限
                };
                const res = await this.$post({
                    url: '/MesCutterLedger/SubmitToolAction',
                    data: JSON.stringify(payload),
                    headers: { 'Content-Type': 'application/json' }
                });
                if (res.status === 0) {
                    this.$showMessage('上刀提交成功');
                } else {
                    this.$showMessage(res.message || '上刀提交失败');
                }
            },
            if (!this.machineNo) {
               this.$showMessage('机台号不能为空');
               return;
            }
            if (!this.selectedToolNo) {
               this.$showMessage('刀具编号不能为空');
               return;
            }
            if (!this.useLimitInput) {
               this.$showMessage('使用上限不能为空');
               return;
            }
            const useLimit = Number(this.useLimitInput);
            if (isNaN(useLimit) || useLimit <= 0) {
               this.$showMessage('请输入有效的使用上限');
               return;
            }
            const payload = {
               workOrderNo: this.workOrderNo,   // 工单号
               machineNo: this.machineNo,       // 机台编号
               toolNo: this.selectedToolNo,     // 刀具编号
               type: '上刀',                         // 上刀
               useLimit: this.useLimitInput ? Number(this.useLimitInput) : null // 使用上限
            };
            const res = await this.$post({
               url: '/MesCutterLedger/SubmitToolAction',
               data: JSON.stringify(payload),
               headers: { 'Content-Type': 'application/json' }
            });
            if (res.status === 0) {
               this.$showMessage('上刀提交成功');
            } else {
               this.$showMessage(res.message || '上刀提交失败');
            }
         },
         async handleDownTool() {
                if (!this.workOrderNo) {
                    this.$showMessage('工单号不能为空');
                    return;
                }
                if (!this.machineNo) {
                    this.$showMessage('机台号不能为空');
                    return;
                }
                if (!this.selectedToolNo) {
                    this.$showMessage('刀具编号不能为空');
                    return;
                }
                if (!this.useLimitInput) {
                    this.$showMessage('使用上限不能为空');
                    return;
            if (!this.workOrderNo) {
               this.$showMessage('工单号不能为空');
               return;
            }
                const useLimit = Number(this.useLimitInput);
                if (isNaN(useLimit) || useLimit <= 0) {
                    this.$showMessage('请输入有效的使用上限');
                    return;
                }
                const payload = {
                    workOrderNo: this.workOrderNo,
                    machineNo: this.machineNo,
                    toolNo: this.selectedToolNo,
                    type: '下刀', // 下刀
                    useLimit: this.useLimitInput ? Number(this.useLimitInput) : null
                };
                const res = await this.$post({
                    url: '/MesCutterLedger/SubmitToolAction',
                    data: JSON.stringify(payload),
                    headers: { 'Content-Type': 'application/json' }
                });
                if (res.status === 0) {
                    this.$showMessage('下刀提交成功');
                } else {
                    this.$showMessage(res.message || '下刀提交失败');
                }
            },
            if (!this.machineNo) {
               this.$showMessage('机台号不能为空');
               return;
            }
            if (!this.selectedToolNo) {
               this.$showMessage('刀具编号不能为空');
               return;
            }
            if (!this.useLimitInput) {
               this.$showMessage('使用上限不能为空');
               return;
            }
            const useLimit = Number(this.useLimitInput);
            if (isNaN(useLimit) || useLimit <= 0) {
               this.$showMessage('请输入有效的使用上限');
               return;
            }
            const payload = {
               workOrderNo: this.workOrderNo,
               machineNo: this.machineNo,
               toolNo: this.selectedToolNo,
               type: '下刀', // 下刀
               useLimit: this.useLimitInput ? Number(this.useLimitInput) : null
            };
            const res = await this.$post({
               url: '/MesCutterLedger/SubmitToolAction',
               data: JSON.stringify(payload),
               headers: { 'Content-Type': 'application/json' }
            });
            if (res.status === 0) {
               this.$showMessage('下刀提交成功');
            } else {
               this.$showMessage(res.message || '下刀提交失败');
            }
         },
         cancel() {
            this.selectedToolNo = '';
            this.toolName = '';
            this.toolModel = '';
         },
            async fetchFormData() {
                if (!this.workOrderNo || !this.machineNo) {
                    console.warn('工单号或机台号为空,跳过获取表单数据');
                    return;
                }
         async fetchFormData() {
            if (!this.workOrderNo || !this.machineNo) {
               console.warn('工单号或机台号为空,跳过获取表单数据');
               return;
            }
                const payload = {
                    workOrderNo: this.workOrderNo.trim(),
                    machineNo: this.machineNo.trim()
                };
            const payload = {
               workOrderNo: this.workOrderNo.trim(),
               machineNo: this.machineNo.trim()
            };
                try {
                    console.log('请求参数:', payload); // 添加调试日志
            try {
               console.log('请求参数:', payload); // 添加调试日志
                    const res = await this.$post({
                        url: '/MesCutterLedger/GetFormData',
                        data: JSON.stringify(payload),
                        headers: { 'Content-Type': 'application/json' }
                    });
               const res = await this.$post({
                  url: '/MesCutterLedger/GetFormData',
                  data: JSON.stringify(payload),
                  headers: { 'Content-Type': 'application/json' }
               });
                    if (res.status === 0) {
                        console.log('获取数据成功:', res.data);
                        // ... 处理数据
                    } else {
                        this.$showMessage(res.message || '获取表单数据失败');
                    }
                } catch (error) {
                    console.error('获取表单数据错误:', error);
                    this.$showMessage('获取数据失败,请检查网络连接');
                }
            }
            //// 添加辅助方法
            //formatDateTime(dateTimeStr) {
            //    if (!dateTimeStr) return '';
            //    // 根据后端返回的时间格式进行调整
            //    const date = new Date(dateTimeStr);
            //    return `${date.getMonth() + 1}-${date.getDate()} ${date.getHours()}:${date.getMinutes().toString().padStart(2, '0')}`;
            //}
               if (res.status === 0) {
                  console.log('获取数据成功:', res.data);
                  // ... 处理数据
               } else {
                  this.$showMessage(res.message || '获取表单数据失败');
               }
            } catch (error) {
               console.error('获取表单数据错误:', error);
               this.$showMessage('获取数据失败,请检查网络连接');
            }
         }
         //// 添加辅助方法
         //formatDateTime(dateTimeStr) {
         //    if (!dateTimeStr) return '';
         //    // 根据后端返回的时间格式进行调整
         //    const date = new Date(dateTimeStr);
         //    return `${date.getMonth() + 1}-${date.getDate()} ${date.getHours()}:${date.getMinutes().toString().padStart(2, '0')}`;
         //}
      },
        mounted() {
            this.fetchTools('');
            this.machineNo = uni.getStorageSync('machineNo') || '';
            this.workOrderNo = uni.getStorageSync('daa001') || '';
      mounted() {
         this.fetchTools('');
         this.machineNo = uni.getStorageSync('machineNo') || '';
         this.workOrderNo = uni.getStorageSync('daa001') || '';
            // 添加调试信息
            console.log('机台号:', this.machineNo);
            console.log('工单号:', this.workOrderNo);
         // 添加调试信息
         console.log('机台号:', this.machineNo);
         console.log('工单号:', this.workOrderNo);
            if (this.machineNo && this.workOrderNo) {
                this.fetchFormData();
            } else {
                console.warn('机台号或工单号为空,无法获取表单数据');
            }
        }
         if (this.machineNo && this.workOrderNo) {
            this.fetchFormData();
         } else {
            console.warn('机台号或工单号为空,无法获取表单数据');
         }
      }
   };
</script>
@@ -409,16 +424,16 @@
      overflow-y: auto;
   }
    .tool-btn {
        margin: 5px 10px 5px 0;
        padding: 8px 16px;
        background: #f5f5f5;
        border: 1px solid #ccc;
        border-radius: 4px;
        cursor: pointer;
        background: #e0e0e0;
        color: #888;
    }
   .tool-btn {
      margin: 5px 10px 5px 0;
      padding: 8px 16px;
      background: #f5f5f5;
      border: 1px solid #ccc;
      border-radius: 4px;
      cursor: pointer;
      background: #e0e0e0;
      color: #888;
   }
   .dialog-actions {
      display: flex;