From 03ffdd67fc4c40f3e9443931a0aa55e508182873 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期三, 06 八月 2025 17:00:06 +0800 Subject: [PATCH] feat: 字典 --- src/views/DictionaryManage/DataDictionary.vue | 169 +++++++++++++++++++++++++------------------------------- 1 files changed, 76 insertions(+), 93 deletions(-) diff --git a/src/views/DictionaryManage/DataDictionary.vue b/src/views/DictionaryManage/DataDictionary.vue index 782f4d8..de06a45 100644 --- a/src/views/DictionaryManage/DataDictionary.vue +++ b/src/views/DictionaryManage/DataDictionary.vue @@ -5,26 +5,15 @@ <template #query> <QueryFilterItem> <FieldSelect - v-model="extraParamState.searchType" + v-model="extraParamState.categoryId" @change="getList()" - :value-enum="SearchTypeText" + :value-enum="dictionaryCategoryList" placeholder="璇烽�夋嫨鎵�灞炵被鍒�" - ></FieldSelect> - </QueryFilterItem> - <QueryFilterItem v-if="extraParamState.searchType === SearchType.Position"> - <FieldSelect - v-model="extraParamState.parentId" - @change="getList()" - :value-enum="typeList" - enum-label-key="name" - enum-value-key="id" - placeholder="璇烽�夋嫨琛屼笟绫诲瀷" - clearable ></FieldSelect> </QueryFilterItem> <QueryFilterItem> <SearchInput - v-model="extraParamState.name" + v-model="extraParamState.keywords" style="width: 200px" placeholder="璇疯緭鍏ュ悕绉�" @on-click-search="getList" @@ -44,19 +33,22 @@ </template> </ProTableQueryFilterBar> <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> - <template #columns="{ row, column }"> - <template v-if="column.property === 'status'"> - <FieldSwitch - v-model="row.status" - active-text="鏄剧ず" - inactive-text="闅愯棌" - :before-change="() => setCategoryVis(row)" - /> - </template> + <template #isDisabled="{ row }"> + <FieldSwitch + v-model="row.isDisabled" + active-text="鍚敤" + inactive-text="绂佺敤" + :active-value="false" + :inactive-value="true" + :before-change="() => setCategoryVis(row)" + /> + </template> + <template #category="{ row }"> + {{ row.category?.name }} </template> </ProTableV2> </AppContainer> - <AddOrEditSearchSetting v-bind="dialogProps" :typeList="typeList" /> + <AddOrEditDictionaryDialog v-bind="dialogProps" /> </LoadingLayout> </template> @@ -74,20 +66,13 @@ UploadUserFile, FieldSwitch, FieldSelect, - FieldRadio, } from '@bole-core/components'; -import { useAccess } from '@/hooks'; -import { - SearchType, - SearchTypeText, - // BelongType, - // BelongTypeText, - BooleanOptions, -} from '@/constants'; -import { OrderInputType, Message } from '@bole-core/core'; -import AddOrEditSearchSetting from './components/AddOrEditSearchSetting.vue'; -import { convertApi2FormUrl } from '@/utils'; -import { useQueryClient } from '@tanstack/vue-query'; +import { useAccess, useDictionaryDataSelect, useGetDictionaryCategorySelect } from '@/hooks'; +import { Message } from '@bole-core/core'; +import AddOrEditDictionaryDialog from './components/AddOrEditDictionaryDialog.vue'; +import { convertApi2FormUrl, convertApi2FormUrlOnlyOne } from '@/utils'; +import * as dictionaryServices from '@/services/api/dictionary'; +import { CategoryCode } from '@/constants'; defineOptions({ name: 'DataDictionary', @@ -101,14 +86,23 @@ operationBtnMap, }); +const { dictionaryCategoryList, ensureQueryData, getDictionaryCategoryNameByCode } = + useGetDictionaryCategorySelect(); + +const { getDictionaryDataNameByCode } = useDictionaryDataSelect({ + categoryCode: CategoryCode.IndustryCategory, +}); + const BaseState = { loading: true, }; -const queryClient = useQueryClient(); -const typeList = ref([]); const state = reactive({ ...BaseState }); onMounted(async () => { + const dictionaryCategoryList = await ensureQueryData(); + if (dictionaryCategoryList.length > 0) { + extraParamState.categoryId = dictionaryCategoryList[0].value; + } await getList(); state.loading = false; }); @@ -122,23 +116,16 @@ } = useTable( async ({ pageIndex, pageSize }, extraParamState) => { try { - let params: API.GetSearchSettingListInput = { + let params: API.GetDictionaryDatasQuery = { pageModel: { rows: pageSize, page: pageIndex, orderInput: extraParamState.orderInput, }, - name: extraParamState.name, - // belongType: Number(extraParamState.belongType), - searchType: Number(extraParamState.searchType), - status: extraParamState.status, + categoryId: extraParamState.categoryId, + keywords: extraParamState.keywords, }; - - if (extraParamState.searchType === SearchType.Position) { - params.isRecommend = extraParamState.isRecommend; - params.parentId = extraParamState.parentId; - } - let res = await searchSettingServices.getSearchSettingList(params, { + let res = await dictionaryServices.getDictionaryDatas(params, { showLoading: !state.loading, }); return res; @@ -148,34 +135,38 @@ }, { defaultExtraParams: { - name: '', - searchType: SearchType.Identity, - orderInput: [{ property: 'sort', order: OrderInputType.Asc }], - status: '' as any as boolean, - isRecommend: '' as any as boolean, - parentId: '', + categoryId: '', + keywords: '', + orderInput: [{ property: 'sort', order: EnumPagedListOrder.Asc }], }, - queryKey: ['searchSettingServices/getSearchSettingList'], + queryKey: ['dictionaryServices/getDictionaryDatas'], columnsRenderProps: { - searchType: { type: 'enum', valueEnum: SearchTypeText }, + field1: { + formatter(row: API.GetDictionaryDatasQueryResultItem) { + return row.categoryCode == CategoryCode.Position + ? getDictionaryDataNameByCode(row.field1) + : ''; + }, + }, }, } ); -function openDialog(row?: API.GetSearchSettingList) { +function openDialog(row?: API.GetDictionaryDatasQueryResultItem) { if (row) { handleEdit({ id: row.id, - searchType: extraParamState.searchType, - name: row.name, + categoryId: row.categoryId, + code: row.code, + content: row.content, sort: row.sort, - status: row.status, - src: row.src?.length ? [convertApi2FormUrl(row.src)] : [], - parentId: row.parentId ?? '', + isDisabled: row.isDisabled, + field1: row.field1, + field2: convertApi2FormUrlOnlyOne(row.field2), }); } else { handleAdd({ - searchType: extraParamState.searchType, + categoryId: extraParamState.categoryId, }); } } @@ -184,55 +175,47 @@ onConfirm: handleAddOrEdit, defaultFormParams: { id: '', - searchType: SearchType.Identity, - name: '', + categoryId: '', + code: '', + content: '', sort: 0, - status: true, - src: [] as UploadUserFile[], - parentId: '', + isDisabled: false, + field1: '', + field2: [] as UploadUserFile[], }, }); async function handleAddOrEdit() { try { - let params: API.CreateOrEditSearchInput = { - searchType: extraParamState.searchType, - name: editForm.name, + let params: API.SaveDictionaryDataCommand = { + categoryId: editForm.categoryId, + code: editForm.code, sort: editForm.sort, - status: editForm.status, - src: editForm.src?.[0]?.path ?? '', - parentId: editForm.parentId ?? '', + content: editForm.content, + isDisabled: editForm.isDisabled, + field1: editForm.field1, + field2: editForm.field2?.[0]?.path ?? '', }; if (editForm.id) { params.id = editForm.id; } - let res = await searchSettingServices.createOrEditSearchSetting(params); + let res = await dictionaryServices.saveDictionaryData(params); if (res) { Message.successMessage('鎿嶄綔鎴愬姛'); getList(paginationState.pageIndex); dialogState.dialogVisible = false; - updateCategoryMenu(); } } catch (error) {} } -function updateCategoryMenu() { - queryClient.invalidateQueries({ - queryKey: [ - 'searchSettingServices/getTypeSearchSettingList', - { searchType: extraParamState.searchType, belongType: null }, - ], - }); -} - -async function setCategoryVis(row: API.GetSearchSettingList) { +async function setCategoryVis(row: API.GetDictionaryDatasQueryResultItem) { try { - let params: API.EnableSearchSettingInput = { - id: row.id, - status: !row.status, + await Message.tipMessage(`纭瑕�${row.isDisabled ? '鍚敤' : '绂佺敤'}鍚楋紵`); + let params: API.SetDictionaryDataIsDisabledCommand = { + ids: [row.id], + isDisabled: !row.isDisabled, }; - let res = await searchSettingServices.enableSearchSetting(params); - updateCategoryMenu(); + let res = await dictionaryServices.setDictionaryDataIsDisabled(params); getList(paginationState.pageIndex); return !!res; } catch (error) {} -- Gitblit v1.9.1