From 2a225d84f5a14caddb853d3c07b26907d1cb1428 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 15 十一月 2024 10:11:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-ui/src/components/actions/base/ViewAction.js                      |   35 +--
 Source/plt-web/plt-web-ui/src/components/actions/handlers.js                             |    6 
 Source/plt-web/plt-web-ui/src/components/actions/base/upRevisionAction.js                |    2 
 Source/plt-web/plt-web-ui/src/components/PLT-basic-component/basicForm.vue               |   16 +
 Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js              |    2 
 Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js                |    2 
 Source/plt-web/plt-web-ui/src/store/index.js                                             |   20 ++
 Source/plt-web/plt-web-ui/src/components/actions/base/ViewDialogAction.js                |  100 ++++++++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/test/DataTestController.java |   75 +++++++++
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue                     |    2 
 Source/plt-web/plt-web-ui/src/components/actions/base/EditAction.js                      |    2 
 Source/plt-web/plt-web-ui/src/views/base/ViewTab.vue                                     |   67 ++++++++
 Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js             |    2 
 Source/plt-web/plt-web-ui/src/views/custom-ui/product.vue                                |   62 +++++++
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue |    4 
 Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js                                         |   10 +
 Source/plt-web/plt-web-ui/src/router/views/index.js                                      |   15 +
 Source/plt-web/plt-web-ui/src/views/system/user/option.js                                |    5 
 Source/plt-web/plt-web-ui/src/components/actions/base/RevisionAction.js                  |    2 
 19 files changed, 388 insertions(+), 41 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/test/DataTestController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/test/DataTestController.java
index f71bb1b..3572bcc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/test/DataTestController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/test/DataTestController.java
@@ -46,7 +46,9 @@
 
     /**
      * 鑾峰彇ebom淇℃伅
-     * @param parentOid 涓婄骇淇℃伅
+     * @param productNo 浜у搧缂栧彿
+     * @param productOid 浜у搧涓婚敭
+     * @param parentOid 涓婄骇闆朵欢涓婚敭
      * @return
      */
     @VciUnCheckRight
@@ -123,4 +125,75 @@
         baseResult.setCode(200);
         return baseResult;
     }
+
+    /**
+     * 鑾峰彇涓嬬骇闆朵欢淇℃伅
+     * @param productOid 浜у搧涓婚敭
+     * @param parentOid 涓婄骇闆朵欢涓婚敭
+     * @return
+     */
+    @VciUnCheckRight
+    @GetMapping("/getChildInfo")
+    public BaseResult getChildInfo(String productOid, String parentOid){
+        if(StringUtils.isBlank(productOid)){
+            return BaseResult.fail("浜у搧涓婚敭涓虹┖锛�");
+        }
+        if(StringUtils.isBlank(parentOid)){
+            return BaseResult.fail("闆朵欢涓婄骇涓婚敭涓虹┖锛�");
+        }
+        String sql = "select p.*,e.oid as eoid from platformbtm_part p left join platformlt_ebom e on p.oid = e.t_oid \n" +
+                "where e.f_oid = '"+parentOid+"' and e.workcontextoid = '"+productOid+"' \n" +
+                "and p.islastr = '1' and p.islastv = '1' order by p.code asc";
+        List<Map> ebomList = boServiceI.queryByOnlySqlForMap(sql);
+        BaseResult baseResult = new BaseResult();
+        baseResult.setData(ebomList);
+        baseResult.setSuccess(true);
+        return baseResult;
+    }
+
+    /**
+     * 鑾峰彇闆朵欢瀹炰緥淇℃伅
+     * @param productOid 浜у搧涓婚敭
+     * @param partOid 闆朵欢涓婚敭
+     * @param eoid 鏍戣妭鐐逛笂鐨勬墿灞曞睘鎬oid鐨勫��
+     * @return
+     */
+    @VciUnCheckRight
+    @GetMapping("/getPartInstance")
+    public BaseResult getPartInstance(String productOid, String partOid, String eoid){
+        if(StringUtils.isBlank(productOid)){
+            return BaseResult.fail("浜у搧涓婚敭涓虹┖锛�");
+        }
+        if(StringUtils.isBlank(partOid)){
+            return BaseResult.fail("闆朵欢涓婚敭涓虹┖锛�");
+        }
+        if(StringUtils.isBlank(eoid)){
+            return BaseResult.fail("EBOM鍏崇郴涓婚敭涓虹┖锛�");
+        }
+        String sql = "select t.* from platformbtm_partinstance t where t.partoid = '"+partOid+"' \n" +
+                "and t.workcontextoid = '"+productOid+"' and t.ebomoid = '"+eoid+"'";
+        List<Map> mapList = boServiceI.queryByOnlySqlForMap(sql);
+        BaseResult baseResult = new BaseResult();
+        baseResult.setData(mapList);
+        baseResult.setSuccess(true);
+        return baseResult;
+    }
+
+    /**
+     * 鑾峰彇闆朵欢鍩烘湰淇℃伅
+     * @param partOid 闆朵欢涓婚敭
+     * @return
+     */
+    @GetMapping("/getPartInfo")
+    public BaseResult getPartInfo(String partOid){
+        if(StringUtils.isBlank(partOid)){
+            return BaseResult.fail("闆朵欢涓婚敭涓虹┖锛�");
+        }
+        String sql = "select * from platformbtm_part where oid = '"+partOid+"'";
+        List<Map> mapList = boServiceI.queryByOnlySqlForMap(sql);
+        BaseResult baseResult = new BaseResult();
+        baseResult.setData(mapList);
+        baseResult.setSuccess(true);
+        return baseResult;
+    }
 }
