From 9936c2c1aeebc91b6242083826ef48d77ea03032 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 12 九月 2024 17:44:53 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java | 38 +++ Source/plt-web/plt-web-ui/src/page/login/userlogin.vue | 400 +++++++++++++++++++++++++------------------------ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java | 5 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java | 7 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java | 18 ++ 5 files changed, 260 insertions(+), 208 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java index 89cc712..4242734 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java @@ -2,6 +2,7 @@ import com.vci.common.exception.VciException; import com.vci.corba.common.PLException; +import com.vci.dto.RoleInfoDTO; import com.vci.dto.RoleRightDTO; import com.vci.dto.RoleRightParamDTO; import com.vci.frameworkcore.enumpck.ResourceControlTypeEnum; @@ -176,4 +177,10 @@ * @throws PLException */ BaseResult saveRoleRight(List<RoleRightParamDTO> roleRightDTOS, String roleId) throws PLException; + /** + * 鑾峰彇鎵�鎺堟潈鐨勬ā鍧楁潈闄� + * @param roleName 鎼滅储鐨勮鑹� + * @return 瑙掕壊鍒楄〃 + */ + List<RoleInfoDTO> getRoleList(String roleName) throws PLException; } diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java index a420aad..1fcb587 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java @@ -12,6 +12,7 @@ import com.vci.corba.framework.data.*; import com.vci.corba.omd.data.BusinessObject; import com.vci.corba.portal.data.PLUILayout; +import com.vci.dto.RoleInfoDTO; import com.vci.dto.RoleRightDTO; import com.vci.dto.RoleRightParamDTO; import com.vci.frameworkcore.compatibility.ISmFunctionQueryService; @@ -531,6 +532,7 @@ menuVO.setSort((int) funcObj.seq); findChildAuthFunctionVO(menuVO, isAll); functionVO.getChildren().add(menuVO); + functionVO.setHasChildren(true); } }else if(type == 2){ FuncOperationInfo[] infos = platformClientUtil.getFrameworkService().getFuncOperationByModule(functionVO.getId(), "", true); @@ -549,6 +551,7 @@ menuVO.setIsValid(info.isValid); menuVO.setHasChildren(false); functionVO.getChildren().add(menuVO); + functionVO.setHasChildren(true); } }else{ functionVO.setHasChildren(false); @@ -580,15 +583,13 @@ public List<String> getSysModelAuth(String roleId) throws PLException { RoleRightInfo[] roleRightList = platformClientUtil.getFrameworkService().getRoleRightList(roleId, WebUtil.getCurrentUserId()); - Map<String, Long> authMap = Arrays.stream(roleRightList).collect(Collectors.toMap(e -> e.funcId, e -> e.rightValue)); + Map<String, Long> authMap = Arrays.stream(roleRightList).collect(Collectors.toMap(e -> e.funcId, e -> e.rightValue, + (existing, replacement) -> existing)); String parentId; SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException(); boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId()); if (adminOrDeveloperOrRoot) { //绯荤粺鑿滃崟 - parentId = SYSTEMMANAGMENTNODE; - } else if (rightControlUtil.isThreeAdminCurUser()) { - //涓夊憳杩斿洖绠$悊鍔熻兘妯″潡鐩稿叧鐨勮彍鍗� parentId = SYSTEMMANAGMENTNODE; } else { //鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗� @@ -683,6 +684,32 @@ throw new PLException("500", new String[]{"鍔熻兘妯″潡鎺堟潈澶辫触锛�"}); } return BaseResult.success(); + } + /** + * 鑾峰彇鎵�鎺堟潈鐨勬ā鍧楁潈闄� + * @param roleName 鎼滅储鐨勮鑹� + * @return 瑙掕壊鍒楄〃 + */ + @Override + public List<RoleInfoDTO> getRoleList(String roleName) throws PLException { + RoleInfo[] roleInfos = platformClientUtil.getFrameworkService().fetchRoleInfoByUserType(WebUtil.getCurrentUserId()); + List<RoleInfoDTO> dtos = new ArrayList<>(); + for (RoleInfo roleInfo : roleInfos) { + if(StringUtils.isBlank(roleName) || roleInfo.name.indexOf(roleName) != -1) { + RoleInfoDTO dto = new RoleInfoDTO(); + dto.setName(roleInfo.name); + dto.setDescription(roleInfo.description); + dto.setId(roleInfo.id); + dto.setGrantor(roleInfo.grantor); + dto.setType(roleInfo.type); + dto.setCreateTime(roleInfo.createTime); + dto.setCreateUser(roleInfo.createUser); + dto.setUpdateTime(roleInfo.updateTime); + dto.setUpdateUser(roleInfo.updateUser); + dtos.add(dto); + } + } + return dtos; } private long countRightValue(List<RoleRightParamDTO> dtos){ @@ -1075,9 +1102,6 @@ String parentId; if (adminOrDeveloperOrRoot) { //绯荤粺鑿滃崟 - parentId = SYSTEMMANAGMENTNODE; - } else if (rightControlUtil.isThreeAdminCurUser()) { - //涓夊憳杩斿洖绠$悊鍔熻兘妯″潡鐩稿叧鐨勮彍鍗� parentId = SYSTEMMANAGMENTNODE; } else { //鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗� diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java index 858f465..98b5e18 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java @@ -4,6 +4,7 @@ import com.vci.corba.common.PLException; import com.vci.corba.framework.data.FuncOperationInfo; import com.vci.corba.framework.data.OperateInfo; +import com.vci.dto.RoleInfoDTO; import com.vci.dto.RoleRightDTO; import com.vci.dto.RoleRightParamDTO; import com.vci.frameworkcore.compatibility.ISmFunctionQueryService; @@ -110,6 +111,23 @@ } /** + * 瑙掕壊鍒楄〃 + * @param roleName 鎼滅储鐨勮鑹� + * @return 瑙掕壊鍒楄〃 + */ + @GetMapping("/getRoleList") + public BaseResult<List<RoleInfoDTO>> getRoleList(String roleName) { + try { + return BaseResult.dataList(functionQueryService.getRoleList(roleName)); + }catch (Exception e){ + e.printStackTrace(); + String errorMsg = "鏌ヨ鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+ VciBaseUtil.getExceptionMessage(e); + logger.error(errorMsg); + throw new VciBaseException(errorMsg); + } + } + + /** * 淇濆瓨鎺堟潈鐨勬ā鍧� * @param roleRightDTOS 鐢ㄦ埛閫夋嫨鎺堟潈妯″潡淇℃伅 * @param roleId 瑙掕壊涓婚敭 diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java index fd3d7b9..1030cb5 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java @@ -127,6 +127,7 @@ PLActionCls[] clses = platformClientUtil.getUIService().getPLActionClsArray(); PLActionClsDTO treDto = new PLActionClsDTO(); treDto.setName("Action鍒嗙被"); + treDto.setId("root"); Map<String, List<PLActionCls>> allDataMap = Arrays.stream(clses).collect(Collectors.groupingBy(pl -> pl.pid)); for (PLActionCls cls : clses) { @@ -134,7 +135,7 @@ PLActionClsDTO parentDto = new PLActionClsDTO(); parentDto.setId(cls.id); parentDto.setName(cls.name); - parentDto.setPid(cls.pid); + parentDto.setPid("root"); parentDto.setDescription(cls.description); parentDto.setCreator(cls.creator); parentDto.setCreateTime(cls.createTime); @@ -186,7 +187,7 @@ Constraint[] consArray ; if(StringUtils.isNotBlank(dto.getPlactioncls())){ consArray = new Constraint[7]; - consArray[6] = new Constraint("plactioncls", dto.getPlactioncls()); + consArray[6] = new Constraint("plactioncls", dto.getPlactioncls().equals("root") ? "": dto.getPlactioncls()); }else { consArray = new Constraint[6]; } diff --git a/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue b/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue index 9122bf3..fad37a7 100644 --- a/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue +++ b/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue @@ -1,220 +1,222 @@ <template> - <el-form class="login-form" - status-icon - :rules="loginRules" - ref="loginForm" + <el-form ref="loginForm" :model="loginForm" + :rules="loginRules" + class="login-form" label-width="0" - > + status-icon + > -<!-- <el-form-item prop="selectInput">--> -<!-- <el-select v-model="loginForm.value" placeholder="璇烽�夋嫨缁勭粐" style="width: 326px" @change="selectchange">--> -<!-- <i slot="prefix" class="el-icon-s-operation"/>--> -<!-- <el-option--> -<!-- v-for="(item,index) in loginForm.region"--> -<!-- :key="index"--> -<!-- :label="item.TENANT_NAME"--> -<!-- :value="item.TENANT_ID">--> -<!-- </el-option>--> -<!-- </el-select>--> -<!-- </el-form-item>--> - <el-form-item prop="username"> - <el-input size="small" - @keyup.enter.native="handleLogin" - v-model="loginForm.username" - auto-complete="off" - :placeholder="$t('login.username')"> - <i slot="prefix" class="icon-yonghu" style="color: white"/> - </el-input> - </el-form-item> - <el-form-item prop="password"> - <el-input size="small" - @keyup.enter.native="handleLogin" - :type="passwordType" - v-model="loginForm.password" - auto-complete="off" - :placeholder="$t('login.password')"> - <i class="el-icon-view el-input__icon" slot="suffix" @click="showPassword" style="color: white"/> - <i slot="prefix" class="icon-mima" style="color: white"/> - </el-input> - </el-form-item> + <!-- <el-form-item prop="selectInput">--> + <!-- <el-select v-model="loginForm.value" placeholder="璇烽�夋嫨缁勭粐" style="width: 326px" @change="selectchange">--> + <!-- <i slot="prefix" class="el-icon-s-operation"/>--> + <!-- <el-option--> + <!-- v-for="(item,index) in loginForm.region"--> + <!-- :key="index"--> + <!-- :label="item.TENANT_NAME"--> + <!-- :value="item.TENANT_ID">--> + <!-- </el-option>--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <el-form-item prop="username"> + <el-input v-model="loginForm.username" + :placeholder="$t('login.username')" + auto-complete="off" + size="small" + @keyup.enter.native="handleLogin"> + <i slot="prefix" class="icon-yonghu" style="color: white"/> + </el-input> + </el-form-item> + <el-form-item prop="password"> + <el-input v-model="loginForm.password" + :placeholder="$t('login.password')" + :type="passwordType" + auto-complete="off" + size="small" + @keyup.enter.native="handleLogin"> + <i slot="suffix" class="el-icon-view el-input__icon" style="color: white" @click="showPassword"/> + <i slot="prefix" class="icon-mima" style="color: white"/> + </el-input> + </el-form-item> - <el-form-item> - <el-button type="primary" - size="small" - @click.native.prevent="handleLogin" - class="login-submit">{{$t('login.submit')}} - </el-button> - </el-form-item> - - + <el-form-item> + <el-button class="login-submit" + size="small" + type="primary" + @click.native.prevent="handleLogin">{{ $t('login.submit') }} + </el-button> + </el-form-item> </el-form> </template> <script> - import {mapGetters} from "vuex"; - import {info} from "@/api/system/tenant"; - import {getTopUrl} from "@/util/util"; +import {mapGetters} from "vuex"; +import {info} from "@/api/system/tenant"; +import {getTopUrl} from "@/util/util"; - export default { - name: "userlogin", - data() { - return { - tenantMode: this.website.tenantMode, - ButtonList:[], - loginForm: { - //绉熸埛ID - tenantId: "000000", - //閮ㄩ棬ID - deptId: "", - //瑙掕壊ID - roleId: "", - //鐢ㄦ埛鍚� - username: "admin", - //瀵嗙爜 - password: "", - selectInput:'', - //涓嬫媺input鏁版嵁 - value:'绠$悊缁�', - //涓嬫媺鑿滃崟 - region:[], - //璐﹀彿绫诲瀷 - type: "account", - //楠岃瘉鐮佺殑绱㈠紩 - key: "", - //棰勫姞杞界櫧鑹茶儗鏅� - image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", +export default { + name: "userlogin", + data() { + return { + tenantMode: this.website.tenantMode, + ButtonList: [], + loginForm: { + //绉熸埛ID + tenantId: "000000", + //閮ㄩ棬ID + deptId: "", + //瑙掕壊ID + roleId: "", + //鐢ㄦ埛鍚� + username: "admin", + //瀵嗙爜 + password: "", + selectInput: '', + //涓嬫媺input鏁版嵁 + value: '绠$悊缁�', + //涓嬫媺鑿滃崟 + region: [], + //璐﹀彿绫诲瀷 + type: "account", + //楠岃瘉鐮佺殑绱㈠紩 + key: "", + //棰勫姞杞界櫧鑹茶儗鏅� + image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", - }, - value: { - selectInput: [ - {required: true, message: "璇烽�夋嫨缁勭粐", trigger: "blur"} - ], - username: [ - {required: true, message: "璇疯緭鍏ョ敤鎴峰悕", trigger: "blur"} - ], - password: [ - {required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur"}, - {min: 1, message: "瀵嗙爜闀垮害鏈�灏戜负6浣�", trigger: "blur"} - ] - }, - passwordType: "password", - userBox: false, - userForm: { - deptId: '', - roleId: '' - }, - }; - }, - created() { - // this.getTenant(); - }, - mounted() { - //鍦╩ounted鑾峰彇棣栭〉涓嬫媺鑿滃崟鏁版嵁 - /*this.$axios.get('/api/blade-system/tenant/tenant-map').then(res=>{ - if(res.data.code == 200){ - this.loginForm.region=res.data.data - } - })*/ - }, - watch: { - 'loginForm.deptId'() { - const column = this.findObject(this.userOption.column, "deptId"); - if (this.loginForm.deptId.includes(",")) { - column.dicUrl = `/api/blade-system/dept/select?deptId=${this.loginForm.deptId}`; - column.display = true; - } else { - column.dicUrl = ''; - } }, - 'loginForm.roleId'() { - const column = this.findObject(this.userOption.column, "roleId"); - if (this.loginForm.roleId.includes(",")) { - column.dicUrl = `/api/blade-system/role/select?roleId=${this.loginForm.roleId}`; - column.display = true; - } else { - column.dicUrl = ''; - } + value: { + selectInput: [ + {required: true, message: "璇烽�夋嫨缁勭粐", trigger: "blur"} + ], + username: [ + {required: true, message: "璇疯緭鍏ョ敤鎴峰悕", trigger: "blur"} + ], + password: [ + {required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur"}, + {min: 1, message: "瀵嗙爜闀垮害鏈�灏戜负6浣�", trigger: "blur"} + ] + }, + passwordType: "password", + userBox: false, + userForm: { + deptId: '', + roleId: '' + }, + }; + }, + created() { + // this.getTenant(); + }, + mounted() { + //鍦╩ounted鑾峰彇棣栭〉涓嬫媺鑿滃崟鏁版嵁 + /*this.$axios.get('/api/blade-system/tenant/tenant-map').then(res=>{ + if(res.data.code == 200){ + this.loginForm.region=res.data.data + } + })*/ + }, + watch: { + 'loginForm.deptId'() { + const column = this.findObject(this.userOption.column, "deptId"); + if (this.loginForm.deptId.includes(",")) { + column.dicUrl = `/api/blade-system/dept/select?deptId=${this.loginForm.deptId}`; + column.display = true; + } else { + column.dicUrl = ''; } }, - computed: { - ...mapGetters(["tagWel", "userInfo"]) - }, - props: [], - methods: { - // 缁戝畾涓嬫媺鑿滃崟鍔ㄦ�両D - selectchange(value) { - this.loginForm.tenantId=value - console.log(this.loginForm.tenantId) - }, - showPassword() { - this.passwordType === "" - ? (this.passwordType = "password") - : (this.passwordType = ""); - }, - submitLogin (form, done) { - if (form.deptId !== '') { - this.loginForm.deptId = form.deptId; - } - if (form.roleId !== '') { - this.loginForm.roleId = form.roleId; - } - this.handleLogin(); - done(); - }, - handleLogin() { - this.$router.push({path: this.tagWel.value}); - this.$refs.loginForm.validate(valid => { - if (valid) { - const loading = this.$loading({ - lock: true, - text: '鐧诲綍涓�,璇风◢鍚庛�傘�傘��', - spinner: "el-icon-loading" - }); - this.$store.dispatch("LoginByUsername", this.loginForm).then((data) => { - if(data.obj.passwordInfo){ - this.$message.warning(data.obj.passwordInfo); - } - if (this.website.switchMode) { - const deptId = this.userInfo.deptOid; - const roleId = this.userInfo.userOid; - if (deptId.includes(",") || roleId.includes(",")) { - this.loginForm.deptId = deptId; - this.loginForm.roleId = roleId; - this.userBox = true; - this.$store.dispatch("LogOut").then(() => { - loading.close(); - }); - return false; - } - }; - this.$router.push({path: this.tagWel.value}); - loading.close(); - }).catch((err) => { - console.log('err',err) - loading.close(); - - }); - } - }); - }, - getTenant() { - let domain = getTopUrl(); - // 涓存椂鎸囧畾鍩熷悕锛屾柟渚挎祴璇� - //domain = "https://bladex.vip"; - info(domain).then(res => { - const data = res.data; - if (data.success && data.data.tenantId) { - this.tenantMode = false; - this.loginForm.tenantId = data.data.tenantId; - this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`; - } - }) + 'loginForm.roleId'() { + const column = this.findObject(this.userOption.column, "roleId"); + if (this.loginForm.roleId.includes(",")) { + column.dicUrl = `/api/blade-system/role/select?roleId=${this.loginForm.roleId}`; + column.display = true; + } else { + column.dicUrl = ''; } } - }; + }, + computed: { + ...mapGetters(["tagWel", "userInfo"]) + }, + props: [], + methods: { + // 缁戝畾涓嬫媺鑿滃崟鍔ㄦ�両D + selectchange(value) { + this.loginForm.tenantId = value + }, + showPassword() { + this.passwordType === "" + ? (this.passwordType = "password") + : (this.passwordType = ""); + }, + submitLogin(form, done) { + if (form.deptId !== '') { + this.loginForm.deptId = form.deptId; + } + if (form.roleId !== '') { + this.loginForm.roleId = form.roleId; + } + this.handleLogin(); + done(); + }, + handleLogin() { + if (!this.loginForm.password) { + this.$message.error('璇疯緭鍏ュ瘑鐮�'); + return; + } + this.$router.push({path: this.tagWel.value}); + this.$refs.loginForm.validate(valid => { + if (valid) { + const loading = this.$loading({ + lock: true, + text: '鐧诲綍涓�,璇风◢鍚庛�傘�傘��', + spinner: "el-icon-loading" + }); + this.$store.dispatch("LoginByUsername", this.loginForm).then((data) => { + if (data.obj.passwordInfo) { + this.$message.warning(data.obj.passwordInfo); + } + if (this.website.switchMode) { + const deptId = this.userInfo.deptOid; + const roleId = this.userInfo.userOid; + if (deptId.includes(",") || roleId.includes(",")) { + this.loginForm.deptId = deptId; + this.loginForm.roleId = roleId; + this.userBox = true; + this.$store.dispatch("LogOut").then(() => { + loading.close(); + }); + return false; + } + } + ; + this.$router.push({path: this.tagWel.value}); + loading.close(); + }).catch((err) => { + console.log('err', err) + loading.close(); + + }); + } + }); + }, + getTenant() { + let domain = getTopUrl(); + // 涓存椂鎸囧畾鍩熷悕锛屾柟渚挎祴璇� + //domain = "https://bladex.vip"; + info(domain).then(res => { + const data = res.data; + if (data.success && data.data.tenantId) { + this.tenantMode = false; + this.loginForm.tenantId = data.data.tenantId; + this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`; + } + }) + } + } +}; </script> <style> -- Gitblit v1.9.3