From dc5772f50c3773b3274098e1d6d746d0c1b3f97c Mon Sep 17 00:00:00 2001 From: weiwei Date: Thu, 20 Feb 2025 15:04:06 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E5=85=B3?= =?UTF-8?q?=E8=81=94=E8=A1=A5=E8=B4=A7=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/supermarketerp/smErpCgDd.ts | 56 +++--- src/views/admin/system/user/index.vue | 2 +- .../smErpCgDd/smErpCgDdOption.vue | 165 ++++++++++++++---- .../smErpCgPlan/cgPlanOption.vue | 9 +- .../smErpInventoryRecordsOption.vue | 19 +- 5 files changed, 174 insertions(+), 77 deletions(-) diff --git a/src/api/supermarketerp/smErpCgDd.ts b/src/api/supermarketerp/smErpCgDd.ts index 59f40a9..7ea5c4f 100644 --- a/src/api/supermarketerp/smErpCgDd.ts +++ b/src/api/supermarketerp/smErpCgDd.ts @@ -1,41 +1,49 @@ import request from "/@/utils/request" export function fetchList(query?: Object) { - return request({ - url: '/supermarket/smErpCgDd/page', - method: 'get', - params: query - }) + return request({ + url: "/supermarket/smErpCgDd/page", + method: "get", + params: query, + }) } export function addObj(obj?: Object) { - return request({ - url: '/supermarket/smErpCgDd', - method: 'post', - data: obj - }) + return request({ + url: "/supermarket/smErpCgDd", + method: "post", + data: obj, + }) } export function getObj(id?: string) { - return request({ - url: '/supermarket/smErpCgDd/' + id, - method: 'get' - }) + return request({ + url: "/supermarket/smErpCgDd/" + id, + method: "get", + }) } export function delObjs(ids?: Object) { - return request({ - url: '/supermarket/smErpCgDd', - method: 'delete', - data: ids - }) + return request({ + url: "/supermarket/smErpCgDd", + method: "delete", + data: ids, + }) } export function putObj(obj?: Object) { - return request({ - url: '/supermarket/smErpCgDd', - method: 'put', - data: obj - }) + return request({ + url: "/supermarket/smErpCgDd", + method: "put", + data: obj, + }) } +// 采购申请单分页查询 +export function getCgsqPage(query?: Object) { + return request({ + url: "/supermarket/smErpCgDd/cgsq/page", + method: "get", + params: query, + }) +} diff --git a/src/views/admin/system/user/index.vue b/src/views/admin/system/user/index.vue index dfe2fd1..fc71627 100644 --- a/src/views/admin/system/user/index.vue +++ b/src/views/admin/system/user/index.vue @@ -234,7 +234,7 @@ const resetQuery = () => { } // 树节点选择时 -const handleGetSelectNode = (curClickedNode: any, checkedTreeNodes: any, isDeepTree: any) => { +const handleGetSelectNode = (curClickedNode: any, checkedTreeNodes: any, isDeepTree: boolean) => { state.queryForm.deptId = curClickedNode.id state.queryForm.deptIds = checkedTreeNodes.map((item: any) => item.id) state.queryForm.isDeepDept = isDeepTree diff --git a/src/views/supermarketerp/smErpCgDd/smErpCgDdOption.vue b/src/views/supermarketerp/smErpCgDd/smErpCgDdOption.vue index 7444101..ddecd0d 100644 --- a/src/views/supermarketerp/smErpCgDd/smErpCgDdOption.vue +++ b/src/views/supermarketerp/smErpCgDd/smErpCgDdOption.vue @@ -17,10 +17,15 @@ - - - - + + @@ -28,7 +33,9 @@ - + + + @@ -99,7 +106,7 @@ @@ -116,7 +123,7 @@ @@ -129,7 +136,7 @@ @@ -242,6 +249,53 @@ + + + + + + + + + + + + + + + + + + @@ -250,12 +304,13 @@ import { ref, reactive, computed, onMounted } from "vue" import { useRouter, useRoute } from "vue-router" import { useMessage } from "/@/hooks/message" -import { getObj, addObj, putObj } from "/@/api/supermarketerp/smErpCgDd" +import { getObj, addObj, putObj, getCgsqPage } from "/@/api/supermarketerp/smErpCgDd" import { getPlanCode, getCgPlanSpuPage, getErpSpuSimpleAll } from "/@/api/supermarketerp/common" import { VxeTableEvents, VxeTablePropTypes, type VxeTableInstance } from "vxe-table" import { getSupplierTypeOptions } from "/@/api/supermarketerp/smErpSupplier" import { storePrice } from "/@/utils/formatMoney" import { formatDate } from "/@/utils/formatTime" +import { Search } from "@element-plus/icons-vue" // 基本表单数据类型 interface FormVO { @@ -264,6 +319,7 @@ interface FormVO { dDate: string warehouseId: string handlerUserId: string + linkCode: string checkStatus: string checkUserId: string checkTime: string @@ -293,9 +349,11 @@ const router = useRouter() const route = useRoute() const loading = ref(false) // 采购计划加载 const spuListLoading = ref(false) // 对话框商品列表加载 +const linkCodeLoading = ref(false) // 关联采购申请单对话框加载状态 const baseDataFormRef = ref() // 基本数据表单ref const editableTableRef = ref>() // 可编辑表格ref const spuMultipleTableRef = ref() // 对话框多选表格ref +const linkCodeTableRef = ref() // 关联补货单对话框表格ref const supplierTypeDict = ref([]) // 货商下拉选项 // 基本信息表单数据 @@ -305,6 +363,7 @@ const baseDataForm = reactive({ dDate: formatDate(new Date(), "YYYY-mm-dd"), warehouseId: "", handlerUserId: "", + linkCode: "", checkStatus: "", checkUserId: "", checkTime: "", @@ -326,6 +385,8 @@ const state = reactive<{ spuSelectDialogVisible: boolean spuDataList: any[] selectedSpuObjs: any[] + linkCodeVisible: boolean + cgsqPage: any[] }>({ editableTableData: [], // 可编辑表格数据 erpSpuItemsMemo: [], // 请求到的可编辑表格商品数据的缓存 @@ -336,6 +397,9 @@ const state = reactive<{ spuSelectDialogVisible: false, // 商品选择对话框开关 spuDataList: [], // 商品列表 selectedSpuObjs: [], // 已选中的商品列表项 + linkCodeVisible: false, // 关联采购申请单对话框开关 + + cgsqPage: [], // 对话框采购申请单分页数据 }) // 基本信息表单校验规则 @@ -358,34 +422,56 @@ const getInitData = async () => { if (id) { loading.value = true // 获取采购计划数据 & 获取简要商品列表 - const [cgPlanData, erpSpuSimpleAll] = await Promise.allSettled([getObj(id), getErpSpuSimpleAll()]) + const [cgPlanData] = await Promise.allSettled([getObj(id)]) .then((results) => results.map((result) => (result.status === "fulfilled" ? result.value : null))) .finally(() => (loading.value = false)) if (cgPlanData && cgPlanData.code === 0) { - Object.assign(baseDataForm, { - id: cgPlanData.data.id, - planCode: cgPlanData.data.planCode, - orderNumber: cgPlanData.data.orderNumber, - planDate: cgPlanData.data.planDate, - supplierId: cgPlanData.data.supplierId, - handlerUserId: cgPlanData.data.handlerUserId, - remark: cgPlanData.data.remark, - }) + Object.assign(baseDataForm, cgPlanData.data) state.editableTableData = cgPlanData.data.items state.erpSpuItemsMemo = cgPlanData.data.items } - erpSpuSimpleAll && erpSpuSimpleAll.code === 0 && (state.erpSpuSimpleAll = erpSpuSimpleAll.data) } // 获取货商选项 & 获取采购计划编号 - const [supplierTypeOptions, planCode] = await Promise.allSettled([getSupplierTypeOptions(), getPlanCode({ type: 2 })]).then((results) => - results.map((result) => (result.status === "fulfilled" ? result.value : null)), - ) + const [erpSpuSimpleAll, supplierTypeOptions, planCode] = await Promise.allSettled([ + getErpSpuSimpleAll(), + getSupplierTypeOptions(), + getPlanCode({ type: 2 }), + ]).then((results) => results.map((result) => (result.status === "fulfilled" ? result.value : null))) + erpSpuSimpleAll && erpSpuSimpleAll.code === 0 && (state.erpSpuSimpleAll = erpSpuSimpleAll.data) supplierTypeOptions && supplierTypeOptions.code === 0 && (supplierTypeDict.value = supplierTypeOptions.data) planCode && planCode.code === 0 && (baseDataForm.code = planCode.data) } +// 打开关联补货单对话框 +const openLinkCodeDialog = async () => { + state.linkCodeVisible = true + linkCodeLoading.value = true + try { + const res = await getCgsqPage().finally(() => (linkCodeLoading.value = false)) + if (res.code === 0) { + state.cgsqPage = res.data.records + } + } catch (error) { + state.cgsqPage = [] + linkCodeLoading.value = false + } +} + +// 获取关联补货单对话框表格被单选行 +const getRadioEvent = () => { + const $table = linkCodeTableRef.value + if ($table) { + const currRow = $table.getRadioRecord() + console.log("currRadioRow", currRow) + baseDataForm.linkCode = currRow.planCode + state.editableTableData = currRow.items + state.erpSpuItemsMemo = currRow.items + state.linkCodeVisible = false + } +} + // 可编辑表格行勾选 const selectChangeEvent: VxeTableEvents.CheckboxChange = ({ checked }) => { const $table = editableTableRef.value @@ -547,7 +633,8 @@ const handleSelectDialogConfirm = () => { const addedItems = state.selectedSpuObjs .filter((item: any) => !state.editableTableData.some((editableTableItem: RowVO) => editableTableItem.erpSpuId === item.erpSpuId)) .map((addItem) => { - if (state.erpSpuItemsMemo.some((item: any) => item.erpSpuId === addItem.erpSpuId)) return addItem + const index = state.erpSpuItemsMemo.findIndex((item: any) => item.erpSpuId === addItem.erpSpuId) + if (index !== -1) return state.erpSpuItemsMemo[index] return { ...addItem, isNew: true } }) // 为新增的数据项添加isNew标志,若该项原本已经存在,则不添加isNew标志 // 仅添加新勾选的项 @@ -575,15 +662,27 @@ const handleSelectDialogConfirm = () => { // 整理数据 const cgPlanSpuItems = computed(() => { return state.editableTableData.map((item: any) => { - const unit = item.erpUnitVos.find((unitItem: any) => unitItem.id === item.unitId) - return { - id: item.isNew ? undefined : item.id, - erpSpuId: item.erpSpuId, - quantity: item.quantity, - unitPrice: unit.purchasePrice ? storePrice(unit?.purchasePrice) : 0, - totalAmount: Number(unit?.purchasePrice || 0) * item.quantity, - remark: item.remark, - unitId: item.unitId, + if (item.erpUnitVos) { + const unit = item.erpUnitVos.find((unitItem: any) => unitItem.id === item.unitId) + return { + id: item.isNew ? undefined : item.id, + erpSpuId: item.erpSpuId, + quantity: item.quantity, + unitPrice: unit.purchasePrice ? storePrice(unit?.purchasePrice) : 0, + totalAmount: Number(unit?.purchasePrice || 0) * item.quantity, + remark: item.remark, + unitId: item.unitId, + } + } else { + return { + id: item.isNew ? undefined : item.id, + erpSpuId: item.erpSpuId, + quantity: item.quantity, + unitPrice: item.unitPrice ? storePrice(item.unitPrice) : 0, + totalAmount: Number(item.unitPrice || 0) * item.quantity, + remark: item.remark, + unitId: item.unitId, + } } }) }) diff --git a/src/views/supermarketerp/smErpCgPlan/cgPlanOption.vue b/src/views/supermarketerp/smErpCgPlan/cgPlanOption.vue index c26d6bb..341144e 100644 --- a/src/views/supermarketerp/smErpCgPlan/cgPlanOption.vue +++ b/src/views/supermarketerp/smErpCgPlan/cgPlanOption.vue @@ -219,10 +219,8 @@ /> --> @@ -512,7 +510,8 @@ const handleSelectDialogConfirm = () => { const addedItems = state.selectedSpuObjs .filter((item: any) => !state.editableTableData.some((editableTableItem: RowVO) => editableTableItem.erpSpuId === item.erpSpuId)) .map((addItem) => { - if (state.erpSpuItemsMemo.some((item: any) => item.erpSpuId === addItem.erpSpuId)) return addItem + const index = state.erpSpuItemsMemo.findIndex((item: any) => item.erpSpuId === addItem.erpSpuId) + if (index !== -1) return state.erpSpuItemsMemo[index] return { ...addItem, isNew: true } }) // 为新增的数据项添加isNew标志,若该项原本已经存在,则不添加isNew标志 // 仅添加新勾选的项 diff --git a/src/views/supermarketerp/smErpInventoryRecords/smErpInventoryRecordsOption.vue b/src/views/supermarketerp/smErpInventoryRecords/smErpInventoryRecordsOption.vue index c57ea0a..b4d8c4b 100644 --- a/src/views/supermarketerp/smErpInventoryRecords/smErpInventoryRecordsOption.vue +++ b/src/views/supermarketerp/smErpInventoryRecords/smErpInventoryRecordsOption.vue @@ -276,10 +276,8 @@ /> --> @@ -404,15 +402,7 @@ const getInitData = async () => { .finally(() => (loading.value = false)) if (cgPlanData && cgPlanData.code === 0) { - Object.assign(baseDataForm, { - id: cgPlanData.data.id, - planCode: cgPlanData.data.planCode, - orderNumber: cgPlanData.data.orderNumber, - planDate: cgPlanData.data.planDate, - supplierId: cgPlanData.data.supplierId, - handlerUserId: cgPlanData.data.handlerUserId, - remark: cgPlanData.data.remark, - }) + Object.assign(baseDataForm, cgPlanData.data) state.editableTableData = cgPlanData.data.items state.erpSpuItemsMemo = cgPlanData.data.items } @@ -588,7 +578,8 @@ const handleSelectDialogConfirm = () => { const addedItems = state.selectedSpuObjs .filter((item: any) => !state.editableTableData.some((editableTableItem: RowVO) => editableTableItem.erpSpuId === item.erpSpuId)) .map((addItem) => { - if (state.erpSpuItemsMemo.some((item: any) => item.erpSpuId === addItem.erpSpuId)) return addItem + const index = state.erpSpuItemsMemo.findIndex((item: any) => item.erpSpuId === addItem.erpSpuId) + if (index !== -1) return state.erpSpuItemsMemo[index] return { ...addItem, isNew: true } }) // 为新增的数据项添加isNew标志,若该项原本已经存在,则不添加isNew标志 // 仅添加新勾选的项