From 391eec3114a17e68652434c6eae610799d80290e Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期四, 16 一月 2025 11:13:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Bin/PLTWEB/server/plt-web.jar                                                                           |    0 
 Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue                                           |  187 +++++++++++++------
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue          |   17 +
 Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue                                      |   52 ++++-
 Bin/PLTWEB/server/lib/plt-web-base-2024.1-SNAPSHOT.jar                                                  |    0 
 Bin/PLTWEB/server/lib/plt-web-permission-2024.1-SNAPSHOT.jar                                            |    0 
 Source/plt-web/plt-web-ui/src/views/system/department/index.vue                                         |    2 
 Source/plt-web/plt-web-ui/src/views/processTemplate/customDefine/index.vue                              |  134 ++++++++++++--
 Source/plt-web/plt-web-ui/src/styles/ui.scss                                                            |   14 +
 Bin/PLTWEB/server/lib/plt-starter-2024.1-SNAPSHOT.jar                                                   |    0 
 Source/plt-web/plt-web-ui/src/store/modules/user.js                                                     |   27 ++
 Bin/PLTWEB/server/lib/plt-slice-1.0.RELEASE.jar                                                         |    0 
 Source/plt-web/plt-web-ui/src/views/processTemplate/customType/index.vue                                |    2 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue                                    |   14 
 Source/plt-web/plt-web-ui/src/page/index/top/index.vue                                                  |    5 
 /dev/null                                                                                               |    8 
 Source/plt-web/plt-web-ui/src/components/flow-design/main.vue                                           |    8 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue                     |    9 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java |    3 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue                       |    2 
 Bin/PLTWEB/server/lib/plt-web-api-2024.1-SNAPSHOT.jar                                                   |    0 
 Source/plt-web/plt-web-ui/src/api/user.js                                                               |   17 +
 22 files changed, 360 insertions(+), 141 deletions(-)

diff --git a/Bin/PLTWEB/server/lib/desktop.ini b/Bin/PLTWEB/server/lib/desktop.ini
deleted file mode 100644
index 4287f4c..0000000
--- a/Bin/PLTWEB/server/lib/desktop.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[LocalizedFileNames]
-plt-clientbase-1.0.RELEASE.jar=@plt-clientbase-1.0.RELEASE.jar,0
-plt-common-1.0.RELEASE.jar=@plt-common-1.0.RELEASE.jar,0
-plt-slice-1.0.RELEASE.jar=@plt-slice-1.0.RELEASE.jar,0
-plt-starter-2024.1-SNAPSHOT.jar=@plt-starter-2024.1-SNAPSHOT.jar,0
-plt-web-api-2024.1-SNAPSHOT.jar=@plt-web-api-2024.1-SNAPSHOT.jar,0
-plt-web-base-2024.1-SNAPSHOT.jar=@plt-web-base-2024.1-SNAPSHOT.jar,0
-plt-web-permission-2024.1-SNAPSHOT.jar=@plt-web-permission-2024.1-SNAPSHOT.jar,0
diff --git a/Bin/PLTWEB/server/lib/plt-slice-1.0.RELEASE.jar b/Bin/PLTWEB/server/lib/plt-slice-1.0.RELEASE.jar
index c3a4211..434beaa 100644
--- a/Bin/PLTWEB/server/lib/plt-slice-1.0.RELEASE.jar
+++ b/Bin/PLTWEB/server/lib/plt-slice-1.0.RELEASE.jar
Binary files differ
diff --git a/Bin/PLTWEB/server/lib/plt-starter-2024.1-SNAPSHOT.jar b/Bin/PLTWEB/server/lib/plt-starter-2024.1-SNAPSHOT.jar
index feda85f..4617f42 100644
--- a/Bin/PLTWEB/server/lib/plt-starter-2024.1-SNAPSHOT.jar
+++ b/Bin/PLTWEB/server/lib/plt-starter-2024.1-SNAPSHOT.jar
Binary files differ
diff --git a/Bin/PLTWEB/server/lib/plt-web-api-2024.1-SNAPSHOT.jar b/Bin/PLTWEB/server/lib/plt-web-api-2024.1-SNAPSHOT.jar
index 8f427bf..1dd55a0 100644
--- a/Bin/PLTWEB/server/lib/plt-web-api-2024.1-SNAPSHOT.jar
+++ b/Bin/PLTWEB/server/lib/plt-web-api-2024.1-SNAPSHOT.jar
Binary files differ
diff --git a/Bin/PLTWEB/server/lib/plt-web-base-2024.1-SNAPSHOT.jar b/Bin/PLTWEB/server/lib/plt-web-base-2024.1-SNAPSHOT.jar
index c3a7249..ce81c52 100644
--- a/Bin/PLTWEB/server/lib/plt-web-base-2024.1-SNAPSHOT.jar
+++ b/Bin/PLTWEB/server/lib/plt-web-base-2024.1-SNAPSHOT.jar
Binary files differ
diff --git a/Bin/PLTWEB/server/lib/plt-web-permission-2024.1-SNAPSHOT.jar b/Bin/PLTWEB/server/lib/plt-web-permission-2024.1-SNAPSHOT.jar
index 449ad79..fc93b98 100644
--- a/Bin/PLTWEB/server/lib/plt-web-permission-2024.1-SNAPSHOT.jar
+++ b/Bin/PLTWEB/server/lib/plt-web-permission-2024.1-SNAPSHOT.jar
Binary files differ
diff --git a/Bin/PLTWEB/server/plt-web.jar b/Bin/PLTWEB/server/plt-web.jar
index c177707..1983208 100644
--- a/Bin/PLTWEB/server/plt-web.jar
+++ b/Bin/PLTWEB/server/plt-web.jar
Binary files differ
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
index dcaa1bb..df39636 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
@@ -34,6 +34,7 @@
 import com.vci.web.service.OsQuereyTemplateServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.UITools;
