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