| | |
| | | |
| | | </a-modal> |
| | | <a-modal width="30%" v-model:visible="resourcevisible" title="权限配置" @cancel="handleCancel(3)" |
| | | @ok="editDeptHandleOk"> |
| | | @ok="editResourceHandleOk"> |
| | | <div :style="{ display:'flex', 'flex-direction':'column' }"> |
| | | <a-tabs :style="{ width: '100%',height: '500px', 'overflow-y': 'auto' }"> |
| | | <a-tab-pane key="1"> |
| | | <template #title> |
| | | <icon-calendar/> 菜单 |
| | | <icon-calendar /> |
| | | 菜单 |
| | | </template> |
| | | Content of Tab Panel 1 |
| | | <a-tree |
| | | class="tree-demo" |
| | | v-model:checked-keys="checkedKeysMenu" |
| | | v-model:expanded-keys="expandKdysMenu" |
| | | :checkable="true" |
| | | :data="treeDataMenu" |
| | | :show-line="showLineMenu" |
| | | @check="onCheckMenu" |
| | | :fieldNames="{ |
| | | key:'menuId', |
| | | title:'menuName', |
| | | children:'children', |
| | | }" |
| | | :check-strictly="checkStrictlyMenu" |
| | | > |
| | | </a-tree> |
| | | </a-tab-pane> |
| | | <a-tab-pane key="2"> |
| | | <template #title> |
| | | <icon-clock-circle/> 知识库 |
| | | <icon-clock-circle /> |
| | | 知识库 |
| | | </template> |
| | | Content of Tab Panel 2 |
| | | <a-space direction="vertical" size="large"> |
| | | <a-checkbox-group v-model="checkedKeysKnowledge" direction="vertical" @change="onCheckKnowledge"> |
| | | <a-checkbox |
| | | v-for="(knowledg, index) of knowledgeList" |
| | | :value="knowledg.knowledgeId" |
| | | :lable="knowledg.knowledgeName" |
| | | @change="onCheckKnowledge" |
| | | > |
| | | {{ knowledg.knowledgeName }} |
| | | </a-checkbox> |
| | | </a-checkbox-group> |
| | | </a-space> |
| | | </a-tab-pane> |
| | | <a-tab-pane key="3"> |
| | | <template #title> |
| | | <icon-user/> 智能体 |
| | | <icon-user /> |
| | | 智能体 |
| | | </template> |
| | | Content of Tab Panel 3 |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | <a-card :style="{ width: '100%',height: '200px', 'overflow-y': 'auto', margin:'1px'}" |
| | | class="card-demo" |
| | | title="用户所有权限" |
| | | hoverable |
| | | <a-card :style="{ width: '100%',height: '200px', 'overflow-y': 'auto', margin:'1px'}" |
| | | class="card-demo" |
| | | title="用户所有权限" |
| | | hoverable |
| | | > |
| | | <a-space wrap> |
| | | 菜单功能: |
| | | <a-tag |
| | | v-for="(tag, index) of checkResourceStrictly" |
| | | :key="tag.deptId" |
| | | @close="handleRemove(tag)" |
| | | v-for="(tag, index) of checkStrictlyMenu" |
| | | :key="tag.menuId" |
| | | @close="handleMenuRemove(tag)" |
| | | > |
| | | {{ tag.deptName }} |
| | | {{ tag.menuName }} |
| | | </a-tag> |
| | | </a-space> |
| | | <a-divider /> |
| | | <a-space wrap> |
| | | 知识库: |
| | | <a-tag |
| | | v-for="(tag, index) of checkStrictlyKnowledge" |
| | | :key="tag.knowledgeId" |
| | | @close="handleKnowledgeRemove(tag)" |
| | | > |
| | | {{ tag.knowledgeName }} |
| | | </a-tag> |
| | | </a-space> |
| | | </a-card> |
| | |
| | | import { Pagination } from "@/types/global"; |
| | | import type { TableColumnData } from "@arco-design/web-vue/es/table/interface"; |
| | | import { |
| | | KnowledgeList, |
| | | OrganizationList, |
| | | ResourceList, |
| | | User, |
| | | UserAdd, |
| | | UserChangePwd, |
| | |
| | | let checkedKeys = ref([]); |
| | | let expandKdys = ref([]); |
| | | let checkStrictly = ref([]); |
| | | let checkResourceStrictly=ref([]) |
| | | |
| | | |
| | | let treeDataMenu = ref([]); |
| | | let checkedKeysMenu = ref([]); |
| | | let expandKdysMenu = ref([]); |
| | | let checkStrictlyMenu = ref([]); |
| | | |
| | | let checkedKeysKnowledge= ref([]); |
| | | let checkStrictlyKnowledge= ref([]); |
| | | |
| | | let knowledgeList = ref([]); |
| | | |
| | | let menuTips = ref(["权限管理", "账号"]); |
| | | type SizeProps = "mini" | "small" | "medium" | "large"; |
| | | const account = ref(null); |
| | |
| | | |
| | | } |
| | | }; |
| | | const onCheckMenu = (newCheckedKeys, event) => { |
| | | let o = { "menuId": event.node.menuId, "menuName": event.node.menuName }; |
| | | if (event.checked) { |
| | | checkStrictlyMenu.value.push(o); |
| | | } else { |
| | | checkStrictlyMenu.value.forEach((val, idx, array) => { |
| | | // val: 当前值 |
| | | if (val.menuId == event.node.menuId) { |
| | | checkStrictlyMenu.value.splice(idx, 1); |
| | | return true; |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | const onCheckKnowledge = (newCheckedKeys, event) => { |
| | | let o = { "knowledgeId": event.target.value, "knowledgeName": event.target.labels[0].innerText }; |
| | | if (event.target.checked) { |
| | | checkStrictlyKnowledge.value.push(o); |
| | | } else { |
| | | checkStrictlyKnowledge.value.forEach((val, idx, array) => { |
| | | // val: 当前值 |
| | | if (val.knowledgeId == event.target.value) { |
| | | checkStrictlyKnowledge.value.splice(idx, 1); |
| | | return true; |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | const handleRemove = (key) => { |
| | | checkStrictly.value = checkStrictly.value.filter((tag) => tag !== key); |
| | | }; |
| | | const handleMenuRemove = (key) => { |
| | | checkStrictlyMenu.value = checkStrictlyMenu.value.filter((tag) => tag !== key); |
| | | }; |
| | | const handleKnowledgeRemove = (key) => { |
| | | checkStrictlyKnowledge.value = checkStrictlyKnowledge.value.filter((tag) => tag !== key); |
| | | }; |
| | | |
| | | const basePagination: Pagination = { |
| | | current: 1, |
| | | pageSize: 20 |
| | |
| | | }); |
| | | }; |
| | | |
| | | const editResourceHandleOk = async () => { |
| | | let resources: Array = [],Knowledges: Array = [], user: User = { "userId": selectUser.value.userId }; |
| | | checkStrictlyMenu.value.forEach((val) => { |
| | | resources.push(val.menuId); |
| | | }); |
| | | user.resources = resources; |
| | | checkStrictlyKnowledge.value.forEach((val) => { |
| | | Knowledges.push(val.knowledgeId); |
| | | }); |
| | | user.knowledges = Knowledges; |
| | | |
| | | await UserEdit(user).then((res) => { |
| | | fetchData(); |
| | | }); |
| | | }; |
| | | |
| | | const editHandleOk = async () => { |
| | | if (editform.value.userId.length > 0) { |
| | | await UserEdit({ |
| | |
| | | //权限 |
| | | if (t == 4) { |
| | | resourcevisible.value = true; |
| | | |
| | | checkedKeysMenu.value = []; |
| | | expandKdysMenu.value = []; |
| | | checkStrictlyMenu.value = []; |
| | | checkStrictlyKnowledge.value=[]; |
| | | checkedKeysKnowledge.value=[]; |
| | | selectUser.value = record; |
| | | record.resources.forEach((val) => { |
| | | checkStrictlyMenu.value.push({ "menuId": val.menuId, "menuName": val.menuName }); |
| | | checkedKeysMenu.value.push(val.menuId); |
| | | expandKdysMenu.value.push(val.menuId); |
| | | }); |
| | | record.knowledges.forEach((val) => { |
| | | checkStrictlyKnowledge.value.push({ "knowledgeId": val.knowledgeId, "knowledgeName": val.knowledgeName }); |
| | | checkedKeysKnowledge.value.push(val.knowledgeId); |
| | | }); |
| | | |
| | | } |
| | | //机构 |
| | |
| | | treeData.value = [...res.rows]; |
| | | }); |
| | | }; |
| | | const MenuData = async (key) => { |
| | | await ResourceList(key).then((res) => { |
| | | treeDataMenu.value = [...res.rows]; |
| | | }); |
| | | }; |
| | | |
| | | KnowledgeList().then((res) => { |
| | | knowledgeList.value = res.rows; |
| | | }); |
| | | fetchData(); |
| | | OrganizationData(""); |
| | | MenuData(); |
| | | |
| | | const reset = () => { |
| | | formModel.value = generateFormModel(); |