From 7044799b7600f2644a2a431bf045b78befec329a Mon Sep 17 00:00:00 2001 From: wangyufei <2267742828@qq.com> Date: Thu, 15 Aug 2024 13:29:44 +0800 Subject: [PATCH 01/25] =?UTF-8?q?=E8=87=B3=E5=B0=91=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E4=B8=80=E6=9D=A1=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productscrap/productscrapRequestMain/index.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/views/wms/productionManage/productscrap/productscrapRequestMain/index.vue b/src/views/wms/productionManage/productscrap/productscrapRequestMain/index.vue index dd3f32f3d..f6ccc530c 100644 --- a/src/views/wms/productionManage/productscrap/productscrapRequestMain/index.vue +++ b/src/views/wms/productionManage/productscrap/productscrapRequestMain/index.vue @@ -296,6 +296,10 @@ const buttonOperationClick = async (row, label, index,isSave = false)=> { } // 删除明细 const handleDeleteTableBom = (item, index) => { + if(detatableDataBom.tableList.length<=1){ + message.error('至少保留一条数据') + return + } let itemIndex = detatableDataBom.tableList.indexOf(item) if (itemIndex > -1) { detatableDataBom.tableList.splice(itemIndex, 1) @@ -303,6 +307,12 @@ const handleDeleteTableBom = (item, index) => { } const tableSelectionDeleteBom = (selection) => { + if(detatableDataBom.tableList.length<=1||detatableDataBom.tableList.length==selection.length){ + message.error('至少保留一条数据') + return + } + + detatableDataBom.tableList = detatableDataBom.tableList.filter(item => !selection.includes(item)) } From 314e2fda4c80f6ceac6878185de7a1d9b7fbf232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=BB=E7=A0=96-JAVA=5CAdministrator?= <591141169@qq.com> Date: Thu, 15 Aug 2024 13:37:57 +0800 Subject: [PATCH 02/25] =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=ACQ3=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=8D=95=E4=B8=8A=E4=BC=A0=20HL-5247?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspectionQ3/inspectionQ3Detail/index.ts | 64 ++ .../inspectionQ3/inspectionQ3Main/index.ts | 65 ++ src/views/qms/inspectionQThree/index.vue | 478 ++++++++++++++ .../qms/inspectionQThree/inspectionQ3.data.ts | 618 ++++++++++++++++++ 4 files changed, 1225 insertions(+) create mode 100644 src/api/qms/inspectionQ3/inspectionQ3Detail/index.ts create mode 100644 src/api/qms/inspectionQ3/inspectionQ3Main/index.ts create mode 100644 src/views/qms/inspectionQThree/index.vue create mode 100644 src/views/qms/inspectionQThree/inspectionQ3.data.ts diff --git a/src/api/qms/inspectionQ3/inspectionQ3Detail/index.ts b/src/api/qms/inspectionQ3/inspectionQ3Detail/index.ts new file mode 100644 index 000000000..796b25512 --- /dev/null +++ b/src/api/qms/inspectionQ3/inspectionQ3Detail/index.ts @@ -0,0 +1,64 @@ +import request from '@/config/axios' + +export interface InspectionQ3DetailVO { + id: number + masterId: number + number: string + itemCode: string + qty: number + uom: string + price: number + amount: number + costCode: string + defectCode: string + defectLocation: string + defectType: string + problemReason: string + available: string + deletionTime: Date + deleterId: string + extraProperties: string + concurrencyStamp: number + siteId: string +} + +// 查询Q3通知单子列表 +export const getInspectionQ3DetailPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = { ...params } + return await request.post({ url: '/qms/inspection-Q3-detail/senior', data }) + } else { + return await request.get({ url: `/qms/inspection-Q3-detail/page`, params }) + } +} + +// 查询Q3通知单子详情 +export const getInspectionQ3Detail = async (id: number) => { + return await request.get({ url: `/qms/inspection-Q3-detail/get?id=` + id }) +} + +// 新增Q3通知单子 +export const createInspectionQ3Detail = async (data: InspectionQ3DetailVO) => { + return await request.post({ url: `/qms/inspection-Q3-detail/create`, data }) +} + +// 修改Q3通知单子 +export const updateInspectionQ3Detail = async (data: InspectionQ3DetailVO) => { + return await request.put({ url: `/qms/inspection-Q3-detail/update`, data }) +} + +// 删除Q3通知单子 +export const deleteInspectionQ3Detail = async (id: number) => { + return await request.delete({ url: `/qms/inspection-Q3-detail/delete?id=` + id }) +} + +// 导出Q3通知单子 Excel +export const exportInspectionQ3Detail = async (params) => { + return await request.download({ url: `/qms/inspection-Q3-detail/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/qms/inspection-Q3-detail/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/qms/inspectionQ3/inspectionQ3Main/index.ts b/src/api/qms/inspectionQ3/inspectionQ3Main/index.ts new file mode 100644 index 000000000..60c723fd8 --- /dev/null +++ b/src/api/qms/inspectionQ3/inspectionQ3Main/index.ts @@ -0,0 +1,65 @@ +import request from '@/config/axios' + +export interface InspectionQ3MainVO { + id: number + number: string + q1Number: string + responUser: string + priority: string + handleTime: Date + summaryAmount: number + desc: string + status: string + available: string + deletionTime: Date + deleterId: string + extraProperties: string + concurrencyStamp: number + siteId: string +} + +// 查询Q3通知单主列表 +export const getInspectionQ3MainPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = { ...params } + return await request.post({ url: '/qms/inspection-Q3-main/senior', data }) + } else { + return await request.get({ url: `/qms/inspection-Q3-main/page`, params }) + } +} + +// 查询Q3通知单主详情 +export const getInspectionQ3Main = async (id: number) => { + return await request.get({ url: `/qms/inspection-Q3-main/get?id=` + id }) +} + +// 新增Q3通知单主 +export const createInspectionQ3Main = async (data: InspectionQ3MainVO) => { + return await request.post({ url: `/qms/inspection-Q3-main/create`, data }) +} + +// 修改Q3通知单主 +export const updateInspectionQ3Main = async (data: InspectionQ3MainVO) => { + return await request.put({ url: `/qms/inspection-Q3-main/update`, data }) +} + +// 删除Q3通知单主 +export const deleteInspectionQ3Main = async (id: number) => { + return await request.delete({ url: `/qms/inspection-Q3-main/delete?id=` + id }) +} + +// 导出Q3通知单主 Excel +export const exportInspectionQ3Main = async (params) => { + return await request.download({ url: `/qms/inspection-Q3-main/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/qms/inspection-Q3-main/get-import-template' }) +} + +// 完成 +export const finishInspectionQ3Main = async (id: number) => { + return await request.get({ url: `/qms/inspection-Q3-main/finish?id=` + id }) +} diff --git a/src/views/qms/inspectionQThree/index.vue b/src/views/qms/inspectionQThree/index.vue new file mode 100644 index 000000000..d49ba7e99 --- /dev/null +++ b/src/views/qms/inspectionQThree/index.vue @@ -0,0 +1,478 @@ + + + diff --git a/src/views/qms/inspectionQThree/inspectionQ3.data.ts b/src/views/qms/inspectionQThree/inspectionQ3.data.ts new file mode 100644 index 000000000..5c8d36532 --- /dev/null +++ b/src/views/qms/inspectionQThree/inspectionQ3.data.ts @@ -0,0 +1,618 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +import * as InspectionQ1Api from '@/api/qms/inspectionQ1' +import { Q1 } from '@/views/qms/inspectionQ1/inspectionQ1.data' + +import * as ItembasicApi from '@/api/wms/itembasic' +import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data' + +import * as QadCostcentreApi from '@/api/wms/qadCostcentre' +import { QadCostcentre } from '@/views/wms/basicDataManage/subject/qadCostcentre/qadCostcentre.data' + +const { t } = useI18n() // 国际化 + +// 获取自动提交自动通过自动执行,跳过任务直接删生成记录的默认值 +const queryParams = { + pageSize: 10, + pageNo: 1, + code: 'IssueRequest' +} + +// 获取当前操作人的部门 +import { useUserStore } from '@/store/modules/user' +import { TableColumn } from '@/types/table' +import { fa } from 'element-plus/es/locale' +const userStore = useUserStore() +const userDept = userStore.userSelfInfo.dept +// id 转str 否则form回显匹配不到 +userDept.id = userDept.id.toString() +const userDeptArray: any = [userDept] + +/** + * @returns {Array} 发料申请主表 + */ +export const InspectionQ3Main = useCrudSchemas( + reactive([ + { + label: '通知单号', + field: 'number', + sort: 'custom', + isSearch: true, + isForm: false, + table: { + width: 150, + fixed: 'left' + } + }, + { + label: 'Q1通知单号', + field: 'q1Number', + sort: 'custom', + isSearch: true, + table: { + width: 150 + }, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + enterSearch: true, + multiple: true, + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '请选择Q1通知单', // 输入框占位文本 + searchField: 'number', // 查询弹窗赋值字段 + searchTitle: 'Q1通知单', // 查询弹窗标题 + searchAllSchemas: Q1.allSchemas, // 查询弹窗所需类 + searchPage: InspectionQ1Api.getQ1Page, // 查询弹窗所需分页方法 + searchCondition: [ + { + key: 'available', + value: 'TRUE', + isMainValue: false + }, + { + key: 'status', + value: '0', + isMainValue: false + } + ], + verificationParams: [ + { + key: 'number', + action: '==', + value: '', + isMainValue: false, + isSearch: true, + isFormModel: true + } + ] // 失去焦点校验参数 + } + } + }, + { + label: '负责用户', + field: 'responUser', + sort: 'custom', + isSearch: false, + table: { + width: 120 + }, + form: { + componentProps: { + value: userStore.getUser.nickname, + disabled: true + } + } + }, + { + label: '优先级', + field: 'priority', + sort: 'custom', + dictType: DICT_TYPE.QUALITY_NOTIFICATION_PRIORITY, + dictClass: 'string', + isSearch: false, + isTable: false, + tableForm: { + type: 'Select' + } + }, + { + label: '处理时间', + field: 'handleTime', + isSearch: false, + table: { + width: 180 + }, + formatter: dateFormatter, + detail: { + dateFormat: 'YYYY-MM-DD HH:mm:ss' + }, + form: { + component: 'DatePicker', + componentProps: { + style: { width: '100%' }, + type: 'datetime', + dateFormat: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'x' + } + } + }, + { + label: '汇总金额', + field: 'summaryAmount', + sort: 'custom', + isSearch: false, + table: { + width: 150 + }, + form: { + component: 'InputNumber', + componentProps: { + min: 0, + precision: 2 + } + } + }, + { + label: '物料代码', + field: 'itemCode', + sort: 'custom', + isSearch: true, + isForm: false + }, + { + label: '数量', + field: 'qty', + sort: 'custom', + isSearch: false, + isForm: false + }, + { + label: '计量单位', + field: 'uom', + sort: 'custom', + isSearch: false, + isForm: false + }, + { + label: '单价', + field: 'price', + sort: 'custom', + isSearch: false, + isForm: false + }, + { + label: '金额', + field: 'amount', + sort: 'custom', + isTable: true, + isForm: false, + isSearch: false, + table: { + width: 150 + }, + form: { + component: 'InputNumber', + componentProps: { + min: 0, + precision: 2 + } + } + }, + { + label: '成本中心代码', + field: 'costCode', + sort: 'custom', + isSearch: false, + isTable: false, + isForm: false, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + enterSearch: true, + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '请选择成本中心', // 输入框占位文本 + searchField: 'costcentreCode', // 查询弹窗赋值字段 + searchTitle: '成本中心信息', // 查询弹窗标题 + searchAllSchemas: QadCostcentre.allSchemas, // 查询弹窗所需类 + searchPage: QadCostcentreApi.getQadCostcentrePage, // 查询弹窗所需分页方法 + searchCondition: [ + { + key: 'available', + value: 'TRUE', + isMainValue: false + } + ], + verificationParams: [ + { + key: 'costcentreCode', + action: '==', + value: '', + isMainValue: false, + isSearch: true, + isFormModel: true + } + ] // 失去焦点校验参数 + } + } + }, + + { + label: '缺陷编码', + field: 'defectCode', + sort: 'custom', + isSearch: false, + isForm: false + }, + { + label: '缺陷位置', + field: 'defectLocation', + sort: 'custom', + isSearch: false, + isForm: false + }, + { + label: '缺陷类型', + field: 'defectType', + sort: 'custom', + isSearch: false, + isForm: false, + form: { + component: 'Select' + } + }, + { + label: '问题原因', + field: 'problemReason', + sort: 'custom', + isSearch: false, + isForm: false + }, + { + label: '描述', + field: 'desc', + sort: 'custom', + isSearch: false, + table: { + width: '150' + }, + form: { + component: 'Input', + componentProps: { + type: 'textarea' + } + } + }, + { + label: '状态', + field: 'status', + sort: 'custom', + dictType: DICT_TYPE.PUBLISHE_STATUS, + dictClass: 'string', + isSearch: false, + isForm: false, + tableForm: { + type: 'Select', + disabled: true + }, + form: { + componentProps: { + disabled: true + } + } + }, + { + label: '是否可用', + field: 'available', + sort: 'custom', + isSearch: false, + isForm: false, + isTable: false, + isDetail: false + }, + { + label: '创建时间', + field: 'createTime', + isTable: true, + isForm: false, + table: { + width: 180 + }, + formatter: dateFormatter, + detail: { + dateFormat: 'YYYY-MM-DD HH:mm:ss' + }, + form: { + component: 'DatePicker', + componentProps: { + style: { width: '100%' }, + type: 'datetime', + dateFormat: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'x' + } + }, + 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')] + } + } + }, + + { + label: '操作', + field: 'action', + isDetail: false, + isForm: false, + table: { + width: 230, + fixed: 'right' + } + } + ]) +) + +export const InspectionQ3MainRules = reactive({ + workshopCode: [{ required: true, message: '请选择车间代码', trigger: 'change' }], + productionLineCode: [{ required: true, message: '请选择生产线代码', trigger: 'change' }], + // fromWarehouseCode: [ + // { required: true, message: '请选择从仓库代码', trigger: 'change' } + // ], + // dueTime: [ + // { required: true, message: '请选择截止时间', trigger: 'change' } + // ], + remark: [{ max: 50, message: '不得超过50个字符', trigger: 'blur' }] +}) + +/** + * @returns {Array} 发料申请子表 + */ +export const InspectionQ3Detail = useCrudSchemas( + reactive([ + { + label: '通知单号', + field: 'number', + sort: 'custom', + isSearch: false, + isTable: false, + isTableForm: false + }, + { + label: '物料号', + field: 'itemCode', + sort: 'custom', + isTable: false, + isSearch: false, + table: { + width: 150 + }, + tableForm: { + enterSearch: true, + isInpuFocusShow: true, + searchListPlaceholder: '请选择物料代码', // 输入框占位文本 + searchField: 'code', // 查询弹窗赋值字段 + searchTitle: '物料基础信息', // 查询弹窗标题 + searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类 + searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法 + searchCondition: [ + { + key: 'available', + value: 'TRUE', + isMainValue: false + } + ], + verificationParams: [ + { + key: 'code', + action: '==', + value: '', + isMainValue: false, + isSearch: true, + isFormModel: true + } + ] // 失去焦点校验参数 + }, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + enterSearch: true, + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '请选择物料代码', // 输入框占位文本 + searchField: 'code', // 查询弹窗赋值字段 + searchTitle: '物料基础信息', // 查询弹窗标题 + searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类 + searchPage: ItembasicApi.getItembasicPage, // 查询弹窗所需分页方法 + searchCondition: [ + { + key: 'available', + value: 'TRUE', + isMainValue: false + } + ], + verificationParams: [ + { + key: 'code', + action: '==', + value: '', + isMainValue: false, + isSearch: true, + isFormModel: true + } + ] // 失去焦点校验参数 + } + } + }, + { + label: '数量', + field: 'qty', + sort: 'custom', + isSearch: false, + isTable: false, + + tableForm: { + component: 'InputNumber', + componentProps: { + min: 0, + precision: 2 + } + } + }, + { + label: '单位', + field: 'uom', + sort: 'custom', + dictType: DICT_TYPE.UOM, + dictClass: 'string', + isSearch: false, + isTable: false, + tableForm: { + type: 'Select', + disabled: true + }, + form: { + componentProps: { + disabled: true + } + } + }, + { + label: '单价', + field: 'price', + sort: 'custom', + isTable: false, + isSearch: false, + tableForm: { + disabled: true + }, + form: { + componentProps: { + disabled: true + } + } + }, + { + label: '金额', + field: 'amount', + sort: 'custom', + isSearch: false, + isTable: false, + isForm: false, + tableForm: { + disabled: true + }, + form: { + componentProps: { + disabled: true + } + } + }, + { + label: '成本中心代码', + field: 'costCode', + sort: 'custom', + isSearch: false, + isTable: false, + isForm: true, + tableForm: { + isInpuFocusShow: true, + searchListPlaceholder: '请选择成本中心', // 输入框占位文本 + searchField: 'costcentreCode', // 查询弹窗赋值字段 + searchTitle: '成本中心信息', // 查询弹窗标题 + searchAllSchemas: QadCostcentre.allSchemas, // 查询弹窗所需类 + searchPage: QadCostcentreApi.getQadCostcentrePage, // 查询弹窗所需分页方法 + searchCondition: [ + { + key: 'available', + value: 'TRUE', + isMainValue: false + } + ], + verificationParams: [ + { + key: 'costcentreCode', + action: '==', + value: '', + isMainValue: false, + isSearch: true, + isFormModel: true + } + ] // 失去焦点校验参数 + } + }, + { + label: '缺陷编码', + field: 'defectCode', + sort: 'custom', + dictType: DICT_TYPE.QMS_Q3_CODE, + dictClass: 'string', + isSearch: true, + isTable: true, + tableForm: { + type: 'Select' + } + }, + { + label: '缺陷位置', + field: 'defectLocation', + sort: 'custom', + dictClass: 'string', + isSearch: false, + isTable: false, + form: { + component: 'Select', + componentProps: { + options: [], + optionsAlias: { + labelField: 'productionLineName', + valueField: 'productionLineCode' + }, + filterable: true + } + } + }, + { + label: '缺陷类型', + field: 'defectType', + sort: 'custom', + isSearch: false, + isTable: false, + form: { + component: 'Select' + } + }, + { + label: '问题原因', + field: 'problemReason', + sort: 'custom', + isSearch: false, + isTable: false, + form: { + component: 'Select' + } + }, + { + label: '操作', + field: 'action', + hiddenInMain: true, + isDetail: false, + isForm: false, + table: { + width: 200, + fixed: 'right' + }, + isTableForm: false + } + ]) +) + +//表单校验 +export const InspectionQ3DetailRules = reactive({ + itemCode: [{ required: true, message: '请选择物料代码', trigger: 'change' }], + packingNumber: [{ required: true, message: '请输入包装号', trigger: 'blur' }], + batch: [{ required: true, message: '请输入批次', trigger: 'blur' }], + inventoryStatus: [{ required: true, message: '请选择库存状态', trigger: 'change' }], + toLocationCode: [{ required: true, message: '请输入到库位代码', trigger: 'blur' }] +}) From e4a46538d5a722ff5ac6327517c1b18f274ef13a Mon Sep 17 00:00:00 2001 From: wangyufei <2267742828@qq.com> Date: Thu, 15 Aug 2024 14:17:43 +0800 Subject: [PATCH 03/25] =?UTF-8?q?=E8=BE=BE=E6=98=8E--=E5=88=B6=E5=93=81?= =?UTF-8?q?=E5=9B=9E=E6=94=B6=E6=96=B0=E5=A2=9E=E5=8A=A0=E8=BD=A6=E9=97=B4?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E3=80=81=E7=94=9F=E4=BA=A7=E7=BA=BF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productredressRequestMain/index.vue | 2 +- .../productredressRequestMain.data.ts | 111 +++++++++++++++++- 2 files changed, 111 insertions(+), 2 deletions(-) diff --git a/src/views/wms/productionManage/productredress/productredressRequestMain/index.vue b/src/views/wms/productionManage/productredress/productredressRequestMain/index.vue index fce1bdba6..6f0ab4500 100644 --- a/src/views/wms/productionManage/productredress/productredressRequestMain/index.vue +++ b/src/views/wms/productionManage/productredress/productredressRequestMain/index.vue @@ -119,7 +119,7 @@ defineOptions({ name: 'ProductredressRequestMain' }) const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 - +// 制品回收申请 const route = useRoute() // 路由信息 const routeName = ref() routeName.value = route.name diff --git a/src/views/wms/productionManage/productredress/productredressRequestMain/productredressRequestMain.data.ts b/src/views/wms/productionManage/productredress/productredressRequestMain/productredressRequestMain.data.ts index 7ec65d060..044ab68e6 100644 --- a/src/views/wms/productionManage/productredress/productredressRequestMain/productredressRequestMain.data.ts +++ b/src/views/wms/productionManage/productredress/productredressRequestMain/productredressRequestMain.data.ts @@ -1,6 +1,9 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import { dateFormatter } from '@/utils/formatTime' - +import { Productionline } from '@/views/wms/basicDataManage/factoryModeling/productionline/productionline.data' +import * as ProductionlineApi from '@/api/wms/productionline' +import { Workshop } from '@/views/wms/basicDataManage/factoryModeling/workshop/workshop.data' +import * as WorkshopApi from '@/api/wms/workshop' import * as BalanceApi from '@/api/wms/balance' import { Balance } from '@/views/wms/inventoryManage/balance/balance.data' import * as getBusinessTypeApi from '@/api/wms/businesstype/index' @@ -17,6 +20,12 @@ export const ProductredressRequestMainRules = reactive({ autoAgree: [required], autoExecute: [required], directCreateRecord: [required], + workshopCode: [ + { required: true, message: '请选择车间代码', trigger: 'change' } + ], + productionLineCode: [ + { required: true, message: '请选择生产线代码', trigger: 'change' } + ], }) export const ProductredressRequestMain = useCrudSchemas(reactive([ @@ -55,6 +64,106 @@ export const ProductredressRequestMain = useCrudSchemas(reactive([ } } }, + { + label: '车间代码', + field: 'workshopCode', + sort: 'custom', + table: { + width: 150 + }, + isSearch: true, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + enterSearch: true, + isSearchList: true, + searchListPlaceholder: '请选择车间', + searchField: 'code', + searchTitle: '车间信息', + searchAllSchemas: Workshop.allSchemas, + searchPage: WorkshopApi.getWorkshopPage, + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + }], + verificationParams: [{ + key: 'code', + action: '==', + value: '', + isMainValue: false, + isSearch: true, + isFormModel: true, + }], // 失去焦点校验参数 + } + } + }, + { + label: '生产线代码', + field: 'productionLineCode', + sort: 'custom', + table: { + width: 150 + }, + isTable:false, + tableForm: { + enterSearch: true, + isInpuFocusShow: true, + searchListPlaceholder: '请选择生产线代码', + searchField: 'code', + searchTitle: '生产线信息', + searchAllSchemas: Productionline.allSchemas, + searchPage: ProductionlineApi.getProductionlinePage, + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + },{ + key: 'workshopCode', + value: 'workshopCode', + message: '请填写车间代码!', + isMainValue: true + }], + verificationParams: [{ + key: 'code', + action: '==', + value: '', + isMainValue: false, + isSearch: true, + isFormModel: true, + }], // 失去焦点校验参数 + }, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + enterSearch: true, + isSearchList: true, + searchListPlaceholder: '请选择生产线代码', + searchField: 'code', + searchTitle: '生产线信息', + searchAllSchemas: Productionline.allSchemas, + searchPage: ProductionlineApi.getProductionlinePage, + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + },{ + key: 'workshopCode', + value: 'workshopCode', + message: '请填写车间代码!', + isMainValue: true + }], + verificationParams: [{ + key: 'code', + action: '==', + value: '', + isMainValue: false, + isSearch: true, + isFormModel: true, + }], // 失去焦点校验参数 + } + } + }, // { // label: '车间代码', // field: 'workshopCode', From 6b1343f83f17a3115211a57d3b6324e49e88321c Mon Sep 17 00:00:00 2001 From: zhang_li <2235006734@qqq.com> Date: Thu, 15 Aug 2024 14:26:19 +0800 Subject: [PATCH 04/25] q3 --- .../qms/inspectionQThree/inspectionQ3.data.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/views/qms/inspectionQThree/inspectionQ3.data.ts b/src/views/qms/inspectionQThree/inspectionQ3.data.ts index 5c8d36532..921958451 100644 --- a/src/views/qms/inspectionQThree/inspectionQ3.data.ts +++ b/src/views/qms/inspectionQThree/inspectionQ3.data.ts @@ -390,8 +390,8 @@ export const InspectionQ3Detail = useCrudSchemas( width: 150 }, tableForm: { - enterSearch: true, - isInpuFocusShow: true, + isInpuFocusShow: false, + disabled:true, searchListPlaceholder: '请选择物料代码', // 输入框占位文本 searchField: 'code', // 查询弹窗赋值字段 searchTitle: '物料基础信息', // 查询弹窗标题 @@ -404,6 +404,8 @@ export const InspectionQ3Detail = useCrudSchemas( isMainValue: false } ], + isShowTableFormSearch: true, //tableForm下方是否出现输入框 + isRepeat: true,//tableForm下方输入框是否可以重复添加该条数据 verificationParams: [ { key: 'code', @@ -453,11 +455,9 @@ export const InspectionQ3Detail = useCrudSchemas( isTable: false, tableForm: { - component: 'InputNumber', - componentProps: { - min: 0, - precision: 2 - } + type: 'InputNumber', + min: 0, + precision: 2 } }, { From 4f87edc3b35ff8eb905a99f2a71cab3526453657 Mon Sep 17 00:00:00 2001 From: wangyufei <2267742828@qq.com> Date: Thu, 15 Aug 2024 14:28:29 +0800 Subject: [PATCH 05/25] =?UTF-8?q?=E5=9B=BD=E5=BC=BA--=E8=AE=A9=E6=9B=B4?= =?UTF-8?q?=E6=8D=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/wms/purchaseDetail/index.ts | 9 +++++++++ .../purchasereceiptRequestOrderMTypeMain/index.vue | 2 +- .../purchasereceiptRequestMain.data.ts | 4 ++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/api/wms/purchaseDetail/index.ts b/src/api/wms/purchaseDetail/index.ts index d51ab6b68..e1226b751 100644 --- a/src/api/wms/purchaseDetail/index.ts +++ b/src/api/wms/purchaseDetail/index.ts @@ -55,6 +55,15 @@ export const getPurchaseDetailPageWMS = async (params) => { } } +export const getPurchaseDetailPageWMSTypeM = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/purchase-detail/seniorM', data }) + } else { + return await request.get({ url: `/wms/purchase-detail/pageM`, params }) + } +} // 查询采购订单子列表 export const getPurchaseDetailPageWMSSpare = async (params) => { diff --git a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue index ad1fd9943..4f4ac3d03 100644 --- a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue +++ b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue @@ -518,7 +518,7 @@ const updateTableData = (tableList)=>{ const getSearchTableData = async (number,isEnter=false)=>{ const {tableObject ,tableMethods} = useTable({ defaultParams:{number}, - getListApi: PurchaseDetailApi.getPurchaseDetailPageWMS // 分页接口 + getListApi: PurchaseDetailApi.getPurchaseDetailPageWMSTypeM // 分页接口 }) // 获得表格的各种操作 const { getList:getList1 } = tableMethods diff --git a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/purchasereceiptRequestMain.data.ts b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/purchasereceiptRequestMain.data.ts index d84f01b0d..6931e94ff 100644 --- a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/purchasereceiptRequestMain.data.ts +++ b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/purchasereceiptRequestMain.data.ts @@ -634,7 +634,7 @@ export const PurchasereceiptRequestDetail = useCrudSchemas(reactive Date: Thu, 15 Aug 2024 14:30:20 +0800 Subject: [PATCH 06/25] =?UTF-8?q?=E5=9B=BD=E5=BC=BA=E8=AE=A9=E6=88=91?= =?UTF-8?q?=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchasereceiptRequestOrderMTypeMain/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue index 4f4ac3d03..07b6f32be 100644 --- a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue +++ b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue @@ -348,7 +348,7 @@ const butttondata = (row,$index) => { return [] } return [ - defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['5']),hasPermi:'wms:purchasereceipt-request-main:reAdd'}), //重新添加 + // defaultButtons.mainListReAddBtn({hide:isShowMainButton(row,['5']),hasPermi:'wms:purchasereceipt-request-main:reAdd'}), //重新添加 defaultButtons.mainListSubmitBtn({hide:isShowMainButton(row,['1']),hasPermi:'wms:purchasereceipt-request-main:submit'}), // 提交审批 defaultButtons.mainListTurnDownBtn({hide:isShowMainButton(row,['2']),hasPermi:'wms:purchasereceipt-request-main:refused'}), // 驳回 defaultButtons.mainListApproveBtn({hide:isShowMainButton(row,['2']),hasPermi:'wms:purchasereceipt-request-main:agree'}), // 审批通过 From df485333eaed80c0b34e772f1bf52e10253c642a Mon Sep 17 00:00:00 2001 From: zhang_li <2235006734@qqq.com> Date: Thu, 15 Aug 2024 14:38:13 +0800 Subject: [PATCH 07/25] =?UTF-8?q?=E6=A3=80=E9=AA=8C=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=B3=E9=97=AD=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/qms/inspectionRecord/index.vue | 81 ++++++++++++++++-------- 1 file changed, 53 insertions(+), 28 deletions(-) diff --git a/src/views/qms/inspectionRecord/index.vue b/src/views/qms/inspectionRecord/index.vue index 636e3e2de..ed885c7b2 100644 --- a/src/views/qms/inspectionRecord/index.vue +++ b/src/views/qms/inspectionRecord/index.vue @@ -244,6 +244,7 @@ const isShowPackageBtn = (row, val) => { const butttondata = (row) => { return [ // defaultButtons.mainListOrderCOMPLETEBtn({ hide: isShowMainButton(row, ['INCOMPLETE']) }), // 完成 + defaultButtons.mainApplyDecisionBtn({ hide: isShowMainButton(row, null), hasPermi: 'qms:inspection-recode-main:edit' @@ -253,6 +254,10 @@ const butttondata = (row) => { hide: isShowMainButton(row, 'publish'), hasPermi: 'qms:inspection-recode-main:pub' }), // 发布 + defaultButtons.mainListCloseBtn({ + hide: isShowMainButton(row, null), + hasPermi: 'qms:inspection-recode-main:close' + }), // 关闭 defaultButtons.mainListPackageBtn({ hide: isShowPackageBtn(row, ['11']) }), // 包装 // defaultButtons.mainListJobExeBtn({ // hide:row.useDecision, @@ -269,7 +274,9 @@ const useDecisionList = getStrDictOptions(DICT_TYPE.USAGE_DECISION) // const useDecisionList = InspectionRecordMain.allSchemas.formSchema.filter(item=>item.field == "useDecision") // 列表-操作按钮事件 const buttonTableClick = async (val, row) => { - if (val == 'applyDecision') { + if (val == 'mainClose') { + handleOrderClose(row) + } else if (val == 'applyDecision') { // 编辑 // 评估代码值是1,接收时候,使用决策下拉列表是全部合格 if (row.estimateCode == 1) { @@ -366,7 +373,20 @@ const handleOrderPub = async (row: object) => { await getList() } catch {} } - +/** 关闭按钮操作 */ +const handleOrderClose = async (row: object) => { + try { + // 二次确认 + await message.confirm(t('ts.是否关闭所选中数据?')) + row.isPublished = true + row.packageList = await InspectionRecordPackageApi.getInspectionRecordPackageList(row.id) + await InspectionRecordMainApi.updateInspectionRecordMain(row) + message.success(t('ts.关闭成功!')) + await getList() + } catch { + row.isPublished = false + } +} //执行 const execute = async (type: string, row?: number) => { @@ -445,33 +465,38 @@ const searchFormClick = (searchData) => { let isHave = searchData?.filters?.some((item) => item.column == 'inspectionType') if (!isHave) { if (route.name == 'inspectionRecordPurchase') { - searchData.filters.push({ - action: '==', - column: 'inspectionType', - value: '1' - },{ - action: '==', - column: 'available', - value: true - }) - } else if (route.name == 'inspectionRecordProduction') { - searchData.filters.push({ - action: '==', - column: 'inspectionType', - value: '4' - },{ - action: '==', - column: 'available', - value: true - }) - } else { + searchData.filters.push( + { + action: '==', + column: 'inspectionType', + value: '1' + }, + { + action: '==', + column: 'available', + value: true + } + ) + } else if (route.name == 'inspectionRecordProduction') { + searchData.filters.push( + { + action: '==', + column: 'inspectionType', + value: '4' + }, + { + action: '==', + column: 'available', + value: true + } + ) + } else { searchData.filters.push({ - action: 'notIn', - column: 'inspectionType', - value: '1,4,11' - }) - } - + action: 'notIn', + column: 'inspectionType', + value: '1,4,11' + }) + } } tableObject.params = { isSearch: true, From a35a8fa1d57bcdb6c99a96b64e05e4193eae4a7a Mon Sep 17 00:00:00 2001 From: zhang_li <2235006734@qqq.com> Date: Thu, 15 Aug 2024 14:52:29 +0800 Subject: [PATCH 08/25] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/qms/inspectionRecord/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/qms/inspectionRecord/index.vue b/src/views/qms/inspectionRecord/index.vue index ed885c7b2..a7863738e 100644 --- a/src/views/qms/inspectionRecord/index.vue +++ b/src/views/qms/inspectionRecord/index.vue @@ -255,7 +255,7 @@ const butttondata = (row) => { hasPermi: 'qms:inspection-recode-main:pub' }), // 发布 defaultButtons.mainListCloseBtn({ - hide: isShowMainButton(row, null), + hide: isShowMainButton(row, 'publish'), hasPermi: 'qms:inspection-recode-main:close' }), // 关闭 defaultButtons.mainListPackageBtn({ hide: isShowPackageBtn(row, ['11']) }), // 包装 From 92f96b0be59d794388a4293f8d14415fc0c7e6c6 Mon Sep 17 00:00:00 2001 From: wangyufei <2267742828@qq.com> Date: Thu, 15 Aug 2024 14:54:54 +0800 Subject: [PATCH 09/25] =?UTF-8?q?=E5=9B=BD=E5=BC=BA-=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E4=B8=8D=E5=8F=AF=E7=BC=96=E8=BE=91=20=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E8=AE=A2=E5=8D=95=E6=95=B0=E5=A4=A7=E4=BA=8E=E9=9B=B6?= =?UTF-8?q?=E5=B0=8F=E4=BA=8E1=20=20=E6=94=B6=E8=B4=A7=E6=95=B0=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E7=AD=89=E4=BA=8E=E8=AE=A2=E5=8D=95=E6=95=B0=20?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E8=AE=A2=E5=8D=95=E6=95=B0=E5=A4=A7=E4=BA=8E?= =?UTF-8?q?1=20=20=E9=BB=98=E8=AE=A4=E6=94=B6=E8=B4=A7=E6=95=B0=E4=B8=BA1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提交收货数不能大于订单数,收货数量必须大于0 --- .../index.vue | 11 +++++++++++ .../purchasereceiptRequestMain.data.ts | 18 ++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue index 07b6f32be..ab11f0b25 100644 --- a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue +++ b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/index.vue @@ -509,6 +509,12 @@ const updateTableData = (tableList)=>{ //批次 newRow['batch'] = formatDate(newRow['produceDate'],'YYYYMMDD'); newRow['defaultToLocationCode'] =row['defaultLocation'] + if(Number(row['orderQty'])>1){ + newRow['qty'] = 1 + }else{ + newRow['qty'] = row['orderQty'] + } + if(!tableData.value.find((item:object)=>item.poNumber == newRow.poNumber&&item.itemCode == newRow.itemCode&&item.poLine == newRow.poLine&&item.batch == newRow.batch)){ tableData.value.push(newRow) } @@ -734,6 +740,11 @@ const submitForm = async (formType, submitData) => { tableData.value.forEach((row, index) => { row['expireDate'] = row['expireTime']?addDay(row['produceDate'],row['expireTime']).valueOf():dayjs('2099-12-31').valueOf() }) + if(tableData.value.find(item=>item['qty']>item['orderQty'])){ + message.error('收货数不能大于订单数') + return + } + data.subList = tableData.value // 拼接子表数据参数 try { if (formType === 'create') { diff --git a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/purchasereceiptRequestMain.data.ts b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/purchasereceiptRequestMain.data.ts index 6931e94ff..269ea64da 100644 --- a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/purchasereceiptRequestMain.data.ts +++ b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestOrderMTypeMain/purchasereceiptRequestMain.data.ts @@ -580,7 +580,13 @@ export const PurchasereceiptRequestMain = useCrudSchemas(reactive( }, } ])) - +function validateQty(rule, value, callback) { + if (value>0) { + callback() + }else{ + callback(new Error('数量必须大于0')) + } +} //表单校验 export const PurchasereceiptRequestMainRules = reactive({ ppNumber: [ @@ -609,7 +615,7 @@ export const PurchasereceiptRequestMainRules = reactive({ ], businessType: [ { required: true, message: '请输入业务类型', trigger: 'blur' } - ], + ] }) /** @@ -844,6 +850,7 @@ export const PurchasereceiptRequestDetail = useCrudSchemas(reactive Date: Thu, 15 Aug 2024 14:55:33 +0800 Subject: [PATCH 10/25] =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/qms/inspectionQ3/index.ts | 73 --- src/views/qms/inspectionQ3/index.vue | 457 ++++++++----- .../qms/inspectionQ3/inspectionQ3.data.ts | 584 +++++++++++------ src/views/qms/inspectionQThree/index.vue | 478 -------------- .../qms/inspectionQThree/inspectionQ3.data.ts | 618 ------------------ .../scrapRequestMain/scrapRequestMain.data.ts | 106 ++- 6 files changed, 761 insertions(+), 1555 deletions(-) delete mode 100644 src/api/qms/inspectionQ3/index.ts delete mode 100644 src/views/qms/inspectionQThree/index.vue delete mode 100644 src/views/qms/inspectionQThree/inspectionQ3.data.ts diff --git a/src/api/qms/inspectionQ3/index.ts b/src/api/qms/inspectionQ3/index.ts deleted file mode 100644 index a8e1d81b2..000000000 --- a/src/api/qms/inspectionQ3/index.ts +++ /dev/null @@ -1,73 +0,0 @@ -import request from '@/config/axios' - -export interface Q3VO { - id: number - number: string - q1Number: string - itemCode: string - qty: number - code: string - uom: string - desc: string - defectLocation: string - defectType: string - problemReason: string - priority: number - responUser: string - amount: number - costCode: string - handleTime: Date - status: string - available: string - deletionTime: Date - deleterId: string - extraProperties: string - concurrencyStamp: number - siteId: string -} - -// 查询Q3通知单列表 -export const getQ3Page = async (params) => { - if (params.isSearch) { - delete params.isSearch - const data = { ...params } - return await request.post({ url: '/qms/inspectionQ3/senior', data }) - } else { - return await request.get({ url: `/qms/inspectionQ3/page`, params }) - } -} - -// 查询Q3通知单详情 -export const getQ3 = async (id: number) => { - return await request.get({ url: `/qms/inspectionQ3/get?id=` + id }) -} - -// 新增Q3通知单 -export const createQ3 = async (data: Q3VO) => { - return await request.post({ url: `/qms/inspectionQ3/create`, data }) -} - -// 修改Q3通知单 -export const updateQ3 = async (data: Q3VO) => { - return await request.put({ url: `/qms/inspectionQ3/update`, data }) -} - -// 删除Q3通知单 -export const deleteQ3 = async (id: number) => { - return await request.delete({ url: `/qms/inspectionQ3/delete?id=` + id }) -} - -// 导出Q3通知单 Excel -export const exportQ3 = async (params) => { - return await request.download({ url: `/qms/inspectionQ3/export-excel`, params }) -} - -// 下载用户导入模板 -export const importTemplate = () => { - return request.download({ url: '/qms/inspectionQ3/get-import-template' }) -} - -// 完成 -export const finishQ3 = async (id: number) => { - return await request.get({ url: `/qms/inspectionQ3/finish?id=` + id }) -} diff --git a/src/views/qms/inspectionQ3/index.vue b/src/views/qms/inspectionQ3/index.vue index abd156ce2..d49ba7e99 100644 --- a/src/views/qms/inspectionQ3/index.vue +++ b/src/views/qms/inspectionQ3/index.vue @@ -1,26 +1,23 @@