Bladeren bron

课程资源接口接入

la 2 jaren geleden
bovenliggende
commit
87178526ea

BIN
src/assets/kczy/noData4.png


+ 37 - 28
src/components/CourseType.vue

@@ -1,34 +1,40 @@
 <template>
   <div class="courseType">
     <div class="normalArrange">
-        <p>{{transBaseData.mainTitle}}<span>{{transBaseData.secTitle}}</span></p>
+        <p>{{transBaseData.kc_name}}<span>{{transBaseData.kc_brief}}</span></p>
         <div class="marklabel">
           <div class="marklabel_left">
             <ul>
-              <li :class="{'activeIn': index==num}" v-for="(item,index) in transBaseData.label" :key="index" @click="toparentSwitchTab(index)">{{item}}</li>
+              <li :class="{'activeIn': index==num}" v-for="(item,index) in transBaseData.cates" :key="index" @click="toparentSwitchTab(index)">{{item.kc_name}}</li>
             </ul>
           </div>
-          <div class="marklabel_right" @click="checkMore(transBaseData.id)">查看更多</div>
+          <div class="marklabel_right" @click="checkMore(transBaseData)">查看更多</div>
         </div>
         <div class="allDetailCourse">
-          <div class="singlePart" v-for="(item,index) in transBaseData.courseDetail" :key="index" @click="toParentDetail(item,index)">
-            <div class="courseCover"> <img :src="item.img" alt=""></div>
-            <p>{{item.title}}</p>
-            <div class="evalStar">
-              <img src="../assets/kczy/stars.png" v-for="(item,index) in item.starNum" :key="index">
-            </div>
-            <!-- positing -->
-            <div class="dataShow">
-              <div class="baseInfoPart">
-                <img src="../assets/kczy/cellectIcon.png" alt="">
-                <span>{{item.collectNum}}</span>
+          <div class="allIn" v-if="transBaseData.kc && transBaseData.kc.length > 0">
+              <div class="singlePart" v-for="(item,index) in transBaseData.kc" :key="index" @click="toParentDetail(item,index)">
+              <div class="courseCover"> <img :src="item.kk_img" alt=""></div>
+              <p>{{item.kk_name}}</p>
+              <div class="evalStar">
+                <img src="../assets/kczy/stars.png" v-for="(item,index) in item.kk_star_num" :key="index">
               </div>
-              <div class="baseInfoPart">
-                <img src="../assets/kczy/fingerIcon.png" alt="">
-                <span>{{item.zanNum}}</span>
+              <div class="dataShow">
+                <div class="baseInfoPart">
+                  <img src="../assets/kczy/cellectIcon.png" alt="">
+                  <span>{{item.kk_fav_num}}</span>
+                </div>
+                <div class="baseInfoPart">
+                  <img src="../assets/kczy/fingerIcon.png" alt="">
+                  <span>{{item.kk_like_num}}</span>
+                </div>
               </div>
             </div>
           </div>
+          
+          <div class="NOdata" v-else>
+            <img src="../assets/kczy/noData4.png" alt="">
+            <p class="NOdata_p">暂无数据~</p>
+          </div>          
         </div>
       </div>
   </div>
@@ -54,12 +60,8 @@
         console.log(index)
       },
       //详情页
