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