Forráskód Böngészése

Merge branch 'zhuf'

bzkf3 2 éve%!(EXTRA string=óta)
szülő
commit
fb180604de

+ 39 - 0
src/components/CheckRow/index.vue

@@ -0,0 +1,39 @@
+<script setup>
+const props = defineProps({
+  label: String,
+  items: Array,
+  fields: {
+    default: ['v', 'n']
+  },
+  modelValue: String
+})
+
+const emits = defineEmits(['update:modelValue', 'change'])
+
+function handleClick(row) {
+  emits('update:modelValue', row[props.fields[0]])
+  emits('change', row)
+}
+
+</script>
+
+<template>
+  <div class="flex">
+    <div class="font-bold mr-4">{{ label }}</div>
+    <div class="flex-auto flex-wrap">
+      <label v-for="i in items" :for="i[props.fields[0]]"
+        class="text-hex-949494 mx-3 px-4px py-px rounded cursor-pointer"
+        :class="i[props.fields[0]] === modelValue && 'text-hex-00A3FF bg-hex-00A3FF bg-opacity-10'"
+        @click="handleClick(i)">
+        <span>{{ i[props.fields[1]] }}</span>
+      </label>
+      <div class="border_b my-4"></div>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.border_b {
+  border-bottom: 1px solid #E4E6E8;
+}
+</style>

+ 23 - 12
src/pages/zbkt/ssys/content.vue

@@ -1,4 +1,5 @@
 <script setup>
+import request from '~/utils/request';
 import commonHeader from "@/components/header/index.vue";
 import img_lczs1 from '~/assets/zbktssys/1.png';
 import img_lczs2 from '~/assets/zbktssys/2.png';
@@ -6,19 +7,24 @@ import img_lczs3 from '~/assets/zbktssys/3.png';
 import img_lczs from '~/assets/zbktssys/bar.png';
 import img_tx from '~/assets/zbktssys/tx.png';
 
-import { ArrowRight, ArrowLeft } from '@element-plus/icons-vue';
 
-
-const data_zy = $ref([
-  { img: img_lczs1, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '1' },
-  { img: img_lczs2, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '' },
-  { img: img_lczs3, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '' },
-])
+// const data_zy = $ref([
+//   { img: img_lczs1, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '1' },
+//   { img: img_lczs2, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '' },
+//   { img: img_lczs3, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '' },
+// ])
 
 
 function hrefTo(href) {
   window.open(href, '_blank')
 }
+
+let detailInfo = $ref({
+  file: false
+})
+// request({
+//   url:''
+// })
 </script>
   
   <template>
