From 93f30ecb74eea1c7ed460d45bc01df2ef14d69a3 Mon Sep 17 00:00:00 2001
From: 阳洁 <2077506045@qq.com>
Date: 星期三, 10 五月 2023 14:53:57 +0800
Subject: [PATCH] Merge branch 'v13-20230413'

---
 src/views/report/reportView.vue            |   46 +
 vue.config.js                              |    1 
 package-lock.json                          |  160 ++++-
 src/views/exam/components/QuestionEdit.vue |    2 
 src/views/report/reportH5.vue              |  391 +++++++++++++
 src/assets/report/page4.png                |    0 
 src/router.js                              |   54 +
 src/lang/th.js                             |    3 
 src/views/exam/paper/guide.vue             |    2 
 src/views/demography/index.vue             |   33 +
 src/views/demography/login.vue             |   12 
 src/assets/report/page5.png                |    0 
 src/lang/zh.js                             |    5 
 src/assets/report/page1.png                |    0 
 src/assets/report/page1.jpg                |    0 
 src/views/report/reportH5Bak.vue           |  298 ++++++++++
 src/assets/report/page2.png                |    0 
 /dev/null                                  |    0 
 src/views/exam/paper/finish.vue            |   37 +
 src/lang/en.js                             |    3 
 src/views/exam/paper/career_interests.vue  |  570 ++++++++++++++++++++
 src/main.js                                |    4 
 package.json                               |    2 
 src/assets/report/page3.png                |    0 
 src/views/exam/paper/personality.vue       |    7 
 src/assets/report/page4-1.png              |    0 
 src/api/examPaper.js                       |    4 
 27 files changed, 1,582 insertions(+), 52 deletions(-)

diff --git a/dist.zip b/dist.zip
deleted file mode 100644
index e1c10d7..0000000
--- a/dist.zip
+++ /dev/null
Binary files differ
diff --git a/package-lock.json b/package-lock.json
index ea0fc38..5043d83 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2514,8 +2514,8 @@
     },
     "async-validator": {
       "version": "1.8.5",
-      "resolved": "http://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz",
-      "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
+      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
       "requires": {
         "babel-runtime": "6.x"
       }
@@ -2717,8 +2717,8 @@
     },
     "babel-helper-vue-jsx-merge-props": {
       "version": "2.0.3",
-      "resolved": "http://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
-      "integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY="
+      "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+      "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
     },
     "babel-loader": {
       "version": "8.0.6",
@@ -3568,7 +3568,8 @@
       "version": "4.6.0",
       "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
       "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "coa": {
       "version": "2.0.2",
@@ -4364,8 +4365,7 @@
     "de-indent": {
       "version": "1.0.2",
       "resolved": "http://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz",
-      "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
-      "dev": true
+      "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0="
     },
     "debug": {
       "version": "4.1.1",
@@ -4718,6 +4718,38 @@
         "safer-buffer": "^2.1.0"
       }
     },
+    "echarts": {
+      "version": "5.4.2",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.2.tgz",
+      "integrity": "sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==",
+      "requires": {
+        "tslib": "2.3.0",
+        "zrender": "5.4.3"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+        }
+      }
+    },
+    "echarts": {
+      "version": "5.4.2",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.2.tgz",
+      "integrity": "sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==",
+      "requires": {
+        "tslib": "2.3.0",
+        "zrender": "5.4.3"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+        }
+      }
+    },
     "ee-first": {
       "version": "1.1.1",
       "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
@@ -4737,9 +4769,9 @@
       "dev": true
     },
     "element-ui": {
-      "version": "2.10.1",
-      "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.10.1.tgz?cache=0&sync_timestamp=1562053824530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-ui%2Fdownload%2Felement-ui-2.10.1.tgz",
-      "integrity": "sha1-EBEBblDnb12ub7+chuU7blP8ues=",
+      "version": "2.15.13",
+      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.13.tgz",
+      "integrity": "sha512-LJoatEYX6WV74FqXBss8Xfho9fh9rjDSzrDrTyREdGb1h1R3uRvmLh5jqp2JU137aj4/BgqA3K06RQpQBX33Bg==",
       "requires": {
         "async-validator": "~1.8.1",
         "babel-helper-vue-jsx-merge-props": "^2.0.0",
@@ -6115,7 +6147,8 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -6136,12 +6169,14 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -6156,17 +6191,20 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -6283,7 +6321,8 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "ini": {
           "version": "1.3.5",
@@ -6295,6 +6334,7 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -6309,6 +6349,7 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -6316,12 +6357,14 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "minipass": {
           "version": "2.3.5",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.2",
             "yallist": "^3.0.0"
@@ -6340,6 +6383,7 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -6420,7 +6464,8 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -6432,6 +6477,7 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -6517,7 +6563,8 @@
         "safe-buffer": {
           "version": "5.1.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -6553,6 +6600,7 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -6572,6 +6620,7 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -6615,12 +6664,14 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "yallist": {
           "version": "3.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },
@@ -6971,8 +7022,7 @@
     "he": {
       "version": "1.2.0",
       "resolved": "http://registry.npm.taobao.org/he/download/he-1.2.0.tgz",
-      "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
-      "dev": true
+      "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8="
     },
     "hex-color-regex": {
       "version": "1.1.0",
@@ -9001,8 +9051,8 @@
     },
     "normalize-wheel": {
       "version": "1.0.1",
-      "resolved": "http://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz",
-      "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
+      "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+      "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
     },
     "normalize.css": {
       "version": "8.0.1",
@@ -9521,6 +9571,11 @@
         "safe-buffer": "^5.0.1",
         "sha.js": "^2.4.8"
       }
+    },
+    "pdfh5": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmmirror.com/pdfh5/-/pdfh5-1.4.2.tgz",
+      "integrity": "sha512-1BL8HIx/EEZowRPBgas7/WokbGEv1gxKNRmmHSimG113178mKxIBH4pxWBc0tj6d25Sy+EwnlQwv9cUUmQa42w=="
     },
     "performance-now": {
       "version": "2.1.0",
@@ -10872,8 +10927,8 @@
     },
     "resize-observer-polyfill": {
       "version": "1.5.1",
-      "resolved": "http://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz",
-      "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ="
+      "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
     },
     "resolve": {
       "version": "1.10.0",
@@ -10989,7 +11044,8 @@
       "version": "4.0.8",
       "resolved": "http://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz",
       "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "rx-lite-aggregates": {
       "version": "4.0.8",
@@ -11755,6 +11811,11 @@
       "requires": {
         "is-plain-obj": "^1.0.0"
       }
+    },
+    "sortablejs": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz",
+      "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
     },
     "source-list-map": {
       "version": "2.0.1",
@@ -12569,8 +12630,8 @@
     },
     "throttle-debounce": {
       "version": "1.1.0",
-      "resolved": "http://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz",
-      "integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0="
+      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
     },
     "through": {
       "version": "2.3.8",
@@ -13294,7 +13355,6 @@
       "version": "2.6.10",
       "resolved": "http://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.10.tgz",
       "integrity": "sha1-MjtPNJXwT6o1AzN6gvXWUHeZycw=",
-      "dev": true,
       "requires": {
         "de-indent": "^1.0.2",
         "he": "^1.1.0"
@@ -13305,6 +13365,14 @@
       "resolved": "http://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz",
       "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
       "dev": true
+    },
+    "vuedraggable": {
+      "version": "2.24.3",
+      "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz",
+      "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
+      "requires": {
+        "sortablejs": "1.10.2"
+      }
     },
     "vuex": {
       "version": "3.1.0",
@@ -13952,6 +14020,36 @@
           "dev": true
         }
       }
+    },
+    "zrender": {
+      "version": "5.4.3",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.3.tgz",
+      "integrity": "sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==",
+      "requires": {
+        "tslib": "2.3.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+        }
+      }
+    },
+    "zrender": {
+      "version": "5.4.3",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.3.tgz",
+      "integrity": "sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==",
+      "requires": {
+        "tslib": "2.3.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+        }
+      }
     }
   }
 }
diff --git a/package.json b/package.json
index a2d92dd..66fea60 100644
--- a/package.json
+++ b/package.json
@@ -17,11 +17,13 @@
   "dependencies": {
     "axios": "^0.19.0",
     "core-js": "^2.6.9",
+    "echarts": "^5.4.2",
     "element-ui": "^2.14.1",
     "es6-promise": "^4.2.8",
     "js-cookie": "2.2.0",
     "normalize.css": "8.0.1",
     "nprogress": "0.2.0",
+    "pdfh5": "^1.4.2",
     "vue": "2.6.10",
     "vue-i18n": "^8.15.3",
     "vue-router": "^3.0.3",
diff --git a/src/api/examPaper.js b/src/api/examPaper.js
index defe3fc..426349d 100644
--- a/src/api/examPaper.js
+++ b/src/api/examPaper.js
@@ -8,5 +8,7 @@
   pageList: query => post('/api/student/exam/paper/pageList', query),
   updateTestMemberStatus: tokenId => postOts('/api/exam/exampaper/answer/updateTestMemberStatus/' + tokenId),
   selectTesterReport: tokenId => postOts('/api/exam/paper/testerReport/' + tokenId),
-  down: (fileName) => get('/api/exam/paper/download?fileName=' + fileName + '&delete=false')
+  down: (fileName) => get('/api/exam/paper/download?fileName=' + fileName + '&delete=false'),
+  selectTesterReportUrl: tokenId => postOts('/api/exam/paper/selectTesterReportUrl/' + tokenId),
+  selectTesterReportResult: tokenId => postOts('/api/exam/paper/selectTesterReportResult/' + tokenId)
 }
diff --git a/src/assets/report/page1.jpg b/src/assets/report/page1.jpg
new file mode 100644
index 0000000..07f99e9
--- /dev/null
+++ b/src/assets/report/page1.jpg
Binary files differ
diff --git a/src/assets/report/page1.png b/src/assets/report/page1.png
new file mode 100644
index 0000000..a459faf
--- /dev/null
+++ b/src/assets/report/page1.png
Binary files differ
diff --git a/src/assets/report/page2.png b/src/assets/report/page2.png
new file mode 100644
index 0000000..b8efcd3
--- /dev/null
+++ b/src/assets/report/page2.png
Binary files differ
diff --git a/src/assets/report/page3.png b/src/assets/report/page3.png
new file mode 100644
index 0000000..0f6f988
--- /dev/null
+++ b/src/assets/report/page3.png
Binary files differ
diff --git a/src/assets/report/page4-1.png b/src/assets/report/page4-1.png
new file mode 100644
index 0000000..5db5677
--- /dev/null
+++ b/src/assets/report/page4-1.png
Binary files differ
diff --git a/src/assets/report/page4.png b/src/assets/report/page4.png
new file mode 100644
index 0000000..68208dd
--- /dev/null
+++ b/src/assets/report/page4.png
Binary files differ
diff --git a/src/assets/report/page5.png b/src/assets/report/page5.png
new file mode 100644
index 0000000..6827271
--- /dev/null
+++ b/src/assets/report/page5.png
Binary files differ
diff --git a/src/lang/en.js b/src/lang/en.js
index de3ef89..c470454 100644
--- a/src/lang/en.js
+++ b/src/lang/en.js
@@ -2,6 +2,7 @@
   start: 'Continue testing',
   submission: 'submit',
   down: 'download report',
