Browse Source

chore: 修正枚举转字典与标准字典数据不一致问题

喵你个旺呀 1 year ago
parent
commit
1b40d9170f

+ 4 - 4
Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs

@@ -15,7 +15,7 @@ public class EnumToDictJob : IJob
 {
     private readonly IServiceScopeFactory _scopeFactory;
     private const int OrderOffset = 10;
-    private const string DefaultTagType = "primary";
+    private const string DefaultTagType = null;
 
     public EnumToDictJob(IServiceScopeFactory scopeFactory)
     {
@@ -114,9 +114,9 @@ public class EnumToDictJob : IJob
             {
                 Id = YitIdHelper.NextId(),
                 DictTypeId = t2.Id,
-                Name = u.Describe,
-                Value = u.Value.ToString(),
-                Code = u.Name,
+                Name = u.Name,
+                Value = u.Describe,
+                Code = u.Value.ToString(),
                 Remark = t2.Remark,
                 OrderNo = u.Value + OrderOffset,
                 TagType = u.Theme != "" ? u.Theme : DefaultTagType,

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

@@ -70,12 +70,16 @@
 							@:<el-input v-model="ruleForm.@(column.LowerPropertyName)" placeholder="请输入@(column.ColumnComment)" type="textarea" maxlength="@(column.ColumnLength)" show-word-limit clearable />
 						</el-form-item>
 					</el-col>
-					}else if(column.EffectType == "Select"){
-					@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+					}else if(column.EffectType == "Select" || column.EffectType == "EnumSelector"){
+					@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" @(IsStatusEnum(column) ? $"v-if='!ruleForm.{pkFieldName}'" : "")>
 						@:<el-form-item label="@column.ColumnComment" prop="@(column.LowerPropertyName)">
-							@:<el-select clearable v-model="ruleForm.@(column.LowerPropertyName)" placeholder="请选择@(column.ColumnComment)">
-								@:<el-option v-for="(item,index) in dl('@(column.DictTypeCode)')"  :key="index" :value="@(column.NetType.StartsWith("string") ? "item.code" : "Number(item.code)")" :label="`[${item.code}] ${item.value}`"></el-option>
-							</el-select>
+							if (IsStatusEnum(column)) {
+							@:<el-switch v-model="ruleForm.@column.LowerPropertyName" :active-value="1" :inactive-value="2" size="small" />
+							} else {
+							@:<el-select clearable filterable v-model="ruleForm.@(column.LowerPropertyName)" placeholder="请选择@(column.ColumnComment)">
+								@:<el-option v-for="(item, index) in dl('@(column.DictTypeCode)')"  :key="index" :value="@(column.NetType.StartsWith("string") ? "item.code" : "Number(item.code)")" :label="`[${item.code}] ${item.value}`"></el-option>
+							@:</el-select>
+							}
 						</el-form-item>
 					</el-col>
 					}else if(column.EffectType == "ConstSelector"){
@@ -114,18 +118,6 @@
 							</el-upload>
 						</el-form-item>
 					</el-col>
-					}else if(column.EffectType == "EnumSelector"){
-					@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" @(IsStatusEnum(column) ? $"v-if='!ruleForm.{pkFieldName}'" : "") >
-						@:<el-form-item label="@column.ColumnComment" prop="@(column.LowerPropertyName)">
-							if (@column.NetType == "StatusEnum" && @column.PropertyName == "Status") {
-							@:<el-switch v-model="ruleForm.@column.LowerPropertyName" :active-value="1" :inactive-value="2" size="small" />
-							} else {
-							@:<el-select clearable v-model="ruleForm.@(column.LowerPropertyName)" placeholder="请选择@(column.ColumnComment)">
-								@:<el-option v-for="(item, index) in dl('@(column.DictTypeCode)')" :key="index" :value="@(column.NetType.TrimEnd('?').StartsWith("string") ? "item.value" : "Number(item.value)")" :label="`${item.name} (${item.code}-${item.value})`"></el-option>
-							@:</el-select>
-							}
-						</el-form-item>
-					</el-col>
 					}else{
 					}
 					}

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

@@ -49,16 +49,10 @@
                 @:<el-option v-for="(item,index) in @LowerFirstLetter(@column.FkEntityName)@(column.PropertyName)DropdownList" :key="index" :value="item.value" :label="item.label" />
               @:</el-select>
             @:</el-form-item>
-            }else if(column.EffectType == "Select"){
+            }else if(column.EffectType == "Select" || column.EffectType == "EnumSelector"){
             @:<el-form-item label="@column.ColumnComment">
-              @:<el-select clearable="" v-model="queryParams.@(column.LowerPropertyName)" placeholder="请选择@(column.ColumnComment)">
-                @:<el-option v-for="(item,index) in dl('@(column.DictTypeCode)')" :key="index" :value="item.code" :label="`[${item.code}] ${item.value}`" />
-              @:</el-select>
-            @:</el-form-item>
-            }else if(column.EffectType == "EnumSelector"){
-            @:<el-form-item label="@column.ColumnComment">
-              @:<el-select clearable="" v-model="queryParams.@(column.LowerPropertyName)" placeholder="请选择@(column.ColumnComment)">
-                @:<el-option v-for="(item,index) in dl('@(column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name} (${item.code}-${item.value})`" />
+              @:<el-select clearable filterable v-model="queryParams.@(column.LowerPropertyName)" placeholder="请选择@(column.ColumnComment)">
+                @:<el-option v-for="(item,index) in dl('@(column.DictTypeCode)')" :key="index" :value="item.code" :label="`[${item.code}]${item.value}`" />
               @:</el-select>
             @:</el-form-item>
             }else if(column.EffectType == "ApiTreeSelect"){
@@ -151,21 +145,15 @@
             }
           @:</template>
         @:</el-table-column>
