Parcourir la source

Merge branch 'master' of http://git.dayaedu.com/lex/colexiu-project

mo il y a 2 ans
Parent
commit
abb26d7ae4

Fichier diff supprimé car celui-ci est trop grand
+ 10477 - 60
package-lock.json


BIN
src/common/images/icon_music_cert.png


BIN
src/common/images/icon_no_live.png


BIN
src/common/images/icon_teacher_cert.png


+ 33 - 2
src/components/col-empty/index.tsx

@@ -1,5 +1,8 @@
-import { defineComponent } from 'vue'
+import { defineComponent, PropType } from 'vue'
 import empty from '@/common/images/icon_empty.png'
+import live from '@/common/images/icon_no_live.png'
+import teacherCert from '@/common/images/icon_teacher_cert.png'
+import musicCert from '@/common/images/icon_music_cert.png'
 import { ElButton } from 'element-plus'
 
 export default defineComponent({
@@ -16,12 +19,37 @@ export default defineComponent({
     buttonVisibility: {
       type: Boolean,
       default: false
+    },
+    type: {
+      type: String,
+      default: 'empty'
+      // 'empty' | 'live' | 'teacherCert' | 'musicCert'
+    },
+    onDetail: {
+      type: Function,
+      default: () => {}
+    }
+  },
+  computed: {
+    icon() {
+      switch (this.type) {
+        case 'empty':
+          return empty
+        case 'live':
+          return live
+        case 'teacherCert':
+          return teacherCert
+        case 'musicCert':
+          return musicCert
+        default:
+          return empty
+      }
     }
   },
   render() {
     return (
       <div class="w-full h-full text-center flex items-center justify-center flex-col">
-        <img src={empty} class="w-64 m-auto" />
+        <img src={this.icon} class="w-64 m-auto" />
 
         <p class="text-base text-[#999999] pt-4 pb-6">{this.message}</p>
 
@@ -30,6 +58,9 @@ export default defineComponent({
             type="primary"
             class="rounded-sm !px-12"
             style={{ height: '38px' }}
+            onClick={() => {
+              this.onDetail()
+            }}
           >
             {this.buttonText}
           </ElButton>

+ 1 - 1
src/views/role-auth/teacherAuth/components/cert-brief/index.tsx

@@ -33,7 +33,7 @@ export default defineComponent({
     },
     authStatus(): Boolean {
       const entryStatus = state.user.data?.entryStatus || 0
-      return entryStatus === 'DOING' || entryStatus === 'PASS' ? true : false
+      return entryStatus === 'PASS' ? true : false
     }
   },
   data() {

+ 20 - 9
src/views/user-info/live-class/index.tsx

@@ -1,5 +1,6 @@
 import Pagination from '@/components/pagination'
-import { ElButton, ElTabPane, ElTabs } from 'element-plus'
+import { state } from '@/state'
+import { ElButton, ElMessage, ElTabPane, ElTabs } from 'element-plus'
 import { defineComponent } from 'vue'
 import Item from '../components/item'
 import styles from './index.module.less'
@@ -12,9 +13,6 @@ export default defineComponent({
       activeName: 'ING'
     }
   },
-  methods: {
-    getList() {}
-  },
   render() {
     return (
       <div class={[styles.liveClass, 'relative']}>
@@ -23,12 +21,25 @@ export default defineComponent({
           type="primary"
           class="absolute right-11 top-4 z-10"
           onClick={() => {
-            this.$router.push({
-              path: '/userInfo/liveOperation',
-              query: {
-                type: 'create'
+            // 直播课需要老师认证和开通直播
+            if (state.user.data?.enableFlag && state.user.data?.liveFlag) {
+              this.$router.push({
+                path: '/userInfo/liveOperation',
+                query: {
+                  type: 'create'
+                }
+              })
+            } else {
+              if (!state.user.data?.enableFlag) {
+                ElMessage.error('您还未完成老师认证,认证后才可创建视频课')
+                return
+              }
+
+              if (!state.user.data?.liveFlag) {
+                ElMessage.error('您尚未开通直播服务,开通后即可创建直播课程')
+                return
               }
-            })
+            }
           }}
         >
           新建直播课

+ 86 - 61
src/views/user-info/live-class/list.tsx

@@ -29,7 +29,6 @@ export default defineComponent({
     }
   },
   mounted() {
-    console.log(state.user, 'state.user')
     this.getList()
   },
   methods: {
@@ -65,73 +64,99 @@ export default defineComponent({
   render() {
     return (
       <>
-        <div class="flex flex-wrap px-10">
-          <ElSkeleton
-            loading={this.loading}
-            animated
-            class="flex"
-            count={3}
-            v-slots={{
-              template: () => (
-                <div class="w-1/3">
-                  <div class="flex flex-col pt-8 w-[262px] m-auto">
-                    <ElSkeletonItem
-                      variant="image"
-                      style={{ width: '100%', height: '175px' }}
-                    ></ElSkeletonItem>
-                    <div class="mx-2.5 py-3.5 border-b border-b-[#F2F2F2]">
-                      <div class="text-lg leading-none font-medium whitespace-nowrap overflow-hidden text-ellipsis">
-                        <ElSkeletonItem variant="h3"></ElSkeletonItem>
-                      </div>
-                      <div class="text-sm text-[#999] pt-2.5">
+        {state.user.data?.entryFlag && state.user.data?.liveFlag ? (
+          <>
+            <div class="flex flex-wrap px-10">
+              <ElSkeleton
+                loading={this.loading}
+                animated
+                class="flex"
+                count={3}
+                v-slots={{
+                  template: () => (
+                    <div class="w-1/3">
+                      <div class="flex flex-col pt-8 w-[262px] m-auto">
                         <ElSkeletonItem
-                          variant="p"
-                          style={{ width: '50%' }}
+                          variant="image"
+                          style={{ width: '100%', height: '175px' }}
                         ></ElSkeletonItem>
-                      </div>
-                    </div>
+                        <div class="mx-2.5 py-3.5 border-b border-b-[#F2F2F2]">
+                          <div class="text-lg leading-none font-medium whitespace-nowrap overflow-hidden text-ellipsis">
+                            <ElSkeletonItem variant="h3"></ElSkeletonItem>
+                          </div>
+                          <div class="text-sm text-[#999] pt-2.5">
+                            <ElSkeletonItem
+                              variant="p"
+                              style={{ width: '50%' }}
+                            ></ElSkeletonItem>
+                          </div>
+                        </div>
 
-                    <div class="mx-2.5 py-4 flex items-center">
-                      <ElSkeletonItem
-                        variant="circle"
-                        style={{
-                          width: '22px',
-                          height: '22px',
-                          marginRight: '5px'
-                        }}
-                      ></ElSkeletonItem>
-                      <ElSkeletonItem
-                        variant="p"
-                        style={{ width: '20%' }}
-                      ></ElSkeletonItem>
-                      <p style={{ width: '45%' }}></p>
-                      <ElSkeletonItem
-                        variant="p"
-                        style={{ width: '20%' }}
-                      ></ElSkeletonItem>
+                        <div class="mx-2.5 py-4 flex items-center">
+                          <ElSkeletonItem
+                            variant="circle"
+                            style={{
+                              width: '22px',
+                              height: '22px',
+                              marginRight: '5px'
+                            }}
+                          ></ElSkeletonItem>
+                          <ElSkeletonItem
+                            variant="p"
+                            style={{ width: '20%' }}
+                          ></ElSkeletonItem>
+                          <p style={{ width: '45%' }}></p>
+                          <ElSkeletonItem
+                            variant="p"
+                            style={{ width: '20%' }}
+                          ></ElSkeletonItem>
+                        </div>
+                      </div>
                     </div>
+                  )
+                }}
+              >
+                {this.list.map((item: any) => (
+                  <div class="w-1/3 pt-8">
+                    <Item class="cursor-pointer" item={item} />
                   </div>
-                </div>
-              )
-            }}
-          >
-            {this.list.map((item: any) => (
-              <div class="w-1/3 pt-8">
-                <Item class="cursor-pointer" item={item} />
-              </div>
-            ))}
-          </ElSkeleton>
-        </div>
+                ))}
+              </ElSkeleton>
+            </div>
 
-        <Pagination
-          total={this.pageInfo.total}
-          v-model:page={this.pageInfo.page}
-          v-model:limit={this.pageInfo.limit}
-          pageSizes={this.pageInfo.page_size}
-          pagination={this.getList}
-        />
+            <Pagination
+              total={this.pageInfo.total}
+              v-model:page={this.pageInfo.page}
+              v-model:limit={this.pageInfo.limit}
+              pageSizes={this.pageInfo.page_size}
+              pagination={this.getList}
+            />
 
-        {this.dataShow && <ColEmpty />}
+            {this.dataShow && <ColEmpty />}
+          </>
+        ) : state.user.data?.entryFlag ? (
+          !state.user.data?.liveFlag && (
+            <ColEmpty
+              type="live"
+              message="您尚未开通直播服务,开通后即可创建直播课程~"
+              buttonVisibility={false}
+              buttonText="立即开通"
+              onDetail={() => {
+                this.$router.push('/teacherAuth')
+              }}
+            />
+          )
+        ) : (
+          <ColEmpty
+            type="teacherCert"
+            message="您还未完成老师认证,认证后才可创建视频课哦~"
+            buttonVisibility
+            buttonText="去认证"
+            onDetail={() => {
+              this.$router.push('/teacherAuth')
+            }}
+          />
+        )}
       </>
     )
   }

+ 10 - 4
src/views/user-info/music-class/index.tsx

@@ -1,4 +1,5 @@
-import { ElBadge, ElButton, ElTabPane, ElTabs } from 'element-plus'
+import { state } from '@/state'
+import { ElBadge, ElButton, ElMessage, ElTabPane, ElTabs } from 'element-plus'
 import { defineComponent } from 'vue'
 import styles from './index.module.less'
 import List from './list'
@@ -26,9 +27,14 @@ export default defineComponent({
           type="primary"
           class="absolute right-11 top-4 z-10"
           onClick={() => {
-            this.$router.push({
-              path: '/userInfo/musicOperation'
-            })
+            if (state.user.data?.musicianFlag) {
+              this.$router.push({
+                path: '/userInfo/musicOperation'
+              })
+            } else {
+              ElMessage.error('您还未完成音乐人认证,认证后才可创建曲谱')
+              return
+            }
           }}
         >
           新建乐谱

+ 86 - 64
src/views/user-info/music-class/list.tsx

@@ -5,6 +5,7 @@ import request from '@/helpers/request'
 import styles from './index.module.less'
 import { ElSkeleton, ElSkeletonItem } from 'element-plus'
 import { defineComponent } from 'vue'
+import { state } from '@/state'
 
 export default defineComponent({
   name: 'list',
@@ -33,7 +34,9 @@ export default defineComponent({
     }
   },
   mounted() {
-    this.getList()
+    if (state.user.data?.musicianFlag) {
+      this.getList()
+    }
   },
   methods: {
     async getList() {
@@ -73,76 +76,95 @@ export default defineComponent({
   render() {
     return (
       <>
-        <div class="px-[38px]">
-          <ElSkeleton
-            loading={this.loading}
-            animated
-            class=" w-full m-auto px-[14px] flex items-center flex-col"
-            count={3}
-            v-slots={{
-              template: () => (
-                <div class="h-[94px] flex items-center justify-between w-full mb-2">
-                  <div class="w-2/3 flex items-center">
-                    <ElSkeletonItem
-                      variant="circle"
-                      style={{ width: '66px', height: '66px' }}
-                    ></ElSkeletonItem>
-                    <div class="w-1/2 pl-2">
-                      <ElSkeletonItem variant="h3"></ElSkeletonItem>
+        {state.user.data?.musicianFlag ? (
+          <>
+            <div class="px-[38px]">
+              <ElSkeleton
+                loading={this.loading}
+                animated
+                class=" w-full m-auto px-[14px] flex items-center flex-col"
+                count={3}
+                v-slots={{
+                  template: () => (
+                    <div class="h-[94px] flex items-center justify-between w-full mb-2">
+                      <div class="w-2/3 flex items-center">
+                        <ElSkeletonItem
+                          variant="circle"
+                          style={{ width: '66px', height: '66px' }}
+                        ></ElSkeletonItem>
+                        <div class="w-1/2 pl-2">
+                          <ElSkeletonItem variant="h3"></ElSkeletonItem>
+                          <ElSkeletonItem
+                            variant="p"
+                            style={{ width: '50%' }}
+                          ></ElSkeletonItem>
+                        </div>
+                      </div>
                       <ElSkeletonItem
                         variant="p"
-                        style={{ width: '50%' }}
+                        style={{ width: '20%' }}
                       ></ElSkeletonItem>
                     </div>
-                  </div>
-                  <ElSkeletonItem
-                    variant="p"
-                    style={{ width: '20%' }}
-                  ></ElSkeletonItem>
-                </div>
-              )
-            }}
-          >
-            {this.list.map((item: any) => (
-              <MusicLIstItem
-                onClick={(item: any) => {
-                  if (this.auditStatus === 'UNPASS') {
-                    console.log(item)
-                    this.$router.push({
-                      path: '/userInfo/musicOperation',
-                      query: {
-                        type: 'update',
-                        id: item.id
-                      }
-                    })
-                  } else {
-                    // 跳转对应详情 个人中心不跳转到详情
-                  }
+                  )
                 }}
-                item={{
-                  id: item.id,
-                  addName: item.addName,
-                  addUserAvatar: item.addUserAvatar,
-                  musicSheetName: item.musicSheetName,
-                  subjectNames: item.subjectNames,
-                  composer: item.composer,
-                  chargeType: item.chargeType
-                }}
-                class={[styles.musicListItem, 'mb-2 rounded-xl cursor-pointer']}
-              />
-            ))}
-          </ElSkeleton>
-        </div>
+              >
+                {this.list.map((item: any) => (
+                  <MusicLIstItem
+                    onClick={(item: any) => {
+                      if (this.auditStatus === 'UNPASS') {
+                        console.log(item)
+                        this.$router.push({
+                          path: '/userInfo/musicOperation',
+                          query: {
+                            type: 'update',
+                            id: item.id
+                          }
+                        })
+                      } else {
+                        // 跳转对应详情 个人中心不跳转到详情
+                      }
+                    }}
+                    item={{
+                      id: item.id,
+                      addName: item.addName,
+                      addUserAvatar: item.addUserAvatar,
+                      musicSheetName: item.musicSheetName,
+                      subjectNames: item.subjectNames,
+                      composer: item.composer,
+                      chargeType: item.chargeType
+                    }}
+                    class={[
+                      styles.musicListItem,
+                      'mb-2 rounded-xl cursor-pointer'
+                    ]}
+                  />
+                ))}
+              </ElSkeleton>
+            </div>
 
-        <Pagination
-          total={this.pageInfo.total}
-          v-model:page={this.pageInfo.page}
-          v-model:limit={this.pageInfo.limit}
-          pageSizes={this.pageInfo.page_size}
-          pagination={this.getList}
-        />
+            <Pagination
+              total={this.pageInfo.total}
+              v-model:page={this.pageInfo.page}
+              v-model:limit={this.pageInfo.limit}
+              pageSizes={this.pageInfo.page_size}
+              pagination={this.getList}
+            />
 
-        {this.dataShow && <ColEmpty />}
+            {this.dataShow && <ColEmpty />}
+          </>
+        ) : (
+          <div class="px-[38px]">
+            <ColEmpty
+              type="musicCert"
+              message="您还未完成音乐人认证,认证后才可创建曲谱~"
+              buttonVisibility
+              buttonText="去认证"
+              onDetail={() => {
+                this.$router.push('/musicAuth')
+              }}
+            />
+          </div>
+        )}
       </>
     )
   }

+ 165 - 146
src/views/user-info/practice-setting/index.tsx

@@ -1,6 +1,7 @@
+import ColEmpty from '@/components/col-empty'
 import request from '@/helpers/request'
 import { verifyNumberIntegerAndFloat } from '@/helpers/toolsValidate'
-import { teacherState } from '@/views/role-auth/teacherAuth/teacherState'
+import { state } from '@/state'
 import {
   ElButton,
   ElDialog,
@@ -253,156 +254,174 @@ export default defineComponent({
         <div class="text-base text-[#666] leading-none px-6 py-5 border-b border-b-[#E5E5E5]">
           陪练课设置
         </div>
-
-        <ElForm
-          labelPosition="left"
-          labelWidth={'180px'}
-          size="large"
-          model={this.form}
-          ref="form"
-          class="px-44 py-5"
-        >
-          <ElFormItem
-            label="是否开启陪练"
-            prop="enableFlag"
-            rules={[
-              {
-                required: true,
-                message: '请选择是否开启陪练'
-              }
-            ]}
-          >
-            <ElSelect class="w-full" v-model={this.form.enableFlag}>
-              <ElSelect.Option value={1} label={'是'}>
-                是
-              </ElSelect.Option>
-              <ElSelect.Option value={0} label={'否'}>
-                否
-              </ElSelect.Option>
-            </ElSelect>
-          </ElFormItem>
-          <ElFormItem
-            label="可教授声部"
-            prop={'subjectId'}
-            rules={[
-              {
-                required: true,
-                message: '请选择可教授声部',
-                trigger: 'change'
-              }
-            ]}
-          >
-            <ElSelect
-              multiple
-              filterable
-              placeholder="请选择可教授声部"
-              class="w-full"
-              multipleLimit={5}
-              v-model={this.form.subjectId}
-              onChange={this.onChoice}
-            >
-              {this.subjectList.map((item: any) => (
-                <ElOption key={item.id} value={item.id} label={item.name} />
-              ))}
-            </ElSelect>
-          </ElFormItem>
-          <ElFormItem
-            label="单课时长"
-            prop="courseMinutes"
-            rules={[
-              {
-                required: true,
-                message: '请选择单课时长',
-                trigger: 'change'
-              }
-            ]}
-          >
-            <ElSelect
-              class="w-full"
-              placeholder="请选择单课时时长"
-              v-model={this.form.courseMinutes}
+        {state.user.data?.entryFlag ? (
+          <>
+            <ElForm
+              labelPosition="left"
+              labelWidth={'180px'}
+              size="large"
+              model={this.form}
+              ref="form"
+              class="px-44 py-5"
             >
-              {this.minutes.map((item: any) => (
-                <ElOption key={item.courseMinutes} value={item.courseMinutes}>
-                  {item.name}
-                </ElOption>
+              <ElFormItem
+                label="是否开启陪练"
+                prop="enableFlag"
+                rules={[
+                  {
+                    required: true,
+                    message: '请选择是否开启陪练'
+                  }
+                ]}
+              >
+                <ElSelect class="w-full" v-model={this.form.enableFlag}>
+                  <ElSelect.Option value={1} label={'是'}>
+                    是
+                  </ElSelect.Option>
+                  <ElSelect.Option value={0} label={'否'}>
+                    否
+                  </ElSelect.Option>
+                </ElSelect>
+              </ElFormItem>
+              <ElFormItem
+                label="可教授声部"
+                prop={'subjectId'}
+                rules={[
+                  {
+                    required: true,
+                    message: '请选择可教授声部',
+                    trigger: 'change'
+                  }
+                ]}
+              >
+                <ElSelect
+                  multiple
+                  filterable
+                  placeholder="请选择可教授声部"
+                  class="w-full"
+                  multipleLimit={5}
+                  v-model={this.form.subjectId}
+                  onChange={this.onChoice}
+                >
+                  {this.subjectList.map((item: any) => (
+                    <ElOption key={item.id} value={item.id} label={item.name} />
+                  ))}
+                </ElSelect>
+              </ElFormItem>
+              <ElFormItem
+                label="单课时长"
+                prop="courseMinutes"
+                rules={[
+                  {
+                    required: true,
+                    message: '请选择单课时长',
+                    trigger: 'change'
+                  }
+                ]}
+              >
+                <ElSelect
+                  class="w-full"
+                  placeholder="请选择单课时时长"
+                  v-model={this.form.courseMinutes}
+                >
+                  {this.minutes.map((item: any) => (
+                    <ElOption
+                      key={item.courseMinutes}
+                      value={item.courseMinutes}
+                    >
+                      {item.name}
+                    </ElOption>
+                  ))}
+                </ElSelect>
+              </ElFormItem>
+              {this.form.subjectPrice.map((item: any, index: number) => (
+                <ElFormItem
+                  label={`${this.getSubjectName(item.subjectId)}陪练价格`}
+                  prop={`subjectPrice.${index}.subjectPrice`}
+                  rules={[
+                    {
+                      required: true,
+                      message: `请选择声部陪练价格`
+                    }
+                  ]}
+                >
+                  <ElInput
+                    // @ts-ignore
+                    onKeyup={this.onFormatter}
+                    type="text"
+                    placeholder="请输入陪练价格"
+                    v-model={item.subjectPrice}
+                    v-slots={{
+                      append: () => (
+                        <span class="text-base text-[#333]">元</span>
+                      )
+                    }}
+                  />
+                </ElFormItem>
               ))}
-            </ElSelect>
-          </ElFormItem>
-          {this.form.subjectPrice.map((item: any, index: number) => (
-            <ElFormItem
-              label={`${this.getSubjectName(item.subjectId)}陪练价格`}
-              prop={`subjectPrice.${index}.subjectPrice`}
-              rules={[
-                {
-                  required: true,
-                  message: `请选择声部陪练价格`
-                }
-              ]}
-            >
-              <ElInput
-                // @ts-ignore
-                onKeyup={this.onFormatter}
-                type="text"
-                placeholder="请输入陪练价格"
-                v-model={item.subjectPrice}
-                v-slots={{
-                  append: () => <span class="text-base text-[#333]">元</span>
+              <ElFormItem label="是否跳过节假日">
+                <ElRadioGroup v-model={this.form.skipHolidayFlag}>
+                  <ElRadioButton label={1} class="mr-3 w-24">
+                    是
+                  </ElRadioButton>
+                  <ElRadioButton label={0} class="w-24">
+                    否
+                  </ElRadioButton>
+                </ElRadioGroup>
+              </ElFormItem>
+              <ElFormItem label="陪练时间段">
+                <div onClick={this.onTimer} class="w-full">
+                  <ElInput
+                    readonly
+                    class="cursor-pointer"
+                    v-model={this.form.setting}
+                    placeholder="请选择陪练时间段"
+                    suffixIcon={'ArrowDown'}
+                  />
+                </div>
+              </ElFormItem>
+            </ElForm>
+
+            <div class="border-t border-t-[#E5E5E5] text-center pt-6 pb-7">
+              <ElButton
+                class="!w-40 !h-[38px]"
+                onClick={() => {
+                  // 重置数据
+                  this.form = {
+                    enableFlag: 1,
+                    courseMinutes: null as any,
+                    freeMinutes: 0,
+                    subjectIdTemp: '',
+                    subjectId: [] as any[],
+                    subjectPrice: [] as any[],
+                    skipHolidayFlag: 1,
+                    setting: '未设置'
+                  }
+                  ;(this as any).$refs.form.resetFields()
                 }}
-              />
-            </ElFormItem>
-          ))}
-          <ElFormItem label="是否跳过节假日">
-            <ElRadioGroup v-model={this.form.skipHolidayFlag}>
-              <ElRadioButton label={1} class="mr-3 w-24">
-                是
-              </ElRadioButton>
-              <ElRadioButton label={0} class="w-24">
-                否
-              </ElRadioButton>
-            </ElRadioGroup>
-          </ElFormItem>
-          <ElFormItem label="陪练时间段">
-            <div onClick={this.onTimer} class="w-full">
-              <ElInput
-                readonly
-                class="cursor-pointer"
-                v-model={this.form.setting}
-                placeholder="请选择陪练时间段"
-                suffixIcon={'ArrowDown'}
-              />
+              >
+                重置
+              </ElButton>
+              <ElButton
+                type="primary"
+                class="!w-40 !h-[38px]"
+                onClick={this.onSubmit}
+              >
+                保存设置
+              </ElButton>
             </div>
-          </ElFormItem>
-        </ElForm>
-
-        <div class="border-t border-t-[#E5E5E5] text-center pt-6 pb-7">
-          <ElButton
-            class="!w-40 !h-[38px]"
-            onClick={() => {
-              // 重置数据
-              this.form = {
-                enableFlag: 1,
-                courseMinutes: null as any,
-                freeMinutes: 0,
-                subjectIdTemp: '',
-                subjectId: [] as any[],
-                subjectPrice: [] as any[],
-                skipHolidayFlag: 1,
-                setting: '未设置'
-              }
-              ;(this as any).$refs.form.resetFields()
+          </>
+        ) : (
+          <ColEmpty
+            type="teacherCert"
+            message="您还未完成老师认证,认证后才可设置陪练课哦~"
+            buttonVisibility
+            buttonText="去认证"
+            onDetail={() => {
+              this.$router.push('/teacherAuth')
             }}
-          >
-            重置
-          </ElButton>
-          <ElButton
-            type="primary"
-            class="!w-40 !h-[38px]"
-            onClick={this.onSubmit}
-          >
-            保存设置
-          </ElButton>
-        </div>
+          />
+        )}
 
         <ElDialog
           modelValue={this.timerStatus}

+ 8 - 3
src/views/user-info/video-class/index.tsx

@@ -1,5 +1,5 @@
-import VideoDetailItem from '@/components/videoDetailItem'
-import { ElButton, ElTabPane, ElTabs } from 'element-plus'
+import { state } from '@/state'
+import { ElButton, ElMessage, ElTabPane, ElTabs } from 'element-plus'
 import { defineComponent } from 'vue'
 import styles from './index.module.less'
 import List from './list'
@@ -23,7 +23,12 @@ export default defineComponent({
           type="primary"
           class="absolute right-11 top-4 z-10"
           onClick={() => {
-            this.$router.push('/userInfo/videoOperation')
+            if (state.user.data?.enableFlag) {
+              this.$router.push('/userInfo/videoOperation')
+            } else {
+              ElMessage.error('您还未完成老师认证,认证后才可创建视频课')
+              return
+            }
           }}
         >
           新建视频课

+ 87 - 71
src/views/user-info/video-class/list.tsx

@@ -29,7 +29,9 @@ export default defineComponent({
     }
   },
   mounted() {
-    this.getList()
+    if (state.user.data?.enableFlag) {
+      this.getList()
+    }
   },
   methods: {
     async getList() {
@@ -79,83 +81,97 @@ export default defineComponent({
   render() {
     return (
       <>
-        <div class="flex flex-wrap px-10">
-          <ElSkeleton
-            loading={this.loading}
-            animated
-            class="flex"
-            count={3}
-            v-slots={{
-              template: () => (
-                <div class="w-1/3">
-                  <div class="flex flex-col pt-8 w-[262px] m-auto">
-                    <ElSkeletonItem
-                      variant="image"
-                      style={{ width: '100%', height: '175px' }}
-                    ></ElSkeletonItem>
-                    <div class="mx-2.5 py-3.5 border-b border-b-[#F2F2F2]">
-                      <div class="text-lg leading-none font-medium whitespace-nowrap overflow-hidden text-ellipsis">
-                        <ElSkeletonItem variant="h3"></ElSkeletonItem>
-                      </div>
-                      <div class="text-sm text-[#999] pt-2.5">
+        {state.user.data?.enableFlag ? (
+          <>
+            <div class="flex flex-wrap px-10">
+              <ElSkeleton
+                loading={this.loading}
+                animated
+                class="flex"
+                count={3}
+                v-slots={{
+                  template: () => (
+                    <div class="w-1/3">
+                      <div class="flex flex-col pt-8 w-[262px] m-auto">
                         <ElSkeletonItem
-                          variant="p"
-                          style={{ width: '50%' }}
+                          variant="image"
+                          style={{ width: '100%', height: '175px' }}
                         ></ElSkeletonItem>
-                      </div>
-                    </div>
+                        <div class="mx-2.5 py-3.5 border-b border-b-[#F2F2F2]">
+                          <div class="text-lg leading-none font-medium whitespace-nowrap overflow-hidden text-ellipsis">
+                            <ElSkeletonItem variant="h3"></ElSkeletonItem>
+                          </div>
+                          <div class="text-sm text-[#999] pt-2.5">
+                            <ElSkeletonItem
+                              variant="p"
+                              style={{ width: '50%' }}
+                            ></ElSkeletonItem>
+                          </div>
+                        </div>
 
-                    <div class="mx-2.5 py-4 flex items-center">
-                      <ElSkeletonItem
-                        variant="circle"
-                        style={{
-                          width: '22px',
-                          height: '22px',
-                          marginRight: '5px'
-                        }}
-                      ></ElSkeletonItem>
-                      <ElSkeletonItem
-                        variant="p"
-                        style={{ width: '20%' }}
-                      ></ElSkeletonItem>
-                      <p style={{ width: '45%' }}></p>
-                      <ElSkeletonItem
-                        variant="p"
-                        style={{ width: '20%' }}
-                      ></ElSkeletonItem>
+                        <div class="mx-2.5 py-4 flex items-center">
+                          <ElSkeletonItem
+                            variant="circle"
+                            style={{
+                              width: '22px',
+                              height: '22px',
+                              marginRight: '5px'
+                            }}
+                          ></ElSkeletonItem>
+                          <ElSkeletonItem
+                            variant="p"
+                            style={{ width: '20%' }}
+                          ></ElSkeletonItem>
+                          <p style={{ width: '45%' }}></p>
+                          <ElSkeletonItem
+                            variant="p"
+                            style={{ width: '20%' }}
+                          ></ElSkeletonItem>
+                        </div>
+                      </div>
                     </div>
+                  )
+                }}
+              >
+                {this.list.map((item: any) => (
+                  <div class="w-1/3 pt-8" onClick={() => this.onDetail(item)}>
+                    <Item
+                      item={{
+                        backgroundPic: item.lessonCoverUrl,
+                        courseGroupName: item.lessonName,
+                        studentCount: item.countStudent,
+                        avatar: item.avatar,
+                        teacherName: item.username,
+                        coursePrice: item.lessonPrice,
+                        courseNum: item.lessonCount
+                      }}
+                    />
                   </div>
-                </div>
-              )
-            }}
-          >
-            {this.list.map((item: any) => (
-              <div class="w-1/3 pt-8" onClick={() => this.onDetail(item)}>
-                <Item
-                  item={{
-                    backgroundPic: item.lessonCoverUrl,
-                    courseGroupName: item.lessonName,
-                    studentCount: item.countStudent,
-                    avatar: item.avatar,
-                    teacherName: item.username,
-                    coursePrice: item.lessonPrice,
-                    courseNum: item.lessonCount
-                  }}
-                />
-              </div>
-            ))}
-          </ElSkeleton>
-        </div>
+                ))}
+              </ElSkeleton>
+            </div>
 
-        <Pagination
-          total={this.pageInfo.total}
-          v-model:page={this.pageInfo.page}
-          v-model:limit={this.pageInfo.limit}
-          pageSizes={this.pageInfo.page_size}
-          pagination={this.getList}
-        />
+            <Pagination
+              total={this.pageInfo.total}
+              v-model:page={this.pageInfo.page}
+              v-model:limit={this.pageInfo.limit}
+              pageSizes={this.pageInfo.page_size}
+              pagination={this.getList}
+            />
 
-        {this.dataShow && <ColEmpty />}
+            {this.dataShow && <ColEmpty />}
+          </>
+        ) : (
+          <ColEmpty
+            type="teacherCert"
+            message="您还未完成老师认证,认证后才可创建视频课哦~"
+            buttonVisibility
+            buttonText="去认证"
+            onDetail={() => {
+              this.$router.push('/teacherAuth')
+            }}
+          />
+        )}
       </>
     )
   }

Fichier diff supprimé car celui-ci est trop grand
+ 589 - 541
yarn.lock


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff