Browse Source

Merge branch 'master' into liua

* master:
  提交
  tj
la 2 years ago
parent
commit
95e544aa6e

+ 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>

+ 9 - 0
src/pages/szmsg/api.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request.js'
+
+// 学校
+export const szmsg_school = (data={}) =>{
+    return request({
+        url:'/szmsg/school/index',
+        data,
+    })
+}

+ 30 - 17
src/pages/szmsg/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <common-header/>
+  <common-header />
   <div class="ysgc">
     <ResourceSearch></ResourceSearch>
     <div class="ysgc-kind">
@@ -13,11 +13,12 @@
             </div>
           </router-link>
         </li>
-        <li class="kc" v-for="kc in 4" :key="kc">
-          <img class="kc-back" src="../../assets/ysgc/kc3.png" alt="" />
-          <div class="kc-des">
-            <p class="kc-name">学生二</p>
-            <!-- <div class="rate">
+        <li class="kc" v-for="kc in 1" :key="kc">
+          <!-- <router-link to="/tzkc_detail"> -->
+            <img class="kc-back" src="../../assets/ysgc/kc3.png" alt="" />
+            <div class="kc-des">
+              <p class="kc-name">学校一</p>
+              <!-- <div class="rate">
               <img
                 v-for="star in 5"
                 :key="star"
@@ -25,29 +26,32 @@
                 alt=""
               />
             </div> -->
-          </div>
-          <!-- <div class="zan">
+            </div>
+            <!-- <div class="zan">
             <img src="../../assets/ysgc/zan.png" /> 10w+
             <img src="../../assets/ysgc/xin.png" alt="" />14w+
           </div> -->
+          <!-- </router-link> -->
         </li>
       </ul>
       <ul class="specail">
         <li class="kind-name">
-          <router-link to="/yslm">
+          <!-- <router-link to="/yslm"> -->
             <h3>艺术联盟</h3>
-          <p>辅导机构课程 场馆课程</p>
-          <div class="btn-more">
-            <button>查看更多</button>
-          </div>
-          </router-link>
-          
+            <p>辅导机构课程 场馆课程</p>
+            <div class="btn-more">
+              <button>查看更多</button>
+            </div>
+          <!-- </router-link> -->
         </li>
-        <li class="kc" v-for="kc in 1" :key="kc">
-          <img class="kc-back" src="../../assets/ysgc/kc3.png" alt="" />
+        <li class="kc" v-for="kc in 0" :key="kc">
+          <router-link to="/yslm">
+            <img class="kc-back" src="../../assets/ysgc/kc3.png" alt="" />
           <div class="kc-des">
             <p class="kc-name">传送门</p>
           </div>
+          </router-link>
+          
         </li>
       </ul>
     </div>
@@ -57,6 +61,15 @@
 import ResourceSearch from "../../components/ResourceSearch/index.vue";
 import commonHeader from "@/components/header/index.vue";
 import { ref } from "vue";
+import { szmsg_school } from "./api";
+let schoolMsg = ref([])
+let schoolData = {};
+function getSchool(){
+  szmsg_school(schoolData).then(res=>{
+    schoolMsg.value=res.data.page_data;
+  })
+}
+getSchool();
 </script>
 <style lang="scss" scoped>
 .ysgc {

+ 32 - 5
src/pages/szmsg/tzkc/index.vue

@@ -23,9 +23,9 @@
       </div>
     </div>
 
-    <div v-for="ys in 2" :key="ys" class="ysgc-kind">
+    <div v-for="ys in 1" :key="ys" class="ysgc-kind">
       <ul class="specail">
-        <li class="kc" v-for="kc in 4" :key="kc">
+        <li class="kc" v-for="kc in 1" :key="kc">
           <router-link to="/tzkc_detail">
             <img
             class="kc-back"
@@ -33,7 +33,7 @@
             alt=""
           />
           <div class="kc-des">
-            <p class="kc-name">学生二</p>
+            <p class="kc-name">学校一</p>
             <!-- <div class="rate">
               <img
                 v-for="star in 5"
@@ -51,8 +51,24 @@
         </li>
       </ul>
     </div>
-    <div class="block">
-      <el-pagination layout="prev, pager, next" :total="1000"> </el-pagination>
+    <div class="footer">
+      <div
+        style="
+          width: 1280px;
+          height: 50px;
+
+          position: relative;
+          margin: 0 auto;
+        "
+      >
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :total="1000"
+          style="position: absolute; top: 0; right: 0"
+        >
+        </el-pagination>
+      </div>
     </div>
   </div>
 </template>
@@ -71,6 +87,9 @@ const searMsg = ref('');
   width: 100%;
   min-width: 1280px;
   margin: 0 auto;
+  background-image: url("../../../assets/ysgc/back.png");
+  background-size: 100%;
+  background-repeat: no-repeat;
 }
 .title {
   width: 1280px;
@@ -135,6 +154,7 @@ const searMsg = ref('');
       height: 50px;
       padding: 20px;
       width: 100%;
+      outline: none;
     }
     .inp-sear {
       display: block;
@@ -299,5 +319,12 @@ const searMsg = ref('');
   margin: 0 auto;
   margin-top: 50px;
 }
