chao há 1 ano atrás
pai
commit
06ca57e6f1

+ 1 - 1
dist/assets/Details-Rl6UYFG3.js → dist/assets/Details-dGXpN52a.js

@@ -1 +1 @@
-import{u as m,r as i,o as p,a as l,b as a,c as b,d as t,w as s,F as f,H as h,e as n,t as k,f as v,g,h as r,i as y,C,j as x,P as B,k as N}from"./index-tejBei3i.js";const V={class:"iframDiv"},P={__name:"Details",setup(D){const{query:u,params:o}=m();console.log(u,o);const e=i("");return p(()=>{e.value=o.title}),(w,F)=>{const c=l("el-breadcrumb-item"),_=l("el-breadcrumb"),d=l("el-page-header");return a(),b(f,null,[t(h),t(d,null,{breadcrumb:s(()=>[t(_,{separator:"/"},{default:s(()=>[t(c,{to:{path:"/"}},{default:s(()=>[n(" 首页 ")]),_:1}),t(c,null,{default:s(()=>[n(k(v(o).title),1)]),_:1})]),_:1})]),default:s(()=>[g("div",V,[e.value=="课程列表"?(a(),r(C,{key:0})):e.value=="资源中心"?(a(),r(x,{key:1})):e.value=="实践中心"?(a(),r(B,{key:2})):e.value=="其他课程资源"?(a(),r(N,{key:3})):y("",!0)])]),_:1})],64)}}};export{P as default};
+import{u as m,r as i,o as p,a as l,b as a,c as b,d as t,w as s,F as f,H as h,e as n,t as k,f as v,g,h as r,i as y,C,j as x,P as B,k as N}from"./index-1aqL-cxn.js";const V={class:"iframDiv"},P={__name:"Details",setup(D){const{query:u,params:o}=m();console.log(u,o);const e=i("");return p(()=>{e.value=o.title}),(w,F)=>{const c=l("el-breadcrumb-item"),_=l("el-breadcrumb"),d=l("el-page-header");return a(),b(f,null,[t(h),t(d,null,{breadcrumb:s(()=>[t(_,{separator:"/"},{default:s(()=>[t(c,{to:{path:"/"}},{default:s(()=>[n(" 首页 ")]),_:1}),t(c,null,{default:s(()=>[n(k(v(o).title),1)]),_:1})]),_:1})]),default:s(()=>[g("div",V,[e.value=="课程列表"?(a(),r(C,{key:0})):e.value=="资源中心"?(a(),r(x,{key:1})):e.value=="实践中心"?(a(),r(B,{key:2})):e.value=="其他课程资源"?(a(),r(N,{key:3})):y("",!0)])]),_:1})],64)}}};export{P as default};

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/admin-fAcpfoNX.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/index-0vPNiJiP.css


Diff do ficheiro suprimidas por serem muito extensas
+ 4 - 0
dist/assets/index-1aqL-cxn.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 4
dist/assets/index-tejBei3i.js


+ 2 - 2
dist/index.html

@@ -8,8 +8,8 @@
     <script>
       document.domain = "cocorobo.cn"
     </script>
-    <script type="module" crossorigin src="./assets/index-tejBei3i.js"></script>
-    <link rel="stylesheet" crossorigin href="./assets/index-laBJNqua.css">
+    <script type="module" crossorigin src="./assets/index-1aqL-cxn.js"></script>
+    <link rel="stylesheet" crossorigin href="./assets/index-0vPNiJiP.css">
   </head>
   <body>
     <div id="app"></div>

+ 93 - 0
package-lock.json

@@ -10,6 +10,8 @@
       "dependencies": {
         "axios": "^1.6.7",
         "element-plus": "^2.5.3",
+        "file-saver": "^2.0.5",
+        "jszip": "^3.10.1",
         "pinia": "^2.1.7",
         "qs": "^6.11.2",
         "sass": "^1.70.0",
@@ -1262,6 +1264,11 @@
         "proto-list": "~1.2.1"
       }
     },
