Просмотр исходного кода

fix:😀修复常量选择器字段渲染问题

喵你个旺呀 1 год назад
Родитель
Сommit
345bc33cab

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs

@@ -32,7 +32,7 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient
             .Select<CodeGenConfig>()
             .Mapper(u =>
             {
-                u.NetType = (u.EffectType is "EnumSelector" or "ConstSelector" ? u.DictTypeCode : u.NetType);
+                u.NetType = (u.EffectType == "EnumSelector" ? u.DictTypeCode : u.NetType);
                 u.FkDisplayColumnList = u.FkDisplayColumns?.Split(",").ToList();
             })
             .OrderBy(u => new { u.OrderNo, u.Id })

+ 1 - 1
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/editDialog.vue.vm

@@ -125,7 +125,7 @@ defineExpose({ openDialog });
 								if (column.EffectType == "ForeignKey") {
 								@:<el-option v-for="(item,index) in state.dropdownData.@(column.LowerPropertyName) ?? []" :key="index" :value="item.value" :label="item.label" />
 								} else if (column.EffectType == "ConstSelector") {
-								@:<el-option v-for="(item, index) in state.stores.getConstDataByType('@column.DictTypeCode') ?? []" :key="index" :label="item.name" :value="item.code" />
+								@:<el-option v-for="(item, index) in state.stores.getConstDataByTypeCode('@column.DictTypeCode')" :key="index" :label="item.name" :value="item.code" />
 								} else if (column.EffectType == "DictSelector" || column.EffectType == "EnumSelector") {
 								@:<el-option v-for="(item, index) in state.stores.getDictDataByCode('@(column.DictTypeCode)') ?? []"  :key="index" :value="item.code" :label="`[${item.code}]${item.value}`" />
 								}

+ 4 - 10
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/index.vue.vm

@@ -1,20 +1,15 @@
 <script lang="ts" setup name="@(Model.LowerClassName)">
 import { ref, reactive, onMounted } from "vue";
 import { auth } from '/@@/utils/authFunction';
-import { getAPI } from '/@@/utils/axios-utils';
 import { ElMessageBox, ElMessage } from "element-plus";
 import { downloadStreamFile } from "/@@/utils/downloadFile";
-@if(Model.TableField.Any(x => x.EffectType == "ConstSelector")) {
-@:import { codeToName, getConstType } from '/@@/utils/constHelper';
-}
-@if(Model.TableField.Any(x => x.EffectType == "DatePicker")) {
-@:import { formatDate } from '/@@/utils/formatTime';
-}
 @if(Model.PrintType == "custom") {
 @:// 推荐设置操作 width 为 200
 @:import { hiprint } from 'vue-plugin-hiprint';
+@:import { getAPI } from '/@@/utils/axios-utils';
 @:import { SysPrintApi } from '/@@/api-services/api';
 @:import { SysPrint } from '/@@/api-services/models';
+@:import { formatDate } from '/@@/utils/formatTime';
 }
 import { use@(Model.ClassName)Api } from '/@@/api/@(Model.PagePath)/@(Model.LowerClassName)';
 @if(Model.HasDictField || Model.HasEnumField || Model.HasConstField) {
@@ -198,7 +193,6 @@ handleQuery();
               @:<el-date-picker placeholder="请选择@(column.ColumnComment)" value-format="YYYY/MM/DD"  v-model="state.tableQueryParams.@(column.LowerPropertyName)" />
               }
             @:</el-form-item>
-            }
           @:</el-col>
           }
           }
@@ -264,8 +258,8 @@ handleQuery();
           @:</template>
         @:</el-table-column>
       } else if (column.EffectType == "ConstSelector" || column.EffectType == "ForeignKey" || column.EffectType == "ApiTreeSelector") {
-        var formatter = column.EffectType == "ConstSelector" ? $"codeToName(row.{column.LowerPropertyName}, '{column.DictTypeCode}')" : $"row.{column.LowerExtendedPropertyName}";
-        @:<el-table-column @(Model.GetElTableColumnCustomProperty(column)) :formatter="(row) => @(formatter)" show-overflow-tooltip />
+        var formatter = column.EffectType == "ConstSelector" ? $"state.stores.getConstItemNameByType('{column.DictTypeCode}', row.{column.LowerPropertyName})" : $"row.{column.LowerExtendedPropertyName}";
+        @:<el-table-column @(Model.GetElTableColumnCustomProperty(column)) :formatter="(row: any) => @(formatter)" show-overflow-tooltip />
       } else {
         @:<el-table-column @(Model.GetElTableColumnCustomProperty(column)) show-overflow-tooltip />
       }

+ 12 - 1
Web/src/stores/userInfo.ts

@@ -39,7 +39,7 @@ export const useUserInfo = defineStore('userInfo', {
 		// 存储字典信息到浏览器缓存
 		async setDictList() {
 			this.dictList = await getAPI(SysDictTypeApi).apiSysDictTypeAllDictListGet().then(res => res.data.result ?? {});
-			for (const key in this.dictList) if (key.endsWith("Enum")) this.dictList[key].forEach(e => e.code = Number(e.code));
+			for (const key in this.dictList) if (key.endsWith("Enum")) this.dictList[key].forEach((e: any) => e.code = Number(e.code));
 		},
 
 		// 获取当前用户信息
@@ -97,6 +97,17 @@ export const useUserInfo = defineStore('userInfo', {
 			});
 		},
 
+		// 根据常量类名获取常量数据
+		getConstDataByTypeCode(typeCode: string) {
+			return this.constList.find((item: any) => item.code === typeCode)?.data?.result || [];
+		},
+
+		// 根据常量类名和编码获取常量值
+		getConstItemNameByType(typeCode: string, itemCode: string) {
+			const data = this.getConstDataByTypeCode(typeCode);
+			return data.find((item: any) => item.code === itemCode)?.name;
+		},
+
 		// 根据字典类型获取字典数据
 		getDictDataByCode(dictTypeCode: string) {
 			return this.dictList[dictTypeCode] || [];