From 6cb0258636fbae9e9dc4671530ce08cb74e807d3 Mon Sep 17 00:00:00 2001 From: wangyufei <2267742828@qq.com> Date: Wed, 3 Jul 2024 14:53:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A6=81=E8=B4=A7=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/wms/demandforecastingDetail/index.ts | 5 + src/components/Search/src/Search.vue | 123 +++++- .../demandforecastingMain.data.ts | 399 ++++-------------- .../demandforecastingMain/index.vue | 318 ++------------ 4 files changed, 248 insertions(+), 597 deletions(-) diff --git a/src/api/wms/demandforecastingDetail/index.ts b/src/api/wms/demandforecastingDetail/index.ts index f45e61a27..827b23ada 100644 --- a/src/api/wms/demandforecastingDetail/index.ts +++ b/src/api/wms/demandforecastingDetail/index.ts @@ -50,3 +50,8 @@ export const deleteDemandforecastingDetail = async (id: number) => { export const exportDemandforecastingDetail = async (params) => { return await request.download({ url: `/wms/demandforecasting-detail/export-excel`, params }) } + +// 查询要货预测主列表 +export const getPageTableHead = async (params) => { + return await request.get({ url: `/wms/demandforecasting-detail/queryPageTableHead`, params }) +} diff --git a/src/components/Search/src/Search.vue b/src/components/Search/src/Search.vue index 8ac7e2a60..d24477819 100644 --- a/src/components/Search/src/Search.vue +++ b/src/components/Search/src/Search.vue @@ -9,6 +9,7 @@ import { FormSchema } from '@/types/form' import { useCache } from '@/hooks/web/useCache' const { wsCache } = useCache() +const message = useMessage() // 消息弹窗 defineOptions({ name: 'Search' }) @@ -40,10 +41,21 @@ const props = defineProps({ model: { type: Object as PropType, default: () => ({}) + }, + // 详情数据 + detailData: { + type: Object, + required: true, + default: null + }, + showSearchTableQueryFields:{ + type: Array, + required: false, + default: [] } }) -const emit = defineEmits(['search', 'reset','onInput']) +const emit = defineEmits(['search', 'reset','onInput','searchTableSuccess']) const visible = ref(true) @@ -92,6 +104,107 @@ const onInput = (field,value) => { emit('onInput', field,value) } +const searchTableRef = ref() +const opensearchTable = ( + formField, + searchField, + searchTitle, + searchAllSchemas, + searchPage, + searchCondition, + multiple, + type, + row, + isConcatDetailSchemas=false, + searchDetailSchemas: any +) => { + const _searchCondition = {} + // 判断查询条件中,是否存在指向主表的数据 + if (searchCondition && searchCondition.length > 0) { + // 转换筛选条件所需 + let filters: any[] = [] + for (var i=0; i< searchCondition.length; i++ ) { + // searchCondition.forEach((item) => { + // 查询条件为主表某字段,需要赋值主表数据,数据来源是详情的,赋值需要从row中获取 + if (searchCondition[i].isMainValue) { + _searchCondition[searchCondition[i].key] = formRef.value.formModel[searchCondition[i].value] + ? formRef.value.formModel[searchCondition[i].value] + : props.detailData + ? props.detailData[searchCondition[i].value] + : row + ? row[searchCondition[i].value] + : '' + // 是否含有空参数情况 + let isNull = false + if (_searchCondition[searchCondition[i].key] == '' || _searchCondition[searchCondition[i].key] == undefined) { + isNull = true + } + if (isNull) { + message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!') + return + } + }else if(searchCondition[i].isTableRowValue){ + if(searchCondition[i].required){ + if (row[searchCondition[i].value] == '' ||row[searchCondition[i].value] == undefined) { + message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!') + return + } + } + row[searchCondition[i].value] + //查询当前table表数据的值 + _searchCondition[searchCondition[i].key] = row[searchCondition[i].value] + } else { + // 扩展 转换为筛选条件进行查询 + if (searchCondition[i].isSearch) { + if (searchCondition[i].isFormModel) { + //用formModel中的值 + if(searchCondition[i].required){ + if (formRef.value.formModel[searchCondition[i].value] == '' ||formRef.value.formModel[searchCondition[i].value] == undefined) { + message.warning(searchCondition[i].message?searchCondition[i].message:'前置条件未选择!') + return + } + } + filters.push({ + action: searchCondition[i].action, + column: searchCondition[i].key, + value: formRef.value.formModel[searchCondition[i].value] + }) + }else{ + filters.push({ + action: searchCondition[i].action, + column: searchCondition[i].key, + value: searchCondition[i].value + }) + } + + } else { + _searchCondition[searchCondition[i].key] = searchCondition[i].value + } + } + } + if (filters.length > 0) { + _searchCondition.isSearch = true + _searchCondition.filters = filters + } + } + const _searchTableTitle = searchTitle + const _searchTableAllSchemas = searchAllSchemas + const _searchTablePage = searchPage + searchTableRef.value.open( + _searchTableTitle, + _searchTableAllSchemas, + _searchTablePage, + formField, + searchField, + multiple, + type, + row, + _searchCondition, + undefined, + isConcatDetailSchemas, + searchDetailSchemas + ) +} const formRef = ref() const setFormValues = (formData)=>{ formRef.value.setValues(formData) @@ -124,6 +237,11 @@ const setVisible = () => { unref(elFormRef)?.resetFields() visible.value = !unref(visible) } +// 弹层确定返回所选数据 +// val : 弹层列表row 数据 +const searchTableSuccess = (formField, searchField, val, type, row) => { + emit('searchTableSuccess', formField, searchField, val, formRef.value, type, row) +} const Search = ref() onMounted(() => {}) defineExpose({setFormValues}) // 提供 open 方法,用于打开弹窗 @@ -143,6 +261,7 @@ defineExpose({setFormValues}) // 提供 open 方法,用于打开弹窗 hide-required-asterisk @register="register" @onInput="onInput" + @opensearchTable="opensearchTable" > + +