+  view: 'view report',
   lastQuestion: 'Last',
   nextQuestion: 'Next',
   recommendedTime: 'Recommended Time:',
@@ -51,7 +52,9 @@
   partRemailTime: 'Remaining Time:',
   finishIntelligenceInfo: 'You have completed the cognitive ability test questionnaire, the data has been successfully uploaded to the server, and has been saved. Thank you.',
   finishPersonalityInfo: 'You have completed the personality quetionnaire, and the data has been successfully uploaded to the server and saved. ',
+  finishCareerInterestsInfo: 'You have completed the Career Interests quetionnaire, and the data has been successfully uploaded to the server and saved. ',
   finishPersonalityDownInfo: 'You may click the red button below to download your test report.',
+  finishViewReportInfo: 'You can click on the red button below to view your result report.',
   langWelcomeThai: '喔⑧复喔權笖喔掂笗喔笝喔`副喔氞釜喔灌箞喙�喔о箛喔氞箘喔嬥涪喙屶釜喔赤斧喔`副喔氞笚喔赤箒喔氞笟喔椸笖喔腑喔氞競喔竾',
   langOptionThai: '喔佮福喔膏笓喔侧箑喔ム阜喔竵喔犩覆喔┼覆 喙佮弗喔班竸喔ム复喔� 鈥溹笖喔赤箑喔權复喔權竵喔侧福喔曕箞喔�.',
 	values_finishValuesInfo:'Thank you! Your responses have been submitted. You can close this page now.',
diff --git a/src/lang/th.js b/src/lang/th.js
index 1b3817e..304231d 100644
--- a/src/lang/th.js
+++ b/src/lang/th.js
@@ -2,6 +2,7 @@
   start: 'Continue testing',
   submission: 'submit',
   down: 'download report',
+  view: 'view report',
   lastQuestion: 'Last',
   nextQuestion: 'Next',
   recommendedTime: 'Recommended Time:',
@@ -51,7 +52,9 @@
   partRemailTime: 'Remaining Time:',
   finishIntelligenceInfo: 'You have completed the cognitive ability test questionnaire, the data has been successfully uploaded to the server, and has been saved. Thank you.',
   finishPersonalityInfo: 'You have completed the personality quetionnaire, and the data has been successfully uploaded to the server and saved. ',
+  finishCareerInterestsInfo: 'You have completed the Career Interests quetionnaire, and the data has been successfully uploaded to the server and saved. ',
   finishPersonalityDownInfo: 'You may click the red button below to download your test report.',
+  finishViewReportInfo: 'You can click on the red button below to view your result report.',
   langWelcomeThai: '喔⑧复喔權笖喔掂笗喔笝喔`副喔氞釜喔灌箞喙�喔о箛喔氞箘喔嬥涪喙屶釜喔赤斧喔`副喔氞笚喔赤箒喔氞笟喔椸笖喔腑喔氞競喔竾',
   langOptionThai: '喔佮福喔膏笓喔侧箑喔ム阜喔竵喔犩覆喔┼覆 喙佮弗喔班竸喔ム复喔� 鈥溹笖喔赤箑喔權复喔權竵喔侧福喔曕箞喔�.'
 }
diff --git a/src/lang/zh.js b/src/lang/zh.js
index cc1d7ef..4d83359 100644
--- a/src/lang/zh.js
+++ b/src/lang/zh.js
@@ -2,6 +2,7 @@
   start: '缁х画娴嬭瘯',
   submission: ' 鎻愪氦',
   down: '涓嬭浇鎶ュ憡',
+  view: '鏌ョ湅鎶ュ憡',
   lastQuestion: '鍥炲埌涓婁竴棰�',
   nextQuestion: '涓嬩竴棰�',
   recommendedTime: '寤鸿鏃堕棿锛�',
@@ -51,7 +52,9 @@
   partRemailTime: '鍓╀綑鏃堕棿:',
   finishIntelligenceInfo: '鎮ㄥ凡缁忓畬鎴愪簡璁ょ煡鑳藉姏娴嬭瘯闂嵎锛屾暟鎹凡缁忔垚鍔熺殑涓婁紶鑷虫湇鍔″櫒锛屽苟宸茬粡淇濆瓨濂姐�傝阿璋€��',
   finishPersonalityInfo: '鎮ㄥ凡缁忓畬鎴愪簡浜烘牸娴嬭瘯闂嵎锛屾暟鎹凡缁忔垚鍔熺殑涓婁紶鑷虫湇鍔″櫒锛屽苟宸茬粡淇濆瓨濂姐��',
+  finishCareerInterestsInfo: '鎮ㄥ凡缁忓畬鎴愪簡鑱屼笟鍏磋叮闂嵎锛屾暟鎹凡缁忔垚鍔熺殑涓婁紶鑷虫湇鍔″櫒锛屽苟宸茬粡淇濆瓨濂姐��',
   finishPersonalityDownInfo: '鎮ㄥ彲浠ョ偣鍑讳笅闈㈢孩鑹叉寜閽笅杞芥偍鐨勭粨鏋滄姤鍛娿��',
+  finishViewReportInfo: '鎮ㄥ彲浠ョ偣鍑讳笅闈㈢孩鑹叉寜閽煡鐪嬫偍鐨勭粨鏋滄姤鍛娿��',
   langWelcomeThai: '喔⑧复喔權笖喔掂笗喔笝喔`副喔氞釜喔灌箞喙�喔о箛喔氞箘喔嬥涪喙屶釜喔赤斧喔`副喔氞笚喔赤箒喔氞笟喔椸笖喔腑喔氞競喔竾',
   langOptionThai: '喔佮福喔膏笓喔侧箑喔ム阜喔竵喔犩覆喔┼覆 喙佮弗喔班竸喔ム复喔� 鈥溹笖喔赤箑喔權复喔權竵喔侧福喔曕箞喔�.',
 	values_finishValuesInfo: '娴嬭瘯缁撴潫锛佹偍鐨勬墍鏈夐�夐」鏁版嵁宸茬粡涓婁紶鑷虫湇鍔″櫒锛屽苟宸蹭繚瀛樺ソ銆傛偍鍙互鍏抽棴娴忚鍣紝閫�鍑虹瓟棰樼晫闈€��',
@@ -92,5 +95,5 @@
 	values_pic_tmpArea:'鍥剧墖鏁寸悊鍖�',
 	values_pic_tmpArea_desc:'鐜板湪浣犲彲浠ュ浣犲垰鎵嶅鍥剧墖鍋氬嚭鐨勫垎绫昏繘琛屼慨鏀广�傚啀娆℃彁閱掍竴涓嬶紝姣忎釜绫诲埆鍐呴儴鍥剧墖浠庡乏鍒板彸鐨勯『搴忔槸鏃犲叧绱ц鐨勩�傚鏋滀綘鎯虫洿鏀规煇浜涘浘鐗囩殑绫诲埆锛屼綘闇�瑕佸厛鎶婅繖浜涘浘鐗囨嫋鎷芥斁鍏モ�滃浘鐗囨暣鐞嗗尯鈥濓紝鐒跺悗鍐嶆嫋鍏ユ柊鐨勭被鍒�傚鏋滀綘鎯虫洿鎹袱寮犲浘鐗囩殑绫诲埆锛岄偅涔堜綘闇�瑕佹妸杩欎袱寮犲浘鐗囬兘鎷栧叆鈥滃浘鐗囨暣鐞嗗尯鈥濄�傚湪浣犵‘瀹氳嚜宸遍�夊ソ浜嗕箣鍚庯紝璇风偣鍑烩�滄彁浜も�濄��',
 	values_nextStepTips_tips:'璇烽�氳繃灏嗗浘鍍忓垎涓轰節绫绘潵缁嗗寲鍥惧儚鐨勬帓搴忓拰鎺掑悕銆傝娉ㄦ剰锛屾偍鍙互鍦ㄦ瘡涓被鍒腑鏀剧疆鐨勫浘鍍忔暟閲忔槸鍥哄畾鐨勩��'
-	
+
 }
diff --git a/src/main.js b/src/main.js
index 2b0de04..bd8d2e8 100644
--- a/src/main.js
+++ b/src/main.js
@@ -17,6 +17,10 @@
 
 import 'babel-polyfill'
 import promise from 'es6-promise'
+
+import * as echarts from 'echarts'
+Vue.prototype.$echarts = echarts
+
 promise.polyfill()
 
 Vue.use(Element, {
diff --git a/src/router.js b/src/router.js
index 7d65a90..93c1dc1 100644
--- a/src/router.js
+++ b/src/router.js
@@ -119,18 +119,48 @@
         }
       ]
     },
-		{
-		  path: '/exam',
-		  component: Layout,
-		  children: [
-		    {
-		      path: 'values',
-		      component: () => import('@/views/exam/paper/values'),
-		      name: 'ExamPaperValues',
-		      meta: { title: 'values' }
-		    }
-		  ]
-		}
+    {
+      path: '/exam',
+      component: Layout,
+      children: [
+        {
+          path: 'values',
+          component: () => import('@/views/exam/paper/values'),
+          name: 'ExamPaperValues',
+          meta: { title: 'values' }
+        }
+      ]
+    },
+    {
+      path: '/exam',
+      component: Layout,
+      children: [
+        {
+          path: 'career_interests',
+          component: () => import('@/views/exam/paper/career_interests'),
+          name: 'ExamPaperCareerInterests',
+          meta: { title: 'career_interests' }
+        }
+      ]
+    },
+    {
+      path: '/report',
+      component: Layout,
+      children: [
+        {
+          path: 'view',
+          component: () => import('@/views/report/reportView'),
+          name: 'reportView',
+          meta: { title: 'PDF鎶ュ憡' }
+        }
+      ]
+    },
+    {
+      path: '/report/h5',
+      component: () => import('@/views/report/reportH5'),
+      name: 'reportH5',
+      meta: { title: 'H5鎶ュ憡' }
+    }
   ]
 })
 
