From 03c38da7555b69cb598e534c97fa25bd5385701c Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期二, 29 十月 2024 17:55:50 +0800 Subject: [PATCH] 表单定义权限控制和属性权限&&成员管理添加密级&&首页修改密码&&登录判断过期停用修改密码后跳转首页 --- Source/plt-web/plt-web-ui/src/page/login/userlogin.vue | 106 ++++++++++++++- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue | 129 +++++++++++++++++ Source/plt-web/plt-web-ui/src/store/modules/user.js | 12 - Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue | 59 ++++--- Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js | 9 + Source/plt-web/plt-web-ui/src/views/system/user/option.js | 12 + Source/plt-web/plt-web-ui/src/page/index/top/index.vue | 80 ++++++----- 7 files changed, 318 insertions(+), 89 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js b/Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js index 5d6e885..8476bc8 100644 --- a/Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js +++ b/Source/plt-web/plt-web-ui/src/api/UI/formDefine/api.js @@ -86,6 +86,15 @@ }) } +// 琛ㄦ牸鏌ヨ妯℃澘涓嬫媺鏌ヨ +export function refPersonOrgTree(params) { + return request({ + url: "/api/userQueryController/refPersonOrgTree", + method: "get", + params + }) +} + const cloneObj = { "clonePortalVIDTOList": [{ "viName": "ppartProp",//--鍏嬮殕鐨勮〃鍗�/琛ㄦ牸鍚嶇О 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 ca8584f..4f38b79 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 @@ -27,15 +27,15 @@ <top-color></top-color> </div> </el-tooltip> -<!-- 閿欒鏃ュ織--> -<!-- <el-tooltip v-if="showDebug"--> -<!-- :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')"--> -<!-- effect="dark"--> -<!-- placement="bottom">--> -<!-- <div class="top-bar__item">--> -<!-- <top-logs></top-logs>--> -<!-- </div>--> -<!-- </el-tooltip>--> + <!-- 閿欒鏃ュ織--> + <!-- <el-tooltip v-if="showDebug"--> + <!-- :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')"--> + <!-- effect="dark"--> + <!-- placement="bottom">--> + <!-- <div class="top-bar__item">--> + <!-- <top-logs></top-logs>--> + <!-- </div>--> + <!-- </el-tooltip>--> <el-tooltip v-if="showLock" :content="$t('navbar.lock')" effect="dark" @@ -52,14 +52,14 @@ <top-theme></top-theme> </div> </el-tooltip> -<!-- 娑堟伅閫氱煡--> -<!-- <el-tooltip :content="$t('navbar.notice')"--> -<!-- effect="dark"--> -<!-- placement="bottom">--> -<!-- <div class="top-bar__item top-bar__item--show">--> -<!-- <top-notice></top-notice>--> -<!-- </div>--> -<!-- </el-tooltip>--> + <!-- 娑堟伅閫氱煡--> + <!-- <el-tooltip :content="$t('navbar.notice')"--> + <!-- effect="dark"--> + <!-- placement="bottom">--> + <!-- <div class="top-bar__item top-bar__item--show">--> + <!-- <top-notice></top-notice>--> + <!-- </div>--> + <!-- </el-tooltip>--> <el-tooltip :content="$t('navbar.language')" effect="dark" placement="bottom"> @@ -112,8 +112,10 @@ :visible.sync="passwordVisible" append-to-body="true" class="avue-dialog" + style="margin-top: -15vh" title="淇敼瀵嗙爜" - width="50%"> + width="50%" + @close="passwordClose"> <avue-form ref="form" v-model="passwordForm" :option="passwordOption" @submit="submitSwitch"/> </el-dialog> </div> @@ -151,14 +153,14 @@ passwordVisible: false, passwordForm: {}, passwordOption: { - submitText:'淇濆瓨', + submitText: '淇濆瓨', column: [ { label: '鐧婚檰瀵嗙爜', prop: 'oldPassword', span: 24, - labelWidth:"15%", - type:'password', + labelWidth: "15%", + type: 'password', rules: [ { required: true, @@ -171,8 +173,8 @@ label: '鏂扮櫥闄嗗瘑鐮�', prop: 'password', span: 24, - labelWidth:"15%", - type:'password', + labelWidth: "15%", + type: 'password', rules: [ { required: true, @@ -185,8 +187,8 @@ label: '鏂板瘑鐮佺櫥闄嗙‘璁�', prop: 'confirmPassword', span: 24, - labelWidth:"15%", - type:'password', + labelWidth: "15%", + type: 'password', rules: [ { required: true, @@ -300,28 +302,33 @@ }, submitSwitch(form, done) { let userInfo = JSON.parse(localStorage.getItem('saber-userInfo')); - let params = { - userOid:userInfo.content.userOid, - oldPassword:func.encryptData(form.oldPassword,'daliantan0v0vcip'), - password:func.encryptData(form.password,'daliantan0v0vcip'), - confirmPassword:func.encryptData(form.confirmPassword,'daliantan0v0vcip'), + 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){ + 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); }) - // this.$store.dispatch("refreshToken", form).then(() => { - // this.userBox = false; - // this.$router.push({path: "/"}); - // }) done(); }, + + // 鍏抽棴淇敼瀵嗙爜瀵硅瘽妗� + passwordClose() { + this.$refs.form.resetFields(); + }, + logout() { this.$confirm(this.$t("logoutTip"), this.$t("tip"), { confirmButtonText: this.$t("submitText"), @@ -329,7 +336,6 @@ type: "warning" }).then(() => { this.$store.dispatch("LogOut").then(() => { - console.log('123'); resetRouter(); this.$router.push({path: "/login"}); }); 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 fad37a7..48701ab 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 @@ -46,7 +46,16 @@ @click.native.prevent="handleLogin">{{ $t('login.submit') }} </el-button> </el-form-item> - + <el-dialog + v-dialogDrag + :visible.sync="passwordVisible" + append-to-body="true" + class="avue-dialog" + style="margin-top: -15vh" + title="淇敼瀵嗙爜" + width="50%"> + <avue-form ref="changeForm" v-model="passwordForm" :option="passwordOption" @submit="submitSwitch"/> + </el-dialog> </el-form> </template> @@ -55,11 +64,63 @@ import {mapGetters} from "vuex"; import {info} from "@/api/system/tenant"; import {getTopUrl} from "@/util/util"; +import func from "@/util/func"; +import {changePassword} from "@/api/user"; export default { name: "userlogin", data() { return { + userName:'', + passwordVisible: false, + passwordForm: {}, + passwordOption: { + submitText: '淇濆瓨', + column: [ + { + label: '鐧婚檰瀵嗙爜', + prop: 'oldPassword', + span: 24, + labelWidth: "15%", + type: 'password', + rules: [ + { + required: true, + message: '璇疯緭鍏ョ櫥闄嗗瘑鐮�', + trigger: 'blur' + } + ] + }, + { + label: '鏂扮櫥闄嗗瘑鐮�', + prop: 'password', + span: 24, + labelWidth: "15%", + type: 'password', + rules: [ + { + required: true, + message: '璇疯緭鍏ユ柊鐧婚檰瀵嗙爜', + trigger: 'blur' + } + ] + }, + { + label: '鏂板瘑鐮佺櫥闄嗙‘璁�', + prop: 'confirmPassword', + span: 24, + labelWidth: "15%", + type: 'password', + rules: [ + { + required: true, + message: '璇风‘璁ょ櫥闄嗗瘑鐮�', + trigger: 'blur' + } + ] + } + ] + }, tenantMode: this.website.tenantMode, ButtonList: [], loginForm: { @@ -175,9 +236,14 @@ spinner: "el-icon-loading" }); this.$store.dispatch("LoginByUsername", this.loginForm).then((data) => { - if (data.obj.passwordInfo) { - this.$message.warning(data.obj.passwordInfo); + if (data.obj.failCode !== 'loginSuccess') { + // console.log('data', data); + this.$message.error(data.msg); + if (data.obj.mustChangePassword) { + this.passwordVisible = true; + } } + if (this.website.switchMode) { const deptId = this.userInfo.deptOid; const roleId = this.userInfo.userOid; @@ -190,14 +256,11 @@ }); return false; } - } - ; + }; this.$router.push({path: this.tagWel.value}); loading.close(); }).catch((err) => { - console.log('err', err) loading.close(); - }); } }); @@ -214,7 +277,34 @@ this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`; } }) - } + }, + + submitSwitch(form, done) { + let userInfo = JSON.parse(localStorage.getItem('saber-userInfo')); + + let params = { + userName: this.loginForm.username, + 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('淇敼鎴愬姛锛屽嵆灏嗚烦杞埌棣栭〉'); + this.passwordVisible = false; + this.$refs.changeForm.resetFields(); + this.$store.dispatch("LoginByUsername",{...this.loginForm,password:form.confirmPassword}).then(data => { + if (data.obj.failCode !== 'loginSuccess') { + this.$message.error(data.msg); + } + this.$router.push({path: this.tagWel.value}); + }) + } + }).catch(err => { + console.log(err); + }) + done(); + }, } }; </script> 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 99a59e2..d4a78eb 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 @@ -66,10 +66,7 @@ let passwordDes = func.encryptData(userInfo.password,'daliantan0v0vcip') loginByUsername(userInfo.deptId, userInfo.roleId, userInfo.username,passwordDes, userInfo.type, userInfo.key,).then(res => { const data = res.data; - if (data.code === 200) { - // commit('SET_TOKEN', data.obj.sessionInfo.token); - // commit('SET_REFRESH_TOKEN', data.obj.sessionInfo.token); - + if (data.obj.failCode === 'loginSuccess') { commit('SET_TOKEN', data.obj.tokenVO.accessToken); commit('SET_REFRESH_TOKEN', data.obj.tokenVO.accessToken); commit('DEL_ALL_TAG'); @@ -81,15 +78,10 @@ }).catch(err => { console.log(err) }) - - } else { - Message({ - message: data.msg, - type: 'error' - }) } resolve(data); }).catch(error => { + // console.log(error) reject(error); }) }) 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 befcded..b49b2bd 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 @@ -21,7 +21,9 @@ <el-button icon="el-icon-plus" plain size="small" type="primary" @click="rowSaveHandlerClick">鍒涘缓</el-button> <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">鍒犻櫎</el-button> <el-button icon="el-icon-view" plain size="small" type="primary" @click="chekView">鏌ョ湅浣跨敤鑼冨洿</el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadTemplateHandler">涓嬭浇瀵煎叆妯℃澘</el-button> + <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadTemplateHandler"> + 涓嬭浇瀵煎叆妯℃澘 + </el-button> <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadHandler">瀵煎叆</el-button> <el-button icon="el-icon-download" plain size="small" type="primary" @click="downLoadHandler">瀵煎嚭</el-button> </template> @@ -53,7 +55,7 @@ 鏍囩 </template> <div style="width: 330px"> - {{ lastItem.name }} + {{ lastItem.name }} </div> </el-descriptions-item> <el-descriptions-item> @@ -61,7 +63,7 @@ 鎻忚堪 </template> <div style="width: 330px"> - {{ lastItem.description }} + {{ lastItem.description }} </div> </el-descriptions-item> <el-descriptions-item> @@ -81,9 +83,9 @@ 鍏佽涓虹┖ </template> <div style="width: 330px"> - <el-tag :type="lastItem.nullableFlag ? 'success' : 'danger'"> - {{ lastItem.nullableFlag ? '鏄�' : '鍚�' }} - </el-tag> + <el-tag :type="lastItem.nullableFlag ? 'success' : 'danger'"> + {{ lastItem.nullableFlag ? '鏄�' : '鍚�' }} + </el-tag> </div> </el-descriptions-item> <el-descriptions-item v-if="accuracy"> @@ -97,7 +99,7 @@ 闀垮害 </template> <div style="width: 330px"> - {{ lastItem.attrLength }} + {{ lastItem.attrLength }} </div> </el-descriptions-item> <el-descriptions-item> @@ -105,7 +107,7 @@ 榛樿鍊� </template> <div style="width: 330px"> - {{ lastItem.defaultValue }} + {{ lastItem.defaultValue }} </div> </el-descriptions-item> </el-descriptions> @@ -118,7 +120,7 @@ 褰撳墠绫诲瀷 </template> <div style="width: 345px"> - {{ lastItem.version ? '閾炬帴绫诲瀷' : '涓氬姟绫诲瀷' }} + {{ lastItem.version ? '閾炬帴绫诲瀷' : '涓氬姟绫诲瀷' }} </div> </el-descriptions-item> <el-descriptions-item> @@ -126,7 +128,7 @@ 褰撳墠绫诲瀷鍊� </template> <div style="width: 345px"> - {{ lastItem.version ? lastItem.linkTypeName : lastItem.btmTypeId }} + {{ lastItem.version ? lastItem.linkTypeName : lastItem.btmTypeId }} </div> </el-descriptions-item> <el-descriptions-item v-if="lastItem.version"> @@ -134,7 +136,7 @@ 褰撳墠鐗堟湰娆� </template> <div style="width: 345px"> - {{ lastItem.version }} + {{ lastItem.version }} </div> </el-descriptions-item> <el-descriptions-item> @@ -142,9 +144,9 @@ 浣跨敤鏋氫妇 </template> <div style="width: 345px"> - <el-tag :type="lastItem.enumId ? 'success' : 'danger'"> - {{ lastItem.enumId ? '鏄�' : '鍚�' }} - </el-tag> + <el-tag :type="lastItem.enumId ? 'success' : 'danger'"> + {{ lastItem.enumId ? '鏄�' : '鍚�' }} + </el-tag> </div> </el-descriptions-item> <el-descriptions-item> @@ -152,7 +154,7 @@ 褰撳墠鏋氫妇绫诲瀷 </template> <div style="width: 345px"> - {{ lastItem.enumId }} + {{ lastItem.enumId }} </div> </el-descriptions-item> <el-descriptions-item> @@ -175,9 +177,9 @@ 浣跨敤鏋氫妇 </template> <div style="width: 330px"> - <el-tag :type="lastItem.enumFlag ? 'success' : 'danger'"> - {{ lastItem.enumFlag ? '鏄�' : '鍚�' }} - </el-tag> + <el-tag :type="lastItem.enumFlag ? 'success' : 'danger'"> + {{ lastItem.enumFlag ? '鏄�' : '鍚�' }} + </el-tag> </div> </el-descriptions-item> <el-descriptions-item> @@ -185,7 +187,7 @@ 鏋氫妇绫诲瀷 </template> <div style="width: 330px"> - {{ lastItem.enumFlag }} + {{ lastItem.enumFlag }} </div> </el-descriptions-item> <el-descriptions-item> @@ -376,7 +378,7 @@ <el-button size="mini" @click="operationHandler('<=')"> <=</el-button> <el-button size="mini" @click="operationHandler('=')"> =</el-button> <el-button size="mini" @click="operationHandler('!=')"> !=</el-button> - <el-button size="mini" @click="operationHandler('()')"> ()</el-button> + <el-button size="mini" @click="operationHandler('()')"> ([])</el-button> </div> </el-form-item> <el-form-item :label="form.enumSwitch ? '褰撳墠鏋氫妇鍊硷細' : '褰撳墠鍊煎煙锛�'" prop="rangeValue"> @@ -400,7 +402,7 @@ <el-button size="mini" @click="operationHandler('<=')"> <=</el-button> <el-button size="mini" @click="operationHandler('=')"> =</el-button> <el-button size="mini" @click="operationHandler('!=')"> !=</el-button> - <el-button size="mini" @click="operationHandler('()')"> ()</el-button> + <el-button size="mini" @click="operationHandler('()')">([])</el-button> </div> </el-form-item> <el-form-item :label="form.enumSwitch ? '褰撳墠鏋氫妇鍊硷細' : '褰撳墠鍊煎煙锛�'" prop="rangeValue"> @@ -599,7 +601,7 @@ addBtn: false, editBtn: false, delBtn: false, - menuWidth:160, + menuWidth: 160, column }, tableLoading: false, @@ -991,8 +993,13 @@ // 澶勭悊 '()' 杩愮畻绗︾殑鎯呭喌 if (val === '()') { + let regex = /[,\[\]()]+/g; + let firstValue = this.form.enumAddValue[0]; + let lastValue = this.form.enumAddValue[(this.form.enumAddValue.length - 1)]; // 鍒囧壊 enumAddValue 鐨勯�楀彿 - let values = this.form.enumAddValue.split(',').map(item => item.trim()); + let values = this.form.enumAddValue.split(regex).map(item => item.trim()).filter(item => item !== ""); + ; + // 妫�鏌ユ槸鍚︽湁鏈夋晥鐨勫�� if (values.length < 2 || values.some(item => item === '')) { @@ -1015,7 +1022,7 @@ } // 鏋勫缓 newValue 鐨勫舰寮� (鍊�1,鍊�2) - let newValue = `(${values.join(',')})`; + let newValue = `${firstValue}${values.join(',')}${lastValue}`; // 妫�鏌ユ柊鐨勫�兼槸鍚﹀凡瀛樺湪 if (currentRangeArray.includes(newValue)) { @@ -1244,7 +1251,7 @@ this.$refs.form.validate((valid) => { if (valid) { if (this.dialogTitle === 'add') { - this.form.range = this.form.rangeValue.replace(/\n/g, ';'); + this.form.range = this.form.rangeValue ? this.form.rangeValue.replace(/\n/g, ';') : ''; if (this.form.attributeSelectType === 'business') { this.form.btmTypeId = this.form.referValue; } else { @@ -1260,7 +1267,7 @@ }) } if (this.dialogTitle === 'edit') { - this.form.range = this.form.rangeValue.replace(/\n/g, ';'); + this.form.range = this.form.rangeValue ? this.form.rangeValue.replace(/\n/g, ';') : ''; if (this.form.attributeSelectType === 'business') { this.form.btmTypeId = this.form.referValue; } else { diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue index db8d1af..0e8b0c5 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/formDialog.vue @@ -244,7 +244,9 @@ <el-form-item label="鏉冮檺鎺у埗"> <div style="display: flex;align-items: center"> <el-input v-model="form.itemRight" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input> - <el-button plain size="mini" style="margin-left: 3px" type="success">閫夋嫨</el-button> + <el-button plain size="mini" style="margin-left: 3px" type="success" @click="authClickHandler"> + 閫夋嫨 + </el-button> </div> </el-form-item> </el-col> @@ -517,10 +519,12 @@ </el-col> <el-col :span="24"> - <el-form-item label="鏉冮檺鎺у埗"> + <el-form-item label="灞炴�ф潈闄�"> <div style="display: flex;align-items: center"> <el-input v-model="customForm.itemRight" placeholder="璇疯緭鍏ュ唴瀹�" size="mini"></el-input> - <el-button plain size="mini" style="margin-left: 3px" type="success">閫夋嫨</el-button> + <el-button plain size="mini" style="margin-left: 3px" type="success" @click="customAuthClickHandler"> + 閫夋嫨 + </el-button> </div> </el-form-item> </el-col> @@ -771,14 +775,42 @@ </el-row> </el-form> </el-dialog> + + <el-dialog + v-dialogDrag + :visible.sync="authVisible" + append-to-body="true" + class="avue-dialog" + title="鏉冮檺鎺у埗-浜哄憳鍒楄〃" + width="60%" + @close="authDialogClose"> + <div style="height: 650px"> + <div style="height: 600px;"> + <avue-tree :key="refresh" ref="authTree" v-model="treeAuthForm" :data="treeAuthData" :option="treeAuthOption" + @check-change="treeAuthCheckChange"> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span style="font-size: 15px"> + <i class="el-icon-s-promotion"></i> + {{ (node || {}).label }} + </span> + </span> + </avue-tree> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="authDialogClose">鍙� 娑�</el-button> + <el-button type="primary" @click="authDialogSaveHandler">纭� 瀹�</el-button> + </span> + </el-dialog> </el-dialog> </template> <script> -import {getObjTypeQTs, getTreeAttributes, savePortalVI} from "@/api/UI/formDefine/api"; +import {getObjTypeQTs, getTreeAttributes, savePortalVI, refPersonOrgTree} from "@/api/UI/formDefine/api"; import func from "@/util/func"; import basicOption from "@/util/basic-option"; import {gridAttribute} from "@/api/modeling/attributePool/api"; +import {getSysModelTreeMenuByPID} from "@/api/systemModel/mangeModel/api"; export default { name: "formDialog", @@ -800,6 +832,42 @@ }, data() { return { + authType: 'default', + refresh: Math.random(), + treeAuthOption: { + multiple: true, + height: 'auto', + menu: false, + addBtn: false, + defaultExpandAll: true, + lazy: true, + props: { + label: 'text', + value: 'oid', + children: 'childNodes', + }, + treeLoad: (node, resolve) => { + // console.log(node); + const params = { + 'conditionMap[dataType]': node.data.data, + 'conditionMap[parentId]': node.data.data, + 'conditionMap[orgType]': 'all' + } + refPersonOrgTree(node.level === 0 ? {} : params).then(res => { + resolve(res.data.treeData.map(item => { + return { + ...item, + id: item.id, + name: item.name, + leaf: item.leaf + } + })) + }) + } + }, + treeAuthData: [], + treeAuthForm: {}, + authVisible: false, searchQtNameList: [], customAttrRow: {}, customAttrOption: { @@ -1045,7 +1113,7 @@ text: data.text, oid: data.oid, itemType: 'text', - itemName:data.data.name + itemName: data.data.name } console.log(data); const isDuplicate = this.formList.some(item => item.text === data.text); @@ -1370,6 +1438,57 @@ }) }, + // 鏉冮檺閫夋嫨鎸夐挳 + authClickHandler() { + this.authVisible = true; + }, + + // 鑷畾涔夎〃鍗曢�夋嫨鏉冮檺 + customAuthClickHandler() { + this.authVisible = true; + this.authType = 'attr'; + }, + + // 鏉冮檺鏍戝璇濇鍏抽棴 + authDialogClose() { + this.authVisible = false; + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + }, + + // 鏉冮檺鎺у埗淇濆瓨 + authDialogSaveHandler() { + const filterList = ['root', 'user', 'role', 'department'] + const data = this.$refs.authTree.getCheckedNodes().filter(item => !filterList.includes(item.oid)); + if (!data || data.length <= 0) { + this.$message.error('璇锋鏌ユ槸鍚﹀嬀閫夊瓙鑺傜偣'); + return; + } + + const resultMap = {}; + + data.forEach(item => { + const key = item.parentBtmName; + if (!resultMap[key]) { + resultMap[key] = []; // 鍒濆鍖栨暟缁� + } + resultMap[key].push(item.parentBtmName === 'user' ? item.data.userName : item.data.name); + }); + + // 缁勮瀛楃涓� + const resultString = Object.entries(resultMap).map(([key, oids]) => { + return `${key}=${oids.join(',')}`; // 鐢� , 杩炴帴鍚屼竴绫诲瀷鐨� oid + }).join('&&'); // 鏈�鍚庣敤 && 杩炴帴涓嶅悓绫诲瀷 + + // console.log(resultString); + if (this.authType === 'attr') { + this.customForm.itemRight = resultString; + } else { + this.form.itemRight = resultString; + } + // this.form.itemRight = resultString; + this.authDialogClose(); + } + } } </script> diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/option.js b/Source/plt-web/plt-web-ui/src/views/system/user/option.js index 890f98b..0abfc0a 100644 --- a/Source/plt-web/plt-web-ui/src/views/system/user/option.js +++ b/Source/plt-web/plt-web-ui/src/views/system/user/option.js @@ -4,7 +4,6 @@ prop: 'id', search:true, sortable:true, - editDisabled: true, rules: [ { required: true, @@ -137,7 +136,14 @@ { label: '鎵�灞炲瘑绾�', prop: 'secretGradeText', - display:false, - width: 80 + width: 80, + sortable: true, + type: 'select', + dicUrl: 'api/webEnumController/getEnum?comboxKey=usersecurityenum', + props: { + label: 'value', + value: 'key', + res: "obj", + }, }, ]; -- Gitblit v1.9.3