+import com.vci.web.util.WebUtil;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -828,7 +829,7 @@
     @Override
     public PortalVI portalVIDTOO2VI(PortalVIDTO portalVIDTO) {
         PortalVI portalVI = new PortalVI();
-        portalVI.id = portalVIDTO.getId();
+        portalVI.id = StringUtils.isNotBlank(portalVIDTO.getId()) ? portalVIDTO.getId() : WebUtil.getPk();
         portalVI.typeFlag = portalVIDTO.getTypeFlag();
         portalVI.typeName = portalVIDTO.getTypeName();
         portalVI.viName = portalVIDTO.getViName();
diff --git a/Source/plt-web/plt-web-ui/src/api/user.js b/Source/plt-web/plt-web-ui/src/api/user.js
index f66c597..279286c 100644
--- a/Source/plt-web/plt-web-ui/src/api/user.js
+++ b/Source/plt-web/plt-web-ui/src/api/user.js
@@ -53,3 +53,20 @@
     params
   });
 }
+// 鑾峰彇澶村儚
+export function getUserPhoto(params) {
+  return request({
+    url: "/api/userQueryController/getUserPhoto",
+    method: "get",
+    responseType:'blob',
+    params
+  });
+}
+// 涓婁紶澶村儚
+export function updateUserPhoto(formData) {
+  return request({
+    url: "/api/userQueryController/updateUserPhoto",
+    method: "post",
+    data:formData
+  });
+}
diff --git a/Source/plt-web/plt-web-ui/src/components/flow-design/main.vue b/Source/plt-web/plt-web-ui/src/components/flow-design/main.vue
index 34560f8..6cfa604 100644
--- a/Source/plt-web/plt-web-ui/src/components/flow-design/main.vue
+++ b/Source/plt-web/plt-web-ui/src/components/flow-design/main.vue
@@ -8,13 +8,13 @@
                width="70%"
                custom-class="flow-design-dialog">
       <wf-design-base ref="bpmn"
-                      style="height: 60vh;"
+                      :style="'height: '+height+';'"
                       :options="option"></wf-design-base>
     </el-dialog>
     <div v-else>
       <wf-design-base v-if="visible"
                       ref="bpmn"
-                      style="height: 60vh;"
+                      :style="'height: '+height+';'"
                       :options="option"></wf-design-base>
     </div>
   </div>
@@ -36,6 +36,10 @@
     },
     processInstanceId: String,
     processDefinitionId: String,