-      toParentDetail(item,index) {
-        let transObj = {
-          id:item.ni_pid,
-          num:index
-        }
-        this.$emit("toParentDetail", transObj);
+      toParentDetail(item, index) {
+        this.$emit("toParentDetail", item);
       },
       // 
       checkMore(mark) {
@@ -72,6 +74,7 @@
 </script>
 
 <style lang="scss" scoped>
+@import "../styles/common_resource.scss";
 .normalArrange{
   margin-top:30px;
   p{
@@ -124,11 +127,14 @@
   }
   .allDetailCourse{
     margin-top: 30px;
-    display: flex;
-    align-items: center;
-    justify-content: flex-start;
-    flex-wrap: wrap;
-    .singlePart{
+    min-height: 264px;
+    
+    .allIn{
+      display: flex;
+      align-items: center;
+      justify-content: flex-start;
+      flex-wrap: wrap;
+      .singlePart{
       width:19.2%;
       height: 234px;
       border-radius: 12px;
@@ -195,6 +201,8 @@
     .singlePart:nth-child(5n){
       margin-right: 0!important;
     }
+    }
+    
   }
   
 }
@@ -202,4 +210,5 @@
   background: #00a3ff!important;
   color: #ffffff!important;
 }
+
 </style>

+ 57 - 62
src/pages/courseResources.vue

@@ -6,17 +6,13 @@
         <p>课程资源,搜索一下</p>
         <div class="searchValue">
           <input type="text" placeholder="搜索关键字" v-model="searchKey" >
-          <div class="searchBtn">
+          <div class="searchBtn" @click="searchBtn">
             <img src="/kczy/searchIcon.png" alt="">
           </div>
         </div>
         <div class="littleTab">
           <ul>
-            <li>微课</li>|
-            <li>教案</li>|
-            <li class="active">课件</li>|
-            <li>微视频</li>|
-            <li>网络资源</li>
+            <li :class="{active:index==2}" v-for="(item,index) in quickInput" :key="index" @click="quickIn(item)">{{item}}  <span v-show="index!=4">|</span></li>
           </ul>
         </div>
       </div>
@@ -33,7 +29,9 @@
 
 <script>
   import CourseType from '../components/CourseType.vue'
-  import commonHeader from "@/components/header/index.vue";
+import commonHeader from "@/components/header/index.vue";
+import {courseIndex } from "./kczy/allApi.js";
+import { user } from "@/store/user.js";
   export default {
     name: 'courseResources',
     components:{
@@ -43,7 +41,9 @@
     data() {
       return {
         searchKey: '',
-        num:0,
+        num: 0,
+        quickInput: ['微课', '教案', '课件', '微视频', '网络资源'],
+        chooseNum:2,
         baseData: {
           id:"baseCourse",
           mainTitle: '基础课程',
@@ -223,64 +223,58 @@
       }
     },
     mounted() {
-console.log("99999");
+      this.initData();
     },
   methods: {
-      //暂时注释掉
-      switchTab(index) {
-        this.num = index;
-      },
-      //全部-查看更多
-      baseCourseAll(markLable) {
-        switch (markLable) {
-          case 'baseCourse':
-            this.$router.push('/resourceAll');
-            break;
-          case 'famousCourse'://名师在线
-            window.location.href = "http://www.txhlwxx.com/zj/mskt.html";
-            break;
-          case 'homeworkAss'://作业辅导
-            window.location.href = "http://www.txhlwxx.com/index.php?mod=txwx&action=micro_course&do=index";
-          break;
-          case 'familyCourse'://家庭教育
-            window.location.href = "http://www.txhlwxx.com/zj/jtjy.html?v=1.1";
-          break;
-          case 'specialCourse'://特色课程
-          window.location.href = "http://www.txhlwxx.com/zj/tskc.html?v=1.1";
-          return
-          break;
-          case 'resourceCenter'://资源中心
-          return
-          break;
-          default:
-          this.$router.push('/resourceAll');
-          
+    //初始化数据
+    initData() {
+      let transObj = {
+        token: user.token,
+        keyword:this.searchKey,
+      }
+      courseIndex(transObj)
+        .then(res => {
+          if (res.code == "1") {
+            let responseDataAll = Object.values(res.data);
+            console.log(responseDataAll, "00000xwwww");
+            this.baseData = responseDataAll[0];
+            this.famousBaseData =responseDataAll[1];
+            this.homeworkAssBaseData=responseDataAll[2];
+            this.familyBaseData=responseDataAll[3];
+            this.specialBaseData=responseDataAll[4];
+            this.resourceCenterBaseData=responseDataAll[5];
         }
-      },
-      //详情页
-      toDetail(transParams) {
-        let NID=transParams.id;
-        switch (NID) {
-          case 'baseCourse':
-            return
-          break;
-          case 'famousCourse'://名师在线
-            window.location.href="http://www.txhlwxx.com/zj/mskt.html"
-            break;
-          case 'homeworkAss'://作业辅导
-            window.location.href = "http://www.txhlwxx.com/index.php?mod=txwx&action=micro_course&do=index";
-          break;
-          case 'familyCourse'://家庭教育
-            window.location.href="http://www.txhlwxx.com/zj/jtjy.html?v=1.1"
-            break;
-          case 'specialCourse'://特色课程
-          window.location.href = "http://www.txhlwxx.com/zj/tskc.html?v=1.1";
-          break;
-          case 'resourceCenter'://资源中心
-            return
-          break;
+      })
+      .catch(error=>{
+        console.log(error)
+      })
+    },
+    //便捷输入
+    quickIn(item) {
+      this.searchKey = item;
+    },
+    //搜索
+    searchBtn() {
+      this.initData();
+    },
+    //暂时注释掉
+    switchTab(index) {
+      this.num = index;
+    },
+    //全部-查看更多
+    baseCourseAll(markLable) {
+      this.$router.push({
+        path: '/resourceAll',
+        query: {
+          kkId: markLable.kk_id,
+          kcName:markLable.kc_name
         }
-      },
+      });
+    },
+      //详情页
+    toDetail(transParams) {
+      this.$router.push({ path: '/resourceChapter', query: { id: transParams.kk_id }})
+    },
 
   },
   }
@@ -349,6 +343,7 @@ console.log("99999");
             color: #606565;
             margin:0 5px;
             justify-content: space-between;
+            cursor: pointer;
           }
         }
       }

+ 149 - 112
src/pages/courseResourcesAll.vue

@@ -2,20 +2,19 @@
   <common-header/>
   <div class="courseResources allPageWidthBg">
     <div class="likeBread">
-      <div class="likeBread_left">基础课程</div>
+      <div class="likeBread_left">{{bigTitle}}</div>
       <div class="likeBread_right">
-        <span>基础课程</span>-
-        <span>基础课程</span>-
+        <span>{{bigTitle}}</span>-
         <span>查看更多</span>-
         <span>全部</span>
       </div>
     </div>
     <div class="widthBg">
       <div class="baseTop">
-        <p>基础课程</p>
+        <p>{{bigTitle}}</p>
         <div class="searchValue">
           <input type="text" placeholder="搜索关键字" v-model="searchKey" >
-          <div class="searchBtn">
+          <div class="searchBtn" @click="handleSearch">
             <img src="/kczy/searchIcon.png" alt="">
           </div>
         </div>
@@ -26,7 +25,7 @@
       <div class="bigTitle">年级</div>
       <div class="selectionFilter">
         <ul>
-          <li v-for="(item,index) in filterData" :key="index" @click="gradeChoose(index)"><span :class="{ 'selectActive':num==index }">{{item}}</span></li>
+          <li v-for="(item,index) in filterData" :key="index" @click="gradeChoose(item,index)"><span :class="{ 'selectActive':num==index }">{{item.grade_name}}</span></li>
         </ul>
       </div>
     </div>
@@ -35,27 +34,27 @@
       <div class="bigTitle">分册</div>
       <div class="selectionFilter">
         <ul>
-          <li v-for="(item,index) in secFilterData" :key="index" @click="secChoose(index)"><span :class="{ 'selectActive':secNum==index }">{{item}}</span></li>
+          <li v-for="(item,index) in secFilterData" :key="index" @click="secChoose(item,index)"><span :class="{ 'selectActive':secNum==index }">{{item.name}}</span></li>
         </ul>
       </div>
     </div>
-    <div class="common1280">
+    <div class="common1280 contentMain">
        <div class="allDetailCourse">
           <div class="singlePart" v-for="(item,index) in courseDetail" :key="index" @click="toDetail(item,index)">
-            <div class="courseCover"> <img :src="item.img" alt=""></div>
-            <p>{{item.title}}</p>
+            <div class="courseCover"> <img :src="prefixImg+item.kk_img" alt=""></div>
+            <p>{{item.kk_name}}</p>
             <div class="evalStar">
-              <img src="/kczy/stars.png" v-for="(item,index) in item.starNum" :key="index">
+              <img src="/kczy/stars.png" v-for="(item,index) in item.kk_star_num" :key="index">
             </div>
             <!-- positing -->
             <div class="dataShow">
               <div class="baseInfoPart">
                 <img src="/kczy/cellectIcon.png" alt="">
-                <span>{{item.collectNum}}</span>
+                <span>{{item.kk_fav_num}}</span>
               </div>
               <div class="baseInfoPart">
                 <img src="/kczy/fingerIcon.png" alt="">
-                <span>{{item.zanNum}}</span>
+                <span>{{item.kk_like_num}}</span>
               </div>
             </div>
           </div>
@@ -63,14 +62,16 @@
     </div>
     <div class="common1280" style="position:relative;">
       <div class="paganationPage">
-        <el-pagination background layout="prev, pager, next, ->" :total="1000" />
+        <el-pagination background layout="prev, pager, next, ->" :total="totalRows"  @size-change="handleChangePage" />
       </div>
     </div>
   </div>
 </template>
 
 <script>
-  import commonHeader from "@/components/header/index.vue";
+import commonHeader from "@/components/header/index.vue";
+import { defaultGrade,baseCourseList } from "./kczy/allApi.js";
+import { user } from "@/store/user.js";
   export default {
     name: 'courseResources',
     components:{
@@ -78,115 +79,148 @@
     },
     data() {
       return {
+        bigTitle:'基础课程',
         searchKey: '',
         num: 0,
         secNum:0,
-        filterData: ["全部","幼儿园", "一年级", "二年级", "三年级", "四年级", "五年级", "六年级", "初一", "初二", "初三", "高一", "高二", "高三", "其它"],
-        secFilterData: ["全部","上册", "下册"],
-        courseDetail: [
+        filterData: [],
+        secFilterData: [
           {
-            id: 'base_1',
-            img: '/kczy/singlePic1.png',
-            title: '野天鹅',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
+            keyV: '',
+            name:"全部"
           },
           {
-            id:'base_2',
-            img: '/kczy/singlePic2.png',
-            title: '安徒生世界插画',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
+            keyV: 1,
+            name:"上册"
           },
           {
-            id:'base_3',
-            img: '/kczy/singlePic3.png',
-            title: '传送门',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
-          },
-          {
-            id: 'base_1',
-            img: '/kczy/singlePic1.png',
-            title: '野天鹅',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
-          },
-          {
-            id:'base_2',
-            img: '/kczy/singlePic2.png',
-            title: '安徒生世界插画',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
-          },
-          {
-            id: 'base_1',
-            img: '/kczy/singlePic1.png',
-            title: '野天鹅',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
-          },
-          {
-            id:'base_2',
-            img: '/kczy/singlePic2.png',
-            title: '安徒生世界插画',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
-          },
-          {
-            id:'base_3',
-            img: '/kczy/singlePic3.png',
-            title: '传送门',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
-          },
-          {
-            id: 'base_1',
-            img: '/kczy/singlePic1.png',
-            title: '野天鹅',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
-          },
-          {
-            id:'base_2',
-            img: '/kczy/singlePic2.png',
-            title: '安徒生世界插画',
-            starNum: 5,
-            collectNum: '10w+',
-            zanNum:'14w+'
-          },
-
-        ]
+            keyV: 2,
+            name:"下册"
+          }
+        ],
+        courseDetail: [],
+        page: 1,
+        totalRows:'',
+        prefixImg: 'https://tyyxopenapi.bozedu.top/',
+        chooseGradeId: '',//选中的年级id
+        chooseGradeName:'',
+        chooseVolume:''//选中的分册
 
       }
     },
-    mounted(){
-      
-    },
-    methods: {
-      //年级选择
-      gradeChoose(index){
-        this.num = index;
-        // 网络请求二级数据
+  mounted() {
+      //获取上个页面的标识 判定是种课程(待串联)
 
-      },
-      //学科选择
-      secChoose(index) {
-        this.secNum = index;
-      },
-      //移步详情页
-      toDetail(row, index) {
-        this.$router.push('/resourceChapter');
-      }
+      this.initGrade();
+      this.initData(this.page);
+    },
+  methods: {
+    /**初始化年级*/
+    initGrade() {
+      let transObj = {
+        token: user.token,
+      };
+      defaultGrade(transObj)
+        .then(res => {
+          if (res.code == "1") {
+            this.filterData = res.data.page_data;
+            let allSection = {
+              area_id1: "0",
+              area_id2: "0",
+              area_id3: "0",
+              area_id4: "0",
+              create_dateline: "1662016924",
+              create_user_id: "0",
+              dept_id: "0",
+              grade_id: "",
+              grade_name: "全部",
+              id: "30",
+              isdelete: "0",
+              modify_dateline: "0",
+              modify_user_id: "0",
+              sm_id: "0",
+              user_id: "0",
+            }
+            this.filterData.unshift(allSection);
+          }
+        })
+        .catch(error => { console.log(error) });
+    },
+    /**初始化数据*/
+    initData(changePage) {
+      //获取上级的标记
+      let trans_kkId = this.$route.query.kkId;
+      let trans_kcName = this.$route.query.kcName;
+      this.bigTitle=trans_kcName;
+      // switch (P_markLable.kc_id) {
+      //   case"1"://基础课程
+      //     break;
+      //   case 'famousCourse'://名师在线
+      //     window.location.href = "http://www.txhlwxx.com/zj/mskt.html";
+      //     break;
+      //   case 'homeworkAss'://作业辅导
+      //     window.location.href = "http://www.txhlwxx.com/index.php?mod=txwx&action=micro_course&do=index";
+      //   break;
+      //   case 'familyCourse'://家庭教育
+      //     window.location.href = "http://www.txhlwxx.com/zj/jtjy.html?v=1.1";
+      //   break;
+      //   case 'specialCourse'://特色课程
+      //   window.location.href = "http://www.txhlwxx.com/zj/tskc.html?v=1.1";
+      //   return
+      //   break;
+      //   case 'resourceCenter'://资源中心
+      //   return
+      //   break;
+      //   default:
+      //   this.$router.push('/resourceAll');
+      // }
+      let transObj = {
+        token: user.token,
+        page: changePage,
+        limit: 10,
+        kc_cate_level_1:'',//一级目录的ID
+        grade_id: this.chooseGradeId,
+        team_id: this.chooseVolume,//分页 1:上册 2下册 
+        keyword:this.searchKey,
+        
+      };
+      baseCourseList(transObj)
+        .then(res => {
+          if (res.code == "1") {
+            this.courseDetail = res.data.page_data;
+            this.totalRows =Number(res.data.total_rows);
+          }
+        })
+        .catch(error => {
+          console.log(error);
+      })
+    },
+    //关键字搜索
+    handleSearch() {
+      this.initData(this.page);
+    },
+    //年级选择
+    gradeChoose(item,index){
+      this.num = index;
+      this.chooseGradeId = item.grade_id;
+      this.chooseGradeName = item.grade_name;
+      this.initData(this.page);
+    },
+    //学科选择
+    secChoose(item,index) {
+      this.secNum = index;
+      this.chooseVolume = item.keyV;
+      this.initData(this.page);
+    },
+    //移步详情页
+    toDetail(row, index) {
+      this.$router.push({ path: '/resourceChapter', query: { id: row.kk_id }})
+    },
+    //翻页
+    handleChangePage(val) {
+      console.log(val,"0000")
+      
+    }      
 
     },
   
@@ -372,4 +406,7 @@
   z-index:11;
   
 }
+.contentMain{
+  min-height: 500px;
+}
 </style>

File diff suppressed because it is too large
+ 316 - 0
src/pages/courseResourcesChapter(drop).vue


File diff suppressed because it is too large
+ 161 - 168
src/pages/courseResourcesChapter.vue


+ 46 - 0
src/pages/kczy/allApi.js

@@ -0,0 +1,46 @@
+import request from '@/utils/request.js'
+//课程资源-基础课程(首页)
+export const courseIndex=(data={})=>{
+  return request({
+    url:'/kczy/kc/main',
+    data,
+  })
+}
+
+// 课程资源-课程(列表)
+export const baseCourseList = (data={}) =>{
+    return request({
+        url:'/kczy/kc/index',
+        data,
+    })
+}
+// 课程资源-课程(详情)
+export const courseDetail = (data={}) =>{
+  return request({
+      url:'/kczy/kc/detail',
+      data,
+  })
+}
+//课程资源-课程(资源列表)
+export const courseSourceList = (data={}) =>{
+  return request({
+      url:'/kczy/files/index',
+      data,
+  })
+}
+
+//课程资源-课程(资源详情)
+export const courseSourceDetail = (data={}) =>{
+  return request({
+      url:'/kczy/files/detail',
+      data,
+  })
+}
+
+//通用年级
+export const defaultGrade = (data = {}) => {
+  return request({
+    url: '/jcxx/grade/index',
+    data
+  })
+}

+ 21 - 4
src/pages/resourceFileReview.vue

@@ -31,7 +31,9 @@
 </template>
 
 <script>
-  import commonHeader from "@/components/header/index.vue";
+import commonHeader from "@/components/header/index.vue";
+import { courseSourceDetail } from "./kczy/allApi.js";
+import { user } from "@/store/user.js";
   export default {
   name: "review",
   components:{
@@ -39,14 +41,29 @@
     },
     data() {
       return {
-        transIconType:''
+        transIconType: '',
+        transKfId:'',
       }
     },
     mounted() {
-      this.transIconType = this.$route.query.icon;
+      this.initData();
     },
     methods: {
-        
+      initData() {
+        this.transIconType = this.$route.query.icon;
+        this.transKfId = this.$route.query.kfId;
+        let transObj = {
+          token:user.token,
+          kf_id:this.transKfId
+        }
+        courseSourceDetail()
+          .then(res => {
+            if (res.code == "1") {
+              console.log(res,"999");
+            }
+          })
+          .catch(error => { console.log(error) });
+      }
     },
   }
 </script>

+ 18 - 1
src/styles/common_resource.scss

@@ -42,4 +42,21 @@
         color:#000000!important;
       }
     }
-  }
+}
+
+.NOdata{
+  width:100%;
+  text-align: center;
+  box-sizing: border-box;
+  padding-top:20px;
+  img{
+    width:15%;
+    display: inline;
+  }
+  .NOdata_p{
+    color:#999;
+    font-size:14px;
+    text-align: center;
+    margin-top:20px;
+  }
+}