修改工单

This commit is contained in:
浅念
2025-07-11 19:43:34 +08:00
parent 713d43f7b4
commit 5802e157bf
9 changed files with 41 additions and 10 deletions
+2 -2
View File
@@ -6,8 +6,8 @@ VITE_BASE_URL = /
# API 地址前缀 # API 地址前缀
# VITE_API_URL = https://m1.apifoxmock.com/m1/6400575-6097373-default # VITE_API_URL = https://m1.apifoxmock.com/m1/6400575-6097373-default
# VITE_API_URL = http://219.157.255.213:25702 # VITE_API_URL = http://219.157.255.213:25702
VITE_API_URL = https://mzl.dev.hnxinyouhe.com # VITE_API_URL = https://mzl.dev.hnxinyouhe.com
# VITE_API_URL = https://fdesk.hnxinyouhe.com VITE_API_URL = https://fdesk.hnxinyouhe.com
# Delete console # Delete console
+1 -1
View File
@@ -4,7 +4,7 @@
VITE_BASE_URL = / VITE_BASE_URL = /
# API 地址前缀 # API 地址前缀
VITE_API_URL = https://mzl.dev.hnxinyouhe.com VITE_API_URL = https://fdesk.hnxinyouhe.com
# Delete console # Delete console
VITE_DROP_CONSOLE = true VITE_DROP_CONSOLE = true
+4
View File
@@ -13,6 +13,9 @@ export const menuService = {
const userStore = useUserStore() const userStore = useUserStore()
// 模拟接口返回的菜单数据 // 模拟接口返回的菜单数据
const menuData = userStore.info.menu const menuData = userStore.info.menu
if(menuData.length==0){
ElMessage.error('暂无系统菜单权限')
}
const menuData1 = asyncRoutes const menuData1 = asyncRoutes
// 处理菜单数据 // 处理菜单数据
// const menuList1 = menuData1.map((route) => menuDataToRouter(route)) // const menuList1 = menuData1.map((route) => menuDataToRouter(route))
@@ -23,6 +26,7 @@ export const menuService = {
await new Promise((resolve) => setTimeout(resolve, delay)) await new Promise((resolve) => setTimeout(resolve, delay))
return { menuList } return { menuList }
} catch (error) { } catch (error) {
throw error instanceof Error ? error : new Error('获取菜单失败') throw error instanceof Error ? error : new Error('获取菜单失败')
} }
+6
View File
@@ -11,6 +11,12 @@ export const staticRoutes: AppRouteRecordRaw[] = [
path: '/', path: '/',
redirect: HOME_PAGE redirect: HOME_PAGE
}, },
{
path: '/console',
name: 'Console',
component: () => import('@views/dashboard/console/index.vue'),
meta: { title: 'menus.dashboard.console', isHideTab: true, setTheme: true }
},
{ {
path: RoutesAlias.Login, path: RoutesAlias.Login,
name: 'Login', name: 'Login',
+1 -1
View File
@@ -56,4 +56,4 @@ export enum RoutesAlias {
// 主页路由 // 主页路由
// export const HOME_PAGE = RoutesAlias.Dashboard // export const HOME_PAGE = RoutesAlias.Dashboard
export const HOME_PAGE = '/work/order' export const HOME_PAGE = RoutesAlias.Dashboard
+1
View File
@@ -58,6 +58,7 @@ declare namespace Api {
namespace User { namespace User {
/** 用户信息 */ /** 用户信息 */
interface UserInfo { interface UserInfo {
user: any
userId: number userId: number
userName: string userName: string
roles: string[] roles: string[]
+2
View File
@@ -426,7 +426,9 @@
try { try {
// 这里调用获取品牌列表的接口 // 这里调用获取品牌列表的接口
feishuresponse.value = await UserService.getfeishuAppList({ corp_id: companyid.value }) feishuresponse.value = await UserService.getfeishuAppList({ corp_id: companyid.value })
if(activeLoginType.value=='qrcode'){
feishulogin() feishulogin()
}
console.log(feishuresponse) console.log(feishuresponse)
} catch (error) { } } catch (error) { }
} }
+8 -1
View File
@@ -23,7 +23,7 @@
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="问题描述" prop="content"> <ElTableColumn label="问题描述" prop="content">
<template #default="scope"> <template #default="scope">
<div v-html="scope.row.content"></div> <div class="multi-line-ellipsis" v-html="scope.row.content"></div>
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="状态" prop="status"> <ElTableColumn label="状态" prop="status">
@@ -453,6 +453,13 @@ function handleVideoClick(url: string) {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.multi-line-ellipsis {
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
word-break: break-all;
}
.page-content { .page-content {
.svg-icon { .svg-icon {
width: 1.8em; width: 1.8em;
+14 -3
View File
@@ -23,7 +23,7 @@
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="问题描述" prop="content"> <ElTableColumn label="问题描述" prop="content">
<template #default="scope"> <template #default="scope">
<div v-html="scope.row.content"></div> <div class="multi-line-ellipsis" v-html="scope.row.content"></div>
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="状态" prop="status"> <ElTableColumn label="状态" prop="status">
@@ -111,8 +111,8 @@
<!-- 聊天消息区域 --> <!-- 聊天消息区域 -->
<div class="chat-messages" ref="messageContainer"> <div class="chat-messages" ref="messageContainer">
<template v-for="(message, index) in messages" :key="index"> <template v-for="(message, index) in messages" :key="index">
<div :class="['message-item', message.isMe ? 'message-right' : 'message-left']"> <div :class="['message-item', String(message.user_id) === String(userid) ? 'message-right' : 'message-left']">
<el-avatar :size="32" :src="message.isMe ? meAvatar : aiAvatar" class="message-avatar" /> <el-avatar :size="32" :src="String(message.user_id) === String(userid) ? meAvatar : aiAvatar" class="message-avatar" />
<div class="message-content"> <div class="message-content">
<div class="message-info"> <div class="message-info">
<span class="sender-name">{{ message.user_id }}</span> <span class="sender-name">{{ message.user_id }}</span>
@@ -171,6 +171,7 @@ import { Order } from '@/mock/temp/formData'
import { WorkService } from '@/api/workApi' import { WorkService } from '@/api/workApi'
import { ElImageViewer } from 'element-plus' import { ElImageViewer } from 'element-plus'
import { useAuth } from "@/composables/useAuth"; import { useAuth } from "@/composables/useAuth";
import { useUserStore } from '@/store/modules/user'
const { hasAuth } = useAuth(); const { hasAuth } = useAuth();
defineOptions({ name: 'Order' }) defineOptions({ name: 'Order' })
let actionImageUplode = `${import.meta.env.VITE_API_URL}/ticket/upload` let actionImageUplode = `${import.meta.env.VITE_API_URL}/ticket/upload`
@@ -184,6 +185,9 @@ const { width } = useWindowSize()
const isMobile = computed(() => width.value < 500) const isMobile = computed(() => width.value < 500)
// 抽屉显示状态 // 抽屉显示状态
const isDrawerVisible = ref(false) const isDrawerVisible = ref(false)
const { info } = useUserStore()
const userid = info.user.id
console.log(userid)
import meAvatar from '@/assets/img/avatar/avatar5.webp' import meAvatar from '@/assets/img/avatar/avatar5.webp'
import aiAvatar from '@/assets/img/avatar/avatar10.webp' import aiAvatar from '@/assets/img/avatar/avatar10.webp'
// 消息相关数据 // 消息相关数据
@@ -453,6 +457,13 @@ function handleVideoClick(url: string) {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.multi-line-ellipsis {
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
word-break: break-all;
}
.page-content { .page-content {
.svg-icon { .svg-icon {
width: 1.8em; width: 1.8em;