+    height: {
+      type: String,
+      default: '60vh'
+    },
   },
   data() {
     return {
diff --git a/Source/plt-web/plt-web-ui/src/page/index/top/index.vue b/Source/plt-web/plt-web-ui/src/page/index/top/index.vue
index f11d053..ad400a3 100644
--- a/Source/plt-web/plt-web-ui/src/page/index/top/index.vue
+++ b/Source/plt-web/plt-web-ui/src/page/index/top/index.vue
@@ -77,7 +77,7 @@
       </el-tooltip>
       <el-tooltip content="涓汉淇℃伅">
         <div>
-          <img :src="userInfo.avatar"
+          <img :src="avatar"
                class="top-bar__img"
                @click="gotoInfo">
         </div>
@@ -184,6 +184,9 @@
     listenfullscreen(this.setScreen);
   },
   computed: {
+    avatar(){
+      return this.userInfo.avatar
+    },
     ...mapState({
       showDebug: state => state.common.showDebug,
       showTheme: state => state.common.showTheme,
diff --git a/Source/plt-web/plt-web-ui/src/store/modules/user.js b/Source/plt-web/plt-web-ui/src/store/modules/user.js
index fc95d95..5f3aab8 100644
--- a/Source/plt-web/plt-web-ui/src/store/modules/user.js
+++ b/Source/plt-web/plt-web-ui/src/store/modules/user.js
@@ -4,7 +4,7 @@
 import {isURL, validatenull} from '@/util/validate'
 import {deepClone, queryStringToObject} from '@/util/util'
 import website from '@/config/website'
-import {loginByUsername, loginBySocial, loginBySso, getUserInfo, logout, refreshToken, getButtons} from '@/api/user'
+import {loginByUsername, loginBySocial, loginBySso, getUserInfo, logout, refreshToken, getButtons,getUserPhoto} from '@/api/user'
 import {getTopMenu, getRoutes} from '@/api/system/menu'
 import md5 from 'js-md5'
 import func from "@/util/func";
@@ -286,12 +286,27 @@
       state.tenantId = tenantId;
       setStore({name: 'tenantId', content: state.tenantId})
     },
+    // SET_USER_INFO: (state, userInfo) => {
+    //   getUserPhoto().then(res => {
+    //     userInfo.avatar = URL.createObjectURL(res.data);
+    //     console.log('userInfo',userInfo)
+    //   })
+    //   state.userInfo = userInfo;
+    //   setStore({name: 'userInfo', content: state.userInfo})
+    // },
     SET_USER_INFO: (state, userInfo) => {
-      if (validatenull(userInfo.avatar)) {
-        userInfo.avatar = "/img/bg/img-logo.png";
-      }
-      state.userInfo = userInfo;
-      setStore({name: 'userInfo', content: state.userInfo})
+      getUserPhoto().then(res => {
+        // 灏� Blob 杞崲涓� Base64
+        const reader = new FileReader();
+        reader.onloadend = (result) => {
+          userInfo.avatar = reader.result; // 瀛樺偍 Base64 瀛楃涓�
+
+          // 鏇存柊鐘舵�佸苟瀛樺偍鍒� localStorage
+          state.userInfo = userInfo;
+          setStore({ name: 'userInfo', content: state.userInfo });
+        };
+        reader.readAsDataURL(res.data); // 璋冪敤reader鏂规硶
+      });
     },
     SET_ROLES: (state, roles) => {
       state.roles = roles;
diff --git a/Source/plt-web/plt-web-ui/src/styles/ui.scss b/Source/plt-web/plt-web-ui/src/styles/ui.scss
index de021e8..7336bb7 100644
--- a/Source/plt-web/plt-web-ui/src/styles/ui.scss
+++ b/Source/plt-web/plt-web-ui/src/styles/ui.scss
@@ -371,17 +371,18 @@
 }
 .avue-dialog .el-dialog{
   top:50%;
-  max-height: calc(100% - 80px);
+  max-height: calc(100% - 50px);
+  max-width: calc(100% - 50px);
   -webkit-transform: translate(-50%, 0);
   transform: translate(-50%, -50%);
   margin-top: 0 !important;
 }
 .avue-dialog .el-dialog__body{
   padding: 15px 15px 0px 15px; // 涓婂彸涓嬪乏 鍙栨秷琛ㄦ牸涓嬭竟璺濓紙浼氬嚭鐜版粴鍔ㄦ潯锛�
-  margin-bottom: 10px !important;
+  margin-bottom: 5px !important;
 }
 .avue-dialog .el-dialog__body .avue-form{
-  margin: 0px auto 40px; // 鍗曠嫭缁欏璇濇閲岀殑avue琛ㄥ崟鍔犱笂涓嬭竟璺�
+  margin: 0px auto 45px; // 鍗曠嫭缁欏璇濇閲岀殑avue琛ㄥ崟鍔犱笂涓嬭竟璺�
 }
 .dialog-footer{
   background-color: #ffffff;
@@ -408,15 +409,18 @@
 .avue-crud table td{
   line-height: 22px;
 }
+.avue-crud__header{
+  min-height: 35px;
+}
 /**宸︿晶鎿嶄綔鏍�**/
 .avue-crud__left{
   display: flex;
-  align-items: center;
+  align-items: start;
 }
 /**鍙充晶渚ф搷浣滄爮**/
 .avue-crud__right{
   display: flex;
-  align-items: center;
+  align-items: start;
 }
 /**琛ㄥ唴鎿嶄綔鏍�**/
 .avue-crud .avue-crud__menu{
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue
index 3f57118..ec607dd 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue
@@ -675,7 +675,7 @@
         editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
         exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false),
         importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false),
-        downloadImportTemplateBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOADFILE, false),
+        downloadImportTemplateBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOAD, false),
         viewTheScopeBtn: this.vaildData(this.permission[this.$route.query.id].VIRTUALVIEW, false),
       };
     },
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue
index 3e14dae..7be280b 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue
@@ -253,13 +253,13 @@
         editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
         exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false),
         importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false),