+.footer {
+  width: 100%;
+  height: 50px;
+  margin-top: 100px;
+
+  display: inline-block;
+}
 </style>
 

+ 10 - 0
src/pages/szmsg/tzkc/tzkc_detail/api.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request.js'
+
+// 学校详情
+export const school_detail = (data={}) =>{
+    return request({
+        url:'/szmsg/school/detail',
+        data,
+        // ss_id
+    })
+}

+ 353 - 0
src/pages/szmsg/tzkc/tzkc_detail/index.vue

@@ -30,6 +30,108 @@
               </el-timeline-item>
             </el-timeline>
           </div>
+          <div class="cover"></div>
+        </div>
+      </div>
+      <div class="con_class">
+        <div class="classLeft">
+          <div class="nav">
+            <h3 class="navTitle">学校课程</h3>
+            <div
+              v-for="(kind, index) in classKind"
+              :key="index"
+              class="nav-list"
+            >
+              <span  class="kindName">{{ kind.name }}</span>
+              <div v-show="i<8 && !is_more"
+                :class="kindIndex == i ? 'kindsActive' : ''"
+                @click="kindChange(i)"
+                v-for="(k, i) in kind.kind"
+                class="kinds"
+                :key="i"
+              >
+                {{ k }}
+              </div>
+              <div v-show="is_more==true"
+                :class="kindIndex == i ? 'kindsActive' : ''"
+                @click="kindChange(i)"
+                v-for="(k, i) in kind.kind"
+                class="kinds"
+                :key="i"
+              >
+                {{ k }}
+              </div>
+              <span @click="moreShow($event)" class="more" v-if="kind.kind.length>8">更多</span>
+            </div>
+          </div>
+          <ul class="stuWorks">
+            <li class="s-works" v-for="s in 5" :key="s">
+              <!-- <router-link to="/ysgc_detail"> -->
+                <div class="img">
+                  <img
+                    class="kc-back"
+                    src="../../../../assets/ysgc/kc3.png"
+                    alt=""
+                  />
+                  <!-- 悬浮遮罩层 -->
+                  <div v-show="is_Sq == '1'" class="img_mask">
+                    <img class="play" src="" alt="" />
+                  </div>
+                </div>
+
+                <div class="kc-des">
+                  <p class="kc-name">安徒生世界插画</p>
+                  <div class="rate">
+                    <img
+                      v-for="star in 5"
+                      :key="star"
+                      src="../../../../assets/ysgc/star.png"
+                      alt=""
+                    />
+                  </div>
+                </div>
+                <div class="zan">
+                  <img src="../../../../assets/ysgc/zan.png" /> 10w+
+                  <img src="../../../../assets/ysgc/xin.png" alt="" />14w+
+                </div>
+              <!-- </router-link> -->
+            </li>
+          </ul>
+        </div>
+        <div class="classRight">
+          <h3 class="n_title">优秀作品</h3>
+          <ul v-for="s in 5" :key="s" class="goodWorks">
+            <li class="s-works">
+              <router-link to="/ysgc_detail">
+                <div class="img">
+                  <img
+                    class="kc-back"
+                    src="../../../../assets/ysgc/kc3.png"
+                    alt=""
+                  />
+                  <!-- 悬浮遮罩层 -->
+                  <div v-show="is_Sq == '1'" class="img_mask">
+                    <img class="play" src="" alt="" />
+                  </div>
+                  <div class="zan">
+                    <img src="../../../../assets/ysgc/zan.png" /> 10w+
+                    <img src="../../../../assets/ysgc/xin.png" alt="" />14w+
+                  </div>
+                </div>
+                <div class="kc-des">
+                  <p class="kc-name">安徒生世界插画</p>
+                  <div class="rate">
+                    <img
+                      v-for="star in 5"
+                      :key="star"
+                      src="../../../../assets/ysgc/star.png"
+                      alt=""
+                    />
+                  </div>
+                </div>
+              </router-link>
+            </li>
+          </ul>
         </div>
       </div>
     </div>
