gemercheung 1 yıl önce
ebeveyn
işleme
f3c7c1a515

+ 1 - 1
package.json

@@ -40,7 +40,7 @@
     "vue-i18n": "^9.2.2",
     "vue-router": "4",
     "vue3-autocounter": "^1.0.6",
-    "vue3-otp-input": "0.3.8"
+    "vue3-otp-input": "0.4.0"
   },
   "devDependencies": {
     "@types/lodash-es": "^4.17.6",

Dosya farkı çok büyük olduğundan ihmal edildi
+ 787 - 25
pnpm-lock.yaml


+ 1 - 1
src/api/room.ts

@@ -68,7 +68,7 @@ export interface Room {
   scenesAlbum?: string[]
   scenesVideo?: string
   gps?: string
-
+  head?: string
 }
 
 export type Rooms = Room[]

+ 1 - 1
src/locales/lang/zh/room.ts

@@ -26,7 +26,7 @@ export default {
     addLeastScene: '至少添加一个场景',
     advanceConfig: '高级配置'
   },
-  roomOnfired: '房间直播中, 请先关闭直播再修改 !',
+  roomOnfired: '房间直播中, 请先关闭直播再删除 !',
   copyLink: '复制链接',
   linkCopySuccess: '链接复制成功!',
   deletedScenes: '删除场景',

+ 1 - 1
src/views/room/edit-room/album-list.vue

@@ -16,7 +16,7 @@
             name="file"
             accept=".png,.jpg,.jpeg"
             :show-upload-list="false"
-            action="https://v4-test.4dkankan.com/takelook/upload/file"
+            :action="baseURL + '/takelook/upload/file'"
             :multiple="true"
             :before-upload="handleBeforeUpload"
             @change="handleABlumChange"

+ 68 - 14
src/views/room/edit-room/index.vue

@@ -27,6 +27,7 @@
             class="action-bottom"
             type="primary"
             size="middle"
+            :disabled="isLive"
             @click="saveRoom"
           >
             {{ t('base.save') }}
@@ -106,6 +107,9 @@
                 }"
                 mode="simple"
                 @onCreated="handleEditorCreated"
+                @onMaxLength="handleEditorOnMaxLength"
+                @onBlur="handleEditorOnBlur"
+                @customPaste="handleEditorCustomPaste"
               />
             </div>
             <!-- <a-textarea
@@ -139,7 +143,7 @@
             <EditAvatar :data="current.scenesAvatar" @sync="handleAvatarSync" />
           </a-form-item>
           <!-- 相册 -->
-          <a-form-item label="相册" name="title">
+          <!-- <a-form-item label="相册" name="title">
             <EditAlbum
               :data="current.scenesAlbum || []"
               @sync-list="handleAlbumSync"
@@ -147,7 +151,7 @@
           </a-form-item>
           <a-form-item label="视频" name="title">
             <EditVideo :data="current.scenesVideo" @sync="handleVideoSync" />
-          </a-form-item>
+          </a-form-item> -->
 
           <a-form-item
             :label="t('room.form.addScene')"
@@ -173,8 +177,8 @@
           >
             <a-range-picker
               :show-time="{ format: 'HH:mm' }"
-              format="YYYY-MM-DD HH:mm:ss"
-              style="width: 80%"
+              format="YYYY-MM-DD HH:mm"
+              style="width: 85%"
               :disabled="isRoomEnd"
               :disabledDate="disabledDate"
               :disabledTime="disabledTime"
@@ -196,7 +200,6 @@
               :num-inputs="4"
               :should-auto-focus="false"
               :class="{ disabled: isRoomEnd }"
-              :is-input-num="true"
               :conditionalClass="['one', 'two', 'three', 'four']"
               :placeholder="['-', '-', '-', '-']"
             />
@@ -334,7 +337,11 @@ import { useI18n } from '@/hook/useI18n'
 import { useLocale } from '@/locales/useLocale'
 import dayjs, { Dayjs } from 'dayjs'
 import duration from 'dayjs/plugin/duration'
-import { addAuthUser } from '@/api'
+import utc from 'dayjs/plugin/utc'
+import localizedFormat from 'dayjs/plugin/localizedFormat'
+import customParseFormat from 'dayjs/plugin/customParseFormat'
+import timezone from 'dayjs/plugin/timezone'
+import { addAuthUser, checkRoomEditOrDel } from '@/api'
 import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
 import { useScript } from '@/hook/useScript'
 import { onMounted, onBeforeUnmount } from 'vue'
