快乐的昕的电脑
2025-10-13 749b366b2af987479d3e13a3dd1a478781211bb7
components/mold.vue
@@ -104,9 +104,11 @@
   export default {
      data() {
         return {
                pageIndex: 1,
                pageSize: 20,
                total: 0,
            machineNo: '',//机台编码
                workOrderNo: '',//工单号
            pageIndex: 1,
            pageSize: 18,
            total: 0,
            toolList: [],
            selectedToolNo: '',
            toolName: '',
@@ -121,50 +123,50 @@
            ]
         };
      },
        computed: {
            totalPages() {
                return Math.ceil(this.total / this.pageSize) || 1;
            }
        },
      computed: {
         totalPages() {
            return Math.ceil(this.total / this.pageSize) || 1;
         }
      },
      methods: {
            async fetchTools(searchKey) {
                const res = await this.$post({
                    url: '/MesCutterLedger/QueryTools',
                    data: JSON.stringify({
                        searchKey,
                        pageIndex: this.pageIndex,
                        pageSize: this.pageSize
                    }),
                    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
                    }));
                    this.total = res.data.total || 0; // 假设后端返回总数
                } else {
                    this.$showMessage(res.message || '查询失败');
                }
         async fetchTools(searchKey) {
            const res = await this.$post({
               url: '/MesCutterLedger/QueryTools',
               data: JSON.stringify({
                  searchKey,
                  pageIndex: this.pageIndex,
                  pageSize: this.pageSize
               }),
               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
               }));
               this.total = res.data.total || 0; // 假设后端返回总数
            } else {
               this.$showMessage(res.message || '查询失败');
            }
         },
         //翻页
            async prevPage() {
                if (this.pageIndex > 1) {
                    this.pageIndex--;
                    await this.fetchTools(this.searchKey);
                }
            },
            async nextPage() {
                if (this.pageIndex < this.totalPages) {
                    this.pageIndex++;
                    await this.fetchTools(this.searchKey);
                }
            },
            async searchTool() {
                this.pageIndex = 1; // 搜索时重置到第一页
                await this.fetchTools(this.searchKey);
            },
         async prevPage() {
            if (this.pageIndex > 1) {
               this.pageIndex--;
               await this.fetchTools(this.searchKey);
            }
         },
         async nextPage() {
            if (this.pageIndex < this.totalPages) {
               this.pageIndex++;
               await this.fetchTools(this.searchKey);
            }
         },
         async searchTool() {
            this.pageIndex = 1; // 搜索时重置到第一页
            await this.fetchTools(this.searchKey);
         },
         selectTool(tool) {
            this.selectedToolNo = tool.no;
            this.toolName = tool.name;
@@ -173,28 +175,114 @@
         confirmTool() {
            this.showToolDialog = false;
         },
         handleUpTool() {
            // 上刀提交逻辑,调用后端接口
            this.$showMessage('上刀提交成功(示例)');
         },
         handleDownTool() {
            // 下刀提交逻辑,调用后端接口
            this.$showMessage('下刀提交成功(示例)');
         },
         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;
            }
                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;
            }
                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 = '';
         },
         setUseLimit() {
            // 保存使用上限逻辑,实际应调用后端接口
            this.$showMessage('使用上限已保存(示例)');
         }
            async fetchFormData() {
                const payload = {
                    workOrderNo: this.workOrderNo && this.workOrderNo.trim() !== '' ? this.workOrderNo : null,
                    machineNo: this.machineNo && this.machineNo.trim() !== '' ? this.machineNo : null,
                };
                const res = await this.$post({
                    url: '/api/MesCutterLedger/GetFormData', // 加上 /api 前缀
                    data: JSON.stringify(payload),
                    headers: { 'Content-Type': 'application/json' }
                });
                if (res.status === 0) {
                    this.toolRecords = res.data;
                } else {
                    this.$showMessage(res.message || '获取表单数据失败');
                }
            }
      },
      mounted() {
         // 页面加载时拉取全部刀具
         this.fetchTools('');
      }
        mounted() {
            this.fetchTools('');
            this.machineNo = uni.getStorageSync('machineNo') || '';
            this.workOrderNo = uni.getStorageSync('daa001') || '';
            if (this.machineNo && this.workOrderNo) {this.fetchFormData();}
        }
   };
</script>
@@ -289,16 +377,20 @@
      display: flex;
      flex-wrap: wrap;
      margin: 1vh 0;
      max-height: 40vh;
      overflow-y: auto;
   }
   .tool-btn {
      margin: 5px 10px 5px 0;
      padding: 8px 16px;
      background: #f5f5f5;
      border: 1px solid #ccc;
      border-radius: 4px;
      cursor: pointer;
   }
    .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;