From 0e818b766656ea54f516c1bb3b5987c985de80a9 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 18 十月 2024 16:56:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue                                                             |   32 
 Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js                                                                           |    2 
 Source/plt-web/plt-web-ui/src/components/flow-cycle/components/Toolbar.vue                                                           |   14 
 Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue                                                           |  121 +++-
 Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue                                                              |   11 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue                                                         |   28 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue                                                        |   33 -
 Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js                                                                               |  745 +++++++++++++++++++++++--
 Source/plt-web/plt-web-ui/src/api/authority/functionView/api.js                                                                      |   28 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java |    4 
 Source/plt-web/plt-web-ui/src/App.vue                                                                                                |   17 
 /dev/null                                                                                                                            |   92 ---
 Source/plt-web/plt-web-ui/src/api/system/role/api.js                                                                                 |   10 
 Source/plt-web/plt-web-ui/src/components/flow-cycle/components/ContextMenu.vue                                                       |   46 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue                                             |  224 ++++++
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue                                            |    2 
 Source/plt-web/plt-web-ui/src/views/authority/function/functionView/index.vue                                                        |  244 ++++++++
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue                                                     |   32 -
 18 files changed, 1,343 insertions(+), 342 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
index b60237c..d065a32 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
@@ -599,7 +599,7 @@
         List<String> authList = new ArrayList<>();
         for (FunctionInfo functionInfo : moduleListByParentId) {
             if(authMap.containsKey(functionInfo.id)){
-                authList.add(functionInfo.id);
+//                authList.add(functionInfo.id);
                 getChildAuthNode(functionInfo, authMap, authList);
             }
         }
@@ -735,7 +735,7 @@
             FunctionInfo[] funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(funcObj.id, false);
             for(int i=0;i<funcInfos.length;i++){
                 if(authMap.containsKey(funcInfos[i].id)){
-                    authList.add(funcInfos[i].id);
+//                    authList.add(funcInfos[i].id);
                     getChildAuthNode(funcInfos[i], authMap, authList);
                 }
             }
diff --git a/Source/plt-web/plt-web-ui/src/App.vue b/Source/plt-web/plt-web-ui/src/App.vue
index ea51abd..b83a1ca 100644
--- a/Source/plt-web/plt-web-ui/src/App.vue
+++ b/Source/plt-web/plt-web-ui/src/App.vue
@@ -125,4 +125,21 @@
 .el-dialog__footer{
   border-top: 1px solid #e9e7e7;
 }
+/***鎸夐挳妗�****/
+.headerCon {
+  display: flex;
+  flex-wrap: wrap;
+  margin-bottom: 5px;
+  .el-button {
+    min-width: 60px;
+    padding-left: 9.5px;
+    margin-left: 0;
+    margin-right: 5px;
+    margin-bottom: 5px;
+  }
+}
+/***闅愯棌鏍戞噿鍔犺浇鏃惰妭鐐逛笂鐨刲oading锛岄槻姝㈣妭鐐规姈鍔�*****/
+.el-tree .el-tree-node__loading-icon{
+  display: none !important;
+}
 </style>
diff --git a/Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js b/Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js
index 8eb5d60..6384a78 100644
--- a/Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js
+++ b/Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js
@@ -68,65 +68,688 @@
   })
 }
 