@@ -44,6 +146,8 @@ const name = ref("index");
 const kmActiveName = ref("a");
 const njActiveName = ref("a");
 const searMsg = ref("");
+let kindIndex = ref("0");
+let is_more = ref(false);
 const activities = [
   {
     content:
@@ -81,6 +185,42 @@ const activities = [
     hollow: true,
   },
 ];
+let classKind = ref([
+  {
+    name: "年级",
+    kind: [
+      "全部",
+      "幼儿园",
+      "一年级",
+      "二年级",
+      "三年级",
+      "四年级",
+      "五年级",
+      "六年级",
+      "初一",
+      "初二",
+      "初三",
+      "高一",
+      "高二",
+      "高三",
+    ],
+  },
+  {
+    name: "科目",
+    kind: ["全部", "语文", "数学", "英语", "物理", "化学", "地理"],
+  },
+]);
+function kindChange(i) {
+  kindIndex.value = i;
+}
+function moreShow(e){
+  is_more.value=!is_more.value;
+  if(e.target.innerHTML=='更多'){
+    e.target.innerHTML='收起';
+  }else{
+    e.target.innerHTML='更多';
+  }
+}
 </script>
   
 <style lang="scss" scoped>
@@ -141,10 +281,223 @@ const activities = [
         box-sizing: border-box;
         box-shadow: 0px 10px 24px 0px rgba(161, 153, 168, 0.18);
         overflow-y: scroll;
+        overflow-x: hidden;
+        position: relative;
+        .n_title {
+          font-size: 18px;
+          font-family: PingFang, PingFang-Heavy;
+          font-weight: 800;
+          color: #222222;
+          margin: 13px 0 33px 0;
+        }
+        .cover {
+          position: absolute;
+          width: 100%;
+          height: 80px;
+          background-color: #fff;
+          bottom: 0;
+          left: 0;
+          opacity: 0.4;
+        }
+      }
+      .notice::-webkit-scrollbar {
+        width: 2px;
+      }
+      .notice::-webkit-scrollbar-thumb {
+        border-radius: 10px;
+        background-color: #00a3ff;
+      }
+    }
+    .con_class {
+      width: 100%;
+      display: flex;
+      margin-top: 10px;
+      .classLeft,
+      .classRight {
+        .s-works {
+          position: relative;
+          width: 268px;
+          height: 234px;
+          margin-top: 30px;
+          border-radius: 12px;
+          margin-right: 17px;
+          box-shadow: 0px 10px 24px 0px rgba(161, 153, 168, 0.18);
+          .img {
+            position: relative;
+            width: 100%;
+            .img_mask {
+              position: absolute;
+              top: 0;
+              border-radius: 12px 12px 0 0;
+              width: 100%;
+              height: 100%;
+              background-color: rgba(0, 0, 0, 0.59);
+            }
+          }
+          .kc-des {
+            padding: 11px 6px;
+            box-sizing: border-box;
+            .kc-name {
+              height: 22px;
+              font-size: 16px;
+              font-family: PingFangSC, PingFangSC-Regular;
+              font-weight: 400;
+              color: #000000;
+              line-height: 22px;
+            }
+            .rate {
+              display: flex;
+              margin: 11px 0;
+              img {
+                width: 15px;
+                margin-right: 6px;
+              }
+            }
+          }
+          .zan {
+            position: absolute;
+            top: 0;
+            right: 0;
+            width: 173px;
+            height: 34px;
+            line-height: 34px;
+            font-size: 14px;
+            color: #fff;
+            display: flex;
+            padding-left: 20px;
+            background: rgba(0, 0, 0, 0.59);
+            border-radius: 0px 12px 0px 12px;
+            img {
+              display: inline-block;
+              width: 17px;
+              height: 16px;
+              margin: 8px 5px 0 10px;
+            }
+          }
+        }
+      }
+      .classLeft {
+        width: 920px;
+        .nav {
+          .navTitle {
+            font-size: 18px;
+            font-family: PingFang, PingFang-Heavy;
+            font-weight: 800;
+            color: #222222;
+            margin: 18px 14px;
+          }
+          .nav-list {
+            width: 100%;
+            display: flex;
+            min-width: 0;
+            flex-wrap: wrap;
+            margin-left: 20px;
+            border-bottom: 1px solid #E4E6E8;
+            .kindName {
+              display: inline-block;
+              width: 60px;
+              height: 100%;
+              font-size: 16px;
+              color: #000;
+              font-weight: 600;
+              margin-top: 12px;
+            }
+            .kinds {
+              margin-right: 34px;
+              margin-top: 10px;
+              font-size: 16px;
+              text-align: center;
+              height: 30px;
+              line-height: 30px;
+              white-space: nowrap;
+            }
+            .kindsActive {
+              background-color: #e8f4f8;
+              border-radius: 6px;
+              color: #2e99cf;
+            }
+            .more{
+              line-height: 50px;
+              color: #00a3ff;
+            }
+          }
+        }
+        .stuWorks {
+          display: flex;
+          flex-wrap: wrap;
+          padding-left: 18px;
+        }
+      }
+      .classRight {
+        width: 524px;
+        height: 675px;
+        margin-top: 20px;
+        background: #ffffff;
+        border-radius: 12px;
+        box-shadow: 0px 10px 24px 0px rgba(161, 153, 168, 0.18);
+        padding: 20px 10px;
+        overflow-y: scroll;
+
+        .n_title {
+          font-size: 18px;
+          font-family: PingFang, PingFang-Heavy;
+          font-weight: 800;
+          color: #222222;
+          margin: 13px 0 33px 0;
+        }
+        .goodWorks {
+          width: 100%;
+          .s-works {
+            width: 100%;
+            height: 155px;
+            box-shadow: unset;
+            a {
+              display: flex;
+              .img {
+                width: 264px;
+                position: relative;
+                border-radius: 10px;
+                overflow: hidden;
+                .kc-name{
+                  font-weight: 500;
+                }
+              }
+            }
+          }
+        }
+      }
+      .classRight::-webkit-scrollbar {
+        width: 2px;
+      }
+      .classRight::-webkit-scrollbar-thumb {
+        border-radius: 10px;
+        background-color: #00a3ff;
       }
     }
   }
 }
