yinbangzhong
2024-08-27 361d46d0e2a9c5f795f766ed819037faef612167
bug fix
3个文件已修改
244 ■■■■■ 已修改文件
src/api/authority.ts 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/authority/role/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sessionManager/index.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/authority.ts
@@ -1,20 +1,20 @@
import axios from 'axios';
import { Pagination } from '@/types/global';
import axios from "axios";
import { Pagination } from "@/types/global";
export interface User {
  userId: string;
  loginName:string;
  loginName: string;
  userName: string;
  nickName: string;
  email: string;
  phoneNumber: string;
  dept: any;
  deptName:string;
  deptName: string;
  createTime: string;
  status: string;
  psw:string;
  role:string;
  roleName:string;
  psw: string;
  role: string;
  roleName: string;
}
export interface Organization {
@@ -65,16 +65,16 @@
}
export interface Role {
  roleId:  string;
  createTime:  string;
  updateTime:  string;
  roleName:  string;
  remark:  string;
  iconCls:  string;
  roleSort:  string;
  status:  string;
  roleKey:  string;
  dataScope:  string;
  roleId: string;
  createTime: string;
  updateTime: string;
  roleName: string;
  remark: string;
  iconCls: string;
  roleSort: string;
  status: string;
  roleKey: string;
  dataScope: string;
  dept: any;
  resources: any;
  knowledges: any;
@@ -83,101 +83,101 @@
}
export function RoleList(params: Pagination) {
  return axios.get<Result<Role[]>>('/base/system/role/list', { params });
  return axios.get<Result<Role[]>>("/base/system/role/list", { params });
}
export function RoleDelete(id) {
  return axios.delete('/base/system/role/' + id);
  return axios.delete("/base/system/role/" + id);
}
export function RoleEdit(role) {
  return axios.put('/base/system/role', { role });
  return axios.put("/base/system/role", { role });
}
export function RoleAdd(role) {
  return axios.post('/base/system/role', { role });
  return axios.post("/base/system/role", { role });
}
export function Rolestatus(roleId, status) {
  return axios.put('/base/system/role/changeStatus', {
  return axios.put("/base/system/role/changeStatus", {
    roleId: roleId,
    status: status,
    status: status
  });
}
export function UserList(params: Pagination) {
  return axios.get<Result<User[]>>('/base/system/user/list', { params });
  return axios.get<Result<User[]>>("/base/system/user/list", { params });
}
export function Userstatus(userID, status) {
  return axios.put('/base/system/user/changeStatus', {
  return axios.put("/base/system/user/changeStatus", {
    userId: userID,
    status: status,
    status: status
  });
}
export function UserChangePwd(userId) {
  return axios.put('/base/system/user/profile/updatePwd', { userId: userId });
  return axios.put("/base/system/user/profile/updatePwd", { userId: userId });
}
export function UserEdit(user) {
  return axios.put('/base/system/user', { user });
  return axios.put("/base/system/user", { user });
}
export function UserAdd(user) {
  return axios.post('/base/system/user', { user });
  return axios.post("/base/system/user", { user });
}
export function UserDelete(id) {
  return axios.delete('/base/system/user/' + id);
  return axios.delete("/base/system/user/" + id);
}
export function OrganizationList(key: string) {
  return axios.post<Result<Organization[]>>('/base/system/dept/list', {
    deptName: key,
  return axios.post<Result<Organization[]>>("/base/system/dept/list", {
    deptName: key
  });
}
export function OrganizationAdd(organization) {
  return axios.post('/base/system/dept', { organization });
  return axios.post("/base/system/dept", { organization });
}
export function OrganizationDelete(id) {
  return axios.delete('/base/system/dept/' + id);
  return axios.delete("/base/system/dept/" + id);
}
export function OrganizationUpdate(organization) {
  return axios.put('/base/system/dept', { organization });
  return axios.put("/base/system/dept", { organization });
}
export function OrganizationById(id) {
  return axios.get<Result<Organization>>('/base/system/dept/' + id);
  return axios.get<Result<Organization>>("/base/system/dept/" + id);
}
export function ResourceList(key: string) {
  return axios.get<Result<Resource[]>>('/base/system/menu/treeselect');
  return axios.get<Result<Resource[]>>("/base/system/menu/treeselect");
}
export function ResourceAdd(resource) {
  return axios.post('/base/system/menu', { resource });
  return axios.post("/base/system/menu", { resource });
}
export function ResourceDelete(id) {
  return axios.delete('/base/system/menu/' + id);
  return axios.delete("/base/system/menu/" + id);
}
export function ResourceUpdate(resource) {
  return axios.put('/base/system/menu', { resource });
  return axios.put("/base/system/menu", { resource });
}
export function ResourceById(id) {
  return axios.get<Result<Resource>>('/base/system/menu/' + id);
  return axios.get<Result<Resource>>("/base/system/menu/" + id);
}
export function KnowledgeList() {
  return axios.get<Result<Knowledge>>('/api/v1/kb/list');
export function KnowledgeList(role: string) {
  return axios.get<Result<Knowledge>>("/base/system/knowledge/list" + "?role=" + role);
}
export function DialogList() {
  return axios.get<Result<Knowledge>>('/api/v1/dialog/list');
export function DialogList(role: string) {
  return axios.get<Result<any>>("/base/system/dialog/list" + "?role=" + role);
}
src/views/authority/role/index.vue
@@ -338,6 +338,7 @@
  let resourcevisible = ref(false);
  let selectRole = ref({});
  let u =JSON.parse(getUserInfo());
  const eachChildrenAdd=(node)=>{
    if (node.children?.length > 0) {
@@ -696,7 +697,6 @@
  const MenuData = async (key) => {
    await ResourceList(key).then((res) => {
      let newTree = [];
      let u =JSON.parse(getUserInfo());
      if (u.role != "admin") {
        removeChild(res.rows, newTree);
      }
@@ -704,11 +704,11 @@
    });
  };
  KnowledgeList().then((res) => {
  KnowledgeList(u.role).then((res) => {
    knowledgeList.value = res.data;
  });
  DialogList().then((res) => {
  DialogList(u.role).then((res) => {
    DialogsList.value = res.data;
  });
  queryCanvasList(null).then((canvas) => {
src/views/sessionManager/index.vue
@@ -99,55 +99,101 @@
                        backgroundColor:
                          theme === 'light' ? '#ffffff' : '#000000',
                      }"
                      style="border: none; display: inline"
                      v-for="(item, tipIndex) in tipMatch(sessionDetail)"
                      style="border: none;"
                      v-for="(breakContent, breakIndex) in breakLine(sessionDetail.content)"
                    >
                      <span v-if="tipIndex == 0">
                        {{ sessionDetail.content.substring(0, item.index) }}
                        <a-tooltip
                          background-color="#3491FA"
                          :content="
                            getTipContent(messagenList.reference, index)
                          "
                        >
                          <img
                            style="width: 20px; height: 20px"
                            :src="tipImage"
                          />
                        </a-tooltip>
                      </span>
                      <span v-else>
                        {{
                          sessionDetail.content.substring(
                            item.preIndex + item.item.length,
                            item.index
                          )
                        }}
                        <a-tooltip
                          background-color="#3491FA"
                          :content="
                            getTipContent(messagenList.reference, index)
                          "
                        >
                          <img
                            style="width: 20px; height: 20px"
                            :src="tipImage"
                          />
                        </a-tooltip>
                      </span>
                    </div>
                  </a-card>
                  <a-card v-else>
                    <div
                      :class="{ chatItemAnswer: theme === 'light' }"
                      :style="{
                      <div
                        :class="{ chatItemAnswer: theme === 'light' }"
                        :style="{
                        backgroundColor:
                          theme === 'light' ? '#ffffff' : '#000000',
                      }"
                        style="border: none;"
                      v-if="isExistTip(breakContent)">
                        <div
                          :class="{ chatItemAnswer: theme === 'light' }"
                          :style="{
                        backgroundColor:
                          theme === 'light' ? '#ffffff' : '#000000',
                      }"
                          style="border: none;"
                          v-for="(item, tipIndex) in tipMatch(breakContent)"
                        >
                      <span v-if="tipIndex == 0">
                        {{ breakContent.substring(0, item.index) }}
                        <a-tooltip
                          background-color="#3491FA"
                          :content="
                            getTipContent(messagenList.reference, index)
                          "
                        >
                          <img
                            style="width: 20px; height: 20px"
                            :src="tipImage"
                          />
                        </a-tooltip>
                      </span>
                          <span v-else-if ="tipIndex == item.len - 1">
                        {{
                              breakContent.substring(
                                item.preIndex + item.item.length,
                                item.index
                              )
                            }}
                        <a-tooltip
                          background-color="#3491FA"
                          :content="
                            getTipContent(messagenList.reference, index)
                          "
                        >
                          <img
                            style="width: 20px; height: 20px"
                            :src="tipImage"
                          />
                        </a-tooltip>
                        {{
                              breakContent.substring(item.index+5)
                            }}
                      </span>
                          <span v-else>
                        {{
                              breakContent.substring(
                                item.preIndex + item.item.length,
                                item.index
                              )
                            }}
                        <a-tooltip
                          background-color="#3491FA"
                          :content="
                            getTipContent(messagenList.reference, index)
                          "
                        >
                          <img
                            style="width: 20px; height: 20px"
                            :src="tipImage"
                          />
                        </a-tooltip>
                      </span>
                        </div>
                      </div>
                      <div v-else>
                        {{ breakContent }}
                      </div>
                    </div>
                  </a-card>
                  <a-card v-else>
                    <a-textarea
                      readonly
                      auto-size
                      v-model="sessionDetail.content"
                      :class="{ chatItemAnswer: theme === 'light' }"
                      :style="{
                      backgroundColor:
                        theme === 'light' ? '#ffffff' : '#000000',
                    }"
                      style="border: none"
                    >
                      {{ sessionDetail.content }}
                    </div>
                    </a-textarea>
                  </a-card>
                </template>
                <!-- <div>{{ sessionDetail.role === 'assistant' }}</div> -->
@@ -456,6 +502,7 @@
  import docx from '@/views/dmx/knowledgeLib/components/docx.vue';
  import excel from '@/views/dmx/knowledgeLib/components/excel.vue';
  import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue';
  import { is } from "immutable";
  // const url = ref('../../assets/session/PDF.png');
@@ -539,13 +586,20 @@
    }
  };
  const tipMatch = (session: any): any[] => {
  const breakLine = (message: string): string[] => {
    //按\n分割字符串
    let arr = message.split('\n');
    return arr
  }
  const tipMatch = (msg: string): any[] => {
    //match session.content中的##[0-9]$$的索引
    let indexs: any[] = [];
    let preTip = 0;
    session.content.match(/##([0-9]+)\$\$/g)?.map((item) => {
      let i = session.content.indexOf(item);
      indexs.push({ index: i, item: item, preIndex: preTip });
    let matches=msg.match(/##([0-9]+)\$\$/g)
    matches?.map((item) => {
      let i = msg.indexOf(item);
      indexs.push({ index: i, item: item, preIndex: preTip, len: matches.length });
      preTip = i;
    });
    return indexs;