diff --git a/src/api/mes/holidayCalendar/index.ts b/src/api/mes/holidayCalendar/index.ts new file mode 100644 index 000000000..8bd1e0808 --- /dev/null +++ b/src/api/mes/holidayCalendar/index.ts @@ -0,0 +1,59 @@ +import request from '@/config/axios' + +export interface HolidayCalendarVO { + id: number + holidayDate: Date + endTime: Date + textOne: string + textTwo: string + textThree: string + textFour: string + textFive: string + deleteTime: Date + status: string + concurrencyStamp: number + remark: string + deleter: string + siteId: number +} + +// 查询节假日设置日历列表 +export const getHolidayCalendarPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/mes/holidayCalendar/senior', data }) + } else { + return await request.get({ url: `/mes/holidayCalendar/page`, params }) + } +} + +// 查询节假日设置日历详情 +export const getHolidayCalendar = async (id: number) => { + return await request.get({ url: `/mes/holidayCalendar/get?id=` + id }) +} + +// 新增节假日设置日历 +export const createHolidayCalendar = async (data: HolidayCalendarVO) => { + return await request.post({ url: `/mes/holidayCalendar/create`, data }) +} + +// 修改节假日设置日历 +export const updateHolidayCalendar = async (data: HolidayCalendarVO) => { + return await request.put({ url: `/mes/holidayCalendar/update`, data }) +} + +// 删除节假日设置日历 +export const deleteHolidayCalendar = async (id: number) => { + return await request.delete({ url: `/mes/holidayCalendar/delete?id=` + id }) +} + +// 导出节假日设置日历 Excel +export const exportHolidayCalendar = async (params) => { + return await request.download({ url: `/mes/holidayCalendar/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/mes/holidayCalendar/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/mes/holidaySetting/index.ts b/src/api/mes/holidaySetting/index.ts deleted file mode 100644 index 979a7e633..000000000 --- a/src/api/mes/holidaySetting/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -import request from '@/config/axios' - -export interface HolidaySettingVO { - id: number - textOne: string - textTwo: string - textThree: string - textFour: string - textFive: string - deleteTime: Date - status: string - concurrencyStamp: number - remark: string - deleter: string - siteId: number - changeEmplId: number - holidayDate: Date - holidayFlag: string - holidayName: string -} - -// 查询节假日设置列表 -export const getHolidaySettingPage = async (params) => { - if (params.isSearch) { - delete params.isSearch - const data = {...params} - return await request.post({ url: '/mes/holidaySetting/senior', data }) - } else { - return await request.get({ url: `/mes/holidaySetting/page`, params }) - } -} - -// 查询节假日设置详情 -export const getHolidaySetting = async (id: number) => { - return await request.get({ url: `/mes/holidaySetting/get?id=` + id }) -} - -// 新增节假日设置 -export const createHolidaySetting = async (data: HolidaySettingVO) => { - return await request.post({ url: `/mes/holidaySetting/create`, data }) -} - -// 修改节假日设置 -export const updateHolidaySetting = async (data: HolidaySettingVO) => { - return await request.put({ url: `/mes/holidaySetting/update`, data }) -} - -// 删除节假日设置 -export const deleteHolidaySetting = async (id: number) => { - return await request.delete({ url: `/mes/holidaySetting/delete?id=` + id }) -} - -// 导出节假日设置 Excel -export const exportHolidaySetting = async (params) => { - return await request.download({ url: `/mes/holidaySetting/export-excel`, params }) -} - -// 下载用户导入模板 -export const importTemplate = () => { - return request.download({ url: '/mes/holidaySetting/get-import-template' }) -} \ No newline at end of file diff --git a/src/api/mes/ordermonthplan/index.ts b/src/api/mes/ordermonthplan/index.ts new file mode 100644 index 000000000..3c86a1a5c --- /dev/null +++ b/src/api/mes/ordermonthplan/index.ts @@ -0,0 +1,60 @@ +import request from '@/config/axios' + +export interface MesOrderMonthMainVO { + deleteTime: Date + id: number + status: string + concurrencyStamp: number + remark: string + deleter: string + siteId: number + sourceType: string + planMasterCode: string + planSubCode: string + planType: string + checker: string + checkDate: string + factoryCode: string + factoryName: string +} + +// 查询订单计划月主列表 +export const getMesOrderMonthMainPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/plan/mes-order-month-main/senior', data }) + } else { + return await request.get({ url: `/plan/mes-order-month-main/page`, params }) + } +} + +// 查询订单计划月主详情 +export const getMesOrderMonthMain = async (id: number) => { + return await request.get({ url: `/plan/mes-order-month-main/get?id=` + id }) +} + +// 新增订单计划月主 +export const createMesOrderMonthMain = async (data: MesOrderMonthMainVO) => { + return await request.post({ url: `/plan/mes-order-month-main/create`, data }) +} + +// 修改订单计划月主 +export const updateMesOrderMonthMain = async (data: MesOrderMonthMainVO) => { + return await request.put({ url: `/plan/mes-order-month-main/update`, data }) +} + +// 删除订单计划月主 +export const deleteMesOrderMonthMain = async (id: number) => { + return await request.delete({ url: `/plan/mes-order-month-main/delete?id=` + id }) +} + +// 导出订单计划月主 Excel +export const exportMesOrderMonthMain = async (params) => { + return await request.download({ url: `/plan/mes-order-month-main/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/plan/mes-order-month-main/get-import-template' }) +} diff --git a/src/api/mes/reworkBatch/index.ts b/src/api/mes/reworkBatch/index.ts new file mode 100644 index 000000000..0ab7e798c --- /dev/null +++ b/src/api/mes/reworkBatch/index.ts @@ -0,0 +1,76 @@ +import request from '@/config/axios' + +export interface ReworkBatchVO { + deleteTime: Date + id: number + status: string + concurrencyStamp: number + remark: string + deleter: string + siteId: number + reworkType: string + productionCode: string + productionCount: string + reworkAction: string + replaceFlag: string + reworkPersoncode: string + reworkTime: Date + reworkResult: string + reworkbillNo: string +} + +// 查询返工登记批量列表 +export const getReworkBatchPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/mes/rework-batch/senior', data }) + } else { + return await request.get({ url: `/mes/rework-batch/page`, params }) + } +} + +// 查询返工登记批量详情 +export const getReworkBatch = async (id: number) => { + return await request.get({ url: `/mes/rework-batch/get?id=` + id }) +} + +// 新增返工登记批量 +export const createReworkBatch = async (data: ReworkBatchVO) => { + return await request.post({ url: `/mes/rework-batch/create`, data }) +} + +// 修改返工登记批量 +export const updateReworkBatch = async (data: ReworkBatchVO) => { + return await request.put({ url: `/mes/rework-batch/update`, data }) +} + +// 删除返工登记批量 +export const deleteReworkBatch = async (id: number) => { + return await request.delete({ url: `/mes/rework-batch/delete?id=` + id }) +} + +// 中止返工登记单件 +export const suspendReworkSingle = async (id: number) => { + return await request.delete({ url: `/mes/rework-batch/suspend?id=` + id }) +} + +// 领取返工登记单件 +export const receiveReworkSingle = async (id: number) => { + return await request.put({ url: `/mes/rework-batch/receive?id=` + id }) +} + +// 完成返工登记单件 +export const finishReworkSingle = async (id: number) => { + return await request.put({ url: `/mes/rework-batch/finish?id=` + id }) +} + +// 导出返工登记批量 Excel +export const exportReworkBatch = async (params) => { + return await request.download({ url: `/mes/rework-batch/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/mes/rework-batch/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/mes/reworkSingle/index.ts b/src/api/mes/reworkSingle/index.ts index 596a908cc..d84be3231 100644 --- a/src/api/mes/reworkSingle/index.ts +++ b/src/api/mes/reworkSingle/index.ts @@ -49,6 +49,22 @@ export const deleteReworkSingle = async (id: number) => { return await request.delete({ url: `/mes/rework-single/delete?id=` + id }) } +// 中止返工登记单件 +export const suspendReworkSingle = async (id: number) => { + return await request.delete({ url: `/mes/rework-single/suspend?id=` + id }) +} + +// 领取返工登记单件 +export const receiveReworkSingle = async (id: number) => { + return await request.put({ url: `/mes/rework-single/receive?id=` + id }) +} + +// 完成返工登记单件 +export const finishReworkSingle = async (id: number) => { + return await request.put({ url: `/mes/rework-single/finish?id=` + id }) +} + + // 导出返工登记单件 Excel export const exportReworkSingle = async (params) => { return await request.download({ url: `/mes/rework-single/export-excel`, params }) 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/inspectionTemplate/index.ts b/src/api/qms/inspectionTemplate/index.ts index 78bc8235f..1c07a30d3 100644 --- a/src/api/qms/inspectionTemplate/index.ts +++ b/src/api/qms/inspectionTemplate/index.ts @@ -3,6 +3,28 @@ import request from '@/config/axios' // 查询采样过程列表 -export const getInspectionProcessPage = async (params) => { - return await request.get({ url: `/qms/inspection-process/page`}) +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/sampleCode/index.ts b/src/api/qms/sampleCode/index.ts index 021edea4e..3f8e22f45 100644 --- a/src/api/qms/sampleCode/index.ts +++ b/src/api/qms/sampleCode/index.ts @@ -5,13 +5,13 @@ export interface SampleCodeVO { code: string batchLowLimiting: number batchUpperLimiting: number - s1: number - s2: number - s3: number - s4: number - g1: number - g2: number - g3: number + s1: string + s2: string + s3: string + s4: string + g1: string + g2: string + g3: string available: string } diff --git a/src/api/qms/samplingProcess/index.ts b/src/api/qms/samplingProcess/index.ts index 68a42f63a..96404d545 100644 --- a/src/api/qms/samplingProcess/index.ts +++ b/src/api/qms/samplingProcess/index.ts @@ -3,7 +3,7 @@ import request from '@/config/axios' export interface SamplingProcessVO { id: number code: string - describe: string + description: string sampleType: string evaluationMode: string sampleSize: number @@ -50,4 +50,4 @@ export const exportSamplingProcess = async (params) => { // 下载用户导入模板 export const importTemplate = () => { return request.download({ url: '/qms/sampling-process/get-import-template' }) -} \ No newline at end of file +} diff --git a/src/api/qms/samplingScheme/index.ts b/src/api/qms/samplingScheme/index.ts index c2b247e56..34dfe4d83 100644 --- a/src/api/qms/samplingScheme/index.ts +++ b/src/api/qms/samplingScheme/index.ts @@ -4,7 +4,6 @@ export interface SamplingSchemeVO { id: number code: string describe: string - status: string available: string } diff --git a/src/components/BasicForm/src/BasicForm.vue b/src/components/BasicForm/src/BasicForm.vue index bdeb41002..4977efef5 100644 --- a/src/components/BasicForm/src/BasicForm.vue +++ b/src/components/BasicForm/src/BasicForm.vue @@ -266,6 +266,12 @@ const props = defineProps({ required: false, default: false }, + // TableForm 的第几列按钮 + indexTableColumn :{ + type: Number, + required: false, + default: 0 + } }) const { t } = useI18n() // 国际化 @@ -576,7 +582,7 @@ const handleAddTable = () => { tableAllSchemas.value.tableFormColumns.forEach(item => { tableFormKeys[item.field] = item.default ? item.default : '' }) - inpuFocus(tableAllSchemas.value.tableFormColumns[0],tableFormKeys,0) + inpuFocus(tableAllSchemas.value.tableFormColumns[props.indexTableColumn],tableFormKeys,0) }else{ emit('handleAddTable') } diff --git a/src/layout/components/CategoryHeader.vue b/src/layout/components/CategoryHeader.vue new file mode 100644 index 000000000..dc9876512 --- /dev/null +++ b/src/layout/components/CategoryHeader.vue @@ -0,0 +1,109 @@ + + + + diff --git a/src/layout/components/Menu/src/Menu.vue b/src/layout/components/Menu/src/Menu.vue index 9033616fe..c6880f299 100644 --- a/src/layout/components/Menu/src/Menu.vue +++ b/src/layout/components/Menu/src/Menu.vue @@ -45,6 +45,26 @@ export default defineComponent({ unref(layout) === 'cutMenu' ? permissionStore.getMenuTabRouters : permissionStore.getRouters ) + const categoryRoutes = computed(() => { + const allRoutes = unref(layout) === 'cutMenu' ? permissionStore.getMenuTabRouters : permissionStore.getRouters + const categoryPath = appStore.getCategoryRoutePath + let findRoutes = allRoutes.find(item=>!item.meta.hidden&&item.path === categoryPath) + if(findRoutes){ + findRoutes = JSON.parse(JSON.stringify(findRoutes)) + findRoutes?.children?.forEach(item => { + item.path = findRoutes?.path+'/'+item.path + }); + } + let homeRoute = allRoutes.find(item=>!item.meta.hidden&&item.path === '/') + if(categoryPath!=homeRoute?.path&&homeRoute){ + homeRoute = JSON.parse(JSON.stringify(homeRoute)) + homeRoute?.children?.forEach(item => { + item.path = homeRoute?.path+item.path + }); + } + return categoryPath!=homeRoute?.path?[...homeRoute?.children||[],...findRoutes?.children||[]]:[...findRoutes?.children||[]]||homeRoute||[] + }) + const collapse = computed(() => appStore.getCollapse) const uniqueOpened = computed(() => appStore.getUniqueOpened) @@ -95,7 +115,7 @@ export default defineComponent({ {{ default: () => { const { renderMenuItem } = useRenderMenuItem(unref(menuMode)) - return renderMenuItem(unref(routers)) + return appStore.getShowCategoryMenu?renderMenuItem(unref(categoryRoutes)):renderMenuItem(unref(routers)) } }} diff --git a/src/layout/components/useRenderLayout.tsx b/src/layout/components/useRenderLayout.tsx index 2c5ae80d5..4d9ea8335 100644 --- a/src/layout/components/useRenderLayout.tsx +++ b/src/layout/components/useRenderLayout.tsx @@ -6,6 +6,7 @@ import { TagsView } from '@/layout/components/TagsView' import { Logo } from '@/layout/components/Logo' import AppView from './AppView.vue' import ToolHeader from './ToolHeader.vue' +import CategoryHeader from './CategoryHeader.vue' import { ElScrollbar } from 'element-plus' import { useDesign } from '@/hooks/web/useDesign' import RouterSearch from '@/components/RouterSearch/index.vue' @@ -111,6 +112,12 @@ export const useRenderLayout = () => { ]} style="transition: all var(--transition-time-02);" > + {appStore.getShowCategoryMenu?():undefined} ([ +export const HolidayCalendar = useCrudSchemas(reactive([ { - label: 'id', + label: 'ID', field: 'id', sort: 'custom', isForm: false, }, + { + label: '日期', + field: 'holidayDate', + 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: 'endTime', + 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: 'textOne', @@ -122,50 +167,6 @@ export const HolidaySetting = useCrudSchemas(reactive([ value: 0 }, }, - { - label: '更改ID', - field: 'changeEmplId', - sort: 'custom', - isSearch: true, - form: { - component: 'InputNumber', - value: 0 - }, - }, - { - label: '节假日日期', - field: 'holidayDate', - 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: 'holidayFlag', - sort: 'custom', - isSearch: true, - }, - { - label: '节假日名称', - field: 'holidayName', - sort: 'custom', - isSearch: true, - }, { label: '操作', field: 'action', diff --git a/src/views/mes/holidayCalendar/index.vue b/src/views/mes/holidayCalendar/index.vue new file mode 100644 index 000000000..05ec182c2 --- /dev/null +++ b/src/views/mes/holidayCalendar/index.vue @@ -0,0 +1,43 @@ + + + + + \ No newline at end of file diff --git a/src/views/mes/holidaySetting/index.vue b/src/views/mes/ordermonthplan/index.vue similarity index 68% rename from src/views/mes/holidaySetting/index.vue rename to src/views/mes/ordermonthplan/index.vue index bb63733b0..31e9bca22 100644 --- a/src/views/mes/holidaySetting/index.vue +++ b/src/views/mes/ordermonthplan/index.vue @@ -1,18 +1,18 @@ -./holidaySetting.data \ No newline at end of file diff --git a/src/views/mes/ordermonthplan/mesOrderMonthMain.data.ts b/src/views/mes/ordermonthplan/mesOrderMonthMain.data.ts new file mode 100644 index 000000000..b30b0fc88 --- /dev/null +++ b/src/views/mes/ordermonthplan/mesOrderMonthMain.data.ts @@ -0,0 +1,86 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +// 表单校验 +export const MesOrderMonthMainRules = reactive({ +}) + +export const MesOrderMonthMain = useCrudSchemas(reactive([ + { + label: '备注', + field: 'remark', + sort: 'custom', + isTable: false + }, + { + 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: 'creator', + sort: 'custom', + isSearch: true, + isForm: false + }, + { + label: '主计划编码', + field: 'planMasterCode', + sort: 'custom', + isSearch: true + }, + { + label: '计划辅助编码', + field: 'planSubCode', + sort: 'custom', + isSearch: true + }, + { + label: '计划类型', + field: 'planType', + sort: 'custom', + isSearch: true, + form: { + component: 'SelectV2' + } + }, + { + label: '审核人', + field: 'checker', + sort: 'custom', + isSearch: true + }, + { + label: '工厂编码', + field: 'factoryCode', + sort: 'custom', + isSearch: true + }, + { + label: '工厂名称', + field: 'factoryName', + sort: 'custom', + isSearch: true + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) diff --git a/src/views/mes/reworkBatch/index.vue b/src/views/mes/reworkBatch/index.vue new file mode 100644 index 000000000..f2b515fd3 --- /dev/null +++ b/src/views/mes/reworkBatch/index.vue @@ -0,0 +1,318 @@ + + + diff --git a/src/views/mes/reworkBatch/reworkBatch.data.ts b/src/views/mes/reworkBatch/reworkBatch.data.ts new file mode 100644 index 000000000..cb89615e5 --- /dev/null +++ b/src/views/mes/reworkBatch/reworkBatch.data.ts @@ -0,0 +1,229 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' +import * as ItembasicApi from '@/api/wms/itembasic' +import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data' + +// 表单校验 +export const ReworkBatchRules = reactive({ + reworkType: [required], + productionCode:[required], + replaceFlag:[required], + status:[required], +}) + +export const ReworkBatch = 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', + isSearch: false, + isTable: false, + isForm:false, + isDetail:false, + }, + { + label: '并发乐观锁', + field: 'concurrencyStamp', + sort: 'custom', + isSearch: false, + isTable: false, + isForm:false, + isDetail:false, + form: { + component: 'InputNumber', + value: 0 + }, + }, + + { + label: '创建时间', + field: 'createTime', + 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')] + } + }, + }, + { + 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: 'reworkbillNo', + sort: 'custom', + isSearch: true, + isForm: false, + isDetail: true + }, + { + label: '工作类型', + field: 'reworkType', + sort: 'custom', + isSearch: true, + dictType: DICT_TYPE.REWORK_TYPE, + dictClass: 'string', + }, + { + label: '产品编码', + field: 'productionCode', + sort: 'custom', + isSearch: true, + form: { + componentProps: { + isSearchList: true, // 开启查询弹窗 + searchTitle: '产品编码', // 查询弹窗标题 + searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类 + searchField: 'code', // 查询弹窗赋值字段 + searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法 + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + }, + { + key: 'type', + action: 'in', // 查询拼接条件 + isSearch: true, // 使用自定义拼接条件 + value: 'BCP,CCP',//,SEMI] + isMainValue: false + }] + } + } + }, + { + label: '数量', + field: 'productionCount', + sort: 'custom', + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '返修动作', + field: 'reworkAction', + sort: 'custom', + isSearch: true, + }, + { + label: '是否有替换件', + field: 'replaceFlag', + sort: 'custom', + isSearch: true, + dictType: DICT_TYPE.REWORK_REPLACE_FLAG, + dictClass: 'string', + }, + { + label: '返修人员', + field: 'reworkPersoncode', + sort: 'custom', + isSearch: true, + }, + { + label: '返修时间', + field: 'reworkTime', + 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: 'reworkResult', + sort: 'custom', + isSearch: true, + }, + + { + label: '状态', + field: 'status', + sort: 'custom', + isSearch: true, + dictType: DICT_TYPE.REWORK_STATUS, + dictClass: 'string', + }, + { + label: '备注', + field: 'remark', + sort: 'custom', + isSearch: false, + isTable: false, + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) diff --git a/src/views/mes/reworkSingle/index.vue b/src/views/mes/reworkSingle/index.vue index 2265bb135..3fe6a7eb8 100644 --- a/src/views/mes/reworkSingle/index.vue +++ b/src/views/mes/reworkSingle/index.vue @@ -33,7 +33,7 @@ @@ -131,18 +131,38 @@ const buttonBaseClick = (val, item) => { } } +// 根据状态返回该按钮是否显示 +const isShowMainButton = (row,val) => { + if (val.indexOf(row.status) > -1) { + return false + } else { + return true + } +} + // 列表-操作按钮 -const butttondata = [ - defaultButtons.mainListEditBtn({hasPermi:'mes:reworkSingle:update'}), // 编辑 - defaultButtons.mainListDeleteBtn({hasPermi:'mes:reworkSingle:delete'}), // 删除 -] +const butttondata = (row) => { + return [ + defaultButtons.mainListEditBtn({hide: isShowMainButton(row,['1']),hasPermi:'mes:reworkSingle:update'}), // 编辑 + defaultButtons.mainListSuspend1Btn({hide: isShowMainButton(row,['1']),hasPermi:'mes:reworkSingle:delete'}), // 中止1 + defaultButtons.mainListReceiveBtn({hide: isShowMainButton(row,['1']),hasPermi:'mes:reworkSingle:update'}), // 领取 + defaultButtons.mainListSuspend2Btn({hide: isShowMainButton(row,['2']),hasPermi:'mes:reworkSingle:delete'}), // 中止2 + defaultButtons.mainListFinishBtn({hide: isShowMainButton(row,['2']),hasPermi:'mes:reworkSingle:update'}), // 完成 + ] +} // 列表-操作按钮事件 const buttonTableClick = async (val, row) => { if (val == 'edit') { // 编辑 openForm('update', row) - } else if (val == 'delete') { // 删除 - handleDelete(row.id) + } else if (val == 'suspend') { // 中止1 + handleSuspend(row.id) + } else if (val == 'receive') { // 领取 + handleReceive(row.id) + } else if (val == 'suspend') { // 中止2 + handleSuspend(row.id) + } else if (val == 'finish') { // 完成 + handleFinish(row.id) } } @@ -209,6 +229,46 @@ const handleDelete = async (id: number) => { } catch {} } +/** 中止按钮操作 */ +const handleSuspend = async (id: number) => { + try { + // 中止的二次确认 + await message.delConfirm('是否中止所选中任务?'); + // 发起删除 + await ReworkSingleApi.suspendReworkSingle(id) + message.success(t('中止成功')) + // 刷新列表 + await getList() + } catch {} +} + + +/** 领取按钮操作 */ +const handleReceive = async (id: number) => { + try { + // 中止的二次确认 + await message.delConfirm('是否领取所选中任务?'); + // 发起删除 + await ReworkSingleApi.receiveReworkSingle(id) + message.success(t('领取成功')) + // 刷新列表 + await getList() + } catch {} +} + +/** 完成按钮操作 */ +const handleFinish = async (id: number) => { + try { + // 中止的二次确认 + await message.delConfirm('是否完成所选中任务?'); + // 发起删除 + await ReworkSingleApi.finishReworkSingle(id) + message.success(t('任务已完成')) + // 刷新列表 + await getList() + } catch {} +} + /** 导出按钮操作 */ const exportLoading = ref(false) // 导出的加载中 const handleExport = async () => { diff --git a/src/views/mes/workstation/components/Detail.vue b/src/views/mes/workstation/components/Detail.vue index 81dc468ec..d950d28da 100644 --- a/src/views/mes/workstation/components/Detail.vue +++ b/src/views/mes/workstation/components/Detail.vue @@ -138,6 +138,8 @@ @onBlur="onBlur" @formFormDateChange="formFormDateChange" /> + + @@ -299,7 +301,18 @@ const props = defineProps({ type: Boolean, required: false, default: true - } + }, + //是否直接展示搜索表单 + isOpenSearchTable:{ + type: Boolean, + required: false, + default: false + }, + searchTableSchema: { + type: Array, + required: false, + default: null + }, }) const isShowDrawer = ref(false) const detailLoading = ref(false) @@ -381,6 +394,79 @@ const HeadButttondata = ref() // 列表-操作按钮 const buttondata = ref() + +/** isOpenSearchTable 对应 表格弹窗 */ +const initModel = (schema: FormSchema[], formModel: Recordable) => { + const model: Recordable = { ...formModel } + schema.map((v) => { + // 如果是hidden,就删除对应的值 + if (v.hidden) { + delete model[v.field] + } else if (v.component && v.component !== 'Divider') { + const hasField = Reflect.has(model, v.field) + // 如果先前已经有值存在,则不进行重新赋值,而是采用现有的值 + model[v.field] = hasField ? model[v.field] : v.value !== void 0 ? v.value : '' + } + }) + return model +} +const searchTableRef = ref() +const searchTableFormModel = ref({}) +if(props.isOpenSearchTable){ + searchTableFormModel.value = initModel(props.searchTableSchema.formSchema, unref(searchTableFormModel)) +} +const searchTableFormType = ref('') // 表单的类型:create - 新增;update - 修改 + + +// 直接打开表格数据 --> 对应:isOpenSearchTable === true +const opensearchTable = ( + formField, + searchField, + searchTitle, + searchAllSchemas, + searchPage, + searchCondition, + multiple, + type, + row +) => { + const _searchCondition = {} + // 判断查询条件中,是否存在指向主表的数据 + if (searchCondition && searchCondition.length > 0) { + // 转换筛选条件所需 + for (var i=0; i< searchCondition.length; i++ ) { + // 查询条件为主表某字段,需要赋值主表数据,数据来源是详情的,赋值需要从row中获取 + if (searchCondition[i].isMainValue) { + _searchCondition[searchCondition[i].key] = detailData + ? detailData.value[searchCondition[i].value] + : '' + }else{ + _searchCondition[searchCondition[i].key] = searchCondition[i].value + } + } + } + console.log(searchCondition) + console.log(_searchCondition) + searchTableRef.value.open( + searchTitle, + searchAllSchemas, + searchPage, + formField, + searchField, + multiple, + type, + row, + _searchCondition + ) +} +const searchTableSuccess1 = (formField, searchField, val, formRef) => { + console.log('searchTableSuccess1',val) + searchTableFormModel.value[formField] = val.map(item=>item[searchField]).join(',') + console.log('searchTableSuccess1',searchTableFormModel) + submitForm(searchTableFormType.value,searchTableFormModel.value) + emit('searchTableSuccessDetail', formField, searchField, val, formRef) +} + /** 打开弹窗 */ const formRef = ref() const titleNameRef = ref() @@ -512,7 +598,22 @@ const { getList } = tableMethodsRef.value const buttonBaseClick = (val, item) => { if (val == 'add') { // 新增 - openForm('create') + if(props.isOpenSearchTable){ + searchTableFormType.value = 'create' + // 如果需要直接打开表格数据 + const item = props.searchTableSchema.formSchema[0] + opensearchTable( + item.field, item?.componentProps?.searchField, + item?.componentProps?.searchTitle, + item?.componentProps?.searchAllSchemas, + item?.componentProps?.searchPage, + item?.componentProps?.searchCondition, + item?.componentProps?.multiple, + undefined,undefined + ) + }else{ + openForm('create') + } } else if (val == 'import') { // 导入 handleImport() @@ -559,7 +660,7 @@ const submitForm = async (formType, data) => { const rs = (await props.detailValidate) ? await props.detailValidate(data) : true if (!rs) return if (formType === 'create') { - await props.apiCreate(data) + await props.apiCreate(data.list.split(",")) message.success(t('common.createSuccess')) } else { await props.apiUpdate(data) diff --git a/src/views/mes/workstation/index.vue b/src/views/mes/workstation/index.vue index 8c3be7b0c..327d30923 100644 --- a/src/views/mes/workstation/index.vue +++ b/src/views/mes/workstation/index.vue @@ -52,22 +52,25 @@ @@ -83,7 +86,7 @@ import { TabsList, Team, Workstation, - WorkstationRules, popList + WorkstationRules, teamPopList,equipmentPopList,processPopList,stepPopList } from './workstation.data' import * as WorkstationApi from '@/api/mes/workstation' import * as defaultButtons from '@/utils/disposition/defaultButtons' @@ -95,9 +98,9 @@ import { import Detail from './components/Detail.vue' defineOptions({ name: 'Workstation' }) let tabsDeleteApi = WorkstationApi.deleteTeamRelation +let tabsCreateApi = WorkstationApi.createTeamRelation const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 -const teamRef = ref() const route = useRoute() // 路由信息 const routeName = ref() routeName.value = route.name @@ -270,6 +273,7 @@ const openDetail = (row: any, titleName: any, titleValue: any) => { const detailAllSchemas = ref(Team.allSchemas) const apiPage = ref(WorkstationApi.getTeamPage) const tableKey = ref("Team"); +let tmpPopList = teamPopList.allSchemas // tabs 切换事件 const changeTabs = (data) =>{ tableKey.value = data.prop @@ -277,18 +281,26 @@ const changeTabs = (data) =>{ apiPage.value = WorkstationApi.getTeamPage detailAllSchemas.value = Team.allSchemas tabsDeleteApi = WorkstationApi.deleteTeamRelation + tabsCreateApi = WorkstationApi.createTeamRelation + tmpPopList = teamPopList.allSchemas }else if(data.prop == 'Equipment'){ apiPage.value = WorkstationApi.getEquipmentPage detailAllSchemas.value = Equipment.allSchemas tabsDeleteApi = WorkstationApi.deleteEquipmentRelation + tabsCreateApi = WorkstationApi.createEquipmentRelation + tmpPopList = equipmentPopList.allSchemas }else if(data.prop == 'Process'){ apiPage.value = WorkstationApi.getProcessPage detailAllSchemas.value = Process.allSchemas tabsDeleteApi = WorkstationApi.deleteProcessRelation + tabsCreateApi = WorkstationApi.createProcessRelation + tmpPopList = processPopList.allSchemas }else if(data.prop == 'Opersteps'){ apiPage.value = WorkstationApi.getOperstepsPage detailAllSchemas.value = Opersteps.allSchemas tabsDeleteApi = WorkstationApi.deleteOperstepsRelation + tabsCreateApi = WorkstationApi.createOperstepsRelation + tmpPopList = stepPopList.allSchemas } } const teamListRef = ref() diff --git a/src/views/mes/workstation/mesOrderMonthMain.data.ts b/src/views/mes/workstation/mesOrderMonthMain.data.ts new file mode 100644 index 000000000..d766ae00a --- /dev/null +++ b/src/views/mes/workstation/mesOrderMonthMain.data.ts @@ -0,0 +1,83 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +// 表单校验 +export const MesOrderMonthMainRules = reactive({ +}) + +export const MesOrderMonthMain = useCrudSchemas(reactive([ + { + label: '备注', + field: 'remark', + sort: 'custom', + isTable: false + }, + { + 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: 'creator', + sort: 'custom', + isSearch: true, + isForm: false + }, + { + label: '主计划编码', + field: 'planMasterCode', + sort: 'custom', + isTable: false, + isSearch: true + }, + { + label: '计划辅助编码', + field: 'planSubCode', + sort: 'custom', + isTable: false, + isSearch: true + }, + { + label: '计划类型', + field: 'planType', + sort: 'custom', + isSearch: true, + form: { + component: 'SelectV2' + } + }, + { + label: '工厂编码', + field: 'factoryCode', + sort: 'custom', + isTable: false + }, + { + label: '工厂名称', + field: 'factoryName', + sort: 'custom', + isSearch: true, + isForm: false + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) diff --git a/src/views/mes/workstation/workstation.data.ts b/src/views/mes/workstation/workstation.data.ts index e5ac54c59..60e3aa682 100644 --- a/src/views/mes/workstation/workstation.data.ts +++ b/src/views/mes/workstation/workstation.data.ts @@ -1,10 +1,19 @@ import type {CrudSchema} from '@/hooks/web/useCrudSchemas' import {dateFormatter} from '@/utils/formatTime' import * as WorkstationApi from "@/api/mes/workstation"; +import {Workshop} from "@/views/wms/basicDataManage/factoryModeling/workshop/workshop.data"; +import * as WorkshopApi from "@/api/wms/workshop"; +import { + Productionline +} from "@/views/wms/basicDataManage/factoryModeling/productionline/productionline.data"; +import * as ProductionlineApi from "@/api/wms/productionline"; // 表单校验 export const WorkstationRules = reactive({ - code: [required] + code: [required], + name: [required], + workshopCode:[required], + productionLineCode: [required] }) export const TabsList = [{ label: "班组", @@ -43,14 +52,52 @@ export const Workstation = useCrudSchemas(reactive([ field: 'workshopCode', sort: 'custom', isSearch: true, - isForm: false + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '请选择车间代码', // 输入框占位文本 + searchField: 'code', // 查询弹窗赋值字段 + searchTitle: '车间信息', // 查询弹窗标题 + searchAllSchemas: Workshop.allSchemas, // 查询弹窗所需类 + searchPage: WorkshopApi.getWorkshopPage, // 查询弹窗所需分页方法 + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + }] + } + } }, { label: '生产线代码', field: 'productionLineCode', sort: 'custom', isSearch: true, - isForm: false + table: { + width: 150 + }, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '请选择生产线代码', // 输入框占位文本 + searchField: 'code', // 查询弹窗赋值字段 + searchTitle: '生产线信息', // 查询弹窗标题 + searchAllSchemas: Productionline.allSchemas, // 查询弹窗所需类 + searchPage: ProductionlineApi.getProductionlinePage, // 查询弹窗所需分页方法 + searchCondition: [{ + key:'workshopCode', + value:'workshopCode', + message: '请填写车间代码!', + isMainValue: true + },{ + key: 'available', + value: 'TRUE', + isMainValue: false + }] + } + } }, { label: '班组代码', @@ -95,6 +142,25 @@ export const Workstation = useCrudSchemas(reactive([ } }, }, + { + label: '是否可用', + field: 'available', + dictType: DICT_TYPE.TRUE_FALSE, + dictClass: 'string', + isTable: true, + sort: 'custom', + table: { + width: 150 + }, + form: { + component: 'Switch', + value: 'TRUE', + componentProps: { + inactiveValue: 'FALSE', + activeValue: 'TRUE' + } + }, + }, { label: '操作', field: 'action', @@ -214,21 +280,96 @@ export const Opersteps = useCrudSchemas(reactive([ isTableForm:true, } ])) -export const popList = useCrudSchemas(reactive([ +export const teamPopList = useCrudSchemas(reactive([ + { + label: '选择班组', + field: 'list', + sort: 'custom', + isSearch: false, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '请选择选择班组', // 输入框占位文本 + searchField: 'code', // 查询弹窗赋值字段 + searchTitle: '选择班组', // 查询弹窗标题 + searchAllSchemas: Team.allSchemas, // 查询弹窗所需类 + searchPage: WorkstationApi.checkTeamPageList, // 查询弹窗所需分页方法 + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + }] + } + } + } +])) +export const equipmentPopList = useCrudSchemas(reactive([ + { + label: '选择设备', + field: 'list', + sort: 'custom', + isSearch: false, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + multiple:true, + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '选择设备', // 输入框占位文本 + searchField: 'code', // 查询弹窗赋值字段 + searchTitle: '选择设备', // 查询弹窗标题 + searchAllSchemas: Team.allSchemas, // 查询弹窗所需类 + searchPage: WorkstationApi.checkEquipmentPageList, // 查询弹窗所需分页方法 + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + }] + } + } + } +])) +export const processPopList = useCrudSchemas(reactive([ + { + label: '选择工序', + field: 'list', + sort: 'custom', + isSearch: false, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + multiple:true, + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '选择工序', // 输入框占位文本 + searchField: 'code', // 查询弹窗赋值字段 + searchTitle: '选择工序', // 查询弹窗标题 + searchAllSchemas: Team.allSchemas, // 查询弹窗所需类 + searchPage: WorkstationApi.checkProcessPageList, // 查询弹窗所需分页方法 + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + }] + } + } + } +])) +export const stepPopList = useCrudSchemas(reactive([ { - label: '多选列表', - field: 'popCheckList', + label: '选择操作步骤', + field: 'list', sort: 'custom', isSearch: false, form: { // labelMessage: '信息提示说明!!!', componentProps: { + multiple:true, isSearchList: true, // 开启查询弹窗 - searchListPlaceholder: '请选择仓库代码', // 输入框占位文本 + searchListPlaceholder: '选择操作步骤', // 输入框占位文本 searchField: 'code', // 查询弹窗赋值字段 - searchTitle: '仓库信息', // 查询弹窗标题 + searchTitle: '选择操作步骤', // 查询弹窗标题 searchAllSchemas: Team.allSchemas, // 查询弹窗所需类 - searchPage: WorkstationApi.getTeamPage, // 查询弹窗所需分页方法 + searchPage: WorkstationApi.checkOperstepsPageList, // 查询弹窗所需分页方法 searchCondition: [{ key: 'available', value: 'TRUE', diff --git a/src/views/qms/basicDataManage/inspectionPlan/addForm.vue b/src/views/qms/basicDataManage/inspectionPlan/addForm.vue new file mode 100644 index 000000000..d20c0ba3d --- /dev/null +++ b/src/views/qms/basicDataManage/inspectionPlan/addForm.vue @@ -0,0 +1,864 @@ + + + + + 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 @@ + + + +./inspectionPlan.data \ No newline at end of file diff --git a/src/views/qms/basicDataManage/inspectionTemplate/agvLocationrelation.data.ts b/src/views/qms/basicDataManage/inspectionPlan/inspectionPlan.data.ts similarity index 57% rename from src/views/qms/basicDataManage/inspectionTemplate/agvLocationrelation.data.ts rename to src/views/qms/basicDataManage/inspectionPlan/inspectionPlan.data.ts index 9398a3fda..62e6c9f7c 100644 --- a/src/views/qms/basicDataManage/inspectionTemplate/agvLocationrelation.data.ts +++ b/src/views/qms/basicDataManage/inspectionPlan/inspectionPlan.data.ts @@ -1,157 +1,8 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import { dateFormatter } from '@/utils/formatTime' -import * as AreaApi from '@/api/wms/areabasic' -import { Area } from '@/views/wms/basicDataManage/factoryModeling/areabasic/areabasic.data' -import * as LocationApi from '@/api/wms/location' -import { Location } from '@/views/wms/basicDataManage/factoryModeling/location/location.data' -import * as InspectionProcessPageApi from '@/api/qms/inspectionTemplate' -let inspectionProcessPage = await InspectionProcessPageApi.getInspectionProcessPage() -inspectionProcessPage = inspectionProcessPage.list // 表单校验 -export const AgvLocationrelationRules = reactive({ - positionCode: [ - { required: true, message: '请填写AGV点位', trigger: 'change' } - ], - positionArea: [ - { required: true, message: '请填写AGV库区', trigger: 'change' } - ], - wmsArea: [ - { required: true, message: '请填写WMS库区', trigger: 'change' } - ], - wmsPosition: [ - { required: true, message: '请填写WMS库位', trigger: 'change' } - ] -}) -export const AgvLocationrelation = useCrudSchemas(reactive([ - { - label: '单据号', - field: 'reqCode', - sort: 'custom', - isSearch: true, - isForm: false, - }, - { - label: 'AGV点位', - field: 'positionCode', - sort: 'custom', - isSearch: false, - }, - { - label: 'AGV库区', - field: 'positionArea', - sort: 'custom', - isSearch: false, - }, - { - label: 'WMS库区', - field: 'wmsArea', - sort: 'custom', - isSearch: false, - form: { - // labelMessage: '信息提示说明!!!', - componentProps: { - isSearchList: true, // 开启查询弹窗 - searchListPlaceholder: '请选择库区代码', // 输入框占位文本 - searchField: 'code', // 查询弹窗赋值字段 - searchTitle: '库区信息', // 查询弹窗标题 - searchAllSchemas: Area.allSchemas, // 查询弹窗所需类 - searchPage: AreaApi.getAreaPage, // 查询弹窗所需分页方法 - searchCondition: [{ - key: 'available', - value: 'TRUE', - isMainValue: false - }] - } - } - }, - { - label: 'WMS库位', - field: 'wmsPosition', - sort: 'custom', - table: { - width: 150 - }, - form: { - // labelMessage: '信息提示说明!!!', - componentProps: { - isSearchList: true, // 开启查询弹窗 - searchListPlaceholder: '请选择库位代码', // 输入框占位文本 - searchField: 'code', // 查询弹窗赋值字段 - searchTitle: '库位信息', // 查询弹窗标题 - searchAllSchemas: Location.allSchemas, // 查询弹窗所需类 - searchPage: LocationApi.getLocationPage, // 查询弹窗所需分页方法 - searchCondition: [{ - key: 'available', - value: 'TRUE', - isMainValue: false - }, - { - key: 'areaCode', - value: "wmsArea", - message: '请选择库区代码!', - isMainValue: true - }] - } - } - }, - { - label: '是否可用', - field: 'available', - dictType: DICT_TYPE.TRUE_FALSE, - dictClass: 'string', - isTable: true, - isSearch: false, - sort: 'custom', - table: { - width: 150 - }, - form: { - component: 'Switch', - value: 'TRUE', - componentProps: { - inactiveValue: 'FALSE', - activeValue: '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')] - } - }, - detail: { - dateFormat: 'YYYY-MM-DD HH:mm:ss' - }, - isForm: false, - }, - { - label: '备注', - field: 'remark', - sort: 'custom', - isSearch: false, - }, - { - label: '操作', - field: 'action', - isForm: false, - isDetail: false, - table: { - width: 150, - fixed: 'right' - } - } -])) export const InspectionTemplateRules = reactive({ description: [ { required: true , message: '请填写描述', trigger: 'blur' } @@ -237,6 +88,15 @@ export const InspectionTemplateMain = useCrudSchemas(reactive([ label: '版本', field: 'version', sort: 'custom', + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } } ])) export const InspectionTemplateProcess = useCrudSchemas(reactive([ @@ -260,16 +120,6 @@ export const InspectionTemplateProcess = useCrudSchemas(reactive([ label: '检验方案模板编码', field: 'inspectionCode', sort: 'custom', - form:{ - component:'Select', - api: () => inspectionProcessPage, - componentProps:{ - optionsAlias: { - labelField: 'description', - valueField: 'id' - } - } - } },{ label: '顺序号', field: 'sequenceCode', @@ -277,16 +127,6 @@ export const InspectionTemplateProcess = useCrudSchemas(reactive([ label: '检验特性编码', field: 'inspectionCharCode', sort: 'custom', - form:{ - component:'Select', - api: () => inspectionProcessPage, - componentProps:{ - optionsAlias: { - labelField: 'description', - valueField: 'id' - } - } - } } ])) export const InspectionTemplateFeatures= useCrudSchemas(reactive([ @@ -309,44 +149,14 @@ export const InspectionTemplateFeatures= useCrudSchemas(reactive([ label: '检验方法编码', field: 'inspectionMethodCode', sort: 'custom', - form:{ - component:'Select', - api: () => inspectionProcessPage, - componentProps:{ - optionsAlias: { - labelField: 'description', - valueField: 'id' - } - } - } },{ label: '采样过程编码', field: 'dynamicUpdateCode', sort: 'custom', - form:{ - component:'Select', - api: () => inspectionProcessPage, - componentProps:{ - optionsAlias: { - labelField: 'description', - valueField: 'id' - } - } - } },{ label: '动态修改规则编码', field: 'inspectionMethod', sort: 'custom', - form:{ - component:'Select', - api: () => inspectionProcessPage, - componentProps:{ - optionsAlias: { - labelField: 'description', - valueField: 'id' - } - } - } },{ label: '是否允许修改特征值', field: 'isCanUpdate', diff --git a/src/views/qms/basicDataManage/inspectionTemplate/addForm.vue b/src/views/qms/basicDataManage/inspectionTemplate/addForm.vue index 930a4972b..555761be5 100644 --- a/src/views/qms/basicDataManage/inspectionTemplate/addForm.vue +++ b/src/views/qms/basicDataManage/inspectionTemplate/addForm.vue @@ -8,25 +8,25 @@ >
- - - - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + + + + --> - + - - + + - + - - + - + - + -
检验特性
- + - + - + - - - +
+ - + +
- - - +
+ - + +
- - - +
+ - + +
- - + + - - + + - + - + - - - + + + - - + + + + + + + - - + + - - + + + + - - + + + - + - + - - - +
+ - + +
@@ -240,12 +411,20 @@
- + + + + +
+