| | |
| | | @pagination="pagination" |
| | | :total="page.total"></PIMTable> |
| | | </div> |
| | | |
| | | <!-- 工序生产记录列表弹框 --> |
| | | <el-dialog v-model="isShowProcessParamModal" |
| | | title="生产记录" |
| | | width="800px"> |
| | | <div style="text-align: right" |
| | | class="mb10"> |
| | | <el-button type="primary" |
| | | @click="showSelectProductParamModal">新增</el-button> |
| | | <el-button type="danger" |
| | | plain |
| | | @click="handleDeleteProcessParam" |
| | | :disabled="processParamSelectedRows.length === 0">批量删除</el-button> |
| | | </div> |
| | | <PIMTable rowKey="id" |
| | | :column="processParamColumns" |
| | | :tableData="processParamTableData" |
| | | :page="processParamPage" |
| | | :isSelection="true" |
| | | @selection-change="handleProcessParamSelectionChange" |
| | | @pagination="processParamPagination" |
| | | :total="processParamPage.total"></PIMTable> |
| | | </el-dialog> |
| | | |
| | | <!-- 选择生产记录弹框 --> |
| | | <el-dialog v-model="isShowSelectParamModal" |
| | | title="选择生产记录" |
| | | width="800px"> |
| | | <PIMTable rowKey="id" |
| | | :column="productParamColumns" |
| | | :tableData="productParamTableData" |
| | | :page="productParamPage" |
| | | :isSelection="true" |
| | | @selection-change="handleProductParamSelectionChange" |
| | | @pagination="productParamPagination" |
| | | :total="productParamPage.total"></PIMTable> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" |
| | | @click="handleAddProcessParam">确定</el-button> |
| | | <el-button @click="isShowSelectParamModal = false">取消</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | <new-process v-if="isShowNewModal" |
| | | v-model:visible="isShowNewModal" |
| | | @completed="getList" /> |
| | |
| | | importData, |
| | | downloadTemplate, |
| | | } from "@/api/productionManagement/productionProcess.js"; |
| | | import { |
| | | listPage as listProcessParamPage, |
| | | del as delProcessParam, |
| | | addProductProcessParameter, |
| | | } from "@/api/productionManagement/productProcessParameter.js"; |
| | | import { listPage as listProductParamPage } from "@/api/productionManagement/productionRecords.js"; |
| | | import { getToken } from "@/utils/auth"; |
| | | |
| | | const data = reactive({ |
| | |
| | | { |
| | | label: "工资定额", |
| | | prop: "salaryQuota", |
| | | }, |
| | | { |
| | | label: "合格率", |
| | | prop: "qualifiedRate", |
| | | }, |
| | | { |
| | | label: "是否质检", |
| | |
| | | width: 280, |
| | | operation: [ |
| | | { |
| | | name: "查看", |
| | | type: "text", |
| | | clickFun: row => { |
| | | showProcessParamModal(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "编辑", |
| | | type: "text", |
| | | clickFun: row => { |
| | |
| | | ], |
| | | }, |
| | | ]); |
| | | // 工序已绑定的生产记录列表列配置 |
| | | const processParamColumns = ref([ |
| | | { label: "参数编码", prop: "code" }, |
| | | { label: "参数项", prop: "parameterItem" }, |
| | | { |
| | | label: "参数类型", |
| | | prop: "type", |
| | | formatData: val => { |
| | | const dictList = (proxy.useDict && proxy.useDict("parameter_tyep")?.parameter_tyep) || []; |
| | | const list = dictList.value || dictList; |
| | | const hit = (list || []).find(d => d.value === val); |
| | | return hit ? hit.label : val; |
| | | }, |
| | | }, |
| | | { label: "单位", prop: "unit" }, |
| | | { label: "参数格式", prop: "parameterFormat" }, |
| | | { |
| | | label: "是否必填", |
| | | prop: "isRequired", |
| | | formatData: v => (v === "1" || v === 1 ? "是" : "否"), |
| | | }, |
| | | ]); |
| | | // 可选择的生产记录列表列配置 |
| | | const productParamColumns = ref([ |
| | | { label: "参数编码", prop: "code" }, |
| | | { label: "参数项", prop: "parameterItem" }, |
| | | { |
| | | label: "参数类型", |
| | | prop: "type", |
| | | formatData: val => { |
| | | const dictList = (proxy.useDict && proxy.useDict("parameter_tyep")?.parameter_tyep) || []; |
| | | const list = dictList.value || dictList; |
| | | const hit = (list || []).find(d => d.value === val); |
| | | return hit ? hit.label : val; |
| | | }, |
| | | }, |
| | | { label: "单位", prop: "unit" }, |
| | | { label: "参数格式", prop: "parameterFormat" }, |
| | | { |
| | | label: "是否必填", |
| | | prop: "isRequired", |
| | | formatData: v => (v === "1" || v === 1 ? "是" : "否"), |
| | | }, |
| | | ]); |
| | | const tableData = ref([]); |
| | | const selectedRows = ref([]); |
| | | const tableLoading = ref(false); |
| | | const isShowNewModal = ref(false); |
| | | const isShowEditModal = ref(false); |
| | | const isShowProcessParamModal = ref(false); |
| | | const isShowSelectParamModal = ref(false); |
| | | const record = ref({}); |
| | | const currentProcess = ref(null); |
| | | const importDialogVisible = ref(false); |
| | | const importDialogRef = ref(null); |
| | | const page = reactive({ |
| | |
| | | size: 100, |
| | | total: 0, |
| | | }); |
| | | const processParamPage = reactive({ |
| | | current: 1, |
| | | size: 100, |
| | | total: 0, |
| | | }); |
| | | const productParamPage = reactive({ |
| | | current: 1, |
| | | size: 100, |
| | | total: 0, |
| | | }); |
| | | const processParamTableData = ref([]); |
| | | const productParamTableData = ref([]); |
| | | const processParamSelectedRows = ref([]); |
| | | const productParamSelectedRows = ref([]); |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | // 导入相关配置 |
| | |
| | | page.current = obj.page; |
| | | page.size = obj.limit; |
| | | getList(); |
| | | }; |
| | | const processParamPagination = obj => { |
| | | processParamPage.current = obj.page; |
| | | processParamPage.size = obj.limit; |
| | | getProcessParamList(); |
| | | }; |
| | | const productParamPagination = obj => { |
| | | productParamPage.current = obj.page; |
| | | productParamPage.size = obj.limit; |
| | | getProductParamList(); |
| | | }; |
| | | const getList = () => { |
| | | tableLoading.value = true; |
| | |
| | | selectedRows.value = selection; |
| | | }; |
| | | |
| | | const handleProcessParamSelectionChange = selection => { |
| | | processParamSelectedRows.value = selection; |
| | | }; |
| | | |
| | | const handleProductParamSelectionChange = selection => { |
| | | productParamSelectedRows.value = selection; |
| | | }; |
| | | |
| | | // 打开新增弹框 |
| | | const showNewModal = () => { |
| | | isShowNewModal.value = true; |
| | |
| | | record.value = row; |
| | | }; |
| | | |
| | | // 查看当前工序的生产记录 |
| | | const showProcessParamModal = row => { |
| | | currentProcess.value = row; |
| | | isShowProcessParamModal.value = true; |
| | | processParamPage.current = 1; |
| | | getProcessParamList(); |
| | | }; |
| | | |
| | | const getProcessParamList = () => { |
| | | if (!currentProcess.value) return; |
| | | const params = { |
| | | processId: currentProcess.value.id, |
| | | ...processParamPage, |
| | | }; |
| | | listProcessParamPage(params).then(res => { |
| | | processParamTableData.value = res.data.records || []; |
| | | processParamPage.total = res.data.total || 0; |
| | | }); |
| | | }; |
| | | |
| | | // 删除当前工序绑定的生产记录 |
| | | const handleDeleteProcessParam = () => { |
| | | const ids = processParamSelectedRows.value.map(item => item.id); |
| | | if (!ids.length) { |
| | | proxy.$modal.msgWarning("请选择要删除的记录"); |
| | | return; |
| | | } |
| | | proxy.$modal |
| | | .confirm("是否确认删除选中的生产记录?") |
| | | .then(() => delProcessParam(ids)) |
| | | .then(() => { |
| | | proxy.$modal.msgSuccess("删除成功"); |
| | | getProcessParamList(); |
| | | }) |
| | | .catch(() => {}); |
| | | }; |
| | | |
| | | // 打开选择生产记录弹框 |
| | | const showSelectProductParamModal = () => { |
| | | isShowSelectParamModal.value = true; |
| | | productParamPage.current = 1; |
| | | getProductParamList(); |
| | | }; |
| | | |
| | | const getProductParamList = () => { |
| | | const params = { |
| | | ...productParamPage, |
| | | }; |
| | | listProductParamPage(params).then(res => { |
| | | const records = res.data.records || []; |
| | | // 已绑定到当前工序的生产记录,不允许再次选择 -> 根据参数编码打上 disabled 标记 |
| | | const boundCodeSet = new Set( |
| | | (processParamTableData.value || []) |
| | | .map(item => item.code ?? item.parameterCode) |
| | | .filter(code => !!code) |
| | | ); |
| | | productParamTableData.value = records.map(item => ({ |
| | | ...item, |
| | | disabled: item.code ? boundCodeSet.has(item.code) : false, |
| | | })); |
| | | productParamPage.total = res.data.total || 0; |
| | | }); |
| | | }; |
| | | |
| | | // 确认给当前工序新增生产记录 |
| | | const handleAddProcessParam = () => { |
| | | if (!currentProcess.value) return; |
| | | const selectedList = productParamSelectedRows.value || []; |
| | | if (!selectedList.length) { |
| | | proxy.$modal.msgWarning("请选择要绑定的生产记录"); |
| | | return; |
| | | } |
| | | // processId 放在路径里,body 直接传选中的生产记录数组 |
| | | addProductProcessParameter(currentProcess.value.id, selectedList) |
| | | .then(() => { |
| | | proxy.$modal.msgSuccess("新增成功"); |
| | | isShowSelectParamModal.value = false; |
| | | getProcessParamList(); |
| | | }) |
| | | .catch(() => {}); |
| | | }; |
| | | |
| | | // 删除 |
| | | function handleDelete() { |
| | | const no = selectedRows.value.map(item => item.no); |