diff --git a/components.d.ts b/components.d.ts index 56edcfd..bcfc51d 100644 --- a/components.d.ts +++ b/components.d.ts @@ -15,10 +15,12 @@ declare module 'vue' { HoverButton: typeof import('./src/components/common/HoverButton/index.vue')['default'] NaiveProvider: typeof import('./src/components/common/NaiveProvider/index.vue')['default'] NButton: typeof import('naive-ui')['NButton'] + NCheckbox: typeof import('naive-ui')['NCheckbox'] NImage: typeof import('naive-ui')['NImage'] NImageGroup: typeof import('naive-ui')['NImageGroup'] NInput: typeof import('naive-ui')['NInput'] NModal: typeof import('naive-ui')['NModal'] + NPageHeader: typeof import('naive-ui')['NPageHeader'] NPopover: typeof import('naive-ui')['NPopover'] NSpace: typeof import('naive-ui')['NSpace'] NUpload: typeof import('naive-ui')['NUpload'] diff --git a/package.json b/package.json index afd5d7a..fb843ab 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "build": "vite build", "preview": "vite preview", "build-prod": "vite build --mode prod", + "prod": "vite --mode prod", "type-check": "vue-tsc --noEmit", "lint": "eslint .", "lint:fix": "eslint . --fix", diff --git a/src/App.vue b/src/App.vue index 305046e..6e563ee 100644 --- a/src/App.vue +++ b/src/App.vue @@ -15,9 +15,7 @@ import { Local } from './utils/storage/storage.js' Local.set('userInfo',props.userInfo) Local.set('isGPT4',props.isGPT4) } *!/ */ -Local.set('token', "46d71a72d8d845ad7ed23eba9bdde260e635407190c2ce1bf7fd22088e41682ea07773ec65cae8946d2003f264d55961f96e0fc5da10eb96d3a348c1664e9644e756eda7154e1af9e70d1c9d2f100823a26885ea6df3249fe619995cb79dc5dbd5ead32d43b955d6b3ce83129097bb21bb8169898f48692de4f966db140c71b85a2065acfc948561c465279fc05194a79a1115f3b00170944b6c4bd6c52ada909a075c55d18d76c2ed2175602421b34b27362a05c350733ed73382471df0a08950f7f1e812a610c17bdac82d82d54be38969f6b41201af79b8d36ef177c5b94bc2094dc4dd1572ca2dee236373a92942a5eb9c5365d402232277e938d590f441b4370797434956956b752d08234f99c66f80268bbc39eb1f146a78bd8900b14ee75bb97d9a243fdf7aaa47841ba76a99dd6be84124245a59ad133f8edb34a3d2") -Local.set('userInfo', { "ID": 40, "Domain": "fontree", "NickName": "超级管理", "Account": "TenaGe8oL5KqsbJgmLFaD1zsyXU6k3Lgs", "TelNum": "12233445566", "Password": "", "Avatar": "https://dci-file-new.bj.bcebos.com/fonchain-main/prod/runtime/image/avart/0/d5f416d5-0b95-4b2c-82c4-6218d4017d17.jpg", "Status": "notactive", "CreatedAt": "2022-08-03 06:06:17", "IsAdmin": true, "EnterDate": "1990-07-01", "WorkYear": 33.7, "IsNeedChange": 2, "JumpTo": "onsite111", "PositionUsers": [{ "PositionID": 1, "PositionName": "运维", "DepartmentId": 2, "DepartmentCode": "admin", "DepartmentName": "系统管理", "UserId": 40, "UserName": "超级管理" }, { "PositionID": 51, "PositionName": "销售boss", "DepartmentId": 72, "DepartmentCode": "normal", "DepartmentName": "张家港销售公司", "UserId": 40, "UserName": "超级管理", "syncId": "25373" }], "DepartmentName": "系统管理", "JobNum": "123123", "BirthDate": "", "Age": 0, "Sex": 3, "Title": "", "IDNum": "320323200101201029", "DriverAuth": false, "DriverSupervisorAuth": false, "MailAccount": "", "train": "", "certificate": "", "TrainVideos": null }) -Local.set('ruleBtn', ["auth_fast_feastAppointment_button","r_ps_contract_btn_contract5","can_show_exh","can_set_canexh","artwork_goGrounding","exh_edit","artExhibition_artist_edit","auth_meeting_staff_button","task_auth_assurance_1","r_artwork_view_field_Signpic_Sealpic","r_artistartworkpro_btn_screen","r_paintersideartwork_btn_notify","r_ps_wb_artwork_base_btn_unpass","r_ps_wb_artwork_base_btn_pass","artworkBench","advertise_index_administration","advertise_index_manager","r_onesearch_artshow_nolimit","artExhibition_artist","r_artwork_filter_artwork","r_ps_artist_btn_createagentextra","auth_search_warehouse","auth_search_publicize","auth_search_training","auth_search_finance","gpt-4-btn","oaWorkbench","order_manage_goodsDetail_detele","order_manage_goodsDetail_edit","order_manage_goodsDetail_addNum","order_manage_logList","order_manage_goodsList","order_manage_userList","order_manage_detail","order_manage_refund","r_seller_order_btn_sure","r_seller_order_btn_edit","r_artist_app_black_btn_edit","r_artist_app_black_btn_delete","r_artist_app_black_btn_create","r_privatedinner_index_btn_delete","daily_record_receive","daily_record_create","daily_record_revoke","r_simplemeal_edit_meat_btn","edit_approval_type_out_btn","add_approval_type_out_btn","approval_set_per_out_btn","approval_table_read_detail_out_btn","approval_table_del_out_btn","approval_table_detail_out_btn","has_approvaled_jump_out_btn","is_approvaling_jump_out_btn","complted_approvale_jump_out_btn","not_approvale_jump_out_btn","approval_submit_out_btn","approval_type_out_btn","approval_out_btn","r_ps_artist_btn_revoke","appointment_team_edit","appointment_team_comfirm","appointment_set_date_edit_day","appointment_set_date_edit","appointment_set_time_edit","appointment_set_time_detail","appointment_set_type_edit","appointment_set_type_detail","r_secondartwork_index_btn_chengxin","r_ps_artwork_base_btn_import","r_ps_artwork_base_btn_reject","r_ps_artist_btn_createimport","r_artwork_view_btn_baseedit_ruler","r_artwork_view_btn_baseedit_width","r_artwork_view_btn_baseedit_length","ge_cooker_auth","r_ps_artist_btn_createbrokerextra","seller_draw_auth","ge_driver_supervisor_auth","gpt-btn","ge_verifier_auth","artwork_noShow","r_artwork_view_field_Comment","r_ps_artist_extra_btn_unpass","r_ps_artist_extra_btn_pass","r_ps_receiptcopy_btn_exportin","r_ps_receiptcopy_btn_create","r_ps_receipt_btn_exportin","r_ps_receipt_btn_create","r_ps_contract_btn_contract4","r_ps_contract_btn_contract3","r_ps_contract_btn_contract2","r_ps_contract_btn_contract1","r_ps_issue_extra_btn_unpass","r_ps_issue_extra_btn_pass","r_ps_video_extra_btn_unpass","r_ps_video_extra_btn_pass","r_ps_artwork_extra_btn_unpass","r_ps_artwork_extra_btn_pass","r_ps_artwork_base_btn_createartworkextra","r_ps_artwork_base_btn_unpass","r_ps_artwork_base_btn_pass","r_ps_artist_btn_createartistextra","r_ps_artist_btn_createartistscore","r_ps_artist_btn_createvideo","r_ps_artist_btn_unlock","r_ps_artist_btn_lock","r_secondartwork_index_btn_batchedit","r_secondartwork_index_btn_certificate","r_secondartwork_index_btn_wutong","row_safefinance_btn_sures","r_secondartwork_view_btn_authdelete","r_secondartwork_view_auth_page","r_secondartwork_view_btn_authedit","r_secondartwork_view_btn_verifyedit","r_secondartwork_index_btn_view","r_secondartwork_index_btn_create","r_secondartwork_view_btn_baseedit","r_secondartwork_view_field_ArtworkName","r_secondartwork_view_verify_page","r_secondartwork_view_basic_page","jzWorkBentch","szhWorkBentch","artist_downloadExportAll","artist_downloadExcelAll","r_artexhapprove_index_btn_finish","r_artexhapprove_index_btn_confirm","r_artexhapprove_index_btn_export","quick-work-download","chengxin","chaoji","wutong","exhibition_show_key","exhibition_inside_key","art_package_price","safecontrol_btn_down_exportexcel","r_artwork_view_btn_verifyedit","r_artwork_view_btn_verifydelete","r_artwork_view_verify_page","home_bottom","home_top","r_artwork_view_field_ArtworkName","department_boss_auth","r_home_todo_api_read","r_home_todo_btn_edit","r_home_todo_btn_create","r_shopitem_btn_delete","r_shopitem_btn_edit","r_shopitem_btn_create","r_series_btn_delete","r_series_btn_edit","r_brand_btn_delete","r_brand_btn_edit","r_brand_btn_create","r_series_btn_create","safecontrol_btn_exportin","safefinance_btn_sure","safecontrol_btn_sure","art_package_reward","safefinance_btn_export","safefinance_btn_batchedit","safecontrol_btn_batchedit","safecashiers_btn_sure","artist_artExhibition","artist_downloadExport","ge_diver_auth","r_salebot_index_btn_create","seller_mobile_staff_auth","seller_mobile_boss_auth","r_artwork_view_message","r_artwork_view_log","r_artwork_view_ware_page","r_artwork_view_auth_page","r_artwork_view_tag_page","r_artwork_view_market_page","r_artwork_view_extra_page","r_artwork_view_basic_page","r_artwork_view_btn_createnote","approval_table_read_detail_btn","r_salebot_index_btn_cert_down","r_artwork_view_copy_page","r_artwork_view_btn_copyrightedit","r_artwork_export_artwork","r_salebot_btn_site_export","r_salebot_index_btn_site","r_artwork_view_digit_page","artExhibition_see","artExhibition_create","artExhibition_give","artist_InviteList_check","artist_InviteList_copy","artist_InviteList_delete","artist_InviteList_update","artist_InviteList_add","artist_downloadExcel","storeBench","masterBench","fastBench","approval_table_del_btn","approval_table_detail_btn","del_approval_type_btn","edit_approval_type_btn","add_approval_type_btn","artist_contractInfo_edit","approval_submit_btn","artwork_distribute_btn","approval_type_btn","approval_set_per_btn","approval_btn","not_approvale_jump_btn","complted_approvale_jump_btn","is_approvaling_jump_btn","has_approvaled_jump_btn","r_artwork_view_btn_waredelete","r_artwork_view_btn_wareedit","r_artwork_view_btn_warecreate","r_artwork_view_btn_authdelete","r_artwork_view_btn_authedit","r_artwork_view_btn_tagdelete","r_artwork_view_btn_tagedit","r_artwork_view_btn_tagcreate","r_artwork_view_btn_digetdelete","r_artwork_view_btn_digetedit","r_artwork_view_btn_digetcreate","r_artwork_view_btn_marketdelete","r_artwork_view_btn_marketedit","r_artwork_view_btn_marketcreate","r_artwork_view_btn_extradelete","r_artwork_view_btn_extraedit","r_artwork_view_btn_extracreate","r_artwork_view_btn_basedelete","r_artwork_view_btn_baseedit","r_artwork_view_btn_basecreate","r_artwork_index_btn_batchupload","r_artwork_index_btn_create","artist_honorInfo_edit","artist_photoInfo_edit","artist_basicInfo_edit","artist_contractInfo_create","artist_honorInfo_create","artist_photoInfo_create","artist_basicInfo_create","设置v2","artist_contractInfo","artist_honorInfo","artist_photoInfo","artist_basicInfo","artist_list_delete","workBentch","artist_list_detail","artist_list_search","r_artwork_index_btn_view","r_artwork_index_btn_delete","addUser","addPosition","createDepart","checkLog","editUser","editPosition","editDepart","editRule"]) + const themeOverrides = { common: { primaryColorHover: '#764CF6', @@ -47,4 +45,8 @@ const themeOverrides = { .n-layout-scroll-container { padding-right: 5px; } +.n-message-container{ + top: 60px !important; + +} diff --git a/src/api/api.js b/src/api/api.js index 29fa149..56a1179 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -49,3 +49,27 @@ export const uploadFormData = (data) => { data }) } +// 登录 +export const loginApi = (data) => { + return request({ + url: '/user/login', + method: 'post', + data + }) +} +// 获取验证码 +export const getCode = (data) => { + return request({ + url: '/user/send', + method: 'post', + data + }) +} +// 菜单 +export const getMenuApi = (data) => { + return request({ + url: '/rule/rules', + method: 'post', + data + }) +} diff --git a/src/router/index.ts b/src/router/index.ts index 13833b4..966b831 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -18,7 +18,26 @@ const routes: RouteRecordRaw[] = [ }, ], }, - + { + path: '/login', + name: 'login', + component: () => import('@/views/login/index.vue'), + }, + { + path: '/mine', + name: 'mine', + component: () => import('@/views/mine/index.vue'), + }, + { + path: '/serveInfo', + name: 'serveInfo', + component: () => import('@/views/info/serveInfo.vue'), + }, + { + path: '/privateInfo', + name: 'privateInfo', + component: () => import('@/views/info/privateInfo.vue'), + }, { path: '/404', name: '404', diff --git a/src/utils/request/request.js b/src/utils/request/request.js index bffd3a8..b24b78e 100644 --- a/src/utils/request/request.js +++ b/src/utils/request/request.js @@ -2,9 +2,11 @@ import axios from "axios"; import { ElLoading } from 'element-plus' import {Local} from '@/utils/storage/storage.js' +import { router } from '@/router' +const ms = useMessage() const request = axios.create({ baseURL:import.meta.env.VITE_APP_API_BASE_URL, - timeout:5000 + timeout:60 * 60 * 1000 }); let loading request.interceptors.request.use((config)=>{ @@ -18,7 +20,12 @@ request.interceptors.request.use((config)=>{ config.headers.Authorization =Local.get('token') return config; }); -request.interceptors.response.use((res)=>{ +request.interceptors.response.use(async (res)=>{ + // 如果返回401,说明token过期,需要重新登录 + if (res && res.data.code === 401) { + // 重新登录 + await router.push('/login') + } loading?.close() return res.data; },()=>{ diff --git a/src/views/chat/components/Header/index.vue b/src/views/chat/components/Header/index.vue index f0692fa..be639bb 100644 --- a/src/views/chat/components/Header/index.vue +++ b/src/views/chat/components/Header/index.vue @@ -2,7 +2,8 @@ import { computed, nextTick } from 'vue' import { HoverButton, SvgIcon } from '@/components/common' import { useAppStore, useChatStore } from '@/store' - +import { useRouter } from 'vue-router' +import AvatarComponent from '../Message/Avatar.vue' interface Props { usingContext: boolean } @@ -15,7 +16,7 @@ interface Emit { defineProps() const emit = defineEmits() - +const router = useRouter() const appStore = useAppStore() const chatStore = useChatStore() @@ -39,27 +40,24 @@ function handleExport() { function handleClear() { emit('handleClear') } +// 我的 +function goMine() { + router.push('/mine') +} diff --git a/src/views/chat/index.vue b/src/views/chat/index.vue index 8ed3e2b..72272ca 100644 --- a/src/views/chat/index.vue +++ b/src/views/chat/index.vue @@ -2,8 +2,8 @@ import {uploadFormData, uploadImg} from "@/api/api"; import {Local} from "@/utils/storage/storage"; import dayjs from "dayjs"; -import {computed, onMounted, onUnmounted, ref, watch} from 'vue' -import {useRoute} from 'vue-router' +import {computed, onMounted, onUnmounted, ref, watch,onBeforeMount} from 'vue' +import {useRouter} from 'vue-router' import {AreaChartOutlined, PlusOutlined} from '@ant-design/icons-vue'; import html2canvas from 'html2canvas' import {Message} from './components' @@ -23,6 +23,7 @@ import {sessionDetailForSetup} from '@/store' import StopSvg from '@/assets/RecordStop12Regular.svg' const sessionDetailData = sessionDetailForSetup() let controller = new AbortController() + const { sessionDetail: dataSources, currentListUuid, @@ -31,7 +32,7 @@ const { isGPT4, loading } = storeToRefs(sessionDetailData) - +const router = useRouter() const dialog = useDialog() const ms = useMessage() const chatStore = useChatStore() @@ -335,7 +336,10 @@ const footerClass = computed(() => { }) const isShowBottom=ref(false) onMounted(() => { - console.log(123) + + if(!Local.get('token')){ + router.push('/login') + } scrollRef.value.addEventListener('scroll', function() { if (scrollRef.value.scrollTop + scrollRef.value.clientHeight +100>= scrollRef.value.scrollHeight) { isShowBottom.value=false diff --git a/src/views/chat/layout/sider/List.vue b/src/views/chat/layout/sider/List.vue index f6bcfde..6020fff 100644 --- a/src/views/chat/layout/sider/List.vue +++ b/src/views/chat/layout/sider/List.vue @@ -51,7 +51,7 @@ const show=ref(false)