-        actionTopAddBtn: this.vaildData(this.permission[this.$route.query.id].USE, false),
-        actionTopDelBtn: this.vaildData(this.permission[this.$route.query.id].RESET, false),
-        actionTopEditBtn: this.vaildData(this.permission[this.$route.query.id].RECYCLE, false),
-        actionTopExportBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOADFILE, false),
-        actionBottomAddBtn: this.vaildData(this.permission[this.$route.query.id].FREEZE, false),
-        actionBottomDelBtn: this.vaildData(this.permission[this.$route.query.id].BATCHAPPLY, false),
-        actionBottomEditBtn: this.vaildData(this.permission[this.$route.query.id].CODEAPPLY, false),
+        actionTopAddBtn: this.vaildData(this.permission[this.$route.query.id].ADD2, false),
+        actionTopDelBtn: this.vaildData(this.permission[this.$route.query.id].DELETE2, false),
+        actionTopEditBtn: this.vaildData(this.permission[this.$route.query.id].EDIT2, false),
+        actionTopExportBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOAD, false),
+        actionBottomAddBtn: this.vaildData(this.permission[this.$route.query.id].ADD3, false),
+        actionBottomDelBtn: this.vaildData(this.permission[this.$route.query.id].DELETE3, false),
+        actionBottomEditBtn: this.vaildData(this.permission[this.$route.query.id].EDIT3, false),
       };
     },
     treeCrudOption(){
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
index 00fc35a..5e14d9b 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
@@ -165,7 +165,8 @@
                   <span slot-scope="{ node, data }" class="el-tree-node__label">
                     <span style="display: flex">
                       <i v-if="data.oId=='parentNode'" class="iconShow el-icon-s-home"></i>
-                      <icon-show v-else :name="data.iconPath"></icon-show>
+                      <icon-show v-if="data.oId!='parentNode' && data.iconPath && data.iconPath!='undefined'"
+                                 :name="data.iconPath"></icon-show>
                         {{ (node || {}).label }}
                     </span>
                   </span>
@@ -226,7 +227,9 @@
                       </el-radio>
                     </el-form-item>
                   </el-col>
-                  <el-col :span="24" v-show="basicForm.show=='0' && (basicForm.displayMode=='image'||basicForm.displayMode=='textandimage')">
+                  <el-col
+                    v-show="basicForm.show=='0' && (basicForm.displayMode=='image'||basicForm.displayMode=='textandimage')"
+                    :span="24">
                     <el-form-item :class="basicForm.displayMode==='image'?'is-required':''" label="鍥炬爣锛�" prop="iconPath">
                       <input-icon v-model="basicForm.iconPath" :disabled="disabledBtn"></input-icon>
                     </el-form-item>
@@ -476,9 +479,10 @@
             ]
           },
           {
-            label: '缂栧彿',
+            label: '搴忓彿',
             prop: 'seq',
             width: 100,
+            type: 'number',
             labelWidth: 110,
             hide: false,
             rules: [
@@ -889,9 +893,9 @@
     ...mapGetters(["permission"]),
     permissionChildrenList() {
       return {
-        UiPageLayoutAddBtn: this.vaildData(this.permission[this.$route.query.id].CLSRIGHT, false),
-        UiPageLayoutEditBtn: this.vaildData(this.permission[this.$route.query.id].DATARIGHT, false),
-        UiPageLayoutDelBtn: this.vaildData(this.permission[this.$route.query.id].ATTRRIGHT, false),
+        UiPageLayoutAddBtn: this.vaildData(this.permission[this.$route.query.id].ADD3, false),
+        UiPageLayoutEditBtn: this.vaildData(this.permission[this.$route.query.id].EDIT3, false),
+        UiPageLayoutDelBtn: this.vaildData(this.permission[this.$route.query.id].DELETE3, false),
         UiPageLayoutCloneBtn: this.vaildData(this.permission[this.$route.query.id].CLONE, false),
         UiPageLayoutDesignBtn: this.vaildData(this.permission[this.$route.query.id].UPLOAD, false),
       }
@@ -1324,7 +1328,6 @@
         } else {
           return false;
         }
-        done();
       });
     },
 
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue
index d8a1f23..0a87d9b 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue
@@ -185,7 +185,8 @@
           prop: 'plExtAttr'
         }, {
           label: '鎻忚堪',
-          prop: 'plDesc'
+          prop: 'plDesc',
+          overHidden: true
         }]
       },
       data: [],
@@ -226,9 +227,9 @@
     ...mapGetters(["permission"]),
     permissionChildrenList() {
       return {
-        UiTabAddBtn: this.vaildData(this.permission[this.$route.query.id].BATCHAPPLY, false),
-        UiTabEditBtn: this.vaildData(this.permission[this.$route.query.id].BATCHUPDATE, false),
-        UiTabDelBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOADFILE, false),
+        UiTabAddBtn: this.vaildData(this.permission[this.$route.query.id].ADD2, false),
+        UiTabEditBtn: this.vaildData(this.permission[this.$route.query.id].EDIT2, false),
+        UiTabDelBtn: this.vaildData(this.permission[this.$route.query.id].DELETE2, false),
         UiTabCloneBtn: this.vaildData(this.permission[this.$route.query.id].CLONE, false),
       }
     }
diff --git a/Source/plt-web/plt-web-ui/src/views/processTemplate/customDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/processTemplate/customDefine/index.vue
index c0ed872..35701d4 100644
--- a/Source/plt-web/plt-web-ui/src/views/processTemplate/customDefine/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/processTemplate/customDefine/index.vue
@@ -1,7 +1,7 @@
 <template>
   <!--娴佺▼妯℃澘瀹氫箟-->
   <basic-container style="height: calc(100vh - 123px)">