@@ -45,12 +51,17 @@ function hrefTo(href) {
   <div class="w-full flex items-center justify-center mt-4">
     <div class="w-1400px flex flex-col">
 
-      <div class="w-full h-530px mb-4 bg-light-500">
-        <video class="w-full h-full" src=""></video>
+      <div class="w-full h-730px mb-4 bg-light-500">
+        <!-- <video class="w-full h-full" src=""></video> -->
+        <template v-if="detailInfo.file"> <iframe
+            :src="`https://view.officeapps.live.com/op/view.aspx?src=${detailInfo.file}`" width='100%' height='100%'
+            frameborder='0'></iframe>
+        </template>
+        <el-result v-else icon="error" title="错误信息" sub-title="文件格式不支持">
+        </el-result>
       </div>
 
-      <div class="w-full flex justify-between items-center">
-
+      <!-- <div class="w-full flex justify-between items-center">
         <el-button type="primary" :icon="ArrowLeft" circle size="large" />
 
         <div class="flex-auto flex justify-start items-center">
@@ -65,7 +76,7 @@ function hrefTo(href) {
         </div>
 
         <el-button type="primary" :icon="ArrowRight" circle size="large" />
-      </div>
+      </div> -->
 
     </div>
   </div>

+ 54 - 42
src/pages/zbkt/ssys/index.vue

@@ -7,41 +7,48 @@ import img_lczs from '~/assets/zbktssys/bar.png';
 import img_tx from '~/assets/zbktssys/tx.png';
 
 import { View as IconView, Histogram as IconHistogram, Search as IconSearch } from '@element-plus/icons-vue';
+import { getFullUrl, getAvatarUrl } from '~/utils/helper';
+
+const queryForm = reactive({
+  keyword: '',
+  grade_id: null,
+  team_id: null
+})
+
 const activeTab = $ref('first')
 function handleClick() {
 
 }
 
-const nj = [
-  { n: '全部', v: '1' },
-  { n: '幼儿园', v: '' },
-  { n: '一年级', v: '' },
-  { n: '二年级', v: '' },
-  { n: '三年级', v: '' },
-  { n: '四年级', v: '' },
-  { n: '五年级', v: '' },
-  { n: '六年级', v: '' },
-  { n: '初一', v: '' },
-  { n: '初二', v: '' },
-  { n: '初三', v: '' },
-  { n: '高一', v: '' },
-  { n: '高二', v: '' },
-  { n: '高三', v: '' },
-  { n: '其他', v: '' },
-]
-
-const fc = [
-  { n: '全部', v: '1' },
-  { n: '上册', v: '' },
-  { n: '下册', v: '' },
-]
+let nj = $ref()
+let fc = $ref()
+
+request({
+  url: '/jcxx/grade/index',
+}).then(res => {
+  // console.log('res :>> ', res);
+  if (res.code === '1') {
+    nj = [{ n: '全部', v: null }].concat(res.data.page_data.map(({ grade_name, grade_id }) => ({ v: grade_id, n: grade_name })))
+  }
+})
+
 
 const data = $ref([
-  { img: img_lczs1, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '1' },
-  { img: img_lczs2, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '' },
-  { img: img_lczs3, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '' },
+  // { img: img_lczs1, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '1' },
+  // { img: img_lczs2, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '' },
+  // { img: img_lczs3, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '' },
 ])
 
+request({
+  url: '/kzkt/ssyskc/index',
+}).then(res => {
+  console.log('res1 :>> ', res);
+  if (res.code === '1') {
+    fc = [{ n: '全部', v: null }].concat(res.data.table_structure.field.team_id.option)
+    data = res.data.page_data
+  }
+})
+
 
 function hrefTo(href) {
   window.open(href, '_blank')
@@ -49,13 +56,13 @@ function hrefTo(href) {
 
 const router = useRouter()
 
-function handleJyClick(){
+function handleJyClick() {
   router.push('/zbkt/ssys/content')
 }
 </script>
 
 <template>
-  <common-header/>
+  <common-header />
   <div class="w-full flex items-center justify-center shadow-sm h-60px bg-hex-fefefe">
     <div class="w-1400px flex items-center">
       <div class="text-lg text-hex-050026">双师一生</div>
@@ -94,7 +101,9 @@ function handleJyClick(){
 
 
       <div>
-        <div class="flex">
+        <check-row v-model="queryForm.grade_id" label="年级" :items="nj"></check-row>
+        <check-row v-model="queryForm.team_id" label="分册" :items="fc"></check-row>
+        <!-- <div class="flex">
           <div class="font-bold mr-4">年级</div>
           <div class="flex-auto flex-wrap">
             <label v-for="i in nj" :for="i.v" class="text-hex-949494 mx-3 px-4px py-px rounded cursor-pointer"
@@ -114,49 +123,52 @@ function handleJyClick(){
             </label>
             <div class="border_b my-4"></div>
           </div>
-        </div>
+        </div> -->
       </div>
 
       <div class="flex flex-wrap justify-between">
         <div class="w-647px h-155px rounded-xl shadow-lg my-7 flex overflow-hidden" v-for="i in data">
           <div class="w-264px h-full flex-none">
-            <img :src="i.img" alt="" class="w-full h-full">
+            <img :src="getFullUrl(i.ks_img)" alt="" class="w-full h-full">
           </div>
           <div class="p-2 pr-6 flex-auto flex flex-col">
             <div class="flex justify-between w-full items-center py-1">
-              <div class="font-bold">{{ i.title }}</div>
+              <div class="font-bold">{{ i.ks_name }}</div>
               <div class="text-hex-949494 text-sm flex justify-between items-center">
                 <el-icon :size="14" color="#949494">
                   <icon-view />
                 </el-icon>
-                <span class="ml-1">{{ i.bfl }}</span>
+                <span class="ml-1">{{ i.kss_views }}</span>
               </div>
             </div>
 
             <div class="text-sm text-hex-949494 py-1">
-              {{ i.desc }}
+              {{ i.ks_brief }}
             </div>
 
             <div class="text-sm py-1 flex-auto">
-              <span>{{ i.nj }}</span>
+              <span>{{ i.grade_name }}</span>
               <span class="mx-2">|</span>
-              <span>{{ i.xk }}</span>
+              <span>{{ i.subject_name }}</span>
             </div>
 
             <div class="flex text-sm justify-between items-center">
               <div @click="hrefTo('https://rtc.bozedu.net/index.html?uroom=18&uname=txsxnxxb&stream=18_2')"
                 class="cursor-pointer flex items-center">
-                <el-avatar :size="16" :src="i.tx" /><span class="ml-1">{{ i.ls }}</span>
+                <el-avatar :size="16" :src="getAvatarUrl(i.user_id)" /><span class="ml-1">{{ i.ks_zjjsxm }}</span>
               </div>
               <div @click="hrefTo('https://rtc.bozedu.net/index.html?uroom=18&uname=txsxnxxa&stream=18')"
                 class="h-26px rounded-14px px-2 flex items-center text-hex-0083C5 cursor-pointer"
-                :class="i.zt && 'border border-hex-f00 text-hex-f00'">
-                <el-icon :color="i.zt ? '#FF0000' : '#949494'">
+                :class="i.ks_status === '2' && 'border border-hex-f00 text-hex-f00'">
+                <!-- <el-icon :color="i.zt ? '#FF0000' : '#949494'">
                   <icon-histogram />
-                </el-icon>
-                <span class="ml-2 "> {{ i.zt ? '已开始' : '未开始' }}</span>
+                </el-icon> -->
+                <i-bx:bar-chart></i-bx:bar-chart>
+                <span class="ml-2 "> {{ i.ks_status_msg }}</span>
               </div>
-              <div class="h-26px leading-26px px-4 bg-gradient-to-l from-green-400 to-blue-500 text-white rounded-14px cursor-pointer" @click="handleJyClick(i)" >
+              <div
+                class="h-26px leading-26px px-4 bg-gradient-to-l from-green-400 to-blue-500 text-white rounded-14px cursor-pointer"
+                @click="handleJyClick(i)">
                 讲义</div>
             </div>
 

+ 85 - 8
src/pages/zbkt/wlzb/detail.vue

@@ -7,6 +7,7 @@ import img_lczs from '~/assets/zbktssys/bar.png';
 import img_tx from '~/assets/zbktssys/tx.png';
 
 import { ArrowRight, ArrowLeft } from '@element-plus/icons-vue';
+import { ElMessage } from "element-plus";
 
 
 const data_zy = $ref([
@@ -19,11 +20,19 @@ const data_zy = $ref([
 function hrefTo(href) {
   window.open(href, '_blank')
 }
+
+let activeTap = $ref('pj')
+
+const shareLink = window.location.href
+async function copyLink() {
+  await navigator.clipboard.writeText(shareLink)
+  ElMessage.success('已复制')
+}
 </script>
   
-  <template>
+<template>
   <common-header />
-  <div class="w-full flex items-center justify-center shadow h-60px bg-hex-fefefe">
+  <div class="w-full flex items-center justify-center shadow h-60px bg-hex-fff">
     <div class="w-1400px flex items-center">
       <div class="text-lg text-hex-050026">内容</div>
       <el-divider direction="vertical" />
@@ -34,8 +43,8 @@ function hrefTo(href) {
       </div>
     </div>
   </div>
-
-  <div class="w-full flex items-center justify-center bg-gradient-to-b from-hex-00A3FF via-hex-DDFEEE to-hex-FFF7E4 bg-opacity-60 blur-50px">
+  <!-- bg-gradient-to-b from-hex-00A3FF via-hex-DDFEEE to-hex-FFF7E4 opacity-60 bg-opacity-60 blur-50px -->
+  <div class="w-full flex items-center justify-center bg-hex-FCFEFF ">
     <div class="w-1400px flex flex-col">
 
       <div class="flex items-center justify-start h-60px px-4">
@@ -43,24 +52,92 @@ function hrefTo(href) {
 
         <el-popover placement="bottom" :width="410" trigger="hover">
           <template #reference>
-            <div class="cursor-pointer text-hex-00A3FF ml-8">分享</div>
+            <div class="cursor-pointer text-hex-00A3FF ml-8 flex items-center text-sm ">
+              <i-fluent:share-28-regular class="mr-1" />分享
+            </div>
           </template>
 
-          <div>
-
+          <div class="w-full">
+            <div class="w-full text-center">呼唤小伙伴们前来围观吧</div>
+            <div></div>
+            <el-divider></el-divider>
+            <div class="text-hex-00a3ff mb-2">直播间地址</div>
+            <div class="flex">
+              <div class="bg-hex-F7F7F7 p-2 flex-auto mr-4  truncate">{{ shareLink }}</div>
+              <div class="text-sm bg-hex-0A8AFF text-white w-100px h-40px flex_center rounded cursor-pointer"
+                @click="copyLink">复制链接</div>
+            </div>
           </div>
         </el-popover>
       </div>
 
       <div class="w-full shadow bg-white rounded-lg flex items-center mb-4 p-4">
         <el-avatar :size="77" src="" />
-        <div class="flex-auto"></div>
+        <div class="flex-auto p-4 flex flex-col justify-center">
+          <div>
+            <div class="font-bold">陈老师</div>
+          </div>
+          <div class="h-20px"></div>
+        </div>
         <div class="text-sm bg-hex-0A8AFF text-white w-100px h-40px flex_center rounded cursor-pointer">关注</div>
       </div>
 
       <div class="w-full h-800px mb-4 bg-hex-CEE5FB">
         <video class="w-full h-full" src=""></video>
       </div>
+
+      <div class="flex_center">
+        <div class="w-176px">
+          <el-tabs v-model="activeTap">
+            <el-tab-pane label="" name="pj">
+              <template #label>
+                <span class="text-base font-bold">评价</span>
+              </template>
+            </el-tab-pane>
+            <el-tab-pane label="作业" name="zye">
+              <template #label>
+                <span class="text-base font-bold">作业</span>
+              </template>
+            </el-tab-pane>
+            <el-tab-pane label="资源" name="zyuan">
+              <template #label>
+                <span class="text-base font-bold">资源</span>
+              </template>
+            </el-tab-pane>
+          </el-tabs>
+        </div>
+      </div>
+
+      <div class="w-full p-8">
+        <div v-show="activeTap === 'pj'">
+          <el-rate></el-rate>
+          <div class="text-sm bg-hex-0A8AFF text-white w-100px h-32px flex_center rounded-full cursor-pointer">评价</div>
+
+          <div class="my-1">
+            <div class="flex items-end">
+              <div class="text-sm font-bold text-hex-171721 mr-4">余枫</div>
+              <div class="text-xs text-hex-8083A3">2021-01-23 11:15</div>
+            </div>
+            <el-rate :model-value="5" disabled class="my-2"></el-rate>
+          </div>
+        </div>
+        <div v-show="activeTap === 'zye'"></div>
+        <div v-show="activeTap === 'zyuan'">
+          <div class="my-1">
+            <div class="flex items-end">
+              <div class="text-sm font-bold text-hex-171721 mr-4">余枫</div>
+              <div class="text-xs text-hex-8083A3">2021-01-23 11:15 上传</div>
+            </div>
+            <div class="flex justify-between items-center my-2">
+              <div class="text-hex-171721 text-sm">数学体系</div>
+              <div
+                class="text-xs border border-hex-00a3ff text-hex-00a3ff w-60px h-24px flex_center rounded-full cursor-pointer">
+                下载</div>
+            </div>
+          </div>
+        </div>
+      </div>
+
     </div>
   </div>
 

+ 40 - 35
src/pages/zbkt/wlzb/index.vue

@@ -7,29 +7,33 @@ import img_lczs from '~/assets/zbktssys/bar.png';
 import img_tx from '~/assets/zbktssys/tx.png';
 import { View as IconView, Histogram as IconHistogram, Search as IconSearch } from '@element-plus/icons-vue';
 
+const queryForm = reactive({
+  keyword: '',
+  grade_id: null,
+  team_id: null
+})
 
 const nj = [
-  { n: '全部', v: '1' },
-  { n: '幼儿园', v: '' },
-  { n: '一年级', v: '' },
-  { n: '二年级', v: '' },
-  { n: '三年级', v: '' },
-  { n: '四年级', v: '' },
-  { n: '五年级', v: '' },
-  { n: '六年级', v: '' },
-  { n: '初一', v: '' },
-  { n: '初二', v: '' },
-  { n: '初三', v: '' },
-  { n: '高一', v: '' },
-  { n: '高二', v: '' },
-  { n: '高三', v: '' },
-  { n: '其他', v: '' },
+  { n: '全部', v: null },
+  { n: '幼儿园', v: '20' },
+  { n: '一年级', v: '1' },
+  { n: '二年级', v: '2' },
+  { n: '三年级', v: '3' },
+  { n: '四年级', v: '4' },
+  { n: '五年级', v: '5' },
+  { n: '六年级', v: '6' },
+  { n: '初一', v: '7' },
+  { n: '初二', v: '8' },
+  { n: '初三', v: '9' },
+  { n: '高一', v: '10' },
+  { n: '高二', v: '11' },
+  { n: '高三', v: '12' },
 ]
 
 const fc = [
-  { n: '全部', v: '1' },
-  { n: '上册', v: '' },
-  { n: '下册', v: '' },
+  { n: '全部', v: null },
+  { n: '上册', v: '1' },
+  { n: '下册', v: '2' },
 ]
 
 const data_zzzb = $ref([
@@ -62,7 +66,6 @@ const data_phb = $ref([
   { img: img_lczs3, title: '走进生肖文化——寅虎卯兔', bfl: 100, desc: '领略生肖传奇,品味传统文化!', nj: '四年级', xk: '美术', ls: '尚老师', tx: img_tx, zt: '1' },
 ])
 
-
 function hrefTo(href) {
   window.open(href, '_blank')
 }
@@ -111,12 +114,14 @@ function handlePhbClick() {
   <div class="w-full flex items-center justify-center mt-4">
     <div class="w-1400px flex flex-col">
       <div>
-        <div class="flex">
+        <check-row v-model="queryForm.grade_id" label="年级" :items="nj"></check-row>
+        <check-row v-model="queryForm.team_id" label="分册" :items="fc"></check-row>
+        <!-- <div class="flex">
           <div class="font-bold mr-4">年级</div>
           <div class="flex-auto flex-wrap">
             <label v-for="i in nj" :for="i.v" class="text-hex-949494 mx-3 px-4px py-px rounded cursor-pointer"
               :class="i.v && 'text-hex-00A3FF bg-hex-00A3FF bg-opacity-10'">
-              <span>{{  i.n  }}</span>
+              <span>{{ i.n }}</span>
             </label>
             <div class="border_b my-4"></div>
           </div>
@@ -127,11 +132,11 @@ function handlePhbClick() {
           <div class="flex-auto">
             <label v-for="i in fc" :for="i.v" class="text-hex-949494 mx-3 px-4px py-px rounded cursor-pointer"
               :class="i.v && 'text-hex-00A3FF bg-hex-00A3FF bg-opacity-10'">
-              <span>{{  i.n  }}</span>
+              <span>{{ i.n }}</span>
             </label>
             <div class="border_b my-4"></div>
           </div>
-        </div>
+        </div> -->
       </div>
 
 
@@ -143,29 +148,29 @@ function handlePhbClick() {
           </div>
           <div class="p-2 pr-6 flex-auto flex flex-col">
             <div class="flex justify-between w-full items-center py-1">
-              <div class="font-bold">{{  i.title  }}</div>
+              <div class="font-bold">{{ i.title }}</div>
               <div class="text-hex-949494 text-sm flex justify-between items-center">
                 <el-icon :size="14" color="#949494">
                   <icon-view />
                 </el-icon>
-                <span class="ml-1">{{  i.bfl  }}</span>
+                <span class="ml-1">{{ i.bfl }}</span>
               </div>
             </div>
 
             <div class="text-sm text-hex-949494 py-1">
-              {{  i.desc  }}
+              {{ i.desc }}
             </div>
 
             <div class="text-sm py-1 flex-auto">
-              <span>{{  i.nj  }}</span>
+              <span>{{ i.nj }}</span>
               <span class="mx-2">|</span>
-              <span>{{  i.xk  }}</span>
+              <span>{{ i.xk }}</span>
             </div>
 
             <div class="flex text-sm justify-between items-center">
               <div @click="hrefTo('https://rtc.bozedu.net/index.html?uroom=18&uname=txsxnxxb&stream=18_2')"
                 class="cursor-pointer flex items-center">
-                <el-avatar :size="16" :src="i.tx" /><span class="ml-1">{{  i.ls  }}</span>
+                <el-avatar :size="16" :src="i.tx" /><span class="ml-1">{{ i.ls }}</span>
               </div>
               <div @click="hrefTo('https://rtc.bozedu.net/index.html?uroom=18&uname=txsxnxxa&stream=18')"
                 class="h-26px rounded-14px px-2 flex items-center text-hex-0083C5 cursor-pointer"
@@ -173,7 +178,7 @@ function handlePhbClick() {
                 <el-icon :color="i.zt ? '#FF0000' : '#949494'">
                   <icon-histogram />
                 </el-icon>
-                <span class="ml-2 "> {{  i.zt ? '直播中' : '未开始'  }}</span>
+                <span class="ml-2 "> {{ i.zt ? '直播中' : '未开始' }}</span>
               </div>
               <!-- <div class="h-26px leading-26px px-4 bg-gradient-to-l from-green-400 to-blue-500 text-white rounded-14px">
                 讲义</div> -->
@@ -194,7 +199,7 @@ function handlePhbClick() {
                 <img :src="i.img" alt="" class="w-full h-full">
               </div>
               <div class="p-2">
-                {{  i.title  }}
+                {{ i.title }}
               </div>
             </div>
           </div>
@@ -206,10 +211,10 @@ function handlePhbClick() {
             <div v-if="index < 2" class="w-full h-167px  mb-4 relative  cursor-pointer" @click="handlePhbClick(i)">
               <img :src="i.img" alt="" class="w-full h-full overflow-hidden rounded-md ">
               <div class="p-2 absolute z-2 bottom-0 w-full text-white">
-                {{  i.title  }}
+                {{ i.title }}
               </div>
               <div class="absolute -top-11px right-20px w-50px h-22px text-white flex_center rounded-sm text-sm"
-                :class="['bg-red-600', 'bg-yellow-400'][index]">Top{{  index + 1  }}</div>
+                :class="['bg-red-600', 'bg-yellow-400'][index]">Top{{ index + 1 }}</div>
             </div>
 
             <div v-else class="flex mb-4 cursor-pointer" @click="handlePhbClick(i)">
@@ -217,10 +222,10 @@ function handlePhbClick() {
                 <img :src="i.img" alt="" class="w-full h-full rounded-sm overflow-hidden">
                 <div
                   class="absolute rounded-sm right-0 top-0 w-20px h-20px bg-hex-6C5DD3 text-white flex_center text-xs">
-                  {{  index + 1  }}</div>
+                  {{ index + 1 }}</div>
               </div>
               <div class="px-1 leading-tight">
-                {{  i.title  }}
+                {{ i.title }}
               </div>
             </div>
           </template>

+ 22 - 0
src/utils/helper.js

@@ -0,0 +1,22 @@
+
+export function resolveFileString(str) {
+  return str ? str.split(';').map((s) => resolveSingleFileString(s)) : []
+}
+
+export function resolveSingleFileString(str) {
+  const [name, url] = str.split(',')
+  return {
+    name,
+    url: url.startsWith('http') ? url : window.GLOBAL_CONFIG.oss + '/' + url,
+    origin: url
+  }
+}
+
+
+export function getFullUrl(url) {
+  return url.startsWith('http') ? url : window.GLOBAL_CONFIG.oss + '/' + url
+}
+
+export function getAvatarUrl(id) {
+  return window.GLOBAL_CONFIG.oss + '/user/main/user_avatar?user_id=' + id
+}