From 3438297d98a80b8876cf43efdfee4a0216d81396 Mon Sep 17 00:00:00 2001 From: zhangxiao <898441624@qq.com> Date: 星期四, 08 八月 2024 20:10:21 +0800 Subject: [PATCH] feat: 修改bug --- src/views/authority/users/index.vue | 168 +++++++++- src/views/list/search-table/locale/zh-CN.ts | 2 config/vite.config.dev.ts | 11 src/views/session/sessionRecordsManager/index.vue | 139 ++++++-- src/views/authority/organization/index.vue | 302 ++++++++++-------- src/views/authority/resource/index.vue | 309 +++++++++--------- 6 files changed, 578 insertions(+), 353 deletions(-) diff --git a/config/vite.config.dev.ts b/config/vite.config.dev.ts index 58d7a75..a719586 100644 --- a/config/vite.config.dev.ts +++ b/config/vite.config.dev.ts @@ -13,7 +13,8 @@ }, proxy: { '/base': { - target: 'http://aiotlink.com:8189', + // target: 'http://aiotlink.com:8189', + target: 'http://192.168.20.116:8089', changeOrigin: true, ws: true, // rewrite: (path) => path.replace(new RegExp(`^/basic-api`), ''), @@ -21,17 +22,17 @@ // secure: false }, '/api': { - // target: 'http://192.168.20.116:1080', + target: 'http://192.168.20.116:8089', // target: 'http://192.168.20.158:8089', - target: 'http://aiotlink.com:8189', + // target: 'http://aiotlink.com:8189', changeOrigin: true, ws: true, // rewrite: (path) => path.replace(new RegExp(`^/basic-api`), ''), }, '/api/v1': { - // target: 'http://192.168.20.116:1080', + target: 'http://192.168.20.116:8089', // target: 'http://192.168.20.158:8089', - target: 'http://aiotlink.com:8189', + // target: 'http://aiotlink.com:8189', changeOrigin: true, ws: true, // rewrite: (path) => path.replace(new RegExp(`^/basic-api`), ''), diff --git a/src/views/authority/organization/index.vue b/src/views/authority/organization/index.vue index 5088a73..03c4f6d 100644 --- a/src/views/authority/organization/index.vue +++ b/src/views/authority/organization/index.vue @@ -4,7 +4,11 @@ <a-row :gutter="20"> <a-col :span="8"> - <a-card :title="$t('menu.organization.title')" :bordered="false" :style="{ width: '100%',height: '900px', 'overflow-y': 'auto' }"> + <a-card + :title="$t('menu.organization.title')" + :bordered="false" + style=" 'width': '100%'; height: calc(100vh - 250px);; 'overflow-y': 'auto' " + > <a-tree class="tree-demo" draggable @@ -12,33 +16,54 @@ :data="treeData" :show-line="showLine" :fieldNames="{ - key:'deptId', - title:'deptName', - children:'children', + key: 'deptId', + title: 'deptName', + children: 'children', }" @drop="onDrop" @select="showDetail" > <template #extra="nodeData"> <IconPlus - style="position: absolute; right: 60px; font-size: 12px; top: 10px; color: #3370ff;" + style=" + position: absolute; + right: 60px; + font-size: 12px; + top: 10px; + color: #3370ff; + " @click="() => onIconClick(nodeData)" /> - <IconDelete style="position: absolute; right: 40px; font-size: 12px; top: 10px; color: #3370ff;" - @click="() => onIconClickDelete(nodeData)" /> + <IconDelete + style=" + position: absolute; + right: 40px; + font-size: 12px; + top: 10px; + color: #3370ff; + " + @click="() => onIconClickDelete(nodeData)" + /> </template> </a-tree> - </a-card> </a-col> <a-col :span="16"> - <a-card :title="$t('menu.organization.detail')" :bordered="false" :style="{ width: '100%' }"> + <a-card + :title="$t('menu.organization.detail')" + :bordered="false" + :style="{ width: '100%' }" + > <a-form :model="deptform" layout="horizontal"> <a-form-item field="parentName" label="涓婄骇鏈烘瀯"> <a-input v-model="deptform.parentId" /> </a-form-item> <a-form-item field="status" label="鏈烘瀯鐘舵��"> - <a-switch checked-value="0" unchecked-value="1" v-model="deptform.status"></a-switch> + <a-switch + checked-value="0" + unchecked-value="1" + v-model="deptform.status" + ></a-switch> </a-form-item> <a-form-item field="deptName" label="鏈烘瀯鍚嶇О"> <a-input v-model="deptform.deptName" /> @@ -54,7 +79,7 @@ </a-form-item> <a-form-item> <a-space> - <a-button @click="editdept">淇濆瓨</a-button> + <a-button @click="editdept">淇濆瓨</a-button> <a-button @click="reset(deptform.deptId)">閲嶇疆</a-button> </a-space> </a-form-item> @@ -62,13 +87,23 @@ </a-card> </a-col> </a-row> - <a-modal width="50%" v-model:visible="visible" title="鏂板" @cancel="handleCancel" @ok="addDept"> + <a-modal + width="50%" + v-model:visible="visible" + title="鏂板" + @cancel="handleCancel" + @ok="addDept" + > <a-form :model="deptform" layout="horizontal"> <a-form-item field="parentName" label="涓婄骇鏈烘瀯"> <a-input v-model="deptform.parentName" /> </a-form-item> <a-form-item field="status" label="鏈烘瀯鐘舵��"> - <a-switch checked-value="0" unchecked-value="1" v-model="deptform.status"></a-switch> + <a-switch + checked-value="0" + unchecked-value="1" + v-model="deptform.status" + ></a-switch> </a-form-item> <a-form-item field="deptName" label="鏈烘瀯鍚嶇О"> <a-input v-model="deptform.deptName" /> @@ -88,141 +123,142 @@ </template> <script lang="ts" setup> -import { ref } from "vue"; -import { IconPlus } from "@arco-design/web-vue/es/icon"; -import { - Organization, - OrganizationAdd, - OrganizationById, - OrganizationDelete, - OrganizationList, - OrganizationUpdate -} from "@/api/authority"; -import Authheader from "@/views/authority/components/authheader.vue"; -import { Modal } from "@arco-design/web-vue"; + import { ref } from 'vue'; + import { IconPlus } from '@arco-design/web-vue/es/icon'; + import { + Organization, + OrganizationAdd, + OrganizationById, + OrganizationDelete, + OrganizationList, + OrganizationUpdate, + } from '@/api/authority'; + import Authheader from '@/views/authority/components/authheader.vue'; + import { Modal } from '@arco-design/web-vue'; -let visible = ref(false); -let treeData = ref([]); -let showLine = ref(true); -let menuTips = ref(["鏉冮檺绠$悊", "鏈烘瀯"]); -let deptform = ref<Organization>({ - deptName: "", - email: "", - leader: "", - orderNum: "0", - parentId: "", - parentName: "", - phone: "", - status: "", - address: "", - deptId: "" -}); + let visible = ref(false); + let treeData = ref([]); + let showLine = ref(true); + let menuTips = ref(['鏉冮檺绠$悊', '鏈烘瀯']); + let deptform = ref<Organization>({ + deptName: '', + email: '', + leader: '', + orderNum: '0', + parentId: '', + parentName: '', + phone: '', + status: '', + address: '', + deptId: '', + }); -const onIconClick = (nodeData) => { - deptform.value.parentName = nodeData.deptName; - deptform.value.parentId = nodeData.deptId; - visible.value = true; -}; + const onIconClick = (nodeData) => { + deptform.value.parentName = nodeData.deptName; + deptform.value.parentId = nodeData.deptId; + visible.value = true; + }; -const addDept = async () => { - await OrganizationAdd({ - ...deptform.value - } as unknown as Organization).then((res) => { - OrganizationData(""); - }); -}; - -const onIconClickDelete = (nodeData) => { - OrganizationDelete(nodeData.deptId).then(() => { - OrganizationData(""); - }); -}; - -const showDetail = (id) => { - OrganizationById(id).then((res) => { - deptform.value = {...res.data}; - }); -}; -const editdept=()=>{ - OrganizationUpdate({ - ...deptform.value - } as unknown as Organization).then((res) => { - OrganizationData(""); - Modal.success({ - title: "淇濆瓨鎴愬姛", - content: "淇濆瓨鎴愬姛" - }); - }); -} -const reset=(id)=>{ - OrganizationById(id).then((res) => { - deptform.value = {...res.data}; - }); -} - -const onDrop = ({ dragNode, dropNode, dropPosition }) => { - const data = treeData.value; - OrganizationUpdate({ - orderNum: "0", parentId: dropNode.deptId, deptId: dragNode.deptId - }); - const loop = (data, key, callback) => { - data.some((item, index, arr) => { - if (item.deptId === key) { - callback(item, index, arr); - return true; - } - if (item.children) { - return loop(item.children, key, callback); - } - return false; + const addDept = async () => { + await OrganizationAdd({ + ...deptform.value, + } as unknown as Organization).then((res) => { + OrganizationData(''); }); }; - loop(data, dragNode.deptId, (_, index, arr) => { - arr.splice(index, 1); - }); - - if (dropPosition === 0) { - loop(data, dropNode.deptId, (item) => { - item.children = item.children || []; - item.children.push(dragNode); + const onIconClickDelete = (nodeData) => { + OrganizationDelete(nodeData.deptId).then(() => { + OrganizationData(''); }); - } else { - loop(data, dropNode.deptId, (_, index, arr) => { - arr.splice(dropPosition < 0 ? index : index + 1, 0, dragNode); + }; + + const showDetail = (id) => { + OrganizationById(id).then((res) => { + deptform.value = { ...res.data }; }); - } -}; + }; + const editdept = () => { + OrganizationUpdate({ + ...deptform.value, + } as unknown as Organization).then((res) => { + OrganizationData(''); + Modal.success({ + title: '淇濆瓨鎴愬姛', + content: '淇濆瓨鎴愬姛', + }); + }); + }; + const reset = (id) => { + OrganizationById(id).then((res) => { + deptform.value = { ...res.data }; + }); + }; -const handleCancel = (type) => { - if (type == 1) { - visible.value = false; - } -}; + const onDrop = ({ dragNode, dropNode, dropPosition }) => { + const data = treeData.value; + OrganizationUpdate({ + orderNum: '0', + parentId: dropNode.deptId, + deptId: dragNode.deptId, + }); + const loop = (data, key, callback) => { + data.some((item, index, arr) => { + if (item.deptId === key) { + callback(item, index, arr); + return true; + } + if (item.children) { + return loop(item.children, key, callback); + } + return false; + }); + }; -const OrganizationData = async (key) => { - await OrganizationList(key).then((res) => { - treeData.value = [...res.rows]; - }); -}; + loop(data, dragNode.deptId, (_, index, arr) => { + arr.splice(index, 1); + }); -OrganizationData(""); + if (dropPosition === 0) { + loop(data, dropNode.deptId, (item) => { + item.children = item.children || []; + item.children.push(dragNode); + }); + } else { + loop(data, dropNode.deptId, (_, index, arr) => { + arr.splice(dropPosition < 0 ? index : index + 1, 0, dragNode); + }); + } + }; + + const handleCancel = (type) => { + if (type == 1) { + visible.value = false; + } + }; + + const OrganizationData = async (key) => { + await OrganizationList(key).then((res) => { + treeData.value = [...res.rows]; + }); + }; + + OrganizationData(''); </script> - <style scoped> -.tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title), -.tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title):hover { - animation: blinkBg 0.4s 2; -} - -@keyframes blinkBg { - 0% { - background-color: transparent; + .tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title), + .tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title):hover { + animation: blinkBg 0.4s 2; } - 100% { - background-color: var(--color-primary-light-1); + @keyframes blinkBg { + 0% { + background-color: transparent; + } + + 100% { + background-color: var(--color-primary-light-1); + } } -} </style> diff --git a/src/views/authority/resource/index.vue b/src/views/authority/resource/index.vue index 1ea12c6..9c7a161 100644 --- a/src/views/authority/resource/index.vue +++ b/src/views/authority/resource/index.vue @@ -6,7 +6,7 @@ <a-card :title="$t('menu.resource.title')" :bordered="false" - :style="{ 'width': '100%', 'height': '900px', 'overflow-y': 'auto' }" + style=" 'width': '100%'; height: calc(100vh - 250px); 'overflow-y': 'auto' " > <a-button @click="() => onIconClick(null)">鏂板鐖剁骇鑿滃崟</a-button> <a-tree @@ -139,173 +139,180 @@ </template> <script lang="ts" setup> -import { ref } from "vue"; -import { IconPlus } from "@arco-design/web-vue/es/icon"; -import { Resource, ResourceAdd, ResourceById, ResourceDelete, ResourceList, ResourceUpdate } from "@/api/authority"; -import Authheader from "@/views/authority/components/authheader.vue"; -import { Modal } from "@arco-design/web-vue"; + import { ref } from 'vue'; + import { IconPlus } from '@arco-design/web-vue/es/icon'; + import { + Resource, + ResourceAdd, + ResourceById, + ResourceDelete, + ResourceList, + ResourceUpdate, + } from '@/api/authority'; + import Authheader from '@/views/authority/components/authheader.vue'; + import { Modal } from '@arco-design/web-vue'; -let visible = ref(false); -let treeData = ref([]); -let showLine = ref(true); -let menuTips = ref(["鏉冮檺绠$悊", "璧勬簮"]); -const fieldNames = { value: "key", label: "value" }; -// 0鐩綍 1鑿滃崟 2鎸夐挳 -let options = ref([ - { - key: "3", - value: "鐩綍" - }, - { - key: "0", - value: "鑿滃崟" - }, - { - key: "1", - value: "鎸夐挳" - } -]); -let resourceform = ref<Resource>({ - component: "", - createTime: "", - description: "", - icon: "", - menuId: "", - menuName: "", - menuType: "", - orderNum: "", - parentId: "", - parentName: "", - children: [], - path: "", - perms: "", - status: "", - syesourcetype: "", - target: "", - updateTime: "" -}); - -const onIconClick = (nodeData) => { - if (nodeData) { - resourceform.value.parentId = nodeData.menuId; - resourceform.value.parentName = nodeData.menuName; - } - resourceform.value.component = ""; - resourceform.value.createTime = ""; - resourceform.value.description = ""; - resourceform.value.icon = ""; - resourceform.value.menuId = ""; - resourceform.value.menuName = ""; - resourceform.value.menuType = ""; - resourceform.value.orderNum = "0"; - resourceform.value.path = ""; - resourceform.value.perms = ""; - resourceform.value.status = ""; - resourceform.value.syesourcetype = ""; - - visible.value = true; -}; - -const addresource = async () => { - await ResourceAdd({ - ...resourceform.value - } as unknown as Resource).then((res) => { - ResourceData(""); + let visible = ref(false); + let treeData = ref([]); + let showLine = ref(true); + let menuTips = ref(['鏉冮檺绠$悊', '璧勬簮']); + const fieldNames = { value: 'key', label: 'value' }; + // 0鐩綍 1鑿滃崟 2鎸夐挳 + let options = ref([ + { + key: '3', + value: '鐩綍', + }, + { + key: '0', + value: '鑿滃崟', + }, + { + key: '1', + value: '鎸夐挳', + }, + ]); + let resourceform = ref<Resource>({ + component: '', + createTime: '', + description: '', + icon: '', + menuId: '', + menuName: '', + menuType: '', + orderNum: '', + parentId: '', + parentName: '', + children: [], + path: '', + perms: '', + status: '', + syesourcetype: '', + target: '', + updateTime: '', }); -}; -const onIconClickDelete = (nodeData) => { - ResourceDelete(nodeData.menuId).then(() => { - ResourceData(""); - }); -}; + const onIconClick = (nodeData) => { + if (nodeData) { + resourceform.value.parentId = nodeData.menuId; + resourceform.value.parentName = nodeData.menuName; + } + resourceform.value.component = ''; + resourceform.value.createTime = ''; + resourceform.value.description = ''; + resourceform.value.icon = ''; + resourceform.value.menuId = ''; + resourceform.value.menuName = ''; + resourceform.value.menuType = ''; + resourceform.value.orderNum = '0'; + resourceform.value.path = ''; + resourceform.value.perms = ''; + resourceform.value.status = ''; + resourceform.value.syesourcetype = ''; -const showDetail = (id) => { - ResourceById(id).then((res) => { - resourceform.value = { ...res.data }; - }); -}; -const editresource = () => { - ResourceUpdate({ - ...resourceform.value - } as unknown as Resource).then((res) => { - ResourceData(""); - Modal.success({ - title: "淇濆瓨鎴愬姛", - content: "淇濆瓨鎴愬姛" - }); - }); -}; -const reset = (id) => { - ResourceById(id).then((res) => { - resourceform.value = { ...res.data }; - }); -}; + visible.value = true; + }; -const onDrop = ({ dragNode, dropNode, dropPosition }) => { - const data = treeData.value; - ResourceUpdate({ - orderNum: "0", - parentId: dropNode.menuId, - menuId: dragNode.menuId - }); - const loop = (data, key, callback) => { - data.some((item, index, arr) => { - if (item.menuId === key) { - callback(item, index, arr); - return true; - } - if (item.children) { - return loop(item.children, key, callback); - } - return false; + const addresource = async () => { + await ResourceAdd({ + ...resourceform.value, + } as unknown as Resource).then((res) => { + ResourceData(''); }); }; - loop(data, dragNode.menuId, (_, index, arr) => { - arr.splice(index, 1); - }); - - if (dropPosition === 0) { - loop(data, dropNode.menuId, (item) => { - item.children = item.children || []; - item.children.push(dragNode); + const onIconClickDelete = (nodeData) => { + ResourceDelete(nodeData.menuId).then(() => { + ResourceData(''); }); - } else { - loop(data, dropNode.menuId, (_, index, arr) => { - arr.splice(dropPosition < 0 ? index : index + 1, 0, dragNode); + }; + + const showDetail = (id) => { + ResourceById(id).then((res) => { + resourceform.value = { ...res.data }; }); - } -}; + }; + const editresource = () => { + ResourceUpdate({ + ...resourceform.value, + } as unknown as Resource).then((res) => { + ResourceData(''); + Modal.success({ + title: '淇濆瓨鎴愬姛', + content: '淇濆瓨鎴愬姛', + }); + }); + }; + const reset = (id) => { + ResourceById(id).then((res) => { + resourceform.value = { ...res.data }; + }); + }; -const handleCancel = (type) => { - if (type == 1) { - visible.value = false; - } -}; + const onDrop = ({ dragNode, dropNode, dropPosition }) => { + const data = treeData.value; + ResourceUpdate({ + orderNum: '0', + parentId: dropNode.menuId, + menuId: dragNode.menuId, + }); + const loop = (data, key, callback) => { + data.some((item, index, arr) => { + if (item.menuId === key) { + callback(item, index, arr); + return true; + } + if (item.children) { + return loop(item.children, key, callback); + } + return false; + }); + }; -const ResourceData = async (key) => { - await ResourceList(key).then((res) => { - treeData.value = [...res.rows]; - }); -}; + loop(data, dragNode.menuId, (_, index, arr) => { + arr.splice(index, 1); + }); -ResourceData(""); + if (dropPosition === 0) { + loop(data, dropNode.menuId, (item) => { + item.children = item.children || []; + item.children.push(dragNode); + }); + } else { + loop(data, dropNode.menuId, (_, index, arr) => { + arr.splice(dropPosition < 0 ? index : index + 1, 0, dragNode); + }); + } + }; + + const handleCancel = (type) => { + if (type == 1) { + visible.value = false; + } + }; + + const ResourceData = async (key) => { + await ResourceList(key).then((res) => { + treeData.value = [...res.rows]; + }); + }; + + ResourceData(''); </script> <style scoped> -.tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title), -.tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title):hover { - animation: blinkBg 0.4s 2; -} - -@keyframes blinkBg { - 0% { - background-color: transparent; + .tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title), + .tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title):hover { + animation: blinkBg 0.4s 2; } - 100% { - background-color: var(--color-primary-light-1); + @keyframes blinkBg { + 0% { + background-color: transparent; + } + + 100% { + background-color: var(--color-primary-light-1); + } } -} </style> diff --git a/src/views/authority/users/index.vue b/src/views/authority/users/index.vue index 1509a15..634b0e1 100644 --- a/src/views/authority/users/index.vue +++ b/src/views/authority/users/index.vue @@ -2,7 +2,69 @@ <div class="container"> <authheader :items="menuTips"></authheader> <a-card ref="account" class="general-card"> - <a-row> + <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" + > + <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> + <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-row> <a-col :flex="2"></a-col> <a-col :flex="1"> <a-form :model="formModel" style="margin-top: 30px"> @@ -16,21 +78,21 @@ </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"> + <a-button type="primary" @click="search" style="margin-right: 20px"> <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> </a-col> - </a-row> - <a-divider style="margin-top: 0" /> + </a-row> --> + <!-- <a-divider style="margin-top: 0" /> <a-row style="margin-bottom: 16px"> <a-col :span="12"> <a-space> @@ -66,7 +128,7 @@ </template> </a-dropdown> </a-col> - </a-row> + </a-row> --> <a-table row-key="id" :loading="loading" @@ -369,7 +431,7 @@ let editform = ref<User>({ createTime: '', dept: undefined, - deptName:"", + deptName: '', email: '', nickName: '', phoneNumber: '', @@ -651,7 +713,7 @@ record.resources.forEach((val) => { checkStrictlyMenu.value.push({ menuId: val.menuId, - menuName: val.menuName + menuName: val.menuName, }); checkedKeysMenu.value.push(val.menuId); expandKdysMenu.value.push(val.menuId); @@ -661,7 +723,7 @@ record.knowledges.forEach((val) => { checkStrictlyKnowledge.value.push({ knowledgeId: val.id, - knowledgeName: val.name + knowledgeName: val.name, }); checkedKeysKnowledge.value.push(val.id); }); @@ -670,12 +732,11 @@ record.dialogs.forEach((val) => { checkStrictlyDialog.value.push({ dialogId: val.id, - dialogName: val.name + dialogName: val.name, }); checkedKeysDialog.value.push(val.id); }); } - } //鏈烘瀯 if (t == 5) { @@ -689,7 +750,7 @@ record.dept.forEach((val) => { checkStrictly.value.push({ deptId: val.deptId, - deptName: val.deptName + deptName: val.deptName, }); checkedKeys.value.push(val.deptId); expandKdys.value.push(val.deptId); @@ -708,9 +769,9 @@ if (user.dept) { for (const d of user.dept) { if (user.deptName) { - user.deptName += d.deptName + ","; + user.deptName += d.deptName + ','; } else { - user.deptName = d.deptName + ","; + user.deptName = d.deptName + ','; } } } @@ -772,7 +833,7 @@ }; </script> -<style scoped> +<style scoped lang="less"> .card-demo { width: 460px; margin-left: 24px; @@ -782,4 +843,71 @@ .card-demo:hover { transform: translateY(-4px); } + .table-page-search-wrapper { + padding-top: 20px; + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + padding-bottom: 20px; + border-bottom: 1px solid #e8e8e8; + .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; + } + } + } + } + } + + .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> diff --git a/src/views/list/search-table/locale/zh-CN.ts b/src/views/list/search-table/locale/zh-CN.ts index ca4cd44..63326fb 100644 --- a/src/views/list/search-table/locale/zh-CN.ts +++ b/src/views/list/search-table/locale/zh-CN.ts @@ -40,6 +40,6 @@ 'searchTable.size.large': '鍋忓ぇ', // actions 'searchTable.actions.refresh': '鍒锋柊', - 'searchTable.actions.density': '瀵嗗害', + 'searchTable.actions.density': '琛岄珮', 'searchTable.actions.columnSetting': '鍒楄缃�', }; diff --git a/src/views/session/sessionRecordsManager/index.vue b/src/views/session/sessionRecordsManager/index.vue index 4b22809..15079e2 100644 --- a/src/views/session/sessionRecordsManager/index.vue +++ b/src/views/session/sessionRecordsManager/index.vue @@ -34,13 +34,13 @@ <a-scrollbar class="left-list" style=" - height: calc(100vh - 160px); + height: calc(100vh - 250px); overflow-y: auto; overflow-x: hidden; " > <div - class="item" + class="item left-list-item" v-for="session in sessionList" @click="querySessionDetail(session)" :class="{ isLeftActive: activeSessionId === session.id }" @@ -214,16 +214,18 @@ maxRows: 5, }" /> - </div> - <div style="margin-left: 10px"> - <!-- <icon-send size="32" /> --> - <a-button - :disabled="chatDis" - @click="sentClick" - type="primary" - size="large" - >鍙戦��</a-button - > + <div class="btn-send"> + <!-- <icon-send size="32" /> --> + <a-button + :disabled="chatDis" + @click="sentClick" + type="primary" + style="border-radius: 24px" + :loading="loading" + size="large" + >鍙戦��</a-button + > + </div> </div> </div> </a-card> @@ -246,7 +248,19 @@ </div> </div> <div class="right-tag"> - <a-space> + <a-button type="primary" shape="round" size="mini" class="btn" + >鍏ㄩ儴 + </a-button> + <a-button type="outline" shape="round" size="mini" class="btn" + >鏂囨。鍒涗綔 + </a-button> + <a-button type="outline" shape="round" size="mini" class="btn" + >鐭ヨ瘑瀛︿範 + </a-button> + <a-button type="outline" shape="round" size="mini" class="btn" + >鏁堢巼鎻愬崌 + </a-button> + <!-- <a-space> <a-button type="primary" shape="round" size="mini" class="btn" >鍏ㄩ儴 </a-button> @@ -256,12 +270,13 @@ <a-button type="outline" shape="round" size="mini" class="btn" >鐭ヨ瘑瀛︿範 </a-button> - </a-space> - <a-space style="margin-top: 10px"> <a-button type="outline" shape="round" size="mini" class="btn" >鏁堢巼鎻愬崌 </a-button> - </a-space> + </a-space> --> + <!-- <a-space style="margin-top: 10px"> + + </a-space> --> </div> <div class="right-list"> <div class="right-item"> @@ -315,13 +330,13 @@ getSessionDetailsApi, sessionListApi, } from '@/api/session'; - import { getAuthorization } from "@/utils/auth"; - + import { getAuthorization } from '@/utils/auth'; const sessionDetailList = ref([]); //鏍规嵁浼氳瘽id鍑烘潵鐨勪細璇濊鎯� const sessionList = ref([]); //浼氳瘽鍒楄〃 const modalObj = reactive({ add: false }); const chatDis = ref(false); + const loading = ref(false); const currIndex = ref(0); const displayedText = ref(''); // 姝e湪鏄剧ず鐨勬枃瀛� @@ -351,25 +366,36 @@ const sendMessage = async (event) => { event.preventDefault(); chatDis.value = true; + loading.value = true; if (!activeSessionId.value) { Message.warning('璇烽�夋嫨浼氳瘽'); + chatDis.value = false; + loading.value = false; return; } + + // if (displayedText.value) { + // querySessionList(); + // } + if (inputMsg.value) { - sessionDetailList.value.push({ "content": inputMsg.value, "role": "user" }); - sessionDetailList.value.push({ "role": "last" }); + sessionDetailList.value.push({ content: inputMsg.value, role: 'user' }); + sessionDetailList.value.push({ role: 'last' }); refreshScroll(); - const response = await fetch("/api/tech/cloudminds/query?modeltype=localragflow", { - method: 'POST', - headers: { - 'Authorization': getAuthorization(), - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - conversation_id: activeSessionId.value, - messages: inputMsg.value, - }), - }); + const response = await fetch( + '/api/tech/cloudminds/query?modeltype=localragflow', + { + method: 'POST', + headers: { + 'Authorization': getAuthorization(), + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + conversation_id: activeSessionId.value, + messages: inputMsg.value, + }), + } + ); const reader = response?.body ?.pipeThrough(new TextDecoderStream()) @@ -380,12 +406,12 @@ const x = await reader?.read(); if (x) { const { done, value } = x; + console.log(x, 999); try { const val = JSON.parse(value?.data || ''); const d = val?.data; - if (typeof d !== "boolean") { - - console.info("data:", d); + if (typeof d !== 'boolean') { + console.info('data:', d); streamStr.value = d.content; startDisplayStr(); } @@ -394,11 +420,14 @@ } if (done) { console.info('done'); + displayedText.value = ''; + querySessionList(); break; } } } - chatDis.value=false; + chatDis.value = false; + loading.value = false; inputMsg.value = ''; } else { Message.warning('娑堟伅涓嶈兘涓虹┖'); @@ -424,6 +453,8 @@ const { code, data } = await sessionListApi(selectValue.value); if (code === 200) { sessionList.value = data; + activeSessionId.value = data[0].id; + querySessionDetail(data[0]); } else { Message.warning('鏌ヨ澶辫触'); } @@ -459,7 +490,13 @@ </script> <style scoped lang="scss"> .isLeftActive { - background-color: lightgrey; + background-color: #ededf5; + } + .left-list-item { + margin-bottom: 2px; + } + .left-list-item:hover { + background-color: #ededf5; } .light { @@ -556,15 +593,17 @@ border-radius: 10px; margin-top: 10px; padding: 10px; - height: 120px; - background-color: lightcyan; - + min-height: 120px; + background-color: #e9f3ff; + .item-content { + color: #666; + } .item-title { text-align: center; line-height: 40px; font-size: 20px; font-family: 榛戜綋; - color: black; + color: #333; } } } @@ -583,8 +622,16 @@ flex: 1 1; flex-direction: column; overflow: hidden; + position: relative; :deep(.arco-textarea-wrapper) { border-radius: 24px; + } + + .btn-send { + position: absolute !important; + right: 5px; + bottom: 5px; + z-index: 10; } } } @@ -608,6 +655,12 @@ } .right-tag { margin-top: 20px; + display: flex; + justify-content: space-between; + flex-wrap: wrap; + :deep(.arco-btn-size-mini.arco-btn-shape-round) { + margin-bottom: 10px !important; + } } .right-list { @@ -615,15 +668,15 @@ border-radius: 10px; margin-top: 10px; padding: 10px; - height: 120px; - background-color: lightcyan; + min-height: 120px; + background-color: #e9f3ff; .item-title { text-align: center; line-height: 40px; font-size: 20px; font-family: 榛戜綋; - color: black; + color: #333; } } } -- Gitblit v1.8.0