diff --git a/src/views/demography/index.vue b/src/views/demography/index.vue
index 629a018..997ece0 100644
--- a/src/views/demography/index.vue
+++ b/src/views/demography/index.vue
@@ -56,20 +56,23 @@
         </div>
         <div v-if="item.types=='select' && item.isRequired =='1'">
           <el-form-item :label="item.paramName"
+                        :prop="'data.'+index+'.paramValue'"
                         :rules="[{ required: true, message: $t('required'),trigger: 'change'}]">
-            <el-select v-model="item.paramValue" :placeholder= "$t('pleaseSelect')">
+            <el-select v-model="item.paramValue" :placeholder= "$t('pleaseSelect')" :popper-append-to-body="false">
               <el-option
                 v-for="itemIter in item.dictData"
                 :key="itemIter.dictValue"
                 :label="itemIter.dictLabel"
-                :value="itemIter.dictValue">
+                :value="itemIter.dictValue"
+                :title="itemIter.dictLabel">
+                <span>{{ itemIter.dictLabel }}</span>
               </el-option>
             </el-select>
           </el-form-item>
         </div>
         <div v-if="item.types=='select' && item.isRequired !='1'">
           <el-form-item :label="item.paramName">
-            <el-select v-model="item.paramValue" :placeholder= "$t('pleaseSelect')">
+            <el-select v-model="item.paramValue" :placeholder= "$t('pleaseSelect')" :popper-append-to-body="false">
               <el-option
                 v-for="itemIter in item.dictData"
                 :key="itemIter.dictValue"
