gemercheung 2 лет назад
Родитель
Сommit
c605863014

+ 1 - 0
src/api/constant.ts

@@ -16,6 +16,7 @@ export const GET_ROOM_LIST = '/takelook/roomList'
 export const GET_ROOM = '/takelook/roomInfo'
 export const SET_ROOM = '/takelook/roomAddOrUpdate'
 export const DEL_ROOM = '/takelook/roomDelete'
+export const ROOM_ACTION_CHECKER = '/takelook/checkCanDel'
 export const GET_ROOM_LEADER_MINI_CODE = '/takelook/roomGetHostCode'
 export const GET_ROOM_MINI_CODE = '/takelook/roomGetShareCode'
 // /takelook/roomGetHostCode

+ 7 - 1
src/api/room.ts

@@ -4,7 +4,8 @@ import {
   DEL_ROOM,
   SET_ROOM,
   GET_ROOM,
-  GET_ROOM_LEADER_MINI_CODE
+  GET_ROOM_LEADER_MINI_CODE,
+  ROOM_ACTION_CHECKER
 } from './constant'
 import axios from './instance'
 import type { PageResult, Scene } from './'
@@ -149,4 +150,9 @@ export const fetchRoomDetail = async (roomId: Room['id']) => {
   })
   return res
 }
+export const checkRoomEditOrDel = async (room: Room) => {
+  return axios.get<string>(ROOM_ACTION_CHECKER, {
+    params: { roomId: room.id }
+  })
+}
 

+ 13 - 5
src/layout/header.vue

@@ -124,14 +124,21 @@ console.log('langList', langList)
 
 const menus = [
   { label: 'base.personalCenter', key: 'user' },
+  { label: 'base.userGuideline', key: 'guideLine' },
   { label: 'base.logout', key: 'logout' }
 ]
 const handlerMenuClick: MenuProps['onClick'] = async e => {
-  if (e.key === 'logout') {
-    await postLogout()
-    location.replace(`${mainURL}/?lang=${currentLang.value.key}`)
-  } else {
-    location.href = `${mainURL}/#/information?lang=${currentLang.value.key}`
+  switch (true) {
+    case e.key === 'logout':
+      await postLogout()
+      location.replace(`${mainURL}/?lang=${currentLang.value.key}`)
+      break
+    case e.key === 'user':
+      location.href = `${mainURL}/#/information?lang=${currentLang.value.key}`
+      break
+    case e.key === 'guideLine':
+      window.open('https://docs.4dkankan.com/#/product/livestream/zh-cn/README', '_blank');
+      break
   }
 }
 
@@ -239,6 +246,7 @@ onMounted(() => {
   a {
     text-decoration: none;
     color: #323233;
+    font-size: 16px;
     margin: 0 25px;
   }
   span.active {

+ 1 - 0
src/locales/lang/en/base.ts

@@ -7,6 +7,7 @@ export default {
   tips: 'tips',
   confirm: 'confirm',
   personalCenter: 'personal center',
+  userGuideline: 'User Guideline',
   logout: 'logout',
   edit: 'Edit',
   share: 'Share',

+ 1 - 0
src/locales/lang/zh/base.ts

@@ -7,6 +7,7 @@ export default {
   tips: '提示',
   confirm: '确定',
   personalCenter: '个人中心',
+  userGuideline: '用户手册',
   logout: '退出登录',
   edit: '编辑',
   share: '分享',

+ 31 - 7
src/views/room/list.vue

@@ -33,8 +33,14 @@
     :keyword="keyword"
     name="作品"
   >
-    <template v-if="!keyword " #undata>
-      <a-button type="primary" shape="round" size="middle" @click="editRoom()"  v-if="isRoomAll">
+    <template v-if="!keyword" #undata>
+      <a-button
+        type="primary"
+        shape="round"
+        size="middle"
+        @click="editRoom()"
+        v-if="isRoomAll"
+      >
         {{ t('room.createRoom') }}
       </a-button>
       <span v-else>{{ t('room.nodata') }}</span>
@@ -42,10 +48,10 @@
     <a-list
       :grid="{ gutter: 20, xl: 5, lg: 4, md: 3, sm: 2, xs: 1, column: 5 }"
       :data-source="roomList"
+      class="page-list"
     >
       <template #renderItem="{ item }">
         <a-list-item>
-         
           <RoomSign
             v-if="item !== addMarked"
             :room="item"
@@ -104,7 +110,7 @@ import DataList from '@/components/data-list/index.vue'
 import { useI18n } from '@/hook/useI18n'
 
 import type { Room } from '@/store/modules/room'
-import { fetchRoomDetail } from '@/api'
+import { fetchRoomDetail, checkRoomEditOrDel } from '@/api'
 import { useLocale } from '@/locales/useLocale'
 
 defineOptions({ name: 'RoomList' })
@@ -148,7 +154,15 @@ const roomList = computed(() =>
 )
 
 const isRoomAll = computed(() => roomStore.roomStatus === 0)
-const deleteRoom = (room: Room) => {
+const deleteRoom = async (room: Room) => {
+  // xxx
+
+  const res = await checkRoomEditOrDel(room)
+  if (!res) {
+    message.error(t('room.roomOnfired'))
+    return
+  }
+
   Modal.confirm({
     content: t('room.deletedScenesWaring'),
     title: t('room.deletedScenes'),
@@ -235,11 +249,16 @@ const webSyncRoom = async (room: Room) => {
 
 const editRoom = async (room?: Room) => {
   if (room) {
-    const scenes = await roomStore.setRoomScenes(room)
-    if (scenes.hostStatus  === 1) {
+    const res = await checkRoomEditOrDel(room)
+    if (!res) {
       message.error(t('room.roomOnfired'))
       return
     }
+    const scenes = await roomStore.setRoomScenes(room)
+    // if (scenes.hostStatus  === 1) {
+    //   message.error(t('room.roomOnfired'))
+    //   return
+    // }
     room = Object.assign({}, room, scenes)
   }
   // debugger
@@ -364,4 +383,9 @@ const headerVisible = useVisible({
     }
   }
 }
+.page-list {
+  .ant-card {
+    min-height: 332px;
+  }
+}
 </style>

+ 4 - 1
src/views/statistic/index.vue

@@ -66,9 +66,12 @@ const { getAntdLocale } = useLocale()
   .ant-tabs-nav-list {
     background: #fff;
     padding: 10px;
-    max-height: 170px;
+    max-height: 180px;
     overflow: hidden;
   }
+  .tab-title{
+    font-size: 16px;
+  }
   .ant-tabs-tab .anticon {
     margin-right: 5px;
   }