diff --git a/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js b/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js
index 3fd0dc4..22e6053 100644
--- a/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js
+++ b/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js
@@ -303,3 +303,13 @@
   });
 }
 
+
+// 浜у搧鏍�
+export function getEbomInfo(params) {
+  return request({
+    url: "/api/dataTestController/getEbomInfo",
+    method: "get",
+    params
+  });
+}
+
diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/basicForm.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/basicForm.vue
index 5131082..630a90e 100644
--- a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/basicForm.vue
+++ b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/basicForm.vue
@@ -239,20 +239,20 @@
           col.display=false
         }
       }
-      if (col.type === "select") {
-        if(col.data && col.data.length>0){
+      if (col.type === "select" || col.type==='radio' || col.type==='checkbox') {
+        if (col.data && col.data.length > 0) {
           col.dicData = col.data.map((d) => {
             return {
               label: d.key,
               key: d.value,
               value: d.value,
-              attributes:d.attributes
+              attributes: d.attributes
             };
           });
-        }else if(!validatenull(col.dictCode)) {
+        } else if (!validatenull(col.dictCode)) {
           getDicts(col.dictCode).then((res) => {
-            if (res.data.success){
-              if(res.data.data && res.data.obj == null){
+            if (res.data.success) {
+              if (res.data.data && res.data.obj == null) {
                 res.data.obj = res.data.data
               }
               const dic = res.data.obj;
@@ -261,11 +261,13 @@
                   label: d.value,
                   key: d.key,
                   value: d.key,
-                  attributes:d.attributes
+                  attributes: d.attributes
                 };
               });
             }
           });
+        } else {
+          col.dicData = [];
         }
       }
       if (col.type==='refer') {
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/EditAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/EditAction.js
index c28b911..39f343b 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/EditAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/EditAction.js
@@ -43,7 +43,7 @@
   }
   callPreEvent(options, doBefore, function (options) {
     doEdit(options, function (type,formData) {
-      callPostEvent(options, doAfter,type, callback);
+      callPostEvent(options, doAfter,callback,type);
     });
   });
 };
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/RevisionAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/RevisionAction.js
index 341592c..a4d5198 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/RevisionAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/RevisionAction.js
@@ -43,7 +43,7 @@
   }
   callPreEvent(options, doBefore, function (options) {
     doRev(options, function (formData) {
-      callPostEvent(options, doAfter,'rev', callback);
+      callPostEvent(options, doAfter,callback,'rev');
     });
   });
 };
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
index f13002d..c75adb8 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
@@ -42,7 +42,7 @@
 
   callPreEvent(options, doBefore, function (options) {
     showStartWindow(options, function () {
-      callPostEvent(options, doAfter, callback,type);
+      callPostEvent(options, doAfter, callback,'startwork');
     });
   });
 };
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/ViewAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/ViewAction.js
index 604862e..344364c 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/ViewAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/ViewAction.js
@@ -1,10 +1,12 @@
 /**
- * 鎸夐挳澶勭悊 椤甸潰灞曠ず涓簍ab閫夐」鍗�
+ * 鎸夐挳澶勭悊 寮圭獥灞曠ず璇︽儏
  */
 import {paramLow,callPreEvent,callPostEvent,replaceFreeMarker} from '../BaseAction';
 import {validatenull} from "@/util/validate";
 import Vue from "vue";
