diff --git a/src/api/mes/workSchedulingQaform/index.ts b/src/api/mes/workSchedulingQaform/index.ts new file mode 100644 index 000000000..e964dad35 --- /dev/null +++ b/src/api/mes/workSchedulingQaform/index.ts @@ -0,0 +1,63 @@ +import request from '@/config/axios' + +export interface WorkSchedulingQaformVO { + deleteTime: Date + id: number + status: string + concurrencyStamp: number + remark: string + deleter: string + siteId: number + planMaserCode: string + schedulingCode: string + nodeCode: string + qaFormNo: string + qaFormName: string + qaFormType: string + qaTime: Date + qaCount: number + qaCountPassed: number + qaCountNotpassed: number + qaPassRate: string +} + +// 查询任务质检单列表 +export const getWorkSchedulingQaformPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/mes/work-scheduling-qaform/senior', data }) + } else { + return await request.get({ url: `/mes/work-scheduling-qaform/page`, params }) + } +} + +// 查询任务质检单详情 +export const getWorkSchedulingQaform = async (id: number) => { + return await request.get({ url: `/mes/work-scheduling-qaform/get?id=` + id }) +} + +// 新增任务质检单 +export const createWorkSchedulingQaform = async (data: WorkSchedulingQaformVO) => { + return await request.post({ url: `/mes/work-scheduling-qaform/create`, data }) +} + +// 修改任务质检单 +export const updateWorkSchedulingQaform = async (data: WorkSchedulingQaformVO) => { + return await request.put({ url: `/mes/work-scheduling-qaform/update`, data }) +} + +// 删除任务质检单 +export const deleteWorkSchedulingQaform = async (id: number) => { + return await request.delete({ url: `/mes/work-scheduling-qaform/delete?id=` + id }) +} + +// 导出任务质检单 Excel +export const exportWorkSchedulingQaform = async (params) => { + return await request.download({ url: `/mes/work-scheduling-qaform/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/mes/work-scheduling-qaform/get-import-template' }) +} \ No newline at end of file diff --git a/src/views/mes/orderDay/components/schedule.vue b/src/views/mes/orderDay/components/schedule.vue index 88127320a..3a79d518e 100644 --- a/src/views/mes/orderDay/components/schedule.vue +++ b/src/views/mes/orderDay/components/schedule.vue @@ -36,24 +36,25 @@ - + - + + --> - +
- + 工序编码:{{currentNode.id}} -工序名称:{{currentNode.attrs.title.text }} + @@ -76,7 +77,17 @@ - + + + @@ -211,7 +222,7 @@ const graphContainer = ref(null) const graph = ref() const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 -const activeName = ref('process') +const activeName = ref('workstation') const formLoading = ref(false) const dialogFormVisibleUser = ref(false) const processData = ref([]) @@ -249,6 +260,7 @@ const workstationData=ref([]) const dialogVisible = ref(false) // 弹窗的是否展示 const dialogTitle = ref('') // 弹窗的标题 const graphJson =ref() +const currentNode = ref({}) /*班组数据*/ const teamData = ref([]) /*班组弹窗搜索条件*/ @@ -309,9 +321,9 @@ const open = async (type: string, row?: any, titleName?: any) => { queryParams.batchCode=row.batchCode //获取配置的 if (titleName) { - dialogTitle.value = t('action.' + titleName) + dialogTitle.value = titleName } else { - dialogTitle.value = t('action.' + type) + dialogTitle.value = type } nextTick?.(() => { graph.value = createGraph(graphContainer.value as HTMLElement, true, 240, 320) @@ -388,6 +400,7 @@ const nodeClick = (e, x, y, node, view) => { getConfigProcessWorker(node.id) getConfigProcessEquipment(node.id) processCode.value = node.id + currentNode.value=node } const searchTableRef = ref() @@ -453,9 +466,10 @@ const doPublishPlan= ()=>{ endTime: detailData.value.endTime, taskMode: detailData.value.taskMode } - //console.log("-------",data) + let res = OrderDayApi.publishPlan(data) - if(res.code==0){ + console.log("---doPublishPlan-- 458--",res) + if(res.code===0){ message.success("计划发布成功") }else { message.error(res.msg) diff --git a/src/views/mes/orderDay/index.vue b/src/views/mes/orderDay/index.vue index a4b55b138..857c364a2 100644 --- a/src/views/mes/orderDay/index.vue +++ b/src/views/mes/orderDay/index.vue @@ -264,7 +264,7 @@ const openForm = (type: string, row?: any) => { const formsSuccess = async (formType,data) => { if (formType === 'create') { - let ret=await OrderDayApi.createOrderDay(data) + let ret= OrderDayApi.createOrderDay(data) if(ret===undefined || ret===null){ message.error(t('common.networkError')) }else{ @@ -272,7 +272,7 @@ const formsSuccess = async (formType,data) => { } } else { - let ret=await OrderDayApi.updateOrderDay(data) + let ret= OrderDayApi.updateOrderDay(data) if(ret.code==0){ message.success(t('common.updateSuccess')) }else{ diff --git a/src/views/mes/workScheduling/workScheduling.data.ts b/src/views/mes/workScheduling/workScheduling.data.ts index 1ed99d358..242940602 100644 --- a/src/views/mes/workScheduling/workScheduling.data.ts +++ b/src/views/mes/workScheduling/workScheduling.data.ts @@ -1,5 +1,6 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import { dateFormatter } from '@/utils/formatTime' +import { ElTag } from 'element-plus' // 表单校验 export const WorkSchedulingRules = reactive({ @@ -48,6 +49,13 @@ export const WorkScheduling = useCrudSchemas(reactive([ sort: 'custom', isSearch: true, isForm: true, + form:{ + component: 'Input', + componentProps: { + placeholder: '请输入计划编号', + disabled:true + } + } }, { label: '工单编号', @@ -88,7 +96,7 @@ export const WorkScheduling = useCrudSchemas(reactive([ label: '计划数量', field: 'planCount', sort: 'custom', - isForm: true, + isForm: false, }, { label: '完工数量', @@ -143,7 +151,7 @@ export const WorkScheduling = useCrudSchemas(reactive([ label: '工单模式', field: 'formType', sort: 'custom', - isForm: true, + isForm: false, dictType: DICT_TYPE.MES_WORKBILL_MODEL, dictClass: 'string', form: { @@ -173,7 +181,7 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ field: 'id', sort: 'custom', isSearch: false, - isTable: false, + isTable: true, isForm:false, isDetail:false, }, @@ -186,15 +194,7 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ isForm:false, isDetail:false, }, - { - label: '备注', - field: 'remark', - sort: 'custom', - isSearch: false, - isTable: false, - isForm:false, - isDetail:false, - }, + { label: '创建时间', field: 'createTime', @@ -219,16 +219,16 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ sort: 'custom', isSearch: true, }, - { - label: '任务ID', - field: 'schedulingId', - sort: 'custom', - isSearch: true, - form: { - component: 'InputNumber', - value: 0 - }, - }, + // { + // label: '任务ID', + // field: 'schedulingId', + // sort: 'custom', + // isSearch: true, + // form: { + // component: 'InputNumber', + // value: 0 + // }, + // }, { label: '任务序号', field: 'taskSort', @@ -247,30 +247,55 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ { label: '允许工位', field: 'workstationValidate', + formatter: (_: Recordable, __: TableColumn, cellValue: String) => { + return h( + ElTag, + { + type:'primary' + }, + () => + JSON.parse(cellValue).map((item: any) => { + return '['+item.name+']' + }).join('\r\n') + ) + }, sort: 'custom', }, { label: '允许设备', field: 'deviceValidate', + formatter: (_: Recordable, __: TableColumn, cellValue: String) => { + return h( + ElTag, + { + type:'primary' + }, + () => + JSON.parse(cellValue).map((item: any) => { + return '['+item.name+']' + }).join('\r\n') + ) + }, sort: 'custom', }, { label: '允许人员', field: 'personValidate', + formatter: (_: Recordable, __: TableColumn, cellValue: String) => { + return h( + ElTag, + { + type:'primary' + }, + () => + JSON.parse(cellValue).map((item: any) => { + return '['+item.name+']' + }).join('\r\n') + ) + }, sort: 'custom', }, - { - label: '报工人', - field: 'reportPerson', - sort: 'custom', - isSearch: true, - }, - { - label: '生产人', - field: 'receivePerson', - sort: 'custom', - isSearch: true, - }, + { label: '计划数量', field: 'planCount', @@ -280,6 +305,12 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ value: 0 }, }, + { + label: '报工人', + field: 'reportPerson', + sort: 'custom', + isSearch: true, + }, { label: '报工数量', field: 'reportCount', @@ -328,10 +359,26 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ sort: 'custom', isSearch: true, }, + + { + label: '生产人', + field: 'receivePerson', + sort: 'custom', + isSearch: true, + }, + // { + // label: '生产物料', + // field: 'materialValidate', + // sort: 'custom', + // }, { - label: '生产物料', - field: 'materialValidate', + label: '备注', + field: 'remark', sort: 'custom', + isSearch: false, + isTable: false, + isForm:false, + isDetail:false, }, { label: '操作', diff --git a/src/views/mes/workSchedulingQaform/index.vue b/src/views/mes/workSchedulingQaform/index.vue new file mode 100644 index 000000000..ac06996b3 --- /dev/null +++ b/src/views/mes/workSchedulingQaform/index.vue @@ -0,0 +1,244 @@ + + + diff --git a/src/views/mes/workSchedulingQaform/workSchedulingQaform.data.ts b/src/views/mes/workSchedulingQaform/workSchedulingQaform.data.ts new file mode 100644 index 000000000..eaaf4d434 --- /dev/null +++ b/src/views/mes/workSchedulingQaform/workSchedulingQaform.data.ts @@ -0,0 +1,208 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +// 表单校验 +export const WorkSchedulingQaformRules = reactive({ + concurrencyStamp: [required], +}) + +export const WorkSchedulingQaform = useCrudSchemas(reactive([ + { + label: '删除时间', + field: 'deleteTime', + sort: 'custom', + formatter: dateFormatter, + isSearch: false, + isTable: false, + isForm: false, + isDetail:false, + 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: 'id', + sort: 'custom', + isForm: false, + }, + { + label: '状态', + field: 'status', + sort: 'custom', + isSearch: false, + isTable: false, + isForm: false, + isDetail:false, + form: { + component: 'Radio' + }, + }, + { + label: '并发乐观锁', + field: 'concurrencyStamp', + sort: 'custom', + iisSearch: false, + isTable: false, + isForm: false, + isDetail:false, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + 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: 'deleter', + sort: 'custom', + isSearch: false, + isTable: false, + isForm: false, + isDetail:false, + }, + { + label: '位置ID', + field: 'siteId', + sort: 'custom', + isSearch: false, + isTable: false, + isForm: false, + isDetail:false, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '主计划编号', + field: 'planMasterCode', + sort: 'custom', + isSearch: true, + }, + { + label: '工单编号', + field: 'schedulingCode', + sort: 'custom', + isSearch: true, + }, + { + label: '工序编号', + field: 'nodeCode', + sort: 'custom', + isSearch: true, + }, + { + label: '检验单编号', + field: 'qaFormNo', + sort: 'custom', + isSearch: true, + }, + { + label: '检验单名称', + field: 'qaFormName', + sort: 'custom', + isSearch: true, + }, + { + label: '检验类型', + field: 'qaFormType', + sort: 'custom', + isSearch: true, + + }, + { + label: '检验时间', + field: 'qaTime', + 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: 'qaCount', + sort: 'custom', + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '检测合格数量', + field: 'qaCountPassed', + sort: 'custom', + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '检测不合格数量', + field: 'qaCountNotpassed', + sort: 'custom', + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '合格率', + field: 'qaPassRate', + sort: 'custom', + isSearch: true, + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) diff --git a/src/views/qms/basicDataManage/inspectionScheme/addForm.vue b/src/views/qms/basicDataManage/inspectionScheme/addForm.vue index a899e68ef..11bdaa3b4 100644 --- a/src/views/qms/basicDataManage/inspectionScheme/addForm.vue +++ b/src/views/qms/basicDataManage/inspectionScheme/addForm.vue @@ -845,6 +845,7 @@ const open = async (type: string, row?: any, masterParmas?: any, titleName?: any available: 'TRUE', dynamicUpdateCode:'', description:"", + samplePieceSize:"", isWhole:"TRUE", process: [] } diff --git a/src/views/qms/basicDataManage/inspectionScheme/index.vue b/src/views/qms/basicDataManage/inspectionScheme/index.vue index e6a591505..419b53f99 100644 --- a/src/views/qms/basicDataManage/inspectionScheme/index.vue +++ b/src/views/qms/basicDataManage/inspectionScheme/index.vue @@ -180,6 +180,8 @@ const submitForm = async (formType,data) => { inspectionLevel: data.inspectionLevel, effectiveDate: data.effectiveDate, expirationDate: data.expirationDate, + samplePieceSize: data.samplePieceSize, + isWhole: data.isWhole, available: data.available, content:JSON.stringify(data.process) } diff --git a/src/views/qms/basicDataManage/inspectionScheme/inspectionScheme.data.ts b/src/views/qms/basicDataManage/inspectionScheme/inspectionScheme.data.ts index 324caf813..a15fe2c9c 100644 --- a/src/views/qms/basicDataManage/inspectionScheme/inspectionScheme.data.ts +++ b/src/views/qms/basicDataManage/inspectionScheme/inspectionScheme.data.ts @@ -67,6 +67,7 @@ export const InspectionTemplateRules = reactive({ quantifyQuantifyCode: [ { required: true, message: '请输入选择集编码', trigger: 'blur' } ], + isWhole: [{ required: true}], }) export const InspectionSchemeMain = useCrudSchemas(reactive([ { diff --git a/src/views/qms/inspection/inspectionRequest/index.vue b/src/views/qms/inspection/inspectionRequest/index.vue index a25100b0e..be4b972ee 100644 --- a/src/views/qms/inspection/inspectionRequest/index.vue +++ b/src/views/qms/inspection/inspectionRequest/index.vue @@ -61,7 +61,7 @@