fix: BUG修改
This commit is contained in:
parent
c6944d9c47
commit
67d2f901d2
1348
package-lock.json
generated
1348
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -46,6 +46,7 @@
|
|||||||
"mars3d-cesium": "^1.105.0",
|
"mars3d-cesium": "^1.105.0",
|
||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
|
"mqtt": "^2.18.8",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"pinia": "^2.0.28",
|
"pinia": "^2.0.28",
|
||||||
"pinia-plugin-persistedstate": "^3.0.1",
|
"pinia-plugin-persistedstate": "^3.0.1",
|
||||||
|
|||||||
@ -44,13 +44,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="TreeFilter">
|
<script setup lang="ts" name="TreeFilter">
|
||||||
import { ref, watch, onBeforeMount } from "vue";
|
import { ref, watch, onBeforeMount, onMounted } from "vue";
|
||||||
import { ElTree } from "element-plus";
|
import { ElTree } from "element-plus";
|
||||||
|
|
||||||
// 接收父组件参数并设置默认值
|
// 接收父组件参数并设置默认值
|
||||||
interface TreeFilterProps {
|
interface TreeFilterProps {
|
||||||
requestApi?: (data?: any) => Promise<any>; // 请求分类数据的 api ==> 非必传
|
requestApi?: (data?: any) => Promise<any>; // 请求分类数据的 api ==> 非必传
|
||||||
data?: { [key: string]: any }[]; // 分类数据,如果有分类数据,则不会执行 api 请求 ==> 非必传
|
data?: []; // 分类数据,如果有分类数据,则不会执行 api 请求 ==> 非必传
|
||||||
title?: string; // treeFilter 标题 ==> 非必传
|
title?: string; // treeFilter 标题 ==> 非必传
|
||||||
id?: string; // 选择的id ==> 非必传,默认为 “id”
|
id?: string; // 选择的id ==> 非必传,默认为 “id”
|
||||||
label?: string; // 显示的label ==> 非必传,默认为 “label”
|
label?: string; // 显示的label ==> 非必传,默认为 “label”
|
||||||
@ -79,12 +79,11 @@ const selected = ref();
|
|||||||
// console.log("node", node);
|
// console.log("node", node);
|
||||||
// console.log("data", data);
|
// console.log("data", data);
|
||||||
// };
|
// };
|
||||||
|
onMounted(async () => {
|
||||||
onBeforeMount(async () => {
|
|
||||||
// 重新接收一下默认值
|
// 重新接收一下默认值
|
||||||
if (props.multiple) selected.value = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue];
|
if (props.multiple) selected.value = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue];
|
||||||
else selected.value = typeof props.defaultValue === "string" ? props.defaultValue : "";
|
else selected.value = typeof props.defaultValue === "string" ? props.defaultValue : "";
|
||||||
|
console.log(props.data);
|
||||||
// 有数据就直接赋值,没有数据就执行请求函数
|
// 有数据就直接赋值,没有数据就执行请求函数
|
||||||
if (props.data?.length) {
|
if (props.data?.length) {
|
||||||
treeData.value = props.data;
|
treeData.value = props.data;
|
||||||
@ -93,11 +92,29 @@ onBeforeMount(async () => {
|
|||||||
}
|
}
|
||||||
const res = await props.requestApi!();
|
const res = await props.requestApi!();
|
||||||
console.log(res);
|
console.log(res);
|
||||||
treeData.value = res || [];
|
treeData.value = res?.result || [];
|
||||||
// treeAllData.value = [{ id: "", [props.label]: "全部" }, ...result];
|
// treeAllData.value = [{ id: "", [props.label]: "全部" }, ...result];
|
||||||
|
|
||||||
treeAllData.value = res ? [...res] : [];
|
treeAllData.value = res ? [...res.result] : [];
|
||||||
});
|
});
|
||||||
|
// onBeforeMount(async () => {
|
||||||
|
// // 重新接收一下默认值
|
||||||
|
// if (props.multiple) selected.value = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue];
|
||||||
|
// else selected.value = typeof props.defaultValue === "string" ? props.defaultValue : "";
|
||||||
|
// console.log(props.data);
|
||||||
|
// // 有数据就直接赋值,没有数据就执行请求函数
|
||||||
|
// if (props.data?.length) {
|
||||||
|
// treeData.value = props.data;
|
||||||
|
// treeAllData.value = props.data;
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// const res = await props.requestApi!();
|
||||||
|
// console.log(res);
|
||||||
|
// treeData.value = res || [];
|
||||||
|
// // treeAllData.value = [{ id: "", [props.label]: "全部" }, ...result];
|
||||||
|
|
||||||
|
// treeAllData.value = res ? [...res] : [];
|
||||||
|
// });
|
||||||
|
|
||||||
watch(filterText, val => {
|
watch(filterText, val => {
|
||||||
treeRef.value!.filter(val);
|
treeRef.value!.filter(val);
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
<div style="margin-left: 10px">消息</div>
|
<div style="margin-left: 10px">消息</div>
|
||||||
</el-badge>
|
</el-badge>
|
||||||
</template>
|
</template>
|
||||||
<el-tabs v-model="activeName">
|
<el-tabs v-model="activeName" @tab-change="tabsChange">
|
||||||
<el-tab-pane label="通知(5)" name="first">
|
<el-tab-pane label="通知(5)" name="first">
|
||||||
<div class="message-list">
|
<div class="message-list">
|
||||||
<div class="message-item">
|
<div class="message-item">
|
||||||
@ -65,9 +65,70 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from "vue";
|
import { ref, onMounted, onBeforeUnmount } from "vue";
|
||||||
|
import * as mqtt from "mqtt/dist/mqtt.min.js";
|
||||||
const activeName = ref("first");
|
const activeName = ref("first");
|
||||||
|
const clientInstance = ref();
|
||||||
|
const connectOption = ref({
|
||||||
|
clean: true,
|
||||||
|
connectTimeout: 5000,
|
||||||
|
clientId: "mqtt_01",
|
||||||
|
username: "admin",
|
||||||
|
password: "JXJ@admin"
|
||||||
|
});
|
||||||
|
// tabs选项切换
|
||||||
|
const tabsChange = (val: any) => {
|
||||||
|
console.log(val);
|
||||||
|
if (val == "first") {
|
||||||
|
} else if (val == "second") {
|
||||||
|
} else if (val == "third") {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// 初始化
|
||||||
|
const createMqttConnect = () => {
|
||||||
|
console.log(666);
|
||||||
|
// const wsurl = "ws://182.90.224.147:1883";
|
||||||
|
// let wx = new WebSocket(wsurl);
|
||||||
|
// mqtt方法
|
||||||
|
let url = "ws://182.90.224.147:8083/mqtt";
|
||||||
|
// client.subscribe("test-topic/123");
|
||||||
|
// client.on("message", con => {
|
||||||
|
// console.log(con);
|
||||||
|
// });
|
||||||
|
// 创建实例 传入地址和参数对象
|
||||||
|
clientInstance.value = mqtt.connect(url, connectOption.value);
|
||||||
|
// clientInstance.value.on("reconnect", error => {
|
||||||
|
// console.log("正在重连", error);
|
||||||
|
// });
|
||||||
|
clientInstance.value.on("connect", con => {
|
||||||
|
console.log("连接成功", con);
|
||||||
|
// 订阅主题
|
||||||
|
clientInstance.value.subscribe("test-topic/#", { qos: 1 }, (error, res) => {
|
||||||
|
console.log(error, res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
clientInstance.value.on("message", (topic, message) => {
|
||||||
|
console.log(topic, JSON.parse(message.toString()));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 断开连接
|
||||||
|
const destroyConnection = () => {
|
||||||
|
if (clientInstance.value) {
|
||||||
|
try {
|
||||||
|
clientInstance.value.end();
|
||||||
|
clientInstance.value = null;
|
||||||
|
console.log("已断开连接");
|
||||||
|
} catch (error) {
|
||||||
|
console.log("断开连接失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
createMqttConnect();
|
||||||
|
});
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
destroyConnection();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<div class="sta-item" v-for="(item, index) in statisticsOption" :key="index">
|
<div class="sta-item" v-for="(item, index) in statisticsOption" :key="index">
|
||||||
<div class="sta-item-content">
|
<div class="sta-item-content">
|
||||||
<img :src="item.img" alt="" />
|
<img :src="item.img" alt="" />
|
||||||
<span>{{ item.value }}</span>
|
<span>{{ item.value }}{{ item.prop == "checkRatio" ? "%" : "" }}</span>
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -202,16 +202,21 @@ const columns: ColumnProps[] = [
|
|||||||
// 获取危大工程统计数据
|
// 获取危大工程统计数据
|
||||||
const getCountData = async () => {
|
const getCountData = async () => {
|
||||||
let requestData = {};
|
let requestData = {};
|
||||||
if (activeValue.value == "eng") {
|
if (searchSn.value) {
|
||||||
requestData.engineeringSn = searchSn.value;
|
if (activeValue.value == "eng") {
|
||||||
} else if (activeValue.value == "project") {
|
requestData.engineeringSn = searchSn.value;
|
||||||
requestData.projectSn = searchSn.value;
|
} else if (activeValue.value == "project") {
|
||||||
|
requestData.projectSn = searchSn.value;
|
||||||
|
}
|
||||||
|
const res = await dangerousEngineerCount(requestData);
|
||||||
|
statisticsOption.value.map(item => {
|
||||||
|
item.value = res.result[item.prop];
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
statisticsOption.value.map(item => {
|
||||||
|
item.value = 0;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const res = await dangerousEngineerCount(requestData);
|
|
||||||
statisticsOption.value.map(item => {
|
|
||||||
item.value = res.result[item.prop];
|
|
||||||
});
|
|
||||||
console.log(res);
|
|
||||||
};
|
};
|
||||||
// 类别文本转换
|
// 类别文本转换
|
||||||
const textTransform = (val: any) => {
|
const textTransform = (val: any) => {
|
||||||
|
|||||||
@ -1383,7 +1383,7 @@ onMounted(() => {
|
|||||||
.list-content {
|
.list-content {
|
||||||
display: grid;
|
display: grid;
|
||||||
// grid-template-columns: repeat(3, 1fr);
|
// grid-template-columns: repeat(3, 1fr);
|
||||||
grid-template-columns: repeat(auto-fit, minmax(530px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(530px, 0fr));
|
||||||
grid-gap: 20px;
|
grid-gap: 20px;
|
||||||
&-item {
|
&-item {
|
||||||
width: 530px;
|
width: 530px;
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
<div class="base-box" v-show="!showPage">
|
<div class="base-box" v-show="!showPage">
|
||||||
<el-form style="padding: 10% 30%" :model="baseFrom" ref="ruleFormRef" label-width="150px">
|
<el-form style="padding: 10% 30%" :model="baseFrom" ref="ruleFormRef" label-width="150px">
|
||||||
<el-form-item label="上级部门:" prop="parentId">
|
<el-form-item label="上级部门:" prop="parentId">
|
||||||
<el-select style="width: 100%" v-model="baseFrom.parentId" placeholder="请选择">
|
<el-select style="width: 100%" v-model="baseFrom.parentId" clearable placeholder="请选择">
|
||||||
<el-option v-for="item in treeDeptList" :key="item.deptId" :label="item.deptName" :value="item.deptId" />
|
<el-option v-for="item in treeDeptList" :key="item.deptId" :label="item.deptName" :value="item.deptId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -339,7 +339,8 @@ const formConfigDept = reactive({
|
|||||||
label: "上级部门",
|
label: "上级部门",
|
||||||
prop: "parentId",
|
prop: "parentId",
|
||||||
type: "select",
|
type: "select",
|
||||||
data: []
|
data: [],
|
||||||
|
clearable: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "部门名称",
|
label: "部门名称",
|
||||||
|
|||||||
@ -31,9 +31,27 @@
|
|||||||
</template>
|
</template>
|
||||||
</ProTable>
|
</ProTable>
|
||||||
<el-drawer v-model="drawerVisible" :destroy-on-close="true" :before-close="closeDrawer" size="450px" title="配置权限">
|
<el-drawer v-model="drawerVisible" :destroy-on-close="true" :before-close="closeDrawer" size="450px" title="配置权限">
|
||||||
|
<div class="select-all">
|
||||||
|
<el-checkbox
|
||||||
|
:indeterminate="isIndeterminate"
|
||||||
|
v-model="checkAll"
|
||||||
|
@change="handleCheckAllChange"
|
||||||
|
style="padding: 0px; margin-right: 5px"
|
||||||
|
>全选</el-checkbox
|
||||||
|
>
|
||||||
|
</div>
|
||||||
<span class="title sle">所拥有的权限</span>
|
<span class="title sle">所拥有的权限</span>
|
||||||
<el-scrollbar :style="{ height: title ? `calc(100% - 95px)` : `calc(100% - 56px)` }">
|
<el-scrollbar :style="{ height: title ? `calc(100% - 95px)` : `calc(100% - 56px)` }">
|
||||||
<el-tree ref="treeRef" default-expand-all :data="datas" show-checkbox node-key="name" :props="defaultProps"> </el-tree>
|
<el-tree
|
||||||
|
ref="treeRef"
|
||||||
|
default-expand-all
|
||||||
|
:data="datas"
|
||||||
|
show-checkbox
|
||||||
|
node-key="name"
|
||||||
|
:props="defaultProps"
|
||||||
|
@check-change="testCheckChange"
|
||||||
|
>
|
||||||
|
</el-tree>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="flx-center">
|
<div class="flx-center">
|
||||||
@ -79,7 +97,8 @@ import DialogForm from "@/components/DialogForm/index.vue";
|
|||||||
|
|
||||||
import { Delete } from "@element-plus/icons-vue";
|
import { Delete } from "@element-plus/icons-vue";
|
||||||
import { GlobalStore } from "@/stores";
|
import { GlobalStore } from "@/stores";
|
||||||
|
const checkAll = ref(false);
|
||||||
|
const isIndeterminate = ref(false);
|
||||||
const treeRef = ref(null);
|
const treeRef = ref(null);
|
||||||
const { BUTTONS } = useAuthButtons();
|
const { BUTTONS } = useAuthButtons();
|
||||||
const datas = reactive([]);
|
const datas = reactive([]);
|
||||||
@ -182,7 +201,52 @@ const formConfig = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
// 获取当前选中的节点
|
||||||
|
const testCheckChange = () => {
|
||||||
|
const tree = treeRef.value;
|
||||||
|
let checkedCount = 0;
|
||||||
|
let disabledCount = 0;
|
||||||
|
let indeterminateFlag = false;
|
||||||
|
for (let i = 0; i < datas.length; i++) {
|
||||||
|
if (tree.getNode(datas[i]).disabled == true) {
|
||||||
|
disabledCount += 1; // 如果有置灰的节点,置灰变量加1
|
||||||
|
}
|
||||||
|
if (tree.getNode(datas[i]).checked == true) {
|
||||||
|
checkedCount += 1; // 如果有勾选的节点,勾选变量加1
|
||||||
|
}
|
||||||
|
if (tree.getNode(datas[i]).indeterminate == true) {
|
||||||
|
indeterminateFlag = true; // 如果有半选的节点,半选变量设为true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (checkedCount == 0) {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
checkAll.value = false; // 如果勾选的一级节点数为0,则设置全选按钮样式不为半选样式,全选的值为false
|
||||||
|
if (indeterminateFlag == true) {
|
||||||
|
isIndeterminate.value = true;
|
||||||
|
checkAll.value = false;
|
||||||
|
}
|
||||||
|
} else if (checkedCount + disabledCount == datas.length) {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
checkAll.value = true;
|
||||||
|
} else {
|
||||||
|
isIndeterminate.value = true;
|
||||||
|
checkAll.value = false;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
const handleCheckAllChange = (val: any) => {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
if (checkAll.value == true) {
|
||||||
|
for (let i = 0; i < datas.length; i++) {
|
||||||
|
if (treeRef.value.getNode(datas[i]).disabled == false) {
|
||||||
|
console.log(datas[i].path);
|
||||||
|
treeRef.value.setChecked(datas[i].name, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
treeRef.value.setCheckedKeys([]);
|
||||||
|
}
|
||||||
|
};
|
||||||
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,那么你可以在这里进行处理成这些字段
|
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,那么你可以在这里进行处理成这些字段
|
||||||
// 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
|
// 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
|
||||||
const dataCallback = (data: any) => {
|
const dataCallback = (data: any) => {
|
||||||
@ -224,11 +288,19 @@ const transfrom = (arr: Array<any>) => {
|
|||||||
|
|
||||||
const confirm = async () => {
|
const confirm = async () => {
|
||||||
const checked = treeRef.value.getCheckedNodes();
|
const checked = treeRef.value.getCheckedNodes();
|
||||||
await editRolePermissions(transfrom(checked));
|
const halfChecked = treeRef.value.getHalfCheckedNodes();
|
||||||
drawerVisible.value = false;
|
const checkedArr = transfrom(checked);
|
||||||
datas.length = 0;
|
const halfCheckedArr = transfrom(halfChecked);
|
||||||
|
const concatArr: any = checkedArr.concat(halfCheckedArr);
|
||||||
|
console.log(halfChecked);
|
||||||
|
if (!concatArr.length) {
|
||||||
|
ElMessage.error("请选择");
|
||||||
|
} else {
|
||||||
|
await editRolePermissions(transfrom(checked));
|
||||||
|
drawerVisible.value = false;
|
||||||
|
datas.length = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
||||||
// 默认不做操作就直接在 ProTable 组件上绑定 :requestApi="getUserList"
|
// 默认不做操作就直接在 ProTable 组件上绑定 :requestApi="getUserList"
|
||||||
const getTableList = (params: any) => {
|
const getTableList = (params: any) => {
|
||||||
@ -264,7 +336,13 @@ const handleEditItem = async (row: any) => {
|
|||||||
const res = await getTreeByIdList({ roleId: row.roleId });
|
const res = await getTreeByIdList({ roleId: row.roleId });
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
treeRef.value.setCheckedKeys(res.result.map(item => item.authorityId));
|
treeRef.value.setCheckedKeys(
|
||||||
|
res.result.map(item => {
|
||||||
|
if (item.type != 0) {
|
||||||
|
return item.authorityId;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
<div class="sta-item" v-for="(item, index) in statisticsOption" :key="index">
|
<div class="sta-item" v-for="(item, index) in statisticsOption" :key="index">
|
||||||
<div class="sta-item-content">
|
<div class="sta-item-content">
|
||||||
<img :src="item.img" alt="" />
|
<img :src="item.img" alt="" />
|
||||||
<span>{{ item.value }}</span>
|
<span>{{ item.value }}{{ item.prop == "checkRatio" ? "%" : "" }}</span>
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -213,16 +213,21 @@ const columns: ColumnProps[] = [
|
|||||||
// 获取危大工程统计数据
|
// 获取危大工程统计数据
|
||||||
const getCountData = async () => {
|
const getCountData = async () => {
|
||||||
let requestData = {};
|
let requestData = {};
|
||||||
if (active.value == 0) {
|
if (searchSn.value) {
|
||||||
requestData.projectSn = searchSn.value;
|
if (active.value == 0) {
|
||||||
|
requestData.projectSn = searchSn.value;
|
||||||
|
} else {
|
||||||
|
requestData.engineeringSn = searchSn.value;
|
||||||
|
}
|
||||||
|
const res = await dangerousEngineerCount(requestData);
|
||||||
|
statisticsOption.value.map(item => {
|
||||||
|
item.value = res.result[item.prop];
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
requestData.engineeringSn = searchSn.value;
|
statisticsOption.value.map(item => {
|
||||||
|
item.value = 0;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const res = await dangerousEngineerCount(requestData);
|
|
||||||
statisticsOption.value.map(item => {
|
|
||||||
item.value = res.result[item.prop];
|
|
||||||
});
|
|
||||||
console.log(res);
|
|
||||||
};
|
};
|
||||||
// 页面的项目名称和工程名称的div点击事件
|
// 页面的项目名称和工程名称的div点击事件
|
||||||
const onSearch = async (params: any) => {
|
const onSearch = async (params: any) => {
|
||||||
|
|||||||
@ -1205,7 +1205,7 @@ onMounted(() => {
|
|||||||
.list-content {
|
.list-content {
|
||||||
display: grid;
|
display: grid;
|
||||||
// grid-template-columns: repeat(3, 1fr);
|
// grid-template-columns: repeat(3, 1fr);
|
||||||
grid-template-columns: repeat(auto-fit, minmax(530px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(530px, 0fr));
|
||||||
grid-gap: 20px;
|
grid-gap: 20px;
|
||||||
&-item {
|
&-item {
|
||||||
width: 530px;
|
width: 530px;
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<div class="base-box" v-show="!showPage">
|
<div class="base-box" v-show="!showPage">
|
||||||
<el-form style="padding: 10% 30%" :model="baseFrom" ref="ruleFormRef" label-width="150px">
|
<el-form style="padding: 10% 30%" :model="baseFrom" ref="ruleFormRef" label-width="150px">
|
||||||
<el-form-item label="上级部门:" prop="parentId">
|
<el-form-item label="上级部门:" prop="parentId">
|
||||||
<el-select style="width: 100%" v-model="baseFrom.parentId" placeholder="请选择">
|
<el-select style="width: 100%" v-model="baseFrom.parentId" clearable placeholder="请选择">
|
||||||
<el-option v-for="item in treeDeptList" :key="item.deptId" :label="item.deptName" :value="item.deptId" />
|
<el-option v-for="item in treeDeptList" :key="item.deptId" :label="item.deptName" :value="item.deptId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -130,7 +130,6 @@ import {
|
|||||||
} from "@/api/modules/goverment";
|
} from "@/api/modules/goverment";
|
||||||
import DialogForm from "@/components/DialogForm/index.vue";
|
import DialogForm from "@/components/DialogForm/index.vue";
|
||||||
import { jxj_User } from "@/api/types";
|
import { jxj_User } from "@/api/types";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const title = ref("");
|
const title = ref("");
|
||||||
const visible = ref(false);
|
const visible = ref(false);
|
||||||
@ -403,7 +402,6 @@ const formConfigDept = reactive({
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
||||||
// 默认不做操作就直接在 ProTable 组件上绑定 :requestApi="getUserList"
|
// 默认不做操作就直接在 ProTable 组件上绑定 :requestApi="getUserList"
|
||||||
const getTableList = (params: any) => {
|
const getTableList = (params: any) => {
|
||||||
|
|||||||
@ -31,10 +31,28 @@
|
|||||||
</template>
|
</template>
|
||||||
</ProTable>
|
</ProTable>
|
||||||
<el-drawer v-model="drawerVisible" :destroy-on-close="true" :before-close="closeDrawer" size="450px" title="配置权限">
|
<el-drawer v-model="drawerVisible" :destroy-on-close="true" :before-close="closeDrawer" size="450px" title="配置权限">
|
||||||
|
<div class="select-all">
|
||||||
|
<el-checkbox
|
||||||
|
:indeterminate="isIndeterminate"
|
||||||
|
v-model="checkAll"
|
||||||
|
@change="handleCheckAllChange"
|
||||||
|
style="padding: 0px; margin-right: 5px"
|
||||||
|
>全选</el-checkbox
|
||||||
|
>
|
||||||
|
</div>
|
||||||
<span class="title sle">所拥有的权限</span>
|
<span class="title sle">所拥有的权限</span>
|
||||||
<el-scrollbar :style="{ height: title ? `calc(100% - 95px)` : `calc(100% - 56px)` }">
|
<el-scrollbar :style="{ height: title ? `calc(100% - 95px)` : `calc(100% - 56px)` }">
|
||||||
<!-- check-strictly 父子不关联 这样数据选择父 子不会默认被勾选 子被选择 父也不会 -->
|
<!-- check-strictly 父子不关联 这样数据选择父 子不会默认被勾选 子被选择 父也不会 -->
|
||||||
<el-tree ref="treeRef" default-expand-all :data="datas" show-checkbox node-key="name" :props="defaultProps"> </el-tree>
|
<el-tree
|
||||||
|
ref="treeRef"
|
||||||
|
default-expand-all
|
||||||
|
:data="datas"
|
||||||
|
show-checkbox
|
||||||
|
node-key="name"
|
||||||
|
:props="defaultProps"
|
||||||
|
@check-change="testCheckChange"
|
||||||
|
>
|
||||||
|
</el-tree>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="flx-center">
|
<div class="flx-center">
|
||||||
@ -81,7 +99,8 @@ import DialogForm from "@/components/DialogForm/index.vue";
|
|||||||
|
|
||||||
import { Delete } from "@element-plus/icons-vue";
|
import { Delete } from "@element-plus/icons-vue";
|
||||||
import { GlobalStore } from "@/stores";
|
import { GlobalStore } from "@/stores";
|
||||||
|
const checkAll = ref(false);
|
||||||
|
const isIndeterminate = ref(false);
|
||||||
const treeRef = ref(null);
|
const treeRef = ref(null);
|
||||||
|
|
||||||
const datas = reactive([]);
|
const datas = reactive([]);
|
||||||
@ -191,7 +210,52 @@ const formConfig = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
// 获取当前选中的节点
|
||||||
|
const testCheckChange = () => {
|
||||||
|
const tree = treeRef.value;
|
||||||
|
let checkedCount = 0;
|
||||||
|
let disabledCount = 0;
|
||||||
|
let indeterminateFlag = false;
|
||||||
|
for (let i = 0; i < datas.length; i++) {
|
||||||
|
if (tree.getNode(datas[i]).disabled == true) {
|
||||||
|
disabledCount += 1; // 如果有置灰的节点,置灰变量加1
|
||||||
|
}
|
||||||
|
if (tree.getNode(datas[i]).checked == true) {
|
||||||
|
checkedCount += 1; // 如果有勾选的节点,勾选变量加1
|
||||||
|
}
|
||||||
|
if (tree.getNode(datas[i]).indeterminate == true) {
|
||||||
|
indeterminateFlag = true; // 如果有半选的节点,半选变量设为true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (checkedCount == 0) {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
checkAll.value = false; // 如果勾选的一级节点数为0,则设置全选按钮样式不为半选样式,全选的值为false
|
||||||
|
if (indeterminateFlag == true) {
|
||||||
|
isIndeterminate.value = true;
|
||||||
|
checkAll.value = false;
|
||||||
|
}
|
||||||
|
} else if (checkedCount + disabledCount == datas.length) {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
checkAll.value = true;
|
||||||
|
} else {
|
||||||
|
isIndeterminate.value = true;
|
||||||
|
checkAll.value = false;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
const handleCheckAllChange = (val: any) => {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
if (checkAll.value == true) {
|
||||||
|
for (let i = 0; i < datas.length; i++) {
|
||||||
|
if (treeRef.value.getNode(datas[i]).disabled == false) {
|
||||||
|
console.log(datas[i].path);
|
||||||
|
treeRef.value.setChecked(datas[i].name, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
treeRef.value.setCheckedKeys([]);
|
||||||
|
}
|
||||||
|
};
|
||||||
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,那么你可以在这里进行处理成这些字段
|
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,那么你可以在这里进行处理成这些字段
|
||||||
// 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
|
// 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
|
||||||
const dataCallback = (data: any) => {
|
const dataCallback = (data: any) => {
|
||||||
@ -230,14 +294,21 @@ const transfrom = (arr: Array<any>) => {
|
|||||||
})
|
})
|
||||||
.concat(result);
|
.concat(result);
|
||||||
};
|
};
|
||||||
|
|
||||||
const confirm = async () => {
|
const confirm = async () => {
|
||||||
const checked = treeRef.value.getCheckedNodes();
|
const checked = treeRef.value.getCheckedNodes();
|
||||||
await editRolePermissions(transfrom(checked));
|
const halfChecked = treeRef.value.getHalfCheckedNodes();
|
||||||
drawerVisible.value = false;
|
const checkedArr = transfrom(checked);
|
||||||
datas.length = 0;
|
const halfCheckedArr = transfrom(halfChecked);
|
||||||
|
const concatArr: any = checkedArr.concat(halfCheckedArr);
|
||||||
|
console.log(halfChecked);
|
||||||
|
if (!concatArr.length) {
|
||||||
|
ElMessage.error("请选择");
|
||||||
|
} else {
|
||||||
|
await editRolePermissions(transfrom(checked));
|
||||||
|
drawerVisible.value = false;
|
||||||
|
datas.length = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
||||||
// 默认不做操作就直接在 ProTable 组件上绑定 :requestApi="getUserList"
|
// 默认不做操作就直接在 ProTable 组件上绑定 :requestApi="getUserList"
|
||||||
const getTableList = (params: any) => {
|
const getTableList = (params: any) => {
|
||||||
@ -278,7 +349,13 @@ const handleEditItem = async (row: any) => {
|
|||||||
const res = await getTreeByIdList({ roleId: row.roleId });
|
const res = await getTreeByIdList({ roleId: row.roleId });
|
||||||
// 打开弹窗时调用上面的接口勾选
|
// 打开弹窗时调用上面的接口勾选
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
treeRef.value.setCheckedKeys(res.result.map(item => item.authorityId));
|
treeRef.value.setCheckedKeys(
|
||||||
|
res.result.map(item => {
|
||||||
|
if (item.type != 0) {
|
||||||
|
return item.authorityId;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<div class="sta-item" v-for="(item, index) in statisticsOption" :key="index">
|
<div class="sta-item" v-for="(item, index) in statisticsOption" :key="index">
|
||||||
<div class="sta-item-content">
|
<div class="sta-item-content">
|
||||||
<img :src="item.img" alt="" />
|
<img :src="item.img" alt="" />
|
||||||
<span>{{ item.value }}</span>
|
<span>{{ item.value }}{{ item.prop == "checkRatio" ? "%" : "" }}</span>
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -209,16 +209,21 @@ const columns: ColumnProps[] = [
|
|||||||
// 获取危大工程统计数据
|
// 获取危大工程统计数据
|
||||||
const getCountData = async () => {
|
const getCountData = async () => {
|
||||||
let requestData = {};
|
let requestData = {};
|
||||||
if (activeValue.value == "eng") {
|
if (searchSn.value) {
|
||||||
requestData.engineeringSn = searchSn.value;
|
if (activeValue.value == "eng") {
|
||||||
} else if (activeValue.value == "project") {
|
requestData.engineeringSn = searchSn.value;
|
||||||
requestData.projectSn = searchSn.value;
|
} else if (activeValue.value == "project") {
|
||||||
|
requestData.projectSn = searchSn.value;
|
||||||
|
}
|
||||||
|
const res = await dangerousEngineerCount(requestData);
|
||||||
|
statisticsOption.value.map(item => {
|
||||||
|
item.value = res.result[item.prop];
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
statisticsOption.value.map(item => {
|
||||||
|
item.value = 0;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const res = await dangerousEngineerCount(requestData);
|
|
||||||
statisticsOption.value.map(item => {
|
|
||||||
item.value = res.result[item.prop];
|
|
||||||
});
|
|
||||||
console.log(res);
|
|
||||||
};
|
};
|
||||||
// 类别文本转换
|
// 类别文本转换
|
||||||
const textTransform = (val: any) => {
|
const textTransform = (val: any) => {
|
||||||
@ -239,6 +244,10 @@ const confirmAdd = () => {
|
|||||||
};
|
};
|
||||||
// 新增
|
// 新增
|
||||||
const handleAddItem = () => {
|
const handleAddItem = () => {
|
||||||
|
if (!searchSn.value) {
|
||||||
|
ElMessage.error("请先选择工程/项目");
|
||||||
|
return;
|
||||||
|
}
|
||||||
addVisible.value = true;
|
addVisible.value = true;
|
||||||
};
|
};
|
||||||
// 删除表格数据
|
// 删除表格数据
|
||||||
@ -302,6 +311,8 @@ const getProject = async () => {
|
|||||||
engList.value = [res.result];
|
engList.value = [res.result];
|
||||||
if (res.result) {
|
if (res.result) {
|
||||||
searchSn.value = res.result.projectSn;
|
searchSn.value = res.result.projectSn;
|
||||||
|
} else {
|
||||||
|
searchSn.value = "";
|
||||||
}
|
}
|
||||||
proTable.value.getTableList();
|
proTable.value.getTableList();
|
||||||
console.log(res);
|
console.log(res);
|
||||||
@ -312,6 +323,8 @@ const getengineering = async () => {
|
|||||||
engList.value = res.result;
|
engList.value = res.result;
|
||||||
if (res.result && res.result.length > 0) {
|
if (res.result && res.result.length > 0) {
|
||||||
searchSn.value = res.result[0].engineeringSn;
|
searchSn.value = res.result[0].engineeringSn;
|
||||||
|
} else {
|
||||||
|
searchSn.value = "";
|
||||||
}
|
}
|
||||||
proTable.value.getTableList();
|
proTable.value.getTableList();
|
||||||
console.log(res);
|
console.log(res);
|
||||||
|
|||||||
@ -1048,7 +1048,7 @@ onMounted(() => {
|
|||||||
.list-content {
|
.list-content {
|
||||||
display: grid;
|
display: grid;
|
||||||
// grid-template-columns: repeat(3, 1fr);
|
// grid-template-columns: repeat(3, 1fr);
|
||||||
grid-template-columns: repeat(auto-fit, minmax(530px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(530px, 0fr));
|
||||||
grid-gap: 20px;
|
grid-gap: 20px;
|
||||||
&-item {
|
&-item {
|
||||||
width: 530px;
|
width: 530px;
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
<div class="base-box" v-show="!showPage">
|
<div class="base-box" v-show="!showPage">
|
||||||
<el-form style="padding: 10% 30%" :model="baseFrom" ref="ruleFormRef" label-width="150px">
|
<el-form style="padding: 10% 30%" :model="baseFrom" ref="ruleFormRef" label-width="150px">
|
||||||
<el-form-item label="上级部门:" prop="parentId">
|
<el-form-item label="上级部门:" prop="parentId">
|
||||||
<el-select style="width: 100%" v-model="baseFrom.parentId" placeholder="请选择">
|
<el-select style="width: 100%" v-model="baseFrom.parentId" clearable placeholder="请选择">
|
||||||
<el-option v-for="item in treeDeptList" :key="item.deptId" :label="item.deptName" :value="item.deptId" />
|
<el-option v-for="item in treeDeptList" :key="item.deptId" :label="item.deptName" :value="item.deptId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -339,7 +339,8 @@ const formConfigDept = reactive({
|
|||||||
label: "上级部门",
|
label: "上级部门",
|
||||||
prop: "parentId",
|
prop: "parentId",
|
||||||
type: "select",
|
type: "select",
|
||||||
data: []
|
data: [],
|
||||||
|
clearable: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "部门名称",
|
label: "部门名称",
|
||||||
|
|||||||
@ -31,9 +31,27 @@
|
|||||||
</template>
|
</template>
|
||||||
</ProTable>
|
</ProTable>
|
||||||
<el-drawer v-model="drawerVisible" :destroy-on-close="true" :before-close="closeDrawer" size="450px" title="配置权限">
|
<el-drawer v-model="drawerVisible" :destroy-on-close="true" :before-close="closeDrawer" size="450px" title="配置权限">
|
||||||
|
<div class="select-all">
|
||||||
|
<el-checkbox
|
||||||
|
:indeterminate="isIndeterminate"
|
||||||
|
v-model="checkAll"
|
||||||
|
@change="handleCheckAllChange"
|
||||||
|
style="padding: 0px; margin-right: 5px"
|
||||||
|
>全选</el-checkbox
|
||||||
|
>
|
||||||
|
</div>
|
||||||
<span class="title sle">所拥有的权限</span>
|
<span class="title sle">所拥有的权限</span>
|
||||||
<el-scrollbar :style="{ height: title ? `calc(100% - 95px)` : `calc(100% - 56px)` }">
|
<el-scrollbar :style="{ height: title ? `calc(100% - 95px)` : `calc(100% - 56px)` }">
|
||||||
<el-tree ref="treeRef" default-expand-all :data="datas" show-checkbox node-key="name" :props="defaultProps"> </el-tree>
|
<el-tree
|
||||||
|
ref="treeRef"
|
||||||
|
default-expand-all
|
||||||
|
:data="datas"
|
||||||
|
show-checkbox
|
||||||
|
node-key="name"
|
||||||
|
:props="defaultProps"
|
||||||
|
@check-change="testCheckChange"
|
||||||
|
>
|
||||||
|
</el-tree>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="flx-center">
|
<div class="flx-center">
|
||||||
@ -80,7 +98,8 @@ import DialogForm from "@/components/DialogForm/index.vue";
|
|||||||
|
|
||||||
import { Delete } from "@element-plus/icons-vue";
|
import { Delete } from "@element-plus/icons-vue";
|
||||||
import { GlobalStore } from "@/stores";
|
import { GlobalStore } from "@/stores";
|
||||||
|
const checkAll = ref(false);
|
||||||
|
const isIndeterminate = ref(false);
|
||||||
const treeRef = ref(null);
|
const treeRef = ref(null);
|
||||||
|
|
||||||
const datas = reactive([]);
|
const datas = reactive([]);
|
||||||
@ -183,7 +202,52 @@ const formConfig = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
// 获取当前选中的节点
|
||||||
|
const testCheckChange = () => {
|
||||||
|
const tree = treeRef.value;
|
||||||
|
let checkedCount = 0;
|
||||||
|
let disabledCount = 0;
|
||||||
|
let indeterminateFlag = false;
|
||||||
|
for (let i = 0; i < datas.length; i++) {
|
||||||
|
if (tree.getNode(datas[i]).disabled == true) {
|
||||||
|
disabledCount += 1; // 如果有置灰的节点,置灰变量加1
|
||||||
|
}
|
||||||
|
if (tree.getNode(datas[i]).checked == true) {
|
||||||
|
checkedCount += 1; // 如果有勾选的节点,勾选变量加1
|
||||||
|
}
|
||||||
|
if (tree.getNode(datas[i]).indeterminate == true) {
|
||||||
|
indeterminateFlag = true; // 如果有半选的节点,半选变量设为true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (checkedCount == 0) {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
checkAll.value = false; // 如果勾选的一级节点数为0,则设置全选按钮样式不为半选样式,全选的值为false
|
||||||
|
if (indeterminateFlag == true) {
|
||||||
|
isIndeterminate.value = true;
|
||||||
|
checkAll.value = false;
|
||||||
|
}
|
||||||
|
} else if (checkedCount + disabledCount == datas.length) {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
checkAll.value = true;
|
||||||
|
} else {
|
||||||
|
isIndeterminate.value = true;
|
||||||
|
checkAll.value = false;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
const handleCheckAllChange = (val: any) => {
|
||||||
|
isIndeterminate.value = false;
|
||||||
|
if (checkAll.value == true) {
|
||||||
|
for (let i = 0; i < datas.length; i++) {
|
||||||
|
if (treeRef.value.getNode(datas[i]).disabled == false) {
|
||||||
|
console.log(datas[i].path);
|
||||||
|
treeRef.value.setChecked(datas[i].name, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
treeRef.value.setCheckedKeys([]);
|
||||||
|
}
|
||||||
|
};
|
||||||
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,那么你可以在这里进行处理成这些字段
|
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,那么你可以在这里进行处理成这些字段
|
||||||
// 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
|
// 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
|
||||||
const dataCallback = (data: any) => {
|
const dataCallback = (data: any) => {
|
||||||
@ -225,9 +289,18 @@ const transfrom = (arr: Array<any>) => {
|
|||||||
|
|
||||||
const confirm = async () => {
|
const confirm = async () => {
|
||||||
const checked = treeRef.value.getCheckedNodes();
|
const checked = treeRef.value.getCheckedNodes();
|
||||||
await editRolePermissions(transfrom(checked));
|
const halfChecked = treeRef.value.getHalfCheckedNodes();
|
||||||
drawerVisible.value = false;
|
const checkedArr = transfrom(checked);
|
||||||
datas.length = 0;
|
const halfCheckedArr = transfrom(halfChecked);
|
||||||
|
const concatArr: any = checkedArr.concat(halfCheckedArr);
|
||||||
|
console.log(halfChecked);
|
||||||
|
if (!concatArr.length) {
|
||||||
|
ElMessage.error("请选择");
|
||||||
|
} else {
|
||||||
|
await editRolePermissions(concatArr);
|
||||||
|
drawerVisible.value = false;
|
||||||
|
datas.length = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
// 如果你想在请求之前对当前请求参数做一些操作,可以自定义如下函数:params 为当前所有的请求参数(包括分页),最后返回请求列表接口
|
||||||
@ -265,7 +338,13 @@ const handleEditItem = async (row: any) => {
|
|||||||
const res = await getTreeByIdList({ roleId: row.roleId });
|
const res = await getTreeByIdList({ roleId: row.roleId });
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
treeRef.value.setCheckedKeys(res.result.map(item => item.authorityId));
|
treeRef.value.setCheckedKeys(
|
||||||
|
res.result.map(item => {
|
||||||
|
if (item.type != 0) {
|
||||||
|
return item.authorityId;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user