Forráskód Böngészése

优化:直接打开详情页组件时传递枚举数据

JohnnyChan 6 hónapja
szülő
commit
025659b31b

+ 6 - 1
JLHWEB/src/components/LjDetail/index.vue

@@ -259,7 +259,7 @@ const {
 const flatColumnsCallBack = (col: any) => {
   col.field == "status" && console.log(" flatColumnsCallBack col :>> ", col);
   // 设置 enumMap
-  setEnumMap(col);
+  !props.enum && setEnumMap(col);
   // // 设置 表格基础信息-format枚举
   // setBaseEnumMap(col);
   return col;
@@ -494,6 +494,11 @@ const orderOtherFunc = ref([]);
 
 // 定义 enumMap 存储 enum 值(避免异步请求无法格式化单元格内容 || 无法填充搜索下拉选择)
 const enumMap = ref(new Map<string, { [key: string]: any }[]>());
+if (props.enum) {
+  props.enum.forEach((val: any, key: any) => {
+    enumMap.value.set(key, val);
+  });
+}
 provide("mainEnumMap", enumMap);
 const setEnumMap = async (col: ColumnProps) => {
   if (!col.enum) return;

+ 4 - 0
JLHWEB/src/components/LjDetail/interface/index.ts

@@ -340,6 +340,10 @@ export interface DetailProp extends aboutVxetableApiProps {
    * @description BaseForm, 分组gird响应占位
    */
   basicGroupCol?: number | Record<BreakPoint, number> | any;
+  /**
+   * @description 直接打开详情页时,传递枚举类型(字典)
+   */
+  enum?: Map<string, any>;
 }
 
 // /**

+ 2 - 0
JLHWEB/src/views/saleprice/dept/detail.vue

@@ -10,6 +10,7 @@
     :if-layout-editable="false"
     :search-col="{ xs: 1, sm: 1, md: 1, lg: 1, xl: 1 }"
     :basic-group-col="{ xs: 1, sm: 1, md: 1, lg: 1, xl: 1 }"
+    :enum="props.enum"
   >
     <!-- :action="orderStatus ? orderEditAction : orderDefaultAction" -->
   </LjDetail>
@@ -41,6 +42,7 @@ interface detailProp {
    * @description 是否可编辑
    */
   status: "edit" | "new" | string;
+  enum?: any;
 }
 
 const props = withDefaults(defineProps<detailProp>(), {});

+ 9 - 1
JLHWEB/src/views/saleprice/dept/index.vue

@@ -38,7 +38,7 @@
     </template>
     <div class="flx-1 h-full">
       <LjHeaderMenu :data="mainData" :action="orderStatus ? orderEditAction : orderDefaultAction" />
-      <DeptListDetail class="flx-1" :data="mainData" :status="orderStatus" />
+      <DeptListDetail class="flx-1" :data="mainData" :status="orderStatus" :enum="enumMap" />
     </div>
   </LjDialog>
 </template>
@@ -72,6 +72,7 @@ const { CheckPower, CheckOption, buttonNew, buttonDefault } = useAuthButtons(t);
 
 const orderStatus = ref("");
 const deptname = ref("");
+const enumMap = ref(new Map());
 
 const orderDefaultAction = [
   buttonDefault({
@@ -112,6 +113,13 @@ const getData = (params: any) => {
 
 const dataCallback = (data: any) => {
   console.log("data :>> ", data);
+  if (data.tableinfo?.columns) {
+    data.tableinfo?.columns.map((item: any) => {
+      if (item?.enum) {
+        enumMap.value.set(item.field, item.enum);
+      }
+    });
+  }
   return {
     list: data.datatable,
     tableinfo: data.tableinfo,