@@ -344,6 +351,10 @@ import '@wangeditor/editor/dist/css/style.css' // 引入 css
 import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
 
 dayjs.extend(duration)
+dayjs.extend(utc)
+dayjs.extend(localizedFormat)
+dayjs.extend(customParseFormat)
+dayjs.extend(timezone)
 
 // const titleValidator = ref({
 //   validator: (_, value) =>
@@ -355,6 +366,7 @@ dayjs.extend(duration)
 interface AuthUserFormState {
   userName: string
   useTimeList?: [Dayjs, Dayjs]
+  // useTimeList?: [string, string]
 }
 
 export default defineComponent({
@@ -383,7 +395,7 @@ export default defineComponent({
     const { t } = useI18n()
 
     const avatarFile = ref<any[]>([])
-
+    const isLive = ref(false)
     const returnLocale = computed(() => {
       if (unref(getLocale).includes('zh')) {
         return 'zh'
@@ -394,19 +406,40 @@ export default defineComponent({
 
     const otpInput = ref('')
     const formRef = ref<FormInstance>()
-    const current = reactive(createRoom(props.room || {}))
-    // current.scenesAlbum = []
-    if (current.useTimeList?.length) {
-      current.useTimeList = current.useTimeList?.map(i =>
-        dayjs(i)
-      ) as unknown as [Dayjs, Dayjs]
-    }
+    const current = reactive({
+      ...createRoom(props.room || {}),
+      scenesAvatar: ''
+    })
+
+    watchEffect(async () => {
+      if (props.room?.head) {
+        // debugger
+        current.scenesAvatar = props.room.head
+      }
+      if (current.useTimeList?.length) {
+        // debugger
+        current.useTimeList = current.useTimeList
+          .filter(i => i)
+          .map(i => dayjs(i)) as unknown as [Dayjs, Dayjs]
+      }
+      if (props.room?.id) {
+        const res = await checkRoomEditOrDel(props.room)
+        if (props.room.hostStatus === 1 || res) {
+          console.error('当前场景已在直播中。。。。。')
+          isLive.value = true
+        }
+      }
+    })
+
     if (!current.visitPassword) {
       current.visitPassword = ''
     }
     if (!current.userObjList) {
       current.userObjList = []
     }
+    if (!current.userObjList) {
+      current.userObjList = []
+    }
 
     const deleteScene = (scene: Scene) => {
       const index = current.scenes.indexOf(scene)
@@ -678,8 +711,29 @@ export default defineComponent({
       // const curToolbarConfig = toolbar.getConfig()
       // console.log(curToolbarConfig.toolbarKeys) // 当前菜单排序和分组
     }
+    const handleEditorOnMaxLength = (editor: any) => {
+      const text = editor.getText()
+      if (text.length > 200) {
+        const html = text
+          .substring(0, 200)
+          .split(/\n/)
+          .map((line: string) => `<p>${line}</p>`)
+          .join('\n')
+        current.desc = html
+      }
+    }
+    const handleEditorOnBlur = (editor: any) => {
+      // debugger
+    }
+    const handleEditorCustomPaste = (editor: any) => {
+      // debugger
+    }
 
     return {
+      isLive,
+      handleEditorOnMaxLength,
+      handleEditorCustomPaste,
+      handleEditorOnBlur,
       handleNickRegex,
       returnLocale,
       t,

+ 6 - 8
src/views/room/list.vue

@@ -249,16 +249,11 @@ const webSyncRoom = async (room: Room) => {
 
 const editRoom = async (room?: Room) => {
   if (room) {
-    const res = await checkRoomEditOrDel(room)
-    if (!res) {
-      message.error(t('room.roomOnfired'))
-      return
-    }
-    const scenes = await roomStore.setRoomScenes(room)
-    // if (scenes.hostStatus  === 1) {
+    // if (!res) {
     //   message.error(t('room.roomOnfired'))
     //   return
     // }
+    const scenes = await roomStore.setRoomScenes(room)
     room = Object.assign({}, room, scenes)
   }
   // debugger
@@ -266,7 +261,10 @@ const editRoom = async (room?: Room) => {
     room,
     async onSave(actionRoom) {
       if (room) {
-        await roomStore.update(actionRoom)
+        const res = await checkRoomEditOrDel(room)
+        if (res) {
+          await roomStore.update(actionRoom)
+        }
       } else {
         await roomStore.insert(actionRoom)
       }