bill před 1 rokem
rodič
revize
2d35a51e2c

+ 11 - 7
src/app.vue

@@ -21,9 +21,9 @@
 
 <script lang="ts" setup>
 import { custom, params } from '@/env'
-import { computed, ref, watch, watchEffect } from 'vue'
+import { computed, ref, watch, watchEffect, nextTick } from 'vue'
 import { isEdit, prefix, appEl, initialSetting, caseProject, refreshCase } from '@/store'
-import { currentLayout, RoutesName } from './router';
+import router, { currentLayout, RoutesName } from './router';
 import { loadPack } from '@/utils'
 import PwdModel from '@/layout/pwd.vue'
 
@@ -32,7 +32,7 @@ const inputPwd = ref(false)
 const stopWatch = watch(currentLayout, async (layout) => {
   if (!layout) {
     return;
-  } else if (layout === RoutesName.signModel) {
+  } else if (layout === RoutesName.signModel || layout === RoutesName.error) {
     loaded.value = true;
     return;
   }
@@ -51,12 +51,16 @@ const stopWatch = watch(currentLayout, async (layout) => {
   }
 
   params.share = true
-  await loadPack(initialSetting)
   await refreshCase()
-  console.log(caseProject.value)
-  prefix.value = caseProject.value!.caseTitle
-  loaded.value = true
+  if (caseProject.value) {
+    await loadPack(initialSetting)
+    prefix.value = caseProject.value!.caseTitle
+  } else {
+    await router.replace({name: RoutesName.error})
+  }
   stopWatch()
+  loaded.value = true
+  console.log(loaded.value)
 }, { immediate: true })
 
 const layoutClassNames = computed(() => {

binární
src/assets/index.png


+ 1 - 0
src/layout/edit/scene-select.vue

@@ -65,6 +65,7 @@ const filterScenes = computed(
     .filter(item => item.name && item.modelId && item.name.includes(keyword.value))
     .map(scene => ({
       ...scene,
+      createTime: scene.createTime.substr(0, 16),
       type: SceneTypeDesc[scene.type]
     }))
 )

+ 1 - 0
src/layout/scene-list/index.vue

@@ -90,6 +90,7 @@ const stopWatch = watch(list, () => {
   p {
     height: 1.5em;
     overflow: hidden;
+    word-break: break-all;
     text-overflow: ellipsis
   }
 }

+ 5 - 0
src/router/config.ts

@@ -115,6 +115,11 @@ export const routes = [
     path: paths[RoutesName.signModel],
     name: RoutesName.signModel,
     component: () => import('@/views/sign-model/index.vue')
+  },
+  {
+    path: paths[RoutesName.error],
+    name: RoutesName.error,
+    component: () => import('@/views/error/index.vue')
   }
 ]
 

+ 6 - 1
src/router/constant.ts

@@ -34,11 +34,13 @@ export enum RoutesName {
 
 
   // 单模型展示
-  signModel = 'signModel'
+  signModel = 'signModel',
+  error = "error"
 }
 
 
 export const paths = {
+  [RoutesName.error]: '/error',
   [RoutesName.fuseEdit]: '/fuseEdit',
 
   [RoutesName.fuseEditSwitch]: '',
@@ -117,5 +119,8 @@ export const metas = {
     icon: 'list-file',
     title: '卷宗'
   },
+  [RoutesName.error]: {
+    title: '错误页面'
+  },
 }
 export const ViewHome = RoutesName.merge

+ 1 - 1
src/router/index.ts

@@ -44,7 +44,7 @@ export const currentRouteNames = computed(() => getRouteNames(router.currentRout
 
 export const currentLayout = computed(() => {
   const names = currentRouteNames.value
-  const layoutNames = [RoutesName.fuseEditSwitch, RoutesName.show, RoutesName.sceneEdit, RoutesName.signModel] as const
+  const layoutNames = [RoutesName.fuseEditSwitch, RoutesName.show, RoutesName.error, RoutesName.sceneEdit, RoutesName.signModel] as const
   return layoutNames.find(name => names.includes(name))
 })
 

+ 30 - 0
src/views/error/index.vue

@@ -0,0 +1,30 @@
+<template>
+  <div class="error">
+    <div>
+      <img src="@/assets/index.png" />
+      <p>资源不存在或已删除</p>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+</script>
+
+<style lang="scss" scoped>
+.error {
+  width:100vw;
+  height: 100vh;
+  background: #F7F7F7;
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  img {
+    margin-top: 120px
+  }
+  p {
+    margin-top: 30px;
+    color: rgba(153, 153, 153, 1);
+    text-align: center;
+    font-size: 16px;
+  }
+}
+</style>

+ 1 - 0
src/views/fire/index.vue

@@ -88,6 +88,7 @@ import { caseProject } from '@/store/case'
     color: rgba(255, 255, 255, 1);
     font-size: 14px;
     display: flex;
+    word-break: break-all;
 
     span {
       flex: none;