856f4cc7 by simon

默认提交

1 parent e8d215ed
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 4
5 ## 介绍 5 ## 介绍
6 6
7 中国平安人寿(香港) 官网 7 本工程为“中国平安人寿(香港) 官网”前端项目工程。
8 8
9 --- 9 ---
10 10
...@@ -104,7 +104,7 @@ npm run sandbox ...@@ -104,7 +104,7 @@ npm run sandbox
104 104
105 #### 样式规范 105 #### 样式规范
106 106
107 - 优先使用 \_var.scss 声明的样式变量 107 - 优先使用 _var.scss 声明的样式变量
108 - font-family 名字顺序 Arial -> Microsoft YaHei 108 - font-family 名字顺序 Arial -> Microsoft YaHei
109 109
110 #### z-index 权重划分 110 #### z-index 权重划分
...@@ -123,6 +123,8 @@ npm run sandbox ...@@ -123,6 +123,8 @@ npm run sandbox
123 123
124 - 与 bootstrap 相比,purecss 更为轻量。 124 - 与 bootstrap 相比,purecss 更为轻量。
125 125
126 ---
127
126 ## 前后端数据交互 128 ## 前后端数据交互
127 129
128 #### 简述 130 #### 简述
...@@ -176,6 +178,15 @@ npm run sandbox ...@@ -176,6 +178,15 @@ npm run sandbox
176 178
177 --- 179 ---
178 180
181 ## 备注
182
183 pages目录下,只有一个空vue文件的目录均为顺应要求临时占坑。
184
185 #### 本地测试账号
186 91249124/ccc123!@# (可能会失效)
187
188 ---
189
179 ## TODO 190 ## TODO
180 191
181 - [x] 项目后期需补充 SEO 优化插件 PrerenderSPAPlugin 192 - [x] 后期需补充SEO优化,目标页面需讨论协商。
......
...@@ -9,7 +9,7 @@ let encryptSwitch = process.env.VUE_APP_CONTENT_ENCRYPT_SWITCH; ...@@ -9,7 +9,7 @@ let encryptSwitch = process.env.VUE_APP_CONTENT_ENCRYPT_SWITCH;
9 let rsa = new JsEncrypt(); 9 let rsa = new JsEncrypt();
10 rsa.setPublicKey(key); 10 rsa.setPublicKey(key);
11 let chars = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".split(","); 11 let chars = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".split(",");
12 12 // 生成随机AES秘钥
13 function randomAesKey() { 13 function randomAesKey() {
14 let res = ""; 14 let res = "";
15 for (let i = 0; i < 16; i++) { 15 for (let i = 0; i < 16; i++) {
...@@ -19,6 +19,11 @@ function randomAesKey() { ...@@ -19,6 +19,11 @@ function randomAesKey() {
19 return res; 19 return res;
20 }; 20 };
21 21
22 /**
23 * 对内容进行加密
24 * 结构约定为 {k,v}
25 * @param {*} obj
26 */
22 function encryptContent(obj) { 27 function encryptContent(obj) {
23 let aesKey = randomAesKey(); 28 let aesKey = randomAesKey();
24 let key = CryptoJS.enc.Utf8.parse(aesKey); 29 let key = CryptoJS.enc.Utf8.parse(aesKey);
...@@ -36,16 +41,10 @@ function encryptContent(obj) { ...@@ -36,16 +41,10 @@ function encryptContent(obj) {
36 return result; 41 return result;
37 }; 42 };
38 43
39 // import { 44 // function Toast(msg) {
40 // Toast 45 // console.log("msg:", msg);
41 // } from 'vant'; 46 // }
42
43 function Toast(msg) {
44 console.log("msg:", msg);
45 }
46 47
47 // axios的默认url
48 // axios.defaults.baseURL = ""
49 48
50 // 服务器地址 49 // 服务器地址
51 // let base = process.env.REQUEST_DOMAIN || "http://localhost:9101"; 50 // let base = process.env.REQUEST_DOMAIN || "http://localhost:9101";
...@@ -57,11 +56,11 @@ if (window.location.href.indexOf("192.168") != -1) { ...@@ -57,11 +56,11 @@ if (window.location.href.indexOf("192.168") != -1) {
57 baseURL = "https://ow.go.qudone.com"; 56 baseURL = "https://ow.go.qudone.com";
58 } 57 }
59 const axios = axiosIns.create({ 58 const axios = axiosIns.create({
60 // baseURL: process.env.VUE_APP_BASE_URL,
61 baseURL: baseURL, 59 baseURL: baseURL,
62 timeout: 10000 60 timeout: 10000
63 }) 61 })
64 62
63 // 加密模式
65 let encryptPattern = [ 64 let encryptPattern = [
66 /^\/pingan_hklife_webapi\/policy.*/, 65 /^\/pingan_hklife_webapi\/policy.*/,
67 /^\/pingan_hklife_webapi\/user.*/, 66 /^\/pingan_hklife_webapi\/user.*/,
...@@ -70,6 +69,7 @@ let encryptPattern = [ ...@@ -70,6 +69,7 @@ let encryptPattern = [
70 /^\/pingan_hklife_webapi\/reset.*/, 69 /^\/pingan_hklife_webapi\/reset.*/,
71 ] 70 ]
72 71
72 // 加密接口白名单,上传接口不需要加密
73 let encryptWhileList = [ 73 let encryptWhileList = [
74 "/pingan_hklife_webapi/policy/idPicUpload", 74 "/pingan_hklife_webapi/policy/idPicUpload",
75 "/pingan_hklife_webapi/policy/updateIdFileV2", 75 "/pingan_hklife_webapi/policy/updateIdFileV2",
......
...@@ -131,7 +131,7 @@ export default { ...@@ -131,7 +131,7 @@ export default {
131 }, 131 },
132 watch: { 132 watch: {
133 userInfo(val) { 133 userInfo(val) {
134 this._buildLoginMenu(); 134 this.buildLoginMenu();
135 } 135 }
136 }, 136 },
137 created() { 137 created() {
......
...@@ -90,6 +90,7 @@ export default { ...@@ -90,6 +90,7 @@ export default {
90 } 90 }
91 } 91 }
92 }, 92 },
93 // 获取登陆cid
93 loadCidIfLogin() { 94 loadCidIfLogin() {
94 let param = { 95 let param = {
95 sid: this.userInfo.sid 96 sid: this.userInfo.sid
...@@ -114,6 +115,7 @@ export default { ...@@ -114,6 +115,7 @@ export default {
114 this.step = 1; 115 this.step = 1;
115 }); 116 });
116 }, 117 },
118 // 校验cid
117 checkCid() { 119 checkCid() {
118 let param = { 120 let param = {
119 cid: this.cid 121 cid: this.cid
......
1 /**
2 * 页面描述:客户服务
3 */
4
1 import api from '@/api/api' 5 import api from '@/api/api'
2 import { 6 import {
3 httpGet, 7 httpGet,
......
1 /**
2 * 页面描述:客户服务
3 * 承载客户服务的各个菜单页面
4 */
5
6
1 import api from '@/api/api' 7 import api from '@/api/api'
2 import { 8 import {
3 httpGet, 9 httpGet,
4 httpPost 10 httpPost
5 } from '@/api/fetch-api.js' 11 } from '@/api/fetch-api.js'
6 12
13 // 联系我们
7 import ContactUs from './components/contact-us.vue' 14 import ContactUs from './components/contact-us.vue'
8 import InsuranceQuery from './components/insurance-query.vue' 15 // 缴付保费
9 import reservation from './components/reservation.vue'
10 import PaymentType from './components/payment-type.vue' 16 import PaymentType from './components/payment-type.vue'
11 import ComplaintAcceptance from './components/complaint-acceptance.vue' 17 // 保单查询
12 import CommonForm from './components/common-form.vue' 18 import InsuranceQuery from './components/insurance-query.vue'
13 19
20 // 保单变更指引
14 import PolicyChangeGuide from './components/policy-change-guide.vue' 21 import PolicyChangeGuide from './components/policy-change-guide.vue'
22 // 保单方式变更
15 import PolicyChangeContact from './components/policy-change-contact.vue' 23 import PolicyChangeContact from './components/policy-change-contact.vue'
24 // 客户资料变更
16 import PolicyChangeInformation from './components/policy-change-information.vue' 25 import PolicyChangeInformation from './components/policy-change-information.vue'
26
27 // 理赔申请
17 import Clarms from './components/clarms-comp.vue' 28 import Clarms from './components/clarms-comp.vue'
29 // 预约服务
30 import Reservation from './components/reservation.vue'
31 // 投诉受理
32 import ComplaintAcceptance from './components/complaint-acceptance.vue'
33 // 常用表格
34 import CommonForm from './components/common-form.vue'
35
18 36
19 export default { 37 export default {
20 data() { 38 data() {
...@@ -36,7 +54,7 @@ export default { ...@@ -36,7 +54,7 @@ export default {
36 if (a == "m4") { 54 if (a == "m4") {
37 a = "m41" 55 a = "m41"
38 } 56 }
39 if(a == "m5"){ 57 if (a == "m5") {
40 this.$router.push({ 58 this.$router.push({
41 path: "/clarms", 59 path: "/clarms",
42 query: {} 60 query: {}
...@@ -61,7 +79,7 @@ export default { ...@@ -61,7 +79,7 @@ export default {
61 }, 79 },
62 created() { 80 created() {
63 let activity = this.$route.query.q; 81 let activity = this.$route.query.q;
64 if(activity == "m5"){ 82 if (activity == "m5") {
65 this.$router.push({ 83 this.$router.push({
66 path: "/clarms", 84 path: "/clarms",
67 query: {} 85 query: {}
...@@ -73,7 +91,7 @@ export default { ...@@ -73,7 +91,7 @@ export default {
73 components: { 91 components: {
74 ContactUs, 92 ContactUs,
75 InsuranceQuery, 93 InsuranceQuery,
76 reservation, 94 Reservation,
77 PaymentType, 95 PaymentType,
78 ComplaintAcceptance, 96 ComplaintAcceptance,
79 CommonForm, 97 CommonForm,
......
1
2 /**
3 * 页面描述:完善基本信息
4 *
5 */
6
7
1 import api from '@/api/api' 8 import api from '@/api/api'
2 import { 9 import {
3 httpGet, 10 httpGet,
......
1 /**
2 * 页面描述:官网首页
3 */
4
5
1 import api from '@/api/api'; 6 import api from '@/api/api';
2 import { 7 import {
3 httpGet, 8 httpGet,
......
1 /**
2 * 页面描述:五项信息首页
3 */
4
5
1 import api from '@/api/api' 6 import api from '@/api/api'
2 import { 7 import {
3 httpGet, 8 httpGet,
......
1 /**
2 * 页面描述:登陆页面
3 *
4 */
5
6
1 import { 7 import {
2 mapGetters, 8 mapGetters,
3 mapActions, 9 mapActions,
...@@ -161,18 +167,11 @@ export default { ...@@ -161,18 +167,11 @@ export default {
161 this.modalSimpleVisiable = false; 167 this.modalSimpleVisiable = false;
162 this.modalProtocolVisiable = false; 168 this.modalProtocolVisiable = false;
163 }, 169 },
164 onCheckHandler() { 170 onCheckHandler() {},
165
166 },
167 onProtocolHandler() { 171 onProtocolHandler() {
168 this.modalProtocolVisiable = true; 172 this.modalProtocolVisiable = true;
169 // this.$router.push({
170 // path: "/protocol"
171 // })
172 },
173 onSubmitHandler() {
174
175 }, 173 },
174 onSubmitHandler() {},
176 toRegisterPage() { 175 toRegisterPage() {
177 this.$router.push({ 176 this.$router.push({
178 path: "/register" 177 path: "/register"
...@@ -197,6 +196,7 @@ export default { ...@@ -197,6 +196,7 @@ export default {
197 this.mobileOptions = mobileOptions; 196 this.mobileOptions = mobileOptions;
198 this.mobileTip = this.mobileOptions[0]; 197 this.mobileTip = this.mobileOptions[0];
199 }, 198 },
199 // 获取并判断是否显示图形验证码
200 handlerIsShowImageVcode() { 200 handlerIsShowImageVcode() {
201 return new Promise((resolve, reject) => { 201 return new Promise((resolve, reject) => {
202 httpPost({ 202 httpPost({
...@@ -260,6 +260,7 @@ export default { ...@@ -260,6 +260,7 @@ export default {
260 } 260 }
261 return true; 261 return true;
262 }, 262 },
263 // 登陆
263 selfLogin() { 264 selfLogin() {
264 if (this.pwdLoginDisabled) { 265 if (this.pwdLoginDisabled) {
265 return; 266 return;
...@@ -295,8 +296,8 @@ export default { ...@@ -295,8 +296,8 @@ export default {
295 }) 296 })
296 297
297 }, 298 },
298 _passwordLogin() {
299 // 刷新图形二维码 299 // 刷新图形二维码
300 _passwordLogin() {
300 if (!this.loginForm.userId) { 301 if (!this.loginForm.userId) {
301 this._showEmptyInputTips(); 302 this._showEmptyInputTips();
302 return; 303 return;
...@@ -392,6 +393,7 @@ export default { ...@@ -392,6 +393,7 @@ export default {
392 path: path 393 path: path
393 }); 394 });
394 }, 395 },
396 // opt登陆
395 _otpLogin() { 397 _otpLogin() {
396 this._checkOptParams().then(() => { 398 this._checkOptParams().then(() => {
397 let data = { 399 let data = {
...@@ -461,6 +463,7 @@ export default { ...@@ -461,6 +463,7 @@ export default {
461 }); 463 });
462 }); 464 });
463 }, 465 },
466 // 刷新
464 handlerRefreshImageValue() { 467 handlerRefreshImageValue() {
465 httpPost({ 468 httpPost({
466 url: api.stdRefreshVcode, 469 url: api.stdRefreshVcode,
......
1 /**
2 * 页面描述:VHIS产品页面
3 */
4
5
1 import api from '@/api/api' 6 import api from '@/api/api'
2 import { 7 import {
3 httpGet, 8 httpGet,
...@@ -94,14 +99,9 @@ export default { ...@@ -94,14 +99,9 @@ export default {
94 break; 99 break;
95 } 100 }
96 }, 101 },
102 // 初始化视频组件
97 refreshVideoPlayer(videoUrl, posterUrl) { 103 refreshVideoPlayer(videoUrl, posterUrl) {
98 // let videoUrl = sessionStorage.getItem("_video_url");
99 // let posterUrl = sessionStorage.getItem("_poster_url");
100 let playerOptions = { 104 let playerOptions = {
101 // width: 800,
102 // height: 450,
103 // width: 1200,
104 // height: 675,
105 aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3") 105 aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
106 autoplay: false, //如果true,浏览器准备好时开始回放。 106 autoplay: false, //如果true,浏览器准备好时开始回放。
107 muted: true, // 默认情况下将会消除任何音频。 107 muted: true, // 默认情况下将会消除任何音频。
...@@ -109,9 +109,7 @@ export default { ...@@ -109,9 +109,7 @@ export default {
109 // playbackRates: [0.7, 1.0, 1.5, 2.0],//播放速度 109 // playbackRates: [0.7, 1.0, 1.5, 2.0],//播放速度
110 sources: [{ 110 sources: [{
111 type: "video/mp4", 111 type: "video/mp4",
112 // mp4
113 src: videoUrl, 112 src: videoUrl,
114 // webm
115 // src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm" 113 // src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"
116 }], 114 }],
117 poster: posterUrl, 115 poster: posterUrl,
...@@ -146,18 +144,15 @@ export default { ...@@ -146,18 +144,15 @@ export default {
146 element.showMore = false; 144 element.showMore = false;
147 }); 145 });
148 } 146 }
149 // console.log("productList:", productList);
150 this.productList = productList; 147 this.productList = productList;
151 }, 148 },
152 onShowMoreHandler(idx) { 149 onShowMoreHandler(idx) {
153 // console.log("idx:", idx);
154 let productList = this.productList; 150 let productList = this.productList;
155 let curProduct = productList[idx]; 151 let curProduct = productList[idx];
156 if (curProduct) { 152 if (curProduct) {
157 curProduct.showMore = !curProduct.showMore; 153 curProduct.showMore = !curProduct.showMore;
158 } 154 }
159 this.productList = productList; 155 this.productList = productList;
160 // console.log("this.productList:", this.productList);
161 }, 156 },
162 initData() { 157 initData() {
163 this.initProduct(); 158 this.initProduct();
...@@ -189,13 +184,6 @@ export default { ...@@ -189,13 +184,6 @@ export default {
189 this.bottomBtnType = targetData.bottomUrlType; 184 this.bottomBtnType = targetData.bottomUrlType;
190 this.bottomBtnLink = targetData.bottomUrlLink; 185 this.bottomBtnLink = targetData.bottomUrlLink;
191 } 186 }
192 // this.fetchBanner().then(res => {
193 // this.bannerCandidateList = res;
194 // this.refreshBanner();
195 // });
196 // this.fetchIndexVideo().then(res => {
197 // this.refreshVideoPlayer();
198 // });
199 }, 187 },
200 initActivity() { 188 initActivity() {
201 let d = localStorage.getItem("voluntaryInfo"); 189 let d = localStorage.getItem("voluntaryInfo");
......
1 /**
2 * 页面描述:vhis
3 * 嵌套平安提供的iFrame
4 */
5
1 import { 6 import {
2 mapState 7 mapState
3 } from "vuex"; 8 } from "vuex";
......