-// 琛ㄥ崟鎺ュ彛娴嬭瘯鏁版嵁
-const obj = {
-  "itemAddFilter": "",
-  "itemBat": "",
-  "itemCols": "1",
-  "itemCtrlDisplyCol": "",
-  "itemCtrlDisplyCondition": "",
-  "itemCustomClass": "",
-  "itemCut": "",
-  "itemDateFormat": "",
-  "itemDbl": "",
-  "itemEQ": "",
-  "itemEditCondition": "",
-  "itemEditableProgram": "",
-  "itemField": "specialty",
-  "itemFieldWidth": "",
-  "itemFieldWidthList": [],
-  "itemHrefConf": "",
-  "itemHrefFields": "",
-  "itemHttpPathField": "",
-  "itemHttpVolumnPath": "",
-  "itemImgWH": "",
-  "itemInObj": "",
-  "itemIsEditable": "0",
-  "itemIsHidden": "1",
-  "itemIsHttpSave": "0",
-  "itemIsNavigatorExpand": "",
-  "itemIsRequired": "0",
-  "itemIsShowFolder": "",
-  "itemKeyFieldList": [],
-  "itemKeyFields": "",
-  "itemListTable": "",
-  "itemListTxt": "",
-  "itemListVal": "",
-  "itemName": "涓撲笟",
-  "itemOR": "",
-  "itemOutFieldList": [],
-  "itemOutFields": "",
-  "itemOutType": "",
-  "itemPageSize": "",
-  "itemParentFolderName": "",
-  "itemQtName": "",
-  "itemQueryRefFields": "",
-  "itemQuerySql": "",
-  "itemRight": "",
-  "itemRows": "",
-  "itemScript": "",
-  "itemSearchFieldList": [],
-  "itemSelectoutFieldList": [],
-  "itemSeniorQueryBOS": [],
-  "itemSeniorQueryCols": "",
-  "itemSeniorQueryColsCounts": "",
-  "itemShowExpression": "",
-  "itemStyle": "",
-  "itemTips": "",
-  "itemTrim": "",
-  "itemTxf": "",
-  "itemType": "text",
-  "itemTypeText": "鍗曡鏂囨湰妗�",
-  "itemValue": "",
-  "itemValueList": []
+const obj ={
+  "id": "",// 淇敼鏃跺�欏繀浼�
+  "prm": {
+  "formQtName": "", // 琛ㄥ崟鍚嶇О瀵瑰簲涓嬮潰瑙嗗浘鍚嶇О
+    "prmItemList": [
+    {
+      "itemAddFilter": "",
+      "itemBat": "",
+      "itemCols": "0",
+      "itemCtrlDisplyCol": "",
+      "itemCtrlDisplyCondition": "",
+      "itemCustomClass": "",
+      "itemCut": "",
+      "itemDateFormat": "",
+      "itemDbl": "",
+      "itemEQ": "",
+      "itemEditCondition": "",
+      "itemEditableProgram": "",
+      "itemField": "anticollaboration",
+      "itemFieldWidth": "",
+      "itemFieldWidthList": [],
+      "itemHrefConf": "",
+      "itemHrefFields": "",
+      "itemHttpPathField": "",
+      "itemHttpVolumnPath": "",
+      "itemImgWH": "",
+      "itemInObj": "",
+      "itemIsEditable": "1",
+      "itemIsHidden": "0",
+      "itemIsHttpSave": "0",
+      "itemIsNavigatorExpand": "",
+      "itemIsRequired": "0",
+      "itemIsShowFolder": "",
+      "itemKeyFieldList": [],
+      "itemKeyFields": "",
+      "itemListTable": "",
+      "itemListTxt": "",
+      "itemListVal": "",
+      "itemName": "鍙嶅崗浣滄爣璇�",
+      "itemOR": "",
+      "itemOutFieldList": [],
+      "itemOutFields": "",
+      "itemOutType": "",
+      "itemPageSize": "",
+      "itemParentFolderName": "",
+      "itemQtName": "",
+      "itemQueryRefFields": "",
+      "itemQuerySql": "",
+      "itemRight": "",
+      "itemRows": "",
+      "itemScript": "",
+      "itemSearchFieldList": [],
+      "itemSelectoutFieldList": [],
+      "itemSeniorQueryBOS": [],
+      "itemSeniorQueryCols": "",
+      "itemSeniorQueryColsCounts": "",
+      "itemShowExpression": "",
+      "itemStyle": "",
+      "itemTips": "",
+      "itemTrim": "",
+      "itemTxf": "",
+      "itemType": "text",
+      "itemTypeText": "鍗曡鏂囨湰妗�",
+      "itemValue": "N",
+      "itemValueList": []
+    },
+    {
+      "itemAddFilter": "",
+      "itemBat": "",
+      "itemCols": "0",
+      "itemCtrlDisplyCol": "",
+      "itemCtrlDisplyCondition": "",
+      "itemCustomClass": "",
+      "itemCut": "",
+      "itemDateFormat": "",
+      "itemDbl": "",
+      "itemEQ": "",
+      "itemEditCondition": "",
+      "itemEditableProgram": "",
+      "itemField": "holistic",
+      "itemFieldWidth": "",
+      "itemFieldWidthList": [],
+      "itemHrefConf": "",
+      "itemHrefFields": "",
+      "itemHttpPathField": "",
+      "itemHttpVolumnPath": "",
+      "itemImgWH": "",
+      "itemInObj": "",
+      "itemIsEditable": "1",
+      "itemIsHidden": "0",
+      "itemIsHttpSave": "0",
+      "itemIsNavigatorExpand": "",
+      "itemIsRequired": "0",
+      "itemIsShowFolder": "",
+      "itemKeyFieldList": [],
+      "itemKeyFields": "",
+      "itemListTable": "",
+      "itemListTxt": "",
+      "itemListVal": "",
+      "itemName": "鏁翠綋鎬�",
+      "itemOR": "",
+      "itemOutFieldList": [],
+      "itemOutFields": "",
+      "itemOutType": "",
+      "itemPageSize": "",
+      "itemParentFolderName": "",
+      "itemQtName": "",
+      "itemQueryRefFields": "",
+      "itemQuerySql": "",
+      "itemRight": "",
+      "itemRows": "",
+      "itemScript": "",
+      "itemSearchFieldList": [],
+      "itemSelectoutFieldList": [],
+      "itemSeniorQueryBOS": [],
+      "itemSeniorQueryCols": "",
+      "itemSeniorQueryColsCounts": "",
+      "itemShowExpression": "",
+      "itemStyle": "",
+      "itemTips": "",
+      "itemTrim": "",
+      "itemTxf": "",
+      "itemType": "text",
+      "itemTypeText": "鍗曡鏂囨湰妗�",
+      "itemValue": "N",
+      "itemValueList": []
+    },
+    {
+      "itemAddFilter": "",
+      "itemBat": "",
+      "itemCols": "0",
+      "itemCtrlDisplyCol": "",
+      "itemCtrlDisplyCondition": "",
+      "itemCustomClass": "",
+      "itemCut": "",
+      "itemDateFormat": "",
+      "itemDbl": "",
+      "itemEQ": "",
+      "itemEditCondition": "",
+      "itemEditableProgram": "",
+      "itemField": "isproductbring",
+      "itemFieldWidth": "",
+      "itemFieldWidthList": [],
+      "itemHrefConf": "",
+      "itemHrefFields": "",
+      "itemHttpPathField": "",
+      "itemHttpVolumnPath": "",
+      "itemImgWH": "",
+      "itemInObj": "",
+      "itemIsEditable": "1",
+      "itemIsHidden": "0",
+      "itemIsHttpSave": "0",
+      "itemIsNavigatorExpand": "",
+      "itemIsRequired": "0",
+      "itemIsShowFolder": "",
+      "itemKeyFieldList": [],
+      "itemKeyFields": "",
+      "itemListTable": "",
+      "itemListTxt": "",
+      "itemListVal": "",
+      "itemName": "鎴愬搧甯︽潵",
+      "itemOR": "",
+      "itemOutFieldList": [],
+      "itemOutFields": "",
+      "itemOutType": "",
+      "itemPageSize": "",
+      "itemParentFolderName": "",
+      "itemQtName": "",
+      "itemQueryRefFields": "",
+      "itemQuerySql": "",
+      "itemRight": "",
+      "itemRows": "",
+      "itemScript": "",
+      "itemSearchFieldList": [],
+      "itemSelectoutFieldList": [],
+      "itemSeniorQueryBOS": [],
+      "itemSeniorQueryCols": "",
+      "itemSeniorQueryColsCounts": "",
+      "itemShowExpression": "",
+      "itemStyle": "",
+      "itemTips": "",
+      "itemTrim": "",
+      "itemTxf": "",
+      "itemType": "text",
+      "itemTypeText": "鍗曡鏂囨湰妗�",
+      "itemValue": "N",
+      "itemValueList": []
+    },
+    {
+      "itemAddFilter": "",
+      "itemBat": "",
+      "itemCols": "0",
+      "itemCtrlDisplyCol": "",
+      "itemCtrlDisplyCondition": "",
+      "itemCustomClass": "",
+      "itemCut": "",
+      "itemDateFormat": "",
+      "itemDbl": "",
+      "itemEQ": "",
+      "itemEditCondition": "",
+      "itemEditableProgram": "",
+      "itemField": "isforging",
+      "itemFieldWidth": "",
+      "itemFieldWidthList": [],
+      "itemHrefConf": "",
+      "itemHrefFields": "",
+      "itemHttpPathField": "",
+      "itemHttpVolumnPath": "",
+      "itemImgWH": "",
+      "itemInObj": "",
+      "itemIsEditable": "1",
+      "itemIsHidden": "0",
+      "itemIsHttpSave": "0",
+      "itemIsNavigatorExpand": "",
+      "itemIsRequired": "0",
+      "itemIsShowFolder": "",
+      "itemKeyFieldList": [],
+      "itemKeyFields": "",
+      "itemListTable": "",
+      "itemListTxt": "",
+      "itemListVal": "",
+      "itemName": "鏄惁閿婚摳浠�",
+      "itemOR": "",
+      "itemOutFieldList": [],
+      "itemOutFields": "",
+      "itemOutType": "",
+      "itemPageSize": "",
+      "itemParentFolderName": "",
+      "itemQtName": "",
+      "itemQueryRefFields": "",
+      "itemQuerySql": "",
+      "itemRight": "",
+      "itemRows": "",
+      "itemScript": "",
+      "itemSearchFieldList": [],
+      "itemSelectoutFieldList": [],
+      "itemSeniorQueryBOS": [],
+      "itemSeniorQueryCols": "",
+      "itemSeniorQueryColsCounts": "",
+      "itemShowExpression": "",
+      "itemStyle": "",
+      "itemTips": "",
+      "itemTrim": "",
+      "itemTxf": "",
+      "itemType": "text",
+      "itemTypeText": "鍗曡鏂囨湰妗�",
+      "itemValue": "",
+      "itemValueList": []
+    },
+    {
+      "itemAddFilter": "",
+      "itemBat": "",
+      "itemCols": "1",
+      "itemCtrlDisplyCol": "",
+      "itemCtrlDisplyCondition": "",
+      "itemCustomClass": "",
+      "itemCut": "",
+      "itemDateFormat": "",
+      "itemDbl": "",
+      "itemEQ": "",
+      "itemEditCondition": "",
+      "itemEditableProgram": "",
+      "itemField": "processremark",
+      "itemFieldWidth": "",
+      "itemFieldWidthList": [],
+      "itemHrefConf": "",
+      "itemHrefFields": "",
+      "itemHttpPathField": "",
+      "itemHttpVolumnPath": "",
+      "itemImgWH": "",
+      "itemInObj": "",
+      "itemIsEditable": "1",
+      "itemIsHidden": "1",
+      "itemIsHttpSave": "0",
+      "itemIsNavigatorExpand": "",
+      "itemIsRequired": "0",
+      "itemIsShowFolder": "",
+      "itemKeyFieldList": [],
+      "itemKeyFields": "",
+      "itemListTable": "",
+      "itemListTxt": "",
+      "itemListVal": "",
+      "itemName": "宸ヨ壓澶囨敞",
+      "itemOR": "",
+      "itemOutFieldList": [],
+      "itemOutFields": "",
+      "itemOutType": "",
+      "itemPageSize": "",
+      "itemParentFolderName": "",
+      "itemQtName": "",
+      "itemQueryRefFields": "",
+      "itemQuerySql": "",
+      "itemRight": "",
+      "itemRows": "",
+      "itemScript": "",
+      "itemSearchFieldList": [],
+      "itemSelectoutFieldList": [],
+      "itemSeniorQueryBOS": [],
+      "itemSeniorQueryCols": "",
+      "itemSeniorQueryColsCounts": "",
+      "itemShowExpression": "",
+      "itemStyle": "",
+      "itemTips": "",
+      "itemTrim": "",
+      "itemTxf": "",
+      "itemType": "text",
+      "itemTypeText": "鍗曡鏂囨湰妗�",
+      "itemValue": "",
+      "itemValueList": []
+    },
+    {
+      "itemAddFilter": "",
+      "itemBat": "",
+      "itemCols": "1",
+      "itemCtrlDisplyCol": "",
+      "itemCtrlDisplyCondition": "",
+      "itemCustomClass": "",
+      "itemCut": "",
+      "itemDateFormat": "",
+      "itemDbl": "",
+      "itemEQ": "",
+      "itemEditCondition": "",
+      "itemEditableProgram": "",
+      "itemField": "materialtype",
+      "itemFieldWidth": "",
+      "itemFieldWidthList": [],
+      "itemHrefConf": "",
+      "itemHrefFields": "",
+      "itemHttpPathField": "",
+      "itemHttpVolumnPath": "",
+      "itemImgWH": "",
+      "itemInObj": "",
+      "itemIsEditable": "1",
+      "itemIsHidden": "1",
+      "itemIsHttpSave": "0",
+      "itemIsNavigatorExpand": "",
+      "itemIsRequired": "0",
+      "itemIsShowFolder": "",
+      "itemKeyFieldList": [],
+      "itemKeyFields": "",
+      "itemListTable": "",
+      "itemListTxt": "",
+      "itemListVal": "",
+      "itemName": "鐗╂枡绫诲瀷",
+      "itemOR": "",
+      "itemOutFieldList": [],
+      "itemOutFields": "",
+      "itemOutType": "",
+      "itemPageSize": "",
+      "itemParentFolderName": "",
+      "itemQtName": "",
+      "itemQueryRefFields": "",
+      "itemQuerySql": "",
+      "itemRight": "",
+      "itemRows": "",
+      "itemScript": "",
+      "itemSearchFieldList": [],
+      "itemSelectoutFieldList": [],
+      "itemSeniorQueryBOS": [],
+      "itemSeniorQueryCols": "",
+      "itemSeniorQueryColsCounts": "",
+      "itemShowExpression": "",
+      "itemStyle": "",
+      "itemTips": "",
+      "itemTrim": "",
+      "itemTxf": "",
+      "itemType": "text",
+      "itemTypeText": "鍗曡鏂囨湰妗�",
+      "itemValue": "",
+      "itemValueList": []
+    },
+    {
+      "itemAddFilter": "",
+      "itemBat": "",
+      "itemCols": "1",
+      "itemCtrlDisplyCol": "",
+      "itemCtrlDisplyCondition": "",
+      "itemCustomClass": "",
+      "itemCut": "",
+      "itemDateFormat": "",
+      "itemDbl": "",
+      "itemEQ": "",
+      "itemEditCondition": "",
+      "itemEditableProgram": "",
+      "itemField": "iscruxpart",
+      "itemFieldWidth": "",
+      "itemFieldWidthList": [],
+      "itemHrefConf": "",
+      "itemHrefFields": "",
+      "itemHttpPathField": "",
+      "itemHttpVolumnPath": "",
+      "itemImgWH": "",
+      "itemInObj": "",
+      "itemIsEditable": "1",
+      "itemIsHidden": "1",
+      "itemIsHttpSave": "0",
+      "itemIsNavigatorExpand": "",
+      "itemIsRequired": "0",
+      "itemIsShowFolder": "",
+      "itemKeyFieldList": [],
+      "itemKeyFields": "",
+      "itemListTable": "",
+      "itemListTxt": "",
+      "itemListVal": "",
+      "itemName": "鏄惁鍏抽敭浠�",
+      "itemOR": "",
+      "itemOutFieldList": [],
+      "itemOutFields": "",
+      "itemOutType": "",
+      "itemPageSize": "",
+      "itemParentFolderName": "",
+      "itemQtName": "",
+      "itemQueryRefFields": "",
+      "itemQuerySql": "",
+      "itemRight": "",
+      "itemRows": "",
+      "itemScript": "",
+      "itemSearchFieldList": [],
+      "itemSelectoutFieldList": [],
+      "itemSeniorQueryBOS": [],
+      "itemSeniorQueryCols": "",
+      "itemSeniorQueryColsCounts": "",
+      "itemShowExpression": "",
+      "itemStyle": "",
+      "itemTips": "",
+      "itemTrim": "",
+      "itemTxf": "",
+      "itemType": "select",
+      "itemTypeText": "涓嬫媺鑿滃崟",
+      "itemValue": "N",
+      "itemValueList": [
+        "鍚N}",
+        "鏄瘂Y}"
+      ]
+    },
+    {
+      "itemAddFilter": "",
+      "itemBat": "",
+      "itemCols": "1",
+      "itemCtrlDisplyCol": "",
+      "itemCtrlDisplyCondition": "",
+      "itemCustomClass": "",
+      "itemCut": "",
+      "itemDateFormat": "",
+      "itemDbl": "",
+      "itemEQ": "",
+      "itemEditCondition": "",
+      "itemEditableProgram": "",
+      "itemField": "isimportantpart",
+      "itemFieldWidth": "",
+      "itemFieldWidthList": [],
+      "itemHrefConf": "",
+      "itemHrefFields": "",
+      "itemHttpPathField": "",
+      "itemHttpVolumnPath": "",
+      "itemImgWH": "",
+      "itemInObj": "",
+      "itemIsEditable": "1",
+      "itemIsHidden": "1",
+      "itemIsHttpSave": "0",
+      "itemIsNavigatorExpand": "",
+      "itemIsRequired": "0",
+      "itemIsShowFolder": "",
+      "itemKeyFieldList": [],
+      "itemKeyFields": "",
+      "itemListTable": "",
+      "itemListTxt": "",
+      "itemListVal": "",
+      "itemName": "鏄惁閲嶈浠�",
+      "itemOR": "",
+      "itemOutFieldList": [],
+      "itemOutFields": "",
+      "itemOutType": "",
+      "itemPageSize": "",
+      "itemParentFolderName": "",
+      "itemQtName": "",
+      "itemQueryRefFields": "",
+      "itemQuerySql": "",
+      "itemRight": "",
+      "itemRows": "",
+      "itemScript": "",
+      "itemSearchFieldList": [],
+      "itemSelectoutFieldList": [],
+      "itemSeniorQueryBOS": [],
+      "itemSeniorQueryCols": "",
+      "itemSeniorQueryColsCounts": "",
+      "itemShowExpression": "",
+      "itemStyle": "",
+      "itemTips": "",
+      "itemTrim": "",
+      "itemTxf": "",
+      "itemType": "select",
+      "itemTypeText": "涓嬫媺鑿滃崟",
+      "itemValue": "N",
+      "itemValueList": [
+        "鏄瘂Y}",
+        "鍚N}"
+      ]
+    }
+  ],
+    "showCols": "2"
+},
+  "typeFlag": 0, // 涓氬姟绫诲瀷0 or 閾炬帴绫诲瀷1
+  "typeFlagText": "涓氬姟绫诲瀷鐨勮〃鍗�",// 涓氬姟绫诲瀷鏄剧ず鍊�
+  "typeName": "ppart",// 涓氬姟绫诲瀷鍚�
+  "viName": "ppartProp_test3", // 瑙嗗浘鍚嶇О
+  "viType": 1, // 瑙嗗浘绫诲瀷
+  "viTypeText": "琛ㄥ崟" // 瑙嗗浘涓枃鍚嶇О
 }
+
+const dataForm = {
+  "id": "",
+  "prm": {
+    "formQtName": "",
+    "prmItemList": [
+      {
+        "itemAddFilter": "",
+        "itemBat": "",
+        "itemCols": "",
+        "itemCtrlDisplyCol": "",
+        "itemCtrlDisplyCondition": "",
+        "itemCustomClass": "",
+        "itemCut": "",
+        "itemDateFormat": "",
+        "itemDbl": "3",
+        "itemEQ": "",
+        "itemEditCondition": "",
+        "itemEditableProgram": "",
+        "itemField": "",
+        "itemFieldWidth": "150,150,100,80,80,80,100,100,100,100,50,100,250",
+        "itemFieldWidthList": [
+          {
+            "attributes": {},
+            "key": "code",
+            "value": "150"
+          },
+          {
+            "attributes": {},
+            "key": "partoid.name",
+            "value": "150"
+          },
+          {
+            "attributes": {},
+            "key": "validity",
+            "value": "100"
+          },
+          {
+            "attributes": {},
+            "key": "lcstatus",
+            "value": "80"
+          },
+          {
+            "attributes": {},
+            "key": "additionalunit",
+            "value": "80"
+          },
+          {
+            "attributes": {},
+            "key": "distributeunittwo",
+            "value": "80"
+          },
+          {
+            "attributes": {},
+            "key": "anticollaboration",
+            "value": "100"
+          },
+          {
+            "attributes": {},
+            "key": "holistic",
+            "value": "100"
+          },
+          {
+            "attributes": {},
+            "key": "scale",
+            "value": "100"
+          },
+          {
+            "attributes": {},
+            "key": "source",
+            "value": "100"
+          },
+          {
+            "attributes": {},
+            "key": "isforging",
+            "value": "50"
+          },
+          {
+            "attributes": {},
+            "key": "isproductbring",
+            "value": "100"
+          },
+          {
+            "attributes": {},
+            "key": "processremark",
+            "value": "250"
+          }
+        ],
+        "itemHrefConf": "",
+        "itemHrefFields": "",
+        "itemHttpPathField": "",
+        "itemHttpVolumnPath": "",
+        "itemImgWH": "0,0",
+        "itemInObj": "A5791895-83D1-D63F-40C4-26705FF3A2BB",
+        "itemIsEditable": "",
+        "itemIsHidden": "",
+        "itemIsHttpSave": "",
+        "itemIsNavigatorExpand": "false",
+        "itemIsRequired": "",
+        "itemIsShowFolder": "false",
+        "itemKeyFieldList": null,
+        "itemKeyFields": "",
+        "itemListTable": "",
+        "itemListTxt": "",
+        "itemListVal": "",
+        "itemName": "",
+        "itemOR": "",
+        "itemOutFieldList": [
+          "code",
+          "partoid.name",
+          "validity",
+          "lcstatus",
+          "additionalunit",
+          "distributeunittwo",
+          "anticollaboration",
+          "holistic",
+          "scale",
+          "source",
+          "isforging",
+          "isproductbring",
+          "processremark"
+        ],
+        "itemOutFields": "code,partoid.name,validity,lcstatus,additionalunit,distributeunittwo,anticollaboration,holistic,scale,source,isforging,isproductbring,processremark",
+        "itemOutType": "",
+        "itemPageSize": "",
+        "itemParentFolderName": "",
+        "itemQtName": "queryppartbypbom",
+        "itemQueryRefFields": "",
+        "itemQuerySql": "",
+        "itemRight": "",
+        "itemRows": "",
+        "itemScript": "",
+        "itemSearchFieldList": [
+          "code",
+          "partoid.name",
+          "validity",
+          "lcstatus",
+          "additionalunit",
+          "distributeunittwo",
+          "anticollaboration",
+          "holistic",
+          "scale",
+          "source",
+          "isforging",
+          "isproductbring",
+          "processremark"
+        ],
+        "itemSelectoutFieldList": [
+          "produceroute",
+          "hotsurfaceroute"
+        ],
+        "itemSeniorQueryBOS": [],
+        "itemSeniorQueryCols": "",
+        "itemSeniorQueryColsCounts": "",
+        "itemShowExpression": "",
+        "itemStyle": "",
+        "itemTips": "",
+        "itemTrim": "",
+        "itemTxf": "",
+        "itemType": "",
+        "itemTypeText": "",
+        "itemValue": "",
+        "itemValueList": []
+      }
+    ],
+    "showCols": "3"
+  },
+  "typeFlag": 0,
+  "typeFlagText": "涓氬姟绫诲瀷鐨勮〃鏍�",
+  "typeName": "ppart",
+  "viName": "ppart_auditlist_test",
+  "viType": 0,
+  "viTypeText": "琛ㄦ牸"
+}
+
+
diff --git a/Source/plt-web/plt-web-ui/src/api/authority/functionView/api.js b/Source/plt-web/plt-web-ui/src/api/authority/functionView/api.js
new file mode 100644
index 0000000..b915c0f
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/api/authority/functionView/api.js
@@ -0,0 +1,28 @@
+import request from '@/router/axios';
+
+// 瑙掕壊鏍戞煡璇㈡帴鍙�
+export function getSysModelAuthTreeMenuByPID(params) {
+  return request({
+    url: "/api/hmSysModConfigController/getSysModelAuthTreeMenuByPID",
+    method: "get",
+    params
+  });
+}
+
+// 鏍戣鎺堟潈鐨勬暟鎹帴鍙�
+export function getSysModelAuth(params) {
+  return request({
+    url: "/api/hmSysModConfigController/getSysModelAuth",
+    method: "get",
+    params
+  });
+}
+
+// 鎺堟潈淇濆瓨
+export function saveRoleRight(params) {
+  return request({
+    url: "/api/hmSysModConfigController/saveRoleRight",
+    method: "post",
+    data:params
+  });
+}
diff --git a/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js b/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js
index 9d3b1dc..5ff7ca9 100644
--- a/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js
+++ b/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js
@@ -17,3 +17,5 @@
     data: params
   })
 }