-import ViewDialog from "@/components/actions/base/ViewDialog";
+import ViewTab from "@/views/base/ViewTab";
+import router from "@/router/router"
+import store from "@/store/index"
 
 export const doAction = (options,callback) => {
   const paramVOS = Object.assign({
@@ -26,7 +28,6 @@
     Vue.prototype.$message.error("浠呰兘閫夋嫨涓�鏉℃暟鎹潵鎿嶄綔");
     return false;
   }
-
   callPreEvent(options, doBefore, function (options) {
     doView(options, function (type,formData) {
       callPostEvent(options, doAfter,type, callback);
@@ -57,25 +58,19 @@
     name="鏌ョ湅銆�"+replaceFreeMarker(paramVOS.showname,options.dataStore,options.sourceData)+"銆�"
   }
   paramVOS.title=name;
-  const dialogConstructor = Vue.extend(ViewDialog);
-  let instance = new dialogConstructor();
-  instance.sourceData = options.sourceData;
-  instance.dataStore = options.dataStore;
-  instance.paramVOS = paramVOS
-
-  instance.dialogClose = function () {
-    vm.visible = false;
-    document.body.removeChild(vm.$el);
-    instance.$destroy();
-    instance = null;
-  };
-  if (callback) {
-    instance.saveCallback = callback;
+  const params= {
+    options:options,
+    paramVOS:paramVOS,
+    saveCallback:callback
   }
-  let vm = instance.$mount();
-  document.body.appendChild(vm.$el);
-  instance.visible = true;
+
+  store.dispatch("setViewtabparams", params);
+  router.push({
+    name: "鏌ョ湅璇︽儏",
+    params:params,
+  });
 }
+
 /**
  * 鍓嶇疆浜嬩欢
  * @param options 鎸夐挳鐨勯厤缃俊鎭�
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/ViewDialogAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/ViewDialogAction.js
new file mode 100644
index 0000000..d63fb9d
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/ViewDialogAction.js
@@ -0,0 +1,100 @@
+/**
+ * 鎸夐挳澶勭悊 寮圭獥灞曠ず璇︽儏
+ */
+import {paramLow,callPreEvent,callPostEvent,replaceFreeMarker} from '../BaseAction';
+import {validatenull} from "@/util/validate";
+import Vue from "vue";
+import ViewDialog from "@/components/actions/base/ViewDialog";
+
+export const doAction = (options,callback) => {
+  const paramVOS = Object.assign({
+    getdataurl: '/api/uiDataController/dataFormQuery',
+    getdatamethod: 'post',
+    url: '/api/uiDataController/editSave',
+    method: 'put',
+    uploadfileurl: 'vciFileUploadController/uploadFile'
+  }, options.paramVOS)
+  options.paramVOS = paramVOS;
+
+  options.sourceData = options.sourceData || {};
+  options.dataStore = options.dataStore || [];
+  if (!options.dataStore || options.dataStore.length < 1) {
+    Vue.prototype.$message.error("璇烽�夋嫨闇�瑕佹祻瑙堢殑鏁版嵁");
+    return false;
+  }
+  if (!paramVOS.multi && options.dataStore.length > 1) {
+    Vue.prototype.$message.error("浠呰兘閫夋嫨涓�鏉℃暟鎹潵鎿嶄綔");
+    return false;
+  }
+  callPreEvent(options, doBefore, function (options) {
+    doView(options, function (type,formData) {
+      callPostEvent(options, doAfter,type, callback);
+    });
+  });
+};
+
+/**
+ * 鎵ц
+ * @param options 鎸夐挳鐨勯厤缃俊鎭�
+ * @param callback 鍥炶皟
+ */
+export const doView = (options,callback)=> {
+  const paramVOS = options.paramVOS;
+  let component = 'base/UIContentViewerInDialog';
+  if (!validatenull(paramVOS.customurl)) {
+    //鑷畾涔塲s
+    component = `custom-ui/` + paramVOS.customurl;
+  }else{
+    if (!paramVOS['type'] || !paramVOS['context']) {
+      Vue.prototype.$message.error("鎸夐挳閰嶇疆涓嶆纭�");
+      return false;
+    }
+  }
+  paramVOS.component=component;
+  let name="鏌ョ湅璇︽儏"
+  if(paramVOS.showname){
+    name="鏌ョ湅銆�"+replaceFreeMarker(paramVOS.showname,options.dataStore,options.sourceData)+"銆�"
+  }
+  paramVOS.title=name;
+  const dialogConstructor = Vue.extend(ViewDialog);
+  let instance = new dialogConstructor();
+  instance.sourceData = options.sourceData;
+  instance.dataStore = options.dataStore;
+  instance.paramVOS = paramVOS
+
+  instance.dialogClose = function () {
+    vm.visible = false;
+    document.body.removeChild(vm.$el);
+    instance.$destroy();
+    instance = null;
+  };
+  if (callback) {
+    instance.saveCallback = callback;
+  }
+  let vm = instance.$mount();
+  document.body.appendChild(vm.$el);
+  instance.visible = true;
+}
+
+/**
+ * 鍓嶇疆浜嬩欢
+ * @param options 鎸夐挳鐨勯厤缃俊鎭�
+ * @param callback 鍥炶皟
+ */
+export const doBefore = (options,callback)=> {
+  console.log('鎵ц鏌ョ湅鍓嶇疆浜嬩欢');
+  if(callback){
+    callback(options);
+  }
+}
+/**
+ * 鍚庣疆浜嬩欢
+ * @param options 鎸夐挳鐨勯厤缃俊鎭�
+ * @param callback 鍥炶皟
+ */
+export const doAfter = (options,callback,actionType)=> {
+  console.log('鎵ц鏌ョ湅鍚庣疆浜嬩欢');
+  if(callback){
+    callback(actionType);
+  }
+}
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js
index da79423..6653a21 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js
@@ -23,7 +23,7 @@
 
   callPreEvent(options, doBefore, function (options) {
     showStartWindow(options, function () {
-      callPostEvent(options, doAfter, callback,type);
+      callPostEvent(options, doAfter, callback,'downloadfile');
     });
   });
 };
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/upRevisionAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/upRevisionAction.js
index 3c59f46..738885c 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/upRevisionAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/upRevisionAction.js
@@ -18,7 +18,7 @@
 
   callPreEvent(options, doBefore, function (options) {
     showStartWindow(options, function () {
-      callPostEvent(options, doAfter, callback,type);
+      callPostEvent(options, doAfter, callback,'uprevision');
     });
   });
 };
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js
index 72318a6..8789035 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js
@@ -17,7 +17,7 @@
   }
   callPreEvent(options, doBefore, function (options) {
     showStartWindow(options, function () {
-      callPostEvent(options, doAfter, callback,type);
+      callPostEvent(options, doAfter, callback,'uploadfile');
     });
   });
 };
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/handlers.js b/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
index e67f42a..c2c1361 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
@@ -3,10 +3,14 @@
 
 export const handlerAction=function (type,options, callback) {
   const handlers = {
-    //鏌ョ湅
+    //鏌ョ湅锛宼ab灞曠ず璇︽儏
     view: () => {import("@/components/actions/base/ViewAction").then(module => {
       module.doAction(options,callback);
     })},
+    //鏌ョ湅锛屽脊绐楀睍绀鸿鎯�
+    viewdialog: () => {import("@/components/actions/base/ViewDialogAction").then(module => {
+      module.doAction(options,callback);
+    })},
     //鍒涘缓
     add: () => {import("@/components/actions/base/AddAction").then(module => {
       module.doAction(options,callback);
diff --git a/Source/plt-web/plt-web-ui/src/router/views/index.js b/Source/plt-web/plt-web-ui/src/router/views/index.js
index 383242e..92e7775 100644
--- a/Source/plt-web/plt-web-ui/src/router/views/index.js
+++ b/Source/plt-web/plt-web-ui/src/router/views/index.js
@@ -103,4 +103,17 @@
     component: () =>
       import( /* webpackChunkName: "views" */ '@/views/work/process/leave/detail')
   }]
-}]
+},{
+  path: '/viewTab',
+  component: Layout,
+  redirect: '/viewTab/index',
+  children: [{
+    path: 'index',
+    name: '鏌ョ湅璇︽儏',
+    meta: {
+      i18n: 'viewTab'
+    },
+    component: () =>
+      import('@/views/base/ViewTab')
+  }]
+} ]
diff --git a/Source/plt-web/plt-web-ui/src/store/index.js b/Source/plt-web/plt-web-ui/src/store/index.js
index bb38457..cbeb5d1 100644
--- a/Source/plt-web/plt-web-ui/src/store/index.js
+++ b/Source/plt-web/plt-web-ui/src/store/index.js
@@ -7,6 +7,7 @@
 import dict from './modules/dict'
 import getters from './getters'
 import flow from './modules/LifeFlow'
