Ver Fonte

修复PC端四份报告查看地址

Developer há 1 mês atrás
pai
commit
0902631eb0

BIN
dist.zip


+ 16 - 0
src/utils/reportArtifactLinks.js

@@ -0,0 +1,16 @@
+export function reportArtifactUrl(item = {}, kind) {
+    if (kind === 'personal') return item.fileUrl || ''
+    if (kind === 'background') return item.backgroundReportUrl || ''
+    if (kind === 'professional') return item.professionalReportUrl || ''
+    if (kind === 'public') return item.publicReportUrl || item.fileUrl || ''
+    return ''
+}
+
+export function reportArtifactLinks(item = {}) {
+    return {
+        personal: reportArtifactUrl(item, 'personal'),
+        background: reportArtifactUrl(item, 'background'),
+        professional: reportArtifactUrl(item, 'professional'),
+        public: reportArtifactUrl(item, 'public')
+    }
+}

+ 18 - 9
src/views/modules/wechatUser/reportRecord.vue

@@ -16,13 +16,16 @@
             <el-table-column label="发送人" prop="xx"></el-table-column> -->
             <el-table-column label="团队名称" prop="teamName"></el-table-column>
             <el-table-column label="创建时间" prop="createDate"></el-table-column>
-            <el-table-column label="操作" width="200">
-                <template #default="scope">
+            <el-table-column label="操作" width="360">
+                <template #default="scope">
                     <template v-if="scope.row.state === '0' || scope.row.state === 0">
                         <span class="report-pending">生成中</span>
                     </template>
                     <template v-else-if="scope.row.state === '1' || scope.row.state === 1 || scope.row.state === '2' || scope.row.state === 2">
-                        <el-button link type="text" size="mini" @click="handleReview(scope.row)">查看报告</el-button>
+                        <el-button link type="text" size="mini" @click="handleReview(scope.row, 'personal')">个人报告</el-button>
+                        <el-button link type="text" size="mini" @click="handleReview(scope.row, 'background')">背景报告</el-button>
+                        <el-button link type="text" size="mini" @click="handleReview(scope.row, 'professional')">教练报告</el-button>
+                        <el-button link type="text" size="mini" @click="handleReview(scope.row, 'public')">团队报告</el-button>
                         <el-button link type="text" size="mini" @click="handleDownload(scope.row)">下载报告</el-button>
                     </template>
                     <span v-else class="report-failed">生成失败</span>
@@ -54,9 +57,10 @@
     });
     import { ref, getCurrentInstance, onMounted } from 'vue'
     const { proxy } = getCurrentInstance();
-    import { 
-        getUserReportList
-    } from '@/api/agent/indexTwo.js'
+    import { 
+        getUserReportList
+    } from '@/api/agent/indexTwo.js'
+    import { reportArtifactUrl } from '@/utils/reportArtifactLinks.js'
     
     const queryParams = ref({
         page: 1,
@@ -104,9 +108,14 @@
         getList();
     })
 
-    const handleReview = (row) => {
-        proxy.$emit('handleReview', row);
-    }
+    const handleReview = (row, kind) => {
+        const url = reportArtifactUrl(row, kind)
+        if(!url) {
+            proxy.$message.error('该报告尚未生成,请生成后再查看!')
+            return
+        }
+        window.open(url, '_blank', 'noopener,noreferrer')
+    }
 
     const handleDownload = async (row) => {
         if(!row.fileUrl) {

+ 21 - 0
tests/unit/reportArtifactLinks.spec.js

@@ -0,0 +1,21 @@
+import { reportArtifactUrl, reportArtifactLinks } from '../../src/utils/reportArtifactLinks.js'
+
+test('maps PC report buttons to the four mini-program artifact URLs', () => {
+    const item = {
+        fileUrl: 'personal.pdf',
+        backgroundReportUrl: 'background.docx',
+        professionalReportUrl: 'professional.docx',
+        publicReportUrl: 'public.pdf'
+    }
+
+    expect(reportArtifactUrl(item, 'personal')).toBe('personal.pdf')
+    expect(reportArtifactUrl(item, 'background')).toBe('background.docx')
+    expect(reportArtifactUrl(item, 'professional')).toBe('professional.docx')
+    expect(reportArtifactUrl(item, 'public')).toBe('public.pdf')
+    expect(reportArtifactLinks(item)).toEqual({
+        personal: 'personal.pdf',
+        background: 'background.docx',
+        professional: 'professional.docx',
+        public: 'public.pdf'
+    })
+})

+ 16 - 0
tests/unit/reportRecordArtifacts.spec.js

@@ -0,0 +1,16 @@
+const fs = require('fs')
+const path = require('path')
+
+const pagePath = path.resolve(__dirname, '../../src/views/modules/wechatUser/reportRecord.vue')
+const source = fs.readFileSync(pagePath, 'utf8')
+
+test('report records expose the four mini-program report artifacts', () => {
+  expect(source).toContain('个人报告')
+  expect(source).toContain('背景报告')
+  expect(source).toContain('教练报告')
+  expect(source).toContain('团队报告')
+  expect(source).toContain("@click=\"handleReview(scope.row, 'personal')\"")
+  expect(source).toContain("@click=\"handleReview(scope.row, 'background')\"")
+  expect(source).toContain("@click=\"handleReview(scope.row, 'professional')\"")
+  expect(source).toContain("@click=\"handleReview(scope.row, 'public')\"")
+})