+
+
diff --git a/Source/plt-web/plt-web-ui/src/api/system/role/api.js b/Source/plt-web/plt-web-ui/src/api/system/role/api.js
index caccba5..95c0bbe 100644
--- a/Source/plt-web/plt-web-ui/src/api/system/role/api.js
+++ b/Source/plt-web/plt-web-ui/src/api/system/role/api.js
@@ -70,3 +70,13 @@
     data:formData
   });
 }
+
+// 閫氳繃瑙掕壊id鏌ヨ鎺堟潈淇℃伅
+export function getRightListByRoleId(params) {
+  return request({
+    url: "/api/uiManagerController/getRightListByRoleId",
+    method: "get",
+    params
+  });
+}
+
diff --git a/Source/plt-web/plt-web-ui/src/components/flow-cycle/components/ContextMenu.vue b/Source/plt-web/plt-web-ui/src/components/flow-cycle/components/ContextMenu.vue
index 1b66514..f999664 100644
--- a/Source/plt-web/plt-web-ui/src/components/flow-cycle/components/ContextMenu.vue
+++ b/Source/plt-web/plt-web-ui/src/components/flow-cycle/components/ContextMenu.vue
@@ -48,32 +48,34 @@
   background: #fff;
   border-radius: 4px;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+  padding: 5px;
 }
