From 134402cea23f11760853dfb25b8a63a3554ce636 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 18 一月 2024 10:59:20 +0800
Subject: [PATCH] 分类授权完善
---
Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue | 125 +++++++++++++++++++++++++++--------------
1 files changed, 81 insertions(+), 44 deletions(-)
diff --git a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
index 3baa5c7..902cabf 100644
--- a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
@@ -16,11 +16,9 @@
:height="tableHeight"
border
class="cus-table"
- @select="handleSelection"
@row-click="handleRowClick"
@select-all="handleSelectionAll"
@selection-change="handleSelectionChange"
- @sort-change="sortChange"
>
<el-table-column
type="selection"
@@ -61,7 +59,7 @@
<el-checkbox
v-if="item.type === 'checkbox'"
v-model="row[item.prop]"
- :disabled="row.allDisabled ? true :typeof row[item.prop] == 'undefined' || typeof row[item.prop] == null">
+ :disabled="row.allDisabled ? true :row[item.code]">
</el-checkbox>
</template>
</el-table-column>
@@ -111,8 +109,8 @@
//褰撳墠閫変腑鐨勮〃鏍艰
selectList: [],
itemKey: '',
- viewStatus: false,
addIndex: Number,
+ currentRow: {}
};
},
watch: {
@@ -163,14 +161,13 @@
getClassifyAuthList({classifyId: this.classifyData.oid, authType: "classify_auth"}).then(res => {
//console.log(res.data.data);
let authDatas = res.data.data;
- console.log('authDatas', authDatas)
if (authDatas.length > 0) {
- authDatas.forEach((authData,index) => {
+ authDatas.forEach((authData, index) => {
let item = {
oid: authData.oid,
roleData: authData.roleId,
classifyItem: this.classifyData.label,
- index:index,
+ index: index,
uuid: uuidv4(),//鐢熸垚鍞竴鐨刬d
}
//灏嗘寜閽缃繘鍘�
@@ -178,12 +175,12 @@
Vue.set(item, data, true);
});
this.classifyAuthData.push(item);
- this.addIndex = this.classifyAuthData.length -1 ;
- // console.log('classifyAuthData', this.classifyAuthData)
+ this.addIndex = this.classifyAuthData.length - 1; //娣诲姞琛屼笅鏍囩瓑浜巆lassifyAuthData鐨勯暱搴�-1
+ this.roleHandlerMethods(authData.roleId, 'create', this.addIndex)
})
}
- this.roleHandlerMethods('', 'create', 0)
});
+ console.log('created', this.classifyAuthData)
});
}
},
@@ -195,39 +192,78 @@
},
methods: {
roleHandlerMethods(id, type, index) {
- if (this.classifyAuthData.length > 0) {
- let roleButtonId = type === 'select' ? id : this.classifyAuthData[0].roleData;
- getButtonsByRoleId({roleId: roleButtonId, code: 'classifyTree'}).then(res => {
- // 鎵惧埌this.classifyAuthButton涓病鏈夊搴旂殑灞炴��
- const filteredItems = this.classifyAuthButton.filter(item => {
- return !res.data.data.find(x => x.id === item.id);
- });
-
- this.classifyAuthHeader.forEach((item) => {
- if (filteredItems.some(x => x.id === item.prop)) {
- this.$nextTick(() => {
-
- if(this.classifyAuthData[index] !== undefined && this.classifyAuthData[index] !== null){
- Object.keys(this.classifyAuthData[index]).forEach((key) => {
- if (item.prop === key) {
- this.classifyAuthData[index] = Object.assign({}, this.classifyAuthData[index], { [key]: undefined });
- if (item.code === "classify_view") {
- this.$set(this.classifyAuthData[index],'allDisabled',true)
- }
- }
- });
- }
- // console.log('classifyAuthData', this.classifyAuthData)
- // console.log('item', item.prop)
- this.itemKey = uuidv4();
- })
- }
- });
- })
+ if (this.classifyAuthData.length < 0) {
+ return;
}
+
+ getButtonsByRoleId({roleId: id, code: 'classifyTree'}).then(res => {
+ // 鎵惧埌this.classifyAuthButton涓病鏈夊搴旂殑灞炴��
+ const filteredItems = this.classifyAuthButton.filter(item => {
+ return !res.data.data.find(x => x.id === item.id);
+ });
+
+ //鎷胯〃鏍煎垪澶村惊鐜拰娌℃湁瀵瑰簲鐨勫睘鎬ц繘琛屾瘮杈�
+ this.classifyAuthHeader.forEach((item) => {
+ if (filteredItems.some(x => x.id === item.prop)) {
+ this.$nextTick(() => {
+ if (this.classifyAuthData[index] !== undefined && this.classifyAuthData[index] !== null) {
+ Object.keys(this.classifyAuthData[index]).forEach((key) => {
+ if (item.prop === key) {
+ // this.classifyAuthData[index] = Object.assign({}, this.classifyAuthData[index], {[key]: undefined});
+ this.$set(this.classifyAuthData[index], item.code, true);
+ }
+ });
+ }
+ })
+ }
+ });
+
+ //娣诲姞 鈥滄煡鐪嬪叏閮ㄧ鐢ㄦ潯浠垛��
+ this.classifyAuthData.forEach((classkey, classIndex) => {
+ if (classkey.classify_view) {
+ this.$set(this.classifyAuthData[classIndex], 'allDisabled', true)
+ }
+ });
+
+ //寮哄埗鍒锋柊琛ㄦ牸
+ this.itemKey = uuidv4();
+ })
},
- selectChange(row,index) {
- this.roleHandlerMethods(row, 'select',index.index);
+ async selectChange(row, currentRow) {
+ try {
+ this.currentRow = currentRow;
+ const res = await getButtonsByRoleId({roleId: row, code: 'classifyTree'});
+
+ const filteredItems = this.classifyAuthButton.filter(item => {
+ return !res.data.data.find(x => x.id === item.id);
+ });
+
+ this.classifyAuthHeader.forEach(item => {
+ const isMatched = filteredItems.some(x => x.id === item.prop);
+ this.$nextTick(() => {
+ if (currentRow) {
+ if (isMatched) {
+ Object.keys(currentRow).forEach(key => {
+ currentRow[item.code] = item.prop === key ? false : true;
+ if (!currentRow.classify_view) {
+ currentRow.allDisabled = false;
+ }
+ });
+ } else {
+ Object.keys(currentRow).forEach(key => {
+ currentRow[item.code] = item.prop === key ? true : false;
+ if (!currentRow.classify_view) {
+ currentRow.allDisabled = false;
+ }
+ });
+ }
+ }
+ this.itemKey = uuidv4(); // 寮哄埗鍒锋柊琛ㄦ牸
+ });
+ });
+ } catch (error) {
+ console.error(error);
+ }
},
// 鍏抽棴瀵硅瘽妗�
closeDialog() {
@@ -240,11 +276,12 @@
this.$message.warning("褰撳墠绉熸埛涓嶅瓨鍦ㄨ鑹蹭俊鎭紒");
return;
}
- this.addIndex++;
+ console.log('this.roleList', this.roleList)
+ this.addIndex++; //鑷畾涔夌敓鎴愭坊鍔犺涓嬫爣
let item = {
roleData: this.roleList[0].id,
classifyItem: this.classifyData.label,
- index:this.addIndex,
+ index: this.addIndex,
uuid: uuidv4(),//鐢熸垚鍞竴鐨刬d
}
//灏嗘寜閽缃繘鍘�
@@ -253,7 +290,7 @@
})
//console.log(item)
this.classifyAuthData.push(item);
- this.roleHandlerMethods('', 'add', this.addIndex)
+ this.roleHandlerMethods(this.roleList[0].id, 'add', this.addIndex)
},
// 鍒犻櫎琛�
subClassifyAuth() {
--
Gitblit v1.9.3