diff --git a/src/api/qms/inspectionJob/inspectionJobMain/index.ts b/src/api/qms/inspectionJob/inspectionJobMain/index.ts index fe61e36c3..372fef2dc 100644 --- a/src/api/qms/inspectionJob/inspectionJobMain/index.ts +++ b/src/api/qms/inspectionJob/inspectionJobMain/index.ts @@ -1,7 +1,7 @@ import request from '@/config/axios' -// 查询检验申请列表 +// 查询检验任务列表 export const getInspectionJobMainPage = async (params) => { if (params.isSearch) { delete params.isSearch @@ -12,29 +12,40 @@ export const getInspectionJobMainPage = async (params) => { } } -// 查询检验申请详情 +// 查询检验任务详情 export const getInspectionJobMain = async (id: number) => { return await request.get({ url: `/qms/inspection-job-main/get?id=` + id }) } -// 新增检验申请 +// 新增检验任务 export const createInspectionJobMain = async (data) => { return await request.post({ url: `/qms/inspection-job-main/create`, data }) } -// 修改检验申请 +// 修改检验任务 export const updateInspectionJobMain = async (data) => { return await request.put({ url: `/qms/inspection-job-main/update`, data }) } -// 执行检验申请 +// 执行检验任务 export const executeInspectionJobMain = async (data) => { return await request.put({ url: `/qms/inspection-job-main/execute`, data }) } -// 删除检验申请 +// 删除检验任务 export const deleteInspectionJobMain = async (id: number) => { return await request.delete({ url: `/qms/inspection-job-main/delete?id=` + id }) } - +// 承接检验任务 +export const acceptInspectionJobMain = async (id) => { + return await request.put({ url: `/qms/inspection-job-main/accept?id=` + id }) +} +// 放弃检验任务 +export const abandonInspectionJobMain = async (id) => { + return await request.put({ url: `/qms/inspection-job-main/abandon?id=` + id }) +} +// 关闭检验任务 +export const closeInspectionJobMain = async (id) => { + return await request.put({ url: `/qms/inspection-job-main/close?id=` + id }) +} // 导出检验申请 Excel export const exportInspectionJobMain = async (params) => { return await request.download({ url: `/qms/inspection-job-main/export-excel`, params }) diff --git a/src/api/qms/selectedProject/index.ts b/src/api/qms/selectedProject/index.ts index a32d54b55..941fc48e4 100644 --- a/src/api/qms/selectedProject/index.ts +++ b/src/api/qms/selectedProject/index.ts @@ -54,4 +54,10 @@ export const exportSelectedProject = async (params) => { // 下载用户导入模板 export const importTemplate = () => { return request.download({ url: '/qms/selected-project/get-import-template' }) +} + + +// 查询选定集项目列表 +export const getSelectedProjectNoPage = async (params) => { + return await request.get({ url: `/qms/selected-project/noPage`, params }) } \ No newline at end of file diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 37dc11cb8..645da237a 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -61,12 +61,16 @@ export default { agreeSuccess: '审批通过成功', refusedSuccess: '审批驳回成功', handleSuccess: '执行成功', + acceptSuccess: '承接成功', + giveupSuccess: '放弃成功', confirmColse: '确认关闭吗?', confirmReAdd: '确认重新添加吗?', confirmAgree: '确认审批通过吗?', confirmRefused: '确认审批驳回吗?', confirmHandle: '确认处理吗?', confirmSubmit: '确认提交吗?', + confirmAccept: '确认承接吗?', + confirmGiveup: '确认放弃吗?', }, error: { noPermission: `抱歉,您无权访问此页面。`, diff --git a/src/views/qms/basicDataManage/counter/counter.data.ts b/src/views/qms/basicDataManage/counter/counter.data.ts index 5e1fc9744..71a96b204 100644 --- a/src/views/qms/basicDataManage/counter/counter.data.ts +++ b/src/views/qms/basicDataManage/counter/counter.data.ts @@ -18,7 +18,8 @@ export const Counter = useCrudSchemas(reactive([ label: '物料编码', field: 'itemCode', sort: 'custom', - isSearch: true + isSearch: true, + fixed: 'left' }, { label: '检验类型编码', diff --git a/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts b/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts index 709f84219..fbe16c839 100644 --- a/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts +++ b/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts @@ -25,6 +25,7 @@ export const DynamicRule = useCrudSchemas(reactive([ sort: 'custom', isSearch: true, isForm: false, + fixed: 'left' }, { label: '描述', diff --git a/src/views/qms/basicDataManage/selectedProject/index.vue b/src/views/qms/basicDataManage/selectedProject/index.vue index e698b0565..fa6f2f0be 100644 --- a/src/views/qms/basicDataManage/selectedProject/index.vue +++ b/src/views/qms/basicDataManage/selectedProject/index.vue @@ -62,9 +62,9 @@ import download from '@/utils/download' import { SelectedProject,SelectedProjectRules } from './selectedProject.data' import * as SelectedProjectApi from '@/api/qms/selectedProject' import * as defaultButtons from '@/utils/disposition/defaultButtons' -import TableHead from '@/components/TableHead/src/TableHead.vue' -import ImportForm from '@/components/ImportForm/src/ImportForm.vue' -import Detail from '@/components/Detail/src/Detail.vue' +// import TableHead from '@/components/TableHead/src/TableHead.vue' +// import ImportForm from '@/components/ImportForm/src/ImportForm.vue' +// import Detail from '@/components/Detail/src/Detail.vue' defineOptions({ name: 'SelectedProject' }) diff --git a/src/views/qms/basicDataManage/selectedProject/selectedProject.data.ts b/src/views/qms/basicDataManage/selectedProject/selectedProject.data.ts index fb9ed7905..8bb307b19 100644 --- a/src/views/qms/basicDataManage/selectedProject/selectedProject.data.ts +++ b/src/views/qms/basicDataManage/selectedProject/selectedProject.data.ts @@ -27,7 +27,8 @@ export const SelectedProject = useCrudSchemas(reactive([ field: 'code', sort: 'custom', isTableForm: false, - isSearch: true + isSearch: true, + fixed: 'left' }, { label: '字典及字典项', diff --git a/src/views/qms/basicDataManage/selectedSet/index.vue b/src/views/qms/basicDataManage/selectedSet/index.vue index 7e6bc2a31..4d55e0906 100644 --- a/src/views/qms/basicDataManage/selectedSet/index.vue +++ b/src/views/qms/basicDataManage/selectedSet/index.vue @@ -111,6 +111,8 @@ routeName.value = route.name const tableColumns = ref(SelectedSet.allSchemas.tableColumns) + + // 查询页面返回 const searchTableSuccess = (formField, searchField, val, formRef) => { nextTick(() => { @@ -290,7 +292,11 @@ const handleDeleteTable = (item, index) => { // 主子数据 提交 const submitForm = async (formType, data) => { - + if(!validateNotRepetition(tableData.value)){ + message.alertWarning('选定集字典及字典项不能重复') + basicFormRef.value.formLoading = false + return + } data.selectedProjectDOList = tableData.value// 拼接子表数据参数 data.selectedProjectDOList = data.selectedProjectDOList.map(item => { // 按照 '-%%%-'' 拆分 dictionaryCode @@ -322,18 +328,68 @@ const submitForm = async (formType, data) => { } } +const updateSelections = async (masterId,row) => { + let param = { masterId: masterId }; + SelectedProjectApi.getSelectedProjectNoPage(param).then(res => { + DictTypeApi.getDictTypeAndData('inspection').then(originalResponse => { + // 首先对每个element进行映射和过滤 + const response = originalResponse.map(element => { + const options = element.dictDataRespVOList.map(item => { + return { + value: element.type + "-%%%-" + item.value, + label: element.name + "-" + item.label + }; + }).filter(option => { + // 过滤掉与res中任何dictionaryTypeAndCode相等的option + return !res.some(resItem => { + if(row != null){ + return option.value === resItem.dictionaryTypeAndCode && option.value != row.dictionaryTypeAndCode + }else{ + return option.value === resItem.dictionaryTypeAndCode + } + + }); + }); + return { ...element, options }; // 返回新的element,包含过滤后的options + }).filter(element => element.options.length > 0); // 再次过滤,移除options为空的element + + // 更新对应字段的options + const formSchemaItem = SelectedProject.allSchemas.formSchema.find(item => item.field === 'dictionaryTypeAndCode'); + if (formSchemaItem) { + formSchemaItem.componentProps.options = response; + } + }); + }); +}; + +const validateNotRepetition = (data) => { + // 提取所有的 dictionaryTypeAndCode 值 + const codes = data.map(item => item.dictionaryTypeAndCode); + + // 创建一个 Set 来存储唯一的 dictionaryTypeAndCode 值 + const uniqueCodes = new Set(codes); + + // 如果原始数组的长度大于 Set 集合的大小,则说明有重复 + if (codes.length > uniqueCodes.size) { + return false; // 发现重复,返回 false + } + + return true; // 未发现重复,返回 true +}; + + const detailValidate = (data) => { let tag = true; return tag } const detailOpenForm = (type, row, masterParmas) => { - // if(selectDictType.value){ - - // } - if(type='create'){ - + if(type == 'create'){ + updateSelections(masterParmas.masterId,row) + }else if('update'){ + updateSelections(masterParmas.masterId,row) } + } diff --git a/src/views/qms/basicDataManage/selectedSet/selectedSet.data.ts b/src/views/qms/basicDataManage/selectedSet/selectedSet.data.ts index a6db09237..6371cdb26 100644 --- a/src/views/qms/basicDataManage/selectedSet/selectedSet.data.ts +++ b/src/views/qms/basicDataManage/selectedSet/selectedSet.data.ts @@ -17,7 +17,8 @@ export const SelectedSet = useCrudSchemas(reactive([ field: 'code', sort: 'custom', isForm: false, - isSearch: true + isSearch: true, + fixed: 'left' }, { label: '描述', diff --git a/src/views/qms/inspection/inspectionJob/addForm.vue b/src/views/qms/inspection/inspectionJob/addForm.vue index fdef80d4c..afa359e9f 100644 --- a/src/views/qms/inspection/inspectionJob/addForm.vue +++ b/src/views/qms/inspection/inspectionJob/addForm.vue @@ -557,16 +557,16 @@ const open = async (type: string, row?: any, masterParmas?: any, titleName?: any } } else { item.inspectionJobCharacteristicsUpdateReqVO.recordInspectionQuantifyList = [] - // rules.value['inspectionJobCharacteristicsUpdateReqVO.quantifyCapping'][0].required = false - // item.inspectionJobCharacteristicsUpdateReqVO.recordInspectionQuantifyList.push({ - // inspectionValue: '', //检验值 - // qualitativeCode: '', //定性字典项值 - // estimateCode: '', //评估代码 - // defectLevel: '', //缺陷级别 - // qualifiedQuantity: '', //合格数量 - // unqualifiedQuantity: '' //不合格数量 - // } - // ) + rules.value['inspectionJobCharacteristicsUpdateReqVO.quantifyCapping'][0].required = false + item.inspectionJobCharacteristicsUpdateReqVO.recordInspectionQuantifyList.push({ + inspectionValue: '', //检验值 + qualitativeCode: '', //定性字典项值 + estimateCode: '', //评估代码 + defectLevel: '', //缺陷级别 + qualifiedQuantity: '', //合格数量 + unqualifiedQuantity: '' //不合格数量 + } + ) } // 编辑判断上限下限目标值是否必填 if (item.inspectionJobCharacteristicsUpdateReqVO.quantifyIsCapping) { diff --git a/src/views/qms/inspection/inspectionJob/index.vue b/src/views/qms/inspection/inspectionJob/index.vue index 1bbaa59be..baf4fad85 100644 --- a/src/views/qms/inspection/inspectionJob/index.vue +++ b/src/views/qms/inspection/inspectionJob/index.vue @@ -161,10 +161,10 @@ // 列表-操作按钮 const butttondata = (row) => { return [ - // defaultButtons.mainListJobAccBtn({hide:isShowMainButton(row,['1'])}), // 承接 - defaultButtons.mainListJobCloBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:purchasereceipt-job-main:close'}), // 关闭 - // defaultButtons.mainListJobAbaBtn({hide:isShowMainButton(row,['2'])}), // 放弃 - defaultButtons.mainListJobExeBtn({hide:isShowMainButton(row,['2'])}), // 执行 + defaultButtons.mainListJobAccBtn({hide:isShowMainButton(row,['1']),hasPermi:'qms:inspection-job-main:accept'}), // 承接 + defaultButtons.mainListJobCloBtn({hide:isShowMainButton(row,['1']),hasPermi:'qms:inspection-job-main:close'}), // 关闭 + defaultButtons.mainListJobAbaBtn({hide:isShowMainButton(row,['2']),hasPermi:'qms:inspection-job-main:abandon'}), // 放弃 + defaultButtons.mainListJobExeBtn({hide:isShowMainButton(row,['2']),hasPermi:'qms:inspection-job-main:execute'}), // 执行 defaultButtons.mainListPackageBtn(null), // 包装 ] } @@ -176,10 +176,15 @@ const listTableRef = ref() }else if (val == 'mainPackage') { // 包装 const list = await InspectionJobMainApi.getInspectionJobPackageList(row.id) listTableRef.value.openPackage(row,'包装信息',InspectionJobPackage.allSchemas.tableColumns,list) - } - else if (val == 'mainJobClo') { // 关闭 - handleDelete(row.id) - } + }else if (val == 'mainJobAba') { // 放弃 + console.log('列表-操作按钮事件-放弃') + handleAbandon(row.id) + } else if (val == 'mainJobClo') { // 关闭 + handleClose(row.id) + } else if (val == 'mainJobAcc') { // 承接 + console.log('列表-操作按钮事件-承接') + handleAccept(row.id) + } } /** 添加/修改操作 */ @@ -200,19 +205,43 @@ const listTableRef = ref() const execute = async (type : string, row ?: number) => { formRef.value.open(type, row) } - /** 删除按钮操作 */ - const handleDelete = async (id : number) => { + /** 关闭按钮操作 */ + const handleClose = async (id : number) => { try { // 删除的二次确认 - await message.delConfirm() + await message.confirm(t('common.confirmColse')) // 发起删除 - await InspectionJobMainApi.deleteInspectionJobMain(id) - message.success(t('common.delSuccess')) + await InspectionJobMainApi.closeInspectionJobMain(id) + message.success(t('common.closeSuccess')) // 刷新列表 await getList() } catch { } } - + // 承接 + const handleAccept = async (id : number) => { + try { + // 承接的二次确认 + await message.confirm(t('common.confirmAccept')) + // 发起承接 + await InspectionJobMainApi.acceptInspectionJobMain(id) + message.success(t('common.acceptSuccess')) + // 刷新列表 + await getList() + } catch { } + } + // 放弃任务 + const handleAbandon = async (id : number) => { + try { + // 放弃的二次确认 + await message.confirm(t('common.confirmGiveup')) + // 发起放弃 + await InspectionJobMainApi.abandonInspectionJobMain(id) + message.success(t('common.giveupSuccess')) + // 刷新列表 + await getList() + } catch { } + } + /** 导出按钮操作 */ const exportLoading = ref(false) // 导出的加载中 const handleExport = async () => { diff --git a/src/views/qms/inspection/inspectionJob/inspectionJobMain.data.ts b/src/views/qms/inspection/inspectionJob/inspectionJobMain.data.ts index ed4bfcfab..70f7ae62e 100644 --- a/src/views/qms/inspection/inspectionJob/inspectionJobMain.data.ts +++ b/src/views/qms/inspection/inspectionJob/inspectionJobMain.data.ts @@ -61,20 +61,47 @@ export const InspectionJobMain = useCrudSchemas(reactive([ table: { width: 150 } + },{ + label: '供应商名称', + field: 'supplierName', + sort: 'custom', + isSearch: false, + table: { + width: 150 + }, + form: { + componentProps:{ + disabled:true + } + }, }, { label: '物料编码', - field: 'materialCode', + field: 'itemCode', sort: 'custom', - isSearch: true, + isSearch: false, + table: { + width: 150 + }, form: { componentProps:{ disabled:true } }, + }, + { + label: '物料名称', + field: 'itemName', + sort: 'custom', + isSearch: false, table: { width: 150 - } + }, + form: { + componentProps:{ + disabled:true + } + }, }, { label: '物料批次', diff --git a/src/views/qms/inspection/inspectionRecord/index.vue b/src/views/qms/inspection/inspectionRecord/index.vue index 3bf88f430..33e70f8d1 100644 --- a/src/views/qms/inspection/inspectionRecord/index.vue +++ b/src/views/qms/inspection/inspectionRecord/index.vue @@ -180,9 +180,9 @@ const butttondata = (row) => { return [ // defaultButtons.mainListOrderCOMPLETEBtn({ hide: isShowMainButton(row, ['INCOMPLETE']) }), // 完成 - defaultButtons.mainListEditBtn(null), // 编辑 + defaultButtons.mainListEditBtn({hasPermi:'qms:inspection-recode-main:edit'}), // 编辑 // defaultButtons.mainListDeleteBtn(null), // 删除 - defaultButtons.mainListOrderPubBtn(null), // 发布 + defaultButtons.mainListOrderPubBtn({hasPermi:'qms:inspection-recode-main:pub'}), // 发布 defaultButtons.mainListPackageBtn(null), // 包装 ] } diff --git a/src/views/qms/inspection/inspectionRequest/inspectionMain.data.ts b/src/views/qms/inspection/inspectionRequest/inspectionMain.data.ts index 97c80ce99..41af36dc4 100644 --- a/src/views/qms/inspection/inspectionRequest/inspectionMain.data.ts +++ b/src/views/qms/inspection/inspectionRequest/inspectionMain.data.ts @@ -365,6 +365,7 @@ export const InspectionRequestPackage = useCrudSchemas(reactive([ sort: 'custom', isSearch: true, tableForm:{ + width:500, disabled:true }, table:{ diff --git a/src/views/system/systemInstallPackage/index.vue b/src/views/system/systemInstallPackage/index.vue index 1f1f0617e..6a8d47ec8 100644 --- a/src/views/system/systemInstallPackage/index.vue +++ b/src/views/system/systemInstallPackage/index.vue @@ -148,6 +148,8 @@ const openForm = (type: string, row?: any) => { if(uploadFile){ uploadFile['componentProps']['upData']['tableId'] = currentTime uploadFile['componentProps']['modelValue']= [] + uploadFile['value'] = '' + } }else if(type=='update'){ const uploadFile = SystemInstallPackage.allSchemas.formSchema.find(item=>item.field=='uploadFile') @@ -163,7 +165,7 @@ const openForm = (type: string, row?: any) => { // form表单提交 const formsSuccess = async (formType,data) => { if (formType === 'create') { - delete data['uploadFile'] + // delete data['uploadFile'] await SystemInstallPackageApi.createSystemInstallPackage(data) message.success(t('common.createSuccess')) } else { diff --git a/src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/purchasePlanMain.data.ts b/src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/purchasePlanMain.data.ts index 67e525b64..9a4167f45 100644 --- a/src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/purchasePlanMain.data.ts +++ b/src/views/wms/purchasereceiptManage/supplierdeliver/purchasePlanMain/purchasePlanMain.data.ts @@ -56,7 +56,7 @@ export const PurchasePlanMain = useCrudSchemas(reactive([ width: 150 }, form: { - labelMessage: '信息提示说明!!!', + // labelMessage: '信息提示说明!!!', componentProps: { isSearchList: true, searchListPlaceholder: '请选择采购订单', @@ -89,7 +89,7 @@ export const PurchasePlanMain = useCrudSchemas(reactive([ }, form: { componentProps: { - disabled: true + disabled: false } } }, @@ -101,7 +101,7 @@ export const PurchasePlanMain = useCrudSchemas(reactive([ }, form: { componentProps: { - disabled: true + disabled: false } } },