+::v-deep {
+  .contextMenu .command.disable .item {
+    color: rgba(0, 0, 0, 0.25);
+    cursor: auto;
+  }
 
-.contextMenu .command.disable .item {
-  color: rgba(0, 0, 0, 0.25);
-  cursor: auto;
-}
+  .contextMenu .command.disable .item:hover {
+    background: #fff;
+  }
 
-.contextMenu .command.disable .item:hover {
-  background: #fff;
-}
+  .contextMenu .item {
+    display: flex;
+    align-items: center;
+    padding: 5px 12px;
+    cursor: pointer;
+    transition: all 0.3s;
+    user-select: none;
+  }
 
-.contextMenu .item {
-  display: flex;
-  align-items: center;
-  padding: 5px 12px;
-  cursor: pointer;
-  transition: all 0.3s;
-  user-select: none;
-}
+  .contextMenu .item:hover {
+    background: #e6f7ff;
+  }
 
-.contextMenu .item:hover {
-  background: #e6f7ff;
-}
-
-.contextMenu .item i {
-  margin-right: 8px;
-  margin-top: 3px;
+  .contextMenu .item i {
+    margin-right: 8px;
+    margin-top: 3px;
+  }
 }
 </style>
diff --git a/Source/plt-web/plt-web-ui/src/components/flow-cycle/components/Toolbar.vue b/Source/plt-web/plt-web-ui/src/components/flow-cycle/components/Toolbar.vue
index f656817..5b882e2 100644
--- a/Source/plt-web/plt-web-ui/src/components/flow-cycle/components/Toolbar.vue
+++ b/Source/plt-web/plt-web-ui/src/components/flow-cycle/components/Toolbar.vue
@@ -17,19 +17,15 @@
       <!-- <toolbar-button command="toFront" icon="to-front" text="鍚戜笂涓�灞�" /> -->
       <!-- <toolbar-button command="addGroup" icon="group" text="缂栫粍" /> -->
       <!-- <toolbar-button command="unGroup" icon="ungroup" text="鍙栨秷缂栫粍" /> -->
-      <toolbar-button command="selectAll" icon="select-all" text="鍏ㄩ��"/>
-      <toolbar-button command="multiSelect" icon="select" text="妗嗛��"/>
+      <toolbar-button v-show="disabledBtn" command="selectAll" icon="select-all" text="鍏ㄩ��"/>
+      <toolbar-button v-shof="disabledBtn" command="multiSelect" icon="select" text="妗嗛��"/>
       <div v-if="disabledBtn" class="split"></div>
-      <toolbar-button  command="delete" text="鍒犻櫎"/>
-      <toolbar-button  command="clear" icon="clear" text="娓呯┖鐢诲竷"/>
+      <toolbar-button v-show="disabledBtn" command="delete" text="鍒犻櫎"/>
+      <toolbar-button v-show="disabledBtn" command="clear" icon="clear" text="娓呯┖鐢诲竷"/>
     </template>
     <template>
       <div class="split"></div>
-      <toolbar-button
-        command="downloadImage"
-        icon="image"
-        text="涓嬭浇鍥惧儚"
-      />
+      <toolbar-button command="downloadImage" icon="image" text="涓嬭浇鍥惧儚"/>
     </template>
     <!--    <el-button>{{this.$store}}</el-button>-->
     <el-button :disabled="!disabledBtn" icon="el-icon-check" plain size="small" type="success"
diff --git a/Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue b/Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue
index 7e2245e..15b1954 100644
--- a/Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue
+++ b/Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue
@@ -23,6 +23,7 @@
               <p>{{ item.name }}: {{ item.value }}</p>
             </template>
           </div>
+          <div v-if="!disabledBtn" class="mask"></div>
         </div>
 
         <div  class="vfe-chart-panel">
@@ -129,7 +130,6 @@
     },
     // 澶勭悊鍥捐〃鏁版嵁鏇存敼鐨勪簨浠�
     onAfterChange(e) {
-      console.log(e)
       try {
         // if('edit' === this.$store.state.flow.type){
         //   this.$refs.flowChart.propsAPI.remove(e.item);
@@ -172,7 +172,6 @@
         this.currentSelectedLine = currentEdge;
       }
     },
-
     // 涓嬭浇鍥剧墖
     _downloadImage(data, filename = "flowchart.png") {
       const a = document.createElement("a");
@@ -264,6 +263,14 @@
           margin: 0;
         }
       }
