diff --git a/src/api/qms/counter/index.ts b/src/api/qms/counter/index.ts index 30f143a44..ee346e189 100644 --- a/src/api/qms/counter/index.ts +++ b/src/api/qms/counter/index.ts @@ -26,38 +26,38 @@ export const getCounterPage = async (params) => { if (params.isSearch) { delete params.isSearch const data = {...params} - return await request.post({ url: '/basic/counter/senior', data }) + return await request.post({ url: '/qms/counter/senior', data }) } else { - return await request.get({ url: `/basic/counter/page`, params }) + return await request.get({ url: `/qms/counter/page`, params }) } } // 查询物料检验计数器详情 export const getCounter = async (id: number) => { - return await request.get({ url: `/basic/counter/get?id=` + id }) + return await request.get({ url: `/qms/counter/get?id=` + id }) } // 新增物料检验计数器 export const createCounter = async (data: CounterVO) => { - return await request.post({ url: `/basic/counter/create`, data }) + return await request.post({ url: `/qms/counter/create`, data }) } // 修改物料检验计数器 export const updateCounter = async (data: CounterVO) => { - return await request.put({ url: `/basic/counter/update`, data }) + return await request.put({ url: `/qms/counter/update`, data }) } // 删除物料检验计数器 export const deleteCounter = async (id: number) => { - return await request.delete({ url: `/basic/counter/delete?id=` + id }) + return await request.delete({ url: `/qms/counter/delete?id=` + id }) } // 导出物料检验计数器 Excel export const exportCounter = async (params) => { - return await request.download({ url: `/basic/counter/export-excel`, params }) + return await request.download({ url: `/qms/counter/export-excel`, params }) } // 下载用户导入模板 export const importTemplate = () => { - return request.download({ url: '/basic/counter/get-import-template' }) + return request.download({ url: '/qms/counter/get-import-template' }) } \ No newline at end of file diff --git a/src/api/qms/dynamicRule/index.ts b/src/api/qms/dynamicRule/index.ts index 92d0c4d31..522cea36b 100644 --- a/src/api/qms/dynamicRule/index.ts +++ b/src/api/qms/dynamicRule/index.ts @@ -1,7 +1,7 @@ import request from '@/config/axios' export interface DynamicRuleVO { - code: string + number: string describe: string available: string deletionTime: Date @@ -16,38 +16,38 @@ export const getDynamicRulePage = async (params) => { if (params.isSearch) { delete params.isSearch const data = {...params} - return await request.post({ url: '/basic/dynamic-rule/senior', data }) + return await request.post({ url: '/qms/dynamic-rule/senior', data }) } else { - return await request.get({ url: `/basic/dynamic-rule/page`, params }) + return await request.get({ url: `/qms/dynamic-rule/page`, params }) } } // 查询动态修改规则详情 export const getDynamicRule = async (id: number) => { - return await request.get({ url: `/basic/dynamic-rule/get?id=` + id }) + return await request.get({ url: `/qms/dynamic-rule/get?id=` + id }) } // 新增动态修改规则 export const createDynamicRule = async (data: DynamicRuleVO) => { - return await request.post({ url: `/basic/dynamic-rule/create`, data }) + return await request.post({ url: `/qms/dynamic-rule/create`, data }) } // 修改动态修改规则 export const updateDynamicRule = async (data: DynamicRuleVO) => { - return await request.put({ url: `/basic/dynamic-rule/update`, data }) + return await request.put({ url: `/qms/dynamic-rule/update`, data }) } // 删除动态修改规则 export const deleteDynamicRule = async (id: number) => { - return await request.delete({ url: `/basic/dynamic-rule/delete?id=` + id }) + return await request.delete({ url: `/qms/dynamic-rule/delete?id=` + id }) } // 导出动态修改规则 Excel export const exportDynamicRule = async (params) => { - return await request.download({ url: `/basic/dynamic-rule/export-excel`, params }) + return await request.download({ url: `/qms/dynamic-rule/export-excel`, params }) } // 下载用户导入模板 export const importTemplate = () => { - return request.download({ url: '/basic/dynamic-rule/get-import-template' }) + return request.download({ url: '/qms/dynamic-rule/get-import-template' }) } \ No newline at end of file diff --git a/src/api/qms/inspectionPlan/index.ts b/src/api/qms/inspectionPlan/index.ts new file mode 100644 index 000000000..1c07a30d3 --- /dev/null +++ b/src/api/qms/inspectionPlan/index.ts @@ -0,0 +1,30 @@ +import request from '@/config/axios' + + + +// 查询采样过程列表 +export const getListByTempleteCode = async (code) => { + return await request.get({ url: `/qms/inspection-process/getListByTempleteCode?code=`+code}) +} +// 新增 +export const inspectionTemplateCreat = async (data) => { + return await request.post({ url: `/qms/programme-template/create`,data}) +} +// 编辑 +export const inspectionTemplateUpdate = async (data) => { + return await request.put({ url: `/qms/programme-template/update`,data}) +} +// 删除 +export const inspectionTemplateDelete = async (id) => { + return await request.delete({ url: `/qms/programme-template/delete?id=`+id}) +} +// 列表 +export const inspectionTemplatePage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return request.post({ url: '/wms/accountcalendar/senior', data }) + } else { + return await request.get({ url: `/qms/programme-template/page`, params }) + } +} \ No newline at end of file diff --git a/src/api/qms/inspectionStage/index.ts b/src/api/qms/inspectionStage/index.ts index ecee3ef55..8439a6474 100644 --- a/src/api/qms/inspectionStage/index.ts +++ b/src/api/qms/inspectionStage/index.ts @@ -1,7 +1,8 @@ import request from '@/config/axios' export interface InspectionStageVO { - code: string + number: string + masterId: number dynamicModifyCode: string describe: string okTimes: number @@ -24,38 +25,38 @@ export const getInspectionStagePage = async (params) => { if (params.isSearch) { delete params.isSearch const data = {...params} - return await request.post({ url: '/basic/inspection-stage/senior', data }) + return await request.post({ url: '/qms/inspection-stage/senior', data }) } else { - return await request.get({ url: `/basic/inspection-stage/page`, params }) + return await request.get({ url: `/qms/inspection-stage/page`, params }) } } // 查询检验阶段详情 export const getInspectionStage = async (id: number) => { - return await request.get({ url: `/basic/inspection-stage/get?id=` + id }) + return await request.get({ url: `/qms/inspection-stage/get?id=` + id }) } // 新增检验阶段 export const createInspectionStage = async (data: InspectionStageVO) => { - return await request.post({ url: `/basic/inspection-stage/create`, data }) + return await request.post({ url: `/qms/inspection-stage/create`, data }) } // 修改检验阶段 export const updateInspectionStage = async (data: InspectionStageVO) => { - return await request.put({ url: `/basic/inspection-stage/update`, data }) + return await request.put({ url: `/qms/inspection-stage/update`, data }) } // 删除检验阶段 export const deleteInspectionStage = async (id: number) => { - return await request.delete({ url: `/basic/inspection-stage/delete?id=` + id }) + return await request.delete({ url: `/qms/inspection-stage/delete?id=` + id }) } // 导出检验阶段 Excel export const exportInspectionStage = async (params) => { - return await request.download({ url: `/basic/inspection-stage/export-excel`, params }) + return await request.download({ url: `/qms/inspection-stage/export-excel`, params }) } // 下载用户导入模板 export const importTemplate = () => { - return request.download({ url: '/basic/inspection-stage/get-import-template' }) + return request.download({ url: '/qms/inspection-stage/get-import-template' }) } \ No newline at end of file diff --git a/src/api/wms/productreceiptDetailb/index.ts b/src/api/wms/productreceiptDetailb/index.ts new file mode 100644 index 000000000..15cfc9319 --- /dev/null +++ b/src/api/wms/productreceiptDetailb/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +export interface ProductreceiptDetailbVO { + id: number + packingNumber: string + batch: string + masterId: number + number: string + itemCode: string + itemName: string + outsideItemCode: string + outsideProduceDate: string + outsideSerialNumber: string + remark: string +} + +// 查询制品收货记录子列表 +export const getProductreceiptDetailbPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/productreceipt-detailb/senior', data }) + } else { + return await request.get({ url: `/wms/productreceipt-detailb/page`, params }) + } +} + +// 查询制品收货记录子详情 +export const getProductreceiptDetailb = async (id: number) => { + return await request.get({ url: `/wms/productreceipt-detailb/get?id=` + id }) +} + +// 新增制品收货记录子 +export const createProductreceiptDetailb = async (data: ProductreceiptDetailbVO) => { + return await request.post({ url: `/wms/productreceipt-detailb/create`, data }) +} + +// 修改制品收货记录子 +export const updateProductreceiptDetailb = async (data: ProductreceiptDetailbVO) => { + return await request.put({ url: `/wms/productreceipt-detailb/update`, data }) +} + +// 删除制品收货记录子 +export const deleteProductreceiptDetailb = async (id: number) => { + return await request.delete({ url: `/wms/productreceipt-detailb/delete?id=` + id }) +} + +// 导出制品收货记录子 Excel +export const exportProductreceiptDetailb = async (params) => { + return await request.download({ url: `/wms/productreceipt-detailb/export-excel`, params }) +} diff --git a/src/components/BasicForm/src/BasicFormQms.vue b/src/components/BasicForm/src/BasicFormQms.vue new file mode 100644 index 000000000..93b9a66a4 --- /dev/null +++ b/src/components/BasicForm/src/BasicFormQms.vue @@ -0,0 +1,696 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/Detail/src/Detail.vue b/src/components/Detail/src/Detail.vue index 4b0b7512f..328aeaae6 100644 --- a/src/components/Detail/src/Detail.vue +++ b/src/components/Detail/src/Detail.vue @@ -457,6 +457,7 @@ const formRef = ref() const titleNameRef = ref() const titleValueRef = ref() const openDetail = async (row: any, titleName: any, titleValue: any, tableName: any) => { + debugger titleNameRef.value = titleName titleValueRef.value = titleValue remarksData.data = { diff --git a/src/components/Detail/src/DetailQms.vue b/src/components/Detail/src/DetailQms.vue new file mode 100644 index 000000000..443d33ccc --- /dev/null +++ b/src/components/Detail/src/DetailQms.vue @@ -0,0 +1,846 @@ + + + + + + {{ titleValueRef }} {{ titleNameRef }} + + + + + + + + + + + + + + + + + + + + {{ item }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/Dialog/src/Dialog.vue b/src/components/Dialog/src/Dialog.vue index a7d75553a..0d52642de 100644 --- a/src/components/Dialog/src/Dialog.vue +++ b/src/components/Dialog/src/Dialog.vue @@ -12,7 +12,8 @@ const props = defineProps({ width: propTypes.oneOfType([String, Number]).def('40%'), scroll: propTypes.bool.def(false), // 是否开启滚动条。如果是的话,按照 maxHeight 设置最大高度 maxHeight: propTypes.oneOfType([String, Number]).def('400px'), - vLoading:propTypes.bool.def(false) + vLoading:propTypes.bool.def(false), + alignCenter:propTypes.bool.def(true), }) const getBindValue = computed(() => { @@ -87,6 +88,7 @@ const initDialog = () => { :close-on-click-modal="true" :fullscreen="isFullscreen" :width="width" + :align-center="alignCenter" destroy-on-close lock-scroll draggable diff --git a/src/utils/dict.ts b/src/utils/dict.ts index d3dd1b504..b72ef2599 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -292,6 +292,7 @@ export enum DICT_TYPE { EVALUATION_MODE = "evaluation_mode", // 评估模式 INSPECTION_CHARACTERISTICS_FEATURE_TYPE = "inspection_characteristics_feature_type", // 特征类型 INSPECTION_CHARACTERISTICS_RESULT_ENTRY = "inspection_characteristics_result_entry", // 结果录入方式 + INSPECTION_SEVERITY = 'inspection_severity',//检验严重性 // ========== 业务 - mes -gaojs ========== @@ -302,6 +303,7 @@ export enum DICT_TYPE { OPERSTEP_COLLECT_TYPE='operstep_collect_type',//操作步骤采集方式 REWORK_TYPE='rework_type',//工作类型:返工登记、返修登记 REWORK_STATUS='rework_status',//返工返修状态:待返修,返修中,返修完成 - REWORK_REPLACE_FLAG='rework_replace_flag',//是否有替换件 + REWORK_REPLACE_FLAG = 'rework_replace_flag',//是否有替换件 + } diff --git a/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts b/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts index eb3c50d9c..580eb529f 100644 --- a/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts +++ b/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts @@ -1,19 +1,27 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import { dateFormatter } from '@/utils/formatTime' +import { string } from 'vue-types' + +const trueFalse = [{ + label: '是', + value: true +}, { + label: '否', + value: false +}] // 表单校验 export const DynamicRuleRules = reactive({ - code: [required], - available: [required], - concurrencyStamp: [required] + describe: [required] }) export const DynamicRule = useCrudSchemas(reactive([ { label: '编码', - field: 'code', + field: 'number', sort: 'custom', - isSearch: true + isSearch: true, + isForm: false, }, { label: '描述', @@ -22,84 +30,122 @@ export const DynamicRule = useCrudSchemas(reactive([ isSearch: true }, { - label: '是否可用', - field: 'available', + label: '操作', + field: 'action', + isForm: false, + isDetail: false, + table: { + width: 150, + fixed: 'right' + } + } +])) + +// 表单校验 +export const InspectionStageRules = reactive({ + dynamicModifyCode: [required], + okTimes: [required], + okTimeStage: [required], + noOkTimes: [required], + noOkTimeStage: [required], + isStartStage: [required], + skipInspection: [required], + inspectionStringency: [required], +}) + +export const InspectionStage = useCrudSchemas(reactive([ + + { + label: '描述', + field: 'describe', sort: 'custom', isSearch: true }, { - label: '创建时间', - field: 'createTime', + label: 'OK次数', + field: 'okTimes', sort: 'custom', - formatter: dateFormatter, isSearch: true, - search: { - component: 'DatePicker', - componentProps: { - valueFormat: 'YYYY-MM-DD HH:mm:ss', - type: 'daterange', - defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] - } - }, - isForm: false + form: { + component: 'InputNumber', + value: 0 + } }, { - label: '删除时间', - field: 'deletionTime', + label: 'OK次数后的阶段', + field: 'okTimeStage', sort: 'custom', - formatter: dateFormatter, isSearch: true, - search: { - component: 'DatePicker', - componentProps: { - valueFormat: 'YYYY-MM-DD HH:mm:ss', - type: 'daterange', - defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] - } - }, form: { - component: 'DatePicker', - componentProps: { - type: 'datetime', - valueFormat: 'x' - } + component: 'InputNumber', + value: 0 } }, { - label: '删除者ID', - field: 'deleterId', + label: 'NOK次数', + field: 'noOkTimes', sort: 'custom', - isSearch: true + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + } }, { - label: '扩展属性', - field: 'extraProperties', + label: 'NOK次数后的阶段', + field: 'noOkTimeStage', sort: 'custom', - isSearch: true + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + } }, { - label: '并发乐观锁', - field: 'concurrencyStamp', + label: '是否是起始阶段', + field: 'isStartStage', sort: 'custom', isSearch: true, + formatter: (_: Recordable, __: TableColumn, cellValue: boolean) => { + return trueFalse.find((account) => account.value == cellValue)?.label + }, form: { - component: 'InputNumber', - value: 0 + component: 'Switch', + value:true } }, { - label: '地点id', - field: 'siteId', + label: '是否略过检验', + field: 'skipInspection', sort: 'custom', - isSearch: true + isSearch: true, + formatter: (_: Recordable, __: TableColumn, cellValue: boolean) => { + return trueFalse.find((account) => account.value == cellValue)?.label + }, + form: { + component: 'Switch', + value:true + } + }, + { + label: '检验严格性', + field: 'inspectionStringency', + sort: 'custom', + isSearch: true, + dictType: DICT_TYPE.INSPECTION_SEVERITY, + dictClass: 'string', // 默认都是字符串类型其他暂不考虑 + form: { + component: 'Select' + }, }, { label: '操作', field: 'action', isForm: false, table: { - width: 150, + width: 300, fixed: 'right' - } + }, + isTableForm: false, } ])) diff --git a/src/views/qms/basicDataManage/dynamicRule/index.vue b/src/views/qms/basicDataManage/dynamicRule/index.vue index 9276c8fa3..eaf60e016 100644 --- a/src/views/qms/basicDataManage/dynamicRule/index.vue +++ b/src/views/qms/basicDataManage/dynamicRule/index.vue @@ -27,9 +27,9 @@ v-model:currentPage="tableObject.currentPage" v-model:sort="tableObject.sort" > - - - {{ row.code }} + + + {{ row.number }} @@ -44,14 +44,39 @@ @success="formsSuccess" :rules="DynamicRuleRules" :formAllSchemas="DynamicRule.allSchemas" + :tableAllSchemas="InspectionStage.allSchemas" + :tableFormRules="InspectionStageRules" + :tableData="tableData" :apiUpdate="DynamicRuleApi.updateDynamicRule" :apiCreate="DynamicRuleApi.createDynamicRule" @searchTableSuccess="searchTableSuccess" - :isBusiness="false" + :isBusiness="true" + @onChange="onChange" + @handleAddTable="handleAddTable" + @handleDeleteTable="handleDeleteTable" + @submitForm="submitForm" + :isSearchTableItem="true" /> - + @@ -59,9 +84,11 @@ + + diff --git a/src/views/qms/basicDataManage/inspectionPlan/index.vue b/src/views/qms/basicDataManage/inspectionPlan/index.vue new file mode 100644 index 000000000..9699dd2a2 --- /dev/null +++ b/src/views/qms/basicDataManage/inspectionPlan/index.vue @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + {{ row.reqCode }} + + + + + + + + + + + + + + + + + + +./inspectionPlan.data \ No newline at end of file diff --git a/src/views/qms/basicDataManage/inspectionPlan/inspectionPlan.data.ts b/src/views/qms/basicDataManage/inspectionPlan/inspectionPlan.data.ts new file mode 100644 index 000000000..62e6c9f7c --- /dev/null +++ b/src/views/qms/basicDataManage/inspectionPlan/inspectionPlan.data.ts @@ -0,0 +1,287 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +// 表单校验 + +export const InspectionTemplateRules = reactive({ + description: [ + { required: true , message: '请填写描述', trigger: 'blur' } + ], + version: [ + { required: true , message: '请填写版本', trigger: 'blur' } + ], + inspectionCode: [ + { required: true, message: '请选择检验方案模板编码', trigger: 'blur' } + ], + sequenceCode: [ + { required: true, message: '请填写顺序号', trigger: 'blur' } + ], + inspectionCharCode: [ + { required: true, message: '请选择检验特性编码', trigger: 'blur' } + ], + describe: [ + { required: true, message: '请填写描述', trigger: 'blur' } + ], + inspectionMethodCode: [ + { required: true, message: '请选择检验方法编码', trigger: 'blur' } + ], + dynamicUpdateCode: [ + { required: true, message: '请选择采样过程编码', trigger: 'blur' } + ], + inspectionMethod: [ + { required: true, message: '请选择动态修改规则编码', trigger: 'blur' } + ], + isCanUpdate: [ + { required: true, message: '请选择是否允许修改特征值', trigger: 'blur' } + ], + isDestructionInspection: [ + { required: true, message: '请选择是否破坏性检验', trigger: 'blur' } + ], + resultEntryMethod: [ + { required: true, message: '请选择结果录入方式', trigger: 'blur' } + ], + featureType: [ + { required: true, message: '请选择特征类型', trigger: 'blur' } + ], + quantifyIsCapping: [ + { required: true, message: '请选择是否设定上限', trigger: 'blur' } + ], + quantifyIsLowlimit: [ + { required: true, message: '请选择是否设定下限', trigger: 'blur' } + ], + quantifyTarget: [ + { required: true, message: '请输入目标值', trigger: 'blur' } + ], + quantifyCapping: [ + { required: true, message: '请输入上限值', trigger: 'blur' } + ], + quantifyLowlimit: [ + { required: true, message: '请输入下限值', trigger: 'blur' } + ], + quantifyquantifyUomLowlimit: [ + { required: true, message: '请选择计量单位', trigger: 'blur' } + ], + quantifyDecimal: [ + { required: true, message: '请输入小数位', trigger: 'blur' } + ], + quantifyQuantifyCode: [ + { required: true, message: '请输入选择集编码', trigger: 'blur' } + ], +}) +export const InspectionTemplateMain = useCrudSchemas(reactive([ + { + label: '编码', + field: 'code', + sort: 'custom', + form:{ + componentProps:{ + disabled:true, + placeholder:'系统自动获取' + } + } + }, + { + label: '描述', + field: 'description', + sort: 'custom', + },{ + label: '版本', + field: 'version', + sort: 'custom', + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) +export const InspectionTemplateProcess = useCrudSchemas(reactive([ + { + label: '编码', + field: 'code', + sort: 'custom', + form:{ + componentProps:{ + disabled:true, + placeholder:'系统自动获取' + } + } + }, + { + label: '描述', + field: 'description', + sort: 'custom', + isForm:false + },{ + label: '检验方案模板编码', + field: 'inspectionCode', + sort: 'custom', + },{ + label: '顺序号', + field: 'sequenceCode', + },{ + label: '检验特性编码', + field: 'inspectionCharCode', + sort: 'custom', + } +])) +export const InspectionTemplateFeatures= useCrudSchemas(reactive([ + { + label: '编码', + field: 'code', + sort: 'custom', + form:{ + componentProps:{ + disabled:true, + placeholder:'系统自动获取' + } + } + }, + { + label: '描述', + field: 'describe', + sort: 'custom', + },{ + label: '检验方法编码', + field: 'inspectionMethodCode', + sort: 'custom', + },{ + label: '采样过程编码', + field: 'dynamicUpdateCode', + sort: 'custom', + },{ + label: '动态修改规则编码', + field: 'inspectionMethod', + sort: 'custom', + },{ + label: '是否允许修改特征值', + field: 'isCanUpdate', + sort: 'custom', + + form:{ + component:'Select', + api: () => [{ + value:0, + label:'是' + },{ + value:1, + label:'否' + }], + componentProps:{ + optionsAlias: { + labelField: 'label', + valueField: 'value' + } + } + } + },{ + label: '是否破坏性检验', + field: 'isDestructionInspection', + sort: 'custom', + form:{ + component:'Select', + api: () => [{ + value:0, + label:'是' + },{ + value:1, + label:'否' + }], + componentProps:{ + optionsAlias: { + labelField: 'label', + valueField: 'value' + } + } + } + },{ + label: '结果录入方式', + field: 'resultEntryMethod', + sort: 'custom', + dictType: DICT_TYPE.INSPECTION_CHARACTERISTICS_RESULT_ENTRY, + dictClass: 'string', + table: { + width: 150 + }, + },{ + label: '特征类型', + field: 'featureType', + sort: 'custom', + dictType: DICT_TYPE.INSPECTION_CHARACTERISTICS_FEATURE_TYPE, + dictClass: 'string', + table: { + width: 150 + }, + },{ + label: '是否设定上限', + field: 'quantifyIsCapping', + sort: 'custom', + form:{ + component:'Select', + api: () => [{ + value:0, + label:'是' + },{ + value:1, + label:'否' + }], + componentProps:{ + optionsAlias: { + labelField: 'label', + valueField: 'value' + } + } + } + },{ + label: '是否设定下限', + field: 'quantifyIsLowlimit', + sort: 'custom', + form:{ + component:'Select', + api: () => [{ + value:0, + label:'是' + },{ + value:1, + label:'否' + }], + componentProps:{ + optionsAlias: { + labelField: 'label', + valueField: 'value' + } + } + } + },{ + label: '目标值', + field: 'quantifyTarget', + sort: 'custom', + },{ + label: '上限值', + field: 'quantifyCapping', + sort: 'custom', + },{ + label: '下限值', + field: 'quantifyLowlimit', + sort: 'custom', + },{ + label: '计量单位', + field: 'quantifyUom', + sort: 'custom', + },{ + label: '小数位', + field: 'quantifyDecimal', + sort: 'custom', + },{ + label: '选择集编码', + field: 'quantifyQuantifyCode', + sort: 'custom', + form:{ + component:'Select' + } + } +])) \ No newline at end of file diff --git a/src/views/qms/basicDataManage/inspectionStage/inspectionStage.data.ts b/src/views/qms/basicDataManage/inspectionStage/inspectionStage.data.ts index 56a635822..d35c8c4be 100644 --- a/src/views/qms/basicDataManage/inspectionStage/inspectionStage.data.ts +++ b/src/views/qms/basicDataManage/inspectionStage/inspectionStage.data.ts @@ -19,7 +19,7 @@ export const InspectionStageRules = reactive({ export const InspectionStage = useCrudSchemas(reactive([ { label: '编码', - field: 'code', + field: 'number', sort: 'custom', isSearch: true }, diff --git a/src/views/qms/basicDataManage/inspectionTemplate/addForm.vue b/src/views/qms/basicDataManage/inspectionTemplate/addForm.vue index d20c0ba3d..555761be5 100644 --- a/src/views/qms/basicDataManage/inspectionTemplate/addForm.vue +++ b/src/views/qms/basicDataManage/inspectionTemplate/addForm.vue @@ -576,10 +576,28 @@ const open = async (type: string, row?: any, masterParmas?: any, titleName?: any formType.value = type if (row) { data.value = row + let list = await InspectionProcessPageApi.getListByTempleteCode(row.code) list.forEach((item, index) => { editableTabsValue.value = index + 1 item.name = index + 1 + // 编辑判断上限下限目标值是否必填 + if(item.quantifyIsCapping){ + rules.value['inspectionCharacteristicsBaseVO.quantifyCapping'][0].required = true + }else{ + rules.value['inspectionCharacteristicsBaseVO.quantifyCapping'][0].required = false + } + if(item.quantifyIsLowlimit){ + rules.value['inspectionCharacteristicsBaseVO.quantifyLowlimit'][0].required = true + }else{ + rules.value['inspectionCharacteristicsBaseVO.quantifyLowlimit'][0].required = false + } + if(item.quantifyIsTarget){ + rules.value['inspectionCharacteristicsBaseVO.quantifyTarget'][0].required = true + }else{ + rules.value['inspectionCharacteristicsBaseVO.quantifyTarget'][0].required = false + } + }) data.value.process = list } else { @@ -645,6 +663,7 @@ const buttonBaseClick1 = (val) => { featureType: '', quantifyIsCapping: '', quantifyIsLowlimit: '', + quantifyIsTarget: '', quantifyTarget: '', quantifyCapping: '', quantifyLowlimit: '', @@ -691,6 +710,7 @@ const validateForm = (formRef) => { return false }) } + const submitForm = async () => { try { const validateForm1 = await validateForm(formProcessRef.value) @@ -706,6 +726,13 @@ const submitForm = async () => { message.error(`模板中有检验工序和检验特性未填写完全`) return; } + const arr = data.value.process.filter(item=>(!item.inspectionCharacteristicsBaseVO.quantifyIsCapping&&!item.inspectionCharacteristicsBaseVO.quantifyIsLowlimit&&!item.inspectionCharacteristicsBaseVO.quantifyIsTarget&&item.inspectionCharacteristicsBaseVO.featureType == 0)) + console.log(arr) + if(arr&&arr.length>0){ + const str = arr.map(item=>item.description).join(',') + message.error(`${str}是否设定上线,是否设定下限,是否是定目标值至少一项为是`) + return; + } if (formType.value == 'create') { // 主子表——提交请求 emit('submitForm', formType.value, data) @@ -730,6 +757,11 @@ if (props.footButttondata) { // 选择特征类型 const changeFeatureType = (e) => { console.log(e) + // if (e) { + // rules.value['inspectionCharacteristicsBaseVO.quantifyQuantifyCode'][0].required = true + // } else { + // rules.value['inspectionCharacteristicsBaseVO.quantifyQuantifyCode'][0].required = false + // } } const searchTableRef = ref() const opensearchTable = ( diff --git a/src/views/qms/basicDataManage/inspectionTemplate/inspectionTemplate.data.ts b/src/views/qms/basicDataManage/inspectionTemplate/inspectionTemplate.data.ts index e361ed36b..62e6c9f7c 100644 --- a/src/views/qms/basicDataManage/inspectionTemplate/inspectionTemplate.data.ts +++ b/src/views/qms/basicDataManage/inspectionTemplate/inspectionTemplate.data.ts @@ -1,6 +1,5 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import { dateFormatter } from '@/utils/formatTime' -import * as InspectionProcessPageApi from '@/api/qms/inspectionTemplate' // 表单校验 diff --git a/src/views/wms/productionManage/productreceipt/productreceiptJobMain/index.vue b/src/views/wms/productionManage/productreceipt/productreceiptJobMain/index.vue index e536108bd..8cfb2f239 100644 --- a/src/views/wms/productionManage/productreceipt/productreceiptJobMain/index.vue +++ b/src/views/wms/productionManage/productreceipt/productreceiptJobMain/index.vue @@ -172,83 +172,86 @@ const butttondata = (row) => { const buttonTableClick = async (val, row) => { if (val == 'mainJobExe') { // 执行 let aaa = { - "id": "1809190001478278226", - "requestNumber": "REC4620231212-0011", - "productionPlanNumber": "WP20231212-0002", - "workShopCode": "work2", - "team": "7", - "shift": "8", - "details": null, - "requestTime": 1702376849000, - "requestDueTime": null, - "status": "2", - "expiredTime": null, - "updateTime": 1702376904000, - "updater": "超级管理员", - "jobStageStatus": null, - "priority": null, - "priorityIncrement": null, - "departmentCode": "103", - "acceptUserId": "1", - "acceptTime": 1702376913000, - "completeUserId": "1", - "completeTime": 1702377036000, - "toWarehouseCode": null, - "toAreaCodes": "", - "fromAreaTypes": "WIP", - "toAreaTypes": "WIP", - "number": "JOB2120231212-0001", - "businessType": "ProductReceipt", - "remark": null, - "createTime": 1702376904000, - "creator": "超级管理员", - "autoComplete": "FALSE", - "allowModifyLocation": "FALSE", - "allowModifyQty": "TRUE", - "allowBiggerQty": "TRUE", - "allowSmallerQty": "TRUE", - "allowModifyInventoryStatus": "TRUE", - "allowContinuousScanning": "TRUE", - "allowPartialComplete": "TRUE", - "allowModifyBatch": "FALSE", - "allowModifyPackingNumber": "FALSE", - "inInventoryStatuses": "OK", - "outInventoryStatuses": "OK", - "concurrencyStamp": null, + "id": 8, + "requestNumber": "REQ1120240401-0001", + "productionPlanNumber": "WP20240401-0001", + "workShopCode": "work1", + "team": "T01", + "shift": "bc002", + "details": null, + "requestTime": 1711952813000, + "requestDueTime": null, + "status": "2", + "expiredTime": null, + "updateTime": 1711952823000, + "updater": "超级管理员", + "jobStageStatus": null, + "priority": null, + "priorityIncrement": null, + "departmentCode": "100", + "acceptUserId": "1", + "acceptTime": 1711952975000, + "completeUserId": null, + "completeTime": null, + "toWarehouseCode": null, + "toAreaCodes": "", + "fromAreaTypes": "WIP", + "toAreaTypes": "WIP", + "number": "JOB2120240401-0001", + "businessType": "ProductReceipt", + "remark": null, + "createTime": 1711952823000, + "creator": "超级管理员", + "autoComplete": "FALSE", + "allowModifyLocation": "FALSE", + "allowModifyQty": "TRUE", + "allowBiggerQty": "TRUE", + "allowSmallerQty": "TRUE", + "allowModifyInventoryStatus": "TRUE", + "allowContinuousScanning": "TRUE", + "allowPartialComplete": "TRUE", + "allowModifyBatch": "FALSE", + "allowModifyPackingNumber": "FALSE", + "inInventoryStatuses": "OK", + "outInventoryStatuses": "OK", + "concurrencyStamp": 2, + "type": "assemble", subList: [ - { - "id": "1809190000003953999", - "productionLineCode": "line4", - "workStationCode": "station4", + { + "id": 8, + "productionLineCode": "work1-line1", + "workStationCode": "station1", "processCode": null, - "packingNumber": "PN-00113", + "packingNumber": "PN0401-000072", "containerNumber": null, - "batch": "20231212", - "produceDate": null, - "expireDate": null, + "batch": "20240401", + "produceDate": 1711987200000, + "expireDate": 1712073600000, "inventoryStatus": "OK", + "toLocationCode": "901", "woNumber": null, "woLine": null, - "packQty": 8, - "packUnit": "BOX", - "itemCode": "item01", - "itemName": "物料01", - "itemDesc1": "", - "itemDesc2": "", - "projectCode": "xm01", - "qty": 2, + "packQty": 5, + "packUnit": "Box-05", + "itemCode": "399.960-12", + "itemName": "远光内侧反射镜(镀铝)右灯", + "itemDesc1": null, + "itemDesc2": null, + "projectCode": null, + "qty": 5, "uom": "EA", - "number": "JOB2120231212-0001", + "number": "JOB2120240401-0001", "remark": null, - "createTime": 1702376904000, - "creator": "1", + "createTime": 1711952823000, + "creator": "超级管理员", "toOwnerCode": null, - handleQty: 10, - toPackingNumber: '12', - toContainerNumber: '001', - toBatch: '21', - toInventoryStatus: 'OK', - toLocationCode: 'H03', + "updateTime": 1711952823000, + "updater": "超级管理员", + handleQty: 5, + toPackingNumber: "PN0401-000072", + toContainerNumber: null, + toBatch: '20240401', + toInventoryStatus: 'OK' } ] } diff --git a/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleJobMain/index.vue b/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleJobMain/index.vue index 60a4a75ba..1ce595bdc 100644 --- a/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleJobMain/index.vue +++ b/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleJobMain/index.vue @@ -171,83 +171,86 @@ const butttondata = (row) => { const buttonTableClick = async (val, row) => { if (val == 'mainJobExe') { // 执行 let aaa = { - "id": "1809190001478278226", - "requestNumber": "REC4620231212-0011", - "productionPlanNumber": "WP20231212-0002", - "workShopCode": "work2", - "team": "7", - "shift": "8", - "details": null, - "requestTime": 1702376849000, - "requestDueTime": null, - "status": "2", - "expiredTime": null, - "updateTime": 1702376904000, - "updater": "超级管理员", - "jobStageStatus": null, - "priority": null, - "priorityIncrement": null, - "departmentCode": "103", - "acceptUserId": "1", - "acceptTime": 1702376913000, - "completeUserId": "1", - "completeTime": 1702377036000, - "toWarehouseCode": null, - "toAreaCodes": "", - "fromAreaTypes": "WIP", - "toAreaTypes": "WIP", - "number": "JOB2120231212-0001", - "businessType": "ProductReceipt", - "remark": null, - "createTime": 1702376904000, - "creator": "超级管理员", - "autoComplete": "FALSE", - "allowModifyLocation": "FALSE", - "allowModifyQty": "TRUE", - "allowBiggerQty": "TRUE", - "allowSmallerQty": "TRUE", - "allowModifyInventoryStatus": "TRUE", - "allowContinuousScanning": "TRUE", - "allowPartialComplete": "TRUE", - "allowModifyBatch": "FALSE", - "allowModifyPackingNumber": "FALSE", - "inInventoryStatuses": "OK", - "outInventoryStatuses": "OK", - "concurrencyStamp": null, - subList: [ - { - "id": "1809190000003953999", - "productionLineCode": "line4", - "workStationCode": "station4", - "processCode": null, - "packingNumber": "PN-00113", - "containerNumber": null, - "batch": "20231212", - "produceDate": null, - "expireDate": null, - "inventoryStatus": "OK", - "woNumber": null, - "woLine": null, - "packQty": 8, - "packUnit": "BOX", - "itemCode": "item01", - "itemName": "物料01", - "itemDesc1": "", - "itemDesc2": "", - "projectCode": "xm01", - "qty": 2, - "uom": "EA", - "number": "JOB2120231212-0001", - "remark": null, - "createTime": 1702376904000, - "creator": "1", - "toOwnerCode": null, - handleQty: 10, - toPackingNumber: '12', - toContainerNumber: '001', - toBatch: '21', - toInventoryStatus: 'OK', - toLocationCode: 'H03', + "id": 8, + "requestNumber": "REQ1120240401-0001", + "productionPlanNumber": "WP20240401-0001", + "workShopCode": "work1", + "team": "T01", + "shift": "bc002", + "details": null, + "requestTime": 1711952813000, + "requestDueTime": null, + "status": "2", + "expiredTime": null, + "updateTime": 1711952823000, + "updater": "超级管理员", + "jobStageStatus": null, + "priority": null, + "priorityIncrement": null, + "departmentCode": "100", + "acceptUserId": "1", + "acceptTime": 1711952975000, + "completeUserId": null, + "completeTime": null, + "toWarehouseCode": null, + "toAreaCodes": "", + "fromAreaTypes": "WIP", + "toAreaTypes": "WIP", + "number": "JOB2120240401-0001", + "businessType": "ProductReceipt", + "remark": null, + "createTime": 1711952823000, + "creator": "超级管理员", + "autoComplete": "FALSE", + "allowModifyLocation": "FALSE", + "allowModifyQty": "TRUE", + "allowBiggerQty": "TRUE", + "allowSmallerQty": "TRUE", + "allowModifyInventoryStatus": "TRUE", + "allowContinuousScanning": "TRUE", + "allowPartialComplete": "TRUE", + "allowModifyBatch": "FALSE", + "allowModifyPackingNumber": "FALSE", + "inInventoryStatuses": "OK", + "outInventoryStatuses": "OK", + "concurrencyStamp": 2, + "type": "assemble", + "subList": [ + { + "id": 8, + "productionLineCode": "work1-line1", + "workStationCode": "station1", + "processCode": null, + "packingNumber": "PN0401-000072", + "containerNumber": null, + "batch": "20240401", + "produceDate": 1711987200000, + "expireDate": 1712073600000, + "inventoryStatus": "OK", + "toLocationCode": "901", + "woNumber": null, + "woLine": null, + "packQty": 5, + "packUnit": "Box-05", + "itemCode": "399.960-12", + "itemName": "远光内侧反射镜(镀铝)右灯", + "itemDesc1": null, + "itemDesc2": null, + "projectCode": null, + "qty": 5, + "uom": "EA", + "number": "JOB2120240401-0001", + "remark": null, + "createTime": 1711952823000, + "creator": "超级管理员", + "toOwnerCode": null, + "updateTime": 1711952823000, + "updater": "超级管理员", + handleQty: 5, + toPackingNumber: "PN0401-000072", + toContainerNumber: null, + toBatch: '20240401', + toInventoryStatus: 'OK' } ] } diff --git a/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleJobMain/productreceiptAssembleJobMain.data.ts b/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleJobMain/productreceiptAssembleJobMain.data.ts index e71496ba3..2e0f56b99 100644 --- a/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleJobMain/productreceiptAssembleJobMain.data.ts +++ b/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleJobMain/productreceiptAssembleJobMain.data.ts @@ -536,16 +536,16 @@ export const ProductreceiptJobMain = useCrudSchemas(reactive([ } } }, - // { - // label: '操作', - // field: 'action', - // isDetail: false, - // isForm: false, - // table: { - // width: 120, - // fixed: 'right' - // }, - // } + { + label: '操作', + field: 'action', + isDetail: false, + isForm: false, + table: { + width: 120, + fixed: 'right' + }, + } ])) //表单校验 diff --git a/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleRecordMain/index.vue b/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleRecordMain/index.vue index f0b49ad0f..35c8b1956 100644 --- a/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleRecordMain/index.vue +++ b/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleRecordMain/index.vue @@ -70,7 +70,7 @@ max-height="450px" > import download from '@/utils/download' -import { ProductreceiptRecordMain,ProductreceiptRecordMainRules,ProductreceiptRecordDetail,ProductreceiptRecordDetailRules, BackflushRecordDetailb } from './productreceiptAssembleRecordMain.data' +import { ProductreceiptRecordMain,ProductreceiptRecordMainRules,ProductreceiptRecordDetail,ProductreceiptRecordDetailRules, ProductreceiptDetailb } from './productreceiptAssembleRecordMain.data' import * as ProductreceiptRecordMainApi from '@/api/wms/productreceiptRecordMain' import * as ProductreceiptRecordDetailApi from '@/api/wms/productreceiptRecordDetail' import * as defaultButtons from '@/utils/disposition/defaultButtons' -import * as BackflushRecordDetailbApi from '@/api/wms/backflushRecordDetailb' +import * as ProductreceiptDetailbApi from '@/api/wms/productreceiptDetailb' import { CACHE_KEY, useCache } from '@/hooks/web/useCache' // 装配收货记录主 @@ -118,7 +118,7 @@ const buttondataTable = ref([{ const DialogTitle = ref('Bom信息') const bomModelVisible = ref(false) const { tableObject: detatableDataBom, tableMethods: detatableMethodsBom } =useTable({ - getListApi: BackflushRecordDetailbApi.getBackflushRecordDetailbPage + getListApi: ProductreceiptDetailbApi.getProductreceiptDetailbPage }) const { getList:getDetailListBom } = detatableMethodsBom diff --git a/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleRecordMain/productreceiptAssembleRecordMain.data.ts b/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleRecordMain/productreceiptAssembleRecordMain.data.ts index 17a217872..0de0fb58e 100644 --- a/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleRecordMain/productreceiptAssembleRecordMain.data.ts +++ b/src/views/wms/productionManage/productreceiptAssemble/productreceiptAssembleRecordMain/productreceiptAssembleRecordMain.data.ts @@ -956,4 +956,117 @@ export const BackflushRecordDetailbRules = reactive({ creator: [ { required: true, message: '请输入创建者', trigger: 'blur' } ], -}) \ No newline at end of file +}) + +// 表单校验 +export const ProductreceiptDetailbRules = reactive({ + masterId: [required], +}) + +export const ProductreceiptDetailb = useCrudSchemas(reactive([ + { + label: '包装号', + field: 'packingNumber', + sort: 'custom', + isSearch: true, + }, + { + label: '批次', + field: 'batch', + sort: 'custom', + isSearch: true, + }, + { + label: '主表ID', + field: 'masterId', + sort: 'custom', + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '单据号', + field: 'number', + sort: 'custom', + isSearch: true, + }, + { + label: '物品代码', + field: 'itemCode', + sort: 'custom', + isSearch: true, + }, + { + label: '物品名称', + field: 'itemName', + sort: 'custom', + isSearch: true, + }, + { + label: '外部零件号', + field: 'outsideItemCode', + sort: 'custom', + isSearch: true, + }, + { + label: '外部生产日期', + field: 'outsideProduceDate', + sort: 'custom', + formatter: dateFormatter, + isSearch: true, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + form: { + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'x' + } + }, + }, + { + label: '外部流水号', + field: 'outsideSerialNumber', + sort: 'custom', + isSearch: true, + }, + { + label: '备注', + field: 'remark', + sort: 'custom', + isSearch: true, + }, + { + label: '创建时间', + field: 'createTime', + sort: 'custom', + formatter: dateFormatter, + isSearch: true, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + isForm: false, + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +]))