ludc
2024-08-23 360cf955e142c001f96b20100f739e9b6a710e18
Merge remote-tracking branch 'origin/master'
已修改26个文件
已删除4个文件
已重命名2个文件
已添加66个文件
3091 ■■■■■ 文件已修改
Bin/jre-linux/lib/security/trusted.libraries 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/client/plt-client.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/client/plt-clientbase.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/common/plt-common.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/common/plt-slice.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/BOFService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/CacheService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/FrameService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/LogService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/MsgService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/OMDService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/OQService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/ServiceBase.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/UIService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/VciServiceMain.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/VolumeService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/WFPlugins.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/WFService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/thrid/jbpm-4.3.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/properties/VolumnLog4j2.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/properties/hibernate-master.cfg.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/properties/hibernate-slave.cfg.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/properties/menuConfig.json 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/accessors-smart-1.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/android-json-0.0.20131108.vaadin1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/asm-5.0.4.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/assertj-core-3.11.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/byte-buddy-1.9.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/byte-buddy-agent-1.9.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/commons-compress-1.18.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/commons-fileupload-1.4.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/filters-2.0.235.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/flatlaf-2.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/hamcrest-core-1.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/hamcrest-library-1.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/ice-3.7.10.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/icebox-3.7.10.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jackson-databind-2.9.6.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jgoodies-common-1.8.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jgoodies-looks-2.5.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jgraph-3.1.0.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jgraphx-3.1.0.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/json-path-2.4.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/json-smart-2.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jsonassert-1.5.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/junit-4.8.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/mockito-core-2.23.4.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/nativeskin-1.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/objenesis-2.6.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/pinyin4j-2.5.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-clientbase-1.0.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-common-1.0.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-poi-2024.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-slice-1.0.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-starter-2024.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-web-api-2024.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-web-base-2024.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/poi-scratchpad-3.9.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/protege35-1.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/skinlf-6.7.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-boot-configuration-processor-2.1.3.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-boot-starter-test-2.1.3.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-boot-test-2.1.3.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-boot-test-autoconfigure-2.1.3.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-test-5.1.5.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/swing-worker-1.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/swingx-1.6.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/swixml-2.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/transmittable-thread-local-2.12.6.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/uitheme-1.3.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/xmlunit-core-2.6.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/vci-platform-web.jar 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionClsDTO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionDTO.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionQueryDTO.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsActionController.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportActionLogBean.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/IExportLogBean.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PinyinCommon.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/queryTemplate/businessTypeQuery.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/queryTemplate/linkTypeQuery.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/queryTemplate/queryDefine.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/systemModel/mangeModel/api.js 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/businessTypeQuery/index.vue 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/index.vue 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/operateType/index.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/systemMonitor/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModule/businessModel/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModule/mangeModel/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModule/operateType/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/jre-linux/lib/security/trusted.libraries
Bin/lib/client/plt-client.jar
Binary files differ
Bin/lib/client/plt-clientbase.jar
Binary files differ
Bin/lib/common/plt-common.jar
Binary files differ
Bin/lib/common/plt-slice.jar
Binary files differ
Bin/lib/service/BOFService.jar
Binary files differ
Bin/lib/service/CacheService.jar
Binary files differ
Bin/lib/service/FrameService.jar
Binary files differ
Bin/lib/service/LogService.jar
Binary files differ
Bin/lib/service/MsgService.jar
Binary files differ
Bin/lib/service/OMDService.jar
Binary files differ
Bin/lib/service/OQService.jar
Binary files differ
Bin/lib/service/ServiceBase.jar
Binary files differ
Bin/lib/service/UIService.jar
Binary files differ
Bin/lib/service/VciServiceMain.jar
Binary files differ
Bin/lib/service/VolumeService.jar
Binary files differ
Bin/lib/service/WFPlugins.jar
Binary files differ
Bin/lib/service/WFService.jar
Binary files differ
Bin/lib/thrid/jbpm-4.3.2.jar
Binary files differ
Bin/properties/VolumnLog4j2.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%-5p] %d{YYYY-MM-dd HH:mm:ss} [%t] %C{1}:%L - %msg%n" />
        </Console>
        <RollingFile name="RollingFile" filename="./logs/volume_log.log" filepattern="${logPath}/volume_%d{YYYYMMddHHmmss}.log">
            <PatternLayout pattern="[%-5p] %d{YYYY-MM-dd HH:mm:ss} [%t] %C{1}:%L - %msg%n" />
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="VolumeLog" level="DEBUG" additivity="true">
            <AppenderRef ref="RollingFile" />
        </Logger>
        <Root level="DEBUG">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
Bin/properties/hibernate-master.cfg.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="show_sql">true</property>
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <!--<property name="connection.url">jdbc:oracle:thin:@172.16.0.243:1521:orcl</property>
        <property name="connection.username">vcimes</property>
        <property name="connection.password">vcimes</property>-->
        <!-- <property name="connection.url">jdbc:oracle:thin:@dev.yunkeruida.top:1521:orcl</property> -->
        <property name="connection.url">jdbc:oracle:thin:@192.168.0.66:1521:orcl</property>
        <!-- <property name="connection.username">NMPM112</property> -->
        <property name="connection.username">PLT2024</property>
        <property name="connection.password">vcitest</property>
        <!--<property name="connection.username">mpm112</property>
        <property name="connection.password">vcitest</property>-->
        <!--property name="hibernate.connection.release_mode">auto</property -->
        <!-- è®¾ç½®C3P0 -->
        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name="hibernate.c3p0.acquireRetryAttempts">30</property>
        <property name="hibernate.c3p0.acquireIncrement">2</property>
        <property name="hibernate.c3p0.checkoutTimeout">30000</property>
        <property name="hibernate.c3p0.idleConnectionTestPeriod">120</property>
        <property name="hibernate.c3p0.maxIdleTime">180</property>
        <property name="hibernate.c3p0.initialPoolSize">3</property>
        <property name="hibernate.c3p0.maxPoolSize">100</property>
        <property name="hibernate.c3p0.minPoolSize">1</property>
        <property name="hibernate.c3p0.maxStatements">100</property>
        <property name="maxStatementsPerConnection">100</property>
        <property name="hibernate.current_session_context_class">com.vci.server.mw.SessionContext4JBPM</property>
        <property name="hibernate.connection.isolation">2</property>
        <!-- æš‚时禁用Hibernate的事件监听
        <listener type="post-insert"
            class="com.vci.base.server.persistence.history.HistoryListener" />
        <listener type="post-update"
            class="com.vci.base.server.persistence.history.HistoryListener" />
        <listener type="post-delete"
            class="com.vci.base.server.persistence.history.HistoryListener" />
             -->
    </session-factory>
</hibernate-configuration>
Bin/properties/hibernate-slave.cfg.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="show_sql">true</property>
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <!--<property name="connection.url">jdbc:oracle:thin:@172.16.0.243:1521:orcl</property>
        <property name="connection.username">vcimes</property>
        <property name="connection.password">vcimes</property>-->
        <property name="connection.url">jdbc:oracle:thin:@192.168.0.66:1521:orcl</property>
        <!-- <property name="connection.url">jdbc:oracle:thin:@dev.yunkeruida.top:1521:orcl</property> -->
        <!-- <property name="connection.username">NMPM112</property> -->
        <property name="connection.username">PLT2024</property>
        <property name="connection.password">vcitest</property>
        <!--<property name="connection.username">mpm112</property>
        <property name="connection.password">vcitest</property>-->
        <!--property name="hibernate.connection.release_mode">auto</property -->
        <!-- è®¾ç½®C3P0 -->
        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name="hibernate.c3p0.acquireRetryAttempts">30</property>
        <property name="hibernate.c3p0.acquireIncrement">2</property>
        <property name="hibernate.c3p0.checkoutTimeout">30000</property>
        <property name="hibernate.c3p0.idleConnectionTestPeriod">120</property>
        <property name="hibernate.c3p0.maxIdleTime">180</property>
        <property name="hibernate.c3p0.initialPoolSize">3</property>
        <property name="hibernate.c3p0.maxPoolSize">100</property>
        <property name="hibernate.c3p0.minPoolSize">1</property>
        <property name="hibernate.c3p0.maxStatements">100</property>
        <property name="maxStatementsPerConnection">100</property>
        <property name="hibernate.current_session_context_class">com.vci.server.mw.SessionContext4JBPM</property>
        <property name="hibernate.connection.isolation">2</property>
        <!-- æš‚时禁用Hibernate的事件监听
        <listener type="post-insert"
            class="com.vci.base.server.persistence.history.HistoryListener" />
        <listener type="post-update"
            class="com.vci.base.server.persistence.history.HistoryListener" />
        <listener type="post-delete"
            class="com.vci.base.server.persistence.history.HistoryListener" />
             -->
    </session-factory>
</hibernate-configuration>
Bin/properties/menuConfig.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
{
  "hasChildren": true,
  "children": [
    {
      "hasChildren": true,
      "children": [],
      "id": "systemManagmentNode",
      "name": "管理功能模块",
      "parentId": "VCIBaseTreeNode",
      "code": "systemManagmentNode",
      "alias": "system",
      "meta": {
        "keepAlive": false
      },
      "sort": 2,
      "soruce": "",
      "path": "views/systemModel/mangeModel/index"
    },
    {
      "hasChildren": true,
      "children": [],
      "id": "modelManagmentNode",
      "name": "业务功能模块",
      "parentId": "VCIBaseTreeNode",
      "code": "modelManagmentNode",
      "alias": "model",
      "meta": {
        "keepAlive": false
      },
      "sort": 3,
      "soruce": "",
      "path": "views/systemModel/businessModel/index"
    },
    {
      "hasChildren": true,
      "children": [],
      "id": "operateNode",
      "name": "操作类型管理",
      "parentId": "VCIBaseTreeNode",
      "code": "operateNode",
      "alias": "operate",
      "meta": {
        "keepAlive": false
      },
      "sort": 4,
      "soruce": "",
      "path": "views/systemModel/operateType/index"
    },
    {
      "hasChildren": false,
      "children": [],
      "id": "sysOptionNode",
      "name": "系统配置",
      "parentId": "VCIBaseTreeNode",
      "code": "sysOptionNode",
      "alias": "sysOption",
      "meta": {
        "keepAlive": false
      },
      "sort": 5,
      "soruce": "",
      "path": "views/systemModel/systemConfig/index"
    },
    {
      "hasChildren": false,
      "children": [],
      "id": "sysMonitorNode",
      "name": "系统运行监控",
      "parentId": "VCIBaseTreeNode",
      "code": "sysMonitorNode",
      "alias": "sysMonitor",
      "meta": {
        "keepAlive": false
      },
      "sort": 5,
      "soruce": "",
      "path": "views/systemModel/systemMonitor/index"
    }
  ],
  "id": "VCIBaseTreeNode",
  "name": "系统模块配置",
  "parentId": "systemManagmentNode",
  "code": "rootNode",
  "alias": "root",
  "meta": {
    "keepAlive": false
  },
  "sort": 0,
  "soruce": "",
  "path": ""
}
Bin/web/lib/accessors-smart-1.2.jar
Binary files differ
Bin/web/lib/android-json-0.0.20131108.vaadin1.jar
Binary files differ
Bin/web/lib/asm-5.0.4.jar
Binary files differ
Bin/web/lib/assertj-core-3.11.1.jar
Binary files differ
Bin/web/lib/byte-buddy-1.9.3.jar
Binary files differ
Bin/web/lib/byte-buddy-agent-1.9.3.jar
Binary files differ
Bin/web/lib/commons-compress-1.18.jar
Binary files differ
Bin/web/lib/commons-fileupload-1.4.jar
Binary files differ
Bin/web/lib/filters-2.0.235.jar
Binary files differ
Bin/web/lib/flatlaf-2.3.jar
Binary files differ
Bin/web/lib/hamcrest-core-1.3.jar
Binary files differ
Bin/web/lib/hamcrest-library-1.3.jar
Binary files differ
Bin/web/lib/ice-3.7.10.jar
Binary files differ
Bin/web/lib/icebox-3.7.10.jar
Binary files differ
Bin/web/lib/jackson-databind-2.9.6.jar
Binary files differ
Bin/web/lib/jgoodies-common-1.8.1.jar
Binary files differ
Bin/web/lib/jgoodies-looks-2.5.3.jar
Binary files differ
Bin/web/lib/jgraph-3.1.0.0.jar
Binary files differ
Bin/web/lib/jgraphx-3.1.0.0.jar
Binary files differ
Bin/web/lib/json-path-2.4.0.jar
Binary files differ
Bin/web/lib/json-smart-2.3.jar
Binary files differ
Bin/web/lib/jsonassert-1.5.0.jar
Binary files differ
Bin/web/lib/junit-4.8.jar
Binary files differ
Bin/web/lib/mockito-core-2.23.4.jar
Binary files differ
Bin/web/lib/nativeskin-1.0.jar
Binary files differ
Bin/web/lib/objenesis-2.6.jar
Binary files differ
Bin/web/lib/pinyin4j-2.5.0.jar
Binary files differ
Bin/web/lib/plt-clientbase-1.0.RELEASE.jar
Binary files differ
Bin/web/lib/plt-common-1.0.RELEASE.jar
Binary files differ
Bin/web/lib/plt-poi-2024.1-SNAPSHOT.jar
Binary files differ
Bin/web/lib/plt-slice-1.0.RELEASE.jar
Binary files differ
Bin/web/lib/plt-starter-2024.1-SNAPSHOT.jar
Binary files differ
Bin/web/lib/plt-web-api-2024.1-SNAPSHOT.jar
Binary files differ
Bin/web/lib/plt-web-base-2024.1-SNAPSHOT.jar
Binary files differ
Bin/web/lib/poi-scratchpad-3.9.jar
Binary files differ
Bin/web/lib/protege35-1.0.jar
Binary files differ
Bin/web/lib/skinlf-6.7.jar
Binary files differ
Bin/web/lib/spring-boot-configuration-processor-2.1.3.RELEASE.jar
Binary files differ
Bin/web/lib/spring-boot-starter-test-2.1.3.RELEASE.jar
Binary files differ
Bin/web/lib/spring-boot-test-2.1.3.RELEASE.jar
Binary files differ
Bin/web/lib/spring-boot-test-autoconfigure-2.1.3.RELEASE.jar
Binary files differ
Bin/web/lib/spring-test-5.1.5.RELEASE.jar
Binary files differ
Bin/web/lib/swing-worker-1.1.jar
Binary files differ
Bin/web/lib/swingx-1.6.1.jar
Binary files differ
Bin/web/lib/swixml-2.0.jar
Binary files differ
Bin/web/lib/transmittable-thread-local-2.12.6.jar
Binary files differ
Bin/web/lib/uitheme-1.3.1.jar
Binary files differ
Bin/web/lib/xmlunit-core-2.6.2.jar
Binary files differ
Bin/web/vci-platform-web.jar
Binary files differ
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionClsDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.vci.dto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * Action分类传输对象
 * @author yuxc
 * @date 2024/8/16 15:50
 */
