feat: 大屏
This commit is contained in:
@@ -78,8 +78,11 @@ axiosInstance.interceptors.response.use(
|
||||
// 登录过期
|
||||
if (code === ResultEnum.TOKEN_OVERDUE) {
|
||||
window['$message'].error(window['$t']('http.token_overdue_message'))
|
||||
// iframe 嵌入模式下,token 过期不重定向到登录页
|
||||
console.error('[GoView] iframe 模式:token 已过期,请更新 URL 中的 token 参数')
|
||||
// token 过期,跳转到源站首页
|
||||
console.error('[GoView] token 已过期,即将跳转到源站首页')
|
||||
setTimeout(() => {
|
||||
window.location.href = window.location.origin
|
||||
}, 1500)
|
||||
return Promise.resolve(responseData)
|
||||
}
|
||||
|
||||
@@ -97,7 +100,8 @@ axiosInstance.interceptors.response.use(
|
||||
const status = err.response?.status
|
||||
switch (status) {
|
||||
case 401:
|
||||
routerTurnByName(PageEnum.BASE_LOGIN_NAME)
|
||||
// token 失效,跳转到源站首页
|
||||
window.location.href = window.location.origin
|
||||
Promise.reject(err)
|
||||
break
|
||||
|
||||
|
||||
@@ -43,6 +43,10 @@ export enum PageEnum {
|
||||
BASE_HOME_ITEMS = '/project/items',
|
||||
BASE_HOME_ITEMS_NAME = 'Project-Items',
|
||||
|
||||
// 项目管理
|
||||
BASE_HOME_MANAGEMENT = '/project/management',
|
||||
BASE_HOME_MANAGEMENT_NAME = 'Project-Management',
|
||||
|
||||
// 我的模板
|
||||
BASE_HOME_TEMPLATE = '/project/my-template',
|
||||
BASE_HOME_TEMPLATE_NAME = 'Project-My-Template',
|
||||
|
||||
@@ -5,6 +5,7 @@ import { PageEnum } from '@/enums/pageEnum'
|
||||
const importPath = {
|
||||
'PageEnum.BASE_HOME_NAME': () => import('@/views/project/index.vue'),
|
||||
'PageEnum.BASE_HOME_ITEMS_NAME': () => import('@/views/project/items/index.vue'),
|
||||
'PageEnum.BASE_HOME_MANAGEMENT_NAME': () => import('@/views/project/items/index.vue'),
|
||||
'PageEnum.BASE_HOME_TEMPLATE_NAME': () => import('@/views/project/mtTemplate/index.vue'),
|
||||
'PageEnum.BASE_HOME_TEMPLATE_MARKET_NAME': () => import('@/views/project/templateMarket/index.vue')
|
||||
}
|
||||
@@ -27,6 +28,14 @@ const projectRoutes: RouteRecordRaw = {
|
||||
title: '我的项目'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: PageEnum.BASE_HOME_MANAGEMENT,
|
||||
name: PageEnum.BASE_HOME_MANAGEMENT_NAME,
|
||||
component: importPath['PageEnum.BASE_HOME_MANAGEMENT_NAME'],
|
||||
meta: {
|
||||
title: '项目管理'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: PageEnum.BASE_HOME_TEMPLATE,
|
||||
name: PageEnum.BASE_HOME_TEMPLATE_NAME,
|
||||
|
||||
@@ -111,7 +111,8 @@ export const logout = async () => {
|
||||
window['$message'].success(window['$t']('global.logout_success'))
|
||||
clearCookie(RequestHttpHeaderEnum.COOKIE)
|
||||
clearLocalStorage(StorageEnum.GO_SYSTEM_STORE)
|
||||
routerTurnByName(PageEnum.BASE_LOGIN_NAME)
|
||||
// 退出登录后跳转到源站首页
|
||||
window.location.href = window.location.origin
|
||||
}
|
||||
} catch (error) {
|
||||
window['$message'].success(window['$t']('global.logout_failure'))
|
||||
|
||||
@@ -6,16 +6,16 @@ import { Chartype, ChartList } from '../../../index.d'
|
||||
import { ResultEnum } from '@/enums/httpEnum'
|
||||
|
||||
// 数据初始化
|
||||
export const useDataListInit = () => {
|
||||
export const useDataListInit = (filterState?: number) => {
|
||||
const loading = ref(true)
|
||||
|
||||
const paginat = reactive({
|
||||
// 当前页数
|
||||
page: 1,
|
||||
// 每页值
|
||||
limit: 10,
|
||||
limit: 12,
|
||||
// 总数
|
||||
count: 10
|
||||
count: 0
|
||||
})
|
||||
|
||||
const list = ref<ChartList>([])
|
||||
@@ -23,13 +23,18 @@ export const useDataListInit = () => {
|
||||
// 数据请求
|
||||
const fetchList = async () => {
|
||||
loading.value = true
|
||||
const { code, data }: any = await projectListApi({
|
||||
const params: any = {
|
||||
page: paginat.page,
|
||||
size: paginat.limit
|
||||
})
|
||||
}
|
||||
// 如果有 filterState 参数,添加到请求中
|
||||
if (filterState !== undefined) {
|
||||
params.state = filterState
|
||||
}
|
||||
const { code, data }: any = await projectListApi(params)
|
||||
if (code === 0) {
|
||||
paginat.count = data.total
|
||||
list.value = (data.list).map(e => {
|
||||
list.value = (data.list).map((e: any) => {
|
||||
const { identity, projectName, state, createTime, indexImage, createUserId, backgroundImage } = e
|
||||
return {
|
||||
identity: identity,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<!-- 列表 -->
|
||||
<div v-show="!loading">
|
||||
<n-grid :x-gap="20" :y-gap="20" cols="2 s:2 m:3 l:4 xl:4 xxl:4" responsive="screen">
|
||||
<n-grid-item v-for="(item, index) in list" :key="item.id">
|
||||
<n-grid-item v-for="(item, index) in list" :key="item.identity">
|
||||
<project-items-card
|
||||
:cardData="item"
|
||||
@preview="previewHandle"
|
||||
@@ -51,9 +51,14 @@ import { icon } from '@/plugins'
|
||||
import { useModalDataInit } from './hooks/useModal.hook'
|
||||
import { useDataListInit } from './hooks/useData.hook'
|
||||
|
||||
// 接收父组件传入的 state 过滤参数
|
||||
const props = defineProps<{
|
||||
filterState?: number
|
||||
}>()
|
||||
|
||||
const { CopyIcon, EllipsisHorizontalCircleSharpIcon } = icon.ionicons5
|
||||
const { modalData, modalShow, closeModal, previewHandle, resizeHandle, editHandle } = useModalDataInit()
|
||||
const { loading, paginat, list, changeSize, changePage, releaseHandle, deleteHandle } = useDataListInit()
|
||||
const { loading, paginat, list, changeSize, changePage, releaseHandle, deleteHandle } = useDataListInit(props.filterState)
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
<div class="go-project-items-header">
|
||||
<project-layout-create :collapsed="false"></project-layout-create>
|
||||
</div>
|
||||
<project-items-list></project-items-list>
|
||||
<project-items-list :filter-state="filterState"></project-items-list>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onMounted } from 'vue'
|
||||
import { onMounted, computed } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { ProjectItemsList } from './components/ProjectItemsList'
|
||||
import { ProjectLayoutCreate } from '../layout/components/ProjectLayoutCreate'
|
||||
@@ -17,11 +17,17 @@ import { useDesignStore } from '@/store/modules/designStore/designStore'
|
||||
import { SystemStoreEnum, SystemStoreUserInfoEnum } from '@/store/modules/systemStore/systemStore.d'
|
||||
import { ThemeEnum } from '@/enums/styleEnum'
|
||||
import { setHtmlTheme } from '@/utils'
|
||||
import { PageEnum } from '@/enums/pageEnum'
|
||||
|
||||
const route = useRoute()
|
||||
const systemStore = useSystemStore()
|
||||
const designStore = useDesignStore()
|
||||
|
||||
// 根据路由判断是否需要过滤 state=1 的数据
|
||||
const filterState = computed(() => {
|
||||
return route.name === PageEnum.BASE_HOME_MANAGEMENT_NAME ? 1 : undefined
|
||||
})
|
||||
|
||||
// 组件挂载时处理 URL 参数中的 token 和 mode
|
||||
onMounted(() => {
|
||||
const { token, mode } = route.query
|
||||
|
||||
Reference in New Issue
Block a user