ludc
2024-10-18 0e818b766656ea54f516c1bb3b5987c985de80a9
Merge remote-tracking branch 'origin/master'
已修改15个文件
已删除1个文件
已添加2个文件
1685 ■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/App.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js 745 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/authority/functionView/api.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/system/role/api.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/components/flow-cycle/components/ContextMenu.vue 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/components/flow-cycle/components/Toolbar.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/authority/function/fuctionView/index.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/authority/function/functionView/index.vue 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
                }
            }
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;
  }
}
/***隐藏树懒加载时节点上的loading,防止节点抖动*****/
.el-tree .el-tree-node__loading-icon{
  display: none !important;
}
</style>
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": "表格"
}
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
  });
}
Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js
@@ -17,3 +17,5 @@
    data: params
  })
}
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
  });
}
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>
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"
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 {
Source/plt-web/plt-web-ui/src/views/authority/function/fuctionView/index.vue
ÎļþÒÑɾ³ý
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上下文code
      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>
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上下文code
      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([]);
    }
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 {
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;
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 {
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 // å°†itemField赋值为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 = "";
    }
  }
}
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' : '',
      }
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;
      }
    }
  }
}