+import { setStore } from "@/util/store.js";
 
 Vue.use(Vuex)
 const store = new Vuex.Store({
@@ -19,6 +20,25 @@
     flow
   },
   getters,
+  state: {
+    viewtabparams:undefined, //鏌ョ湅tab Action鍙傛暟
+  },
+  mutations: {
+    // 瑙勭▼璇︽儏鍙傛暟
+    getViewtabparams(state, obj) {
+      state.viewtabparams = obj;
+    },
+  },
+  actions: {
+    setViewtabparams({ commit }, obj){
+      commit("getViewtabparams", obj);
+      setStore({
+        name:'viewtabparams',
+        content:obj,
+        type:'session'
+      });
+    }
+  }
 })
 
 export default store
diff --git a/Source/plt-web/plt-web-ui/src/views/base/ViewTab.vue b/Source/plt-web/plt-web-ui/src/views/base/ViewTab.vue
new file mode 100644
index 0000000..b948b58
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/views/base/ViewTab.vue
@@ -0,0 +1,67 @@
+<template>
+  <!--Action 鏌ョ湅Tab鐨勫疄鐜�-->
+  <component :is="currentComponent"
+             ref="uiViewRef"
+             key="ViewTab"
+             :btmType="paramVOS.type"
+             :context="paramVOS.context"
+             :inDialog="false"
+             :canEdit="false"
+             actionType="view"
+             :sourceData="sourceData"
+             :dataStore="dataStore"
+             :paramVOS="paramVOS"></component>
+</template>
+
+<script>
+import {validatenull} from "@/util/validate";
+import { getStore } from "@/util/store.js";
+
+export default {
+  name: "ViewTab",
+  components:{},
+  data(){
+    return {
+      sourceData:{},
+      dataStore:[],
+      paramVOS:{},
+      currentComponent: null,
+    }
+  },
+  computed:{
+    title(){
+      return this.paramVOS.title || "鏌ョ湅璇︽儏"
+    }
+  },
+  created() {
+    let config = {};
+    if (!validatenull(this.$store.state.viewtabparams)) {
+      config = this.$store.state.viewtabparams;
+    } else {
+      config = getStore('viewtabparams');
+    }
+    this.sourceData = config.options.sourceData;
+    this.dataStore = config.options.dataStore;
+    this.paramVOS = config.paramVOS;
+  },
+  mounted() {
+    this.loadCompoent();
+  },
+  methods: {
+    loadCompoent(){
+      // 鍔ㄦ�佸鍏ョ粍浠�
+      import(`@/views/${this.paramVOS.component}.vue`).then((module) => {
+        // 鎴愬姛瀵煎叆鍚庯紝灏嗙粍浠舵敞鍐屽埌Vue瀹炰緥涓�
+        this.currentComponent = module.default;
+      }).catch((error) => {
+        // 澶勭悊瀵煎叆澶辫触鐨勬儏鍐�
+        console.log('缁勪欢鍔犺浇澶辫触:', error);
+      });
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/Source/plt-web/plt-web-ui/src/views/custom-ui/product.vue b/Source/plt-web/plt-web-ui/src/views/custom-ui/product.vue
index a8dc620..5107974 100644
--- a/Source/plt-web/plt-web-ui/src/views/custom-ui/product.vue
+++ b/Source/plt-web/plt-web-ui/src/views/custom-ui/product.vue
@@ -1,10 +1,68 @@
 <template>
-  <p>浜у搧鑷畾涔夐〉闈�</p>
+  <avue-tree ref="tree" v-loading="treeLoading" :data="treeData" :option="treeOption" @node-click="nodeClick">
+  </avue-tree>
 </template>
 
 <script>
+import {getEbomInfo} from "@/api/UI/uiDefine";
+
 export default {
-  name: "product"
+  name: "product",
+  props: {
+    sourceData: {
+      type: Array,
+      default: {}
+    },
+    dataStore: {
+      type: Array,
+      default: []
+    },
+    paramVOS: {
+      type: Array,
+      default: {}
+    }
+  },
+  data() {
+    return {
+      treeLoading: false,
+      treeData: [],
+      treeOption: {
+        height: 'auto',
+        menu: false,
+        addBtn: false,
+        defaultExpandAll: false,
+        props: {
+          label: 'text',
+          value: 'oid',
+          children: 'children',
+        },
+        lazy: true,
+        treeLoad: (node, resolve) => {
+          console.log(node);
+          const params = {
+            productNo: this.dataStore[0].productnumber,
+            productOid: this.dataStore[0].oid,
+            parentOid: node.level === 0 ? '' : node.data.oid
+          }
+          getEbomInfo(params).then(res => {
+            console.log(res);
+            resolve(res.data.data.map(item => {
+              return {
+                ...item,
+                leaf: item.leaf
+              }
+            }))
+          })
+        }
+      },
+    }
+  },
+  created() {
+    // console.log(this.sourceData);
+    console.log(this.dataStore);
+    // console.log(this.paramVOS);
+  },
+  methods: {}
 }
 </script>
 
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue
index 8536661..c044f35 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue
@@ -672,8 +672,8 @@
           this.$message.success('鍒嗙被鍒涘缓鎴愬姛');
           this.getTreeList();
         }
-        done();
       })