+::v-deep .el-timeline {
+  .el-timeline-item__content {
+    display: -webkit-box;
+    font-size: 14px;
+    color: #333;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    -webkit-line-clamp: 3;
+    -webkit-box-orient: vertical;
+  }
+  .el-timeline-item__content:hover {
+    color: #00a3ff;
+  }
+  .el-timeline-item__timestamp {
+    height: 20px;
+    line-height: 10px;
+    font-size: 10px;
+    font-family: PingFangSC, PingFangSC-Regular;
+    font-weight: 400;
+    color: #a3a3a3;
+  }
+}
 </style>
   
   

+ 2 - 2
src/pages/ysgc/FallsFlow.vue

@@ -2,7 +2,7 @@
   <div class="flow">
     <div class="flow_lie" v-for="v in imgList()" :key="v">
       <div class="w_img" v-for="img in v.a" :key="img">
-        <router-link to="/ysgc_detail">
+        <!-- <router-link to="/ysgc_detail"> -->
           <div class="fallimgItem img">
             <img ref="allImage" :src="img.img" alt="" />
           </div>
@@ -13,7 +13,7 @@
               <span class="author_name">尚老师</span>
             </div>
           </div>
-        </router-link>
+        <!-- </router-link> -->
       </div>
     </div>
   </div>

