浏览代码

更新优化

lex 2 年之前
父节点
当前提交
0145762439

+ 1 - 1
src/components/col-cropper/index.tsx

@@ -43,7 +43,7 @@ export default defineComponent({
     },
     accept: {
       type: String,
-      default: 'images/*'
+      default: 'image/*'
     },
     tips: {
       type: String,

+ 1 - 1
src/components/col-upload-video/index.tsx

@@ -199,7 +199,7 @@ export default defineComponent({
     return (
       <div class={[styles.colUpload, 'w-full']}>
         <ElUpload
-          disabled={this.disabled}
+          disabled={this.disabled || this.btnLoading}
           action={this.ossUploadUrl}
           data={this.dataObj}
           onSuccess={this.handleSuccess}

+ 1 - 1
src/components/col-upload/index.tsx

@@ -30,7 +30,7 @@ export default defineComponent({
     },
     accept: {
       type: String,
-      default: 'images/*'
+      default: 'image/*'
     },
     tips: {
       type: String,

+ 1 - 1
src/components/col-video/index.module.less

@@ -7,7 +7,7 @@
   // --plyr-color-main: #01c1b5;
   video {
     width: 100%;
-    object-fit: cover;
+    // object-fit: cover;
   }
 
   :deep(.plyr__poster) {

+ 5 - 4
src/components/pagination/index.module.less

@@ -10,10 +10,11 @@
     .el-pagination.is-background .btn-next,
     .el-pagination.is-background .btn-prev,
     .el-pagination.is-background .el-pager li {
-      border-radius: 4px;
+      border-radius: 999px;
       box-sizing: border-box;
-      border: 1px solid #d9d9d9;
+      border: 1px solid #329e8a;
       background-color: #fff;
+      color: #329e8a;
     }
 
     .el-pagination.is-background .el-pager li:not(.is-disabled).is-active {
@@ -21,10 +22,10 @@
     }
 
     .el-input__wrapper {
-      // border: 1px solid #d9d9d9 !important;
-      // background-color: #fff !important;
+      border-radius: 99px;
     }
     .el-input__inner {
+      border-radius: 99px;
       background-color: #fff !important;
     }
   }

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

@@ -76,7 +76,9 @@ export default defineComponent({
           ]}
         >
           <div class="w-[470px] pt-24 ml-[126px] box-border">
-            <div class="text-[28px]  font-semibold pb-7">酷乐秀基本介绍</div>
+            <div class="text-[28px]  font-semibold pb-7">
+              认证酷乐秀达人能为您带来什么?
+            </div>
             <p class={[styles.txt]}>
               酷乐秀是一款为器乐学习者提供智能陪练及线上授课撮合的乐器教
             </p>

+ 7 - 7
src/views/role-auth/teacherAuth/components/edu-information/index.tsx

@@ -62,14 +62,14 @@ export default defineComponent({
       >
         <ElFormItem
           labelWidth={this.labelWidth}
-          label="毕业院校(必填)"
+          label="毕业院校"
           prop="graduateSchool"
-          rules={[
-            {
-              required: true,
-              message: '请输入您的毕业院校'
-            }
-          ]}
+          // rules={[
+          //   {
+          //     required: true,
+          //     message: '请输入您的毕业院校'
+          //   }
+          // ]}
         >
           <ElInput
             v-model={teacherState.teacherCert.graduateSchool}

+ 14 - 0
src/views/student-info/components/users/index.module.less

@@ -0,0 +1,14 @@
+.users {
+  :global {
+    .el-dialog {
+      --el-dialog-border-radius: 18px !important;
+      --el-dialog-width: 488px;
+      background: url('../../../user-info/open-live/images/open_live-bg.png')
+        no-repeat top center #fff;
+      background-size: contain;
+    }
+    .el-dialog__header {
+      padding: 0;
+    }
+  }
+}

+ 28 - 4
src/views/student-info/components/users/index.tsx

@@ -1,8 +1,10 @@
 import { defineComponent } from 'vue'
 import iconTeacher from '@/common/images/icon_teacher.png'
-import { ElButton, ElTag } from 'element-plus'
+import { ElButton, ElDialog, ElTag } from 'element-plus'
 import { state } from '@/state'
 import { getUserType } from '@/helpers/utils'
+import styles from './index.module.less'
+import OpenMember from '@/views/user-info/components/open-member'
 
 export const getAssetsHomeFile = (fileName: string) => {
   const path = `../../../user-info/images/${fileName}`
@@ -17,16 +19,21 @@ export default defineComponent({
       return state.user.data
     }
   },
+  data() {
+    return {
+      memberStatus: false
+    }
+  },
   render() {
     return (
-      <div class=" text-center pb-8 relative overflow-hidden">
+      <div class={['text-center pb-8 relative overflow-hidden', styles.users]}>
         <div class="bg-[#FFE7CF] absolute left-6 top-0 text-[#AB5400] text-xs py-0.5 px-2 rounded-[10px]">
           学生
         </div>
 
         <img
           src={this.userInfo.heardUrl || iconTeacher}
-          class="w-[68px] h-[68px] rounded-full border-2 border-[#2DC7AA] border-solid mt-6 mx-auto"
+          class="w-[68px] h-[68px] rounded-full border-2 border-[#2DC7AA] border-solid mt-6 mx-auto object-cover"
         />
 
         <p class="text-[#333] text-lg font-medium pt-4 flex items-center justify-center">
@@ -44,7 +51,15 @@ export default defineComponent({
 
         <div class={this.userInfo.isVip !== 1 ? 'mt-5' : ''}>
           {this.userInfo.isVip !== 1 && (
-            <ElButton round type="primary" size="large" class="!px-4">
+            <ElButton
+              round
+              type="primary"
+              size="large"
+              class="!px-4"
+              onClick={() => {
+                this.memberStatus = true
+              }}
+            >
               开通会员
             </ElButton>
           )}
@@ -65,6 +80,15 @@ export default defineComponent({
             关注
           </span>
         </div>
+
+        <ElDialog
+          modelValue={this.memberStatus}
+          onUpdate:modelValue={val => (this.memberStatus = val)}
+          closeOnClickModal={false}
+          closeOnPressEscape={false}
+        >
+          <OpenMember />
+        </ElDialog>
       </div>
     )
   }

+ 1 - 1
src/views/student-info/my-follow/item.tsx

@@ -60,7 +60,7 @@ export default defineComponent({
         <div class="flex flex-col items-center">
           <ElImage
             src={item.avatar}
-            class="w-12 h-12 rounded-full border-2 border-[#2DC7AA]"
+            class="w-12 h-12 rounded-full border-2 border-[#2DC7AA] object-cover"
           />
           {item.isVip && <ElImage src={iconVip} class="h-7 -mt-4" />}
         </div>

+ 39 - 1
src/views/user-info/components/open-member/index.tsx

@@ -1,8 +1,46 @@
+import sutdentDownLoad from '@/common/images/student_download.png'
+import teacherDownLoad from '@/common/images/teacher_download.png'
+import { getUserType } from '@/helpers/utils'
+import { ElDialog } from 'element-plus'
 import { defineComponent } from 'vue'
+export const getAssetsHomeFile = (fileName: string) => {
+  const path = `../../images/${fileName}`
+  const modules = import.meta.globEager('../../images/*')
+  return modules[path].default
+}
 
 export default defineComponent({
   name: 'open-member',
   render() {
-    return <></>
+    console.log(getUserType())
+    return (
+      <div>
+        <img
+          src={getAssetsHomeFile('icon_king.png')}
+          class="w-[318px] absolute -top-10 left-1/2 -ml-[158px]"
+        />
+        <div class="text-center text-2xl font-medium text-[#333] pt-[70px] pb-9">
+          手机扫码开通{getUserType() === 'STUDENT' ? '酷乐秀' : '酷乐秀学院'}
+          会员
+        </div>
+
+        {getUserType() === 'TEACHER' ? (
+          <img
+            src={teacherDownLoad}
+            class="mx-auto w-[216px] h-[216px] align-middle border-4 border-solid border-[#2DC7AA] rounded-[10px]"
+          />
+        ) : (
+          <img
+            src={sutdentDownLoad}
+            class="mx-auto w-[216px] h-[216px] align-middle border-4 border-solid border-[#2DC7AA] rounded-[10px]"
+          />
+        )}
+
+        <p class="text-lg text-center text-[#333] pt-8">
+          打开{getUserType() === 'STUDENT' ? '酷乐秀' : '酷乐秀学院'}
+          App,扫一扫开通会员
+        </p>
+      </div>
+    )
   }
 })

+ 14 - 0
src/views/user-info/components/users/index.module.less

@@ -0,0 +1,14 @@
+.users {
+  :global {
+    .el-dialog {
+      --el-dialog-border-radius: 18px !important;
+      --el-dialog-width: 488px;
+      background: url('../../open-live/images/open_live-bg.png') no-repeat top
+        center #fff;
+      background-size: contain;
+    }
+    .el-dialog__header {
+      padding: 0;
+    }
+  }
+}

+ 34 - 3
src/views/user-info/components/users/index.tsx

@@ -1,7 +1,9 @@
 import { defineComponent } from 'vue'
 import iconTeacher from '@/common/images/icon_teacher.png'
-import { ElButton, ElTag } from 'element-plus'
+import { ElButton, ElDialog, ElTag } from 'element-plus'
 import { state } from '@/state'
+import styles from './index.module.less'
+import OpenMember from '../open-member'
 
 // import musicDefault from '../../images/music_default.png'
 // import musicActive from '../../images/music_active.png'
@@ -20,6 +22,11 @@ export default defineComponent({
       return state.user.data
     }
   },
+  data() {
+    return {
+      memberStatus: false
+    }
+  },
   methods: {
     onDetail(type: string) {
       if (type === 'entry') {
@@ -62,7 +69,7 @@ export default defineComponent({
   },
   render() {
     return (
-      <div class=" text-center pb-8 relative overflow-hidden">
+      <div class={['text-center pb-8 relative overflow-hidden', styles.users]}>
         <div class="bg-[#CFFFF0] absolute left-6 top-0 text-[#00AB76] text-xs py-0.5 px-2 rounded-[10px]">
           老师
         </div>
@@ -85,6 +92,15 @@ export default defineComponent({
         </p>
 
         <div class="flex items-center justify-center pt-2 pb-10">
+          <span class="text-base text-[#999]">勋章</span>
+          <img
+            src={
+              this.checkBadge('VIP')
+                ? getAssetsHomeFile('icon_member.png')
+                : getAssetsHomeFile('icon_member_default.png')
+            }
+            class="h-[26px] px-1"
+          />
           <img
             src={
               this.checkBadge('STYLE')
@@ -179,7 +195,13 @@ export default defineComponent({
           )}
 
           {!this.checkBadge('VIP') && (
-            <ElButton round type="primary" size="large" class="!px-4">
+            <ElButton
+              round
+              type="primary"
+              size="large"
+              class="!px-4"
+              onClick={() => (this.memberStatus = true)}
+            >
               开通会员
             </ElButton>
           )}
@@ -209,6 +231,15 @@ export default defineComponent({
             乐谱
           </span>
         </div>
+
+        <ElDialog
+          modelValue={this.memberStatus}
+          onUpdate:modelValue={val => (this.memberStatus = val)}
+          closeOnClickModal={false}
+          closeOnPressEscape={false}
+        >
+          <OpenMember />
+        </ElDialog>
       </div>
     )
   }

二进制
src/views/user-info/images/icon_king.png


二进制
src/views/user-info/images/icon_member.png


二进制
src/views/user-info/images/icon_member_default.png


+ 0 - 1
src/views/user-info/live-class/list.tsx

@@ -124,7 +124,6 @@ export default defineComponent({
             <ColEmpty
               type="live"
               message="您尚未开通直播服务,开通后即可创建直播课程~"
-              buttonVisibility={false}
               buttonText="立即开通"
               onDetail={() => {
                 this.$router.push('/userInfo/openLive')

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

@@ -27,12 +27,12 @@ export default defineComponent({
           type="primary"
           class="absolute right-11 top-4 z-10"
           onClick={() => {
-            if (state.user.data?.musicianFlag) {
+            if (state.user.data?.entryFlag) {
               this.$router.push({
                 path: '/userInfo/musicOperation'
               })
             } else {
-              ElMessage.error('您还未完成音乐人认证,认证后才可创建曲谱')
+              ElMessage.error('您还未完成达人认证,认证后才可创建视频课哦')
               return
             }
           }}

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

@@ -76,7 +76,7 @@ export default defineComponent({
   render() {
     return (
       <>
-        {state.user.data?.musicianFlag ? (
+        {state.user.data?.entryFlag ? (
           <>
             <div>
               <ElSkeleton
@@ -155,12 +155,12 @@ export default defineComponent({
         ) : (
           <div class="px-[38px]">
             <ColEmpty
-              type="musicCert"
-              message="您还未完成音乐人认证,认证后才可创建曲谱~"
+              type="teacherCert"
+              message="您还未完成达人认证,认证后才可创建视频课哦~"
               buttonVisibility
               buttonText="去认证"
               onDetail={() => {
-                this.$router.push('/musicAuth')
+                this.$router.push('/teacherAuth')
               }}
             />
           </div>

+ 9 - 8
src/views/user-info/music-operation/index.tsx

@@ -186,15 +186,16 @@ export default defineComponent({
                 data: this.createSubmitData()
               })
             }
-          } catch (error) {}
-          this.submitLoading = false
-
-          ElMessage.success('上传成功')
-          sessionStorage.setItem('musicActiveName', 'DOING')
-          this.$router.back()
+            this.submitLoading = false
+            ElMessage.success('上传成功')
+            sessionStorage.setItem('musicActiveName', 'DOING')
+            this.$router.back()
+          } catch (error) {
+            this.submitLoading = false
+          }
         } else {
           this.$nextTick(() => {
-            let isError = document.getElementsByClassName('is-error')
+            const isError = document.getElementsByClassName('is-error')
             isError[0].scrollIntoView({
               block: 'center',
               behavior: 'smooth'
@@ -209,7 +210,7 @@ export default defineComponent({
     return (
       <div class={styles.form}>
         <div class="text-2xl font-medium text-black leading-none px-6 py-5 ">
-          {this.type === 'create' ? '新建乐谱' : '编辑乐谱'}
+          {this.type === 'create' ? '新建曲谱' : '编辑曲谱'}
         </div>
 
         <ElForm

+ 1 - 0
src/views/user-info/video-operation/course-content/index.tsx

@@ -212,6 +212,7 @@ export default defineComponent({
               >
                 <ElInput
                   placeholder="请输入课程标题"
+                  maxlength={50}
                   v-model={item.videoTitle}
                 />
               </ElFormItem>

+ 2 - 0
src/views/user-info/video-operation/course-info/index.tsx

@@ -121,6 +121,7 @@ export default defineComponent({
           >
             <ElInput
               v-model={createState.lessonGroup.lessonName}
+              maxlength={50}
               placeholder="请输入课程名称"
             />
           </ElFormItem>
@@ -179,6 +180,7 @@ export default defineComponent({
               v-model={createState.lessonGroup.lessonPrice}
               // @ts-ignore
               onKeyup={this.onFormatter}
+              maxlength={9}
               v-slots={{
                 append: () => <span class="text-base text-[#333]">元</span>
               }}

+ 5 - 6
src/views/videoDetailList/index.tsx

@@ -32,12 +32,12 @@ export default defineComponent({
 
       pageInfo: {
         // 分页规则
-        limit: 9, // 限制显示条数
+        limit: 10, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
-        page_size: [9, 20, 40, 50] // 选择限制显示条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
-      isshowData:false
+      isshowData: false
     })
     const route = useRoute()
     const getVideoList = async () => {
@@ -66,7 +66,6 @@ export default defineComponent({
       }
     }
 
-
     const startSearch = (val: any) => {
       state.searchs = {
         ...state.searchs,
@@ -77,7 +76,7 @@ export default defineComponent({
     }
     const gotoSearch = (val: string) => {
       state.searchs.search = val
-      startSearch( state.searchs)
+      startSearch(state.searchs)
     }
     onMounted(() => {
       if (route.query.search) {
@@ -118,7 +117,7 @@ export default defineComponent({
                 return <videoDetailItem detail={item}></videoDetailItem>
               })}
             </div>
-            {state.isshowData&&<ColEmpty></ColEmpty>}
+            {state.isshowData && <ColEmpty></ColEmpty>}
             <pagination
               total={state.pageInfo.total}
               v-model:page={state.pageInfo.page}