@@ -115,6 +118,7 @@
     submitDemography: function () {
       let _this = this
       _this.submitDisable = true
+      console.log( this.$refs.demographyMenber)
       this.$refs.demographyMenber.validate(vaild => {
         if (vaild) {
           _this.parasInfos = []
@@ -214,4 +218,27 @@
   .align-center {
     text-align: center
   }
+
+/*  .product-style /deep/ .el-select-dropdown__item {
+    width: 300px;
+    display: inline-block;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }*/
+
+  //鏍峰紡淇敼閮ㄥ垎
+  .el-select .el-select-dropdown .el-scrollbar .el-select-dropdown__wrap .el-scrollbar__view .el-select-dropdown__item{
+    white-space: pre-wrap;
+    color: #606266;
+    height: auto;
+    font-weight: normal;
+    width: 300px;
+  }
+  /*.el-select .el-select-dropdown .el-scrollbar .el-select-dropdown__wrap .el-scrollbar__view .el-select-dropdown__item.selected{
+    background: #0090FF;
+    color: #fff;
+    font-weight: 700
+  }*/
+
 </style>
diff --git a/src/views/demography/login.vue b/src/views/demography/login.vue
index 9d624c6..407a505 100644
--- a/src/views/demography/login.vue
+++ b/src/views/demography/login.vue
@@ -18,7 +18,8 @@
       parasInfos: [],
       parasInfoIds: {},
       formDo: {},
-      statusInfo: { '2': this.$t('statusInfo2'), '3': this.$t('statusInfo3'), '4': this.$t('statusInfo4') }
+      statusInfo: { '2': this.$t('statusInfo2'), '3': this.$t('statusInfo3'), '4': this.$t('statusInfo4') },
+      doUrl: null
     }
   },
   created () {
@@ -35,6 +36,7 @@
       } else if (re.response.status !== '1') {
         _this.$router.push({ path: '/exam/exception', query: { name: '', content: _this.statusInfo[re.response.status] } })
       } else {
+        _this.doUrl = re.response.doUrl
         _this.setMemberTocken(_this.paraMemberToken)
         _this.setDoUrl(re.response.doUrl)
         _this.setReportTemplateId(re.response.reportTemplateId)
@@ -50,6 +52,14 @@
       demographyApi.queryDemographyParamInfo(_this.paraMemberToken).then(
         reParam => {
           if (reParam.code !== 1) {
+            // 鑱屼笟鍏磋叮鎶ュ憡鐗规畩鍖栧鐞� 鍙湁涓枃
+            if(_this.doUrl === 'career_interests') {
+              _this.$i18n.locale = 'zh'
+              _this.setLangType('Chinese')
+              _this.$router.push({ path: '/demography/fill/index', query: { demographyMenber: _this.memberToken, isStart: false } })
+              return
+            }
+
             // 鍏堥�夋嫨瀵嗙爜
             _this.$router.push({ path: '/demography/fill/langOption', query: { langSelectValue: _this.langType } })
             _this.setMemberTocken(_this.paraMemberToken)
diff --git a/src/views/exam/components/QuestionEdit.vue b/src/views/exam/components/QuestionEdit.vue
index 3d557a0..9094d9b 100644
--- a/src/views/exam/components/QuestionEdit.vue
+++ b/src/views/exam/components/QuestionEdit.vue
@@ -57,7 +57,7 @@
   name: 'QuestionShow',
   data () {
     return {
-      abcValue: { '1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E', '6': 'F' }
+      abcValue: { '1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E', '6': 'F', '7': 'G', '8': 'H', '9': 'I', '10': 'J' }
     }
   },
   props: {
diff --git a/src/views/exam/paper/career_interests.vue b/src/views/exam/paper/career_interests.vue
new file mode 100644
index 0000000..8acacb7
--- /dev/null
+++ b/src/views/exam/paper/career_interests.vue
@@ -0,0 +1,570 @@
+<template>
+  <div>
+    <el-container  class="app-item-contain">
+      <el-header class="align-center" v-if="guide">
+        <h1></h1>
+      </el-header>
+      <el-main style="padding-top: 3%;">
+        <div v-html="guideDescirption" v-if="guide" :style="ismobile?'padding-top: 2%;margin-top: 5%;':'padding-top: 2%;margin: 0 auto;width:66%'"></div>
+        <el-row class="do-align-center" v-if="guide">
+          <el-button @click="startDo" type="primary" :disable="startDoDisable">{{$t('start')}}</el-button>
+        </el-row >
+        <el-form :model="form" ref="form" v-loading="formLoading" label-width="100%" v-else>
+          <el-row :key="index"  v-for="(titleItem,index) in titleItems">
+            <div class="q-content">{{titleItem.description}}</div>
+            <el-card class="exampaper-item-box" v-if="titleItem.questionItems.length!==0"  style="border:2px solid #2b90ff;">
+              <div class="align-center"><span style="font-size: small; float: left">{{$t('examinee')}}{{memberName}}</span><span style="margin-top: 0px;padding-right: 11%">鈼弡{form.name}}鈼�</span></div>
+              <hr style="border : 1px dashed #b3d8ff;" />
+              <el-form-item :key="itemOrder" label-width="1px">
+                <QuestionEdit @callNextSubject="nextSubject" :qType="questionItem.questionType" :question="questionItem"
+                              :answer="answer.answerItems[questionItem.itemOrder-1]" :qLabel="itemOrder+'/'+itemSize"/>
+              </el-form-item>
+              <hr style="border : 0.5px dashed #b3d8ff;" />
+              <div style="color: red;font-size: smaller">{{$t('pleaseAnswerCarefully')}}</div>
+              <el-row class="do-align-center" v-if="order < problemLength">
+            <el-button @click="preSubject" type="warning"  v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="nextSubject" type="primary" v-if ="nextDisable" round>{{$t('nextQuestion')}}</el-button>
+          </el-row>
+          <el-row class="do-align-center" v-else>
+            <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="submitForm" type="primary" :disabled="submitDisable" round>{{$t('submission')}}</el-button>
+          </el-row>
+            </el-card>
+          </el-row>
+        </el-form>
+
+      </el-main>
+    </el-container>
+    <el-row class="do-exam-title footer">
+      <el-col :span="24">
+        <!--<el-popover placement="top" title="棰樼洰鍒楄〃" width="200" trigger="click" ref="popovertag">-->
+          <!--<el-tag type="success" slot="reference">棰樼洰</el-tag>-->
+          <!--<span :key="item.itemOrder" v-for="(item) in answer.answerItems">-->
+             <!--<el-tag :type="questionCompleted(item.completed)" class="do-exam-title-tag"-->
+                     <!--&gt;{{item.itemOrder}}</el-tag>-->
+        <!--</span>-->
+        <!--</el-popover>-->
+        <span class="do-exam-time">
+          <!--<label>{{$t('remainingTime')}}</label>-->
+          <!--<label>{{formatSecondsG(remainTime,$t('hour'),$t('min'),$t('second'))}}</label>-->
+        </span>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters, mapMutations } from 'vuex'
+import { formatSeconds, formatSecondsG, formatDate } from '@/utils'
+import QuestionEdit from '../components/QuestionEdit'
+import examPaperApi from '@/api/examPaper'
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+import demographyApi from '@/api/demography'
+export default {
+  name: 'career_interests',
+  components: { QuestionEdit },
+  data () {
+    return {
+      form: {},
+      formLoading: false,
+      answer: {
+        questionId: null,
+        doTime: 0,
+        answerItems: [],
+        verifyStatus: 2
+      },
+      timer: null,
+      problemLength: 0,
+      titleItemsLength: 0,
+      remainTime: 0,
+      titleItemName: '', // 鑰冭瘯绗簩鏍囬
+      itemOrder: '', // 棰樼洰鐨勫簭鍙�
+      questionItem: {}, // 棰樼洰
+      titleItems: [],
+      order: 0,
+      guide: false,
+      answered: [],
+      submitDisable: true,
+      doTime: 0,
+      preDisable: false,
+      nextDisable: false,
+      partOrder: 0,
+      parts: [],
+      guideTitle: '',
+      guideDescirption: '',
+      isCallTain: '',
+      isSignalObject: '',
+      memberName: '',
+      itemSize: '', // 棰樼洰闀垮害
+      startDoDisable: true,
+      ismobile: false
+    }
+  },
+  created: function () {
+    let _this = this
+    _this.ismobile = /ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(navigator.userAgent.toLowerCase())
+    // 澶氳瑷�
+    _this.setLangFlag(false)
+    _this.form = this.$route.query.formDo
+    if (_this.form !== {} && _this.form !== undefined) {
+      _this.formLoading = true
+      _this.remainTime = _this.form.suggestTime * 60
+      _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+      _this.titleItemsLength = _this.form.titleItems.length
+      _this.titleItems.push(_this.form.titleItems[0])
+      _this.questionItem = _this.form.titleItems[0].questionItems[0]
+      _this.partOrder = _this.questionItem.partOrder
+      _this.itemOrder = _this.form.titleItems[0].questionItems[0].itemOrder
+      _this.timeReduce()
+      _this.initAnswer()
+      _this.formLoading = false
+      _this.memberName = _this.form.memberName
+      _this.itemSize = _this.form.titleItems[0].questionItems.length
+    } else {
+      _this.formLoading = true
+      // 闃叉鍒锋柊鎴愪簡涓嶅悓鐨勮瑷�
+      demographyApi.queryDemographyParamInfo(_this.memberToken).then(
+        re => {
+          if (re.response[0].langType !== null || re.response[0].langType.trim() !== '') {
+            _this.setLangType(re.response[0].langType)
+          }
+          // 鍔犺浇棰樼洰
+          examPaperApi.select(_this.memberToken, _this.langType).then(re => {
+            _this.form = re.response
+            _this.remainTime = re.response.suggestTime * 60
+            _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+            _this.titleItemsLength = _this.form.titleItems.length
+            _this.titleItems.push(_this.form.titleItems[0])
+            _this.itemOrder = _this.form.titleItems[0].questionItems[_this.order].itemOrder
+            _this.itemSize = _this.form.titleItems[0].questionItems.length
+            _this.questionItem = _this.form.titleItems[0].questionItems[_this.order]
+            _this.partOrder = _this.questionItem.partOrder
+            _this.initAnswer()
+            _this.formLoading = false
+            _this.memberName = _this.form.memberName
+
+            examPaperApi.selectTokenId(_this.memberToken).then(re => {
+              _this.answered = re.response.examItemOrderAndContentList
+              _this.doTime = re.response.doTime
+              _this.timeReduce()
+
+              if (_this.answered !== null) {
+                _this.answered.forEach(it => {
+                  _this.answer.answerItems[parseInt(it.itemOrder) - 1].content = it.content
+                  _this.answer.answerItems[parseInt(it.itemOrder) - 1].completed = true
+                })
+              }
+
+              for (let i = 0; i < _this.answer.answerItems.length; i++) {
+                if (!_this.answer.answerItems[i].completed || _this.answer.answerItems[i].content === null || _this.answer.answerItems[i].content === '') {
+                  _this.questionItem = _this.form.titleItems[0].questionItems[i]
+                  _this.partOrder = _this.questionItem.partOrder
+                  _this.itemOrder = _this.form.titleItems[0].questionItems[i].itemOrder
+                  _this.order = i
+                  _this.preDisable = true
+                  break
+                }
+
+                if (_this.isForFinish(i)) {
+                  _this.$router.push({ path: '/exam/finish', query: { name: '', content: _this.$t('finishMsg'), tokenId: _this.memberToken } })
+                }
+              }
+              // 濡傛灉涓婁竴棰樹笉鏄湰娈碉紝鍒欎笉鑳借繑鍥炰笂涓�娈�
+              if (this.isDiffPartOrder()) {
+                _this.preDisable = false
+              }
+
+              if (this.isDiffPartOrder()) {
+                _this.showNextGuide(re.response.signalObject, false)
+              }
+            }).catch(e => {
+              // _this.$message.error('棰樼洰鏌ヨ寮傚父')
+            })
+          }).catch(e => {
+            _this.$message.info(_this.$t('noquestionMsg'))
+          })
+        }
+      ).catch(e => {
+      })
+    }
+  },
+  mounted () {
+  },
+  beforeDestroy () {
+    window.clearInterval(this.timer)
+  },
+  methods: {
+    formatSeconds (theTime) {
+      return formatSeconds(theTime)
+    },
+    formatSecondsG (theTime, hour, min, second) {
+      return formatSecondsG(theTime, hour, min, second)
+    },
+    formatDate (time, formatsrc) {
+      return formatDate(time, formatsrc)
+    },
+    timeReduce: function () {
+      let _this = this
+      _this.answer.doTime += _this.doTime
+      this.timer = setInterval(function () {
+        if (_this.answer.doTime <= 0) {
+          _this.answer.doTime = 0
+        }
+        ++_this.answer.doTime
+      }, 1000)
+    },
+    questionCompleted (completed) {
+      return this.enumFormat(this.doCompletedTag, completed)
+    },
+    goAnchor (selector) {
+      let _this = this
+      let num = parseInt(selector.substr(10)) - 1
+      this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+      this.questionItem = _this.form.titleItems[0].questionItems[num]
+      _this.order = num
+      setTimeout(function () {
+        _this.$el.querySelector(selector).scrollIntoView({ behavior: 'instant', block: 'center', inline: 'nearest' })
+      }, 200)
+      _this.$refs['popovertag'].doClose()
+    },
+    initAnswer () {
+      this.answer.id = this.form.id
+      this.answer.questionOrder = this.form.questionOrder
+      let titleItemArray = this.form.titleItems
+      for (let tIndex in titleItemArray) {
+        let questionArray = titleItemArray[tIndex].questionItems
+        for (let qIndex in questionArray) {
+          let question = questionArray[qIndex]
+          this.answer.answerItems.push({ title: question.title, permanentId: question.permanentId, questionId: question.id, content: null, contentArray: [], completed: false, itemOrder: question.itemOrder, lastContent: null, startTime: question.startTime, endTime: question.endTime, partOrder: question.partOrder, questionReport: {}, readOnly: false })
+        }
+      }
+
+      // 鍒濆鍖栧紑濮嬫椂闂达紝璁剧疆绗竴涓椂闂�
+      for (let i = 0; i < this.answer.answerItems.length; i++) {
+        if (this.answer.answerItems[i].startTime == null || this.answer.answerItems[i].startTime.trim() === '') {
+          this.answer.answerItems[i].startTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+          break
+        }
+      }
+    },
+    isContentNotEmpty: function (num) {
+      let _this = this
+      return _this.answer.answerItems[num].content !== '' && _this.answer.answerItems[num].content !== null && _this.answer.answerItems[num].content.trim() !== ''
+    },
+    nextQuestion: function (nowPartOrder) {
+      let _this = this
+      let num = ++_this.order
+      _this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+      // 璺冲埌娌℃湁绛旂殑棰樼洰
+      while (_this.isContentNotEmpty(num) && num !== _this.answer.answerItems.length - 1) {
+        num = ++_this.order
+        this.getEmptySubjct(num)
+      }
+      _this.questionItem = _this.form.titleItems[0].questionItems[num]
+      _this.partOrder = _this.questionItem.partOrder
+      if (_this.partOrder !== nowPartOrder) {
+        _this.isShowGuide(true)
+      }
+
+      // 濡傛灉涓婁竴棰樹笉鏄湰娈碉紝鍒欎笉鑳借繑鍥炰笂涓�娈�
+      if (this.isDiffPartOrder()) {
+        _this.preDisable = false
+      } else {
+        _this.preDisable = true
+      }
+      _this.nextDisable = false
+      _this.answer.answerItems[_this.order].startTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+
+      // 濡傛灉鏄渶鍚庝竴涓苟涓斿凡缁忓畬鎴愪簡锛屽氨鎻愪氦
+      if (num === _this.answer.answerItems.length - 1 && _this.isForFinish(num)) {
+        this.submitForm()
+      }
+    },
+    nextQuestionOrder: function (nowPartOrder) {
+      if (this.order < this.problemLength) {
+        this.nextQuestion(nowPartOrder)
+      } else {
+        this.submitDisable = false
+      }
+    },
+    isNextShowGuide: function (nowPartOrder) {
+      let _this = this
+      // 鏈鐨勬瘡涓�棰橀兘鎵撳畬瑕佹寚瀵艰
+      let showGuideFlag = true
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (_this.form.titleItems[0].questionItems[i].partOrder === nowPartOrder && !_this.isContentNotEmpty(i)) {
+          showGuideFlag = false
+        }
+      }
+      return showGuideFlag
+    },
+    catThaiSubmit: function (answerSubmit) {
+      answerSubmit.isCallTain = 'CallThai'
+    },
+    setSignalObject: function (answerSubmit) {
+      answerSubmit.isSignalObject = 'CIAQ'
+    },
+    getEmptySubjct: function (order) {
+      let _this = this
+      _this.itemOrder = _this.form.titleItems[0].questionItems[order].itemOrder
+      _this.questionItem = _this.form.titleItems[0].questionItems[order]
+      _this.partOrder = _this.questionItem.partOrder
+      _this.preDisable = false
+      _this.answer.answerItems[order].readOnly = false
+      // _this.answer.answerItems[order].content = ''
+      // _this.answer.answerItems[order].completed = false
+      _this.order = order
+    },
+    isNotEmpty (obj) {
+      return obj !== null && obj !== undefined && obj !== ''
+    },
+    isEmpty (obj) {
+      return !this.isNotEmpty(obj)
+    },
+    nextSubject: function () {
+      let _this = this
+      _this.isShowGuide(false)
+      let nowPartOrder = _this.partOrder
+      // 璁剧疆涓婁竴棰樼殑缁撴潫鏃堕棿
+      this.answer.answerItems[_this.order].endTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      // 寰幆娌℃湁绛旂殑棰樼洰,杩欓噷鍚屾椂鍐冲畾浜嗛棶绛旈鎵撳畬鍙互杩涘叆涓嬩竴棰�
+      for (let i = 0; i < _this.order; i++) {
+        if (!this.isContentNotEmpty(i)) {
+          // 杩斿洖涔嬪墠娌″仛鐨勯偅閬撻
+          this.getEmptySubjct(i)
+          return
+        }
+        // 濡傛灉寰幆鍒版渶鍚庝竴棰樺氨鎻愪氦
+        if (_this.isForFinish(i)) {
+          _this.submitForm()
+          return
+        }
+      }
+
+      // 鍏ㄩ儴绛斿畬浜嗗氨鍙互鎻愪氦浜�,浣嗘槸濡傛灉鏄渶鍚庝竴棰樺氨鑷繁鎻愪氦
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (!_this.isContentNotEmpty(i)) {
+          break
+        }
+        if (i === _this.answer.answerItems.length - 1 && _this.order !== _this.answer.answerItems.length - 1) {
+          _this.submitForm()
+          return
+        }
+      }
+      this.answer.answerItems[_this.order].readOnly = true
+      let answerSubmit = _this.getSubmitAnswerValue(nowPartOrder)
+      console.log(answerSubmit)
+      // 宸茬粡绛斿埌浜嗘渶鍚庝竴棰樹簡,涓嶇敤鑷姩璺冲埌涓嬩竴棰�
+      if (this.order + 1 > this.problemLength) {
+        this.submitDisable = false
+        return
+      }
+      // 濡傛灉鏄渶鍚庝竴棰樺氨涓婇潰鎻愪氦浜嗭紝涓嶄細璧板埌杩欓噷
+      if (this.isNextShowGuide(nowPartOrder)) {
+        this.setSignalObject(answerSubmit)
+      }
+      examPaperAnswerApi.answerSubmit(answerSubmit, _this.memberToken).then(re => {
+        if (re.code !== 1) {
+          _this.$message.error(re.message)
+          throw (re.message)
+        }
+
+        // 灞曠ず鎸囧璇�
+        if (this.isNextShowGuide(nowPartOrder)) {
+          // 灞曠ず鎸囧璇�
+          _this.showNextGuide(re.response.signalObject, true)
+        } else {
+          this.nextQuestionOrder(nowPartOrder)
+        }
+      }).catch(e => {
+        _this.reloadPage(e)
+      })
+    },
+    getSubmitAnswerValue (nowPartOrder) {
+      let _this = this
+      let answerSubmit = JSON.parse(JSON.stringify(_this.answer))
+      answerSubmit.answerItems.forEach(answerItem => {
+        // 棰樼洰鎶ヨ〃锛屽鏋滄病鏈夌粨鏉熸椂闂达紝寮�濮嬫椂闂翠篃涓嶉渶瑕�
+        if (answerItem.endTime == null || answerItem.endTime === '') {
+          answerItem.startTime = ''
+        }
+        answerItem.questionReport = { questionOrder: answerItem.questionId, questionTitle: answerItem.title, permanentId: answerItem.permanentId, startTime: answerItem.startTime, endTime: answerItem.endTime, langType: _this.langType, partOrder: answerItem.partOrder, answer: answerItem.content }
+      })
+      answerSubmit.langType = _this.langType
+      answerSubmit.isCallTain = _this.isCallTain
+      answerSubmit.isSignalObject = _this.isSignalObject
+      answerSubmit.partOrder = nowPartOrder
+      answerSubmit.itemOrder = _this.itemOrder
+      return answerSubmit
+    },
+    preSubject () {
+      let _this = this
+      _this.isShowGuide(false)
+      if (_this.order > 0) {
+        // 娓呯┖鏈鐨勯�夋嫨
+        _this.answer.answerItems[_this.order].content = null
+        _this.answer.answerItems[_this.order].completed = false
+        _this.answer.answerItems[_this.order].questionReport = null
+        _this.answer.answerItems[_this.order].readOnly = false
+
+        // 璁剧疆鍥炲埌涓婁竴棰�
+        let num = --_this.order
+        _this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+        _this.questionItem = _this.form.titleItems[0].questionItems[num]
+        _this.partOrder = _this.questionItem.partOrder
+        _this.preDisable = false
+        _this.nextDisable = true
+        _this.answer.answerItems[_this.order].readOnly = false
+      }
+    },
+    submitForm () {
+      let _this = this
+      _this.submitDisable = true
+      window.clearInterval(_this.timer)
+      _this.formLoading = true
+      let unFinish = false
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (_this.answer.answerItems[i].content === null) {
+          unFinish = true
+          // 鏈夋湭瀹屾垚鐨勭瓟棰樺簲璇ユ槸 2绛旈涓�
+          // 涔嬪墠鏄�0鏈鐞�
+          _this.answer.finish = 2
+        }
+      }
+      if (unFinish) {
+        // 鐩存帴鍋滅暀鍦ㄦ病鏈夋墦瀹岀殑棰樼洰
+        for (let i = 0; i < _this.answer.answerItems.length; i++) {
+          if (!_this.isContentNotEmpty(i)) {
+            _this.questionItem = _this.form.titleItems[0].questionItems[i]
+            _this.partOrder = _this.questionItem.partOrder
+            _this.itemOrder = _this.form.titleItems[0].questionItems[i].itemOrder
+            _this.order = i
+            _this.preDisable = true
+            break
+          }
+          _this.formLoading = false
+          _this.submitDisable = false
+        }
+      } else {
+        _this.answer.verifyStatus = 1
+        _this.answer.finish = 1
+        _this.submitAnswer(_this.$t('finishCareerInterestsInfo'))
+      }
+    },
+    startDo: function () {
+      let _this = this
+      _this.guide = false
+      _this.isCallTain = ''
+      _this.isSignalObject = ''
+    },
+    submitAnswer: function (mess) {
+      let _this = this
+      this.answer.answerItems[_this.order].endTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      // 鎻愪氦涔嬪墠鎻愪氦鏈�鍚庝竴娈�
+      let answerSubmit = _this.getSubmitAnswerValue(_this.partOrder)
+      _this.catThaiSubmit(answerSubmit)
+      let loading = _this.$loading({
+        lock: false,
+        text: _this.$t('uploadInfo'),
+        spinner: 'el-icon-loading'
+      })
+      examPaperAnswerApi.answerSubmit(answerSubmit, _this.memberToken).then(re => {
+        loading.close()
+        if (re.code === 1) {
+          _this.$router.push({ path: '/exam/finish', query: { name: _this.form.name, content: mess, tokenId: _this.memberToken, type: 'CIAQ' } })
+        } else {
+          _this.$message.error(re.message + '/exam/finish')
+        }
+        _this.formLoading = false
+      }).catch(e => {
+        _this.reloadPage(e)
+        loading.close()
+      })
+    },
+    showNextGuide: function (signalObject, nextQuestion) {
+      let _this = this
+      _this.guideDescirption = signalObject.signalDescription
+      if (_this.guideDescirption !== null && _this.guideDescirption !== undefined && _this.guideDescirption !== '') {
+        _this.isShowGuide(true)
+        _this.preDisable = false
+      } else {
+        throw (signalObject.message)
+      }
+      if (Object.keys(_this.guideDescirption).length === 0) {
+        _this.isShowGuide(false)
+        _this.preDisable = false
+      }
+      _this.startDoDisable = false
+      if (!nextQuestion) {
+        return
+      }
+      _this.nextQuestionOrder()
+    },
+    isNull: function (obj) {
+      return obj === null || obj === undefined
+    },
+    isShowGuide (flag) {
+      let _this = this
+      _this.guide = flag
+      // _this.isCallTain = flag ? 'callTain' : ''
+    },
+    reloadPage (e) {
+      let _this = this
+      let mes = ''
+      if (e.message !== null && e.message !== undefined && e.message.indexOf('timeout') !== -1) {
+        mes = _this.$t('submitTimeout') + ',' + 'order:' + _this.order + ',' + e.message// 鎻愪氦鍚庡彴瓒呮椂
+      } else {
+        mes = JSON.stringify(e) + ',' + 'order:' + _this.order + ',' + e.message
+      }
+      // 璋冭瘯鐢�
+      // _this.$router.push({ path: '/exam/exception', query: { name: _this.form.name, content: _this.$t('submitExceptionInfo') + '<br>' + mes } })
+      _this.$router.push({ path: '/exam/exception', query: { name: _this.form.name, content: _this.$t('submitExceptionInfo') } })
+      _this.formLoading = false
+      _this.submitDisable = false
+    },
+    isForFinish (i) {
+      return i === this.answer.answerItems.length - 1 && (this.answer.answerItems[i].content !== null && this.answer.answerItems[i].content !== '')
+    },
+    isDiffPartOrder: function () {
+      let _this = this
+      return _this.form.titleItems[0].questionItems[_this.order].partOrder !== _this.form.titleItems[0].questionItems[_this.order - 1].partOrder
+    },
+    ...mapMutations('user', ['setLangType']),
+    ...mapMutations('user', ['setLangFlag'])
+  },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', { doCompletedTag: state => state.exam.question.answer.doCompletedTag }),
+    ...mapState('user', { memberToken: state => state.memberToken }),
+    ...mapState('user', { langType: state => state.langType }),
+    ...mapState('user', { langFlag: state => state.langFlag }),
+    ...mapState('exam', { doUrl: state => state.doUrl })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center;
+  }
+
+  .exam-question-item {
+    padding: 10px;
+    font-size: large;
+
+    .el-form-item__label {
+      font-size: large !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+  .footer {
+    position: absolute;
+    position: fixed;
+    z-index: 1000;
+    bottom: 0px;
+  }
+</style>
diff --git a/src/views/exam/paper/finish.vue b/src/views/exam/paper/finish.vue
index a034b92..eb8b933 100644
--- a/src/views/exam/paper/finish.vue
+++ b/src/views/exam/paper/finish.vue
@@ -9,6 +9,12 @@
         <!-- 鏂板涓嬭浇鎶ュ憡鎻愮ず璇� -->
         <H1 v-if ="downDisable">{{$t('finishPersonalityDownInfo')}}</H1>
         <el-button type="danger" v-if ="downDisable" @click="downReport" round>{{$t('down')}}</el-button>
+        <!-- 鏂板棰勮鎻愮ず璇� -->
+<!--        <H1 v-if ="viewDisable">{{$t('finishViewReportInfo')}}</H1>-->
+<!--        <el-button type="danger" v-if ="viewDisable" @click="viewReport" round>{{$t('view')}}</el-button>-->
+        <!--  -->
+        <H1 v-if ="type == 'CIAQ'">{{$t('finishViewReportInfo')}}</H1>
+        <el-button type="danger" v-if ="type == 'CIAQ' && isMobile()" @click="viewReportH5" round>{{$t('view')}}</el-button>
       </el-main>
     </el-container>
   </div>
@@ -22,8 +28,11 @@
       name: this.$route.query.name,
       content: this.$route.query.content,
       tokenId: this.$route.query.tokenId,
+      type: this.$route.query.type,
       downDisable: false,
-      downUrl: ''
+      viewDisable: false,
+      downUrl: '',
+      viewUrl: ''
     }
   },
   created () {
@@ -39,6 +48,18 @@
         console.log(re)
       }
     })
