Pārlūkot izejas kodu

字典,样式属性

zouzs 1 nedēļu atpakaļ
vecāks
revīzija
c9c24a9c5e
2 mainītis faili ar 56 papildinājumiem un 1 dzēšanām
  1. 41 1
      src/utils/dict.ts
  2. 15 0
      src/views/system/dict/dictData.vue

+ 41 - 1
src/utils/dict.ts

@@ -30,6 +30,10 @@ export function useDict(...args: string[]) {
 export function useDictValue<T>(dictType: T, searchValue: string) {
   if (!isString(searchValue)) searchValue = String(searchValue);
   const dictStore = useDictStore();
+  // 统一触发获取(内存/持久层/后端),不做重复的预检查
+  dictStore.fetchDictByType(dictType as string).catch(error => {
+    console.error(`获取字典${String(dictType)}失败:`, error);
+  });
   const dicts = dictStore.getDict(dictType as string) || [];
   const item = dicts.find((d: any) => d.value === searchValue);
   return item ? item.label : null;
@@ -38,7 +42,43 @@ export function useDictValue<T>(dictType: T, searchValue: string) {
 export function useDictClass<T>(dictType: T, searchValue: string) {
   if (!isString(searchValue)) searchValue = String(searchValue);
   const dictStore = useDictStore();
+  // 统一触发获取(内存/持久层/后端),不做重复的预检查
+  dictStore.fetchDictByType(dictType as string).catch(error => {
+    console.error(`获取字典${String(dictType)}失败:`, error);
+  });
   const dicts = dictStore.getDict(dictType as string) || [];
   const item = dicts.find((d: any) => d.value === searchValue);
   return item ? item.class : null;
-}
+}
+
+export async function useDictValueAsync<T>(
+  dictType: T,
+  searchValue: string
+): Promise<string | null> {
+  if (!isString(searchValue)) searchValue = String(searchValue);
+  const dictStore = useDictStore();
+  try {
+    await dictStore.fetchDictByType(dictType as string);
+  } catch (error) {
+    console.error(`获取字典${String(dictType)}失败:`, error);
+  }
+  const dicts = dictStore.getDict(dictType as string) || [];
+  const item = dicts.find((d: any) => d.value === searchValue);
+  return item ? item.label : null;
+}
+
+export async function useDictClassAsync<T>(
+  dictType: T,
+  searchValue: string
+): Promise<string | null> {
+  if (!isString(searchValue)) searchValue = String(searchValue);
+  const dictStore = useDictStore();
+  try {
+    await dictStore.fetchDictByType(dictType as string);
+  } catch (error) {
+    console.error(`获取字典${String(dictType)}失败:`, error);
+  }
+  const dicts = dictStore.getDict(dictType as string) || [];
+  const item = dicts.find((d: any) => d.value === searchValue);
+  return item ? item.class : null;
+}

+ 15 - 0
src/views/system/dict/dictData.vue

@@ -300,6 +300,21 @@ const columns: PlusColumn[] = [
       min: 0
     }
   },
+  {
+    label: "回现样式",
+    prop: "listClass",
+    valueType: "select",
+    fieldProps: {
+      options: [
+        { label: "默认(default)", value: "default" },
+        { label: "主要(primary)", value: "primary" },
+        { label: "成功(success)", value: "success" },
+        { label: "信息(info)", value: "info" },
+        { label: "警告(warning)", value: "warning" },
+        { label: "危险(danger)", value: "danger" }
+      ]
+    }
+  },
   {
     label: "状态",
     prop: "status",