-        } else if (@column.EffectType == "Select"){
-        @:<el-table-column prop="@column.LowerPropertyName" label="@column.ColumnComment" @(column.WhetherSortable == "Y" ? "sortable='custom'" : "") show-overflow-tooltip="" >
-          @:<template #default="scope">
-            @:<dict-label :value="scope.row.@column.LowerPropertyName" code="@column.DictTypeCode" prop-label="value" prop-value="code" />
-          @:</template>
-        @:</el-table-column>
-        } else if (@column.EffectType == "EnumSelector"){
-        {@ isStatus = column.NetType == "StatusEnum" && column.PropertyName == "Status"; }
+        } else if (column.EffectType == "Select" || column.EffectType == "EnumSelector") {
+        isStatus = column.NetType == "StatusEnum" && column.PropertyName == "Status";
         @:<el-table-column prop="@column.LowerPropertyName" label="@column.ColumnComment" @(column.WhetherSortable == "Y" ? "sortable='custom'" : "") show-overflow-tooltip="" @(isStatus ? $"v-auth=\"'{@Model.LowerClassName}:setStatus'\"": "")>
           @:<template #default="scope">
-          if (isStatus) {
-            @:<el-switch v-model="scope.row.@column.LowerPropertyName" :active-value="1" :inactive-value="2" size="small" @@change="change@(Model.ClassName)Status(scope.row)" />
-          } else {
-            @:<dict-label :value="scope.row.@column.LowerPropertyName" code="@column.DictTypeCode" />
-          }
+            if (isStatus) {
+              @:<el-switch v-model="scope.row.@column.LowerPropertyName" :active-value="1" :inactive-value="2" size="small" @@change="change@(Model.ClassName)Status(scope.row)" />
+            } else {
+              @:<DictLabel :value="scope.row.@column.LowerPropertyName" code="@column.DictTypeCode" />
+            }
           @:</template>
         @:</el-table-column>
         } else {

+ 5 - 6
Web/src/components/table/dictLabel.vue

@@ -5,18 +5,17 @@
 <script lang="ts" setup>
 import { useUserInfo } from '/@/stores/userInfo';
 import { reactive, onMounted } from 'vue';
-import { ElTag } from 'element-plus';
 
 const props = defineProps({
 	code: String,
 	value: Object,
 	propLabel: {
 		type: String,
-		default: 'name'
+		default: 'value'
 	},
 	propValue: {
 		type: String,
-		default: 'value'
+		default: 'code'
 	},
 	defaultValue: {
 		type: String,
@@ -26,12 +25,12 @@ const props = defineProps({
 
 const state = reactive({
   label: '' as string,
-	tagType: '' as string
+  tagType: '' as string
 });
 
 onMounted(() => {
-	const dictList = useUserInfo().getDictDatasByCode(props.code);
-	const dict = dictList?.find(x => x[props.propValue] == props.value + "") ?? {};
+	const dictList = useUserInfo().getDictDatasByCode(props.code as string);
+	const dict = dictList?.find((x: any) => x[props.propValue] == props.value + "") ?? {};
 	if (dict) {
 		state.label = dict[props.propLabel] || props.defaultValue;
 		state.tagType = dict.tagType;