+      .mask{
+        opacity: 0.3;
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        left: 0;
+        top:0;
+      }
     }
 
     .vfe-chart-sidebar {
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/function/fuctionView/index.vue b/Source/plt-web/plt-web-ui/src/views/authority/function/fuctionView/index.vue
deleted file mode 100644
index 308c333..0000000
--- a/Source/plt-web/plt-web-ui/src/views/authority/function/fuctionView/index.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-<template>
-  <el-container>
-
-    <el-aside>
-      <basic-container>
-        <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
-          <div class="headerCon">
-            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓
-            </el-button>
-            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼
-            </el-button>
-            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delClickHandler">鍒犻櫎
-            </el-button>
-            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
-            </el-button>
-            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">瀵煎叆
-            </el-button>
-            <el-button class="smallBtn" plain size="small" type="primary"
-                       @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿
-            </el-button>
-          </div>
-          <!-- 宸︿晶鏍�         -->
-          <div style="height:  calc(100vh - 280px);">
-            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
-          <span slot-scope="{ node, data }" class="el-tree-node__label">
-           <span style="font-size: 15px">
-              <i class="el-icon-s-promotion"></i>
-                {{ (node || {}).label }}
-            </span>
-          </span>
-            </avue-tree>
-          </div>
-        </div>
-      </basic-container>
-    </el-aside>
-
-    <el-main>
-      <basic-container>
-      </basic-container>
-    </el-main>
-
-  </el-container>
-</template>
-
-<script>
-export default {
-  name: "index"
-}
-</script>
-
-<style lang="scss" scoped>
-::v-deep {
-  .el-scrollbar__wrap {
-    overflow: auto !important;
-  }
-  .headerCon{
-    .el-button{
-      width: 82px;
-    }
-  }
-}
-
-.headerCon {
-  display: flex;
-  flex-wrap: wrap;
-  margin-bottom: 5px;
-
-  .el-button + .el-button {
-    margin-left: 5px;
-  }
-
-  .el-button {
-    margin-top: 5px;
-  }
-}
-
-.headerCon > .el-button:nth-child(4) {
-  margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(7) {
-  margin-left: 0;
-}
-
-
-.smallBtn {
-  width: 82px;
-  text-align: center;
-  padding-left: 4.5px;
-}
-
-</style>
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/function/functionView/index.vue b/Source/plt-web/plt-web-ui/src/views/authority/function/functionView/index.vue
new file mode 100644
index 0000000..4bef6c2
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/views/authority/function/functionView/index.vue
@@ -0,0 +1,244 @@
+<template>
+  <el-container>
+    <el-aside>
+      <basic-container>
+        <div ref="TreeBox" style="height: calc(100vh - 154px);!important;">
+          <!-- 宸︿晶鏍�         -->
+          <div style="height:  calc(100vh - 195px);">
+            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
+              <span slot-scope="{ node, data }" class="el-tree-node__label">
+               <span style="font-size: 15px">
+                  <i class="el-icon-user-solid"></i>
+                    {{ (node || {}).label }}
+                </span>
+              </span>
+            </avue-tree>
+          </div>
+        </div>
+      </basic-container>
+    </el-aside>
+
+    <el-main>
+      <basic-container v-loading="treeLoading">
+        <h3 style="margin: 0 0 10px 0">鍔熻兘鏉冮檺閰嶇疆</h3>
+        <div>
+          <el-button icon="el-icon-place" plain size="small" type="primary" @click="saveHandler">鎺堟潈</el-button>
+          <el-button icon="el-icon-close" plain size="small" style="margin-right: 40px;" type="primary"
+                     @click="clearValue">閲嶇疆
+          </el-button>
+        </div>
+        <div style="height:  calc(100vh - 232px);margin-top: 10px;">
+          <avue-tree ref="uiTree" :data="uiTreeData" :node-key="id" :option="uiTreeOption">
+            <span slot-scope="{ node, data }" class="el-tree-node__label">
+               <span style="font-size: 15px">
+                  <i :class="data.icon"></i>
+                    {{ (node || {}).label }}
+                </span>
+            </span>
+          </avue-tree>
+        </div>
+      </basic-container>
+    </el-main>
+
+  </el-container>
+</template>
+
+<script>
+import {gridRoles} from "@/api/system/role/api";
+import {getSysModelAuthTreeMenuByPID, getSysModelAuth, saveRoleRight} from "@/api/authority/functionView/api"
+
+export default {
+  name: "index",
+  data() {
+    return {
+      treeLoading: false,
+      type: '',//涓氬姟绫诲瀷
+      context: '',//UI涓婁笅鏂嘽ode
+      treeOption: {
+        menu: false,
+        addBtn: false,
+        props: {
+          label: 'name',
+          value: 'oid',
+          children: 'children'
+        }
+      },
+      nodeRow: {},
+      treeData: [],
+      defaultExpandKeys: [],
+      uiTreeOption: {
+        defaultExpandedKeys: this.defaultExpandKeys,
+        multiple: true,
+        menu: false,
+        addBtn: false,
+        filter: false,
+        props: {
+          label: 'name',
+          value: 'id',
+          children: 'children'
+        }
+      },
+      uiTreeData: [],
+      typeData: [],
+      contextData: []
+    }
+  },
+  created() {
+    this.getTreeList();
+    this.getUITree();
+  },
+  methods: {
+    getTreeList() {
+      const loading = this.$loading({});
+      gridRoles().then(res => {
+        this.treeData = res.data.data;
+        loading.close();
+      }).catch(error => {
+        loading.close();
+      })
+    },
+    // 瑙掕壊鐐瑰嚮
+    nodeClick(row) {
+      this.nodeRow = row;
+      this.treeLoading = true;
+      getSysModelAuth({roleId: row.oid}).then(res => {
+        const data = res.data.data;
+        this.$refs.uiTree.setCheckedKeys(data);
+        this.treeLoading = false;
+      })
+    },
+    getUITree() {
+      this.treeLoading = true;
+      const params = {
+        // 'conditionMap[roleId]': this.nodeRow.oid,
+        'conditionMap[type]': this.type,
+        'conditionMap[context]': this.context,
+        'conditionMap[showCheckbox]': true
+      }
+      this.defaultExpandKeys = ['root'];
+      getSysModelAuthTreeMenuByPID(params).then(res => {
+        console.log(res);
+        let data= [{
+          attributes: {},
+          checked: false,
+          expanded: true,
+          data: "root",
+          childType: 1,
+          icon: 'el-icon-s-home',
+          id: 'root',
+          name:'鍔熻兘妯″潡',
+          children: res.data.data
+        }];
+        this.processChildren(data[0]); // 澶勭悊姣忎釜鑺傜偣
+        this.uiTreeOption.defaultExpandedKeys = this.defaultExpandKeys;
+        this.uiTreeData = data;
+        this.treeLoading = false;
+      }).catch(error => {
+        this.treeLoading = false;
+      })
+    },
+    //澶勭悊鏍�
+    processChildren(item) {
+      if (item.children && item.children.length > 0) {
+        item.children = item.children.map(child => {
+          if (!child.childType) {
+            // 榛樿鏍戣妭鐐瑰睍寮�,鏈�瀛愮骇涓嶅睍寮�
+            this.defaultExpandKeys.push(child.id)
+          }
+          child.icon = 'el-icon-s-promotion';
+          if (child.childType == 1) {
+            child.icon = 'el-icon-document';
+          } else if (child.childType == 2) {
+            child.icon = 'el-icon-s-tools';
+          }
+          this.processChildren(child); // 閫掑綊澶勭悊姣忎釜瀛愯妭鐐�
+          return child; // 鍙繑鍥炲瓙鑺傜偣鐨� attributes
+        });
+      }
+    },
+    saveHandler() {
+      const selectTreeList = this.$refs.uiTree.getCheckedNodes();
+      const selectParentList = this.$refs.uiTree.getHalfCheckedNodes();
+
+      if (selectTreeList.length == 0) {
+        this.$message.error("璇烽�夋嫨鍔熻兘妯″潡");
+        return;
+      }
+      const formData = selectTreeList.map(item => {
+        return {
+          parentId: item.childType === 2 ? item.funcId : item.parentId,
+          id: item.id,
+          type: (!item.childType || item.childType === 1) ? 1 : 2,
+          number: item.childType === 2 ? item.sort : ''
+        }
+      })
+      const parentData = selectParentList.map(item => {
+        return {
+          parentId: item.parentId,
+          id: item.id,
+          type: (!item.childType || item.childType === 1) ? 1 : 2,
+          number: ''
+        }
+      })
+      const data = [...parentData,...formData];
+      data.shift();
+      const params = {
+        roleId: this.nodeRow.oid,
+        roleData: data
+      }
+      saveRoleRight(params).then(res => {
+        if (res.data.code === 200) {
+          this.$message.success("鎺堟潈鎴愬姛");
+        }
+      });
+    },
+    clearValue() {
+      this.$refs.uiTree.setCheckedNodes([]);
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep {
+  .el-scrollbar__wrap {
+    overflow: auto !important;
+  }
+
+  .headerCon {
+    .el-button {
+      width: 82px;
+    }
+  }
+}
+
+.headerCon {
+  display: flex;
+  flex-wrap: wrap;
+  margin-bottom: 5px;
+
+  .el-button + .el-button {
+    margin-left: 5px;
+  }
+
+  .el-button {
+    margin-top: 5px;
+  }
+}
+
+.headerCon > .el-button:nth-child(4) {
+  margin-left: 0;
+}
+
+.headerCon > .el-button:nth-child(7) {
+  margin-left: 0;
+}
+
+
+.smallBtn {
+  width: 82px;
+  text-align: center;
+  padding-left: 4.5px;
+}
+
+</style>
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
index 3fb919b..4214755 100644
--- a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
@@ -19,7 +19,7 @@
     </el-aside>
 
     <el-main>
-      <basic-container>
+      <basic-container v-loading="treeLoading">
         <h3 style="margin: 0 0 10px 0">UI鏉冮檺閰嶇疆</h3>
         <div>
           <el-button icon="el-icon-place" plain size="small" type="primary" @click="saveHandler">鎺堟潈</el-button>
@@ -49,7 +49,7 @@
           </el-select>
         </div>
         <div style="height:  calc(100vh - 232px);margin-top: 10px;">
-          <avue-tree ref="uiTree" :data="uiTreeData" :option="uiTreeOption">
+          <avue-tree ref="uiTree" :data="uiTreeData" :node-key="oid" :option="uiTreeOption">
             <span slot-scope="{ node, data }" class="el-tree-node__label">
                <span style="font-size: 15px">
                   <i :class="data.icon"></i>
@@ -65,7 +65,7 @@
 </template>
 
 <script>
-import {gridRoles} from "@/api/system/role/api";
+import {gridRoles, getRightListByRoleId} from "@/api/system/role/api";
 import {getUIAuthor, authorizedUI} from "@/api/authority/ui/uiAuthor";
 import {getBizTree, gridUIContextData} from "@/api/UI/uiDefine";
 
@@ -73,6 +73,7 @@
   name: "index",
   data() {
     return {
+      treeLoading: false,
       type: '',//涓氬姟绫诲瀷
       context: '',//UI涓婁笅鏂嘽ode
       treeOption: {
@@ -106,7 +107,8 @@
   },
   created() {
     this.getTreeList();
-    this.getTypeList()
+    // this.getUITree();
+    this.getTypeList();
   },
   methods: {
     getTreeList() {
@@ -118,46 +120,72 @@
         loading.close();
       })
     },
+
     // 瑙掕壊鐐瑰嚮
     nodeClick(row) {
       this.nodeRow = row;
       this.getUITree();
+      // const params = {
+      //   roleId: row.oid
+      // }
+      // getRightListByRoleId(params).then(res => {
+      //   const data = res.data.data.map(item => item.funcId);
+      //   console.log(data);
+      //   this.$refs.uiTree.setCheckedKeys(data);
+      // })
     },
+
     getUITree() {
-      if (this.nodeRow && this.nodeRow.oid) {
-        const loading = this.$loading({});
-        const params = {
-          'conditionMap[roleId]': this.nodeRow.oid,
-          'conditionMap[type]': this.type,
-          'conditionMap[context]': this.context,
-          'conditionMap[showCheckbox]': true
-        }
-        this.defaultExpandKeys = ['root'];
-        getUIAuthor(params).then(res => {
-          this.processChildren(res.data.data[0]); // 澶勭悊姣忎釜鑺傜偣
-          this.uiTreeOption.defaultExpandedKeys = this.defaultExpandKeys;
-          this.uiTreeData = [{
-            attributes: {},
-            checked: false,
-            expanded: true,
-            data: "root",
-            level: 0,
-            icon: 'el-icon-s-home',
-            oid: res.data.data[0].oid,
-            label: res.data.data[0].text,
-            children: res.data.data[0].children
-          }];
-          loading.close();
-        }).catch(error => {
-          loading.close();
-        })
+      this.treeLoading = true;
+      const params = {
+        'conditionMap[roleId]': this.nodeRow.oid,
+        'conditionMap[type]': this.type,
+        'conditionMap[context]': this.context,
+        'conditionMap[showCheckbox]': true
       }
+      this.defaultExpandKeys = ['root'];
+      getUIAuthor(params).then(res => {
+        this.processChildren(res.data.data[0]); // 澶勭悊姣忎釜鑺傜偣
+        this.uiTreeOption.defaultExpandedKeys = this.defaultExpandKeys;
+        this.uiTreeData = [{
+          attributes: {},
+          checked: false,
+          expanded: true,
+          data: "root",
+          level: 0,
+          icon: 'el-icon-s-home',
+          oid: res.data.data[0].oid,
+          label: res.data.data[0].text,
+          children: res.data.data[0].children
+        }];
+        const checkedData = this.findCheckedOids(res.data.data[0]);
+        this.$refs.uiTree.setCheckedKeys(checkedData);
+
+        this.treeLoading = false;
+      }).catch(error => {
+        this.treeLoading = false;
+      })
     },
+
+    // 鏌ユ壘宸查�夋嫨鑺傜偣
+    findCheckedOids(obj, result = []) {
+      if (obj.checked === true) {
+        result.push(obj.oid);
+      }
+      // 濡傛灉鏈� children锛屽垯缁х画閬嶅巻
+      if (obj.children && obj.children.length > 0) {
+        obj.children.forEach(child => {
+          this.findCheckedOids(child, result);
+        });
+      }
+      return result;
+    },
+
     //澶勭悊鏍�
     processChildren(item) {
       if (item.children && item.children.length > 0) {
         item.children = item.children.map(child => {
-          if (child.level < 2) {
+          if (child.level < 3) {
             // 榛樿鏍戣妭鐐瑰睍寮�涓ゅ眰鏁堟灉
             this.defaultExpandKeys.push(child.oid)
           }
@@ -182,11 +210,13 @@
         });
       }
     },
+
     getTypeList() {
       getBizTree().then(res => {
         this.typeData = res.data.obj.children;
       })
     },
+
     typeChange(data) {
       this.contextData = [];
       this.type = data;
@@ -202,21 +232,45 @@
       }
       this.getUITree();
     },
+
     contextChange(data) {
       this.context = data;
       this.getUITree();
     },
+
     saveHandler() {
       const selectTreeList = this.$refs.uiTree.getCheckedNodes();
+      const selectParentList = this.$refs.uiTree.getHalfCheckedNodes();
       if (selectTreeList.length == 0) {
         this.$message.error("璇烽�夋嫨鍔熻兘妯″潡");
         return;
       }
+      const selectTreeData = selectTreeList.map(item => {
+        return {
+          checked: true,
+          expanded: true,
+          data:item.data,
+          level: item.level,
+          oid: item.oid,
+          text: item.text
+        }
+      })
+      const parentData = selectParentList.map(item => {
+        return {
+          checked: false,
+          expanded: true,
+          data:item.data,
+          level: item.level,
+          oid: item.oid,
+          text: item.text
+        }
+      })
+      const data = [...parentData,...selectTreeData];
       const formData = {
         roleId: this.nodeRow.oid,
         type: this.type,
         context: this.context,
-        selectTreeList: selectTreeList
+        selectTreeList: data
       }
       authorizedUI(formData).then(res => {
         if (res.data.success) {
@@ -225,6 +279,7 @@
         }
       });
     },
+
     clearValue() {
       this.$refs.uiTree.setCheckedNodes([]);
     }
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
index 03c0301..761693e 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
@@ -1656,38 +1656,6 @@
   .el-form-item .el-select {
     width: 100%;
   }
-
-  .headerCon {
-    .el-button {
-      width: 82px;
-    }
-  }
-}
-
-.headerCon {
-  display: flex;
-  flex-wrap: wrap;
-  margin-bottom: 5px;
-
-  .el-button + .el-button {
-    margin-left: 5px;
-  }
-
-  .el-button {
-    margin-top: 5px;
-  }
-}
-
-.headerCon > .el-button:nth-child(4) {
-  margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(7) {
-  margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(10) {
-  margin-left: 0;
 }
 
 .descBox {
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue
index 142b70c..a9a4804 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue
@@ -1,6 +1,6 @@
 <template>
   <el-container>
-    <el-aside width="15.7%">
+    <el-aside>
       <basic-container>
         <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
           <div class="headerCon">
@@ -14,8 +14,7 @@
             </el-button>
             <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">瀵煎叆
             </el-button>
-            <el-button class="smallBtn" plain size="small" type="primary"
-                       @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿
+            <el-button class="smallBtn" plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿
             </el-button>
           </div>
           <!-- 宸︿晶鏍� -->
@@ -421,35 +420,7 @@
   .el-scrollbar__wrap {
     overflow: auto !important;
   }
-  .headerCon{
-    .el-button {
-      width: 65px;
-      padding-left: 9.5px;
-    }
-  }
 }
-
-.headerCon {
-  display: flex;
-  flex-wrap: wrap;
-  margin-bottom: 5px;
-
-  .el-button + .el-button {
-    margin-left: 5px;
-  }
-
-  .el-button {
-    margin-top: 5px;
-  }
-}
-
-.headerCon > .el-button:nth-child(4) {
-  margin-left: 0;
-}
-
-//.headerCon > .el-button:nth-child(6) {
-//  margin-left: 0;
-//}
 
 .smallBtn {
   width: 77px !important;
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue
index 66319a6..122f429 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue
@@ -1154,34 +1154,6 @@
   .el-form-item .el-select {
     width: 100%;
   }
-
-  .headerCon {
-    .el-button {
-      width: 82px;
-    }
-  }
-}
-
-.headerCon {
-  display: flex;
-  flex-wrap: wrap;
-  margin-bottom: 5px;
-
-  .el-button + .el-button {
-    margin-left: 5px;
-  }
-
-  .el-button {
-    margin-top: 5px;
-  }
-}
-
-.headerCon > .el-button:nth-child(4) {
-  margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(7) {
-  margin-left: 0;
 }
 
 .dialogForm {
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 de71674..017da53 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
@@ -58,7 +58,64 @@
                     <el-form-item :class="['hiddenLabel', { 'active-border': activeItem.text === item.text }]"
                                   :label="item.text + '锛�'"
                                   style="padding-left: 5px" @click.native="formItemClick(item,index)">
-                      <el-input v-model="item.value" :placeholder="item.text" size="mini"></el-input>
+                      <el-input
+                        v-if="item.itemType === 'text' ||
+                         item.itemType === 'custom' ||
+                         item.itemType === 'customform'||
+                         item.itemType === 'hidden' ||
+                         item.itemType === 'specialCharacter'"
+                        v-model="item.value" :placeholder="item.text"
+                        size="mini"></el-input>
+
+                      <div v-if="item.itemType === 'textbtn'" style="display: flex;align-items: center">
+                        <el-input v-model="item.value" :placeholder="item.text" size="mini"></el-input>
+                        <el-button icon="el-icon-edit" plain size="mini" style="height: 28px;"
+                                   type="primary"></el-button>
+                      </div>
+
+                      <el-input
+                        v-if="item.itemType === 'textarea' || item.itemType === 'richtext' || item.itemType === 'webeditor'"
+                        v-model="item.value"
+                        :placeholder="item.text"
+                        :rows="2"
+                        type="textarea">
+                      </el-input>
+
+                      <el-input-number v-if="item.itemType === 'number'" v-model="item.value" :max="99999"
+                                       :min="1"></el-input-number>
+                      <el-input v-if="item.itemType === 'password'" v-model="input" placeholder="璇疯緭鍏ュ瘑鐮�"
+                                show-password></el-input>
+                      <el-radio v-if="item.itemType === 'radio'" v-model="item.value"></el-radio>
+                      <el-checkbox v-if="item.itemType === 'checkbox'" v-model="item.value"></el-checkbox>
+                      <el-select v-if="item.itemType === 'select' || item.itemType === 'multiselect'"
+                                 v-model="item.value" :disabled="true" placeholder="璇烽�夋嫨" size="mini">
+                      </el-select>
+                      <el-date-picker
+                        v-if="item.itemType === 'date' || item.itemType === 'datetime'"
+                        v-model="item.value"
+                        :placeholder="item.itemType === 'date' ? '璇烽�夋嫨鏃ユ湡' : '璇烽�夋嫨鏃ユ湡鏃堕棿'"
+                        type="date">
+                      </el-date-picker>
+
+                      <el-time-select
+                        v-if="item.itemType === 'time'"
+                        v-model="item.value"
+                        :picker-options="{
+                         start: '08:30',
+                         step: '00:15',
+                         end: '18:30'
+                         }"
+                        placeholder="閫夋嫨鏃堕棿">
+                      </el-time-select>
+                      <el-button v-if="item.itemType === 'file'"
+                                 v-model="item.value" plain size="mini" type="primary">
+                        涓婁紶鏂囦欢
+                      </el-button>
+                      <el-button v-if="item.itemType === 'multiFile'"
+                                 v-model="item.value" plain size="mini" type="primary">
+                        澶氭枃浠朵笂浼�
+                      </el-button>
+
                     </el-form-item>
                   </el-col>
                 </el-row>
@@ -79,14 +136,14 @@
 
         <el-aside width="25%">
           <basic-container>
-            <div style="height: 700px; overflow-y: auto;padding-right: 10px">
+            <div style="height: 660px; overflow-y: auto;padding-right: 10px">
               <h3>璁剧疆</h3>
               <el-form ref="form" :model="form" :rules="rules" label-position="left" label-width="85px">
                 <el-row style="border-bottom: 1px solid #878585;padding-bottom: 10px">
                   <el-col :span="24">
                     <el-form-item label="浣跨敤瀛楁">
                       <div style="display: flex">
-                        <el-input v-model="form.text" placeholder="璇疯緭鍏ヤ娇鐢ㄥ瓧娈�" size="mini"></el-input>
+                        <el-input v-model="form.text" :readonly="true" placeholder="璇疯緭鍏ヤ娇鐢ㄥ瓧娈�" size="mini"></el-input>
                         <el-checkbox v-model="form.itemIsEditable" style="margin-left: 5px; margin-right: 5px">鍙
                         </el-checkbox>
                         <el-checkbox v-model="form.itemIsRequired" style="margin-left: 5px;margin-right: 0px">蹇呭~
@@ -103,7 +160,7 @@
 
                   <el-col :span="12">
                     <el-form-item class="rightLabel" label="鏄剧ず绫诲瀷">
-                      <el-select v-model="form.itemType" placeholder="璇烽�夋嫨绫诲瀷" size="mini">
+                      <el-select v-model="form.itemType" placeholder="璇烽�夋嫨绫诲瀷" size="mini" @change="itemTypeChange">
                         <el-option v-for="(item,index) in showSelectList" :key="index" :label="item.label"
                                    :value="item.value"></el-option>
                       </el-select>
@@ -264,7 +321,7 @@
                     <el-form-item>
                       <div style="height: 150px; width: 100%; border: 1px solid #bdbbbb;overflow-y: auto">
                         <el-table
-                          :data="form.itemValueList"
+                          :data="form.itemKeyValueList"
                           :highlight-current-row="true"
                           :show-header="false"
                           border
@@ -334,6 +391,10 @@
 
               </el-form>
             </div>
+            <div style="display: flex;justify-content: right">
+              <el-button plain size="mini" style="margin-top: 10px" type="success" @click="asideFormHandler">搴旂敤
+              </el-button>
+            </div>
           </basic-container>
         </el-aside>
       </div>
@@ -353,8 +414,12 @@
         <el-row style="border-bottom: 1px solid #878585;padding-bottom: 10px">
           <el-col :span="24">
             <el-form-item label="浣跨敤瀛楁">
-              <div style="display: flex">
-                <el-input v-model="customForm.text" placeholder="璇疯緭鍏ヤ娇鐢ㄥ瓧娈�" size="mini"></el-input>
+              <div style="display: flex;align-items: center">
+                <div style="display: flex;align-items: center">
+                  <el-input v-model="customForm.text" placeholder="璇疯緭鍏ヤ娇鐢ㄥ瓧娈�" size="mini"></el-input>
+                  <el-button plain size="mini" style="margin-left: 3px" type="success" @click="customTextHandler">閫夋嫨
+                  </el-button>
+                </div>
                 <el-checkbox v-model="customForm.itemIsEditable" style="margin-left: 5px; margin-right: 5px">鍙
                 </el-checkbox>
                 <el-checkbox v-model="customForm.itemIsRequired" style="margin-left: 5px;margin-right: 0px">蹇呭~
@@ -513,7 +578,8 @@
 
         </el-row>
 
-        <el-row style="margin-top: 10px;border-bottom: 1px solid #878585;padding-bottom: 10px">
+        <el-row v-if="customForm.itemType ? customOptionTypeStatus : true"
+                style="margin-top: 10px;border-bottom: 1px solid #878585;padding-bottom: 10px">
           <h4>閫夐」鍒楄〃</h4>
           <el-col :span="12">
             <el-form-item label="鍚嶇О">
@@ -531,7 +597,7 @@
             <el-form-item>
               <div style="height: 150px; width: 100%; border: 1px solid #bdbbbb;overflow-y: auto">
                 <el-table
-                  :data="customForm.itemValueList"
+                  :data="customForm.itemKeyValueList"
                   :highlight-current-row="true"
                   :show-header="false"
                   border
@@ -582,7 +648,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row style="margin-top: 10px">
+        <el-row v-if="customForm.itemType ? customItemStyleTypeStatus : true" style="margin-top: 10px">
           <el-col :span="24" style="height: 90px">
             <el-form-item label="闄勫姞灞炴��">
               <el-input
@@ -599,14 +665,14 @@
       </el-form>
       <span slot="footer" class="dialog-footer">
          <el-button @click="customVisible = false">鍙� 娑�</el-button>
-         <el-button type="primary">纭� 瀹�</el-button>
+         <el-button type="primary" @click="customSaveHandler">纭� 瀹�</el-button>
     </span>
     </el-dialog>
   </el-dialog>
 </template>
 
 <script>
-import {getTreeAttributes} from "@/api/UI/formDefine/api";
+import {getTreeAttributes, savePortalVI} from "@/api/UI/formDefine/api";
 import func from "@/util/func";
 
 export default {
@@ -620,6 +686,11 @@
     treeRadio: {
       type: String,
       default: ""
+    },
+    editRow: {
+      type: Object,
+      default: () => {
+      }
     }
   },
   data() {
@@ -633,7 +704,8 @@
         optionValue: ''
       },
       customForm: {
-        itemValueList: [],
+        itemKeyValueList: [],
+        itemCols: '1'
       },
       customLoading: false,
       customVisible: false,
@@ -732,7 +804,7 @@
       form: {},
       topForm: {
         columnNumber: 8,
-        showColumn: '',
+        showColumn: '3',
         viName: '',
         position: ''
       },
@@ -769,7 +841,15 @@
     itemStyleTypeStatus() {
       const types = ['hidden', 'webeditor', 'radio', 'checkbox'];
       return !types.includes(this.form.itemType); // 涓嶅睍绀�
-    }
+    },
+    customOptionTypeStatus() {
+      const types = ['radio', 'checkbox', 'select'];
+      return types.includes(this.customForm.itemType); // 灞曠ず
+    },
+    customItemStyleTypeStatus() {
+      const types = ['hidden', 'webeditor', 'radio', 'checkbox'];
+      return !types.includes(this.customForm.itemType); // 涓嶅睍绀�
+    },
   },
   created() {
     // this.getTreeList();
@@ -778,7 +858,9 @@
     // 鍏抽棴瀵硅瘽妗�
     closeDialog() {
       this.formList = [];
-
+      this.form = {};
+      this.activeItem = {};
+      this.topForm.viName = "";
     },
 
     getTreeList() {
@@ -810,6 +892,7 @@
       const params = {
         text: data.text,
         oid: data.oid,
+        itemType: 'text'
       }
       const isDuplicate = this.formList.some(item => item.text === data.text);
 
@@ -825,6 +908,8 @@
       this.activeItem = item;
       this.activeItemIndex = index;
       this.form = {...item};
+      // console.log(item,index);
+      this.topForm.position = index += 1;
     },
 
     // 璁剧疆鏄剧ず琛屾暟
@@ -931,18 +1016,18 @@
 
     // 閫夐」娣诲姞
     optionAddClickHandler(val) {
-      let optionObj, itemValueList;
+      let optionObj, itemKeyValueList;
 
       if (val === 'dialog') {
         optionObj = this.customOptionObj;
-        itemValueList = this.customForm.itemValueList;
+        itemKeyValueList = this.customForm.itemKeyValueList;
       } else {
         if (func.isEmptyObject(this.activeItem)) {
           this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹繘琛屾坊鍔犻�夐」');
           return;
         }
         optionObj = this.optionObj;
-        itemValueList = this.form.itemValueList;
+        itemKeyValueList = this.form.itemKeyValueList;
       }
 
       if (!optionObj.optionName) {
@@ -960,7 +1045,7 @@
         value: optionObj.optionValue
       };
 
-      itemValueList.push(params);
+      itemKeyValueList.push(params);
     },
 
     // 閫夐」鍒犻櫎
@@ -983,8 +1068,103 @@
         this.$message.error('椤甸潰涓嶈兘涓虹┖');
         return;
       }
-      this.visible = false;
-      this.$message.success('淇濆瓨鎴愬姛');
+      this.formList = this.formList.map(item => {
+        return {
+          ...item,
+          itemField: item.text // 灏唅temField璧嬪�间负text锛屽洜涓哄繕璁扮埗缁勪欢涓轰粈涔堝湪缂栬緫鍥炲~鏃舵妸itemField璧嬪�间负text浜�
+        };
+      });
+      const params = {
+        id: this.editRow.id,// 淇敼鏃跺�欏繀浼�
+        typeFlag: this.treeRadio, // 涓氬姟绫诲瀷0 or 閾炬帴绫诲瀷1
+        typeFlagText: this.treeRadio === '0' ? '涓氬姟绫诲瀷鐨勮〃鍗�' : '閾炬帴绫诲瀷鐨勮〃鍗�',// 涓氬姟绫诲瀷鏄剧ず鍊�
+        typeName: this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name, // 涓氬姟绫诲瀷鍚� or 閾炬帴绫诲瀷鍚�
+        viName: this.topForm.viName, // 瑙嗗浘鍚嶇О
+        viType: 1, // 瑙嗗浘绫诲瀷
+        viTypeText: "琛ㄥ崟", // 瑙嗗浘涓枃鍚嶇О
+        prm: {
+          formQtName: '', // 鏌ヨ妯℃澘鍚嶇О
+          showCols: this.topForm.showColumn,
+          prmItemList: this.formList
+        },
+      }
+      console.log(params);
+      savePortalVI(params).then(res => {
+        console.log(res);
+        if(res.data.code === 200){
+          this.$message.success(res.data.obj);
+          this.visible = false;
+          this.closeDialog();
+        }
+      })
+      // this.visible = false;
+      // this.$message.success('淇濆瓨鎴愬姛');
+    },
+
+    // 淇敼鏄剧ず绫诲瀷
+    itemTypeChange(val) {
+      if (val) {
+        this.clearFormBottom();
+      }
+      if (!this.form.text) {
+        this.$message.error('璇峰湪鍙充晶閫夋嫨鏁版嵁鍚庤繘琛屾搷浣滐紒');
+        return;
+      }
+      const targetObject = this.formList.find(item => item.text === this.form.text);
+
+      if (targetObject) {
+        targetObject.itemType = val;
+      }
+      this.form.itemType = val;
+    },
+
+    // 鑷畾涔夌粍浠朵繚瀛�
+    customSaveHandler() {
+      if (!this.customForm.text) {
+        this.$message.error('璇烽�夋嫨浣跨敤瀛楁');
+        return;
+      }
+      if (!this.customForm.itemType) {
+        this.$message.error('璇烽�夋嫨鏄剧ず绫诲瀷');
+        return;
+      }
+      this.formList.push(this.customForm);
+      this.customVisible = false;
+    },
+
+    // 鑷畾涔夊璇濇鍏抽棴
+    closeCustomDialog() {
+      this.customForm = {
+        itemKeyValueList: [],
+        itemType: 'text',
+        itemCols: '1'
+      };
+    },
+
+    // 娓呯┖涓嶅悓绫诲瀷琛ㄥ崟涓嬫柟缁戝畾鍊�
+    clearFormBottom() {
+      this.optionObj = {};
+      this.form.itemKeyValueList = [];
+      this.form.itemListTable = this.form.itemListTxt = this.form.itemListVal = this.form.itemStyle = "";
+    },
+
+    // 鑷畾涔夎〃鍗曚娇鐢ㄥ瓧娈甸�夋嫨
+    customTextHandler() {
+
+    },
+
+    // 鍙充晶琛ㄥ崟搴旂敤鎸夐挳
+    asideFormHandler() {
+
+    },
+
+    customClearFormBottom() {
+      this.optionObj = {};
+      this.form.itemKeyValueList = [];
+      this.form.itemListTable = "";
+      this.form.itemListTxt = "";
+      this.form.itemListVal = "";
+      this.form.itemStyle = "";
     }
   }
 }
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
index 6350b43..cbfdc6b 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
@@ -454,7 +454,7 @@
     formSelectClickHandler() {
       this.selectFormVisible = true;
       const params = {
-        'conditionMap[typeName]': this.TreeNodeRow.attributes.id,
+        'conditionMap[typeName]': this.TreeNodeRow.id,
         'conditionMap[viType]': 'Form',
         'conditionMap[viTypeFlag]': this.treeRadio === '0' ? 'BtmType' : this.treeRadio === '1' ? 'LinkType' : '',
       }
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
index ac5f61b..37201c5 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
@@ -28,7 +28,8 @@
         <div v-if="!tableStatus" style="display: flex;justify-content: left;margin-top: 15px">
           <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">澧炲姞</el-button>
           <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎</el-button>
-          <el-button icon="el-icon-document-add" plain size="small" type="primary">鍏嬮殕</el-button>
+          <el-button icon="el-icon-document-add" plain size="small" type="primary" @click="copyClickHandler">鍏嬮殕
+          </el-button>
           <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button>
           <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
           </el-button>
@@ -71,7 +72,7 @@
         </avue-crud>
       </basic-container>
     </el-main>
-    <form-dialog ref="formDialog" :TreeNodeRow="this.nodeRow" :treeRadio="treeRadio"></form-dialog>
+    <form-dialog ref="formDialog" :TreeNodeRow="this.nodeRow" :treeRadio="treeRadio" :editRow="editRow"></form-dialog>
     <table-dialog ref="tableDialog" :TreeNodeRow="this.nodeRow" :treeRadio="treeRadio"
                   @updataTable="getRightPortalVIDatas"></table-dialog>
     <!-- 瀵煎叆 -->
@@ -117,7 +118,7 @@
         addBtn: false,
         editBtn: false,
         delBtn: false,
-        calcHeight:-60,
+        calcHeight: -60,
         column: [
           {
             label: '涓氬姟鍚嶇О',
@@ -147,7 +148,8 @@
         }
       },
       dbClickList: [],
-      defaultData: [], // 鐢ㄤ簬鏌ヨ鎭㈠鍘熷鍊�
+      defaultData: [], // 鐢ㄤ簬鏌ヨ鎭㈠鍘熷鍊�,
+      editRow:{},
     }
   },
   created() {
@@ -166,6 +168,7 @@
         return;
       }
       if (this.tableRadio === "0") {
+        this.editRow.id = "";
         this.$refs.formDialog.visible = true;
         this.$refs.formDialog.getTreeList();
       } else {
@@ -202,6 +205,7 @@
             return item.attributes; // 杩斿洖澶勭悊鍚庣殑 attributes
           });
           this.treeData = data;
+          this.treeLoading = false;
         });
       } else {
         gridLink().then(res => {
@@ -321,7 +325,7 @@
           id: row.id,
           viType: row.viType
         };
-
+        this.editRow = row;
         getPortalVIById(params).then(res => {
           if (res.data.code === 200) {
             const data = res.data.obj.prm.prmItemList;
@@ -337,6 +341,7 @@
             this.$refs.formDialog.getTreeList();
             this.$refs.formDialog.topForm.viName = res.data.obj.viName;
             this.$refs.formDialog.topForm.columnNumber = this.getValueBasedOnInput(res.data.obj.prm.showCols);
+            this.$refs.formDialog.topForm.showColumn = res.data.obj.prm.showCols;
 
             this.$refs.formDialog.visible = true;
           }
@@ -398,8 +403,8 @@
       })
 
     },
-    rowDeleteHandler(row){
-      deleteByIds({ids:row.id}).then(res => {
+    rowDeleteHandler(row) {
+      deleteByIds({ids: row.id}).then(res => {
         if (res.data.code === 200) {
           this.$message.success('鍒犻櫎鎴愬姛');
           this.getRightPortalVIDatas();
@@ -447,6 +452,19 @@
     // 瀵煎叆
     upLoadClickHandler() {
       this.$refs.upload.visible = true;
+    },
+
+    // 瀵煎嚭
+    copyClickHandler() {
+      if (this.selectList.length <= 0) {
+        this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
+        return;
+      }
+
+      if (this.selectList.length > 1) {
+        this.$message.error('鍙兘閫夋嫨涓�鏉℃暟鎹�');
+        return;
+      }
     }
   }
 }

--
Gitblit v1.9.3