+ 3 - 1
src/pages/ysgc/api.js

@@ -1,8 +1,10 @@
 import request from '@/utils/request.js'
 
+// 艺术广场作品列表
 export const ysgc_list = (data={}) =>{
     return request({
         url:'/ysgc/zp/index',
         data,
     })
-}
+}
+

+ 61 - 60
src/pages/ysgc/index.vue

@@ -4,9 +4,9 @@
     <div class="ysgc-kind">
       <ul class="specail">
         <li class="kc" v-for="kc in topWorks" :key="kc">
-          <router-link to="/ysgc_detail">
+          <!-- <router-link to="/ysgc_detail"> -->
             <img class="kc-back" :src="kc.img" alt="" />
-          </router-link>
+          <!-- </router-link> -->
         </li>
       </ul>
         <div class="activityContent">
@@ -29,7 +29,7 @@
                 <el-tab-pane label="六年级" name="g"></el-tab-pane>
                 <el-tab-pane label="初一" name="h"></el-tab-pane>
                 <el-tab-pane label="初二" name="i"></el-tab-pane>
-                <el-tab-pane label="初三" name="g"></el-tab-pane>
+                <el-tab-pane label="初三" name="j"></el-tab-pane>
                 <el-tab-pane label="高一" name="k"></el-tab-pane>
                 <el-tab-pane label="高二" name="l"></el-tab-pane>
                 <el-tab-pane label="高三" name="m"></el-tab-pane>
@@ -38,22 +38,22 @@
             </div>
 
             <div class="nav-list">
-              <span class="kindName">科目</span>
+              <span class="kindName">分册</span>
               <el-tabs v-model="kmActiveName" @tab-click="handleClick">
                 <el-tab-pane label="全部" name="a"></el-tab-pane>
-                <el-tab-pane label="音乐" name="b"></el-tab-pane>
-                <el-tab-pane label="美术" name="c"></el-tab-pane>
-                <el-tab-pane label="舞蹈" name="d"></el-tab-pane>
-                <el-tab-pane label="摄影" name="e"></el-tab-pane>
-                <el-tab-pane label="毛笔" name="f"></el-tab-pane>
+                <el-tab-pane label="上册" name="b"></el-tab-pane>
+                <el-tab-pane label="下册" name="c"></el-tab-pane>          
               </el-tabs>
             </div>
             <div class="nav-list">
               <span class="kindName">分类</span>
               <el-tabs v-model="flActiveName" @tab-click="handleClick">
                 <el-tab-pane label="全部" name="a"></el-tab-pane>
-                <el-tab-pane label="学校" name="b"></el-tab-pane>
-                <el-tab-pane label="机构" name="c"></el-tab-pane>
+                <el-tab-pane label="word" name="b"></el-tab-pane>
+                <el-tab-pane label="ppt" name="c"></el-tab-pane>
+                <el-tab-pane label="pdf" name="d"></el-tab-pane>
+                <el-tab-pane label="excel" name="e"></el-tab-pane>
+                <el-tab-pane label="视频" name="f"></el-tab-pane>
               </el-tabs>
             </div>
           </div>
@@ -62,18 +62,17 @@
             <span class="inp-sear"></span>
           </div>
           <ul class="stuWorks">
-            <li class="s-works" v-for="s in 18" :key="s">
-              <router-link to="/ysgc_detail">
+            <li class="s-works" v-for="s in topWorks" :key="s">
+              <!-- <router-link to="/ysgc_detail"> -->
                 <div class="img">
-                  <img class="kc-back" src="../../assets/ysgc/kc3.png" alt="" />
+                  <img class="kc-back" :src="s.img" alt="" />
                   <!-- 悬浮遮罩层 -->
                   <div v-show="is_Sq=='1'" class="img_mask">
                     <img class="play" src="" alt="">
                   </div>
                 </div>
-
                 <div class="kc-des">
-                  <p class="kc-name">安徒生世界插画</p>
+                  <p class="kc-name">{{s.name}}</p>
                   <div class="rate">
                     <img
                       v-for="star in 5"
@@ -87,7 +86,7 @@
                   <img src="../../assets/ysgc/zan.png" /> 10w+
                   <img src="../../assets/ysgc/xin.png" alt="" />14w+
                 </div>