-    <div style="margin-bottom: 5px;">
+    <div style="margin-bottom: 10px;">
       娴佺▼鍒嗙被锛�
       <el-select v-model="tempType" :clearable="true" placeholder="璇烽�夋嫨" size="small"
                  style="width: 300px;margin-right: 20px;"
@@ -77,31 +77,58 @@
                 </span>
             </el-button>
           </template>
-
         </avue-crud>
         <!-- 鍒涘缓缂栬緫鑷畾涔夊璇濇    -->
         <el-dialog
           v-dialogDrag
           v-loading="dialogLoading"
-          :title="dialogType === 'add' ? ' 鍒涘缓' : '缂栬緫'"
+          title="娴佺▼鑷畾涔�"
           :visible.sync="dialogVisible"
           append-to-body="true"
           class="avue-dialog"
-          width="1000px"
-          @close="dialogClose"
+          :close-on-press-escape="false"
+          :fullscreen="true"
+          :before-close="handleNutflowClose"
+          custom-class="wf-dialog"
         >
+          <wf-design-base v-if="nutflowOption.step === 1"
+                          class="animated fadeIn"
+                          style="height: calc(100vh - 178px);"
+                          ref="wf-design"
+                          :options="nutflowOption.step1"></wf-design-base>
+          <wf-design-base v-if="nutflowOption.step === 2"
+                          class="animated fadeIn"
+                          style="height: calc(100vh - 178px);"
+                          ref="wf-design-view"
+                          :options="nutflowOption.step2"></wf-design-base>
             <span slot="footer" class="dialog-footer">
-              <el-button size="small" type="primary" @click="saveHandler">纭� 瀹�</el-button>
-              <el-button size="small" @click="dialogClose">鍙� 娑�</el-button>
+              <el-button v-if="nutflowOption.step === 1"
+                         size="small"
+                         type="success"
+                         @click="handleStep(1)">涓� 涓� 姝�</el-button>
+              <el-button v-if="nutflowOption.step === 2"
+                         size="small"
+                         type="success"
+                         @click="handleStep(-1)">涓� 涓� 姝�</el-button>
+              <el-button v-if="nutflowOption.step === 2"
+                         size="small"
+                         type="primary"
+                         @click="handleSubmitModel">纭� 瀹�</el-button>
+              <el-button size="small"
+                         @click="handleNutflowClose(() => {}, true)">鍙� 娑�</el-button>
             </span>
         </el-dialog>
         <!-- 瀵煎叆   -->
         <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="瀵煎叆娴佺▼妯℃澘"
                      @updata="getTableList"></upload-file>
+
       </el-aside>
 
       <el-main width="60%">
-        <div style="height: 100%;background-color: #eeeeea">璁捐鍣�</div>
+        <div style="height: 100%;position: relative;">
+          <flow-design style="padding-top: 5px" :is-display.sync="flowBox" :process-definition-id="processDefinitionId" height="calc(100vh - 195px)"></flow-design>
+          <div style="position: absolute;top:0;left: 0;height: 100%;width: 100%"></div>
+        </div>
       </el-main>
     </el-container>
   </basic-container>
@@ -131,7 +158,21 @@
       tipList:[],
       dialogLoading:false,
       dialogVisible:false,
-      dialogType:'add'
+      dialogType:'add',
+      processDefinitionId: '',
+      flowBox: false,
+      nutflowOption: {
+        process: {},
+        step: 1,
+        step1: {
+          toolbar: ['open', 'create', 'fit', 'zoom-in', 'zoom-out', 'undo', 'redo', 'import', 'preview'],
+        },
+        step2: {
+          mode: 'view',
+          simulation: true,
+          minimap: true,
+        }
+      }
     }
   },
   computed: {
@@ -219,29 +260,75 @@
       this.dialogVisible = true;
       this.dialogType = 'edit'
     },