@Data
public class PLActionClsDTO implements java.io.Serializable{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2009350578651813260L;
    /**
     *主键
     */
    public String id;
    /**
     *分类名称
     */
    public String name;
    /**
     *父主键
     */
    public String pid;
    /**
     *备注
     */
    public String description;
    /**
     *创建人
     */
    public String creator;
    /**
     *创建时间
     */
    public long createTime;
    /**
     *分类序号
     */
    public short serialno;
    /**
     * å­èŠ‚ç‚¹
     */
    public List<PLActionClsDTO> childs = new ArrayList<>();
    /**
     * å½“前分类下的所有action
     */
    public List<PLActionDTO> actionChilds = new ArrayList<>();
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.vci.dto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * Action传输对象
 * @author yuxc
 * @date 2024/8/20 16:47
 */
@Data
public class PLActionDTO implements java.io.Serializable{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2009350578651813260L;
    /**
     * ä¸»é”®
     */
    private String plOId;
    /**
     * ç¼–号
     */
    private String plCode;
    /**
     * åç§°
     */
    private String plName;
    /**
     * B/S地址,界面类路径
     */
    private String plBSUrl;
    /**
     * c/s类路径 ç•Œé¢é“¾æŽ¥åœ°å€
     */
    private String plCSClass;
    /**
     * æè¿°
     */
    private String plDesc;
    /**
     * ç±»åž‹
     */
    private String plTypeType;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private long plCreateTime;
    /**
     * åˆ›å»ºäºº
     */
    private String plCreateUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    private long plModifyTime;
    /**
     * ä¿®æ”¹äºº
     */
    private String plModifyUser;
    private String plLicensOrs;
    /**
     * çˆ¶èŠ‚ç‚¹id
     */
    private String plActionCls;
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionQueryDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.vci.dto;
import lombok.Data;
/**
 * Action查询传输对象
 * @author yuxc
 * @date 2024/8/20 14:45
 */
@Data
public class PLActionQueryDTO implements java.io.Serializable{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2009350578651813260L;
    /**
     *编号
     */
    private String plcode;
    /**
     *名称
     */
    private String plname;
    /**
     *B/S类路径
     */
    private String plbsurl;
    /**
     *C/S类路径
     */
    private String plcsclass;
    /**
     *业务类型
     */
    private String pltypetype;
    /**
     *描述
     */
    private String pldesc;
    /**
     *分类ID
     */
    private String plactioncls;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsActionController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
package com.vci.web.controller;
import com.vci.corba.common.PLException;
import com.vci.dto.PLActionClsDTO;
import com.vci.dto.PLActionDTO;
import com.vci.dto.PLActionQueryDTO;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.web.service.OsActionServiceI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
/**
 * Action管理的控制器
 * @author yuxc
 * @date 2024-8-16
 */
@RequestMapping("/actionController")
@RestController
public class OsActionController {
    /**
     * Action服务
     */
    @Autowired
    private OsActionServiceI osActionServiceI;
    /**
     * ä¿å­˜Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿å­˜ç»“æžœ
     */
    @PostMapping("/saveActionCls")
    public BaseResult saveActionCls(@RequestBody PLActionClsDTO pLActionCls){
        try {
            return osActionServiceI.saveActionCls(pLActionCls);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * ä¿®æ”¹Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿®æ”¹ç»“æžœ
     */
    @PostMapping("/updateActionCls")
    public BaseResult updateActionCls(@RequestBody PLActionClsDTO pLActionCls){
        try {
            return osActionServiceI.updateActionCls(pLActionCls);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * èŽ·å–Action分类树
     * isExp æ˜¯å¦ç”¨æˆ·å¯¼å‡º true是,false否
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping("/getActionTree")
    public BaseResult getActionTree(boolean isExp){
        try {
            return osActionServiceI.getActionTree(isExp);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * èŽ·å–Action表格数据
     * dto æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @PostMapping("/getActionTableData")
    public BaseResult getActionTableData(@RequestBody PLActionQueryDTO dto){
        try {
            return osActionServiceI.getActionTableData(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * ä¿å­˜Action数据
     * dto action传输对象
     * @return ä¿å­˜ç»“æžœ
     */
    @PostMapping("/saveAction")
    public BaseResult saveAction(@RequestBody PLActionDTO dto){
        try {
            return osActionServiceI.saveAction(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * ä¿®æ”¹Action数据
     * dto action传输对象
     * @return ä¿®æ”¹ç»“æžœ
     */
    @PostMapping("/updateAction")
    public BaseResult updateAction(@RequestBody PLActionDTO dto){
        try {
            return osActionServiceI.updateAction(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * åˆ é™¤Action数据
     * dto action传输对象
     * @return åˆ é™¤ç»“æžœ
     */
    @DeleteMapping("/deleteAction")
    public BaseResult deleteAction(@RequestBody PLActionDTO dto){
        try {
            return osActionServiceI.deleteAction(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * å¯¼å‡ºAction
     * @return
     */
    @PostMapping("/exportBeans")
    public void exportBeans(@RequestBody List<String> actionOid, HttpServletResponse response) throws PLException, IOException {
        osActionServiceI.exportBeans(actionOid, response);
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportActionLogBean.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
package com.vci.web.other;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExportActionLogBean implements IExportLogBean {
    /**
     *
     */
    private static final long serialVersionUID = 10086L;
    private String no = "1";
    private static int index = 1;
    private String exportState = "正常";
    private String coding = "";
    private String name ="";
    private String CSRegister = "";
    private String BSRegister = "";
    private String type = "";
    private String description = "";
    private String category = "";
    private Date date = null;
    private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
    public ExportActionLogBean() {
           this( "-1", "ExportActionLogBean å¯¹è±¡æž„建 ä½†æœªè®¾ç½®å€¼", "null",
                     "null", "null",  "null",  "null",
                     "null",  "null" );
           index = 1;
    }
    public ExportActionLogBean(String exportState, String coding,
            String name, String cSRegister, String bSRegister, String type,
            String description, String category) {
          this( ""+index++, exportState, coding,
                  name, cSRegister, bSRegister,type,
                  description,category);
    }
    public ExportActionLogBean(String no, String exportState, String coding,
            String name, String cSRegister, String bSRegister, String type,
            String description, String category) {
        super();
        this.no = no;
        if( exportState!=null || !no.equals("-1")){//默认状态为正常
            this.exportState = exportState;
        }
        this.coding = coding;
        this.name = name;
        CSRegister = cSRegister;
        BSRegister = bSRegister;
        this.type = type;
        this.description = description;
        this.category = category;
    }
    @Override
    public Object[] getLogRowObjcets() {
        Object obj []=  {no,exportState,coding,name,CSRegister,BSRegister,type,description,category};
        return obj;
    }
    public Object[] getInportLogRowObjcets() {
        Object obj []=  {no,exportState,coding,name,CSRegister,BSRegister,type,description};
        return obj;
    }
    public String getNo() {
        return no;
    }
    public String getExportState() {
        return exportState;
    }
    public String getName() {
        return name;
    }
    public String getCSRegister() {
        return CSRegister;
    }
    public String getBSRegister() {
        return BSRegister;
    }
    public String getType() {
        return type;
    }
    public String getDescription() {
        return description;
    }
    public String getCategory() {
        return category;
    }
    public void setNo(String no) {
        this.no = no;
    }
    public void setExportState(String exportState) {
        this.exportState = exportState;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setCSRegister(String cSRegister) {
        CSRegister = cSRegister;
    }
    public void setBSRegister(String bSRegister) {
        BSRegister = bSRegister;
    }
    public void setType(String type) {
        this.type = type;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public void setCategory(String category) {
        this.category = category;
    }
    @Override
    public String getLogRowContent() {
        date = new Date();
        String info =format.format(date)+"---------";
        return info+" [序号=" + no + ", å¯¼å‡ºçŠ¶æ€=" + exportState
                + ", ç¼–号=" + coding + ", åç§°=" + name + ", CS注册="
                + CSRegister + ", BS注册=" + BSRegister + ", ç±»åž‹=" + type
                + ", æè¿°=" + description + ", æ‰€å±žåˆ†ç±»=" + category
                + "]";
    }
    public String getCoding() {
        return coding;
    }
    public void setCoding(String coding) {
        this.coding = coding;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,153 @@
package com.vci.web.other;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import com.vci.corba.portal.data.PLAction;
import com.vci.corba.portal.data.PLActionCls;
import com.vci.corba.portal.data.PLActionParam;
public class ExportBeans implements Serializable{
    private static final long serialVersionUID = 10086L;
    private HashMap<String/*ActionId*/,PLAction>   PLActionBeans = new  HashMap<String,PLAction>();
    private HashMap<String/*分类名称*/,String/*id*/> PLActionClsExt = new  HashMap<String,String>();
    private HashMap<String/*id*/,PLActionCls>   PLActionClsBeans = new  HashMap<String,PLActionCls>();
    private HashMap<String/*Action编码*/, ArrayList<PLActionParam> >   PLActionParamBeans = new  HashMap<String, ArrayList<PLActionParam> >();
    private HashMap<String/*ActionCls编码*/, ArrayList<PLAction> >   PLActionListsMap = null;
    private ExportActionLogBean logBean = null;//日志文件
    public ExportBeans() {
        logBean = new ExportActionLogBean();
    }
    public HashMap<String, PLActionCls> getPLActionClsBeans() {
        return PLActionClsBeans;
    }
    public HashMap<String, PLAction> getPLActions() {
        return PLActionBeans;
    }
    public void addPLActionClsBean(PLActionCls pLActionCls){
        PLActionClsBeans.put(pLActionCls.id, pLActionCls);
        PLActionClsExt.put(pLActionCls.name,pLActionCls.id);
    }
    public PLActionCls getPLActionClsBeanById(String  id){
        return PLActionClsBeans.get(id);
    }
    public PLActionCls getPLActionClsBeanByName(String  name){
        if(PLActionClsExt.get(name) == null){
            return null;
        }
        return PLActionClsBeans.get(PLActionClsExt.get(name));
    }
    /**
     * æ·»åŠ PLActionBean并同时添加PLActionBean对应参数进行记录
     * @param pLAction
     */
//    public void addPLActionBean(PLAction pLAction){
//        this.addPLActionBean(pLAction,null);
//    }
    /**
     * æ·»åŠ PLActionBean后 logBean存入值
     *
     */
    public void setLogBean(ExportActionLogBean logBean) {
        this.logBean =  logBean;
    }
    /**
     * æ·»åŠ PLActionBean后 logBean存入值
     *
     */
    public ExportActionLogBean getLogBean() {
        return logBean;
    }
    public PLAction getPLActionById(String pLActionId){
        return PLActionBeans.get(pLActionId);
    }
    public ArrayList<PLAction> getPLActionByPlActionClsId(String plActionClsId){
        if( PLActionListsMap == null){
            PLActionListsMap = new HashMap<String/*ActionCls编码*/,ArrayList<PLAction>>();
            for (Entry<String, PLAction> PLActionEntry : PLActionBeans.entrySet()) {
                String PLActionListsMapKey = PLActionEntry.getValue().plActionCls ;
                if(PLActionListsMapKey.equals("")){
                    PLActionListsMapKey = "when key is null ,change the key to this";
                }
                ArrayList<PLAction> actionList = PLActionListsMap.get(PLActionListsMapKey);
                if( actionList == null){
                     actionList =     new ArrayList<PLAction>();
                    actionList.add(PLActionEntry.getValue());
                    PLActionListsMap.put(PLActionListsMapKey,actionList);
                }else{
                    actionList.add(PLActionEntry.getValue());
                }
            }
        };
        if(plActionClsId.equals("")){
            plActionClsId = "when key is null ,change the key to this";
        }
        return     PLActionListsMap.get(plActionClsId);
    }
    public void addPLActionParamBean(PLActionParam pLActionParam){
        if(pLActionParam.action!=null && pLActionParam.action!=""){
            if(PLActionParamBeans.get(pLActionParam.action) == null){
                ArrayList<PLActionParam> arraylist = new ArrayList<PLActionParam>();
                PLActionParamBeans.put(pLActionParam.action, arraylist);
            }
            PLActionParamBeans.get(pLActionParam.action).add(pLActionParam);
        }
    }
     public  PLActionParam[] getPLActionParamArrayByActionId(String paramString){
         ArrayList<PLActionParam> pLActionParams = PLActionParamBeans.get(paramString);
         if(pLActionParams != null && pLActionParams.size() > 0 ){
            PLActionParam[] actionParams = new PLActionParam[pLActionParams.size()];
            for (int i = 0; i < pLActionParams.size(); i++) {
                actionParams[i] = pLActionParams.get(i);
            }
             return  actionParams;
         }
        return null;
     }
//        /**
//         * æ·»åŠ PLActionBean并同时添加PLActionBean对应参数进行记录
//         * èƒ½è¿‡æ–¹ä¾¿èŽ·å¾—category时用此方法. å¯ä»¥é™ä½Žç³»ç»Ÿæ¶ˆè€—
//         * @param pLAction
//         */
//    public void addPLActionBean(PLAction plAction, String category) {
//        PLActionBeans.put(plAction.plOId, plAction);
//        PLActionCls[] plActionCls = null;
//
//        try {
//              if(category == null ){
//                  plActionCls = UITools.getService().getPLActionClsArray();
//                    for (PLActionCls plActionCls2 : plActionCls) {//获得分类名称
//                        if(plActionCls2.id.equals(plAction.plActionCls)){
//                            category = plActionCls2.name ;
//                        }
//                    }
//                }
//            PLActionParam[] params = UITools.getService().getPLActionParamArrayByActionId(plAction.plOId);
//            if(params != null && params.length > 0){//如果参数存在
//                for (PLActionParam plActionParam : params) {//添加action参数
//                    this.addPLActionParamBean(plActionParam);
//                }
//            }
//             logBean = new ExportActionLogBean(ExportActionLogBean.RIGHT_STATE,
//                        plAction.plCode,plAction.plName,plAction.plCSClass,plAction.plBSUrl,
//                        plAction.plTypeType,plAction.plDesc,category);
//
//        } catch (PLException e) {
//             logBean = new ExportActionLogBean(e.getMessage(),
//                        plAction.plCode,plAction.plName,plAction.plCSClass,plAction.plBSUrl,
//                        plAction.plTypeType,plAction.plDesc,category);            e.printStackTrace();
//        }
//    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/IExportLogBean.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.vci.web.other;
import java.io.Serializable;
public interface IExportLogBean extends Serializable{
    static final long serialVersionUID = 1L;
     static String RIGHT_STATE = "正常";
    /**
     * è¿”回字符串数组将内容写入到JTable文件中
     * @return
     */
    public abstract Object[] getLogRowObjcets();
    /**
     * è¿”回字符串将内容写入到log文件中
     * @return
     */
    public abstract String getLogRowContent();
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.vci.web.service;
import com.vci.corba.common.PLException;
import com.vci.dto.PLActionClsDTO;
import com.vci.dto.PLActionDTO;
import com.vci.dto.PLActionQueryDTO;
import com.vci.starter.web.pagemodel.BaseResult;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
/**
 * Action管理的服务
 * @author yuxc
 * @date 2024-8-16
 */
public interface OsActionServiceI {
    /**
     * ä¿å­˜Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿å­˜ç»“æžœ
     */
    BaseResult saveActionCls(PLActionClsDTO pLActionCls) throws PLException;
    /**
     * ä¿®æ”¹Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿®æ”¹ç»“æžœ
     */
    BaseResult updateActionCls(PLActionClsDTO pLActionCls) throws PLException;
    /**
     * èŽ·å–Action分类树
     * isExp æ˜¯å¦ç”¨æˆ·å¯¼å‡º true是,false否
     * @return æŸ¥è¯¢ç»“æžœ
     */
    BaseResult getActionTree(boolean isExp) throws PLException;
    /**
     * èŽ·å–Action表格数据
     * dto æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    BaseResult getActionTableData(PLActionQueryDTO dto) throws PLException;
    /**
     * ä¿å­˜Action数据
     * dto action传输对象
     * @return ä¿å­˜ç»“æžœ
     */
    BaseResult saveAction(PLActionDTO dto) throws PLException;
    /**
     * ä¿®æ”¹Action数据
     * dto action传输对象
     * @return ä¿®æ”¹ç»“æžœ
     */
    BaseResult updateAction(PLActionDTO dto) throws PLException;
    /**
     * åˆ é™¤Action数据
     * dto action传输对象
     * @return åˆ é™¤ç»“æžœ
     */
    BaseResult deleteAction(PLActionDTO dto) throws PLException;
    /**
     * å¯¼å‡ºAction
     * @return
     */
    void exportBeans(List<String> actionOid, HttpServletResponse response) throws PLException, IOException;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,405 @@
package com.vci.web.service.impl;
import cn.hutool.core.io.FileUtil;
import com.vci.corba.common.PLException;
import com.vci.corba.omd.ltm.LinkType;
import com.vci.corba.omd.qtm.QTInfo;
import com.vci.corba.portal.data.Constraint;
import com.vci.corba.portal.data.PLAction;
import com.vci.corba.portal.data.PLActionCls;
import com.vci.corba.portal.data.PLActionParam;
import com.vci.dto.PLActionClsDTO;
import com.vci.dto.PLActionDTO;
import com.vci.dto.PLActionQueryDTO;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.util.ControllerUtil;
import com.vci.starter.web.util.LocalFileUtil;
import com.vci.web.other.ExportActionLogBean;
import com.vci.web.other.ExportBeans;
import com.vci.web.other.LinkQTExportData;
import com.vci.web.service.*;
import com.vci.web.util.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Action管理的服务实现类
 * @author yuxc
 * @date 2024-8-16
 */
@Service
public class OsActionServiceImpl implements OsActionServiceI {
    @Autowired
    private PlatformClientUtil platformClientUtil;
    /**
     * ä¿å­˜Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿å­˜ç»“æžœ
     */
    @Override
    public BaseResult saveActionCls(PLActionClsDTO pLActionCls) throws PLException {
        if (pLActionCls.getName() == null || pLActionCls.getName().trim().equals("")) {
            throw new PLException("500", new String[]{"分类名称不能为空!"});
        }
        if (pLActionCls.getName().equals("未分类")) {
            throw new PLException("500", new String[]{"未分类节点已经存在!"});
        }
        PLActionCls pac = new PLActionCls();
        pac.id = WebUtil.getSnowflakePk();
        pac.name = pLActionCls.getName();
        pac.pid = pLActionCls.getPid();
        pac.description = pLActionCls.getDescription() == null ? "" : pLActionCls.getDescription();
        pac.creator = WebUtil.getCurrentUserId();
        pac.createTime = System.currentTimeMillis();
        pac.serialno = pLActionCls.getSerialno();
        // ä¿å­˜åˆ†ç±»ä¿¡æ¯
        String message = platformClientUtil.getUIService().creaetePLActionCls(pac);
        if (message.startsWith("0")) {
            if (message.equals("01")) {
                message = "分类" + pac.name + "已经存在!";
            } else if (message.equals("02")) {
                message = "同一分类下序号不能重复!";
            } else {
                message = "保存分类时发生异常!" + message.substring(1);
            }
            throw new PLException("500", new String[]{message});
        }
        return BaseResult.success("分类创建成功!");
    }
    /**
     * ä¿®æ”¹Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿å­˜ç»“æžœ
     */
    @Override
    public BaseResult updateActionCls(PLActionClsDTO pLActionCls) throws PLException {
        if (pLActionCls.getName() == null || pLActionCls.getName().trim().equals("")) {
            throw new PLException("500", new String[]{"分类名称不能为空!"});
        }
        if (pLActionCls.getName().equals("未分类")) {
            throw new PLException("500", new String[]{"未分类节点已经存在!"});
        }
        if (pLActionCls.getId() == null || pLActionCls.getId().trim().equals("")) {
            throw new PLException("500", new String[]{"主键不能为空!"});
        }
        PLActionCls pac = new PLActionCls();
        pac.name = pLActionCls.getName();
        pac.pid = pLActionCls.getPid();
        pac.description = pLActionCls.getDescription() == null ? "" : pLActionCls.getDescription();
        pac.creator = WebUtil.getCurrentUserId();
        pac.createTime = System.currentTimeMillis();
        pac.serialno = pLActionCls.getSerialno();
        // ä¿®æ”¹åˆ†ç±»ä¿¡æ¯
        String message = platformClientUtil.getUIService().editPLActionCls(pac);
        if (message.startsWith("0")) {
            if (message.equals("01")) {
                message = "分类" + pac.name + "已经存在!";
            } else if (message.equals("02")) {
                message = "同一分类下序号不能重复!";
            } else {
                message = "修改分类时发生异常!" + message.substring(1);
            }
            throw new PLException("500", new String[]{message});
        }
        return BaseResult.success("分类修改成功!");
    }
    /**
     * èŽ·å–Action分类树
     * isExp æ˜¯å¦ç”¨æˆ·å¯¼å‡º true是,false否
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public BaseResult getActionTree(boolean isExp) throws PLException {
        PLActionCls[] clses = platformClientUtil.getUIService().getPLActionClsArray();
        PLActionClsDTO treDto = new PLActionClsDTO();
        treDto.setName("Action分类");
        Map<String, List<PLActionCls>> allDataMap = Arrays.stream(clses).collect(Collectors.groupingBy(pl -> pl.pid));
        for (PLActionCls cls : clses) {
            if (StringUtils.isBlank(cls.pid)) {
                PLActionClsDTO parentDto = new PLActionClsDTO();
                parentDto.setId(cls.id);
                parentDto.setName(cls.name);
                parentDto.setPid(cls.pid);
                parentDto.setDescription(cls.description);
                parentDto.setCreator(cls.creator);
                parentDto.setCreateTime(cls.createTime);
                parentDto.setSerialno(cls.serialno);
                //这里处理导出树的逻辑
                if(isExp){
                    Constraint[] consArray = new Constraint[1];
                    consArray[0] =  new Constraint("plactioncls", cls.id);
                    PLAction[] plActionsByConsArray = platformClientUtil.getUIService().getPLActionsByConsArray(consArray);
                    if(parentDto.getChilds().isEmpty() && plActionsByConsArray.length == 0){
                        continue;
                    }
                    for (PLAction plAction : plActionsByConsArray) {
                        PLActionDTO plActionDTO = new PLActionDTO();
                        plActionDTO.setPlName(plAction.plCode + "/" + plAction.plName);
                        plActionDTO.setPlCode(plAction.plCode);
                        plActionDTO.setPlOId(plAction.plOId);
                        parentDto.getActionChilds().add(plActionDTO);
                    }
                }
                addClsTreeNode(parentDto, allDataMap, isExp);
                treDto.getChilds().add(parentDto);
            }
        }
        PLActionClsDTO plac = new PLActionClsDTO();
        plac.setName("未分类");
        if(isExp){
            Constraint[] consArray = new Constraint[1];
            consArray[0] =  new Constraint("plactioncls", "");
            PLAction[] plActionsByConsArray = platformClientUtil.getUIService().getPLActionsByConsArray(consArray);
            for (PLAction plAction : plActionsByConsArray) {
                PLActionDTO plActionDTO = new PLActionDTO();
                plActionDTO.setPlName(plAction.plCode + "/" + plAction.plName);
                plActionDTO.setPlCode(plAction.plCode);
                plActionDTO.setPlOId(plAction.plOId);
                plac.getActionChilds().add(plActionDTO);
            }
        }
        treDto.getChilds().add(plac);
        return BaseResult.success(treDto);
    }
    /**
     * èŽ·å–Action表格数据
     * dto æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public BaseResult getActionTableData(PLActionQueryDTO dto) throws PLException {
        Constraint[] consArray ;
        if(StringUtils.isNotBlank(dto.getPlactioncls())){
            consArray = new Constraint[7];
            consArray[6] = new Constraint("plactioncls", dto.getPlactioncls());
        }else {
            consArray = new Constraint[6];
        }
        consArray[0] = new Constraint("plcode", dto.getPlcode());
        consArray[1] = new Constraint("plname", dto.getPlname());
        consArray[2] = new Constraint("plbsurl", dto.getPlbsurl());
        consArray[3] = new Constraint("plcsclass", dto.getPlcsclass());
        consArray[4] = new Constraint("pltypetype", dto.getPltypetype());
        consArray[5] = new Constraint("pldesc", dto.getPldesc());
        PLAction[] plActionsByConsArray = platformClientUtil.getUIService().getPLActionsByConsArray(consArray);
        Arrays.sort(plActionsByConsArray, new Comparator<PLAction>() {
            @Override
            public int compare(PLAction o1, PLAction o2) {
                String py1 = PinyinCommon.getPingYin(o1.plCode);
                String py2 = PinyinCommon.getPingYin(o2.plCode);
                return py1.compareTo(py2);
            }
        });
        return BaseResult.dataList(Arrays.asList(plActionsByConsArray));
    }
    /**
     * ä¿å­˜Action数据
     * dto action传输对象
     * @return ä¿å­˜ç»“æžœ
     */
    @Override
    public BaseResult saveAction(PLActionDTO dto) throws PLException {
        if(StringUtils.isBlank(dto.getPlCode())){
            throw new PLException("500", new String[]{"请输入编号"});
        }
        PLAction[] actionsInDB= platformClientUtil.getUIService().getAllPLAction();
        for(int i =0;i<actionsInDB.length;i++){
            if (dto.getPlCode().equals(actionsInDB[i].plCode)) {
                throw new PLException("500", new String[]{"新建Action编号重复,请重新输入编号"});
            }
        }
        PLAction plAction = new PLAction();
        plAction.plOId = WebUtil.getSnowflakePk();
        plAction.plCode = StringUtils.defaultString(dto.getPlCode());
        plAction.plName = StringUtils.defaultString(dto.getPlName());
        plAction.plCSClass = StringUtils.defaultString(dto.getPlCSClass());
        plAction.plBSUrl = StringUtils.defaultString(dto.getPlBSUrl());
        plAction.plDesc = StringUtils.defaultString(dto.getPlDesc());
        plAction.plCreateUser = WebUtil.getCurrentUserId();
        plAction.plModifyUser = WebUtil.getCurrentUserId();
        plAction.plActionCls = StringUtils.defaultString(dto.getPlActionCls());
        plAction.plTypeType = StringUtils.defaultString(dto.getPlTypeType());
        boolean b = platformClientUtil.getUIService().savePLAction(plAction);
        if(!b){
            throw new PLException("500", new String[]{"保存失败!!"});
        }
        return BaseResult.success("操作成功!");
    }
    /**
     * ä¿®æ”¹Action数据
     * dto action传输对象
     * @return ä¿®æ”¹ç»“æžœ
     */
    @Override
    public BaseResult updateAction(PLActionDTO dto) throws PLException {
        if(StringUtils.isBlank(dto.getPlCode())){
            throw new PLException("500", new String[]{"编号不能为空"});
        }
        PLAction[] actionsInDB= platformClientUtil.getUIService().getAllPLAction();
        for(int i =0;i<actionsInDB.length;i++){
            if (dto.getPlCode().equals(actionsInDB[i].plCode) && !dto.getPlOId().equals(actionsInDB[i].plOId)) {
                throw new PLException("500", new String[]{"修改Action编号重复,请确认编号"});
            }
        }
        PLAction plAction = new PLAction();
        plAction.plOId = StringUtils.defaultString(dto.getPlOId());
        plAction.plCode = StringUtils.defaultString(dto.getPlCode());
        plAction.plName = StringUtils.defaultString(dto.getPlName());
        plAction.plCSClass = StringUtils.defaultString(dto.getPlCSClass());
        plAction.plBSUrl = StringUtils.defaultString(dto.getPlBSUrl());
        plAction.plDesc = StringUtils.defaultString(dto.getPlDesc());
        plAction.plCreateUser = dto.getPlCreateUser();
        plAction.plModifyUser = WebUtil.getCurrentUserId();
        plAction.plActionCls = StringUtils.defaultString(dto.getPlActionCls());
        plAction.plTypeType = StringUtils.defaultString(dto.getPlTypeType());
        boolean b = platformClientUtil.getUIService().updatePLAction(plAction);
        if(!b){
            throw new PLException("500", new String[]{"修改失败!!"});
        }
        return BaseResult.success("修改成功!");
    }
    /**
     * åˆ é™¤Action数据
     * dto action传输对象
     * @return åˆ é™¤ç»“æžœ
     */
    @Override
    public BaseResult deleteAction(PLActionDTO dto) throws PLException {
        PLAction plAction = new PLAction();
        plAction.plOId = StringUtils.defaultString(dto.getPlOId());
        plAction.plCode = StringUtils.defaultString(dto.getPlCode());
        plAction.plName = StringUtils.defaultString(dto.getPlName());
        plAction.plCSClass = StringUtils.defaultString(dto.getPlCSClass());
        plAction.plBSUrl = StringUtils.defaultString(dto.getPlBSUrl());
        plAction.plDesc = StringUtils.defaultString(dto.getPlDesc());
        plAction.plCreateUser = dto.getPlCreateUser();
        plAction.plModifyUser = WebUtil.getCurrentUserId();
        plAction.plActionCls = StringUtils.defaultString(dto.getPlActionCls());
        plAction.plTypeType = StringUtils.defaultString(dto.getPlTypeType());
        boolean b = platformClientUtil.getUIService().deletePLAction(plAction);
        if(!b){
            throw new PLException("500", new String[]{"删除失败!!"});
        }
        return BaseResult.success("删除成功!");
    }
    /**
     * å¯¼å‡ºAction
     * @return
     */
    @Override
    public void exportBeans(List<String> actionOid, HttpServletResponse response) throws PLException, IOException {
        String defaultTempFolder = LocalFileUtil.getDefaultTempFolder();
        String vciqtmfFileName = defaultTempFolder + File.separator + "actionTemplateExp" + new Date().getTime() + ".vciamf";
        HashMap exportBeans = new HashMap<String, Object>();
        getExportBeans(actionOid, exportBeans);// èŽ·å¾—å¯¼å‡ºBean同时,记录log
        ObjectOutputStream vciamfFileStream = null;
        try {
            File vciqtmfFile = new File(vciqtmfFileName);
            vciamfFileStream = new ObjectOutputStream(new FileOutputStream(vciqtmfFile));
            vciamfFileStream.writeObject(exportBeans);
        }finally {
            try {
                if (vciamfFileStream != null) {
                    vciamfFileStream.flush();
                    vciamfFileStream.close();
                }
            } catch (Exception e) {
                throw new PLException("500",new String[]{"导出流关闭异常!"});
            }
        }
        ControllerUtil.writeFileToResponse(response,vciqtmfFileName);
        FileUtil.del(defaultTempFolder + File.separator);
    }
    /**
     * å¤„理导出的对象
     * @param actionOid ç•Œé¢é€‰æ‹©çš„action列表数据
     * @param exportBeansMap å¯¼å‡ºå¯¹è±¡
     * @return
     * @throws PLException
     */
    private void getExportBeans(List<String> actionOid, HashMap exportBeansMap) throws PLException {
        PLActionCls[] plActionClsArray = platformClientUtil.getUIService().getPLActionClsArray();
        Map<String, PLActionCls> clsMap = Arrays.stream(plActionClsArray).collect(Collectors.toMap(e -> e.id, e -> e));
        ExportBeans exportBeans = new ExportBeans();
        for (String oid : actionOid) {
            PLAction plAction = platformClientUtil.getUIService().getPLActionById(oid);
            //有父节点则进行处理
            if(StringUtils.isNotBlank(plAction.plActionCls)){
                allPLActionClsParent(exportBeans, clsMap.get(plAction.plActionCls), clsMap);
            }
            exportBeans.getPLActions().put(plAction.plOId, plAction);
            PLActionParam[] params = platformClientUtil.getUIService().getPLActionParamArrayByActionId(plAction.plOId);
            if(params != null && params.length > 0){//如果参数存在
                for (PLActionParam plActionParam : params) {//添加action参数
                    exportBeans.addPLActionParamBean(plActionParam);
                }
            }
            String category = clsMap.containsKey(plAction.plActionCls) ? clsMap.get(plAction.plActionCls).name : "";
            exportBeans.setLogBean(new ExportActionLogBean(ExportActionLogBean.RIGHT_STATE,
                    plAction.plCode,plAction.plName,plAction.plCSClass,plAction.plBSUrl,
                    plAction.plTypeType,plAction.plDesc,category));
        }
        exportBeansMap.put("exportBeans", exportBeans);
    }
    //增加父类数据
    private void allPLActionClsParent(ExportBeans exportBeans, PLActionCls cls, Map<String, PLActionCls> clsMap) {
        if(cls.pid != ""){
            allPLActionClsParent(exportBeans, clsMap.get(cls.pid), clsMap);
        }
        exportBeans.addPLActionClsBean(cls);
    }
    /**
     * æ·»åŠ å­èŠ‚ç‚¹
     * @param parentDto çˆ¶èŠ‚ç‚¹å¯¹è±¡
     * @param allDataMap æ‰€æœ‰åˆ†ç»„对象
     * @param isExp true为导出功能的树,false为界面分类树
     */
    private void addClsTreeNode(PLActionClsDTO parentDto, Map<String, List<PLActionCls>> allDataMap, Boolean isExp) throws PLException {
        if(allDataMap.containsKey(parentDto.id)){
            for (PLActionCls cls : allDataMap.get(parentDto.id)) {
                PLActionClsDTO childDto = new PLActionClsDTO();
                childDto.setId(cls.id);
                childDto.setName(cls.name);
                childDto.setPid(cls.pid);
                childDto.setDescription(cls.description);
                childDto.setCreator(cls.creator);
                childDto.setCreateTime(cls.createTime);
                childDto.setSerialno(cls.serialno);
                if(isExp){
                    Constraint[] consArray = new Constraint[1];
                    consArray[0] =  new Constraint("plactioncls", cls.id);
                    PLAction[] plActionsByConsArray = platformClientUtil.getUIService().getPLActionsByConsArray(consArray);
                    if(parentDto.getChilds().isEmpty() && plActionsByConsArray.length == 0){
                        continue;
                    }
                    for (PLAction plAction : plActionsByConsArray) {
                        PLActionDTO plActionDTO = new PLActionDTO();
                        plActionDTO.setPlName(plAction.plCode + "/" + plAction.plName);
                        plActionDTO.setPlCode(plAction.plCode);
                        plActionDTO.setPlOId(plAction.plOId);
                        parentDto.getActionChilds().add(plActionDTO);
                    }
                }
                addClsTreeNode(childDto, allDataMap, isExp);
                parentDto.getChilds().add(childDto);
            }
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PinyinCommon.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.vci.web.util;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
 *
 * @author: ligang
 * @createtime: 2012-12-26
 * @version:
 */
    public class PinyinCommon {
    /**
     * å¾—到 å…¨æ‹¼
     * @param src
     * @return
     */
    public static String getPingYin(String src){
        char[] t1 = null;
        t1=src.toCharArray();
        String[] t2 = new String[t1.length];
        HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
        t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        t3.setVCharType(HanyuPinyinVCharType.WITH_V);
        String t4="";
        int t0=t1.length;
        try {
          for (int i=0;i<t0;i++) {
          //判断是否为汉字字符
             if(Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
                  t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
                  t4+=t2[0];
             } else {
                  t4+= Character.toString(t1[i]);
             }
          }
          return t4;
        }
        catch (BadHanyuPinyinOutputFormatCombination e1) {
          e1.printStackTrace();
        }
        return t4;
    }
    /**
     * å¾—到中文首字母
     * @param str
     * @return
     */
    public static String getPinYinHeadChar(String str) {
        String convert = "";
        for (int j = 0; j < str.length(); j++) {
            char word = str.charAt(j);
            String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
            if (pinyinArray != null) {
                convert += pinyinArray[0].charAt(0);
            }else {
                convert += word;
            }
        }
        return convert;
    }
    /**
     * å°†å­—符串转移为ASCII码
     * @param cnStr
     * @return
     */
    public static String getCnASCII(String cnStr) {
        StringBuffer   strBuf   =   new   StringBuffer();
        byte[]   bGBK   =   cnStr.getBytes();
        for(int   i=0;i <bGBK.length;i++){
            //System.out.println(Integer.toHexString(bGBK[i]&0xff));
            strBuf.append(Integer.toHexString(bGBK[i]&0xff));
        }
        return strBuf.toString();
    }
}
Source/plt-web/plt-web-ui/src/api/queryTemplate/businessTypeQuery.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
import request from '@/router/axios';
//业务类型查询模板
// æ¨¡æ¿åˆ—表查询
export function gridTemplate(params) {
  return request({
    url: "/api/templateController/queryTemplateList",
    method: "get",
    params:{
      ...params
    }
  });
}
Source/plt-web/plt-web-ui/src/api/queryTemplate/linkTypeQuery.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
import request from '@/router/axios';
//链接类型查询模板
// åˆ é™¤
export function deleteLinkTemplate(params) {
  return request({
    url: "/api/templateController/deleteLinkTemplate",
    method: "delete",
    data:params
  });
}
Source/plt-web/plt-web-ui/src/api/queryTemplate/queryDefine.js
@@ -1,6 +1,6 @@
import request from '@/router/axios';
//查询模板定义
// æ¨¡æ¿åˆ—表查询
// æ¨¡æ¿åˆ—表定义下拉框查询
export function gridTemplate(params) {
  return request({
    url: "/api/templateController/queryTemplateList",
@@ -11,6 +11,16 @@
  });
}
export function getObjTypeQTs(params) {
  return request({
    url: "/api/templateController/getObjTypeQTs",
    method: "get",
    params:{
      ...params
    }
  });
}
// ä¿®æ”¹
export function updateTemplate(params) {
  return request({
Source/plt-web/plt-web-ui/src/api/systemModel/mangeModel/api.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
import request from '@/router/axios';
// åˆ—表查询
export function getSysModelTreeMenuByPID(params) {
  return request({
    url: "/api/hmSysModConfigController/getSysModelTreeMenuByPID",
    method: "get",
    params
  });
}
// æ–°å¢ž
export function addModel(params) {
  return request({
    url: "/api/hmSysModConfigController/addModel",
    method: "post",
    data:params
  });
}
// ä¿®æ”¹
export function updateModel(params) {
  return request({
    url: "/api/hmSysModConfigController/updateModel",
    method: "put",
    data:params
  });
}
// åˆ é™¤
export function delModule(params) {
  return request({
    url: "/api/hmSysModConfigController/delModule",
    method: "delete",
    data:params
  });
}
// å¯¼å‡ºsql
export function exportFunctionSql (params) {
  return request({
    url: '/api/hmSysModConfigController/exportFunctionSql',
    method: 'get',
    headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},
    responseType: 'blob',
    params
  })
}
// å¢žåŠ æ“ä½œç±»åž‹
export function addOperationType(data) {
  return request({
    url: "/api/hmSysModConfigController/addOperationType",
    method: "post",
    data
  });
}
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue
@@ -19,7 +19,7 @@
            </el-button>
          </div>
          <!-- å·¦ä¾§æ ‘         -->
          <div style="height:  calc(100vh - 300px);">
          <div style="height:  calc(100vh - 260px);">
            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
          <span slot-scope="{ node, data }" class="el-tree-node__label">
           <span style="font-size: 15px">
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/businessTypeQuery/index.vue
@@ -3,24 +3,9 @@
    <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 ref="TreeBox" style="height: calc(100vh - 154px);!important;">
          <!-- å·¦ä¾§æ ‘         -->
          <div style="height:  calc(100vh - 280px);">
          <div style="height:  calc(100vh - 190px);">
            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
          <span slot-scope="{ node, data }" class="el-tree-node__label">
           <span style="font-size: 15px">
@@ -36,6 +21,16 @@
    <el-main>
      <basic-container>
        <avue-crud  ref="crud"
                    :data="crudData" :option="crudOption" :table-loading="tableLoading" style="margin-top: 10px">
          <template slot="menuLeft" slot-scope="scope">
            <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">创建</el-button>
            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">修改</el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">删除</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>
          </template>
        </avue-crud>
      </basic-container>
    </el-main>
@@ -43,8 +38,187 @@
</template>
<script>
import {getBizTypes} from "@/api/modeling/businessType/api";
import {gridTemplate,saveTemplate,updateTemplate,deleteTemplate} from "@/api/queryTemplate/queryDefine";
import basicOption from "@/util/basic-option";
import func from "@/util/func";
import {dateFormat} from "@/util/date";
export default {
  name: "index"
  name: "index",
  data() {
    return {
      treeOption: {
        height: 'auto',
        defaultExpandedKeys: ['topNode'],
        menu: false,
        addBtn: false,
        props: {
          label: 'label',
          value: 'oid',
          children: 'children'
        }
      },
      nodeRow: {},
      treeData: [  {
        label: '业务类型树',
        oid: 'topNode',
        children: []
      }],
      templateForm: '',
      templateData: [],
      form: {
        name: ''
      },
      rules: {
        name: [
          {required: true, message: '请输入查询模板名称', trigger: 'blur'}
        ]
      },
      title: '',
      visible: false,
      tableLoading: false,
      crudData: [],
      crudOption: {
        ...basicOption,
        addBtn: false,
        editBtn: false,
        delBtn: false,
        selection: true,
        menu: false,
        height: "auto",
        calcHeight: -40,
        tip: false,
        column: [{
          label: '查询模板名称',
          prop: 'name'
        }, {
          label: '创建人',
          prop: 'creator'
        }, {
          label: '创建时间',
          prop: 'createTime',
          formatter:function (row, value) {
            return dateFormat(new Date(value))
          }
        }]
      },
      selectionRow: [],
    }
  },
  created() {
    this.getTreeList();
  },
  methods: {
    //树表查询
    getTreeList() {
      const loading = this.$loading({});
      getBizTypes().then(res => {
        const data = res.data.data.map(item => {
          item.label = item.attributes.id;
          return item;
        });
        this.treeData[0].children = data;
        loading.close();
      })
    },
    // æ ‘点击
    nodeClick(row) {
      this.nodeRow = row;
      this.tableLoading = true;
      this.getTemp();
    },
    getTemp() {
      gridTemplate({btmName: this.nodeRow.label, linkFlag: false}).then(res => {
        this.crudData =  res.data.data;
        this.tableLoading = false;
      })
    },
    selectHandler(selection, row) {
    },
    changeTemp(data) {
      this.$refs.queryCrud.clearSelection();
      if (data.value != '') {
        let abNames = data.item.abNames.join(',').toLowerCase().split(',')
      }
    },
    //创建
    addHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择要添加的节点');
        return;
      }
      this.title = 'add';
      this.visible = true;
      this.$nextTick(() => {
      });
    },
    //修改
    editHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      this.form.name = this.templateForm;
      this.title = 'edit';
      this.visible = true;
      this.$nextTick(() => {
      });
    },
    // æ–°å¢žç¼–辑保存
    addDialogSavaHandler() {
      this.$refs.form.validate((valid) => {
        const saveFunction = this.title === 'add' ? saveTemplate : updateTemplate;
        if (valid) {
          saveFunction(this.form).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.obj);
              this.addDialogClose();
            }
          })
        } else {
          return false;
        }
      });
    },
    // æ–°å¢žç¼–辑对话框取消
    addDialogClose() {
      this.form = {
        name: ''
      };
      this.$refs.form.clearValidate();
      this.visible = false;
    },
    //删除
    delHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择数据');
        return;
      }
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteTemplate({
          name: this.templateForm,
          btmName: this.nodeRow.label,
          linkFlag: false
        }).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    }
  }
}
</script>
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/index.vue
@@ -3,24 +3,9 @@
    <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 ref="TreeBox" style="height: calc(100vh - 154px);!important;">
          <!-- å·¦ä¾§æ ‘         -->
          <div style="height:  calc(100vh - 280px);">
          <div style="height:  calc(100vh - 190px);">
            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
          <span slot-scope="{ node, data }" class="el-tree-node__label">
           <span style="font-size: 15px">
@@ -36,6 +21,16 @@
    <el-main>
      <basic-container>
        <avue-crud  ref="crud"
                    :data="crudData" :option="crudOption" :table-loading="tableLoading" style="margin-top: 10px">
          <template slot="menuLeft" slot-scope="scope">
            <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">创建</el-button>
            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">修改</el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">删除</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>
          </template>
        </avue-crud>
      </basic-container>
    </el-main>
@@ -43,8 +38,189 @@
</template>
<script>
import {gridLink} from "@/api/modeling/linkType/api";
import { gridTemplate, saveTemplate, updateTemplate} from "@/api/queryTemplate/queryDefine";
import {deleteLinkTemplate} from "@/api/queryTemplate/linkTypeQuery";
import func from "@/util/func";
import {dateFormat} from "@/util/date";
import basicOption from "@/util/basic-option";
export default {
  name: "index"
  name: "index",
  data() {
    return {
      treeOption: {
        height: 'auto',
        defaultExpandedKeys: ['topNode'],
        menu: false,
        addBtn: false,
        props: {
          label: 'label',
          value: 'oid',
          children: 'children'
        }
      },
      nodeRow: {},
      treeData: [{
        label: '链接类型',
        oid: 'topNode',
        children: []
      }],
      templateForm: '',
      templateData: [],
      form: {
        name: ''
      },
      rules: {
        name: [
          {required: true, message: '请输入查询模板名称', trigger: 'blur'}
        ]
      },
      title: '',
      visible: false,
      tableLoading: false,
      crudData: [],
      crudOption: {
        ...basicOption,
        addBtn: false,
        editBtn: false,
        delBtn: false,
        selection: true,
        menu: false,
        height: "auto",
        calcHeight: -40,
        tip: false,
        column: [{
          label: '查询模板名称',
          prop: 'name'
        }, {
          label: '创建人',
          prop: 'creator'
        }, {
          label: '创建时间',
          prop: 'createTime',
          formatter:function (row, value) {
            return dateFormat(new Date(value))
          }
        }]
      },
      selectionRow: [],
    }
  },
  created() {
    this.getTreeList();
  },
  methods: {
    //树表查询
    getTreeList() {
      const loading = this.$loading({});
      gridLink().then(res => {
        const data = res.data.data.map(item => {
          item.label=item.name;
          return item;
        });
        this.treeData[0].children = data;
        loading.close();
      })
    },
    // æ ‘点击
    nodeClick(row) {
      this.nodeRow = row;
      this.tableLoading = true;
      this.getTemp();
    },
    getTemp() {
      gridTemplate({btmName: this.nodeRow.label, linkFlag: true}).then(res => {
        this.crudData = res.data.data;
        this.tableLoading = false;
      })
    },
    selectHandler(selection, row) {
    },
    changeTemp(data) {
      this.$refs.queryCrud.clearSelection();
      if (data.value != '') {
        let abNames = data.item.abNames.join(',').toLowerCase().split(',')
      }
    },
    //创建
    addHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择要添加的节点');
        return;
      }
      this.title = 'add';
      this.visible = true;
      this.$nextTick(() => {
      });
    },
    //修改
    editHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      this.form.name = this.templateForm;
      this.title = 'edit';
      this.visible = true;
      this.$nextTick(() => {
      });
    },
    // æ–°å¢žç¼–辑保存
    addDialogSavaHandler() {
      this.$refs.form.validate((valid) => {
        const saveFunction = this.title === 'add' ? saveTemplate : updateTemplate;
        if (valid) {
          saveFunction(this.form).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.obj);
              this.addDialogClose();
            }
          })
        } else {
          return false;
        }
      });
    },
    // æ–°å¢žç¼–辑对话框取消
    addDialogClose() {
      this.form = {
        name: ''
      };
      this.$refs.form.clearValidate();
      this.visible = false;
    },
    //删除
    delHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择数据');
        return;
      }
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteLinkTemplate({
          name: this.templateForm,
          btmName: this.nodeRow.label,
          linkFlag: false
        }).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    }
  }
}
</script>
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue
@@ -24,6 +24,7 @@
    <el-main>
      <basic-container>
        æ¨¡æ¿åˆ—表:<avue-select v-model="templateForm" placeholder="请选择模板" type="tree" :dic="templateData" @change="changeTemp"></avue-select>
        <h3>查询属性</h3>
        <avue-crud  ref="queryCrud"
          :data="attrData" :option="attrOption" :table-loading="tableLoading" style="margin-top: 10px">
          <template slot="menuLeft" slot-scope="scope">
@@ -124,7 +125,6 @@
        menu:false,
        height: "auto",
        calcHeight: -40,
        title:'查询属性',
        tip:false,
        column: [{
            label: '字段编码',
Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,456 @@
<template>
  <el-container>
    <el-aside>
      <basic-container>
        <div style="max-height: calc(100vh - 170px);overflow: auto">
          <avue-tree :key="refresh" ref="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>
      </basic-container>
    </el-aside>
    <el-main>
      <basic-container>
        <el-form ref="form" :model="form" label-width="85px" style="height: 79vh">
          <span v-if="form.childType !== 0">
            <el-form-item label="模块名:">
            <el-input v-model="form.name" placeholder="请输入模块名"></el-input>
          </el-form-item>
          <el-form-item label="模块别名:">
            <el-input v-model="form.alias" placeholder="模块别名用来记录日志使用"></el-input>
          </el-form-item>
                <el-form-item label="C/S:">
            <el-input v-model="form.pathC" :rows="3" placeholder="请输入C/S路径" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label="B/S:">
            <el-input v-model="form.path" :rows="3" placeholder="请输入B/S路径" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label=".NET:">
            <el-input v-model="form.resourceDotNet" :rows="3" placeholder="请输入.NET" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label="Mobile:">
            <el-input v-model="form.resourceMobile" :rows="3" placeholder="请输入Mobile" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label="序号:">
            <el-input v-model="form.sort" placeholder="数字,描述该模块在其父模块下的显示顺序"></el-input>
          </el-form-item>
          <el-form-item label="简图:">
            <el-input v-model="form.source"></el-input>
          </el-form-item>
          <el-form-item label="描述:">
            <el-input v-model="form.remark" :rows="3" placeholder="请输入描述" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label="是否有效:">
            <el-switch
              v-model="form.isValid"
              active-color="#13ce66"
              inactive-color="#ff4949">
            </el-switch>
            <el-link :underline="false" style="margin-left: 20px" type="danger">不生效(不选择)时,该模块在功能模块授权里不显示</el-link>
          </el-form-item>
          </span>
          <span v-if="form.childType === 0">
            <el-form-item label="名称:">
            <el-input v-model="form.name" :disabled="form.childType === 0" placeholder="请输入名称"></el-input>
            </el-form-item>
            <el-form-item label="标识:">
            <el-input v-model="form.code" :disabled="form.childType === 0" placeholder="请输入标识"></el-input>
            </el-form-item>
            <el-form-item label="别名:">
            <el-input v-model="form.alias" placeholder="请输入别名"></el-input>
            </el-form-item>
            <el-form-item label="编号:">
            <el-input v-model="form.sort" :disabled="form.childType === 0" placeholder="请输入编号"></el-input>
            </el-form-item>
            <el-form-item label="描述:">
            <el-input v-model="form.remark" :disabled="form.childType === 0" placeholder="请输入描述"></el-input>
            </el-form-item>
            <el-form-item label="是否有效:">
            <el-switch
              v-model="form.isValid"
              active-color="#13ce66"
              inactive-color="#ff4949">
            </el-switch>
          </el-form-item>
          </span>
        </el-form>
        <div v-if="form.childType && form.childType !== 0" class="btnBox">
          <el-button v-if="!addStatus" :disabled="mangeShowBtn ? false : !childTypeBtn" icon="el-icon-plus" plain
                     size="small"
                     type="primary" @click="addClickHandler">增加
          </el-button>
          <el-button v-if="addStatus" icon="el-icon-check" plain size="small"
                     type="success" @click="addSaveClickHandler">保存
          </el-button>
          <el-button v-if="!editStatus" :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary"
                     @click="editClickHandler">修改
          </el-button>
          <el-button v-if="editStatus" icon="el-icon-check" plain size="small"
                     type="success" @click="editSaveClickHandler">保存
          </el-button>
          <el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger"
                     @click="delClickHandler">删除
          </el-button>
          <el-button :disabled="mangeShowBtn ? true : childTypeBtn" icon="el-icon-circle-plus-outline" plain
                     size="small"
                     type="primary" @click="addMethodsClickHandler">增加操作类型
          </el-button>
          <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small"
                     type="danger"
                     @click="addClickHandler">删除非系统模块
          </el-button>
          <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small"
                     type="danger"
                     @click="addClickHandler">删除业务模块
          </el-button>
          <el-button :disabled="!mangeShowBtn" icon="el-icon-upload2" plain size="small" type="primary"
                     @click="upLoadClickHandler">导入
          </el-button>
          <el-button :disabled="!mangeShowBtn" 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="sqlClickExportClick">导出sql
          </el-button>
        </div>
        <div v-if="form.childType === 0" class="btnBox">
          <el-button icon="el-icon-edit" plain size="small" type="primary">修改别名
          </el-button>
          <el-button icon="el-icon-close" plain size="small" type="danger">删除
          </el-button>
        </div>
      </basic-container>
    </el-main>
    <el-dialog
      v-dialogDrag
      :visible.sync="methodsVisble"
      append-to-body="true"
      class="avue-dialog"
      title="操作分类"
      width="60%"
    >
      <avue-crud
        ref="methodsCrud"
        :data="methodsData"
        :option="methodsOption"
        :table-loading="methodsLoading"
        @row-click="rowMethodsClickHandler"
        @selection-change="selectMethodsChange">
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="methodsVisble = false">取 æ¶ˆ</el-button>
         <el-button type="primary" @click="methodsSaveClickHandler">保 å­˜</el-button>
        </span>
    </el-dialog>
  </el-container>
</template>
<script>
//管理功能模块
import {
  getSysModelTreeMenuByPID,
  addModel,
  updateModel,
  delModule,
  exportFunctionSql,
  addOperationType
} from "@/api/systemModel/mangeModel/api"
import func from "@/util/func";
import basicOption from "@/util/basic-option";
export default {
  name: "index",
  data() {
    return {
      lastIndex: null,
      methodsList: [],
      methodsData: [],
      methodsOption: {
        ...basicOption,
        addBtn: false,
        menu: false,
        height: 500,
        column: [
          {
            label: '操作分类',
            prop: 'name',
            sortable: true,
          }
        ]
      },
      methodsLoading: false,
      methodsVisble: false,
      defalutName: ['name', 'alias', 'pathC', 'path', 'resourceDotNet', 'resourceMobile', 'sort', 'source', 'remark', 'code'],
      refresh: Math.random(),
      addStatus: false,
      editStatus: false,
      nodeRow: {},
      form: {},
      treeData: [],
      treeOption: {
        height: 'auto',
        menu: false,
        addBtn: false,
        defaultExpandAll: false,
        props: {
          label: 'name',
          value: 'id',
          children: 'children',
        },
        lazy: true,
        treeLoad: (node, resolve) => {
          const params = {
            parentId: node.level === 0 ? "modelManagmentNode" : node.data.id,
            modeType: node.level === 0 ? "firstNode" : node.data.modeType,
          }
          getSysModelTreeMenuByPID(params).then(res => {
            resolve(res.data.data.map(item => {
              return {
                ...item,
                id: item.id,
                name: item.name,
                leaf: !item.hasChildren
              }
            }))
          })
        }
      },
    }
  },
  created() {
  },
  computed: {
    /**
     * childType
     * ä¸º-1   å…¨éƒ¨æŒ‰é’®å±•示 ç¦ç”¨ä¿®æ”¹ åˆ é™¤ å¢žåŠ æ“ä½œç±»åž‹
     * ä¸ä¸º-1 éšè— åˆ é™¤éžç³»ç»Ÿæ¨¡å— åˆ é™¤ä¸šåŠ¡æ¨¡å—
     * ä¸º1时 ç¦ç”¨æ“ä½œç±»åž‹ã€å¯¼å…¥ã€å¯¼å‡º
     * ä¸º2时 ç¦ç”¨å¢žåŠ  å¯¼å…¥ å¯¼å‡º
     * mangeShowBtn ä¸º true è¯´æ˜Žæ˜¯é¡¶å±‚节点 å…¨éƒ¨æŒ‰é’®å±•示 ç¦ç”¨ä¿®æ”¹ åˆ é™¤ å¢žåŠ æ“ä½œç±»åž‹
     * @returns {Number}
     */
    mangeShowBtn() {
      return this.form.childType === -1;
    },
    childTypeBtn() {
      return this.form.childType === 1;
    }
  },
  methods: {
    // æ ‘行点击
    nodeClick(row) {
      console.log(row.childType);
      this.form = {...row};
      this.nodeRow = {...row};
      this.addStatus = false;
      this.editStatus = false;
    },
    // æ–°å¢žæŒ‰é’®
    addClickHandler() {
      this.resetFormValue();
      this.addStatus = true;
      this.editStatus = false;
    },
    // æ¸…空表单绑定值
    resetFormValue() {
      this.defalutName.forEach(key => {
        this.form[key] = null;
      })
      this.form.isValid = false;
    },
    // æ–°å¢žä¿å­˜æŒ‰é’®
    addSaveClickHandler() {
      if (!this.form.name) {
        this.$message.error('模块名不能为空');
        return
      }
      if (this.form.name.length > 128) {
        this.$message.error('模块名长度超过128!');
        return
      }
      if (this.form.remark && this.form.remark.length > 255) {
        this.$message.error('描述长度超过255!');
        return
      }
      if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) {
        this.$message.error('.NET标识长度不能255!');
        return
      }
      if (this.form.pathC && this.form.pathC.length > 255) {
        this.$message.error('C/S标识长度不能255!');
        return
      }
      if (this.form.resourceMobile && this.form.resourceMobile.length > 255) {
        this.$message.error('Mobile标识长度不能255!');
        return
      }
      this.form.parentId = this.form.id;
      addModel(this.form).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.msg);
          this.addStatus = false;
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
        }
      })
    },
    // ä¿®æ”¹æŒ‰é’®
    editClickHandler() {
      console.log(this.form);
      this.editStatus = true;
      this.addStatus = false;
    },
    // ä¿®æ”¹ä¿å­˜
    editSaveClickHandler() {
      if (!this.form.name) {
        this.$message.error('模块名不能为空');
        return
      }
      if (this.form.name.length > 128) {
        this.$message.error('模块名长度超过128!');
        return
      }
      if (this.form.remark && this.form.remark.length > 255) {
        this.$message.error('描述长度超过255!');
        return
      }
      if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) {
        this.$message.error('.NET标识长度不能255!');
        return
      }
      if (this.form.pathC && this.form.pathC.length > 255) {
        this.$message.error('C/S标识长度不能255!');
        return
      }
      if (this.form.resourceMobile && this.form.resourceMobile.length > 255) {
        this.$message.error('Mobile标识长度不能255!');
        return
      }
      updateModel(this.form).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.msg);
          this.editStatus = false;
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
        }
      })
    },
    // åˆ é™¤æŒ‰é’®
    delClickHandler() {
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        delModule(this.form).then(res => {
          console.log(res);
          if (res.data.code === 200) {
            this.$message.success(res.data.msg);
            this.resetFormValue();
            this.addStatus = false;
            this.editStatus = false;
            this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    // å¯¼å‡ºsql
    sqlClickExportClick() {
      exportFunctionSql({isFunction: true}).then(res => {
        func.downloadFileByBlobHandler(res);
        this.$message.success('导出成功');
      }).catch(err => {
        this.$message.error(err);
      });
    },
    // æ“ä½œåˆ†ç±»å¤šé€‰
    selectMethodsChange(list) {
      this.methodsList = list;
    },
    // å¢žåŠ æ“ä½œç±»åž‹
    addMethodsClickHandler() {
      this.methodsLoading = true;
      getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => {
        if (res.data.code === 200) {
          this.methodsVisble = true;
          const data = res.data.data[0].children;
          this.methodsData = data;
          this.methodsLoading = false;
        }
      })
    },
    // å¢žåŠ æ“ä½œç±»åž‹ä¿å­˜
    methodsSaveClickHandler() {
      let list = this.methodsList.map(item => {
        return {
          funcId: this.nodeRow.id,
          operId: item.id,
          operName: item.name,
          operIndentify: item.code,
          operAlias: item.alias,
          operDesc: item.remark
        }
      })
      addOperationType(list).then(res => {
        console.log(res)
        if (res.data.code === 200) {
          this.methodsVisble = false;
          this.$message.success(res.data.msg);
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
          this.resetFormValue();
          this.form.childType = null;
        }
      })
    },
    // ç‚¹å‡»è¡Œ
    rowMethodsClickHandler(row) {
      func.rowClickHandler(
        row,
        this.$refs.methodsCrud,
        this.lastIndex,
        (newIndex) => {
          this.lastIndex = newIndex;
        },
        () => {
          this.methodsList = [];
        }
      );
    },
  }
}
</script>
<style lang="scss" scoped>
::v-deep {
  .el-form-item .el-select {
    width: 100%;
  }
}
.btnBox {
  display: flex;
  justify-content: center;
}
</style>
Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,456 @@
<template>
  <el-container>
    <el-aside>
      <basic-container>
        <div style="max-height: calc(100vh - 170px);overflow: auto">
          <avue-tree :key="refresh" ref="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>
      </basic-container>
    </el-aside>
    <el-main>
      <basic-container>
        <el-form ref="form" :model="form" label-width="85px" style="height: 79vh">
          <span v-if="form.childType !== 0">
            <el-form-item label="模块名:">
            <el-input v-model="form.name" placeholder="请输入模块名"></el-input>
          </el-form-item>
          <el-form-item label="模块别名:">
            <el-input v-model="form.alias" placeholder="模块别名用来记录日志使用"></el-input>
          </el-form-item>
                <el-form-item label="C/S:">
            <el-input v-model="form.pathC" :rows="3" placeholder="请输入C/S路径" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label="B/S:">
            <el-input v-model="form.path" :rows="3" placeholder="请输入B/S路径" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label=".NET:">
            <el-input v-model="form.resourceDotNet" :rows="3" placeholder="请输入.NET" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label="Mobile:">
            <el-input v-model="form.resourceMobile" :rows="3" placeholder="请输入Mobile" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label="序号:">
            <el-input v-model="form.sort" placeholder="数字,描述该模块在其父模块下的显示顺序"></el-input>
          </el-form-item>
          <el-form-item label="简图:">
            <el-input v-model="form.source"></el-input>
          </el-form-item>
          <el-form-item label="描述:">
            <el-input v-model="form.remark" :rows="3" placeholder="请输入描述" type="textarea"></el-input>
          </el-form-item>
          <el-form-item label="是否有效:">
            <el-switch
              v-model="form.isValid"
              active-color="#13ce66"
              inactive-color="#ff4949">
            </el-switch>
            <el-link :underline="false" style="margin-left: 20px" type="danger">不生效(不选择)时,该模块在功能模块授权里不显示</el-link>
          </el-form-item>
          </span>
          <span v-if="form.childType === 0">
            <el-form-item label="名称:">
            <el-input v-model="form.name" :disabled="form.childType === 0" placeholder="请输入名称"></el-input>
            </el-form-item>
            <el-form-item label="标识:">
            <el-input v-model="form.code" :disabled="form.childType === 0" placeholder="请输入标识"></el-input>
            </el-form-item>
            <el-form-item label="别名:">
            <el-input v-model="form.alias" placeholder="请输入别名"></el-input>
            </el-form-item>
            <el-form-item label="编号:">
            <el-input v-model="form.sort" :disabled="form.childType === 0" placeholder="请输入编号"></el-input>
            </el-form-item>
            <el-form-item label="描述:">
            <el-input v-model="form.remark" :disabled="form.childType === 0" placeholder="请输入描述"></el-input>
            </el-form-item>
            <el-form-item label="是否有效:">
            <el-switch
              v-model="form.isValid"
              active-color="#13ce66"
              inactive-color="#ff4949">
            </el-switch>
          </el-form-item>
          </span>
        </el-form>
        <div v-if="form.childType && form.childType !== 0" class="btnBox">
          <el-button v-if="!addStatus" :disabled="mangeShowBtn ? false : !childTypeBtn" icon="el-icon-plus" plain
                     size="small"
                     type="primary" @click="addClickHandler">增加
          </el-button>
          <el-button v-if="addStatus" icon="el-icon-check" plain size="small"
                     type="success" @click="addSaveClickHandler">保存
          </el-button>
          <el-button v-if="!editStatus" :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary"
                     @click="editClickHandler">修改
          </el-button>
          <el-button v-if="editStatus" icon="el-icon-check" plain size="small"
                     type="success" @click="editSaveClickHandler">保存
          </el-button>
          <el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger"
                     @click="delClickHandler">删除
          </el-button>
          <el-button :disabled="mangeShowBtn ? true : childTypeBtn" icon="el-icon-circle-plus-outline" plain
                     size="small"
                     type="primary" @click="addMethodsClickHandler">增加操作类型
          </el-button>
          <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small"
                     type="danger"
                     @click="addClickHandler">删除非系统模块
          </el-button>
          <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small"
                     type="danger"
                     @click="addClickHandler">删除业务模块
          </el-button>
          <el-button :disabled="!mangeShowBtn" icon="el-icon-upload2" plain size="small" type="primary"
                     @click="upLoadClickHandler">导入
          </el-button>
          <el-button :disabled="!mangeShowBtn" 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="sqlClickExportClick">导出sql
          </el-button>
        </div>
        <div v-if="form.childType === 0" class="btnBox">
          <el-button icon="el-icon-edit" plain size="small" type="primary">修改别名
          </el-button>
          <el-button icon="el-icon-close" plain size="small" type="danger">删除
          </el-button>
        </div>
      </basic-container>
    </el-main>
    <el-dialog
      v-dialogDrag
      :visible.sync="methodsVisble"
      append-to-body="true"
      class="avue-dialog"
      title="操作分类"
      width="60%"
    >
      <avue-crud
        ref="methodsCrud"
        :data="methodsData"
        :option="methodsOption"
        :table-loading="methodsLoading"
        @row-click="rowMethodsClickHandler"
        @selection-change="selectMethodsChange">
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="methodsVisble = false">取 æ¶ˆ</el-button>
         <el-button type="primary" @click="methodsSaveClickHandler">保 å­˜</el-button>
        </span>
    </el-dialog>
  </el-container>
</template>
<script>
//管理功能模块
import {
  getSysModelTreeMenuByPID,
  addModel,
  updateModel,
  delModule,
  exportFunctionSql,
  addOperationType
} from "@/api/systemModel/mangeModel/api"
import func from "@/util/func";
import basicOption from "@/util/basic-option";
export default {
  name: "index",
  data() {
    return {
      lastIndex: null,
      methodsList: [],
      methodsData: [],
      methodsOption: {
        ...basicOption,
        addBtn: false,
        menu: false,
        height: 500,
        column: [
          {
            label: '操作分类',
            prop: 'name',
            sortable: true,
          }
        ]
      },
      methodsLoading: false,
      methodsVisble: false,
      defalutName: ['name', 'alias', 'pathC', 'path', 'resourceDotNet', 'resourceMobile', 'sort', 'source', 'remark', 'code'],
      refresh: Math.random(),
      addStatus: false,
      editStatus: false,
      nodeRow: {},
      form: {},
      treeData: [],
      treeOption: {
        height: 'auto',
        menu: false,
        addBtn: false,
        defaultExpandAll: false,
        props: {
          label: 'name',
          value: 'id',
          children: 'children',
        },
        lazy: true,
        treeLoad: (node, resolve) => {
          const params = {
            parentId: node.level === 0 ? "systemManagmentNode" : node.data.id,
            modeType: node.level === 0 ? "firstNode" : node.data.modeType,
          }
          getSysModelTreeMenuByPID(params).then(res => {
            resolve(res.data.data.map(item => {
              return {
                ...item,
                id: item.id,
                name: item.name,
                leaf: !item.hasChildren
              }
            }))
          })
        }
      },
    }
  },
  created() {
  },
  computed: {
    /**
     * childType
     * ä¸º-1   å…¨éƒ¨æŒ‰é’®å±•示 ç¦ç”¨ä¿®æ”¹ åˆ é™¤ å¢žåŠ æ“ä½œç±»åž‹
     * ä¸ä¸º-1 éšè— åˆ é™¤éžç³»ç»Ÿæ¨¡å— åˆ é™¤ä¸šåŠ¡æ¨¡å—
     * ä¸º1时 ç¦ç”¨æ“ä½œç±»åž‹ã€å¯¼å…¥ã€å¯¼å‡º
     * ä¸º2时 ç¦ç”¨å¢žåŠ  å¯¼å…¥ å¯¼å‡º
     * mangeShowBtn ä¸º true è¯´æ˜Žæ˜¯é¡¶å±‚节点 å…¨éƒ¨æŒ‰é’®å±•示 ç¦ç”¨ä¿®æ”¹ åˆ é™¤ å¢žåŠ æ“ä½œç±»åž‹
     * @returns {Number}
     */
    mangeShowBtn() {
      return this.form.childType === -1;
    },
    childTypeBtn() {
      return this.form.childType === 1;
    }
  },
  methods: {
    // æ ‘行点击
    nodeClick(row) {
      console.log(row.childType);
      this.form = {...row};
      this.nodeRow = {...row};
      this.addStatus = false;
      this.editStatus = false;
    },
    // æ–°å¢žæŒ‰é’®
    addClickHandler() {
      this.resetFormValue();
      this.addStatus = true;
      this.editStatus = false;
    },
    // æ¸…空表单绑定值
    resetFormValue() {
      this.defalutName.forEach(key => {
        this.form[key] = null;
      })
      this.form.isValid = false;
    },
    // æ–°å¢žä¿å­˜æŒ‰é’®
    addSaveClickHandler() {
      if (!this.form.name) {
        this.$message.error('模块名不能为空');
        return
      }
      if (this.form.name.length > 128) {
        this.$message.error('模块名长度超过128!');
        return
      }
      if (this.form.remark && this.form.remark.length > 255) {
        this.$message.error('描述长度超过255!');
        return
      }
      if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) {
        this.$message.error('.NET标识长度不能255!');
        return
      }
      if (this.form.pathC && this.form.pathC.length > 255) {
        this.$message.error('C/S标识长度不能255!');
        return
      }
      if (this.form.resourceMobile && this.form.resourceMobile.length > 255) {
        this.$message.error('Mobile标识长度不能255!');
        return
      }
      this.form.parentId = this.form.id;
      addModel(this.form).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.msg);
          this.addStatus = false;
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
        }
      })
    },
    // ä¿®æ”¹æŒ‰é’®
    editClickHandler() {
      console.log(this.form);
      this.editStatus = true;
      this.addStatus = false;
    },
    // ä¿®æ”¹ä¿å­˜
    editSaveClickHandler() {
      if (!this.form.name) {
        this.$message.error('模块名不能为空');
        return
      }
      if (this.form.name.length > 128) {
        this.$message.error('模块名长度超过128!');
        return
      }
      if (this.form.remark && this.form.remark.length > 255) {
        this.$message.error('描述长度超过255!');
        return
      }
      if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) {
        this.$message.error('.NET标识长度不能255!');
        return
      }
      if (this.form.pathC && this.form.pathC.length > 255) {
        this.$message.error('C/S标识长度不能255!');
        return
      }
      if (this.form.resourceMobile && this.form.resourceMobile.length > 255) {
        this.$message.error('Mobile标识长度不能255!');
        return
      }
      updateModel(this.form).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.msg);
          this.editStatus = false;
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
        }
      })
    },
    // åˆ é™¤æŒ‰é’®
    delClickHandler() {
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        delModule(this.form).then(res => {
          console.log(res);
          if (res.data.code === 200) {
            this.$message.success(res.data.msg);
            this.resetFormValue();
            this.addStatus = false;
            this.editStatus = false;
            this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    // å¯¼å‡ºsql
    sqlClickExportClick() {
      exportFunctionSql({isFunction: true}).then(res => {
        func.downloadFileByBlobHandler(res);
        this.$message.success('导出成功');
      }).catch(err => {
        this.$message.error(err);
      });
    },
    // æ“ä½œåˆ†ç±»å¤šé€‰
    selectMethodsChange(list) {
      this.methodsList = list;
    },
    // å¢žåŠ æ“ä½œç±»åž‹
    addMethodsClickHandler() {
      this.methodsLoading = true;
      getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => {
        if (res.data.code === 200) {
          this.methodsVisble = true;
          const data = res.data.data[0].children;
          this.methodsData = data;
          this.methodsLoading = false;
        }
      })
    },
    // å¢žåŠ æ“ä½œç±»åž‹ä¿å­˜
    methodsSaveClickHandler() {
      let list = this.methodsList.map(item => {
        return {
          funcId: this.nodeRow.id,
          operId: item.id,
          operName: item.name,
          operIndentify: item.code,
          operAlias: item.alias,
          operDesc: item.remark
        }
      })
      addOperationType(list).then(res => {
        console.log(res)
        if (res.data.code === 200) {
          this.methodsVisble = false;
          this.$message.success(res.data.msg);
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
          this.resetFormValue();
          this.form.childType = null;
        }
      })
    },
    // ç‚¹å‡»è¡Œ
    rowMethodsClickHandler(row) {
      func.rowClickHandler(
        row,
        this.$refs.methodsCrud,
        this.lastIndex,
        (newIndex) => {
          this.lastIndex = newIndex;
        },
        () => {
          this.methodsList = [];
        }
      );
    },
  }
}
</script>
<style lang="scss" scoped>
::v-deep {
  .el-form-item .el-select {
    width: 100%;
  }
}
.btnBox {
  display: flex;
  justify-content: center;
}
</style>
Source/plt-web/plt-web-ui/src/views/systemModel/operateType/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,189 @@
<template>
  <el-container>
    <el-aside>
      <basic-container>
        <div style="max-height: calc(100vh - 170px);overflow: auto">
          <avue-tree ref="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>
      </basic-container>
    </el-aside>
    <el-main>
      <basic-container>
        <el-form ref="form" :model="form" label-width="85px" style="height: 79vh">
          <el-form-item label="名称:">
            <el-input v-model="form.name" placeholder="请输入名称"></el-input>
          </el-form-item>
          <el-form-item label="标识:">
            <el-input v-model="form.code" placeholder="请输入标识"></el-input>
          </el-form-item>
          <el-form-item label="别名:">
            <el-input v-model="form.alias" placeholder="请输入别名"></el-input>
          </el-form-item>
          <el-form-item label="编号:">
            <el-input v-model="form.sort" placeholder="请输入编号"></el-input>
          </el-form-item>
          <el-form-item label="描述:">
            <el-input v-model="form.remark" placeholder="请输入描述"></el-input>
          </el-form-item>
        </el-form>
        <div class="btnBox">
          <el-button v-if="!addStatus" :disabled="mangeShowBtn ? false : !childTypeBtn" icon="el-icon-plus" plain
                     size="small"
                     type="primary" @click="addClickHandler">增加
          </el-button>
          <el-button v-if="addStatus" icon="el-icon-check" plain size="small"
                     type="success" @click="addSaveClickHandler">保存
          </el-button>
          <el-button :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary"
                     @click="addClickHandler">修改
          </el-button>
          <el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger"
                     @click="addClickHandler">删除
          </el-button>
          <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">导入sql
          </el-button>
        </div>
      </basic-container>
    </el-main>
  </el-container>
</template>
<script>
//管理功能模块
import {getSysModelTreeMenuByPID, addModel} from "@/api/systemModel/mangeModel/api"
export default {
  name: "index",
  data() {
    return {
      addStatus: false,
      nodeRow: {},
      form: {},
      treeData: [],
      treeOption: {
        height: 'auto',
        menu: false,
        addBtn: false,
        defaultExpandAll: false,
        props: {
          label: 'name',
          value: 'id',
          children: 'children',
        },
        lazy: true,
        treeLoad: (node, resolve) => {
          const params = {
            parentId: node.level === 0 ? "operateNode" : node.data.id,
            modeType: node.level === 0 ? "firstNode" : node.data.modeType,
          }
          getSysModelTreeMenuByPID(params).then(res => {
            resolve(res.data.data.map(item => {
              return {
                ...item,
                id: item.id,
                name: item.name,
                leaf: !item.hasChildren
              }
            }))
          })
        }
      },
    }
  },
  created() {
  },
  computed: {
    /**
     * childType
     * ä¸º-1   å…¨éƒ¨æŒ‰é’®å±•示 ç¦ç”¨ä¿®æ”¹ åˆ é™¤ å¢žåŠ æ“ä½œç±»åž‹
     * ä¸ä¸º-1 éšè— åˆ é™¤éžç³»ç»Ÿæ¨¡å— åˆ é™¤ä¸šåŠ¡æ¨¡å—
     * ä¸º1时 ç¦ç”¨æ“ä½œç±»åž‹ã€å¯¼å…¥ã€å¯¼å‡º
     * ä¸º2时 ç¦ç”¨å¢žåŠ  å¯¼å…¥ å¯¼å‡º
     * mangeShowBtn ä¸º true è¯´æ˜Žæ˜¯é¡¶å±‚节点 å…¨éƒ¨æŒ‰é’®å±•示 ç¦ç”¨ä¿®æ”¹ åˆ é™¤ å¢žåŠ æ“ä½œç±»åž‹
     * @returns {Number}
     */
    mangeShowBtn() {
      return this.form.childType === -1;
    },
    childTypeBtn() {
      return this.form.childType === 1;
    }
  },
  methods: {
    // æ ‘行点击
    nodeClick(row) {
      console.log(row);
      this.form = {...row};
      this.nodeRow = {...row};
      this.addStatus = false;
    },
    // æ–°å¢žæŒ‰é’®
    addClickHandler() {
      for (const key in this.form) {
        if (this.form.hasOwnProperty(key)) {
          this.form[key] = null;
        }
      }
      this.addStatus = true;
    },
    // ä¿å­˜æŒ‰é’®
    addSaveClickHandler() {
      console.log(this.form)
      if (!this.form.name) {
        this.$message.error('模块名不能为空');
        return
      }
      if (this.form.name.length > 128) {
        this.$message.error('模块名长度超过128!');
        return
      }
      if (this.form.remark && this.form.remark.length > 255) {
        this.$message.error('描述长度超过255!');
        return
      }
      if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) {
        this.$message.error('.NET标识长度不能255!');
        return
      }
      if (this.form.pathc && this.form.pathc.length > 255) {
        this.$message.error('C/S标识长度不能255!');
        return
      }
      if (this.form.resourceMobile && this.form.resourceMobile.length > 255) {
        this.$message.error('Mobile标识长度不能255!');
        return
      }
      console.log(this.nodeRow);
      this.form.parentId = this.nodeRow.id;
      this.form.modeType = this.nodeRow.modeType;
      addModel(this.form).then(res => {
        console.log(res)
        this.addStatus = false;
      })
    }
  }
}
</script>
<style lang="scss" scoped>
::v-deep {
  .el-form-item .el-select {
    width: 100%;
  }
}
.btnBox {
  display: flex;
  justify-content: center;
}
</style>
Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue
Source/plt-web/plt-web-ui/src/views/systemModel/systemMonitor/index.vue
Source/plt-web/plt-web-ui/src/views/systemModule/businessModel/index.vue
ÎļþÒÑɾ³ý
Source/plt-web/plt-web-ui/src/views/systemModule/mangeModel/index.vue
ÎļþÒÑɾ³ý
Source/plt-web/plt-web-ui/src/views/systemModule/operateType/index.vue
ÎļþÒÑɾ³ý