+
+    // CIAQ PDF棰勮Url
+    // examPaperApi.selectTesterReportUrl(_this.tokenId).then(re => {
+    //   if (re.code === 0) {
+    //     _this.viewDisable = true
+    //     // 璁剧疆棰勮璺緞
+    //     _this.viewUrl = re.msg
+    //     console.log(re)
+    //   } else {
+    //     console.log(re)
+    //   }
+    // })
   },
   mounted () {
 
@@ -50,6 +71,20 @@
     downReport: function () {
       let _this = this
       window.open(_this.downUrl)
+    },
+    // 棰勮鎶ュ憡
+    viewReport: function () {
+      let _this = this
+      _this.$router.push({ path: '/report/view', query: { fileUrl: _this.viewUrl } })
+    },
+    // 棰勮鎶ュ憡(H5)
+    viewReportH5: function () {
+      let _this = this
+      _this.$router.push({ path: '/report/h5', query: { tokenId: _this.tokenId } })
+    },
+    isMobile () {
+      let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
+      return flag
     }
   },
   computed: {
diff --git a/src/views/exam/paper/guide.vue b/src/views/exam/paper/guide.vue
index 53364aa..e9ed05e 100644
--- a/src/views/exam/paper/guide.vue
+++ b/src/views/exam/paper/guide.vue
@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-container class="app-item-contain">
-      <el-header class="align-center" style="height: 50px;padding: 1%;">
+      <el-header class="align-center" style="height: 50px;padding: 1%;margin-top: 4%">
         <H2 v-html="$t('guide')" v-if="formDo.questionTemplateId !== 'job' || formDo.questionTemplateId !== 'values'"></H2>
       </el-header>
       <el-main style="padding-top:0%">
diff --git a/src/views/exam/paper/personality.vue b/src/views/exam/paper/personality.vue
index dc2ae2d..98ce246 100644
--- a/src/views/exam/paper/personality.vue
+++ b/src/views/exam/paper/personality.vue
@@ -402,6 +402,13 @@
       let _this = this
       _this.isShowGuide(false)
       if (_this.order > 0) {
+        // 娓呯┖鏈鐨勯�夋嫨
+        _this.answer.answerItems[_this.order].content = null
+        _this.answer.answerItems[_this.order].completed = false
+        _this.answer.answerItems[_this.order].questionReport = null
+        _this.answer.answerItems[_this.order].readOnly = false
+
+        // 璁剧疆鍥炲埌涓婁竴棰�
         let num = --_this.order
         _this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
         _this.questionItem = _this.form.titleItems[0].questionItems[num]
diff --git a/src/views/report/reportH5.vue b/src/views/report/reportH5.vue
new file mode 100644
index 0000000..6624eaf
--- /dev/null
+++ b/src/views/report/reportH5.vue
@@ -0,0 +1,391 @@
+<template>
+  <div id="app">
+    <div class="report">
+      <el-image :src="require('@/assets/report/page1.jpg')"></el-image>
+      <div class="word" style="left: 23.5%;top: 68.6%;font-size: 0.8rem;color: #313157">銆恵{ data.questionnaireTaker }}銆�</div>
+      <div class="word" style="left: 27%;top: 71.2%;font-size: 0.8rem;color: #313157">銆恵{ data.reportGenerationDate }}銆�</div>
+    </div>
+    <div class="report">
+      <el-image :src="require('@/assets/report/page2.png')"></el-image>
+      <div id="myChart" style="width: 100%; height: 300px; "></div>
+    </div>
+
+    <div class="report">
+      <el-image :src="require('@/assets/report/page3.png')"></el-image>
+      <div class="word" style="left: 40%;top: 3.3%;font-size: 0.8rem;color: #34BBC4">{{ data.PR_Dim01 }}</div>
+      <div class="word" style="left: 40%;top: 6.3%;font-size: 0.8rem;color: #E1AD04">{{ data.PR_Dim02 }}</div>
+      <div class="word" style="left: 40%;top: 9.3%;font-size: 0.8rem;color: #6D67AD">{{ data.PR_Dim03 }}</div>
+      <div class="word" style="left: 40%;top: 12.3%;font-size: 0.8rem;color: #EC7864">{{ data.PR_Dim04 }}</div>
+      <div class="word" style="left: 80%;top: 3.3%;font-size: 0.8rem;color: #D78EBB">{{ data.PR_Dim05 }}</div>
+      <div class="word" style="left: 80%;top: 6.3%;font-size: 0.8rem;color: #E8497D">{{ data.PR_Dim06 }}</div>
+      <div class="word" style="left: 80%;top: 9.3%;font-size: 0.8rem;color: #62BEA4">{{ data.PR_Dim07 }}</div>
+      <div class="word" style="left: 80%;top: 12.3%;font-size: 0.8rem;color: #4976BA">{{ data.PR_Dim08 }}</div>
+      <div class="word career" style="left: 14%;top: 36.3%;font-size: 0.6rem;font-weight: bold;line-height:25px">
+        1.{{data.occ1H}}<br>
+        2.{{data.occ2H}}<br>
+        3.{{data.occ3H}}<br>
+        4.{{data.occ4H}}<br>
+        5.{{data.occ5H}}<br>
+        6.{{data.occ6H}}<br>
+        7.{{data.occ7H}}<br>
+        8.{{data.occ8H}}<br>
+        9.{{data.occ9H}}<br>
+        10.{{data.occ10H}}
+      </div>
+      <div class="word career" style="left: 14%;top: 72%;font-size: 0.6rem;font-weight: bold;line-height:25px">
+        1.{{data.occ1L}}<br>
+        2.{{data.occ2L}}<br>
+        3.{{data.occ3L}}<br>
+        4.{{data.occ4L}}<br>
+        5.{{data.occ5L}}<br>
+        6.{{data.occ6L}}<br>
+        7.{{data.occ7L}}<br>
+        8.{{data.occ8L}}<br>
+        9.{{data.occ9L}}<br>
+        10.{{data.occ10L}}
+      </div>
+    </div>
+    <div class="report">
+      <div v-if="data.condition != null">
+        <el-image :src="require('@/assets/report/page4.png')"></el-image>
+      </div>
+      <div v-if="data.condition == null">
+        <el-image :src="require('@/assets/report/page4-1.png')"></el-image>
+      </div>
+    </div>
+    <div class="report">
+      <el-image :src="require('@/assets/report/page5.png')"></el-image>
+    </div>
+  </div>
+</template>
+
+<script>
+import examPaperApi from '@/api/examPaper'
+
+export default {
+  name: 'reportH5',
+  data () {
+    return {
+      tokenId: this.$route.query.tokenId,
+      condition: true,
+      data: {
+        occ1L: '鍦拌川鍕樻帰宸ョ▼鎶�鏈汉鍛橈紙姣斿鍦拌川鐭夸骇璋冩煡宸ョ▼鎶�鏈汉鍛橈級',
+        occ3L: '鐭垮北宸ョ▼鎶�鏈汉鍛橈紙姣斿閫夌熆涓庣熆鐗╁姞宸ュ伐绋嬫妧鏈汉鍛橈級',
+        PR_Dim01: 10,
+        PR_Dim02: 20,
+        PR_Dim03: 30,
+        PR_Dim04: 40,
+        occ5H: '椋熷搧琛屼笟鍝佽瘎甯堬紙姣斿涔冲搧璇勯壌甯堛�佸搧閰掑笀锛�',
+        occ9L: '淇℃伅閫氫俊缃戠粶杩愯绠$悊浜哄憳锛堟瘮濡備俊鎭�氫俊缃戠粶杩愯绠$悊鍛橈級',
+        occ7H: '鑷劧淇濇姢鍖哄拰鑽夊湴鐩戞姢浜哄憳锛堟瘮濡傝嚜鐒朵繚鎶ゅ尯宸℃姢鐩戞祴鍛樸�佽崏鍦扮洃鎶ゅ憳锛�',
+        occ1H: '缁垮寲涓庡洯鑹烘湇鍔′汉鍛橈紙姣斿鐩嗘櫙甯堛�佹彃鑺辫姳鑹哄笀锛�',
+        occ5L: '鏈烘宸ョ▼鎶�鏈汉鍛橈紙姣斿鏈烘璁捐宸ョ▼鎶�鏈汉鍛樸�佽嚜鍔ㄦ帶鍒跺伐绋嬫妧鏈汉鍛橈級',
+        occ3H: '妞嶇墿淇濇姢鎶�鏈汉鍛�',
+        occ7L: '宸ヤ笟鏈哄櫒浜烘搷浣滆繍缁翠汉鍛橈紙姣斿宸ヤ笟鏈哄櫒浜虹郴缁熻繍缁村憳銆侊級',
+        occ10H: '闄剁摲鍒跺搧鍒堕�犱汉鍛橈紙姣斿闄剁摲瑁呴グ宸ャ�佸彜寤虹悏鐠冨伐锛�',
+        occ10L: '鍦拌川鍕樻煡浜哄憳锛堟瘮濡傜墿鎺㈠伐銆佸湴璐ㄨ皟鏌ュ憳锛�',
+        occ8H: '缁垮寲涓庡洯鑹烘湇鍔′汉鍛橈紙姣斿鍥灄缁垮寲宸ャ�佽崏鍧洯鑹哄笀锛�',
+        PR_Dim05: 50,
+        PR_Dim06: 60,
+        PR_Dim07: 70,
+        questionnaireTaker: '娴嬭瘯',
+        PR_Dim08: 80,
+        reportGenerationDate: '2023-04-29',
+        occ2L: '娴嬬粯鍜屽湴鐞嗕俊鎭伐绋嬫妧鏈汉鍛橈紙姣斿宸ョ▼娴嬮噺宸ョ▼鎶�鏈汉鍛橈級',
+        occ4H: '鍥壓鎶�鏈汉鍛�',
+        occ8L: '鐢靛瓙宸ョ▼鎶�鏈汉鍛橈紙姣斿鐢靛瓙鏉愭枡/鐢靛瓙鍏冨櫒浠跺伐绋嬫妧鏈汉鍛橈級',
+        occ6H: '搴峰吇銆佷紤闂叉湇鍔′汉鍛橈紙姣斿妫灄鍥灄搴峰吇甯堬級',
+        occ4L: '鍐堕噾宸ョ▼鎶�鏈汉鍛橈紙姣斿鍐堕噾鐑兘宸ョ▼鎶�鏈汉鍛樸�佺█鍦熷伐绋嬫妧鏈汉鍛橈級',
+        occ2H: '鍥藉湡绌洪棿瑙勫垝涓庣敓鎬佷慨澶嶅伐绋嬫妧鏈汉鍛橈紙姣斿鍩庝埂瑙勫垝宸ョ▼鎶�鏈汉鍛橈級',
+        occ6L: '鑸┖宸ョ▼鎶�鏈汉鍛橈紙姣斿椋炶鍣ㄥ埗閫犲伐绋嬫妧鏈汉鍛橈級',
+        condition: '娉細鎮ㄥ湪鍏釜鍏磋叮涓婚涓婄殑寰楀垎鏄剧ず鎮ㄧ殑鑱屼笟鍏磋叮鍒嗗寲绋嬪害涓嶉珮锛屽洜姝よ亴涓氭帹鑽愮殑缁撴灉鍙兘涓嶅绮剧‘銆傚缓璁偍鍦ㄥ弬鑰冧笂杩拌亴涓氶鍩熺殑鍚屾椂锛屼篃搴斿鍏朵粬鑱屼笟棰嗗煙淇濇寔寮�鏀炬�佸害銆�',
+        occ9H: '閲庣敓鍔ㄦ鐗╀繚鎶や汉鍛橈紙姣斿閲庣敓妞嶇墿淇濇姢鍛樸�佸睍鍑哄姩鐗╀繚鑲插憳锛�'
+      }
+    }
+  },
+  created () {
+    let _this = this
+    // 鏌ヨ鎶ュ憡鏂囦欢鍚�
+    examPaperApi.selectTesterReportResult(_this.tokenId).then(re => {
+      if (re.code === 0) {
+        _this.data = re.data.data
+        this.drawLine()
+      }
+      console.log(re)
+    })
+  },
+  mounted () {
+
+  },
+  methods: {
+    drawLine () {
+      let _this = this
+      // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+      let myChart = this.$echarts.init(document.getElementById('myChart'))
+      let option = {
+        title: {
+          text: '鑱屼笟鍏磋叮涓婚寰楀垎',
+          show: false
+        },
+        legend: {},
+        radar: {
+          // shape: 'circle',
+          nameGap: 15,
+          center: ['50%', '50%'],
+          // 鍦嗕腑蹇冨潗鏍囷紝鏁扮粍鐨勭涓�椤规槸妯潗鏍囷紝绗簩椤规槸绾靛潗鏍囥�俒 default: ['50%', '50%'] ]
+          radius: 120,
+          // 鍦嗙殑鍗婂緞锛屾暟缁勭殑绗竴椤规槸鍐呭崐寰勶紝绗簩椤规槸澶栧崐寰勩��
+          startAngle: 90,
+          indicator: [
+            {
+              name: '鍋ュ悍绉戝', max: '100',
+              //鑻ュ皢姝ゅ睘鎬ф斁鍦╮adar涓嬶紝鍒欐瘡鏉ndicator閮戒細鏄剧ず鍦堜笂鐨勬暟鍊硷紝鏀惧湪杩欏効锛屽彧鍦ㄩ�氫俊杩欐潯indicator涓婃樉绀�
+              axisLabel: {
+                show: true,
+                fontSize: 8,
+                color: '#7F7F7F',
+                showMaxLabel: true, //涓嶆樉绀烘渶澶у�硷紝鍗冲鍦堜笉鏄剧ず鏁板瓧30
+                showMinLabel: true, //鏄剧ず鏈�灏忔暟瀛楋紝鍗充腑蹇冪偣鏄剧ず0
+              }
+            },
+            { name: '浜嬬墿', max: '100' },
+            { name: '鑷劧', max: '100' },
+            { name: '褰卞搷', max: '100' },
+            { name: '缁勭粐', max: '100' },
+            { name: '浜�', max: '100' },
+            { name: '绉戞妧', max: '100' },
+            { name: '鍒涢�犳�ц〃杈�', max: '100' }
+          ],
+          splitArea: {   //鍦嗙幆鍖哄煙鏍峰紡
+            areaStyle: {
+              color: ['#fff', '#fff', '#fff'],
+              shadowColor: 'rgba(230, 230, 230, 0.5)',
+              shadowBlur: 20,
+              shadowOffsetY: '10',
+              shadowOffsetX: '-10'
+            }
+          },
+          splitNumber: 4,
+          axisName: {
+            color: '#7F7F7F',
+            fontSize: 10
+          },
+          axisLine: {
+            show: false,
+            lineStyle: {
+              shadowColor: '#F5F4F4',
+              shadowBlur: 10
+            }
+          }
+        },
+        series: [
+          {
+            name: '鍋ュ悍绉戝',
+            type: 'radar',
+            z: 1,
+            areaStyle: {
+              color: '#E5E3E3' //闃村奖
+            },
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: '#34BBC4'
+            },
+            lineStyle: {//绾挎潯鏍峰紡
+              color: '#C0BEBD'
+            },
+            symbolSize: 13,//鍦嗙偣澶у皬
+            symbol: 'circle',//鍦嗙偣鏍峰紡
+            data: [
+              {
+                value: [_this.data.PR_Dim01, _this.data.PR_Dim08, _this.data.PR_Dim07, _this.data.PR_Dim06, _this.data.PR_Dim05, _this.data.PR_Dim04, _this.data.PR_Dim03, _this.data.PR_Dim02]
+              }
+            ]
+          },
+          {
+            name: '鍒涢�犳�ц〃杈�',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: '#E1AD04'
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false, //闅愯棌鏍囩ず绾�
+              }
+            },
+            symbolSize: 13,//鍦嗙偣澶у皬
+            symbol: 'circle',//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '1000', '1000', '1000', '1000', _this.data.PR_Dim02]
+              }
+            ]
+          },
+          {
+            name: '绉戞妧',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: '#6D67AD'
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              }
+            },
+            symbolSize: 13,//鍦嗙偣澶у皬
+            symbol: 'circle',//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '1000', '1000', '1000', _this.data.PR_Dim03, '1000']
+              }
+            ]
+          },
+          {
+            name: '浜�',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: '#EC7864'
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              }
+            },
+            symbolSize: 13,//鍦嗙偣澶у皬
+            symbol: 'circle',//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '1000', '1000', _this.data.PR_Dim04, '1000', '1000']
+              }
+            ]
+          },
+          {
+            name: '缁勭粐',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: '#D78EBB'
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              }
+            },
+            symbolSize: 13,//鍦嗙偣澶у皬
+            symbol: 'circle',//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '1000', _this.data.PR_Dim05, '1000', '1000', '1000']
+              }
+            ]
+          },
+          {
+            name: '褰卞搷',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: '#E8497D'
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              }
+            },
+            symbolSize: 13,//鍦嗙偣澶у皬
+            symbol: 'circle',//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', _this.data.PR_Dim06, '1000', '1000', '1000', '1000']
+              }
+            ]
+          },
+          {
+            name: '鑷劧',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: '#62BEA4'
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              },
+            },
+            symbolSize: 13,//鍦嗙偣澶у皬
+            symbol: 'circle',//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', _this.data.PR_Dim07, '1000', '1000', '1000', '1000', '1000']
+              }
+            ]
+          },
+          {
+            name: '浜嬬墿',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: '#4976BA'
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              }
+            },
+            symbolSize: 13,//鍦嗙偣澶у皬
+            symbol: 'circle',//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', _this.data.PR_Dim08, '1000', '1000', '1000', '1000', '1000', '1000']
+              }
+            ]
+          }
+        ]
+      }
+      // 缁樺埗鍥捐〃
+      myChart.setOption(option)
+    }
+  }
+}
+</script>
+<style scoped>
+.report {
+  position: relative
+}
+
+.report .word {
+  position: absolute;
+}
+
+.career {
+  display: inline-block;
+  width: 260px;
+  /*瓒呭嚭閮ㄥ垎闅愯棌*/
+  overflow: hidden;
+  /*鏂囨湰涓嶆崲琛�*/
+  white-space: nowrap;
+  /*瓒呭嚭涓嶅皝鐢ㄤ笁涓渷鐣ュ彿浠f浛*/
+  text-overflow: ellipsis;
+}
+
+#app {
+  max-width: 100vh;
+  max-height: 100vh;
+  background-color: white;
+}
+
+</style>
diff --git a/src/views/report/reportH5Bak.vue b/src/views/report/reportH5Bak.vue
new file mode 100644
index 0000000..76f9b92
--- /dev/null
+++ b/src/views/report/reportH5Bak.vue
@@ -0,0 +1,298 @@
+<template>
+  <div>
+    <div id="page1" class="page1 font">
+      <div style="left: 19%;position: absolute;top: 12%;font-weight: bold;font-size: 1rem;">涓浗澶у鐢熻亴涓氬叴瓒i噺琛�</div>
+      <div style="left: 9%;position: absolute;top: 65%;font-weight: bold;font-size: 2.1rem;">涓汉鍙嶉鎶ュ憡</div>
+      <div style="left: 10%;position: absolute;top: 72%;font-size: 0.1rem;">娴� 璇� 鑰咃細銆�%questionnaireTaker%銆�</div>
+      <div style="left: 10%;position: absolute;top: 74%;font-size: 0.1rem;">娴嬭瘯鏃堕棿锛氥��%reportGenerationDate%銆�</div>
+      <div style="left: 10%;position: absolute;top: 76%;font-size: 0.1rem;">甯�    妯★細涓浗澶у鐢�</div>
+      <div style="left: 10%; position: absolute; top: 79%; font-size: 0.1rem;">鎶ュ憡涓昏鍐呭锛�</div>
+      <div style="left: 10%;position: absolute;top: 81%;font-size: 0.1rem;">1.	鍏ぇ鑱屼笟鍏磋叮涓婚鐨勪粙缁嶅強涓汉鍒嗘暟</div>
+      <div style="left: 10%;position: absolute;top: 83%;font-size: 0.1rem;width: 85%;">2.	鍩轰簬銆婁腑鍗庝汉姘戝叡鍜屽浗鑱屼笟鍒嗙被澶у吀锛�2022鐗堬級銆嬬敓鎴愮殑涓汉鑱屼笟鏂瑰悜鎴栭鍩熺殑鎺ㄨ崘娓呭崟</div>
+    </div>
+    <div style="height: 1700px;background-color: white">
+      鎶ュ憡浠嬬粛
+      鑱屼笟鍏磋叮鏄奖鍝嶆垜浠敓娑�夋嫨鐨勯噸瑕佸洜绱犱箣涓�锛屼粠浜嬩笌鑷繁鍏磋叮鐩稿叧鐨勮亴涓氫篃鏈夊姪浜庢垜浠湪宸ヤ綔涓彇寰楄緝濂界殑缁╂晥琛ㄧ幇浠ュ強宸ヤ綔婊℃剰搴︺�傛垜浠緷鎹亴涓氬叴瓒ETPOINT妯″瀷锛圫u et al., 2019锛夛紝骞跺熀浜庝腑鍥藉浗鎯呭紑鍙戜簡鏈娴嬭瘯鐨勯鐩�傛湰娴嬮獙娴嬮噺浜嗘偍鍦ㄥ叓澶ц亴涓氬叴瓒d富棰樹笂鐨勫緱鍒嗭紝鎮ㄧ殑娴嬭瘯鍒嗘暟鏄湪浠ヤ腑鍥戒汉缇や负甯告ā鐨勫熀纭�涓婅绠楀嚭鐨勭櫨鍒嗕綅鏁般�傚彟澶栵紝鎴戜滑瀵广�婁腑鍗庝汉姘戝叡鍜屽浗鑱屼笟鍒嗙被澶у吀锛�2022鐗堬級銆嬩腑鍑虹幇鐨勮亴涓氱被鍨嬭繘琛屼簡缂栫爜锛屽苟鍩轰簬鎮ㄧ殑鍏磋叮鐗圭偣锛岀敓鎴愪簡鎮ㄥ彲鑳芥渶鎰熷叴瓒g殑鍗佷釜鑱屼笟绫诲瀷鍜屾偍鍙兘鏈�涓嶆劅鍏磋叮鐨勫崄涓亴涓氱被鍨嬶紝甯姪鎮ㄦ洿鏈夋晥鍦版帰绱㈣亴涓氱敓娑�備换浣曞績鐞嗘祴璇曢兘涓嶅彲鑳藉仛鍒板畬鍏ㄧ簿纭紝鎵�浠ユ祴璇曞垎鏁颁互鍙婃帹鑽愮殑鑱屼笟绫诲瀷浠呬緵鎮ㄥ弬鑰冦��
+    </div>
+  </div>
+  <!--<div id="myChart" style="width: 100%; height: 500px; margin-top: 100px"></div>-->
+</template>
+
+<script>
+// import '@/assets/style/rem'
+// import '@/assets/style/reset.css'
+
+export default {
+  name: 'reportH5',
+  data () {
+
+  },
+  mounted () {
+    this.drawLine()
+  },
+  methods: {
+    drawLine () {
+      // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+      let myChart = this.$echarts.init(document.getElementById('myChart'))
+      let option = {
+        title: {
+          text: '鑱屼笟鍏磋叮涓婚寰楀垎',
+          show: false
+        },
+        legend: {},
+        radar: {
+          // shape: 'circle',
+          nameGap: 25,
+          indicator: [
+            {
+              name: '鍋ュ悍绉戝', max: '100',
+              //鑻ュ皢姝ゅ睘鎬ф斁鍦╮adar涓嬶紝鍒欐瘡鏉ndicator閮戒細鏄剧ず鍦堜笂鐨勬暟鍊硷紝鏀惧湪杩欏効锛屽彧鍦ㄩ�氫俊杩欐潯indicator涓婃樉绀�
+              axisLabel: {
+                show: true,
+                fontSize: 12,
+                color: '#7F7F7F',
+                showMaxLabel: true, //涓嶆樉绀烘渶澶у�硷紝鍗冲鍦堜笉鏄剧ず鏁板瓧30
+                showMinLabel: true, //鏄剧ず鏈�灏忔暟瀛楋紝鍗充腑蹇冪偣鏄剧ず0
+              }
+            },
+            {name: '浜嬬墿', max: '100'},
+            {name: '鑷劧', max: '100'},
+            {name: '褰卞搷', max: '100'},
+            {name: '缁勭粐', max: '100'},
+            {name: '浜�', max: '100'},
+            {name: '绉戞妧', max: '100'},
+            {name: '鍒涢�犳�ц〃杈�', max: '100'}
+          ],
+          splitArea: {   //鍦嗙幆鍖哄煙鏍峰紡
+            areaStyle: {
+              color: ['#fff', '#fff', '#fff'],
+              shadowColor: 'rgba(230, 230, 230, 0.5)',
+              shadowBlur: 20,
+              shadowOffsetY: '10',
+              shadowOffsetX: '-10',
+            }
+          },
+          splitNumber: 4,
+          axisName: {
+            color: '#7F7F7F',
+            fontSize: 18
+          },
+          axisLine: {
+            show: false,
+            lineStyle: {
+              shadowColor: '#F5F4F4',
+              shadowBlur: 10
+            }
+          }
+        },
+        series: [
+          {
+            name: '鍋ュ悍绉戝',
+            type: 'radar',
+            z: 1,
+            areaStyle: {
+              color: '#E5E3E3' //闃村奖
+            },
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: "#34BBC4",
+            },
+            lineStyle: {//绾挎潯鏍峰紡
+              color: "#C0BEBD"
+            },
+            symbolSize: 20,//鍦嗙偣澶у皬
+            symbol: "circle",//鍦嗙偣鏍峰紡
+            data: [
+              {
+                value: [50, 16, 22, 78, 55, 82, 67, 23],
+              }
+            ]
+          },
+          {
+            name: '鍒涢�犳�ц〃杈�',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: "#E1AD04"
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false, //闅愯棌鏍囩ず绾�
+              }
+            },
+            symbolSize: 20,//鍦嗙偣澶у皬
+            symbol: "circle",//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '1000', '1000', '1000', '1000', 23]
+              }
+            ]
+          },
+          {
+            name: '绉戞妧',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: "#6D67AD"
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              },
+            },
+            symbolSize: 20,//鍦嗙偣澶у皬
+            symbol: "circle",//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '1000', '1000', '1000', '67', '1000']
+              }
+            ]
+          },
+          {
+            name: '浜�',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: "#EC7864"
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false, //闅愯棌鏍囩ず绾�
+              },
+            },
+            symbolSize: 20,//鍦嗙偣澶у皬
+            symbol: "circle",//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '1000', '1000', '82', '1000', '1000']
+              }
+            ]
+          },
+          {
+            name: '缁勭粐',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: "#D78EBB"
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false, //闅愯棌鏍囩ず绾�
+              },
+            },
+            symbolSize: 20,//鍦嗙偣澶у皬
+            symbol: "circle",//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '1000', '55', '1000', '1000', '1000']
+              }
+            ]
+          },
+          {
+            name: '褰卞搷',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: "#E8497D"
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false, //闅愯棌鏍囩ず绾�
+              },
+            },
+            symbolSize: 20,//鍦嗙偣澶у皬
+            symbol: "circle",//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '1000', '78', '1000', '1000', '1000', '1000'],
+              }
+            ]
+          },
+          {
+            name: '鑷劧',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: "#62BEA4"
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              },
+            },
+            symbolSize: 20,//鍦嗙偣澶у皬
+            symbol: "circle",//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '1000', '22', '1000', '1000', '1000', '1000', '1000'],
+              }
+            ]
+          },
+          {
+            name: '浜嬬墿',
+            type: 'radar',
+            z: 2,
+            itemStyle: {//鎶樼嚎鎷愮偣鏍囧織鐨勬牱寮�
+              color: "#4976BA"
+            },
+            lineStyle: {
+              width: 0,
+              labelLine: {
+                show: false //闅愯棌鏍囩ず绾�
+              }
+            },
+            symbolSize: 20,//鍦嗙偣澶у皬
+            symbol: "circle",//鍦嗙偣鏍峰紡
+            data: [
+              {
+                // 鎬濇兂鏄細璁剧疆鏃犵嚎澶э紝鍘绘帀閾炬帴绾垮嵆鍙�
+                value: ['1000', '16', '1000', '1000', '1000', '1000', '1000', '1000'],
+              }
+            ]
+          }
+        ]
+      }
+      // 缁樺埗鍥捐〃
+      myChart.setOption(option)
+    }
+  }
+}
+</script>
+<style scoped>
+/* 鑳屾櫙鍥剧墖*/
+.page1{
+  margin-top: 50px;
+  background:url('~@/assets/report/page1.png') no-repeat;
+  width: 100%;
+  height: 100%;
+  position:fixed;
+  background-size: cover;
+  background-size:100% 100%;
+  overflow:auto;
+}
+
+.bg {
+  width: 500px;
+  height: 300px;
+  background:url('~@/assets/report/page1.png') no-repeat;
+  border: 1px solid #72bf3d;
+  /* background-size: contain; */
+  /* background-size: cover; */
+}
+
+.font {
+  font-family: 榛戜綋;
+}
+
+</style>
diff --git a/src/views/report/reportView.vue b/src/views/report/reportView.vue
new file mode 100644
index 0000000..43e6adb
--- /dev/null
+++ b/src/views/report/reportView.vue
@@ -0,0 +1,46 @@
+<template>
+  <div class="m-pdf">
+    <div id="pdf-content"></div>
+  </div>
+</template>
+<script>
+import Pdfh5 from 'pdfh5'
+import 'pdfh5/css/pdfh5.css'
+
+export default {
+  name: 'Pdfh5',
+  data () {
+    return {
+      pdfh5: null,
+      // 鍙紩鍏ョ綉缁滄枃浠舵垨鑰呮湰鍦版枃浠�
+      pdfUrl: this.$route.query.fileUrl
+      // 濡傛灉寮曞叆鏈湴pdf鏂囦欢锛岄渶瑕佸皢pdf鏀惧湪public鏂囦欢澶逛笅锛屽紩鐢ㄦ椂浣跨敤缁濆璺緞锛�/锛氳〃绀簆ublic鏂囦欢澶癸級
+    }
+  },
+  mounted () {
+    console.log(this.pdfUrl)
+    this.initPdf()
+  },
+  methods: {
+    initPdf () {
+      // pdfh5瀹炰緥鍖栨椂浼犱袱涓弬鏁帮細selector閫夋嫨鍣紝options閰嶇疆椤瑰弬鏁帮紝浼氳繑鍥炰竴涓猵dfh5瀹炰緥瀵硅薄锛屽彲浠ョ敤鏉ユ搷浣減df锛岀洃鍚浉鍏充簨浠�
+      // pdfh5 = new Pdfh5(selector, options) goto鍒濆鍒扮鍑犻〉锛宭ogo璁剧疆姣忎竴椤祊df涓婄殑姘村嵃
+      this.pdfh5 = new Pdfh5('#report-content', {
+        pdfurl: this.pdfUrl,
+        goto: 1
+        // 璁剧疆姣忎竴椤祊df涓婄殑姘村嵃
+        // logo: { src: require('@/assets/images/bus/icon_head@2x.png'), x: 420, y: 700, width: 120, height: 120 }
+      })
+      this.pdfh5.scrollEnable(true) // 鍏佽pdf婊氬姩
+      // 鐩戝惉pdf鍑嗗寮�濮嬫覆鏌擄紝姝ゆ椂鍙互鎷垮埌pdf鎬婚〉鏁�
+      this.pdfh5.on('ready', function () {
+        console.log('鎬婚〉鏁�:' + this.totalNum)
+      })
+      // 鐩戝惉pdf鍔犺浇瀹屾垚浜嬩欢锛屽姞杞藉け璐ャ�佹覆鏌撴垚鍔熼兘浼氳Е鍙�
+      this.pdfh5.on('complete', (status, msg, time) => {
+        console.log('鐘舵��:' + status + '锛屼俊鎭�:' + msg + '锛岃�楁椂:' + time + '姣')
+      })
+    }
+  }
+}
+</script>
diff --git a/vue.config.js b/vue.config.js
index 84c0d8f..c3aebea 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -19,6 +19,7 @@
     hotOnly: false,
     proxy: {
       '/': {
+        ws: false,
         target: 'http://127.0.0.1:8090',
         changeOrigin: true
       }

--
Gitblit v1.9.1