-    // 缂栬緫淇濆瓨
-    saveHandler() {
+    //淇濆瓨娴佺▼閰嶇疆
+    handleSubmitModel() {
+      const registry = this.$refs['wf-design-view'].getElementRegistry().getAll()
+      const {businessObject} = registry[0]
+      const {id, name, documentation} = businessObject
+      const description = (documentation && documentation.length > 0) ? documentation[0].text : null
+      const params = {
+        ...this.nutflowOption.process,
+        modelKey: id,
+        name,
+        description,
+        modelEditorXml: this.nutflowOption.process.xml
+      }
       if(this.dialogType=='add'){
-        saveProcessTemp(this.form).then(res => {
+        saveProcessTemp(params).then(res => {
           if (res.data.code === 200) {
             this.$message.success(res.data.obj);
             this.getTableList();
+            this.handleNutflowClose()
           }
         });
       }else{
-        updateProcessTemp(this.form).then(res => {
+        updateProcessTemp(params).then(res => {
           if (res.data.code === 200) {
             this.$message.success(res.data.obj);
             this.getTableList();
+            this.handleNutflowClose()
           }
         })
       }
-
     },
-    dialogClose(){
-      this.form={};
-      this.dialogLoading=false;
-      this.dialogVisible=false;
+    handleStep(step) {
+      if (step === 1) { // 涓嬩竴姝�
+        this.$refs['wf-design'].getData('xml').then(data => {
+          this.$set(this.nutflowOption.step1, 'xml', data)
+          this.$set(this.nutflowOption.step2, 'xml', data)
+          this.$set(this.nutflowOption.process, 'xml', data)
+          this.$set(this.nutflowOption, 'step', 2)
+        })
+      } else {
+        this.$set(this.nutflowOption, 'step', 1)
+      }
+    },
+    handleNutflowClose(done, flag) {
+      const initOption = {
+        process: {},
+        step: 1,
+        step1: {
+          toolbar: ['open', 'create', 'fit', 'zoom-in', 'zoom-out', 'undo', 'redo', 'import', 'preview'],
+        },
+        step2: {
+          mode: 'view',
+          simulation: true,
+          minimap: true,
+        }
+      }
+      if (done || flag) {
+        this.$confirm('纭畾瑕佸叧闂悧锛熷叧闂湭淇濆瓨鐨勪慨鏀归兘浼氫涪澶便��', '璀﹀憡', {
+          type: 'warning'
+        }).then(() => {
+          this.$set(this, 'nutflowOption', initOption)
+          if (typeof done == 'function') done()
+          this.dialogVisible = false
+        }).catch(() => {
+        })
+      } else {
+        this.$set(this, 'nutflowOption', initOption)
+        this.dialogVisible = false
+      }
     },
     // 鍒犻櫎
     handleDel(row,index) {
@@ -286,6 +373,9 @@
           this.selectionList = [row];
         }
       );
+      //鏄剧ず娴佺▼鍥�
+      this.processDefinitionId = row.id;
+      this.flowBox = true;
     },
 
     // 瀵煎嚭
@@ -331,6 +421,10 @@
 }
 </script>
 
-<style scoped>
-
+<style lang="scss" scoped>
+::v-deep {
+  .avue-dialog .el-dialog__body{
+    margin-bottom: 0 !important;
+  }
+}
 </style>
diff --git a/Source/plt-web/plt-web-ui/src/views/processTemplate/customType/index.vue b/Source/plt-web/plt-web-ui/src/views/processTemplate/customType/index.vue
index 8c4b080..f13558c 100644
--- a/Source/plt-web/plt-web-ui/src/views/processTemplate/customType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/processTemplate/customType/index.vue
@@ -88,7 +88,7 @@
         addBtn:false,
         editBtn:false,
         delBtn:false,
-        calcHeight: -60,
+        calcHeight: -55,
         align:'left',
         headerAlign:'center',
         menuWidth:160,
diff --git a/Source/plt-web/plt-web-ui/src/views/system/department/index.vue b/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
index 8f6cebd..19a7468 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
@@ -186,7 +186,7 @@
         editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
         assignMembersBtn: this.vaildData(this.permission[this.$route.query.id].FREEZE, false),
         departmentAddChildrenBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
-        downloadImportTemplateBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOADFILE, false),
+        downloadImportTemplateBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOAD, false),
         importDepartmentBtn: this.vaildData(this.permission[this.$route.query.id].MGR, false),
         statisticsBtn: this.vaildData(this.permission[this.$route.query.id].DISCARD, false),
       };
diff --git a/Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue b/Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue
index f8250e3..75d83c8 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue
@@ -1,25 +1,55 @@
 <template>
   <div>
     <basic-container>
-      <avue-form
-        ref="form"
-        v-model="form"
-        :option="option"
-        @submit="handleSubmit"
-        @tab-click="handleTabClick">
-        <template slot="avatar" slot-scope="{disabled,size}">
-          <div>
-            <userAvatar :avatar="form.avatar"/>
-          </div>
-        </template>
-      </avue-form>
+      <el-tabs v-model="index" @tab-click="handleTabClick">
+        <el-tab-pane label="涓汉淇℃伅" name="0">
+          <el-form ref="userForm" :model="userForm" :rules="userRules" label-width="90px" size="small">
+            <el-form-item label="澶村儚锛�">
+              <userAvatar :avatar="userForm.avatar"/>
+            </el-form-item>
+            <el-form-item label="鐢ㄦ埛鍚嶏細">
+              <el-input v-model="userForm.userId" :disabled="true"></el-input>
+            </el-form-item>
+            <el-form-item label="濮撳悕锛�" prop="userName">
+              <el-input v-model="userForm.userName"></el-input>
+            </el-form-item>
+            <el-form-item label="褰撳墠瑙掕壊锛�">
+              <el-input v-model="userForm.personName" :disabled="true"></el-input>
+            </el-form-item>
+            <el-form-item label="閭锛�">
+              <el-input v-model="userForm.email"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="userSubmit">鎻愪氦</el-button>
+              <el-button @click="handleWitch">娓呯┖</el-button>
+            </el-form-item>
+          </el-form>
+        </el-tab-pane>
+        <el-tab-pane label="淇敼瀵嗙爜" name="1">
+          <el-form ref="passWordForm" :model="passWordForm" :rules="rules" label-width="145px" size="small">
+            <el-form-item label="鐧婚檰瀵嗙爜锛�" prop="oldPassword">
+              <el-input v-model="passWordForm.oldPassword"></el-input>
+            </el-form-item>
+            <el-form-item label="鏂扮櫥闄嗗瘑鐮侊細" prop="password">
+              <el-input v-model="passWordForm.password"></el-input>
+            </el-form-item>
+            <el-form-item label="鏂板瘑鐮佺櫥闄嗙‘璁わ細" prop="confirmPassword">
+              <el-input v-model="passWordForm.confirmPassword"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="passWordSubmit">鎻愪氦</el-button>
+              <el-button @click="handleWitch">娓呯┖</el-button>
+            </el-form-item>
+          </el-form>
+        </el-tab-pane>
+      </el-tabs>
     </basic-container>
   </div>
 </template>
 
 <script>
 import option from "@/option/user/info";