+      done();
       loading();
     },
 
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue
index 0214151..16908cd 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue
@@ -1112,7 +1112,8 @@
         text: data.text,
         oid: data.oid,
         itemType: 'text',
-        itemName: data.data.name
+        itemName: data.data.name,
+        itemCols :"1"
       }
       console.log(data);
       const isDuplicate = this.formList.some(item => item.text === data.text);
@@ -1129,6 +1130,7 @@
       this.activeItem = item;
       this.activeItemIndex = index;
       this.form = {...item};
+      // this.form.itemCols = "1";
       console.log(item);
 
       // console.log(item,index);
diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/option.js b/Source/plt-web/plt-web-ui/src/views/system/user/option.js
index cf9c5d3..32672fc 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/user/option.js
+++ b/Source/plt-web/plt-web-ui/src/views/system/user/option.js
@@ -143,7 +143,7 @@
   },
   {
     label: '鎵�灞炲瘑绾�',
-    prop: 'secretGradeText',
+    prop: 'secretGrade',
     width: 100,
     sortable:true,
     type: 'select',
@@ -153,5 +153,8 @@
       value: 'key',
       res: "obj",
     },
+    // formatter:(row,value,label)=>{
+    //   return row.secretGrade === 0 ? '' : label;
+    // }
   },
 ];

--
Gitblit v1.9.3