From 80b725c050e4e4537cc5b7892e5969e537a9b38e Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 08 五月 2024 18:17:13 +0800
Subject: [PATCH] 数据更改版次值为空判断
---
Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue | 317 ++++++++++++++++++++++++++--------------------------
1 files changed, 160 insertions(+), 157 deletions(-)
diff --git a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
index 9a32e26..54d9096 100644
--- a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
@@ -6,11 +6,8 @@
append-to-body
class="avue-dialog avue-dialog--top"
title="鍒嗙被鎺堟潈"
- top="-45px"
- @close="closeDialog"
- >
+ top="-45px" @close="closeDialog">
<el-table
- :key="itemKey"
ref="dataTable"
v-loading="isLoading"
:data="classifyAuthData"
@@ -18,11 +15,16 @@
: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" width="55"></el-table-column>
+ <el-table-column
+ type="selection"
+ width="55"
+ ></el-table-column>
<el-table-column
v-for="(item, index) in classifyAuthHeader"
v-if="classifyAuthHeader.length !== 0"
@@ -38,7 +40,7 @@
v-if="item.type === 'select'"
slot="prepend"
v-model="row[item.prop]"
- @change="selectChange(row.roleData, row)"
+ @change="roleChange(row.roleData,row)"
>
<el-option
v-for="optionItem in roleList"
@@ -59,46 +61,31 @@
v-if="item.type === 'checkbox'"
v-model="row[item.prop]"
:disabled="row.authButton.allDisabled ? true : row.authButton[item.code]"
- >
+ @change="checkBoxToChangeTheEvent(row[item.prop],item.code,row,item.prop)">
</el-checkbox>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button plain type="info" @click="selectAllButton">鎸夐挳鍏ㄩ��</el-button>
- <el-button
- class="el-icon-plus"
- plain
- type="success"
- @click="addClassifyAuth"
- ></el-button>
- <el-button
- class="el-icon-minus"
- plain
- type="warning"
- @click="subClassifyAuth"
- ></el-button>
+ <el-button class="el-icon-plus" plain type="success" @click="addClassifyAuth"></el-button>
+ <el-button class="el-icon-minus" plain type="warning" @click="subClassifyAuth"></el-button>
<el-button plain type="primary" @click="submit">鎻� 浜�</el-button>
- <el-button plain type="danger" @click="isShowDialog = false"
- >鍏� 闂�</el-button
- >
+ <el-button plain type="danger" @click="isShowDialog = false">鍏� 闂�</el-button>
</div>
</el-dialog>
</template>
<script>
-import { getButtonByParentCode } from "@/api/system/menu";
-import { getPage } from "@/api/system/role";
-import {
- saveOrUpdate,
- getClassifyAuthList,
- getButtonsByRoleId,
-} from "@/api/system/classifyAuth";
-import { v4 as uuidv4 } from "uuid";
+import {getButtonByParentCode} from "@/api/system/menu"
+import {getPage} from "@/api/system/role"
+import {saveOrUpdate, getClassifyAuthList, getButtonsByRoleId} from "@/api/system/classifyAuth"
+import {v4 as uuidv4} from 'uuid';
export default {
- name: "classifyAuthDialog.vue",
+ name: "dataAuthDialog.vue",
props: {
+ // 褰撳墠鐐瑰嚮鑺傜偣鐨勯《灞傝妭鐐�
classifyData: {
type: "Object",
default: "",
@@ -108,13 +95,17 @@
type: "Boolean",
default: false,
},
+ // 褰撳墠鐐瑰嚮鐨勮妭鐐�
+ TreeNode: {
+ type: Object
+ }
},
data() {
return {
// 瀵硅瘽妗嗘樉绀烘帶鍒�
isShowDialog: this.visible,
- isLoading: false,
- tableHeight: "calc(100vh - 550px)",
+ isLoading: true,
+ tableHeight: 'calc(100vh - 550px)',
classifyAuthData: [],
//鍒楀ご
classifyAuthHeader: [],
@@ -124,14 +115,11 @@
roleList: [],
//褰撳墠閫変腑鐨勮〃鏍艰
selectList: [],
- itemKey: "",
+ itemKey: '',
addIndex: Number,
- currentRow: {},
+ currentRow: {}
};
},
- computed: {},
- mounted() {},
- created() {},
watch: {
// 鐩戝惉鐖剁粍浠朵紶鐨勭獥鍙f樉绀洪殣钘忕殑鍊�
visible() {
@@ -140,62 +128,92 @@
this.loadAuthPage();
}
},
+ classifyAuthData(newval) {
+ this.addIndex = newval.length <= 0 ? 0 : newval.length - 1;
+ }
+ },
+ computed: {},
+ mounted() {
+ },
+ created() {
},
methods: {
+ checkBoxToChangeTheEvent(check, code, row, id) {
+ if (code === "classify_view") {
+ row.checkTheStatus = check;
+ } else if (!row.checkTheStatus) {
+ this.$message.warning('娓呭厛鍕鹃�夋煡鐪嬫寜閽紒');
+ // 鍦ㄦ潯浠朵笉婊¤冻鏃跺皢澶氶�夋鐘舵�佽缃负false
+ row[id] = false;
+ }
+
+ if (!row.checkTheStatus) {
+ this.classifyAuthButton.forEach(key => {
+ // 鏌ョ湅涓篺alse鏃跺皢鎵�鏈夊閫夋鐘舵�佽缃负false
+ row[key.id] = false;
+ });
+ }
+ },
+ // 鍏抽棴瀵硅瘽妗�
+ closeDialog() {
+ this.$emit('update:visible', false);
+ this.classifyAuthData = [];
+ },
roleHandlerMethods(id, type, index) {
- if (this.classifyAuthData.length < 0) {
+ 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);
- });
+ //filteredItems 鏈巿鏉冩暟缁�
+ getButtonsByRoleId({roleId: id, code: 'classifyTree '}).then(res => {
+ const filteredItems = this.classifyAuthButton.filter(item =>
+ !res.data.data.some(x => x.id === item.id)
+ );
+ //鍜岃〃鏍煎垪杩涜瀵规瘮
this.classifyAuthHeader.forEach((item) => {
+ // if (item.code !== 'classify_view') {
+ // this.$set(this.classifyAuthData[index].authButton, "allDisabled", true);
+ // }
const isMatched = filteredItems.some((x) => x.id === item.prop);
this.$nextTick(() => {
if (this.classifyAuthData[index]) {
if (isMatched) {
Object.keys(this.classifyAuthData[index]).forEach((key) => {
- this.$set(this.classifyAuthData[index].authButton,item.code,true);
+ this.$set(this.classifyAuthData[index].authButton, item.code, true);
+ //娣诲姞 鈥滄煡鐪嬪叏閮ㄧ鐢ㄦ潯浠垛��
+ if (item.code === "classify_view") {
+ this.$set(this.classifyAuthData[index].authButton, "allDisabled", true);
+ }
});
+
} else {
Object.keys(this.classifyAuthData[index]).forEach((key) => {
- this.$set(this.classifyAuthData[index].authButton,item.code,false);
+ this.$set(this.classifyAuthData[index].authButton, item.code, false);
});
+ if (item.code === "classify_view") {
+ this.classifyAuthData[index].authButton.allDisabled = false;
+ }
}
}
});
});
- //娣诲姞 鈥滄煡鐪嬪叏閮ㄧ鐢ㄦ潯浠垛��
- if (this.classifyAuthData) {
- this.classifyAuthData.forEach((classkey, classIndex) => {
- if (classkey.authButton.classify_view) {
- this.$set(this.classifyAuthData[classIndex].authButton,"allDisabled",true);
- } else {
- this.classifyAuthData[classIndex].authButton.allDisabled = false;
- }
- });
- }
+ // console.log(this.classifyAuthData)
//寮哄埗鍒锋柊琛ㄦ牸
this.itemKey = uuidv4();
});
},
- async selectChange(row, currentRow) {
+ // 瑙掕壊鏀瑰彉鏃�
+ async roleChange(row, currentRow) {
try {
this.currentRow = currentRow;
- const res = await getButtonsByRoleId({
- roleId: row,
- code: "classifyTree",
+ const res = await getButtonsByRoleId({roleId: row, code: 'classifyTree '});
+
+ const filteredItems = this.classifyAuthButton.filter(item => {
+ return !res.data.data.find(x => x.id === item.id);
});
- 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.classifyAuthHeader.forEach(item => {
+ const isMatched = filteredItems.some(x => x.id === item.prop);
this.$nextTick(() => {
if (currentRow) {
if (isMatched) {
@@ -214,7 +232,6 @@
});
}
}
-
this.itemKey = uuidv4(); // 寮哄埗鍒锋柊琛ㄦ牸
});
});
@@ -222,39 +239,32 @@
console.error(error);
}
},
- // 鍏抽棴瀵硅瘽妗�
- closeDialog() {
- this.$emit("update:visible", false);
- this.classifyAuthData = [];
- },
// 澧炲姞琛�
addClassifyAuth() {
if (this.roleList.length <= 0) {
this.$message.warning("褰撳墠绉熸埛涓嶅瓨鍦ㄨ鑹蹭俊鎭紒");
return;
}
- // console.log('this.roleList', this.roleList)
- this.addIndex++; //鑷畾涔夌敓鎴愭坊鍔犺涓嬫爣
+
let item = {
roleData: this.roleList[0].id,
classifyItem: this.classifyData.label,
- authButton:{},
- index: this.addIndex,
- uuid: uuidv4(), //鐢熸垚鍞竴鐨刬d
- };
+ authButton: {},
+ uuid: uuidv4(),//鐢熸垚鍞竴鐨刬d,
+ index: this.classifyAuthData.length -1,
+ }
//灏嗘寜閽缃繘鍘�
- this.classifyAuthButton.forEach((data) => {
+ this.classifyAuthButton.forEach(data => {
Vue.set(item, data.id, false);
- });
- this.classifyAuthData.push(item);
- this.roleHandlerMethods(this.roleList[0].id, "add", this.addIndex);
+ })
+ //console.log(item)
+ this.classifyAuthData.push(item)
+ this.roleHandlerMethods(this.roleList[0].id, 'add', this.classifyAuthData.length -1)
},
// 鍒犻櫎琛�
subClassifyAuth() {
for (let item of this.selectList) {
- let index = this.classifyAuthData.findIndex(
- (data) => data.index === item.index
- );
+ let index = this.classifyAuthData.findIndex(data => data.index === item.index);
if (index !== -1) {
this.classifyAuthData.splice(index, 1);
}
@@ -278,10 +288,11 @@
let form = {
classifyAuthList: [],
isCLear: false, //榛樿鏄竻绌�
- classifyId: this.classifyData.oid,
+ classifyId: this.TreeNode.oid,
+ authType: 'classify_auth',
};
let isRepeat = false;
- if(this.classifyAuthData.length > 0){
+ if (this.classifyAuthData.length > 0) {
// 閬嶅巻鏁扮粍锛屾瘮杈冨悗闈㈢殑瀵硅薄鐨剅oleData鏄惁涓庡墠闈㈢殑瀵硅薄鐩哥瓑
for (let i = 0; i < this.classifyAuthData.length - 1; i++) {
let currentRoleId = this.classifyAuthData[i].roleData;
@@ -295,14 +306,12 @@
break;
}
}
-
if (isRepeat) {
this.$message.warning("瑙掕壊鍜屽垎绫诲凡缁忓瓨鍦紝璇烽噸鏂伴厤缃紒");
return;
}
-
let flag = false;
- this.classifyAuthData.forEach((item) => {
+ this.classifyAuthData.forEach(item => {
let itemButtonList = [];
//绛涢�夊嚭鎸夐挳鍕鹃�変负true鐨勫垪
for (let key in item) {
@@ -319,34 +328,31 @@
let data = {
oid: item.oid,
roleId: item.roleData,
- classifyId: this.classifyData.oid,
+ classifyId: this.TreeNode.oid,
buttonIds: itemButtonList.join(","),
authType: "classify_auth",
- };
+ }
form.classifyAuthList.push(data);
});
if (flag) {
- this.$message.warning("鏈夋湭鍕鹃�夋搷浣滅殑鏉冮檺锛屼笉鍏佽鎺堟潈");
+ this.$message.warning('鏈夋湭鍕鹃�夋搷浣滅殑鏉冮檺锛屼笉鍏佽鎺堟潈')
return;
}
- }else {
+ // console.log(form)
+ } else {
// 涓虹┖璇佹槑鏄竻绌烘巿鏉冨垪琛�
form.isCLear = true;
}
- // console.log(JSON.stringify(form))
// 璋冪敤淇濆瓨鍒嗙被鎺堟潈鐨勬帴鍙�
- await saveOrUpdate(form).then(
- (res) => {
- this.$message({
- type: "success",
- message: res.data.msg,
- });
- // this.isShowDialog = false
- },
- (error) => {
- window.console.log(error);
- }
- );
+ await saveOrUpdate(form).then(res => {
+ this.$message({
+ type: "success",
+ message: res.data.msg,
+ });
+ // this.isShowDialog = false
+ }, (error) => {
+ window.console.log(error);
+ })
this.classifyAuthData = [];
this.loadAuthPage();
},
@@ -356,60 +362,55 @@
this.$message.warning("璇峰彧閫夋嫨涓�琛岄渶瑕佸叏閫夌殑鎸夐挳鐨勬暟鎹锛�");
return;
}
- this.classifyAuthButton.forEach((item) => {
+ this.classifyAuthButton.forEach(item => {
//console.log("item",item);
Vue.set(this.selectList[0], item.id, true);
});
//console.log("this.selectList",this.selectList);
},
- // 鍔犺浇鎺堟潈鍒楄〃
loadAuthPage() {
return new Promise((resolve, reject) => {
- getButtonByParentCode({ code: "classifyTree" })
- .then((res) => {
- // 璁板綍鎸夐挳鏁版嵁
- this.classifyAuthButton = res.data.data;
- const list = res.data.data;
- let tempData = [];
- // 瑙掕壊鍒�
- tempData.push({
- label: "瑙掕壊",
- prop: "roleData",
- type: "select",
- width: 150,
- });
- // 缂栫爜椤瑰垎绫绘巿鏉�
- tempData.push({
- label: "缂栫爜椤瑰垎绫绘巿鏉�",
- prop: "classifyItem",
- type: "text",
- width: 180,
- });
- list.forEach((item) => {
- let columnItem = {
- label: item.name,
- prop: item.id,
- code: item.code,
- type: "checkbox",
- width: 180,
- };
- tempData.push(columnItem);
- });
- this.classifyAuthHeader = tempData;
- resolve();
- })
- .catch((err) => {
- reject(err);
+ this.isLoading = true;
+ getButtonByParentCode({code: 'classifyTree '}).then(res => {
+ // 璁板綍鎸夐挳鏁版嵁
+ this.classifyAuthButton = res.data.data;
+ const list = res.data.data;
+ let tempData = [];
+ // 瑙掕壊鍒�
+ tempData.push({
+ label: "瑙掕壊",
+ prop: "roleData",
+ type: "select",
+ width: 150,
});
+ // 缂栫爜椤瑰垎绫绘巿鏉�
+ tempData.push({
+ label: "缂栫爜椤规暟鎹巿鏉�",
+ prop: "classifyItem",
+ type: "text",
+ width: 180,
+ });
+ list.forEach(item => {
+ let columnItem = {
+ label: item.name,
+ prop: item.id,
+ code: item.code,
+ type: "checkbox",
+ width: 180,
+ };
+ tempData.push(columnItem);
+ })
+ this.classifyAuthHeader = tempData
+ resolve();
+ }).catch(err => {
+ reject(err)
+ });
// 鑾峰彇瑙掕壊鍒楄〃
- getPage(1, -1, null).then((res) => {
+ getPage(1, -1, null).then(res => {
this.roleList = res.data.data.records;
});
// 鑾峰彇璇ュ垎绫讳笅宸叉巿鏉冪殑鍒嗙被鎺堟潈淇℃伅
- getClassifyAuthList({
- classifyId: this.classifyData.oid,
- authType: "classify_auth",
- }).then((res) => {
+ getClassifyAuthList({classifyId: this.TreeNode.oid, authType: "classify_auth"}).then(res => {
//console.log(res.data.data);
let authDatas = res.data.data;
if (authDatas.length > 0) {
@@ -418,21 +419,20 @@
oid: authData.oid,
roleData: authData.roleId,
classifyItem: this.classifyData.label,
- authButton:{},
index: index,
- uuid: uuidv4(), //鐢熸垚鍞竴鐨刬d
- };
+ authButton: {},
+ uuid: uuidv4(),//鐢熸垚鍞竴鐨刬d
+ }
//灏嗘寜閽缃繘鍘�
- authData.buttonIdList.forEach((data) => {
+ authData.buttonIdList.forEach(data => {
Vue.set(item, data, true);
});
this.classifyAuthData.push(item);
- this.addIndex = this.classifyAuthData.length - 1; //娣诲姞琛屼笅鏍囩瓑浜巆lassifyAuthData鐨勯暱搴�-1
- this.roleHandlerMethods(authData.roleId, "create", index);
- // console.log('index', index)
- });
+ this.roleHandlerMethods(authData.roleId, 'create', index)
+ })
}
});
+ this.isLoading = false;
});
},
},
@@ -440,6 +440,7 @@
</script>
<style lang="scss" scoped>
+
// 婊氬姩鏉℃牱寮忎慨鏀�
// 婊氬姩鏉$殑瀹藉害
/deep/ .el-table__body-wrapper::-webkit-scrollbar {
@@ -447,6 +448,7 @@
background: white;
border: white;
width: 10px;
+
}
// 婊氬姩鏉$殑婊戝潡
@@ -459,4 +461,5 @@
/deep/ .el-table__body-wrapper {
height: calc(100% - 50px) !important;
}
+
</style>
--
Gitblit v1.9.3