|
@@ -2,8 +2,11 @@
|
|
|
<div class="privilege-set">
|
|
|
<table class="table">
|
|
|
<colgroup>
|
|
|
- <col width="100" />
|
|
|
- <col width="100" />
|
|
|
+ <col width="120" />
|
|
|
+ <col width="120" />
|
|
|
+ <col width="140" />
|
|
|
+ <col width="60" />
|
|
|
+ <col width="210" />
|
|
|
</colgroup>
|
|
|
<tbody>
|
|
|
<tr>
|
|
@@ -18,6 +21,20 @@
|
|
|
@change="enable => pageSelectChange(row, enable)"
|
|
|
></el-checkbox>
|
|
|
</div>
|
|
|
+ <div
|
|
|
+ v-else-if="
|
|
|
+ row.isPage && col && col.type === 'page-data-permission'
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-select v-model="row.datePermissionType" placeholder="请选择">
|
|
|
+ <el-option
|
|
|
+ v-for="(val, key) in DATA_PRIVILEGE_TYPE"
|
|
|
+ :key="key"
|
|
|
+ :value="key"
|
|
|
+ :label="val"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
<div v-else-if="col && col.type">
|
|
|
<div
|
|
|
class="cell-check-list"
|
|
@@ -40,6 +57,8 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { DATA_PRIVILEGE_TYPE } from "../../../constants/enumerate";
|
|
|
+
|
|
|
export default {
|
|
|
name: "privilege-set",
|
|
|
props: {
|
|
@@ -54,7 +73,8 @@ export default {
|
|
|
return {
|
|
|
maxDeep: 0,
|
|
|
tableData: [],
|
|
|
- tableHead: []
|
|
|
+ tableHead: [],
|
|
|
+ DATA_PRIVILEGE_TYPE
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
@@ -89,6 +109,7 @@ export default {
|
|
|
headers = [
|
|
|
...headers,
|
|
|
"页面",
|
|
|
+ "数据权限",
|
|
|
"查询条件",
|
|
|
"功能按钮",
|
|
|
"列表展示",
|
|
@@ -96,10 +117,15 @@ export default {
|
|
|
];
|
|
|
return headers;
|
|
|
},
|
|
|
- buildTableData(privilegeIds = []) {
|
|
|
+ buildTableData(privilegeIds = [], datePermissionInfo = []) {
|
|
|
let tableData = [];
|
|
|
- let tableColumnCount = this.maxDeep + 5;
|
|
|
+ let tableColumnCount = this.maxDeep + 6;
|
|
|
const pageSetTypes = ["conditions", "buttons", "lists", "links"];
|
|
|
+
|
|
|
+ let datePermissionMap = {};
|
|
|
+ datePermissionInfo.forEach(item => {
|
|
|
+ datePermissionMap[item.id] = item.datePermissionType;
|
|
|
+ });
|
|
|
const buildData = (navs, deep) => {
|
|
|
++deep;
|
|
|
navs.forEach(nav => {
|
|
@@ -108,6 +134,9 @@ export default {
|
|
|
columns[this.maxDeep] = {
|
|
|
type: "page-checkbox"
|
|
|
};
|
|
|
+ columns[this.maxDeep + 1] = {
|
|
|
+ type: "page-data-permission"
|
|
|
+ };
|
|
|
|
|
|
const isPage = pageSetTypes.some(
|
|
|
type => nav[type] && nav[type].length
|
|
@@ -121,7 +150,7 @@ export default {
|
|
|
data.enable = privilegeIds.includes(elem.id);
|
|
|
return data;
|
|
|
});
|
|
|
- columns[this.maxDeep + index + 1] = { type, datas };
|
|
|
+ columns[this.maxDeep + index + 2] = { type, datas };
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -129,6 +158,7 @@ export default {
|
|
|
id: nav.id,
|
|
|
name: nav.name,
|
|
|
enable: privilegeIds.includes(nav.id),
|
|
|
+ datePermissionType: datePermissionMap[nav.id] || "SELF",
|
|
|
type: nav.type,
|
|
|
parentId: nav.parentId,
|
|
|
isPage,
|
|
@@ -143,22 +173,29 @@ export default {
|
|
|
|
|
|
this.tableData = tableData;
|
|
|
},
|
|
|
- getSelectedPrivilegeIds() {
|
|
|
+ resetdatePermissionType(val) {
|
|
|
+ this.tableData.forEach(item => (item.datePermissionType = val));
|
|
|
+ },
|
|
|
+ getSelectedPrivileges() {
|
|
|
let privilegeIds = [];
|
|
|
+ let datePermissionInfo = [];
|
|
|
this.tableData
|
|
|
.filter(row => row.enable)
|
|
|
.forEach(row => {
|
|
|
privilegeIds.push(row.id);
|
|
|
+ datePermissionInfo.push({
|
|
|
+ id: row.id,
|
|
|
+ datePermissionType: row.datePermissionType
|
|
|
+ });
|
|
|
row.columns.forEach(column => {
|
|
|
- if (column.type === "page" || column.type === "page-checkbox")
|
|
|
- return;
|
|
|
+ if (!column.datas || !column.datas.length) return;
|
|
|
|
|
|
column.datas.forEach(item => {
|
|
|
if (item.enable) privilegeIds.push(item.id);
|
|
|
});
|
|
|
});
|
|
|
});
|
|
|
- return privilegeIds;
|
|
|
+ return { privilegeIds, datePermissionInfo };
|
|
|
},
|
|
|
// set change
|
|
|
pageSelectChange(row, enable) {
|