From 9cf32f84934cf13dba77e20fdddf8703e11b0c62 Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期二, 13 八月 2024 20:04:20 +0800
Subject: [PATCH] agent会话开发
---
src/views/authority/users/index.vue | 415 ++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 311 insertions(+), 104 deletions(-)
diff --git a/src/views/authority/users/index.vue b/src/views/authority/users/index.vue
index d4cfc99..6d76315 100644
--- a/src/views/authority/users/index.vue
+++ b/src/views/authority/users/index.vue
@@ -2,71 +2,68 @@
<div class="container">
<authheader :items="menuTips"></authheader>
<a-card ref="account" class="general-card">
- <a-row>
- <a-col :flex="2"></a-col>
- <a-col :flex="1">
- <a-form :model="formModel" style="margin-top: 30px">
- <a-form-item field="name">
- <a-input
- v-model="formModel.name"
- :style="{ width: '320px' }"
- :placeholder="$t('璇疯緭鍏�')"
- />
- </a-form-item>
- </a-form>
- </a-col>
- <a-col :flex="'200px'" style="text-align: right; margin-top: 30px">
- <a-button @click="reset" style="margin-right: 20px">
- <template #icon>
- <icon-refresh />
- </template>
- {{ $t('searchTable.form.reset') }}
- </a-button>
- <a-button type="primary" @click="search">
- <template #icon>
- <icon-search />
- </template>
- {{ $t('searchTable.form.search') }}
- </a-button>
- </a-col>
- </a-row>
- <a-divider style="margin-top: 0" />
- <a-row style="margin-bottom: 16px">
- <a-col :span="12">
- <a-space>
- <a-button type="primary" :align="'right'" @click="operation(0)"
- >+ 鏂板缓璐︽埛</a-button
+ <div class="table-page-search-wrapper">
+ <div class="search-wrapper">
+ <div>
+ <a-input
+ v-model="formModel.name"
+ :style="{ width: '320px' }"
+ :placeholder="$t('璇疯緭鍏�')"
+ />
+ </div>
+ <div>
+ <a-button
+ type="primary"
+ @click="search"
+ style="margin-right: 20px; margin-left: 10px"
>
- </a-space>
- </a-col>
- <a-col
- :span="12"
- style="display: flex; align-items: center; justify-content: end"
- >
- <a-tooltip :content="$t('searchTable.actions.refresh')">
- <div class="action-icon" @click="search">
- <icon-refresh size="18" />
- </div>
- </a-tooltip>
- <a-dropdown @select="handleSelectDensity">
- <a-tooltip :content="$t('searchTable.actions.density')">
- <div class="action-icon">
- <icon-line-height size="18" />
+ <template #icon>
+ <icon-search />
+ </template>
+ {{ $t('searchTable.form.search') }}
+ </a-button>
+ <a-button @click="reset">
+ <template #icon>
+ <icon-refresh />
+ </template>
+ {{ $t('searchTable.form.reset') }}
+ </a-button>
+ </div>
+ </div>
+ <div class="search-wrapper">
+ <div>
+ <a-space>
+ <a-button type="primary" :align="'right'" @click="operation(0)"
+ >+ 鏂板缓璐︽埛</a-button
+ >
+ </a-space></div
+ >
+ <div class="wrapper-icon">
+ <a-tooltip :content="$t('searchTable.actions.refresh')">
+ <div class="action-icon" @click="search">
+ <icon-refresh size="18" />
</div>
</a-tooltip>
- <template #content>
- <a-doption
- v-for="item in densityList"
- :key="item.value"
- :value="item.value"
- :class="{ active: item.value === size }"
- >
- <span>{{ item.name }}</span>
- </a-doption>
- </template>
- </a-dropdown>
- </a-col>
- </a-row>
+ <a-dropdown @select="handleSelectDensity">
+ <a-tooltip :content="$t('searchTable.actions.density')">
+ <div class="action-icon">
+ <icon-line-height size="18" />
+ </div>
+ </a-tooltip>
+ <template #content>
+ <a-doption
+ v-for="item in densityList"
+ :key="item.value"
+ :value="item.value"
+ :class="{ active: item.value === size }"
+ >
+ <span>{{ item.name }}</span>
+ </a-doption>
+ </template>
+ </a-dropdown>
+ </div>
+ </div>
+ </div>
<a-table
row-key="id"
:loading="loading"
@@ -129,17 +126,14 @@
@ok="editHandleOk"
>
<a-form :model="editform">
+ <a-form-item field="email" label="鐢ㄦ埛鍚�">
+ <a-input v-model="editform.email" />
+ </a-form-item>
<a-form-item field="name" label="鏄电О">
<a-input v-model="editform.nickName" />
</a-form-item>
- <a-form-item field="userName" label="鐢ㄦ埛鍚�">
- <a-input v-model="editform.userName" />
- </a-form-item>
<a-form-item field="phoneNumber" label="鎵嬫満鍙�">
<a-input v-model="editform.phoneNumber" />
- </a-form-item>
- <a-form-item field="email" label="閭">
- <a-input v-model="editform.email" />
</a-form-item>
</a-form>
</a-modal>
@@ -187,8 +181,9 @@
</div>
</a-modal>
<a-modal
- width="30%"
+ width="50%"
v-model:visible="resourcevisible"
+ v-if="resourcevisible"
title="鏉冮檺閰嶇疆"
@cancel="handleCancel(3)"
@ok="editResourceHandleOk"
@@ -203,7 +198,7 @@
鑿滃崟
</template>
<a-tree
- class="tree-demo"
+ class="tree-demo-box"
v-model:checked-keys="checkedKeysMenu"
v-model:expanded-keys="expandKdysMenu"
:checkable="true"
@@ -217,7 +212,66 @@
}"
:check-strictly="checkStrictlyMenu"
>
+ <!-- <template #extra="nodeData">
+ <div :class="{ 'custom-class': nodeData.menuType == 1 }">
+ <span>
+ {{ nodeData.menuName }}
+ </span>
+ </div>
+ </template> -->
</a-tree>
+ <!-- <a-space class="space_select_all">
+ <a-button type="primary">鍏ㄩ��</a-button>
+ <a-button>鍙栨秷鍏ㄩ��</a-button>
+ </a-space>
+
+ <div class="table_box" v-if="treeDataMenu[0].children">
+ <div class="table_row1">
+ <div
+ class="row1_list"
+ v-for="(item, index) in treeDataMenu[0].children"
+ :key="item.menuId"
+ >
+ <div class="row1_clo">
+ <a-checkbox
+ :checked="item.menuId"
+ @change="onCheckChange(item, $event)"
+ >
+ {{ item.menuName }}
+ </a-checkbox>
+ </div>
+ <div v-if="item.children" class="row1_clo2">
+ <div
+ class="row2_clo2_1"
+ v-for="(item2, index2) in item.children"
+ :key="item2.menuId"
+ >
+ <div class="row1_clo2_1">
+ <a-checkbox
+ :checked="item2.menuId"
+ @change="onCheckChange(item2, $event)"
+ >
+ {{ item2.menuName }}
+ </a-checkbox>
+ </div>
+ <div v-if="item2.children" class="row1_clo2_2">
+ <div
+ v-for="(item3, index3) in item2.children"
+ :key="item3.menuId"
+ >
+ <a-checkbox
+ :checked="item3.menuId"
+ @change="onCheckChange(item3, $event)"
+ >
+ {{ item3.menuName }}</a-checkbox
+ >
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div> -->
</a-tab-pane>
<a-tab-pane key="2">
<template #title>
@@ -312,7 +366,7 @@
</template>
<script lang="ts" setup>
- import { computed, reactive, ref } from 'vue';
+ import { computed, reactive, ref, h, onMounted } from 'vue';
import { useI18n } from 'vue-i18n';
import useLoading from '@/hooks/loading';
import { Pagination } from '@/types/global';
@@ -332,13 +386,14 @@
} from '@/api/authority';
import { Modal } from '@arco-design/web-vue';
import Authheader from '@/views/authority/components/authheader.vue';
+ import { create } from 'lodash';
let treeData = ref([]);
let checkedKeys = ref([]);
let expandKdys = ref([]);
let checkStrictly = ref([]);
- let treeDataMenu = ref([]);
+ let treeDataMenu = ref<any>([]);
let checkedKeysMenu = ref([]);
let expandKdysMenu = ref([]);
let checkStrictlyMenu = ref([]);
@@ -369,6 +424,7 @@
let editform = ref<User>({
createTime: '',
dept: undefined,
+ deptName: '',
email: '',
nickName: '',
phoneNumber: '',
@@ -382,6 +438,13 @@
let deptvisible = ref(false);
let resourcevisible = ref(false);
let selectUser = ref({});
+ // const treeDataList = ref([]);
+ const checked1 = ref(false);
+
+ //琛ㄦ牸澶嶉�夋閫夋嫨
+ const onCheckChange = (checkedKeysValue: (string | number)[], e: any) => {
+ console.log('onCheckChange', checkedKeysValue, e);
+ };
const onCheck = (newCheckedKeys, event) => {
let o = { deptId: event.node.deptId, deptName: event.node.deptName };
@@ -468,7 +531,7 @@
const basePagination: Pagination = {
current: 1,
- pageSize: 20,
+ pageSize: 15,
};
const pagination = reactive({
...basePagination,
@@ -499,7 +562,7 @@
slotName: 'index',
},
{
- title: t('鐧诲綍鍚�'),
+ title: t('鐢ㄦ埛鍚�'),
dataIndex: 'email',
},
{
@@ -508,8 +571,8 @@
},
{
title: t('鎵�灞為儴闂�'),
- dataIndex: 'dept',
- slotName: 'dept',
+ dataIndex: 'deptName',
+ slotName: 'deptName',
},
{
title: t('鐘舵��'),
@@ -630,7 +693,7 @@
//鍒犻櫎
if (t == 3) {
await UserDelete(record.userId).then((res) => {
- if (res.code == 20000) {
+ if (res.code == 200) {
fetchData();
}
});
@@ -646,28 +709,34 @@
checkStrictlyDialog.value = [];
checkedKeysDialog.value = [];
selectUser.value = record;
- record.resources.forEach((val) => {
- checkStrictlyMenu.value.push({
- menuId: val.menuId,
- menuName: val.menuName,
+ if (record.resources) {
+ record.resources.forEach((val) => {
+ checkStrictlyMenu.value.push({
+ menuId: val.menuId,
+ menuName: val.menuName,
+ });
+ checkedKeysMenu.value.push(val.menuId);
+ expandKdysMenu.value.push(val.menuId);
});
- checkedKeysMenu.value.push(val.menuId);
- expandKdysMenu.value.push(val.menuId);
- });
- record.knowledges.forEach((val) => {
- checkStrictlyKnowledge.value.push({
- knowledgeId: val.id,
- knowledgeName: val.name,
+ }
+ if (record.knowledges) {
+ record.knowledges.forEach((val) => {
+ checkStrictlyKnowledge.value.push({
+ knowledgeId: val.id,
+ knowledgeName: val.name,
+ });
+ checkedKeysKnowledge.value.push(val.id);
});
- checkedKeysKnowledge.value.push(val.id);
- });
- record.dialogs.forEach((val) => {
- checkStrictlyDialog.value.push({
- dialogId: val.id,
- dialogName: val.name,
+ }
+ if (record.dialogs) {
+ record.dialogs.forEach((val) => {
+ checkStrictlyDialog.value.push({
+ dialogId: val.id,
+ dialogName: val.name,
+ });
+ checkedKeysDialog.value.push(val.id);
});
- checkedKeysDialog.value.push(val.id);
- });
+ }
}
//鏈烘瀯
if (t == 5) {
@@ -677,14 +746,16 @@
checkStrictly.value = [];
selectUser.value = record;
expandKdys.value.push('0');
- record.dept.forEach((val) => {
- checkStrictly.value.push({
- deptId: val.deptId,
- deptName: val.deptName,
+ if (record.dept) {
+ record.dept.forEach((val) => {
+ checkStrictly.value.push({
+ deptId: val.deptId,
+ deptName: val.deptName,
+ });
+ checkedKeys.value.push(val.deptId);
+ expandKdys.value.push(val.deptId);
});
- checkedKeys.value.push(val.deptId);
- expandKdys.value.push(val.deptId);
- });
+ }
}
};
@@ -694,6 +765,17 @@
setLoading(true);
try {
await UserList(params).then((res) => {
+ for (const user of res.rows) {
+ if (user.dept) {
+ for (const d of user.dept) {
+ if (user.deptName) {
+ user.deptName += d.deptName + ',';
+ } else {
+ user.deptName = d.deptName + ',';
+ }
+ }
+ }
+ }
renderData.value = res.rows;
console.log(renderData);
pagination.current = params.current;
@@ -722,9 +804,12 @@
treeData.value = [...res.rows];
});
};
+ const objArr = ref<any>([]);
const MenuData = async (key) => {
await ResourceList(key).then((res) => {
treeDataMenu.value = [...res.rows];
+ // addClassToLeafNodes(treeDataMenu.value);
+ treeDataList.value = res.rows;
});
};
@@ -751,7 +836,7 @@
};
</script>
-<style scoped>
+<style scoped lang="less">
.card-demo {
width: 460px;
margin-left: 24px;
@@ -761,4 +846,126 @@
.card-demo:hover {
transform: translateY(-4px);
}
+ .table-page-search-wrapper {
+ padding-top: 10px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 20px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #e8e8e8;
+ .search-wrapper {
+ display: flex;
+ .wrapper-icon {
+ display: flex;
+ align-items: center;
+ margin-left: 40px;
+ // margin-right: 40px;
+ }
+ }
+ }
+ .space_select_all {
+ display: flex;
+ justify-content: end;
+ margin-bottom: 15px;
+ }
+ .table_box {
+ display: flex;
+
+ border: 1px solid #e8e8e8;
+ border-bottom: none;
+ .row1_clo {
+ min-width: 200px;
+ display: flex;
+ padding-left: 20px;
+ border-right: 1px solid #e8e8e8;
+ }
+ .table_row1 {
+ width: 100%;
+ .row1_list {
+ display: flex;
+ min-height: 40px;
+ border-bottom: 1px solid #e8e8e8;
+ // line-height: 40px;
+ }
+ }
+ .row1_clo2 {
+ width: 100%;
+ border-top: none;
+ .row2_clo2_1 {
+ display: flex;
+ width: 100%;
+ min-height: 40px;
+ line-height: 40px;
+ border-bottom: 1px solid #e8e8e8;
+ .row1_clo2_1 {
+ border-right: 1px solid #e8e8e8;
+ min-width: 310px;
+ padding-left: 20px;
+ }
+ .row1_clo2_2 {
+ border-top: none;
+ border-right: none;
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ div {
+ margin-left: 20px;
+ }
+ }
+ }
+ }
+ .row2_clo2_1:last-child {
+ border-bottom: none;
+ }
+ }
+</style>
+<style lang="less">
+ .ant-table-wrapper {
+ .ant-table-tbody {
+ tr {
+ td {
+ .ant-table-row-cell-break-word {
+ .ant-table-column-sorter {
+ display: none;
+ }
+ }
+ }
+ }
+ }
+
+ .search-wrapper {
+ display: flex;
+ .wrapper-icon {
+ display: flex;
+ align-items: center;
+ margin-left: 40px;
+ // margin-right: 40px;
+ }
+ }
+ }
+</style>
+<style lang="less">
+ .ant-table-wrapper {
+ .ant-table-tbody {
+ tr {
+ td {
+ .ant-table-row-cell-break-word {
+ .ant-table-column-sorter {
+ display: none;
+ }
+ }
+ }
+ }
+ }
+ }
+</style>
+<style lang="less" scoped>
+ .table-page-search-wrapper {
+ .ant-form-inline {
+ :deep(.ant-form-item) {
+ display: flex;
+ }
+ }
+ }
</style>
--
Gitblit v1.8.0