-import {getUserInfo, updateInfo, updatePassword} from "@/api/system/user";
+import {updateUser} from "@/api/system/user/api";
 import func from "../../../util/func";
 import {changePassword} from "../../../api/user"
 import userAvatar from "./userAvatar";
@@ -30,9 +60,26 @@
   components: {userAvatar,},
   data() {
     return {
-      index: 0,
+      index: '0',
       option: option,
-      form: {}
+      userForm: {},
+      passWordForm: {},
+      userRules: {
+        userName: [
+          {required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur'},
+        ],
+      },
+      rules: {
+        oldPassword: [
+          {required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur'},
+        ],
+        password: [
+          {required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur'},
+        ],
+        confirmPassword: [
+          {required: true, message: '璇疯緭鍏ュ瘑鐮�', trigger: 'blur'},
+        ],
+      }
     };
   },
   computed: {
@@ -42,58 +89,74 @@
     this.handleWitch();
   },
   methods: {
-    handleSubmit(form, done) {
-      if (this.index === 0) {
-        updateInfo(form).then(res => {
-          if (res.data.success) {
-            this.$message({
-              type: "success",
-              message: "淇敼淇℃伅鎴愬姛!"
-            });
-          } else {
-            this.$message({
-              type: "error",
-              message: res.data.msg
-            });
-          }
-          done();
-        }, error => {
-          window.console.log(error);
-          done();
-        })
-      } else {
-        let userInfo = JSON.parse(localStorage.getItem('saber-userInfo'));
-        let params = {
-          userName: userInfo.content.userId,
-          oldPassword: func.encryptData(form.oldPassword, 'daliantan0v0vcip'),
-          password: func.encryptData(form.password, 'daliantan0v0vcip'),
-          confirmPassword: func.encryptData(form.confirmPassword, 'daliantan0v0vcip'),
-
-        }
-        changePassword(params).then(res => {
-          if (res.data.code === 200) {
-            this.$message.success(res.data.msg);
-            this.passwordVisible = false;
-            this.$store.dispatch("LogOut").then(() => {
-              resetRouter();
-              this.$router.push({path: "/login"});
-            });
-          }
-        }).catch(err => {
-          console.log(err);
-        })
-      }
-    },
     handleWitch() {
-      if (this.index === 0) {
-        this.form = {...this.userInfo};
-        console.log(this.form);
+      if (this.index === '0') {
+        const {avatar, userId, userName, email, personName} = this.userInfo;
+        this.userForm = {avatar, userId, userName, email, personName};
+      } else {
+        this.passWordForm = {};
+        this.$refs.passWordForm.clearValidate();
       }
     },
     handleTabClick(tabs) {
-      this.index = func.toInt(tabs.index);
+      this.index = tabs.index
       this.handleWitch();
-      this.$refs.form.resetFields();
+    },
+
+    userSubmit() {
+      console.log('123')
+      this.$refs.userForm.validate((valid) => {
+        if (valid) {
+          const params = {
+            id: this.userInfo.userId,
+            name: this.userForm.userName,
+            email: this.userForm.email
+          }
+          updateUser(params).then(res => {
+            if (res.data.success) {
+              this.$message({
+                type: "success",
+                message: "淇敼淇℃伅鎴愬姛!"
+              });
+            } else {
+              this.$message({
+                type: "error",
+                message: res.data.msg
+              });
+            }
+            done();
+          })
+        } else {
+          return false;
+        }
+      });
+    },
+    passWordSubmit() {
+      this.$refs.passWordForm.validate((valid) => {
+        if (valid) {
+          let userInfo = JSON.parse(localStorage.getItem('saber-userInfo'));
+          let params = {
+            userName: userInfo.content.userId,
+            oldPassword: func.encryptData(this.passWordForm.oldPassword, 'daliantan0v0vcip'),
+            password: func.encryptData(this.passWordForm.password, 'daliantan0v0vcip'),
+            confirmPassword: func.encryptData(this.passWordForm.confirmPassword, 'daliantan0v0vcip'),
+
+          }
+          changePassword(params).then(res => {
+            if (res.data.code === 200) {
+              this.$message.success(res.data.msg);
+              this.$store.dispatch("LogOut").then(() => {
+                resetRouter();
+                this.$router.push({path: "/login"});
+              });
+            }
+          }).catch(err => {
+            console.log(err);
+          })
+        } else {
+          return false;
+        }
+      });
     }
   }
 };
diff --git a/Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue b/Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue
index 37864cc..ce25b08 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue
@@ -61,7 +61,9 @@
 <script>
 import store from "@/store";
 import { VueCropper } from "vue-cropper";
-import { uploadAvatar } from "@/api/system/user";
+import {getUserPhoto, updateUserPhoto} from "@/api/user";
+import {mapGetters} from "vuex";
+import {setStore} from '@/util/store'
 
 export default {
   components: { VueCropper },
@@ -74,18 +76,23 @@
       visible: false,
       // 寮瑰嚭灞傛爣棰�
       title: "淇敼澶村儚",
-      options: {
-        img: this.avatar,  //瑁佸壀鍥剧墖鐨勫湴鍧�
+      previews: {},
+      resizeHandler: null
+    };
+  },
+  computed: {
+    ...mapGetters(["userInfo"]),
+    options() {
+      return {
+        img: this.userInfo.avatar,  //瑁佸壀鍥剧墖鐨勫湴鍧�
         autoCrop: true,             // 鏄惁榛樿鐢熸垚鎴浘妗�
         autoCropWidth: 200,         // 榛樿鐢熸垚鎴浘妗嗗搴�
         autoCropHeight: 200,        // 榛樿鐢熸垚鎴浘妗嗛珮搴�
         fixedBox: true,             // 鍥哄畾鎴浘妗嗗ぇ灏� 涓嶅厑璁告敼鍙�
         outputType:"png",           // 榛樿鐢熸垚鎴浘涓篜NG鏍煎紡
         filename: 'avatar'          // 鏂囦欢鍚嶇О
-      },
-      previews: {},
-      resizeHandler: null
-    };
+      }
+    }
   },
   methods: {
     // 缂栬緫澶村儚
@@ -125,7 +132,7 @@
     // 涓婁紶棰勫鐞�
     beforeUpload(file) {
       if (file.type.indexOf("image/") == -1) {
-        this.$modal.msgError("鏂囦欢鏍煎紡閿欒锛岃涓婁紶鍥剧墖绫诲瀷,濡傦細JPG锛孭NG鍚庣紑鐨勬枃浠躲��");
+        this.$message.error("鏂囦欢鏍煎紡閿欒锛岃涓婁紶鍥剧墖绫诲瀷,濡傦細JPG锛孭NG鍚庣紑鐨勬枃浠躲��");
       } else {
         const reader = new FileReader();
         reader.readAsDataURL(file);
@@ -133,19 +140,21 @@
           this.options.img = reader.result;
           this.options.filename = file.name;
         };
+        this.$refs.cropper.refresh();
       }
     },
     // 涓婁紶鍥剧墖
     uploadImg() {
       this.$refs.cropper.getCropBlob(data => {
-        console.log(data);
+
         let formData = new FormData();
-        formData.append("avatarfile", data, this.options.filename);
-        uploadAvatar(formData).then(response => {
+        formData.append("file", data, this.options.filename);
+        formData.append("username",this.userInfo.userId);
+
+        updateUserPhoto(formData).then(response => {
           this.open = false;
-          this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
-          store.commit('SET_AVATAR', this.options.img);
-          this.$modal.msgSuccess("淇敼鎴愬姛");
+          this.$message.success('淇敼鎴愬姛锛�');
+          this.getUserInfo();
           this.visible = false;
         });
       });
@@ -156,9 +165,22 @@
     },
     // 鍏抽棴绐楀彛
     closeDialog() {
-      this.options.img = store.getters.avatar
+      this.options.img = this.userInfo.avatar; // 鍏抽棴绐楀彛鏇存柊涓虹紦瀛樹腑鐨勫ご鍍忓湴鍧� 濡備慨鏀规垚鍔熸洿鏂颁负鏈�鏂扮殑 濡備慨鏀瑰悗鏈繚瀛樻洿鏂颁负缂撳瓨涓殑
       this.visible = false;
       window.removeEventListener("resize", this.resizeHandler)
+    },
+    // 鏇存柊缂撳瓨鍐呭
+    getUserInfo(){
+      getUserPhoto().then(res => {
+        // 灏� Blob 杞崲涓� Base64
+        const reader = new FileReader();
+        reader.onloadend = (result) => {
+          this.userInfo.avatar = reader.result; // 瀛樺偍 Base64 瀛楃涓�
+
+          setStore({ name: 'userInfo', content:  this.userInfo });
+        };
+        reader.readAsDataURL(res.data); // 璋冪敤reader鏂规硶
+      });
     }
   }
 };

--
Gitblit v1.9.3