-              </router-link>
+              <!-- </router-link> -->
             </li>
           </ul>
           </div>
@@ -115,14 +114,12 @@
               </div>
 
               <div class="nav-list">
-                <span class="kindName">科目</span>
+                <span class="kindName">分册</span>
                 <el-tabs v-model="kmActiveName" @tab-click="handleClick">
                   <el-tab-pane label="全部" name="a"></el-tab-pane>
-                  <el-tab-pane label="音乐" name="b"></el-tab-pane>
-                  <el-tab-pane label="美术" name="c"></el-tab-pane>
-                  <el-tab-pane label="舞蹈" name="d"></el-tab-pane>
-                  <el-tab-pane label="摄影" name="e"></el-tab-pane>
-                  <el-tab-pane label="毛笔" name="f"></el-tab-pane>
+                  <el-tab-pane label="上册" name="b"></el-tab-pane>
+                  <el-tab-pane label="下册" name="c"></el-tab-pane>
+                  
                 </el-tabs>
               </div>
             </div>
@@ -178,15 +175,19 @@ const getPic = async () => {
   topWorks.value.push(
     {
       img: m3.default,
+      name:'安徒生童话'
     },
     {
       img: m2.default,
+      name:'拇指姑娘'
     },
     {
       img: m1.default,
+      name:'传送门'
     },
     {
       img: m4.default,
+      name:'野天鹅'
     }
   );
   stuWorks.value.push(m1, m);
@@ -194,42 +195,42 @@ const getPic = async () => {
     {
       img: m1.default,
     },
-    {
-      img: m5.default,
-    },
-    {
-      img: m6.default,
-    },
-    {
-      img: m7.default,
-    },
-    {
-      img: m8.default,
-    },
-    {
-      img: m2.default,
-    },
-    {
-      img: m14.default,
-    },
-    {
-      img: m9.default,
-    },
-    {
-      img: m13.default,
-    },
-    {
-      img: m15.default,
-    },
-    {
-      img: m10.default,
-    },
-    {
-      img: m12.default,
-    },
-    {
-      img: m16.default,
-    }
+    // {
+    //   img: m5.default,
+    // },
+    // {
+    //   img: m6.default,
+    // },
+    // {
+    //   img: m7.default,
+    // },
+    // {
+    //   img: m8.default,
+    // },
+    // {
+    //   img: m2.default,
+    // },
+    // {
+    //   img: m14.default,
+    // },
+    // {
+    //   img: m9.default,
+    // },
+    // {
+    //   img: m13.default,
+    // },
+    // {
+    //   img: m15.default,
+    // },
+    // {
+    //   img: m10.default,
+    // },
+    // {
+    //   img: m12.default,
+    // },
+    // {
+    //   img: m16.default,
+    // }
   );
 };
 getPic();
@@ -238,7 +239,7 @@ const yz_top_display = "";
 const yz_type = "";
 let listData = {
   yz_type: "2",
-  yz_top_display: "1",
+  // yz_top_display: "1",
 };
 function getList() {
   ysgc_list(listData).then((res) => {

+ 27 - 0
src/pages/ysgc/ysgc_detail/api.js

@@ -0,0 +1,27 @@
+import request from '@/utils/request.js'
+
+// 作品详情
+export const ysgc_detail = (data={}) =>{
+    return request({
+        url:'/ysgc/zp/detail',
+        data,
+    })
+}
+
+// 作品评论列表
+export const ysgc_evaluate = (data={}) =>{
+    return request({
+        url:'/ysgc/zp_evaluate/index',
+        data,
+    })
+}
+
+// 作品评论添加
+export const ysgc_addEvaluate = (data={}) =>{
+    return request({
+        url:'/ysgc/zp_evaluate/add',
+        data:{
+            ysgc_zp_evaluate:data.ysgc_zp_evaluate
+        }
+    })
+}

+ 1 - 0
src/pages/ysgc/ysgc_detail/index.vue

@@ -169,6 +169,7 @@ const commentMsg = ref("");
             padding-left: 10px;
             box-sizing: border-box;
             margin-right: 5px;
+            outline: none;
           }
           .add {
             width: 111px;

+ 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
+}