+    "node_modules/core-util-is": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+    },
     "node_modules/cross-spawn": {
       "version": "7.0.3",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -1539,6 +1546,11 @@
         "url": "https://github.com/sindresorhus/execa?sponsor=1"
       }
     },
+    "node_modules/file-saver": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
+      "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+    },
     "node_modules/fill-range": {
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -1805,11 +1817,21 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+    },
     "node_modules/immutable": {
       "version": "4.3.5",
       "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
       "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw=="
     },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
     "node_modules/ini": {
       "version": "1.3.8",
       "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
@@ -1881,6 +1903,11 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+    },
     "node_modules/isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -1971,6 +1998,25 @@
       "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==",
       "dev": true
     },
+    "node_modules/jszip": {
+      "version": "3.10.1",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+      "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+      "dependencies": {
+        "lie": "~3.3.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.3.6",
+        "setimmediate": "^1.0.5"
+      }
+    },
+    "node_modules/lie": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+      "dependencies": {
+        "immediate": "~3.0.5"
+      }
+    },
     "node_modules/local-pkg": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
@@ -2244,6 +2290,11 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/pako": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+    },
     "node_modules/parse5": {
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
@@ -2414,6 +2465,11 @@
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+    },
     "node_modules/proto-list": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
@@ -2466,6 +2522,20 @@
       "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
       "dev": true
     },
+    "node_modules/readable-stream": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
     "node_modules/readdirp": {
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -2521,6 +2591,11 @@
       "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==",
       "dev": true
     },
+    "node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
     "node_modules/safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -2609,6 +2684,11 @@
         "node": ">= 0.4"
       }
     },
+    "node_modules/setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+    },
     "node_modules/shebang-command": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -2685,6 +2765,14 @@
       "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
       "dev": true
     },
+    "node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
     "node_modules/string-width": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
