Explorar el Código

squash! feat: 增强树选择器显示字段为多选

喵你个旺呀 hace 1 año
padre
commit
c3188ff592

+ 1 - 1
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/Output.cs.vm

@@ -51,7 +51,7 @@ if (column.EffectType == "ApiTreeSelect"){
     @:/// <summary>
     @:/// 显示文本
     @:/// </summary>
-    @:public @(@column.DisplayColumn.Contains(",") ? "string" : Model.GetColumnNetType(@column.FkTableName,@column.DisplayColumn)) Label { get; set; }
+    @:public string Label { get; set; }
     @:
     @:/// <summary>
     @:/// 选项值

+ 1 - 1
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/Service.cs.vm

@@ -283,7 +283,7 @@ if(column.EffectType == "ApiTreeSelect" && !definedObjects.ContainsKey("@(column
         @:return await _@(Model.LowerClassName)Rep.Context.Queryable<@(column.FkEntityName)>().Select(u => new @(column.FkEntityName)TreeOutput {
             @:Label = $"@(string.Join("-", displayColumnList))",
             @:Value = u.@column.ValueColumn
-        @:}, true).ToTreeAsync(u => u.Children, u => u.@(column.PidColumn), 0);
+        @:}, true).ToTreeAsync(u => u.Children, u => u.@(column.PidColumn), @(column.WhetherRequired == "Y" ? "0" : "null"));
     @:}
 }
 }

+ 33 - 2
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/index.vue.vm

@@ -59,6 +59,22 @@
                 @:<el-option v-for="(item,index) in dl('@(column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name} (${item.code}) [${item.value}] `" />
               @:</el-select>
             @:</el-form-item>
+            }else if(column.EffectType == "ApiTreeSelect"){
+            @:<el-form-item label="@column.ColumnComment">
+              @:<el-cascader
+                  @::options="@LowerFirstLetter(@column.FkEntityName)TreeData"
+                  @:@:props="{ checkStrictly: true, emitPath: false, value: '@LowerFirstLetter(@column.ValueColumn)' }"
+                  @:placeholder="请选择@(column.ColumnComment)"
+                  @:clearable=""
+                  @:class="w100"
+                  @:v-model="queryParams.@(column.LowerPropertyName)"
+                  @:>
+                @:<template #default="{ node, data }">
+                  @:<span>{{ data.label }}</span>
+                  @:<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
+                @:</template>
+              @:</el-cascader>
+            @:</el-form-item>
             }else if(column.EffectType == "DatePicker"){
             @:<el-form-item label="@column.ColumnComment">
               if(column.QueryType == "~"){
@@ -229,6 +245,9 @@
   @foreach (var column in Model.QueryWhetherList.Where(u => u.EffectType == "fk")) {
   @:import { get@(@column.FkEntityName)@(@column.PropertyName)Dropdown } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)';
   }
+  @foreach (var column in Model.QueryWhetherList.Where(u => u.EffectType == "ApiTreeSelect")) {
+  @:import { get@(column.FkEntityName)Tree } from '/@@/api/@(@Model.PagePath)/@(@Model.LowerClassName)';
+  }
 
   const showAdvanceQueryUI = ref(@(@haveLikeCdt ? "false" : "true"));
   const printDialogRef = ref();
@@ -354,15 +373,27 @@
     handleQuery();
   };
 
-  @foreach (var column in Model.QueryWhetherList.Where(u => u.EffectType == "fk")){
-  @:const @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList = ref<any>([]); 
+@foreach (var column in Model.TableField) {
+  if (column.EffectType == "ApiTreeSelect" && !definedObjects.ContainsKey("define_get@(@column.FkEntityName)TreeData")) {
+  definedObjects.Add("define_get@(@column.FkEntityName)TreeData", 1);
+  @:const @LowerFirstLetter(@column.FkEntityName)TreeData = ref<any>([]);
+  @:const get@(column.FkEntityName)TreeData = async () => {
+    @:let list = await get@(column.FkEntityName)Tree();
+    @:@LowerFirstLetter(@column.FkEntityName)TreeData.value = list.data.result ?? [];
+  @:};
+  @:get@(column.FkEntityName)TreeData();
+  @:
+  } else if (column.EffectType == "fk") {
+  @:const @LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList = ref<any>([]);
   @:const get@(@column.FkEntityName)@(@column.PropertyName)DropdownList = async () => {
     @:let list = await get@(@column.FkEntityName)@(@column.PropertyName)Dropdown();
     @:@LowerFirstLetter(@column.FkEntityName)@(@column.PropertyName)DropdownList.value = list.data.result ?? [];
   @:};
   @:get@(@column.FkEntityName)@(@column.PropertyName)DropdownList();
   @:
+  }
 }
+
   handleQuery();
 </script>
 <style scoped>