From 0a1056b015fa66bfee93b15179265d81d4709cac Mon Sep 17 00:00:00 2001 From: yufei0306 <13417315+yufei0306@user.noreply.gitee.com> Date: Thu, 28 Mar 2024 19:03:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E2=80=94?= =?UTF-8?q?=E2=80=94=E7=89=A9=E6=96=99=E7=AE=A1=E7=90=86=E2=80=94=E2=80=94?= =?UTF-8?q?=E7=89=A9=E6=96=99=E5=BA=93=E5=8C=BA=E9=85=8D=E7=BD=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E2=80=94=E2=80=94=E8=AF=A6=E6=83=85=E2=80=94=E2=80=94?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Detail/src/Detail.vue | 123 +++++++++++++++++- .../itemManage/itemarea/index.vue | 4 +- .../itemManage/itemarea/itemarea.data.ts | 1 + 3 files changed, 124 insertions(+), 4 deletions(-) diff --git a/src/components/Detail/src/Detail.vue b/src/components/Detail/src/Detail.vue index 899d5fc31..83abb782f 100644 --- a/src/components/Detail/src/Detail.vue +++ b/src/components/Detail/src/Detail.vue @@ -117,6 +117,8 @@ + + { + 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.detailAllSchemas.formSchema, unref(searchTableFormModel)) +} +const searchTableFormType = ref('') // 表单的类型:create - 新增;update - 修改 + /** 打开弹窗 */ const formRef = ref() const titleNameRef = ref() @@ -511,7 +543,26 @@ const { getList } = tableMethodsRef.value const buttonBaseClick = (val, item) => { if (val == 'add') { // 新增 - openForm('create') + if(props.isOpenSearchTable){ + searchTableFormType.value = 'create' + // 如果需要直接打开表格数据 + searchTableFormModel.value = Object.assign(unref(searchTableFormModel), { + masterId: masterParmas.value.masterId, + number: masterParmas.value.number + }) + const item = props.detailAllSchemas.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() @@ -529,6 +580,48 @@ const buttonBaseClick = (val, item) => { } } +// 直接打开表格数据 --> 对应: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 updataTableColumns = (val) => { // detailAllSchemas.tableColumns.value = val @@ -538,7 +631,24 @@ const buttonBaseClick = (val, item) => { const buttonTableClick = async (val, row) => { if (val == 'edit') { // 编辑 - openForm('update', row) + if(props.isOpenSearchTable){ + searchTableFormType.value = 'update' + if (row?.id || row?.masterId) { + searchTableFormModel.value = Object.assign(unref(searchTableFormModel), row) + } + const item = props.detailAllSchemas.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('update', row) + } } else if (val == 'delete') { // 删除 handleDelete(row.id) @@ -573,6 +683,13 @@ const submitForm = async (formType, data) => { } } + +const searchTableSuccess1 = (formField, searchField, val, formRef) => { + 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 searchTableSuccess = (formField, searchField, val, formRef) => { emit('searchTableSuccessDetail', formField, searchField, val, formRef) diff --git a/src/views/wms/basicDataManage/itemManage/itemarea/index.vue b/src/views/wms/basicDataManage/itemManage/itemarea/index.vue index e78f9d9cb..0a4c6c080 100644 --- a/src/views/wms/basicDataManage/itemManage/itemarea/index.vue +++ b/src/views/wms/basicDataManage/itemManage/itemarea/index.vue @@ -63,6 +63,7 @@ @@ -145,7 +147,7 @@ const searchTableSuccessDetail = (formField, searchField, val, formRef ) => { nextTick(() => { const setV = {} setV[formField] = val[0][searchField] - formRef.setValues(setV) + formRef?.setValues(setV) }) } diff --git a/src/views/wms/basicDataManage/itemManage/itemarea/itemarea.data.ts b/src/views/wms/basicDataManage/itemManage/itemarea/itemarea.data.ts index 43e97c5fd..2a0e3bb84 100644 --- a/src/views/wms/basicDataManage/itemManage/itemarea/itemarea.data.ts +++ b/src/views/wms/basicDataManage/itemManage/itemarea/itemarea.data.ts @@ -690,6 +690,7 @@ export const ItemareaDetail = useCrudSchemas(reactive([ // labelMessage: '信息提示说明!!!', componentProps: { isSearchList: true, // 开启查询弹窗 + multiple:true,//多选 searchListPlaceholder: '请选择库位代码', // 输入框占位文本 searchField: 'code', // 查询弹窗赋值字段 searchTitle: '库位基础信息', // 查询弹窗标题