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