| | |
| | | <view class="form-cell"> |
| | | <label class="form-label">设置使用上限:</label> |
| | | <input class="input" type="number" v-model="useLimitInput" placeholder="每次换刀后手填" :disabled="!selectedToolNo" /> |
| | | <!-- 滑条控件 --> |
| | | <input type="range" |
| | | min="0" |
| | | max="10000" |
| | | step="1" |
| | | v-model="useLimitInput" |
| | | :disabled="!selectedToolNo" |
| | | class="slider" |
| | | style="width: 160px; margin: 0 8px;" /> |
| | | <span style="min-width: 50px; display: inline-block;">{{ useLimitInput }}</span> |
| | | <button class="btn-blue" @click="setUseLimit" :disabled="!selectedToolNo || !useLimitInput">保存上限</button> |
| | | </view> |
| | | <view class="form-cell"> |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | machineNo: '',//机台编码 |
| | | workOrderNo: '',//工单号 |
| | | pageIndex: 1, |
| | | pageSize: 20, |
| | | pageSize: 18, |
| | | total: 0, |
| | | toolList: [], |
| | | selectedToolNo: '', |
| | |
| | | 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 res = await this.$post({ |
| | | url: '/MesCutterLedger/GetFormData', |
| | | data: JSON.stringify({ |
| | | workOrderNo: this.workOrderNo, |
| | | machineNo: this.machineNo |
| | | }), |
| | | 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> |
| | | |
| | |
| | | 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; |
| | |
| | | |
| | | .tool-desc { |
| | | margin-top: 2vh; |
| | | } |
| | | |
| | | .slider { |
| | | vertical-align: middle; |
| | | } |
| | | </style> |