@@ -2907,6 +2995,11 @@
         "requires-port": "^1.0.0"
       }
     },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+    },
     "node_modules/vite": {
       "version": "5.0.12",
       "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz",

+ 2 - 0
package.json

@@ -12,6 +12,8 @@
   "dependencies": {
     "axios": "^1.6.7",
     "element-plus": "^2.5.3",
+    "file-saver": "^2.0.5",
+    "jszip": "^3.10.1",
     "pinia": "^2.1.7",
     "qs": "^6.11.2",
     "sass": "^1.70.0",

+ 1 - 1
src/App.vue

@@ -11,7 +11,7 @@ const route = useRoute()
 const store = userInfoStore()
 const CurrentRole = userCurrentRole()
 const name = ref('')
-const isShow = ref(false)
+const isShow = ref(true)
 const setTimeState = ref(null)
 
 onMounted(() => {

+ 111 - 71
src/components/main/courseSelect.vue

@@ -20,24 +20,30 @@
               <div class="div_title">
                 <span>下册</span>
                 {{ item.title }}
-                <el-popover v-if="isupdateCourse" placement="bottom" :width="200" trigger="click" show-after="1000"
-                  @hide="checked1 = false">
+                <!-- v-if="isupdateCourse" -->
+                <el-popover placement="bottom" :width="210" trigger="click" show-after="500" @hide="checked1 = false">
                   <template #reference>
                     <img :src="DownloadImg" alt="" @click="getDate(item.id)">
                   </template>
                   <div>
                     <div>
                       <span>资源列表({{ item.dataList.length }})</span>
-                      <el-checkbox v-model="checked1" label="全选" size="large" @click="checkedAll(item.id)" />
+                      <el-checkbox style="position: relative;top: 0;left: 35px;height: 30px;" v-model="checked1"
+                        label="全选" size="large" @click="checkedAll(item.id)" />
                     </div>
                     <div v-if="item.dataList.length > 0">
-                      <div v-for="dataitem in item.dataList" :key="dataitem.id">
-                        <img :src="dataitem.url" alt="">
-                        <span>{{ dataitem.name }}</span>
-                        <img :src="DownloadImg" alt="" @click="download(dataitem.url)">
-                        <el-checkbox v-if="checked1" v-model="dataitem.check" label="全选" size="large" />
-                        <el-button v-if="checked1" @click="DownloadProcessing()">批量下载</el-button>
+                      <div class="div_hover" v-for="dataitem in item.dataList" :key="dataitem.id">
+                        <span style="display: inline-block;width: 130px;" :title="dataitem.name">{{
+                          dataitem.name.length > 10 ?
+                            dataitem.name.substring(0, 8) + '...' : dataitem.name }}</span>
+                        <a :href="dataitem.url" :download="dataitem.name" v-if="!checked1" class="el_popover_a"
+                          style="position: relative;left: 20px;top: 5px;">
+                          <img :src="DownloadImg" alt="">
+                        </a>
+                        <el-checkbox v-if="checked1" v-model="dataitem.checked" label="全选" size="large" />
                       </div>
+                      <el-button style="margin-top: 10px;" v-if="checked1"
+                        @click="DownloadProcessing()">批量下载</el-button>
                     </div>
                     <div v-else>
                       暂无数据
@@ -78,6 +84,8 @@
 <script setup>
 import { ref, onMounted, watchEffect } from 'vue';
 import { userCurrentRole, userInfoStore } from '../../stores/counter'
+import JSZip from 'jszip';
+import { saveAs } from 'file-saver';
 import DownloadImg from '@/assets/img/download.png'
 import PDFImg from '@/assets/img/PDF.png'
 import WarningImg from '@/assets/icon/icon.png'
@@ -105,6 +113,7 @@ import ba1 from '@/assets/img/八下1.png'
 import ba2 from '@/assets/img/八下2.png'
 import ba3 from '@/assets/img/八下3.png'
 import ba4 from '@/assets/img/八下4.png'
+import axios from 'axios';
 
 const user = userInfoStore()
 const CurrentRole = userCurrentRole()
@@ -151,7 +160,8 @@ const courseData = {
         id: "8d4c47d5-ed72-11ee-b534-005056b86db5",
         title: "初识人工智能",
         url: san1,
-        dataList: []
+        dataList: [
+        ]
       }, {
         id: "8680f2e5-ed72-11ee-b534-005056b86db5",
         title: "机器的眼睛",
@@ -391,85 +401,97 @@ const updateReduction = () => {
 
 const getDate = async (id) => {
   // currentData
-  let dataList = []
-  let m = currentData.value
-
-  console.log(m, '11111111111111111')
-  await top.U.A.Request("https://pbl.cocorobo.cn/api/pbl/selectCourseDetailSz", [id], function (res) {
-    console.log(res)
-    if (res.value[0].length > 0 && res.value[0][0].chapters.length > 0) {
-      let datachapters = JSON.parse(res.value[0][0].chapters)
-      for (let i = 0; i < datachapters.length; i++) {
-        let data = datachapters[i]
-        for (let j = 0; j < data.chapterInfo.length; j++) {
-          let dataChapterInfo = data.chapterInfo[j]
-          for (let k = 0; k < dataChapterInfo.taskJson.length; k++) {
-            let DatahapterData = dataChapterInfo.taskJson[k]
-            for (let l = 0; l < DatahapterData.chapterData.length; l++) {
-              let obj = DatahapterData.chapterData[l]
-              // let obj = chapterDatas
-              obj.check = false
-              dataList.push(obj)
-            }
-          }
-        }
-      }
-    }
-  }, [], { "type": "POST", "withCredentials": true });
+  // let dataList = []
+  // let m = currentData.value
+  // await top.U.A.Request("https://pbl.cocorobo.cn/api/pbl/selectCourseDetailSz", [id], function (res) {
+  //   console.log(res)
+  //   if (res.value[0].length > 0 && res.value[0][0].chapters.length > 0) {
+  //     let datachapters = JSON.parse(res.value[0][0].chapters)
+  //     for (let i = 0; i < datachapters.length; i++) {
+  //       let data = datachapters[i]
+  //       for (let j = 0; j < data.chapterInfo.length; j++) {
+  //         let dataChapterInfo = data.chapterInfo[j]
+  //         for (let k = 0; k < dataChapterInfo.taskJson.length; k++) {
+  //           let DatahapterData = dataChapterInfo.taskJson[k]
+  //           for (let l = 0; l < DatahapterData.chapterData.length; l++) {
+  //             let obj = DatahapterData.chapterData[l]
+  //             // let obj = chapterDatas
+  //             obj.checked = false
+  //             dataList.push(obj)
+  //           }
+  //         }
+  //       }
+  //     }
+  //   }
+  // }, [], { "type": "POST", "withCredentials": true });
+
+  // await m.xia.map(x => {
+  //   if (x.id == id) {
+  //     x.dataList = dataList
+  //   }
+  //   return x
+  // })
+  // currentData.value = m
+  // console.log("currentData", currentData)
+}
 
-  await m.xia.map(x => {
+const checkedAll = (id) => {
+  let data = currentData.value
+  data.xia.map(x => {
     if (x.id == id) {
-      x.dataList = dataList
+      x.dataList.map(y => {
+        y.checked = !checked1.value
+      })
     }
     return x
   })
-  currentData.value = m
-  console.log("currentData", currentData)
-}
-
-const checkedAll = (id) => {
   console.log(id, checked1.value)
+  console.log(data)
+  currentData.value = data
   // checked1.value = true
 }
 
-const download = url => {
-  let proArr = []
-  if (Array.isArray(url)) {
-    proArr = [url]
-  } else {
-    proArr = url
-  }
-  Promise.all(proArr).then((resArr) => {
-    if (resArr?.length > 0) {
-      resArr?.forEach((item) => {
-        setBtnLoad(false)
-        // 可以使用循环生成iframe方法实现批量下载
-        const iframe = document.createElement("iframe");
-        iframe.style.display = "none"; // 不可见
-        iframe.style.height = "0"; // 高度为0
-        iframe.src = item; // 下载地址
-        document.body.appendChild(iframe); // 必须有,iframe挂在到dom树触发请求
-
-        //window.open下载文件下载多个文件时,window.open会中断循环。
-        // window.open(item?.data?.url, '_self');
-
-      })
-    }
-  })
+const download = (url, fileName) => {
+  const a = document.createElement('a');
+  a.style.display = 'none';
+  a.href = url;
+  a.download = fileName;
+  document.body.appendChild(a);
+  a.click();
+  document.body.removeChild(a);
 }
 
 const DownloadProcessing = async () => {
-  let data = currentData
+  let data = currentData.value
   let urls = []
   await data.xia.map(x => {
-    if (x.check) {
-      urls.push(x.url)
-    }
+    console.log(x)
+    x.dataList.length > 0 && x.dataList.map(m => {
+      if (m.checked) {
+        urls.push(m)
+      }
+      return m
+    })
     return x
   })
   console.log("urls", urls)
+  for (let i = 0; i < urls.length; i++) {
+    fetch(urls[i].url)
+      .then(response => response.blob())  // 获取文件数据流
+      .then(blob => {
+        const url = window.URL.createObjectURL(blob);  // 生成文件在浏览器中的链接
+        const a = document.createElement('a');
+        a.href = url;
+        a.download = urls[i].name;  // 文件名
+        a.style.display = 'none';
+        document.body.appendChild(a);
+        a.click();
+        document.body.removeChild(a);
+        window.URL.revokeObjectURL(url);  // 清除文件链接
+      })
+      .catch(console.error);
+  }
 }
-
 // 获取课程下载资料
 // top.U.A.Request("https://pbl.cocorobo.cn/api/pbl/selectCourseDetailSz", ['课程id'], function (res) {}, [], { "type": "POST", "withCredentials": true });
 
@@ -573,4 +595,22 @@ watchEffect(() => {
   color: rgba(0, 0, 0, 0.9);
   margin-left: 8px;
 }
+
+.div_hover {
+  // padding: 8px 0 10px;
+  height: 35px;
+  line-height: 35px;
+}
+
+.div_hover:hover {
+  background: rgb(240, 242, 245);
+}
+
+.el_popover_a {
+  display: none;
+}
+
+.div_hover:hover .el_popover_a {
+  display: inline-block;
+}
 </style>

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff