Browse Source

fix:修复附件不显示问题,并且优化附件预览

coder 2 years ago
parent
commit
727fcd6fe1

+ 27 - 23
src/pages/techerFlowManager/teacherPerformanceAssessment/detailMyApplyFor/index.vue

@@ -1,6 +1,6 @@
 <script setup>
 import { closeToast, showLoadingToast } from 'vant'
-import { download2 } from '~/request/request'
+import { openFile } from '../../../../utils/index'
 
 const { currentRoute } = useRouter()
 const route = currentRoute.value
@@ -22,15 +22,21 @@ request({
   closeToast()
   detailData.value = res.data.one_info
 
-  if (detailData.value.jjmkl_jjmkl_id_1 == 1)
+  if (detailData.value.jjmkl_jjmkl_id_1 == 1) {
     jjtj.value = JSON.parse(res.data.one_info.jjmkl_jjtj_json)
-
-  else if (detailData.value.jjmkl_jjmkl_id_1 == 10)
-
+    for (let item of jjtj.value) {
+      item.file = JSON.parse(item.file)
+    }
+  }
+  else if (detailData.value.jjmkl_jjmkl_id_1 == 10) {
     zbtj.value = JSON.parse(res.data.one_info.jjmkl_zbdffj_json)
+    for (let item of zbtj.value) {
+      item.file = JSON.parse(item.file)
+    }
+  }
 })
-function getFile(url, fileName) {
-  download2(url, null, fileName.split('.')[0])
+function getFile(url) {
+  openFile(url)
 }
 </script>
 
@@ -102,8 +108,9 @@ function getFile(url, fileName) {
                   附件
                 </td>
                 <td>
-                  <span style="color: #1A7AFD;" @click="getFile(item.file.url, item.file.name)">{{ item.file.name
-                  }}</span>
+                  <div v-for="file in item.file" style="color: #1A7AFD;" @click="getFile(file.url)">{{
+                    file.name
+                  }}</div>
                 </td>
               </tr>
             </tbody>
@@ -113,7 +120,7 @@ function getFile(url, fileName) {
               </td>
               <td>
                 <div v-for="f in detailData.jjmkl_sqb_file.split(';')" :key="f">
-                  <span style="color: #1A7AFD;" @click="getFile(f.split('|')[0], f.split('|')[1])">
+                  <span style="color: #1A7AFD;" @click="getFile(f.split('|')[0])">
                     {{ f.split('|')[1]
                     }}
                   </span>
@@ -126,7 +133,7 @@ function getFile(url, fileName) {
               </td>
               <td>
                 <div v-for="f in detailData.jjmkl_lhb_file.split(';')" :key="f">
-                  <span style="color: #1A7AFD;" @click="getFile(f.split('|')[0], f.split('|')[1])">
+                  <span style="color: #1A7AFD;" @click="getFile(f.split('|')[0])">
                     {{ f.split('|')[1]
                     }}
                   </span>
@@ -182,10 +189,9 @@ function getFile(url, fileName) {
                   附件
                 </td>
                 <td>
-                  <span style="color: #1A7AFD;" @click="getFile(item.file.url, item.file.name)">
-                    {{ item.file.name
-                    }}
-                  </span>
+                  <div v-for="file in item.file" style="color: #1A7AFD;" @click="getFile(file.url)">{{
+                    file.name
+                  }}</div>
                 </td>
               </tr>
             </tbody>
@@ -207,10 +213,9 @@ function getFile(url, fileName) {
             <td>
               <div>
                 <span
-                  :class="{ 'text-red': detailData.jjmkl_xdshqk_option_n === '不合格' || detailData.jjmkl_xdshqk_option_n === '不符合' }"
-                >{{
-                  detailData.jjmkl_xdshqk_option_n
-                }}</span>
+                  :class="{ 'text-red': detailData.jjmkl_xdshqk_option_n === '不合格' || detailData.jjmkl_xdshqk_option_n === '不符合' }">{{
+                    detailData.jjmkl_xdshqk_option_n
+                  }}</span>
                 <p v-if="detailData.jjmkl_xdshqk_option_n === '不合格' || detailData.jjmkl_xdshqk_option_n === '不符合'">
                   {{ detailData.jjmkl_xdshqk_clyj }}
                 </p>
@@ -224,10 +229,9 @@ function getFile(url, fileName) {
             <td>
               <div>
                 <span
-                  :class="{ 'text-red': detailData.jjmkl_jdshqk_option_n === '不合格' || detailData.jjmkl_jdshqk_option_n === '不符合' }"
-                >{{
-                  detailData.jjmkl_jdshqk_option_n
-                }}</span>
+                  :class="{ 'text-red': detailData.jjmkl_jdshqk_option_n === '不合格' || detailData.jjmkl_jdshqk_option_n === '不符合' }">{{
+                    detailData.jjmkl_jdshqk_option_n
+                  }}</span>
                 <p v-if="detailData.jjmkl_jdshqk_option_n === '不合格' || detailData.jjmkl_jdshqk_option_n === '不符合'">
                   {{ detailData.jjmkl_jdshqk_clyj }}
                 </p>

+ 31 - 31
src/pages/techerFlowManager/teacherPerformanceAssessment/detailMyAuditFor/index.vue

@@ -1,6 +1,6 @@
 <script setup>
 import { closeToast, showLoadingToast, showToast } from 'vant'
-import { download2 } from '~/request/request'
+import { openFile } from '../../../../utils/index'
 import { userInfo } from '~/store/user'
 
 const { uo_type, user_id } = userInfo
@@ -29,18 +29,24 @@ function getData() {
     closeToast()
     detailData.value = res.data.one_info
 
-    if (detailData.value.jjmkl_jjmkl_id_1 == 1)
+    if (detailData.value.jjmkl_jjmkl_id_1 == 1) {
       jjtj.value = JSON.parse(res.data.one_info.jjmkl_jjtj_json)
-
-    else if (detailData.value.jjmkl_jjmkl_id_1 == 10)
-
+      for (let item of jjtj.value) {
+        item.file = JSON.parse(item.file)
+      }
+    }
+    else if (detailData.value.jjmkl_jjmkl_id_1 == 10) {
       zbtj.value = JSON.parse(res.data.one_info.jjmkl_zbdffj_json)
+      for (let item of zbtj.value) {
+        item.file = JSON.parse(item.file)
+      }
+    }
   })
 }
 getData()
 
-function getFile(url, fileName) {
-  download2(url, null, fileName.split('.')[0])
+function getFile(url) {
+  openFile(url)
 }
 
 const auditOptions10 = [{
@@ -211,8 +217,9 @@ function dialogSubmit() {
                   附件
                 </td>
                 <td>
-                  <span style="color: #1A7AFD;" @click="getFile(item.file.url, item.file.name)">{{ item.file.name
-                  }}</span>
+                  <div v-for="file in item.file" style="color: #1A7AFD;" @click="getFile(file.url)">{{
+                    file.name
+                  }}</div>
                 </td>
               </tr>
             </tbody>
@@ -222,7 +229,7 @@ function dialogSubmit() {
               </td>
               <td>
                 <div v-for="f in detailData.jjmkl_sqb_file.split(';')" :key="f">
-                  <span style="color: #1A7AFD;" @click="getFile(f.split('|')[0], f.split('|')[1])">
+                  <span style="color: #1A7AFD;" @click="getFile(f.split('|')[0])">
                     {{ f.split('|')[1]
                     }}
                   </span>
@@ -235,7 +242,7 @@ function dialogSubmit() {
               </td>
               <td>
                 <div v-for="f in detailData.jjmkl_lhb_file.split(';')" :key="f">
-                  <span style="color: #1A7AFD;" @click="getFile(f.split('|')[0], f.split('|')[1])">
+                  <span style="color: #1A7AFD;" @click="getFile(f.split('|')[0])">
                     {{ f.split('|')[1]
                     }}
                   </span>
@@ -291,10 +298,9 @@ function dialogSubmit() {
                   附件
                 </td>
                 <td>
-                  <span style="color: #1A7AFD;" @click="getFile(item.file.url, item.file.name)">
-                    {{ item.file.name
-                    }}
-                  </span>
+                  <div v-for="file in item.file" style="color: #1A7AFD;" @click="getFile(file.url)">{{
+                    file.name
+                  }}</div>
                 </td>
               </tr>
             </tbody>
@@ -316,10 +322,9 @@ function dialogSubmit() {
             <td>
               <div v-if="detailData.jjmkl_xdshqk !== '2'">
                 <span
-                  :class="{ 'text-red': detailData.jjmkl_xdshqk_option_n === '不合格' || detailData.jjmkl_xdshqk_option_n === '不符合' }"
-                >{{
-                  detailData.jjmkl_xdshqk_option_n
-                }}</span>
+                  :class="{ 'text-red': detailData.jjmkl_xdshqk_option_n === '不合格' || detailData.jjmkl_xdshqk_option_n === '不符合' }">{{
+                    detailData.jjmkl_xdshqk_option_n
+                  }}</span>
                 <p v-if="detailData.jjmkl_xdshqk_option_n === '不合格' || detailData.jjmkl_xdshqk_option_n === '不符合'">
                   {{ detailData.jjmkl_xdshqk_clyj }}
                 </p>
@@ -338,10 +343,9 @@ function dialogSubmit() {
             <td>
               <div v-if="detailData.jjmkl_jdshqk !== '2'">
                 <span
-                  :class="{ 'text-red': detailData.jjmkl_jdshqk_option_n === '不合格' || detailData.jjmkl_jdshqk_option_n === '不符合' }"
-                >{{
-                  detailData.jjmkl_jdshqk_option_n
-                }}</span>
+                  :class="{ 'text-red': detailData.jjmkl_jdshqk_option_n === '不合格' || detailData.jjmkl_jdshqk_option_n === '不符合' }">{{
+                    detailData.jjmkl_jdshqk_option_n
+                  }}</span>
                 <p v-if="detailData.jjmkl_jdshqk_option_n === '不合格' || detailData.jjmkl_jdshqk_option_n === '不符合'">
                   {{ detailData.jjmkl_jdshqk_clyj }}
                 </p>
@@ -356,10 +360,8 @@ function dialogSubmit() {
         </table>
       </div>
     </div>
-    <van-dialog
-      v-model:show="auditDialogShow" title="审核" confirm-button-text="提交" show-cancel-button
-      :before-close="beforeCloseDialog"
-    >
+    <van-dialog v-model:show="auditDialogShow" title="审核" confirm-button-text="提交" show-cancel-button
+      :before-close="beforeCloseDialog">
       <div class="dialogDiv">
         <van-radio-group v-model="auditchecked">
           <van-cell-group inset>
@@ -370,10 +372,8 @@ function dialogSubmit() {
             </van-cell>
           </van-cell-group>
         </van-radio-group>
-        <van-field
-          v-if="auditchecked === '5' || auditchecked === '7'" v-model="jjmkl_jdshqk_clyj" rows="3" autosize
-          type="textarea" placeholder="填写意见"
-        />
+        <van-field v-if="auditchecked === '5' || auditchecked === '7'" v-model="jjmkl_jdshqk_clyj" rows="3" autosize
+          type="textarea" placeholder="填写意见" />
       </div>
     </van-dialog>
   </div>

+ 26 - 0
src/utils/index.js

@@ -0,0 +1,26 @@
+import * as dd from 'dingtalk-jsapi'
+
+function getFullUrl(url) {
+  if (!url)
+    return ''
+  if (url.includes('60.188.226.44:8090')) {
+    url = url.replace('60.188.226.44:8090', 'jnjymf.bozedu.net')
+  }
+  return url.startsWith('http') ? url : `http://jnjymf.bozedu.net/${url}`
+}
+const previewUrl = 'https://view.officeapps.live.com/op/view.aspx?src='
+export function openFile(url) {
+  let showUrl = getFullUrl(url)
+  let suffix = showUrl.substr(showUrl.lastIndexOf('.') + 1).toLowerCase()
+
+  if (suffix == 'mp3' || suffix == 'mp4' || suffix == 'pdf' || suffix == 'jpg' || suffix == 'jpeg' || suffix == 'png') {
+    dd.biz.util.openLink({
+      url: showUrl,//要打开链接的地址
+    })
+  }
+  else {
+    dd.biz.util.openLink({
+      url: previewUrl + showUrl,//要打开链接的地址
+    })
+  }
+}