From b0c9cdeedad49dd5cf7bb4afdb988b13b3ae2ba3 Mon Sep 17 00:00:00 2001 From: ljlong_2630 Date: Wed, 10 Apr 2024 14:16:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=80=89=E5=AE=9A=E9=9B=86?= =?UTF-8?q?=E9=A1=B9=E9=87=8D=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/qms/selectedProject/index.ts | 6 ++ .../basicDataManage/counter/counter.data.ts | 3 +- .../dynamicRule/dynamicRule.data.ts | 1 + .../basicDataManage/selectedProject/index.vue | 6 +- .../selectedProject/selectedProject.data.ts | 3 +- .../qms/basicDataManage/selectedSet/index.vue | 58 ++++++++++++++++--- .../selectedSet/selectedSet.data.ts | 3 +- 7 files changed, 67 insertions(+), 13 deletions(-) diff --git a/src/api/qms/selectedProject/index.ts b/src/api/qms/selectedProject/index.ts index a32d54b55..941fc48e4 100644 --- a/src/api/qms/selectedProject/index.ts +++ b/src/api/qms/selectedProject/index.ts @@ -54,4 +54,10 @@ export const exportSelectedProject = async (params) => { // 下载用户导入模板 export const importTemplate = () => { return request.download({ url: '/qms/selected-project/get-import-template' }) +} + + +// 查询选定集项目列表 +export const getSelectedProjectNoPage = async (params) => { + return await request.get({ url: `/qms/selected-project/noPage`, params }) } \ No newline at end of file diff --git a/src/views/qms/basicDataManage/counter/counter.data.ts b/src/views/qms/basicDataManage/counter/counter.data.ts index 5e1fc9744..71a96b204 100644 --- a/src/views/qms/basicDataManage/counter/counter.data.ts +++ b/src/views/qms/basicDataManage/counter/counter.data.ts @@ -18,7 +18,8 @@ export const Counter = useCrudSchemas(reactive([ label: '物料编码', field: 'itemCode', sort: 'custom', - isSearch: true + isSearch: true, + fixed: 'left' }, { label: '检验类型编码', diff --git a/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts b/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts index 709f84219..fbe16c839 100644 --- a/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts +++ b/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts @@ -25,6 +25,7 @@ export const DynamicRule = useCrudSchemas(reactive([ sort: 'custom', isSearch: true, isForm: false, + fixed: 'left' }, { label: '描述', diff --git a/src/views/qms/basicDataManage/selectedProject/index.vue b/src/views/qms/basicDataManage/selectedProject/index.vue index e698b0565..fa6f2f0be 100644 --- a/src/views/qms/basicDataManage/selectedProject/index.vue +++ b/src/views/qms/basicDataManage/selectedProject/index.vue @@ -62,9 +62,9 @@ import download from '@/utils/download' import { SelectedProject,SelectedProjectRules } from './selectedProject.data' import * as SelectedProjectApi from '@/api/qms/selectedProject' import * as defaultButtons from '@/utils/disposition/defaultButtons' -import TableHead from '@/components/TableHead/src/TableHead.vue' -import ImportForm from '@/components/ImportForm/src/ImportForm.vue' -import Detail from '@/components/Detail/src/Detail.vue' +// import TableHead from '@/components/TableHead/src/TableHead.vue' +// import ImportForm from '@/components/ImportForm/src/ImportForm.vue' +// import Detail from '@/components/Detail/src/Detail.vue' defineOptions({ name: 'SelectedProject' }) diff --git a/src/views/qms/basicDataManage/selectedProject/selectedProject.data.ts b/src/views/qms/basicDataManage/selectedProject/selectedProject.data.ts index fb9ed7905..8bb307b19 100644 --- a/src/views/qms/basicDataManage/selectedProject/selectedProject.data.ts +++ b/src/views/qms/basicDataManage/selectedProject/selectedProject.data.ts @@ -27,7 +27,8 @@ export const SelectedProject = useCrudSchemas(reactive([ field: 'code', sort: 'custom', isTableForm: false, - isSearch: true + isSearch: true, + fixed: 'left' }, { label: '字典及字典项', diff --git a/src/views/qms/basicDataManage/selectedSet/index.vue b/src/views/qms/basicDataManage/selectedSet/index.vue index 7e6bc2a31..9434e3220 100644 --- a/src/views/qms/basicDataManage/selectedSet/index.vue +++ b/src/views/qms/basicDataManage/selectedSet/index.vue @@ -111,6 +111,8 @@ routeName.value = route.name const tableColumns = ref(SelectedSet.allSchemas.tableColumns) + + // 查询页面返回 const searchTableSuccess = (formField, searchField, val, formRef) => { nextTick(() => { @@ -290,7 +292,11 @@ const handleDeleteTable = (item, index) => { // 主子数据 提交 const submitForm = async (formType, data) => { - + if(!validateNotRepetition(tableData.value)){ + message.alertWarning('选定集名称不能重复') + basicFormRef.value.formLoading = false + return + } data.selectedProjectDOList = tableData.value// 拼接子表数据参数 data.selectedProjectDOList = data.selectedProjectDOList.map(item => { // 按照 '-%%%-'' 拆分 dictionaryCode @@ -322,18 +328,56 @@ const submitForm = async (formType, data) => { } } +const updateSelections = async (masterId) => { + let param = { masterId: masterId }; + SelectedProjectApi.getSelectedProjectNoPage(param).then(res => { + DictTypeApi.getDictTypeAndData('inspection').then(originalResponse => { + // 首先对每个element进行映射和过滤 + const response = originalResponse.map(element => { + const options = element.dictDataRespVOList.map(item => { + return { + value: element.type + "-%%%-" + item.value, + label: element.name + "-" + item.label + }; + }).filter(option => { + // 过滤掉与res中任何dictionaryTypeAndCode相等的option + return !res.some(resItem => option.value === resItem.dictionaryTypeAndCode); + }); + return { ...element, options }; // 返回新的element,包含过滤后的options + }).filter(element => element.options.length > 0); // 再次过滤,移除options为空的element + + // 更新对应字段的options + const formSchemaItem = SelectedProject.allSchemas.formSchema.find(item => item.field === 'dictionaryTypeAndCode'); + if (formSchemaItem) { + formSchemaItem.componentProps.options = response; + } + }); + }); +}; + +const validateNotRepetition = (data) => { + // 提取所有的 dictionaryTypeAndCode 值 + const codes = data.map(item => item.dictionaryTypeAndCode); + + // 创建一个 Set 来存储唯一的 dictionaryTypeAndCode 值 + const uniqueCodes = new Set(codes); + + // 如果原始数组的长度大于 Set 集合的大小,则说明有重复 + if (codes.length > uniqueCodes.size) { + return false; // 发现重复,返回 false + } + + return true; // 未发现重复,返回 true +}; + + const detailValidate = (data) => { let tag = true; return tag } const detailOpenForm = (type, row, masterParmas) => { - // if(selectDictType.value){ - - // } - if(type='create'){ - - } + updateSelections(masterParmas.masterId) } diff --git a/src/views/qms/basicDataManage/selectedSet/selectedSet.data.ts b/src/views/qms/basicDataManage/selectedSet/selectedSet.data.ts index a6db09237..6371cdb26 100644 --- a/src/views/qms/basicDataManage/selectedSet/selectedSet.data.ts +++ b/src/views/qms/basicDataManage/selectedSet/selectedSet.data.ts @@ -17,7 +17,8 @@ export const SelectedSet = useCrudSchemas(reactive([ field: 'code', sort: 'custom', isForm: false, - isSearch: true + isSearch: true, + fixed: 'left' }, { label: '描述',