ZhaoJing 2 jaren geleden
bovenliggende
commit
076728d3c1

+ 2 - 2
index.html

@@ -6,8 +6,8 @@
 <!--  <link rel="icon" href="/favicon.svg" type="image/svg+xml">-->
   <title>博智AI慕课</title>
   <meta name="description" content="Opinionated Vite Starter Template">
-  <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.13.2/skins/default/aliplayer-min.css"/>
-  <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.13.2/aliplayer-min.js"></script>
+  <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css"/>
+  <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
 </head>
 <body class="font-sans dark:text-white dark:bg-hex-121212">
   <div id="app"></div>

+ 23 - 1
src/components/CommonList/index.vue

@@ -1,6 +1,8 @@
 <script setup>
 import empty from '~/assets/empty.png'
 import edit from '~/assets/edit.png'
+import spjj1 from '~/assets/spjj1.png'
+import spjj2 from '~/assets/spjj2.png'
 import deleteImg from '~/assets/delete.png'
 import download from '~/assets/download.png'
 import enter from '~/assets/enter.png'
@@ -61,6 +63,26 @@ function handleCurrentChange(val) {
   initData()
 }
 
+function getFileType(str) {
+  if (str) {
+    str = str += ''.toLocaleLowerCase()
+    const ext = str.split('.').at(-1).toLowerCase()
+    if (['pdf'].includes(ext))
+      return 'pdf'
+    else if (['mp4'].includes(ext))
+      return 'video'
+    else if (['ppt', 'pptx', 'xls', 'xlsx', 'doc', 'docx'].includes(ext))
+      return 'office'
+    else if (['mp3'].includes(ext))
+      return 'audio'
+    else if (['png', 'jpg', 'jpeg', 'webp'].includes(ext))
+      return 'image'
+    return 'other'
+  }
+  return 'other'
+}
+
+
 watch(
   () => [props.to, props.url, props.d], (val) => {
     if (val[0]) {
@@ -112,7 +134,7 @@ defineExpose({ initData })
 </script>
 
 <template>
-  <div class="overflow-hidden rounded-8px bg-white">
+  <div class="overflow-hidden rounded-8px bg-white common_list">
     <el-scrollbar view-class="h-full">
       <slot name="search" />
       <div v-if="resultData.length === 0" class="pt-30px text-center">

+ 1 - 1
src/pages/home/spzz/create/index.vue

@@ -92,7 +92,7 @@ function linkTo(name) {
             </div>
           </div>
         </div>
-        <div class="flex justify-end px-80px pb-30px">
+        <div class="flex justify-end px-80px pb-30px bg-white">
           <el-pagination
             v-model:current-page="page" v-model:page-size="limit" layout="total, prev, pager, next, jumper"
             :total="total" @current-change="handleCurrentChange"

+ 19 - 6
src/pages/home/spzz/hjss/index.vue

@@ -2,24 +2,29 @@
 import { ArrowLeftBold } from '@element-plus/icons-vue'
 
 const router = useRouter()
+const route = useRoute()
 function handleBack() {
   router.back()
 }
 
-const axm_id = $ref('8')
+let axm_id = $ref('')
 let detailData = $ref({})
+if (route.query.axm_id) {
+  let axm_id = route.query.axm_id;
+  initData();
+}
 async function initData() {
-  const { code, data } = await request({ url: '/aimooc/xnszr_make/detail', data: { axm_id } })
+  const { code, data } = await request({ url: '/aimooc/xnszr_make/detail', data: { axm_id: route.query.axm_id } })
   if (code === '1') {
     detailData = data.one_info
     const player = new Aliplayer(
       {
         id: 'player-con',
-        // source: res.data.one_info.tjz_video_file,
+        source: detailData.axm_video,
         width: '100%',
         height: '460px',
         autoplay: false,
-        // cover: res.data.one_info.tjz_img,
+        cover: detailData.axm_img,
         isLive: false,
         rePlay: false,
         playsinline: true,
@@ -107,7 +112,15 @@ async function initData() {
     )
   }
 }
-initData()
+function handleDown() {
+  if (!detailData.axm_video) {
+    ElMessage.error('暂无资源!')
+    return
+  }
+  const ext = detailData.axm_video.split('.').at(-1).split('?')[0]
+  console.log(ext);
+  downLoadFile1(detailData.axm_video, `${detailData.axm_title}.${ext}`)
+}
 </script>
 
 <template>
@@ -121,7 +134,7 @@ initData()
       </h3>
     </div>
     <div class="my-10px w-full flex justify-end pr-47px">
-      <el-button type="primary" size="large" class="w-118px">
+      <el-button type="primary" size="large" class="w-118px" @click="handleDown">
         下载
       </el-button>
     </div>

+ 58 - 18
src/pages/home/spzz/index.vue

@@ -1,7 +1,7 @@
 <script setup>
 import spzz1 from '~/assets/spzz1.png'
 import spzz2 from '~/assets/spzz2.png'
-
+import { downLoadFile1 } from '~/utils/download'
 // import { szr_list } from './api'
 
 const router = useRouter()
@@ -20,7 +20,7 @@ const statusData = ref([
     status: '2',
   },
 ])
-
+const spzzListRef = ref()
 const fields = ref({
   id: 'axm_id',
   name: 'axm_title',
@@ -38,7 +38,7 @@ let twoData = $ref([
   },
 ])
 let threeData = $ref([])
-async function initData(num) {
+async function initSZRData(num) {
   const { code, data } = await request({ url: '/aimooc/xnszr_img/index', data: { axi_type: num } })
   if (code === '1') {
     if (num === 1)
@@ -47,8 +47,8 @@ async function initData(num) {
       threeData = data.page_data
   }
 }
-initData(1)
-initData(2)
+initSZRData(1)
+initSZRData(2)
 
 function changeStatus(status) {
   params.value.axm_status = status
@@ -63,13 +63,50 @@ function linkTo(type) {
   })
 }
 
+let checkedData = $ref([])
 function initCheckData(data) {
   console.log(data, 888)
+   checkedData = [...data]
 }
 
-function handleCreate() {
-
+async function handleCreate() {
+  if (checkedData.length === 0) {
+    ElMessage.error('请先选择数据!')
+    return
+  }
+  const arr = checkedData.map((item) => {
+    return item[fields.value.id]
+  })
+  const { code } = await request({ url: `/aimooc/${catalog.value}/submit_check`, data: { axm_ids: arr.join(',') } })
+  if (code === '1') {
+    ElMessage.success('提交成功!')
+    checkedData = [];
+    spzzListRef.value.initData()
+  }
+}
+function handleEdit() {
+  
 }
+function handleDownload(item) {
+  console.log(item);
+   if (!item.axm_video) {
+    ElMessage.error('暂无资源!')
+    return
+  }
+  const ext = item.axm_video.split('.').at(-1).split('?')[0]
+  console.log(ext);
+  downLoadFile1(item.axm_video, `${item.axm_title}.${ext}`)
+}
+function handleEnter(item) {
+  console.log(item.axm_id);
+  router.push({
+    path: `spzz/hjss`,
+    query: {
+      axm_id: item.axm_id
+    }
+  })
+}
+
 let activeName = $ref('1')
 function handleMore(i) {
   moreVisible = true
@@ -110,10 +147,10 @@ function handleChoose(i, item) {
         </div>
         <div
           v-for="(item, i) in twoData" v-show="i < 4"
-          :key="i" class="mr-20px cursor-pointer rounded-10px bg-white px-30px py-15px text-center"
+          :key="i" class="w-183px mr-20px cursor-pointer rounded-10px bg-white px-30px py-15px text-center"
         >
-          <div class="m-auto h-86px w-86px flex items-center justify-center overflow-hidden rounded-1/2 bg-hex-f9f9f9">
-            <img :src="item.axi_img" alt="">
+          <div class="mx-auto h-86px w-86px flex items-center justify-center overflow-hidden rounded-1/2 bg-hex-f9f9f9 bg-cover bg-top" :style="{ backgroundImage: `url(${item.axi_img})` }">
+            <!-- <img :src="item.axi_img" alt=""> -->
           </div>
           <div class="mt-10px text-sm">
             {{ item.axi_name }}
@@ -145,10 +182,10 @@ function handleChoose(i, item) {
         </div>
         <div
           v-for="(item, i) in threeData"
-          v-show="i < 4" :key="i" class="mr-20px cursor-pointer rounded-10px bg-white px-30px py-15px text-center"
+          v-show="i < 4" :key="i" class="mr-20px cursor-pointer rounded-10px bg-white px-30px py-15px text-center w-183px"
         >
-          <div class="m-auto h-86px w-86px flex items-center justify-center overflow-hidden rounded-50px bg-hex-f9f9f9">
-            <img :src="item.axi_img" alt="">
+          <div class="m-auto h-86px w-86px flex items-center justify-center rounded-50px bg-hex-f9f9f9 bg-cover bg-top" :style="{backgroundImage: `url(${item.axi_img})`}">
+            <!-- <img :src="item.axi_img" alt=""> -->
           </div>
           <div class="mt-10px text-sm">
             {{ item.axi_name }}
@@ -181,8 +218,8 @@ function handleChoose(i, item) {
     </div>
 
     <CommonList
-      class="flex-1" :to="catalog" :d="params" :fields="fields" :show-check="true"
-      @checkValue="initCheckData"
+      class="flex-1" ref="spzzListRef" :to="catalog" :d="params" :fields="fields" :show-check="true"
+      @checkValue="initCheckData" @edit="handleEdit" @download="handleDownload" @enter="handleEnter" 
     />
     <el-dialog v-model="moreVisible" title="查看更多">
       <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
@@ -191,13 +228,13 @@ function handleChoose(i, item) {
       </el-tabs>
       <div class="flex flex-wrap">
         <div
-          v-for="(item, i) in activeName === 1 ? twoData : threeData"
+          v-for="(item, i) in activeName === '1' ? twoData : threeData"
           :key="i"
           class="shadow_gray my-10px mr-20px h-154px w-183px cursor-pointer rounded-10px bg-white px-30px py-15px text-center"
           :class="axi_id === item.axi_id ? 'shadow_green' : 'shadow_gray'" @click="handleChoose(i, item)"
         >
-          <div class="m-auto h-86px w-86px flex items-center justify-center overflow-hidden rounded-50px bg-hex-f9f9f9">
-            <img :src="item.axi_img" alt="">
+          <div class="m-auto h-86px w-86px flex items-center justify-center overflow-hidden rounded-50px bg-hex-f9f9f9 bg-cover bg-top" :style="{ backgroundImage: `url(${item.axi_img})` }">
+            <!-- <img :src="item.axi_img" alt=""> -->
           </div>
           <div class="mt-10px text-sm">
             {{ item.axi_name }}
@@ -247,6 +284,9 @@ function handleChoose(i, item) {
     color: #000 !important;
     font-size: 16px;
   }
+  .common_list{
+    overflow: visible;
+  }
 }
 
 .shadow_gray {