Commit c72c87c8384311b5b843fb18e3ef76820cf0f8e0

Authored by 夏洋涛
1 parent caf8daa7
Exists in master

feat:审核问题修改,标题栏,适老化

public/index.html
... ... @@ -6,43 +6,9 @@
6 6 <meta http-equiv="X-UA-Compatible" content="IE=edge">
7 7 <meta name="viewport" content="width=device-width,initial-scale=1.0">
8 8 <link rel="icon" href="<%= BASE_URL %>favicon.ico">
9   - <title>绍兴研学</title>
10   - <!-- 埋点 -->
11   - <script>
12   - (function (w, d, s, q, i) {
13   - w[q] = w[q] || [];
14   - var f = d.getElementsByTagName(s)[0],
15   - j = d.createElement(s);
16   - j.async = true;
17   - j.id = 'beacon-aplus';
18   - j.src = 'https://d.alicdn.com/alilog/mlog/aplus.js?id=202951085';
19   - f.parentNode.insertBefore(j, f);
20   - })(window, document, 'script', 'aplus_queue');
21   -
22   - aplus_queue.push({
23   - action: 'aplus.setMetaInfo',
24   - arguments: ['aplus-rhost-v', 'alog.zjzwfw.gov.cn']
25   - });
26   -
27   -
28   - aplus_queue.push({
29   - action: 'aplus.setMetaInfo',
30   - arguments: ['aplus-rhost-g', 'alog.zjzwfw.gov.cn']
31   - });
32   -
33   - aplus_queue.push({
34   - action: 'aplus.setMetaInfo',
35   - arguments: ['appId', '60506758']
36   - });
37   - aplus_queue.push({
38   - 'action': 'aplus.sendPV',
39   - 'arguments': [{
40   - is_auto: false
41   - }, {
42   - miniAppId: '2002281863',
43   - }]
44   - })
45   - </script>
  9 + <title></title>
  10 + <script type="text/javascript" src="https://assets.zjzwfw.gov.cn/assets/ZWJSBridge/1.1.0/zwjsbridge.js"></script>
  11 + <script type="text/javascript" src="https://assets.zjzwfw.gov.cn/assets/zwlog/1.0.0/zwlog.js"></script>
46 12 </head>
47 13  
48 14 <body>
... ... @@ -53,8 +19,6 @@
53 19 <div id="app"></div>
54 20 <!-- built files will be auto injected -->
55 21 <script src="https://webapi.amap.com/maps?v=1.4.15&key=61af1988b71a634a59a0de29409baeb8"></script>
56   - <!-- 政务中台JSAPI -->
57   - <script src="//assets.zjzwfw.gov.cn/assets/ZWJSBridge/1.0.1/zwjsbridge.js"></script>
58 22 </body>
59 23  
60 24 </html>
61 25 \ No newline at end of file
... ...
src/App.vue
... ... @@ -17,28 +17,34 @@ export default {
17 17 showSchool: false,
18 18 }
19 19 },
  20 + watch: {
  21 + $route(to, from) {
  22 + console.log('zheliban 》》》 ', to, from)
  23 + this.$zwlogPvGlobal({ url: to.meta.pagePath, enterPageTime: new Date() })
  24 + this.$zwlogPvGlobal({
  25 + url: from.meta.pagePath,
  26 + leavePageTime: new Date(),
  27 + })
  28 + },
  29 + },
20 30 mounted() {
21 31 // new vConsole()
22 32 ZWJSBridge.onReady(() => {
23   - console.log('初始化完成后,执行bridge方法')
24   - })
25   - const isElder = localStorage.getItem('isElder')
26   - if (isElder) {
27   - this.isElder = true
28   - } else {
29 33 ZWJSBridge.getUiStyle({})
30 34 .then((result) => {
31 35 console.log(result)
32 36 if (result.uiStyle == 'elder') {
33 37 this.isElder = true
34 38 localStorage.setItem('isElder', 1)
  39 + } else {
  40 + localStorage.removeItem('isElder')
35 41 }
36 42 })
37 43 //浙里办APP 6.11.0 版本以下版本标准模式兼容
38 44 .catch((error) => {
39 45 console.log(error)
40 46 })
41   - }
  47 + })
42 48 },
43 49 methods: {
44 50 setElder(e) {
... ...
src/common/zwUtil.js 0 → 100644
... ... @@ -0,0 +1,134 @@
  1 +
  2 +// 埋点对象
  3 +var zwlog;
  4 +
  5 +// 页面埋点数据
  6 +var pageLogMap = {};
  7 +
  8 +/*
  9 + * *******用户信息采集,同时声明 Zwlog 对象实例
  10 + * uerId 用户 ID 没登录就非必填,登录了必填
  11 + */
  12 +export function initZwlog () {
  13 + zwlog = new ZwLog({
  14 + _user_id: localStorage.getItem('centerNo'),
  15 + _user_nick: localStorage.getItem('_user_nick')
  16 + });
  17 +}
  18 +
  19 +/*
  20 + * *******PV 日志参数- global_args
  21 + * url 页面路径 【选填】(未传参默认获取当前路由地址)
  22 + * enterPageTime 【必填】(默认在路由改变的时候自动获取时间) 进入页面的时间 new Date()
  23 + * leavePageTime 【必填】(默认在路由改变的时候自动获取时间) 离开页面的时间 new Date()
  24 + * loadTime【必填】(页面onShow中获取当前时间) 加载完的时间 new Date()
  25 + * responseTime 【必填】(页面onShow的nextTick中获取当前时间) 响应完的时间 new Date()
  26 + */
  27 +export function zwlogPvGlobal ({
  28 + url = null,
  29 + enterPageTime = null,
  30 + leavePageTime = null,
  31 + loadTime = null,
  32 + responseTime = null
  33 +} = {}) {
  34 + console.log('调用zwlogPvGlobal')
  35 + if (!zwlog) initZwlog();
  36 + let path = url || getCurRoute();
  37 + if (!pageLogMap.hasOwnProperty(path))
  38 + pageLogMap[path] = {
  39 + enterPageTime: null,
  40 + leavePageTime: null,
  41 + loadTime: null,
  42 + responseTime: null,
  43 + };
  44 +
  45 + if (enterPageTime) pageLogMap[path].enterPageTime = enterPageTime;
  46 + if (leavePageTime) pageLogMap[path].leavePageTime = leavePageTime;
  47 + if (loadTime) pageLogMap[path].loadTime = loadTime;
  48 + if (responseTime) pageLogMap[path].responseTime = responseTime;
  49 +
  50 + console.log("zheliban === " + path, pageLogMap[path]);
  51 +
  52 + if (
  53 + pageLogMap[path].enterPageTime &&
  54 + pageLogMap[path].leavePageTime &&
  55 + pageLogMap[path].loadTime &&
  56 + pageLogMap[path].responseTime
  57 + ) {
  58 + /*
  59 + * miniAppId 应用开发管理 平台 appId
  60 + * miniAppName 应用开发管理 平台应用名称
  61 + * log_status 用户登录状态 (01:未登录/ 02:单点登录)
  62 + * Page_duration 浏览时长 用户从进入到离开当 前页面的时长
  63 + * t2 页面加载时间 页面启动到加载完成 的时间
  64 + * t0 页面响应时间 页面启动到页面响应 完成的时间
  65 + * pageId 应用页面 ID
  66 + * pageName 应用页面名称
  67 + */
  68 + let Page_duration =
  69 + pageLogMap[path].leavePageTime.getTime() -
  70 + pageLogMap[path].enterPageTime.getTime();
  71 + let t2 =
  72 + pageLogMap[path].loadTime.getTime() -
  73 + pageLogMap[path].enterPageTime.getTime();
  74 + let t0 =
  75 + pageLogMap[path].responseTime.getTime() -
  76 + pageLogMap[path].enterPageTime.getTime();
  77 + setTimeout(() => {
  78 + let pvParams = {
  79 + miniAppId: "2002281863",
  80 + miniAppName: "绍兴研学",
  81 + log_status: "2002281863",
  82 + Page_duration: Page_duration / 1000 + "秒",
  83 + t2: t2 / 1000 + "秒",
  84 + t0: t0 / 1000 + "秒",
  85 + pageId: path,
  86 + pageName: getNavigationBarTitleText(),
  87 + };
  88 + zwlog.onReady(function () {
  89 + console.log('zwlog onReady')
  90 + zwlog.sendPV(pvParams);
  91 + delete pageLogMap[path];
  92 + });
  93 + }, 500);
  94 + } else {
  95 + let result = "";
  96 + for (let k in pageLogMap[path]) {
  97 + if (!pageLogMap[path][k]) result += k + ",";
  98 + }
  99 + console.log("zheliban === 浙里办页面" + path + "埋点缺少参数=>>", result);
  100 + }
  101 +}
  102 +// 获取页面的导航title
  103 +function getNavigationBarTitleText () {
  104 + // let pages = getCurrentPages();
  105 + // let page = pages[pages.length - 1];
  106 + // let title = page.$holder.navigationBarTitleText;
  107 + // console.log("zheliban === getNavigationBarTitleText title=", title);
  108 + return document.title;
  109 +}
  110 +
  111 +// 点击事件的埋点
  112 +export function zwlogRecord ({ code = "" } = {}) {
  113 + if (!zwlog) initZwlog();
  114 + let path = getCurRoute();
  115 + zwlog.onReady(function () {
  116 + zwlog.record({
  117 + trackerEventCode: `${code}`,
  118 + eventType: "OTHER",
  119 + eventParams: {
  120 + pageId: path, //采用页面路径,也可以自己给每个页面设置一个pageId
  121 + pageName: getNavigationBarTitleText(),
  122 + },
  123 + });
  124 + });
  125 +}
  126 +
  127 +
  128 +let getCurRoute = () => {
  129 + // let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
  130 + // let curRoute = routes[routes.length - 1].route; // 获取当前页面路由,也就是最后一个打开的页面路由
  131 + // console.log("curRoute", curRoute);
  132 +
  133 + return '/';
  134 +};
0 135 \ No newline at end of file
... ...
src/main.js
... ... @@ -26,6 +26,9 @@ Vue.prototype.TestUnionId = &#39;oJPmPuLaAx2x2DaRGfCFeYuLWzLU&#39; //夏
26 26 Vue.prototype.projectCity = '绍兴市'; //地区
27 27 Vue.prototype.projectCityCode = '0575'; //地区编码
28 28  
  29 +import {zwlogPvGlobal} from './common/zwUtil.js'
  30 +Vue.prototype.$zwlogPvGlobal = zwlogPvGlobal;
  31 +
29 32 Vue.use(Vant);
30 33 Vue.use(ImagePreview);
31 34 Vue.config.productionTip = false
... ...
src/router/index.js
... ... @@ -3,10 +3,10 @@ import VueRouter from &#39;vue-router&#39;
3 3  
4 4 Vue.use(VueRouter)
5 5 const [routerPush, routerReplace] = [VueRouter.prototype.push, VueRouter.prototype.replace];
6   -VueRouter.prototype.push = function push(to) {
  6 +VueRouter.prototype.push = function push (to) {
7 7 return routerPush.call(this, to).catch(err => err)
8 8 }
9   -VueRouter.prototype.replace = function replace(location) {
  9 +VueRouter.prototype.replace = function replace (location) {
10 10 return routerReplace.call(this, location).catch(error => error);
11 11 };
12 12 const routes = [
... ... @@ -14,7 +14,7 @@ const routes = [
14 14 path: '/502',
15 15 name: '502',
16 16 component: () =>
17   - import ('@/views/502.vue'),
  17 + import('@/views/502.vue'),
18 18 meta: {
19 19 title: '502',
20 20 }
... ... @@ -23,7 +23,7 @@ const routes = [
23 23 path: '/',
24 24 name: 'Home',
25 25 component: () =>
26   - import ('@/views/Home.vue'),
  26 + import('@/views/Home.vue'),
27 27 meta: {
28 28 title: '绍兴研学'
29 29 }
... ... @@ -32,7 +32,7 @@ const routes = [
32 32 path: '/Find',
33 33 name: 'Find',
34 34 component: () =>
35   - import ('@/views/Find.vue'),
  35 + import('@/views/Find.vue'),
36 36 meta: {
37 37 title: '发现'
38 38 }
... ... @@ -40,7 +40,7 @@ const routes = [
40 40 path: '/Foot',
41 41 name: 'Foot',
42 42 component: () =>
43   - import ('@/views/Foot.vue'),
  43 + import('@/views/Foot.vue'),
44 44 meta: {
45 45 title: '足迹'
46 46 }
... ... @@ -48,7 +48,7 @@ const routes = [
48 48 path: '/Authorize',
49 49 name: 'Authorize',
50 50 component: () =>
51   - import ('@/views/Authorize.vue'),
  51 + import('@/views/Authorize.vue'),
52 52 meta: {
53 53 title: '授权中...'
54 54 }
... ... @@ -57,7 +57,7 @@ const routes = [
57 57 path: '/MyClassList',
58 58 name: 'MyClassList',
59 59 component: () =>
60   - import ('@/views/MyClassList.vue'),
  60 + import('@/views/MyClassList.vue'),
61 61 meta: {
62 62 title: '基地签到'
63 63 }
... ... @@ -65,12 +65,12 @@ const routes = [
65 65 path: '/BaseDetail',
66 66 name: 'BaseDetail',
67 67 component: () =>
68   - import ('@/views/BaseDetail.vue')
  68 + import('@/views/BaseDetail.vue')
69 69 }, {
70 70 path: '/CourseDetail',
71 71 name: 'CourseDetail',
72 72 component: () =>
73   - import ('@/views/CourseDetail.vue'),
  73 + import('@/views/CourseDetail.vue'),
74 74 meta: {
75 75 title: '课程详情'
76 76 }
... ... @@ -78,52 +78,52 @@ const routes = [
78 78 path: '/ReleaseStory',
79 79 name: 'ReleaseStory',
80 80 component: () =>
81   - import ('@/views/ReleaseStory.vue'),
  81 + import('@/views/ReleaseStory.vue'),
82 82 }, {
83 83 path: '/ReleaseEvaluate',
84 84 name: 'ReleaseEvaluate',
85 85 component: () =>
86   - import ('@/views/ReleaseEvaluate.vue'),
  86 + import('@/views/ReleaseEvaluate.vue'),
87 87 }, {
88 88 path: '/MyCollection',
89 89 name: 'MyCollection',
90 90 component: () =>
91   - import ('@/views/MyCollection.vue'),
  91 + import('@/views/MyCollection.vue'),
92 92 }, {
93 93 path: '/EvaluateDetail',
94 94 name: 'EvaluateDetail',
95 95 component: () =>
96   - import ('@/views/EvaluateDetail.vue'),
  96 + import('@/views/EvaluateDetail.vue'),
97 97 }, {
98 98 path: '/BannerDetail',
99 99 name: 'BannerDetail',
100 100 component: () =>
101   - import ('@/views/BannerDetail.vue'),
  101 + import('@/views/BannerDetail.vue'),
102 102 }, {
103 103 path: '/SearchDetail',
104 104 name: 'SearchDetail',
105 105 component: () =>
106   - import ('@/views/SearchDetail.vue'),
  106 + import('@/views/SearchDetail.vue'),
107 107 }, {
108 108 path: '/FeedBack',
109 109 name: 'FeedBack',
110 110 component: () =>
111   - import ('@/views/FeedBack.vue'),
  111 + import('@/views/FeedBack.vue'),
112 112 }, {
113 113 path: '/About',
114 114 name: 'About',
115 115 component: () =>
116   - import ('@/views/About.vue'),
  116 + import('@/views/About.vue'),
117 117 }, {
118 118 path: '/Tips',
119 119 name: 'Tips',
120 120 component: () =>
121   - import ('@/views/Tips.vue'),
  121 + import('@/views/Tips.vue'),
122 122 }, {
123 123 path: '/HomeYX',
124 124 name: 'HomeYX',
125 125 component: () =>
126   - import ('@/views/Home/HomeYX.vue'),
  126 + import('@/views/Home/HomeYX.vue'),
127 127 meta: {
128 128 title: '个人中心(绍兴研学)'
129 129 }
... ... @@ -132,7 +132,7 @@ const routes = [
132 132 path: '/service_order',
133 133 name: 'ServiceOrder',
134 134 component: () =>
135   - import ('@/views/Home/ServiceOrder.vue'),
  135 + import('@/views/Home/ServiceOrder.vue'),
136 136 meta: {
137 137 title: '我的订单'
138 138 }
... ... @@ -141,19 +141,19 @@ const routes = [
141 141 path: '/YanxueCode',
142 142 name: 'YanxueCode',
143 143 component: () =>
144   - import ('@/views/Home/YanxueCode.vue'),
  144 + import('@/views/Home/YanxueCode.vue'),
145 145 },
146 146 {
147 147 path: '/YanxueInfo',
148 148 name: 'YanxueInfo',
149 149 component: () =>
150   - import ('@/views/Home/YanxueInfo.vue'),
  150 + import('@/views/Home/YanxueInfo.vue'),
151 151 },
152 152 {
153 153 path: '/select_contact',
154 154 name: 'SelectContact',
155 155 component: () =>
156   - import ('@/views/Home/SelectContact.vue'),
  156 + import('@/views/Home/SelectContact.vue'),
157 157 meta: {
158 158 title: '选择联系人'
159 159 }
... ... @@ -162,7 +162,7 @@ const routes = [
162 162 path: '/edit_contact',
163 163 name: 'EditContact',
164 164 component: () =>
165   - import ('@/views/Home/EditContact.vue'),
  165 + import('@/views/Home/EditContact.vue'),
166 166 meta: {
167 167 title: '修改联系人'
168 168 }
... ... @@ -171,7 +171,7 @@ const routes = [
171 171 path: '/StudentDetail',
172 172 name: 'StudentDetail',
173 173 component: () =>
174   - import ('@/views/Home/StudentDetail.vue'),
  174 + import('@/views/Home/StudentDetail.vue'),
175 175 meta: {
176 176 title: '学生信息'
177 177 }
... ... @@ -180,7 +180,7 @@ const routes = [
180 180 path: '/login_public',
181 181 name: 'LoginPublic',
182 182 component: () =>
183   - import ('@/views/Home/LoginPublic.vue'),
  183 + import('@/views/Home/LoginPublic.vue'),
184 184 meta: {
185 185 title: '绑定手机号'
186 186 }
... ... @@ -189,7 +189,7 @@ const routes = [
189 189 path: '/evaluateCourse',
190 190 name: 'evaluateCourse',
191 191 component: () =>
192   - import ('@/views/Home/evaluateCourse.vue'),
  192 + import('@/views/Home/evaluateCourse.vue'),
193 193 meta: {
194 194 title: '评价'
195 195 }
... ... @@ -198,7 +198,7 @@ const routes = [
198 198 path: '/evaluateBase',
199 199 name: 'evaluateBase',
200 200 component: () =>
201   - import ('@/views/Home/evaluateBase.vue'),
  201 + import('@/views/Home/evaluateBase.vue'),
202 202 meta: {
203 203 title: '基地评价'
204 204 }
... ... @@ -207,7 +207,7 @@ const routes = [
207 207 path: '/evaluateDetail',
208 208 name: 'evaluateDetail',
209 209 component: () =>
210   - import ('@/views/Home/evaluateDetail.vue'),
  210 + import('@/views/Home/evaluateDetail.vue'),
211 211 meta: {
212 212 title: '评价详情'
213 213 }
... ... @@ -216,7 +216,7 @@ const routes = [
216 216 path: '/schoolFollow',
217 217 name: 'schoolFollow',
218 218 component: () =>
219   - import ('@/views/Travel/schoolFollow.vue'),
  219 + import('@/views/Travel/schoolFollow.vue'),
220 220 meta: {
221 221 title: '关注学校'
222 222 }
... ... @@ -225,7 +225,7 @@ const routes = [
225 225 path: '/schoolAttestation',
226 226 name: 'schoolAttestation',
227 227 component: () =>
228   - import ('@/views/Travel/schoolAttestation.vue'),
  228 + import('@/views/Travel/schoolAttestation.vue'),
229 229 meta: {
230 230 title: '已认证学校'
231 231 }
... ... @@ -234,7 +234,7 @@ const routes = [
234 234 path: '/classAttestation',
235 235 name: 'classAttestation',
236 236 component: () =>
237   - import ('@/views/Travel/classAttestation.vue'),
  237 + import('@/views/Travel/classAttestation.vue'),
238 238 meta: {
239 239 title: '集团认领'
240 240 }
... ... @@ -243,7 +243,7 @@ const routes = [
243 243 path: '/MyCollect',
244 244 name: 'MyCollect',
245 245 component: () =>
246   - import ('@/views/Home/MyCollect.vue'),
  246 + import('@/views/Home/MyCollect.vue'),
247 247 meta: {
248 248 title: '我的收藏'
249 249 }
... ... @@ -252,7 +252,7 @@ const routes = [
252 252 path: '/SelectionCourse',
253 253 name: 'SelectionCourse',
254 254 component: () =>
255   - import ('@/views/Service/CourseBaseList/SelectionCourse.vue'),
  255 + import('@/views/Service/CourseBaseList/SelectionCourse.vue'),
256 256 meta: {
257 257 title: '精选课程',
258 258 }
... ... @@ -261,7 +261,7 @@ const routes = [
261 261 path: '/SelectionBase',
262 262 name: 'SelectionBase',
263 263 component: () =>
264   - import ('@/views/Service/CourseBaseList/SelectionBase.vue'),
  264 + import('@/views/Service/CourseBaseList/SelectionBase.vue'),
265 265 meta: {
266 266 title: '研学基地',
267 267 }
... ... @@ -270,7 +270,7 @@ const routes = [
270 270 path: '/SearchResult',
271 271 name: 'SearchResult',
272 272 component: () =>
273   - import ('@/views/Service/CourseBaseList/SearchResult.vue'),
  273 + import('@/views/Service/CourseBaseList/SearchResult.vue'),
274 274 meta: {
275 275 title: '搜索结果',
276 276 }
... ... @@ -279,7 +279,7 @@ const routes = [
279 279 path: '/RankingList',
280 280 name: 'RankingList',
281 281 component: () =>
282   - import ('@/views/Service/CourseBaseList/RankingList.vue'),
  282 + import('@/views/Service/CourseBaseList/RankingList.vue'),
283 283 meta: {
284 284 title: '热门榜单',
285 285 }
... ... @@ -288,7 +288,7 @@ const routes = [
288 288 path: '/base_detail',
289 289 name: 'ServiceBaseDetail',
290 290 component: () =>
291   - import ('@/views/Service/BaseDetail/BaseDetail.vue'),
  291 + import('@/views/Service/BaseDetail/BaseDetail.vue'),
292 292 meta: {
293 293 title: '基地详情'
294 294 }
... ... @@ -297,7 +297,7 @@ const routes = [
297 297 path: '/abroad_detail',
298 298 name: 'ServiceAbroadDetail',
299 299 component: () =>
300   - import ('@/views/Service/AbroadDetail/AbroadDetail.vue'),
  300 + import('@/views/Service/AbroadDetail/AbroadDetail.vue'),
301 301 meta: {
302 302 title: '商品详情'
303 303 }
... ... @@ -306,7 +306,7 @@ const routes = [
306 306 path: '/abroad_detail_next',
307 307 name: 'ServiceAbroadDetailNext',
308 308 component: () =>
309   - import ('@/views/Service/AbroadDetailNext/AbroadDetailNext.vue'),
  309 + import('@/views/Service/AbroadDetailNext/AbroadDetailNext.vue'),
310 310 meta: {
311 311 title: '商品详情'
312 312 }
... ... @@ -315,7 +315,7 @@ const routes = [
315 315 path: '/talent_reserve',
316 316 name: 'TalentReserve',
317 317 component: () =>
318   - import ('@/views/Service/TalentReserve.vue'),
  318 + import('@/views/Service/TalentReserve.vue'),
319 319 meta: {
320 320 title: '预约'
321 321 }
... ... @@ -324,7 +324,7 @@ const routes = [
324 324 path: '/check_order_reserve',
325 325 name: 'ServiceCheckOrderReserve',
326 326 component: () =>
327   - import ('@/views/Service/CheckOrderReserve.vue'),
  327 + import('@/views/Service/CheckOrderReserve.vue'),
328 328 meta: {
329 329 title: '提交信息'
330 330 }
... ... @@ -333,7 +333,7 @@ const routes = [
333 333 path: '/article',
334 334 name: 'Article',
335 335 component: () =>
336   - import ('@/views/Article/Article.vue'),
  336 + import('@/views/Article/Article.vue'),
337 337 meta: {
338 338 title: '官方资讯'
339 339 }
... ... @@ -342,7 +342,7 @@ const routes = [
342 342 path: '/article_detail',
343 343 name: 'ArticleDetail',
344 344 component: () =>
345   - import ('@/views/Article/ArticleDetail.vue'),
  345 + import('@/views/Article/ArticleDetail.vue'),
346 346 meta: {
347 347 title: '官方资讯'
348 348 }
... ... @@ -352,7 +352,7 @@ const routes = [
352 352 path: '/teacher',
353 353 name: 'Teacher',
354 354 component: () =>
355   - import ('@/views/Teacher/Teacher.vue'),
  355 + import('@/views/Teacher/Teacher.vue'),
356 356 meta: {
357 357 title: '研学导师'
358 358 }
... ... @@ -361,7 +361,7 @@ const routes = [
361 361 path: '/GrowUpRecord',
362 362 name: 'GrowUpRecord',
363 363 component: () =>
364   - import ('@/views/GrowUp/GrowUpRecord.vue'),
  364 + import('@/views/GrowUp/GrowUpRecord.vue'),
365 365 meta: {
366 366 title: '成长记录'
367 367  
... ... @@ -371,7 +371,7 @@ const routes = [
371 371 path: '/MyAlbum',
372 372 name: 'MyAlbum',
373 373 component: () =>
374   - import ('@/views/GrowUp/MyAlbum.vue'),
  374 + import('@/views/GrowUp/MyAlbum.vue'),
375 375 meta: {
376 376 title: '我的相册',
377 377 }
... ... @@ -380,7 +380,7 @@ const routes = [
380 380 path: '/StoryRelease',
381 381 name: 'StoryRelease',
382 382 component: () =>
383   - import ('@/views/GrowUp/StoryRelease.vue'),
  383 + import('@/views/GrowUp/StoryRelease.vue'),
384 384 meta: {
385 385 title: '我的游记',
386 386 }
... ... @@ -389,7 +389,7 @@ const routes = [
389 389 path: '/StoryList',
390 390 name: 'StoryList',
391 391 component: () =>
392   - import ('@/views/GrowUp/StoryList.vue'),
  392 + import('@/views/GrowUp/StoryList.vue'),
393 393 meta: {
394 394 title: '研学游记',
395 395 }
... ... @@ -398,7 +398,7 @@ const routes = [
398 398 path: '/StoryDetail',
399 399 name: 'StoryDetail',
400 400 component: () =>
401   - import ('@/views/GrowUp/StoryDetail.vue'),
  401 + import('@/views/GrowUp/StoryDetail.vue'),
402 402 meta: {
403 403 title: '研学游记',
404 404 }
... ... @@ -407,7 +407,7 @@ const routes = [
407 407 path: '/MyStory',
408 408 name: 'MyStory',
409 409 component: () =>
410   - import ('@/views/GrowUp/MyStory.vue'),
  410 + import('@/views/GrowUp/MyStory.vue'),
411 411 meta: {
412 412 title: '我的游记',
413 413 }
... ... @@ -416,7 +416,7 @@ const routes = [
416 416 path: '/FeedbookList',
417 417 name: 'FeedbookList',
418 418 component: () =>
419   - import ('@/views/Feedbook/FeedbookList.vue'),
  419 + import('@/views/Feedbook/FeedbookList.vue'),
420 420 meta: {
421 421 title: '意见反馈',
422 422 }
... ... @@ -425,7 +425,7 @@ const routes = [
425 425 path: '/FeedbookReply',
426 426 name: 'FeedbookReply',
427 427 component: () =>
428   - import ('@/views/Feedbook/FeedbookReply.vue'),
  428 + import('@/views/Feedbook/FeedbookReply.vue'),
429 429 meta: {
430 430 title: '回复',
431 431 }
... ... @@ -434,7 +434,7 @@ const routes = [
434 434 path: '/FeedbookEdit',
435 435 name: 'FeedbookEdit',
436 436 component: () =>
437   - import ('@/views/Feedbook/FeedbookEdit.vue'),
  437 + import('@/views/Feedbook/FeedbookEdit.vue'),
438 438 meta: {
439 439 title: '撰写意见',
440 440 }
... ... @@ -450,7 +450,10 @@ router.beforeEach((to, from, next) =&gt; {
450 450 /* 路由发生变化修改页面title */
451 451 if (to.meta.title) {
452 452 // console.log(to)
453   - document.title = to.meta.title
  453 + // document.title = to.meta.title
  454 + ZWJSBridge.setTitle({
  455 + "title": to.meta.title
  456 + })
454 457 }
455 458 next()
456 459 })
... ...
src/views/Article/Article.vue
... ... @@ -53,3 +53,12 @@ export default {
53 53 }
54 54 </script>
55 55  
  56 +<style lang="scss">
  57 +// 长辈版
  58 +.elder {
  59 + .article .article_list_wrap_three .article_list_title,.article .article_list_wrap_three .read_num,.article .article_list_wrap_three .push_date{
  60 + font-size: 36px;
  61 + }
  62 +
  63 +}
  64 +</style>
... ...
src/views/Article/ArticleDetail.vue
... ... @@ -122,3 +122,12 @@ export default {
122 122 }
123 123 }
124 124 </style>
  125 +<style lang="scss">
  126 +// 长辈版
  127 +.elder {
  128 + #articleDetail .title,#articleDetail .time,#articleDetail .info_ctx_wrap p{
  129 + font-size: 36px;
  130 + }
  131 +
  132 +}
  133 +</style>
... ...
src/views/BaseDetail.vue
... ... @@ -117,13 +117,12 @@
117 117 </div>
118 118 </div>
119 119 <div class="box">
120   - <span v-if="userInfo" @click="addCollect"
  120 + <span @click="addCollect"
121 121 ><van-icon
122 122 :style="detailData.isCollect == 0 ? 'color:#fff;' : 'color:red;'"
123 123 :name="detailData.isCollect == 0 ? 'like-o' : 'like'"
124 124 /><b>{{ detailData.isCollect == 0 ? '加入收藏' : '已收藏' }}</b></span
125 125 >
126   - <span v-else @click="checkLogin"><b>去登录</b></span>
127 126 </div>
128 127 </div>
129 128 </div>
... ... @@ -154,36 +153,11 @@ export default {
154 153 var id = this.$route.query.id
155 154 if (id) {
156 155 this.id = id
157   - localStorage.setItem('prePageQuery', JSON.stringify({ id: this.$route.query.id }))
158 156 }
159   - let openid = localStorage.getItem('openId')
160   - let schoolNamesChoose = localStorage.getItem('schoolNamesChoose')
161   - if (schoolNamesChoose) {
162   - this.schoolNamesChoose = JSON.parse(schoolNamesChoose)
163   - }
164   - this.headImgUrl = localStorage.getItem('headImgUrl')
165   - this.nicknameUser = localStorage.getItem('nicknameUser')
166   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
167   - if (!openid) {
168   - this.$router.push({ name: 'Authorize' })
169   - } else {
170   - this.getUserInfo()
171   - }
172   - } else {
173   - localStorage.setItem('unionId', this.DevUnionId)
174   - this.getUserInfo()
175   - }
176   - window.addEventListener('scroll', this.handleScroll)
177 157 this.GetStudyBaseDetail()
178 158 },
179   - beforeDestroy() {
180   - window.removeEventListener('scroll', this.handleScroll)
181   - },
182 159  
183 160 methods: {
184   - initPage() {
185   - this.GetStudyBaseDetail()
186   - },
187 161  
188 162 goCourseDetail(id) {
189 163 this.$router.push({ path: '/CourseDetail', query: { id: id } })
... ... @@ -202,7 +176,6 @@ export default {
202 176 } // }
203 177 },
204 178 addCollect() {
205   - this.checkLogin()
206 179 if (this.detailData.isCollect == 0) {
207 180 var that = this
208 181 this.$toast.loading({
... ... @@ -222,18 +195,6 @@ export default {
222 195 })
223 196 }
224 197 },
225   - // 判断是否已登录
226   - checkLogin() {
227   - if (process.env.NODE_ENV != 'production') return true
228   - const userInfo = JSON.parse(localStorage.getItem('userInfo'))
229   - if (!userInfo?.phone) {
230   - localStorage.setItem('prePage', 'BaseDetail')
231   - localStorage.setItem('prePageQuery', JSON.stringify({ id: this.$route.query.id }))
232   - this.$router.push({ name: 'LoginPublic' })
233   - return false
234   - }
235   - return true
236   - },
237 198 tabClick(name, title) {
238 199 // 找到锚点
239 200 let anchorElement = document.getElementById(name)
... ... @@ -289,38 +250,6 @@ export default {
289 250 getNull(t) {
290 251 return t ? t : ''
291 252 },
292   - // 获取用户信息
293   - getUserInfo() {
294   - this.$toast.loading({
295   - message: '加载中...',
296   - duration: 0,
297   - forbidClick: true,
298   - })
299   - this.yxAxios
300   - .get(`${this.baseUrl}/prod/api/wx/wx1305e88d2bc74073/getUserInfo?unionId=${localStorage.getItem('unionId')}`)
301   - .then((res) => {
302   - this.$toast.clear()
303   - if (res.data.code == 200) {
304   - let userInfo = res.data.data
305   - this.userInfo = userInfo
306   - localStorage.setItem('userInfo', JSON.stringify(userInfo))
307   - this.initPage()
308   - if (res.data.data.schoolNames || res.data.data.schoolNames == [] || res.data.data.schoolNames == 'null') {
309   - localStorage.setItem('schoolNames', JSON.stringify(res.data.data.schoolNames))
310   - this.$store.commit('changeSchool', res.data.data.schoolNames)
311   - if (!localStorage.getItem('schoolNamesChoose')) {
312   - localStorage.setItem('schoolNamesChoose', JSON.stringify(res.data.data.schoolNames[0]))
313   - this.schoolNamesChoose = res.data.data.schoolNames[0]
314   - }
315   - } else {
316   - localStorage.setItem('schoolNames', [])
317   - this.$store.commit('changeSchool', [])
318   - }
319   - }else{
320   - this.initPage()
321   - }
322   - })
323   - },
324 253 },
325 254 }
326 255 </script>
... ...
src/views/Feedbook/FeedbookList.vue
... ... @@ -106,3 +106,11 @@ export default {
106 106 }
107 107 }
108 108 </style>
  109 +<style lang="scss">
  110 +// 长辈版
  111 +.elder {
  112 + .feedbook_list .btn,.feedbook_list .item .content,.feedbook_list .item .time{
  113 + font-size: 36px;
  114 + }
  115 +}
  116 +</style>
... ...
src/views/Feedbook/FeedbookReply.vue
... ... @@ -106,3 +106,11 @@ export default {
106 106 }
107 107 }
108 108 </style>
  109 +<style lang="scss">
  110 +// 长辈版
  111 +.elder {
  112 + .feedbook_reply .content{
  113 + font-size: 36px;
  114 + }
  115 +}
  116 +</style>
... ...
src/views/Foot.vue
1 1 <template>
2 2 <div class="foot">
3   - <div v-if="userInfo">
  3 + <div>
4 4 <van-tabs v-model="tabValue" title-active-color="#000">
5 5 <van-tab title="我的预约">
6 6 <ul class="myWishList">
... ... @@ -96,9 +96,6 @@
96 96 </van-tabs>
97 97 <van-action-sheet v-model="show" :actions="actions" cancel-text="取消" @select="onSelect" close-on-click-action />
98 98 </div>
99   - <div v-else class="noLogin">
100   - <van-button type="info" @click="checkLogin">去登陆</van-button>
101   - </div>
102 99 <BottomNav :BottomNav="navActive"></BottomNav>
103 100 <div :is="background"></div>
104 101 </div>
... ... @@ -140,16 +137,9 @@ export default {
140 137 }
141 138 this.headImgUrl = localStorage.getItem('headImgUrl')
142 139 this.nicknameUser = localStorage.getItem('nicknameUser')
143   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
144   - if (!openid) {
145   - this.$router.push({ name: 'Authorize' })
146   - } else {
147   - this.getUserInfo()
148   - }
149   - } else {
150   - localStorage.setItem('unionId', this.DevUnionId)
151   - this.getUserInfo()
152   - }
  140 +
  141 + this.unionId = localStorage.getItem('unionId')
  142 + this.getUserInfo()
153 143 },
154 144 methods: {
155 145 initPage() {
... ... @@ -216,15 +206,17 @@ export default {
216 206 this.$toast.loading({
217 207 message: '请求中...',
218 208 })
219   - this.http.DeleteMyWish({
220   - id: id,
221   - }).then(function (res) {
222   - that.$toast.clear()
223   - if (res.status == 1) {
224   - that.$toast.success('删除成功')
225   - that.GetMyWishList()
226   - }
227   - })
  209 + this.http
  210 + .DeleteMyWish({
  211 + id: id,
  212 + })
  213 + .then(function (res) {
  214 + that.$toast.clear()
  215 + if (res.status == 1) {
  216 + that.$toast.success('删除成功')
  217 + that.GetMyWishList()
  218 + }
  219 + })
228 220 })
229 221 .catch(() => {
230 222 // on cancel
... ... @@ -263,15 +255,17 @@ export default {
263 255 this.$toast.loading({
264 256 message: '请求中...',
265 257 })
266   - this.http.DeleteMyStory({
267   - id: id,
268   - }).then(function (res) {
269   - that.$toast.clear()
270   - if (res.status == 1) {
271   - that.$toast.success('删除成功')
272   - that.GetMyStoryList()
273   - }
274   - })
  258 + this.http
  259 + .DeleteMyStory({
  260 + id: id,
  261 + })
  262 + .then(function (res) {
  263 + that.$toast.clear()
  264 + if (res.status == 1) {
  265 + that.$toast.success('删除成功')
  266 + that.GetMyStoryList()
  267 + }
  268 + })
275 269 },
276 270 ReleaseStory(data) {
277 271 localStorage.setItem('YXNowCourse', JSON.stringify(data))
... ... @@ -324,17 +318,6 @@ export default {
324 318 }
325 319 })
326 320 },
327   - // 判断是否已登录
328   - checkLogin() {
329   - if (process.env.NODE_ENV != "production") return true;
330   - const userInfo = JSON.parse(localStorage.getItem("userInfo"));
331   - if (!userInfo?.phone) {
332   - localStorage.setItem("prePage", "Foot");
333   - this.$router.push({ name: "LoginPublic" });
334   - return false;
335   - }
336   - return true;
337   - },
338 321 },
339 322 filters: {},
340 323 }
... ...
src/views/GrowUp/GrowUp.vue
... ... @@ -123,20 +123,10 @@ export default {
123 123 forbidClick: true,
124 124 })
125 125 localStorage.setItem('prePage', 'GrowUp')
126   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
127   - let openId = localStorage.getItem('openId')
128   - if (!openId) {
129   - this.$router.push({ name: 'Authorize' })
130   - return
131   - }
132   - this.unionId = localStorage.getItem('unionId')
133   - this.getUserInfo()
134   - } else {
135   - this.unionId = this.TestUnionId
136   - this.$nextTick(() => {
137   - this.getUserInfo()
138   - })
139   - }
  126 +
  127 + this.unionId = localStorage.getItem('unionId')
  128 + this.getUserInfo()
  129 +
140 130 // 获取并设置学校
141 131 let schoolNames = localStorage.getItem('schoolNames')
142 132 if (schoolNames) {
... ... @@ -202,21 +192,7 @@ export default {
202 192 // 获取列表
203 193 growthContentList() {
204 194 const userInfo = JSON.parse(localStorage.getItem('userInfo'))
205   - if (!userInfo?.phone) {
206   - // 请先登录
207   - this.$dialog
208   - .alert({
209   - message: '请登录后查看,是否前往登录',
210   - confirmButtonText: '去登录',
211   - confirmButtonColor: 'rgb(48, 116, 255)',
212   - theme: 'round-button',
213   - })
214   - .then(() => {
215   - // on close
216   - this.checkLogin()
217   - })
218   - return
219   - }
  195 +
220 196 if (this.pageNum == 1) {
221 197 this.$toast.loading({
222 198 message: '加载中...',
... ... @@ -404,23 +380,11 @@ export default {
404 380 } else {
405 381 console.log('getUserInfo失败')
406 382 this.getGrowthTagList() //获取并设置标签
407   -
408 383 }
409 384 })
410 385 }
411 386 },
412   - // 判断是否已登录
413   - checkLogin() {
414   - if (process.env.NODE_ENV != 'production') return true
415   - const userInfo = JSON.parse(localStorage.getItem('userInfo'))
416   - if (!userInfo?.phone) {
417   - localStorage.setItem('prePage', 'GrowUp')
418   - localStorage.setItem('prePageQuery', JSON.stringify({ showTab: this.$route.query.showTab }))
419   - this.$router.push({ name: 'LoginPublic' })
420   - return false
421   - }
422   - return true
423   - },
  387 +
424 388 setWxShare() {
425 389 // 设置分享
426 390 this.$emit('getWxConfig', {
... ...
src/views/GrowUp/GrowUpDetail.vue
... ... @@ -106,21 +106,9 @@ export default {
106 106 this.id = this.$route.query.id
107 107 this.type = this.$route.query.type //类别1-用户; 2-基地
108 108 localStorage.setItem('prePage', 'GrowUpDetail')
109   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
110   - let openId = localStorage.getItem('openId')
111   - if (!openId) {
112   - localStorage.setItem('prePageQuery', JSON.stringify({ id: this.$route.query.id, type: this.$route.query.type }))
113   - this.$router.push({ name: 'Authorize' })
114   - return
115   - }
116   - this.unionId = localStorage.getItem('unionId')
117   - this.getUserInfo()
118   - } else {
119   - this.unionId = this.TestUnionId
120   - this.$nextTick(() => {
121   - this.getUserInfo()
122   - })
123   - }
  109 +
  110 + this.unionId = localStorage.getItem('unionId')
  111 + this.getUserInfo()
124 112 },
125 113 methods: {
126 114 initPage() {
... ... @@ -342,23 +330,10 @@ export default {
342 330 localStorage.setItem('schoolNames', [])
343 331 this.$store.commit('changeSchool', [])
344 332 }
345   - } else {
346   - this.checkLogin()
347   - }
  333 + }
348 334 })
349 335 }
350 336 },
351   - // 判断是否已登录
352   - checkLogin() {
353   - if (process.env.NODE_ENV != 'production') return true
354   - const userInfo = JSON.parse(localStorage.getItem('userInfo'))
355   - if (!userInfo?.phone) {
356   - localStorage.setItem('prePage', 'GrowUpDetail')
357   - this.$router.push({ name: 'LoginPublic' })
358   - return false
359   - }
360   - return true
361   - },
362 337 setWxShare() {
363 338 // 设置分享
364 339 this.$emit('getWxConfig', {
... ...
src/views/GrowUp/GrowUpRecord.vue
... ... @@ -126,21 +126,15 @@ export default {
126 126 }
127 127 },
128 128 mounted() {
  129 + this.$zwlogPvGlobal({ loadTime: new Date() })
  130 + this.$nextTick(() => {
  131 + this.$zwlogPvGlobal({ responseTime: new Date() })
  132 + })
129 133 localStorage.setItem('prePage', 'GrowUpRecord')
130 134 localStorage.setItem('prePageQuery', '{}')
131   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
132   - let openId = localStorage.getItem('openId')
133   - if (!openId) {
134   - this.$router.push({ name: 'Authorize' })
135   - return
136   - }
137   - this.unionId = localStorage.getItem('unionId')
138   - this.getUserInfo()
139   - } else {
140   - this.unionId = this.TestUnionId
141   - this.getUserInfo()
142   - }
143   - // this.getStudentInfo()
  135 +
  136 + this.unionId = localStorage.getItem('unionId')
  137 + this.getUserInfo()
144 138 },
145 139 methods: {
146 140 getStudentInfo() {
... ... @@ -315,23 +309,11 @@ export default {
315 309 localStorage.setItem('schoolNames', [])
316 310 this.$store.commit('changeSchool', [])
317 311 }
318   - } else {
319   - this.checkLogin()
320   - }
  312 + }
321 313 })
322 314 }
323 315 },
324   - // 判断是否已登录
325   - checkLogin() {
326   - if (process.env.NODE_ENV != 'production') return true
327   - const userInfo = JSON.parse(localStorage.getItem('userInfo'))
328   - if (!userInfo?.phone) {
329   - localStorage.setItem('prePage', 'GrowUpRecord')
330   - this.$router.push({ name: 'LoginPublic' })
331   - return false
332   - }
333   - return true
334   - },
  316 +
335 317 },
336 318 components: {
337 319 HomeScan,
... ... @@ -542,16 +524,16 @@ export default {
542 524 .name {
543 525 font-size: 40px;
544 526 span {
545   - font-size: 34px;
  527 + font-size: 36px;
546 528 }
547 529 }
548 530 .school_name {
549   - font-size: 34px;
  531 + font-size: 36px;
550 532 }
551 533 }
552 534 .count_box .count_item {
553 535 .count {
554   - font-size: 34px;
  536 + font-size: 36px;
555 537 span {
556 538 font-size: 40px;
557 539 }
... ... @@ -561,9 +543,19 @@ export default {
561 543 }
562 544 }
563 545 .icon_box .icon_item p {
564   - font-size: 34px;
  546 + font-size: 36px;
565 547 }
566 548 }
567 549 }
  550 + .student_detail .list_box .list_item .item_bottom .item_title,.student_detail .list_box .list_item .item_top .time, .student_detail .list_box .list_item .item_top .week,.scan2 .tishi{
  551 + font-size: 36px;
  552 + }
  553 + .scan2{
  554 + font-size: 36px;
  555 + flex-shrink: 0;
  556 + }
  557 + .student_detail .infomation .top{
  558 + flex-wrap: nowrap;
  559 + }
568 560 }
569 561 </style>
... ...
src/views/GrowUp/MyAlbum.vue
... ... @@ -390,4 +390,12 @@ export default {
390 390 height: 80px;
391 391 }
392 392 }
393   -</style>
394 393 \ No newline at end of file
  394 +</style>
  395 +<style lang="scss">
  396 +// 长辈版
  397 +.elder {
  398 + #MyAlbum .control_panel .control_btn, #MyAlbum .control_panel .cancel_btn, #MyAlbum .control_panel .del_btn{
  399 + font-size: 36px;
  400 + }
  401 +}
  402 +</style>
... ...
src/views/GrowUp/StoryDetail.vue
... ... @@ -150,3 +150,15 @@ export default {
150 150 }
151 151 }
152 152 </style>
  153 +<style lang="scss">
  154 +// 长辈版
  155 +.elder {
  156 + .storyDetail .content .info .name p:first-child,.storyDetail .content .info .name p,.storyDetail .content .cont,.storyDetail .content .info .like span{
  157 + font-size: 36px;
  158 + }
  159 + .storyDetail .content .cont{
  160 + width: 112%;
  161 + margin-left: -6%;
  162 + }
  163 +}
  164 +</style>
... ...
src/views/Home.vue
... ... @@ -86,6 +86,7 @@
86 86 <StoryList v-if="!loadingStory" :list="StoryList"></StoryList>
87 87 <van-empty v-else :image="require('@/assets/empty.png')" description="加载中..." />
88 88 </div>
  89 + <about-des></about-des>
89 90 <Tabbar active="service"></Tabbar>
90 91 <div :is="background"></div>
91 92 </div>
... ... @@ -99,6 +100,7 @@ import StoryList from &#39;@/views/GrowUp/c_StoryList.vue&#39;
99 100 import Tabbar from '@/components/c_Tabbar.vue'
100 101 import Background from '../components/Background.vue'
101 102 import AllLoveGo from '../components/AllLoveGo.vue'
  103 +import AboutDes from './aboutDes.vue'
102 104 import './home.scss'
103 105 const userData = require('@/views/data.json')
104 106 export default {
... ... @@ -109,6 +111,7 @@ export default {
109 111 Tabbar,
110 112 Background,
111 113 AllLoveGo,
  114 + AboutDes,
112 115 },
113 116 data() {
114 117 return {
... ... @@ -152,7 +155,16 @@ export default {
152 155 }
153 156 },
154 157 mounted() {
155   - console.log('xst mounted')
  158 + ZWJSBridge.onReady(() => {
  159 + ZWJSBridge.setTitle({
  160 + title: '绍兴研学',
  161 + })
  162 + })
  163 +
  164 + this.$zwlogPvGlobal({ loadTime: new Date() })
  165 + this.$nextTick(() => {
  166 + this.$zwlogPvGlobal({ responseTime: new Date() })
  167 + })
156 168 this.checkAuth()
157 169 //二次回退
158 170 const sUserAgent = window.navigator.userAgent.toLowerCase()
... ... @@ -164,12 +176,11 @@ export default {
164 176 console.log('我来自浙里办,popstate')
165 177 window.addEventListener('popstate', this.listenerPopstate, true)
166 178 }
167   - this.GetNewList()// 获取资讯
  179 + this.GetNewList() // 获取资讯
168 180 this.GetBannerList()
169 181 this.getCustomerCourseList() //精选活动
170   - this.GetBaseList()//研学基地
171   - this.GetStoryList()//研学游记
172   -
  182 + this.GetBaseList() //研学基地
  183 + this.GetStoryList() //研学游记
173 184 },
174 185 //销毁监听
175 186 destroyed() {
... ... @@ -234,7 +245,7 @@ export default {
234 245 },
235 246 // 通过ticketId获取centerNo
236 247 getCenterByTicketId(ticketId) {
237   - this.yxAxios.get(`${this.proxyUrl}/api/third/getCenterNoSxPrivate?ticket=${ticketId}`).then((res) => {
  248 + this.yxAxios.get(`${this.proxyUrl}/api/third/getCenterNoWxSxPrivate?ticket=${ticketId}`).then((res) => {
238 249 console.log('通过ticket获取centerNo成功:', res)
239 250 if (res.data.code == 200) {
240 251 this.centerNo = res.data.message
... ... @@ -285,7 +296,6 @@ export default {
285 296 if (res.data.code == 200) {
286 297 localStorage.setItem('userInfo', JSON.stringify(res.data.data.userInfo))
287 298 this.userInfo = res.data.data.userInfo
288   -
289 299 }
290 300 })
291 301 },
... ... @@ -557,6 +567,9 @@ export default {
557 567 <style lang="scss">
558 568 // 长辈版
559 569 .elder {
  570 + .home .infomation_box .new_item {
  571 + font-size: 36px;
  572 + }
560 573 .home .type_box p {
561 574 font-size: 34px;
562 575 }
... ... @@ -581,5 +594,8 @@ export default {
581 594 font-size: 32px;
582 595 }
583 596 }
  597 + .van-tab {
  598 + font-size: 36px;
  599 + }
584 600 }
585 601 </style>
... ...
src/views/Home/HomeYX.vue
... ... @@ -106,6 +106,11 @@ export default {
106 106 },
107 107  
108 108 mounted() {
  109 + this.$zwlogPvGlobal({ loadTime: new Date() })
  110 + this.$nextTick(() => {
  111 + this.$zwlogPvGlobal({ responseTime: new Date() })
  112 + })
  113 + localStorage.setItem('prePage','HomeYX')
109 114 const isElder = localStorage.getItem('isElder')
110 115 if (isElder) {
111 116 this.isElder = true
... ...
src/views/Home/LoginPublic.vue
1 1 <template>
2 2 <div id="login">
3   - <img class="bg" src="@/assets/login_bg.png" alt="">
  3 + <img class="bg" src="@/assets/login_bg.png" alt="" />
4 4 <div class="box">
5 5 <p class="login_title">绑定手机号</p>
6 6 <div class="item">
7 7 <p class="title">手机号</p>
8 8 <div class="flex">
9   - <input class="code phone" type="tel" maxlength="11" v-model="phone" placeholder="请输入您的手机号">
10   - <span class="getcode" @click="getCode">{{codeText}}</span>
  9 + <input class="code phone" type="tel" maxlength="11" v-model="phone" placeholder="请输入您的手机号" />
  10 + <span class="getcode" @click="getCode">{{ codeText }}</span>
11 11 </div>
12 12 </div>
13 13 <div class="item">
14 14 <p class="title">验证码</p>
15   - <input class="code" type="text" v-model="code" placeholder="请输入验证码">
  15 + <input class="code" type="text" v-model="code" placeholder="请输入验证码" />
16 16 </div>
17 17 <!-- <div class="item">
18 18 <p class="title">学校选择</p>
... ... @@ -25,22 +25,22 @@
25 25 </div>
26 26 <van-popup v-model="chooseSchoolisShow" round get-container="body" :safe-area-inset-bottom="true">
27 27 <div v-if="chooseSchoolisShow">
28   - <chooseSchool v-model="chooseSchoolisShow" @schoolData='schoolData'></chooseSchool>
  28 + <chooseSchool v-model="chooseSchoolisShow" @schoolData="schoolData"></chooseSchool>
29 29 </div>
30 30 </van-popup>
31 31 </div>
32 32 </template>
33 33 <script>
34 34 import chooseSchool from '@/views/Home/component/chooseSchool'
35   -var codeInterval;
  35 +var codeInterval
36 36 export default {
37 37 name: 'LoginPublic',
38   - data () {
  38 + data() {
39 39 return {
40 40 code: '',
41 41 phone: '',
42 42  
43   - codeText: '获取验证码',//获取验证码按钮文字
  43 + codeText: '获取验证码', //获取验证码按钮文字
44 44 appId: 'wx1305e88d2bc74073',
45 45 unionId: '',
46 46 openId: '',
... ... @@ -49,29 +49,23 @@ export default {
49 49 searchSchool: '',
50 50 school: '',
51 51 schoolId: '',
52   - chooseSchoolisShow: false
  52 + chooseSchoolisShow: false,
53 53 }
54 54 },
55   - mounted () {
56   - this.openId = localStorage.getItem('openId');
57   - this.unionId = localStorage.getItem('unionId');
58   - if (process.env.NODE_ENV === "production"&&this.common.isWeiXin()) {
59   - if (!this.openId) {
60   - this.$router.push({ name: 'Authorize' })
61   - }
62   - }
63   -
  55 + mounted() {
  56 + this.openId = localStorage.getItem('openId')
  57 + this.unionId = localStorage.getItem('unionId')
64 58 },
65 59 methods: {
66   - getCode () {
67   - if (this.codeText != '获取验证码') return;
  60 + getCode() {
  61 + if (this.codeText != '获取验证码') return
68 62 if (!this.phone) {
69 63 this.$toast('请输入手机号')
70   - return;
  64 + return
71 65 }
72 66 if (!this.checkPhone(this.phone)) {
73 67 this.$toast('请输入正确的手机号')
74   - return;
  68 + return
75 69 }
76 70 // if (!this.school) {
77 71 // this.$toast('请选择关注学校')
... ... @@ -80,19 +74,19 @@ export default {
80 74 this.$toast.loading({
81 75 message: '加载中',
82 76 duration: 0,
83   - forbidClick: true
  77 + forbidClick: true,
84 78 })
85 79 this.yxAxios.post(`${this.baseUrl}/prod/api/wx/${this.appId}/getMsg?phone=${this.phone}`).then((res) => {
86 80 this.$toast.clear()
87 81 if (res.data.code == 200) {
88   - let i = 60;
  82 + let i = 60
89 83 codeInterval = setInterval(() => {
90 84 if (i == 0) {
91   - this.codeText = `获取验证码`;
92   - clearInterval(codeInterval);
93   - return;
  85 + this.codeText = `获取验证码`
  86 + clearInterval(codeInterval)
  87 + return
94 88 }
95   - this.codeText = `重试(${i})`;
  89 + this.codeText = `重试(${i})`
96 90 i--
97 91 }, 1000)
98 92 } else {
... ... @@ -100,54 +94,56 @@ export default {
100 94 }
101 95 })
102 96 },
103   - submitOperator () {
  97 + submitOperator() {
104 98 if (!this.phone) {
105 99 this.$toast('请输入手机号')
106   - return;
  100 + return
107 101 }
108 102 if (!this.checkPhone(this.phone)) {
109 103 this.$toast('请输入正确的手机号')
110   - return;
  104 + return
111 105 }
112 106 if (!this.code) {
113 107 this.$toast('请输入验证码')
114   - return;
  108 + return
115 109 }
116 110 this.$toast.loading({
117 111 message: '加载中',
118 112 duration: 0,
119   - forbidClick: true
120   - })
121   - this.yxAxios.post(`${this.baseUrl}/prod/api/wx/${this.appId}/checkPhoneAndCode`, {
122   - phone: this.phone,
123   - code: this.code,
124   - unionId: this.unionId,
125   - openId: this.openId
126   - }).then((res) => {
127   - this.$toast.clear()
128   - if (res.data.code == 200) {
129   - this.getUserInfo()
130   - } else {
131   - this.$toast.fail(res.data.message)
132   - }
  113 + forbidClick: true,
133 114 })
  115 + this.yxAxios
  116 + .post(`${this.baseUrl}/prod/api/wx/${this.appId}/checkPhoneAndCode`, {
  117 + phone: this.phone,
  118 + code: this.code,
  119 + unionId: this.unionId,
  120 + openId: this.openId,
  121 + })
  122 + .then((res) => {
  123 + this.$toast.clear()
  124 + if (res.data.code == 200) {
  125 + this.getUserInfo()
  126 + } else {
  127 + this.$toast.fail(res.data.message)
  128 + }
  129 + })
134 130 },
135   - checkPhone (phone) {
136   - if ((/^1[3456789]\d{9}$/.test(phone))) {
  131 + checkPhone(phone) {
  132 + if (/^1[3456789]\d{9}$/.test(phone)) {
137 133 return true
138 134 } else {
139 135 return false
140 136 }
141 137 },
142   - complete () {
  138 + complete() {
143 139 this.getUserInfo()
144 140 },
145 141 // 获取链接参数
146   - getQueryVariable (variable) {
  142 + getQueryVariable(variable) {
147 143 // 取地址栏参数
148   - var query = window.location.search.substr(1);
  144 + var query = window.location.search.substr(1)
149 145 if (!query && window.location.hash.indexOf('?') > -1) {
150   - query = window.location.hash.split("?")[1];
  146 + query = window.location.hash.split('?')[1]
151 147 }
152 148 var vars = query.split('&')
153 149 for (var i = 0; i < vars.length; i++) {
... ... @@ -159,29 +155,29 @@ export default {
159 155 return false
160 156 },
161 157 // 获取用户信息
162   - getUserInfo () {
  158 + getUserInfo() {
163 159 this.$toast.loading({
164 160 message: '加载中...',
165 161 duration: 0,
166   - forbidClick: true
  162 + forbidClick: true,
167 163 })
168 164 this.yxAxios.get(`${this.baseUrl}/prod/api/wx/${this.appId}/getUserInfo?unionId=${this.unionId}`).then((res) => {
169 165 this.$toast.clear()
170 166 if (res.data.code == 200) {
171 167 localStorage.setItem('userInfo', JSON.stringify(res.data.data))
172 168  
173   - if(res.data.data.schoolNames || res.data.data.schoolNames == [] || res.data.data.schoolNames == 'null') {
174   - localStorage.setItem('schoolNames',JSON.stringify(res.data.data.schoolNames))
  169 + if (res.data.data.schoolNames || res.data.data.schoolNames == [] || res.data.data.schoolNames == 'null') {
  170 + localStorage.setItem('schoolNames', JSON.stringify(res.data.data.schoolNames))
175 171 this.$store.commit('changeSchool', res.data.data.schoolNames)
176   - if(!localStorage.getItem('schoolNamesChoose')) {
177   - localStorage.setItem('schoolNamesChoose',res.data.data.schoolNames[0])
  172 + if (!localStorage.getItem('schoolNamesChoose')) {
  173 + localStorage.setItem('schoolNamesChoose', res.data.data.schoolNames[0])
178 174 }
179   - }else {
180   - localStorage.setItem('schoolNames',[])
181   - this.$store.commit('changeSchool', [])
  175 + } else {
  176 + localStorage.setItem('schoolNames', [])
  177 + this.$store.commit('changeSchool', [])
182 178 }
183   - let prePage = localStorage.getItem('prePage');
184   - let prePageQuery = localStorage.getItem('prePageQuery');
  179 + let prePage = localStorage.getItem('prePage')
  180 + let prePageQuery = localStorage.getItem('prePageQuery')
185 181 if (prePage) {
186 182 this.$router.push({ name: prePage, query: JSON.parse(prePageQuery) })
187 183 }
... ... @@ -190,21 +186,21 @@ export default {
190 186 }
191 187 })
192 188 },
193   - //选择学校
194   - chooseSchool () {
  189 + //选择学校
  190 + chooseSchool() {
195 191 this.chooseSchoolisShow = true
196 192 },
197   - schoolData (val) {
198   - this.school = val.text;
199   - this.schoolId = val.id;
  193 + schoolData(val) {
  194 + this.school = val.text
  195 + this.schoolId = val.id
200 196 },
201 197 },
202   - destroyed () {
203   - clearInterval(codeInterval);
  198 + destroyed() {
  199 + clearInterval(codeInterval)
204 200 },
205 201 components: {
206   - chooseSchool
207   - }
  202 + chooseSchool,
  203 + },
208 204 }
209 205 </script>
210 206 <style lang="scss" scoped>
... ... @@ -223,11 +219,7 @@ export default {
223 219 width: 702px;
224 220 // height: 540px;
225 221 height: 650px;
226   - background: linear-gradient(
227   - 180deg,
228   - rgba(251, 251, 251, 0.99) 0%,
229   - #ffffff 100%
230   - );
  222 + background: linear-gradient(180deg, rgba(251, 251, 251, 0.99) 0%, #ffffff 100%);
231 223 box-shadow: 0px 4px 12px 0px rgba(87, 214, 255, 0.2);
232 224 border-radius: 20px;
233 225 position: absolute;
... ... @@ -244,8 +236,7 @@ export default {
244 236 float: right;
245 237 font-size: 28px;
246 238 background: linear-gradient(135deg, #cdf8cf 0%, #8af36f 100%);
247   - box-shadow: 0px 4px 8px 0px rgba(189, 189, 189, 0.5),
248   - 0px 8px 12px 0px rgba(89, 199, 171, 0.5);
  239 + box-shadow: 0px 4px 8px 0px rgba(189, 189, 189, 0.5), 0px 8px 12px 0px rgba(89, 199, 171, 0.5);
249 240 border-radius: 34px;
250 241 border: transparent;
251 242 color: #333333;
... ... @@ -295,4 +286,4 @@ export default {
295 286 .prefect_pop {
296 287 background: transparent;
297 288 }
298   -</style>
299 289 \ No newline at end of file
  290 +</style>
... ...
src/views/Home/MyCollect.vue
... ... @@ -144,3 +144,11 @@ export default {
144 144 }
145 145 }
146 146 </style>
  147 +<style lang="scss">
  148 +// 长辈版
  149 +.elder {
  150 + #MyCollect .collect_item .right .course_name,#MyCollect .collect_item .right .course_price{
  151 + font-size: 36px;
  152 + }
  153 +}
  154 +</style>
... ...
src/views/Home/YanxueCode.vue
... ... @@ -151,4 +151,12 @@ export default {
151 151 left: -100vw;
152 152 }
153 153 }
154   -</style>
155 154 \ No newline at end of file
  155 +</style>
  156 +<style lang="scss">
  157 +// 长辈版
  158 +.elder {
  159 + #codeBox .blueCard .school .gray,#codeBox .fontDiv{
  160 + font-size: 36px;
  161 + }
  162 +}
  163 +</style>
... ...
src/views/Home/component/AddChildPopupGroup.vue
... ... @@ -722,4 +722,4 @@ export default {
722 722 left: 0;
723 723 background-color: #fff;
724 724 }
725 725 -</style>
  726 +</style>
726 727 \ No newline at end of file
... ...
src/views/Home/component/HomeChildList.vue
... ... @@ -87,8 +87,6 @@ export default {
87 87 })
88 88 },
89 89 addStudent () {
90   - let isLogin = this.checkLogin()
91   - if (!isLogin) return;
92 90 this.step = 1
93 91 this.showAddChildPopupGroup = true
94 92 },
... ... @@ -96,18 +94,7 @@ export default {
96 94 this.showAddChildPopupGroup = false;
97 95 this.getChildList()
98 96 },
99   - // 判断是否已登录
100   - checkLogin () {
101   - if (process.env.NODE_ENV != "production") return true;
102   - const userInfo = JSON.parse(localStorage.getItem('userInfo'))
103   - if (!userInfo?.phone) {
104   - localStorage.setItem('prePage', 'Home');
105   - localStorage.setItem('prePageQuery', JSON.stringify({ showTab: this.$route.query.showTab }));
106   - this.$router.push({ name: 'LoginPublic' })
107   - return false;
108   - }
109   - return true;
110   - },
  97 +
111 98 },
112 99 components: {
113 100 AddChildPopupGroup
... ...
src/views/Home/component/HomeScan.vue
1 1 <template>
2   - <div v-if="type==2" class="scan2" @click="saoYiSao">
  2 + <div v-if="type == 2" class="scan2" @click="saoYiSao">
3 3 <van-icon name="scan" />
4 4 <p class="tishi">基地打卡</p>
5 5 </div>
6 6 <div v-else class="scan" @click="saoYiSao">
7 7 <van-icon name="scan" />
8   - <img class="tishi" src="@/assets/home/tishi.png" alt="扫码打卡">
  8 + <img class="tishi" src="@/assets/home/tishi.png" alt="扫码打卡" />
9 9 </div>
10 10 </template>
11 11 <script>
12 12 export default {
13   - props:['type'],
  13 + props: ['type'],
14 14 methods: {
15   - saoYiSao () {
16   - let isLogin = this.checkLogin()
17   - if (!isLogin) return;
18   - if (process.env.NODE_ENV === "production" && this.common.isWeiXin()) {
19   - // location.href = `http://sao315.com/w/api/saoyisao?redirect_uri=https://zlyx.shunzhi.net/wap/index.html%23/MyClassList`;
20   - location.href = `http://sao315.com/w/api/saoyisao?redirect_uri=https://zlyx.shunzhi.net/wap/index.html%23/MyClassList`;
21   - } else {
22   - this.$router.push({ name: 'MyClassList', query: { qrresult: '188' } })
23   - }
  15 + saoYiSao() {
  16 + ZWJSBridge.scan({
  17 + type: 'qrCode',
  18 + })
  19 + .then((res) => {
  20 + if(res.qrcode&&!isNaN(Number(res.qrcode))){
  21 + this.$router.push({ name: 'MyClassList', query: { qrresult: res.qrcode } })
  22 + }else{
  23 + this.$toast.fail('扫码失败')
  24 + }
  25 + })
  26 + .catch((err) => {
  27 + console.log(err)
  28 + })
24 29 },
25   - // 判断是否已登录
26   - checkLogin () {
27   - if (process.env.NODE_ENV != "production") return true;
28   - const userInfo = JSON.parse(localStorage.getItem('userInfo'))
29   - if (!userInfo?.phone) {
30   - localStorage.setItem('prePage', 'Home');
31   - localStorage.setItem('prePageQuery', JSON.stringify({ showTab: this.$route.query.showTab }));
32   - this.$router.push({ name: 'LoginPublic' })
33   - return false;
34   - }
35   - return true;
36   - },
37   - }
  30 + },
38 31 }
39 32 </script>
40 33 <style lang="scss" scoped>
... ... @@ -53,12 +46,12 @@ export default {
53 46 width: 112px;
54 47 }
55 48 }
56   -.scan2{
  49 +.scan2 {
57 50 font-size: 50px;
58 51 color: #526195;
59 52 text-align: center;
60   -.tishi {
  53 + .tishi {
61 54 font-size: 24px;
62 55 }
63 56 }
64   -</style>
65 57 \ No newline at end of file
  58 +</style>
... ...
src/views/Service/AbroadDetail/AbroadDetail.vue
... ... @@ -73,7 +73,7 @@ export default {
73 73 BindType: '', //普通出行1 定制出行2
74 74 bindId: '',
75 75 inviteCode: '', //达人邀请码
76   - orderId:'',//集体定制id
  76 + orderId: '', //集体定制id
77 77 isShowpic: false, //是否显示达人邀请码邀请图标
78 78 detailData: '',
79 79 packageData: [], //套餐表
... ... @@ -120,26 +120,18 @@ export default {
120 120 entrance: this.entrance,
121 121 inviteCode: this.inviteCode,
122 122 BindType: this.BindType,
123   - orderId:this.orderId,
124   - ProgramType:this.ProgramType,
125   - productSceneId:this.productSceneId,
126   - DateComboType:this.DateComboType,
127   - ZZCTCanBuy:this.ZZCTCanBuy,
128   - courseTypeLableId:this.courseTypeLableId
  123 + orderId: this.orderId,
  124 + ProgramType: this.ProgramType,
  125 + productSceneId: this.productSceneId,
  126 + DateComboType: this.DateComboType,
  127 + ZZCTCanBuy: this.ZZCTCanBuy,
  128 + courseTypeLableId: this.courseTypeLableId,
129 129 })
130 130 )
131   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
132   - let openId = localStorage.getItem('openId' )
133   - if (!openId) {
134   - this.$router.push({ name: 'Authorize' })
135   - return
136   - }
137   - this.unionId = localStorage.getItem('unionId')
138   - this.getUserInfo()
139   - } else {
140   - this.unionId = this.TestUnionId
141   - this.getUserInfo()
142   - }
  131 +
  132 + this.unionId = localStorage.getItem('unionId')
  133 + this.getUserInfo()
  134 +
143 135 this.GetCourseDetail()
144 136 },
145 137 methods: {
... ... @@ -211,7 +203,7 @@ export default {
211 203 baseId: detailData.baseId,
212 204 marketPrice: detailData.marketPrice,
213 205 price: detailData.price,
214   - course_labels:detailData.course_labels
  206 + course_labels: detailData.course_labels,
215 207 })
216 208 )
217 209 if (this.orderId) {
... ... @@ -256,9 +248,7 @@ export default {
256 248 // 获取套餐列表
257 249 getPackageData() {
258 250 let startDate = this.Moment().format('YYYY-MM-DD')
259   - let endDate = this.Moment()
260   - .add(60, 'days')
261   - .format('YYYY-MM-DD')
  251 + let endDate = this.Moment().add(60, 'days').format('YYYY-MM-DD')
262 252 let bindId = this.bindId
263 253 let ProgramType = this.ProgramType
264 254 let params = {
... ... @@ -336,3 +326,20 @@ export default {
336 326 },
337 327 }
338 328 </script>
  329 +<style lang="scss">
  330 +// 长辈版
  331 +.elder {
  332 + .abroad_detail .uni_text .course_name{
  333 + font-size: 50px;
  334 + }
  335 + .abroad_detail .uni_text .course_count,.abroad_detail .uni_text .tag_box .tag,.service_bottom_btn_left .icon p,.abroad_detail .Collection .box .box_btn,.abroad_detail .tag_item .tag_text{
  336 + font-size: 36px !important;
  337 + }
  338 + .abroad_detail .content_box .content_all img{
  339 + width:100%;
  340 + }
  341 + .abroad_detail .tag_item{
  342 + padding: 0;
  343 + }
  344 +}
  345 +</style>
... ...
src/views/Service/AbroadDetailNext/AbroadDetailNext.vue
... ... @@ -28,7 +28,7 @@
28 28 <div class="course_price" v-if="packageArr.length > 0">
29 29 <span v-if="$route.query.bindId">¥ {{ bottomBoxData.showPrice }}</span>
30 30 <span v-else>¥ {{ detailData.showPrice }}</span
31   - ><span class="redmini">起{{detailData.unitName?'/':''}}{{ detailData.unitName }}</span
  31 + ><span class="redmini">起{{ detailData.unitName ? '/' : '' }}{{ detailData.unitName }}</span
32 32 ><span class="tint">{{ detailData.productPrice }}</span>
33 33 </div>
34 34 <div class="course_price_free" v-else>
... ... @@ -57,7 +57,7 @@
57 57 <p class="tip">如有特殊需求请联系【客服】</p>
58 58 <div class="package top_border" v-if="packageArr.length > 0 && packageArr[packageActive].comboInfoList.length > 1">
59 59 <div class="package_box">
60   - <div style="overflow:auto;">
  60 + <div style="overflow: auto">
61 61 <div
62 62 class="package_item package_item_type"
63 63 :class="packageTypeActive == index ? 'active' : ''"
... ... @@ -141,16 +141,16 @@ export default {
141 141 AbroadCoupon,
142 142 BottomBtn,
143 143 Package,
144   - ShareBox
  144 + ShareBox,
145 145 },
146 146 data() {
147 147 return {
148 148 courseId: '',
149   - courseTypeLableId:'',
  149 + courseTypeLableId: '',
150 150 BindType: '', //普通出行1 定制出行2
151 151 bindId: '',
152 152 inviteCode: '', //达人邀请码
153   - orderId:'',//集体定制id
  153 + orderId: '', //集体定制id
154 154 isShowpic: false, //是否显示达人邀请码邀请图标
155 155 detailData: '',
156 156 bottomBoxData: '', //底部成团状态
... ... @@ -171,8 +171,8 @@ export default {
171 171 codeStep: 0, //邀请码进度
172 172 expectMoney: '', //预计赚多少钱
173 173 feeFlag: 1, //0达人,1志愿者
174   - showShareBox:false,//分享框
175   - baseDetailData:''
  174 + showShareBox: false, //分享框
  175 + baseDetailData: '',
176 176 }
177 177 },
178 178 mounted() {
... ... @@ -194,7 +194,7 @@ export default {
194 194 if (this.inviteCode) {
195 195 this.codeStep = 1
196 196 }
197   -
  197 +
198 198 localStorage.setItem('prePage', 'ServiceAbroadDetailNext')
199 199 localStorage.setItem(
200 200 'prePageQuery',
... ... @@ -204,25 +204,17 @@ export default {
204 204 entrance: this.entrance,
205 205 inviteCode: this.inviteCode,
206 206 BindType: this.BindType,
207   - orderId:this.orderId,
208   - ProgramType:this.ProgramType,
209   - productSceneId:this.productSceneId,
210   - DateComboType:this.DateComboType,
211   - ZZCTCanBuy:this.ZZCTCanBuy,
  207 + orderId: this.orderId,
  208 + ProgramType: this.ProgramType,
  209 + productSceneId: this.productSceneId,
  210 + DateComboType: this.DateComboType,
  211 + ZZCTCanBuy: this.ZZCTCanBuy,
212 212 })
213 213 )
214   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
215   - let openId = localStorage.getItem('openId')
216   - if (!openId) {
217   - this.$router.push({ name: 'Authorize' })
218   - return
219   - }
220   - this.unionId = localStorage.getItem('unionId')
221   - this.getUserInfo()
222   - } else {
223   - this.unionId = this.TestUnionId
224   - this.getUserInfo()
225   - }
  214 +
  215 + this.unionId = localStorage.getItem('unionId')
  216 + this.getUserInfo()
  217 +
226 218 this.GetCourseDetail()
227 219 if (this.entrance == 'school') {
228 220 this.getAgentInfoBySchool() //校代联系方式
... ... @@ -317,7 +309,7 @@ export default {
317 309 marketPrice: detailData.marketPrice,
318 310 price: detailData.price,
319 311 baseId: detailData.baseId,
320   - course_labels:detailData.course_labels
  312 + course_labels: detailData.course_labels,
321 313 })
322 314 )
323 315 if (this.orderId) {
... ... @@ -399,9 +391,7 @@ export default {
399 391 // 获取套餐列表
400 392 getPackageData() {
401 393 let startDate = this.Moment().format('YYYY-MM-DD')
402   - let endDate = this.Moment()
403   - .add(3, 'month')
404   - .format('YYYY-MM-DD')
  394 + let endDate = this.Moment().add(3, 'month').format('YYYY-MM-DD')
405 395 let bindId = this.bindId
406 396 let ProgramType = this.ProgramType
407 397 let params = {
... ... @@ -461,8 +451,8 @@ export default {
461 451 let marketPrice = 9999
462 452 for (let j in comboList) {
463 453 // 添加商品已报名数量,过期请删除start
464   - if(this.$route.query.bindId==3816){
465   - comboList[j].applyCount = comboList[j].applyCount+521
  454 + if (this.$route.query.bindId == 3816) {
  455 + comboList[j].applyCount = comboList[j].applyCount + 521
466 456 }
467 457 // 添加商品已报名数量,过期请删除end
468 458 for (let k in comboList[j].comboInfoList) {
... ... @@ -483,7 +473,7 @@ export default {
483 473 })
484 474 }
485 475 this.packageArr = packageArr
486   - console.log('111',packageArr)
  476 + console.log('111', packageArr)
487 477 this.initPackageArr = true
488 478 this.getDateInfoById()
489 479 },
... ... @@ -590,7 +580,7 @@ export default {
590 580 }
591 581 }
592 582 this.periodArr = periodArr.sort(this.sortUpDate)
593   - this.getExpectMoney()
  583 + this.getExpectMoney()
594 584 // this.periodArr = periodArr
595 585 console.log('套餐列表:', periodArr)
596 586 })
... ... @@ -602,12 +592,14 @@ export default {
602 592 }
603 593 const expertLevel = JSON.parse(localStorage.getItem('talentData')).expertLevel
604 594 this.feeFlag = JSON.parse(localStorage.getItem('talentData')).feeFlag
605   - if(this.feeFlag == 1) { return } //0达人(显示),1志愿者(不显示)
  595 + if (this.feeFlag == 1) {
  596 + return
  597 + } //0达人(显示),1志愿者(不显示)
606 598 const userInfo = JSON.parse(localStorage.getItem('userInfo'))
607 599 let query = {
608 600 courseId: this.courseId,
609 601 loginPhone: userInfo.phone,
610   - shareId:this.periodArr[0].groupPeriodActivityList.id
  602 + shareId: this.periodArr[0].groupPeriodActivityList.id,
611 603 }
612 604 this.yxAxios.post(`${this.proxyUrl}/user/settle/getProductFee`, query).then((res) => {
613 605 if (res.data.code) {
... ... @@ -620,13 +612,13 @@ export default {
620 612 // 分享
621 613 handleShare() {
622 614 // this.yxAxios.post(`https://zlyx.shunzhi.net/api/BaseManage/ZlCourseShareRecord`,{
623   - this.yxAxios.post(`https://zlyx.shunzhi.net/api/BaseManage/ZlCourseShareRecord`,{
  615 + this.yxAxios.post(`https://zlyx.shunzhi.net/api/BaseManage/ZlCourseShareRecord`, {
624 616 courseId: this.courseId,
625   - courseTypeLableId:this.courseTypeLableId,
626   - baseName:this.baseDetailData.baseName,
627   - courseName:this.detailData.course_name,
628   - location:this.detailData.address,
629   - area:this.detailData.areaAddress
  617 + courseTypeLableId: this.courseTypeLableId,
  618 + baseName: this.baseDetailData.baseName,
  619 + courseName: this.detailData.course_name,
  620 + location: this.detailData.address,
  621 + area: this.detailData.areaAddress,
630 622 })
631 623 this.showShareDes = true
632 624 },
... ... @@ -634,7 +626,15 @@ export default {
634 626 handleContact() {
635 627 let mobile = this.baseDetailData.mobile[0]
636 628 if (mobile) {
637   - window.location.href = `tel:${mobile}`
  629 + ZWJSBridge.phoneCall({
  630 + corpId: mobile,
  631 + })
  632 + .then((res) => {
  633 + console.log(res)
  634 + })
  635 + .catch((err) => {
  636 + console.log(err)
  637 + })
638 638 } else {
639 639 this.$toast('暂无联系方式')
640 640 }
... ... @@ -642,3 +642,10 @@ export default {
642 642 },
643 643 }
644 644 </script>
  645 +<style lang="scss">
  646 +.elder {
  647 + .abroad_detail .uni_text .address,.abroad_detail .uni_text .rate > span,.package .period_nodata,.abroad_detail .package .package_title,.abroad_detail .tip,.abroad_detail .cardCont .day_tag,.abroad_detail .cardCont table td,.abroad_detail .tag_item .tag_title,.abroad_detail .tag_item .tag_text,.abroad_detail .base .center .address,.abroad_detail .base .center .tag {
  648 + font-size: 36px !important;
  649 + }
  650 +}
  651 +</style>
... ...
src/views/Service/BaseDetail/BaseDetail.vue
... ... @@ -80,18 +80,10 @@ export default {
80 80 this.baseId = this.$route.query.baseId
81 81 localStorage.setItem('prePage', 'ServiceBaseDetail')
82 82 localStorage.setItem('prePageQuery', JSON.stringify({ baseId: this.baseId }))
83   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
84   - let openId = localStorage.getItem('openId')
85   - if (!openId) {
86   - this.$router.push({ name: 'Authorize'})
87   - return
88   - }
89   - this.unionId = localStorage.getItem('unionId')
90   - this.getUserInfo()
91   - } else {
92   - this.unionId = this.TestUnionId
93   - this.getUserInfo()
94   - }
  83 +
  84 + this.unionId = localStorage.getItem('unionId')
  85 + this.getUserInfo()
  86 +
95 87 this.GetBaseDetail()
96 88 },
97 89 methods: {
... ... @@ -153,11 +145,11 @@ export default {
153 145 // 分享
154 146 handleShare() {
155 147 // this.yxAxios.post(`https://zlyx.shunzhi.net/api/BaseManage/ZlBaseShareRecord`,{
156   - this.yxAxios.post(`https://zlyx.shunzhi.net/api/BaseManage/ZlBaseShareRecord`,{
  148 + this.yxAxios.post(`https://zlyx.shunzhi.net/api/BaseManage/ZlBaseShareRecord`, {
157 149 baseId: this.baseId,
158   - baseName:this.detailData.baseName,
159   - location:this.detailData.address,
160   - area:this.detailData.area
  150 + baseName: this.detailData.baseName,
  151 + location: this.detailData.address,
  152 + area: this.detailData.area,
161 153 })
162 154 this.showShareDes = true
163 155 },
... ... @@ -174,14 +166,22 @@ export default {
174 166 },
175 167 // 点击地址
176 168 handleAddress() {
177   - console.log(111)
178 169 window.location.href = `http://uri.amap.com/marker?position=${this.detailData.signLong},${this.detailData.signLat}&name=${this.detailData.signAddress}&coordinate=gaode&callnative=1`
179 170 },
180 171 // 点击联系方式
181 172 handleContact() {
182 173 let mobile = this.detailData.mobile[0]
183 174 if (mobile) {
184   - window.location.href = `tel:${mobile}`
  175 + // window.location.href = `tel:${mobile}`
  176 + ZWJSBridge.phoneCall({
  177 + corpId: mobile,
  178 + })
  179 + .then((res) => {
  180 + console.log(res)
  181 + })
  182 + .catch((err) => {
  183 + console.log(err)
  184 + })
185 185 } else {
186 186 this.$toast('暂无联系方式')
187 187 }
... ... @@ -192,3 +192,12 @@ export default {
192 192 },
193 193 }
194 194 </script>
  195 +<style lang="scss">
  196 +// 长辈版
  197 +.elder {
  198 + .base_detail .tag_item .tag_text,.base_detail .uni_text .tag_box .tag,.base_detail .uni_text .address,.base_detail .content_box .content_all .teacher_box .teacher_name,.base_detail .content_box .content_all .teacher_box .teacher_level,.base_detail .content_box .content_all .teacher_box .teacher_info,.base_detail .content_box .content_all .teacher_box .teacher_location{
  199 + font-size: 36px;
  200 + }
  201 +
  202 +}
  203 +</style>
195 204 \ No newline at end of file
... ...
src/views/Service/BaseDetail/c_BaseDes.vue
... ... @@ -16,20 +16,19 @@
16 16 <p class="tag_title">课程一览</p>
17 17 <div class="content_box">
18 18 <div class="content_all active_box">
19   - <template v-for="(item,index) in CourseData">
  19 + <template v-for="(item, index) in CourseData">
20 20 <div class="active_item" :key="index" @click="handleCourseDetail(item)">
21   - <div class="bg_box" :style="{backgroundImage:'url('+(item.coverUrl||item.coverList[0].cover_url)+')'}">
22   - </div>
  21 + <div class="bg_box" :style="{ backgroundImage: 'url(' + (item.coverUrl || item.coverList[0].cover_url) + ')' }"></div>
23 22 <div class="text_box">
24 23 <p class="title">{{ item.course_name }}</p>
25   - <span class="tag" v-for="item3,index3 in item.course_labels" :key="index3">{{ item3 }}</span>
  24 + <span class="tag" v-for="(item3, index3) in item.course_labels" :key="index3">{{ item3 }}</span>
26 25 <!-- <div class="count_box">
27 26 <span class="count">{{item.read_count}}人已浏览</span>
28 27 </div> -->
29 28 </div>
30 29 </div>
31 30 </template>
32   - <p class="tag_text" v-if="CourseData.length==0">暂无课程</p>
  31 + <p class="tag_text" v-if="CourseData.length == 0">暂无课程</p>
33 32 </div>
34 33 </div>
35 34 </div>
... ... @@ -40,17 +39,19 @@
40 39 <div class="content_box">
41 40 <div class="content_all">
42 41 <div class="teacher_box">
43   - <div class="teacher_item" v-for="(item,index) in teacherData" :key="index">
  42 + <div class="teacher_item" v-for="(item, index) in teacherData" :key="index">
44 43 <div class="teacher_img_box">
45   - <img class="teacher_img" :src="item.photourl||defaultHead" alt="">
  44 + <img class="teacher_img" :src="item.photourl || defaultHead" alt="" />
46 45 </div>
47   - <p class="teacher_name">{{item.teacher_name}}</p>
48   - <p class="teacher_info">{{item.teacher_info}}</p>
49   - <p class="teacher_level">导师级别:{{item.state==1?'初级':item.state==1?'中级':item.state==1?'高级':''}}</p>
50   - <p class="teacher_location">所在机构:{{detailData.baseName}}</p>
  46 + <p class="teacher_name">{{ item.teacher_name }}</p>
  47 + <p class="teacher_info">{{ item.teacher_info }}</p>
  48 + <p class="teacher_level">
  49 + 导师级别:{{ item.state == 1 ? '初级' : item.state == 1 ? '中级' : item.state == 1 ? '高级' : '' }}
  50 + </p>
  51 + <p class="teacher_location">所在机构:{{ detailData.baseName }}</p>
51 52 </div>
52 53 </div>
53   - <p class="tag_text" v-if="teacherData.length==0">暂无导师</p>
  54 + <p class="tag_text" v-if="teacherData.length == 0">暂无导师</p>
54 55 </div>
55 56 </div>
56 57 </div>
... ... @@ -61,7 +62,7 @@
61 62 <script>
62 63 export default {
63 64 props: ['detailData'],
64   - data () {
  65 + data() {
65 66 return {
66 67 active: 0,
67 68 CourseData: [],
... ... @@ -69,53 +70,104 @@ export default {
69 70 defaultHead: require('@/assets/service/head.png'),
70 71 }
71 72 },
72   - mounted () {
73   - this.GetCourseList()//获取课程列表
74   - this.GetTeacherList()//获取导师列表
  73 + mounted() {
  74 + this.GetCourseList() //获取课程列表
  75 + this.GetTeacherList() //获取导师列表
75 76 },
76 77 methods: {
77 78 //获取课程列表
78   - GetCourseList () {
  79 + GetCourseList() {
79 80 this.yxAxios.get(`${this.yanxueUrl}/api/BaseManage/GetCourseList?baseId=${this.detailData.id}&state=-1&checkStatus=4`).then((res) => {
80 81 console.log(res)
81 82 if (res.data.status == 1) {
82   - let CourseData = res.data.data.list;
  83 + let CourseData = res.data.data.list
83 84 console.log('课程列表:', CourseData)
84 85 for (let i in CourseData) {
85   - CourseData[i].course_labels = CourseData[i].course_labels.split(',');
  86 + CourseData[i].course_labels = CourseData[i].course_labels.split(',')
86 87 if (CourseData[i].startDate) {
87   - CourseData[i].week = this.formatWeek(this.Moment(CourseData[i].startDate).format('d'));
88   - CourseData[i].startDate = this.Moment(CourseData[i].startDate).format('YYYY.M.D');
89   - CourseData[i].endDate = this.Moment(CourseData[i].endDate).format('YYYY.M.D');
  88 + CourseData[i].week = this.formatWeek(this.Moment(CourseData[i].startDate).format('d'))
  89 + CourseData[i].startDate = this.Moment(CourseData[i].startDate).format('YYYY.M.D')
  90 + CourseData[i].endDate = this.Moment(CourseData[i].endDate).format('YYYY.M.D')
90 91 }
91 92 }
92 93 this.CourseData = CourseData
93 94 } else {
94   - this.$message.warning(res.data.message || res.data.result);
  95 + this.$message.warning(res.data.message || res.data.result)
95 96 }
96 97 })
97 98 },
98 99 //获取导师列表
99   - GetTeacherList () {
  100 + GetTeacherList() {
100 101 this.yxAxios.get(`${this.yanxueUrl}/api/BaseManage/GetTeacherList?baseId=${this.detailData.id}`).then((res) => {
101 102 console.log(res)
102 103 if (res.data.status == 1) {
103   - let data = res.data.data.list;
  104 + let data = res.data.data.list
104 105 console.log('导师列表:', data)
105 106 this.teacherData = data
106 107 } else {
107   - this.$message.warning(res.data.message || res.data.result);
  108 + this.$message.warning(res.data.message || res.data.result)
108 109 }
109 110 })
110 111 },
111 112 // 点击课程
112   - handleCourseDetail (item) {
  113 + handleCourseDetail(item) {
113 114 this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id } })
114 115 },
115 116 // 格式化星期
116   - formatWeek (week) {
117   - return week == 1 ? '周一' : week == 2 ? '周二' : week == 3 ? '周三' : week == 4 ? '周四' : week == 5 ? '周五' : week == 6 ? '周六' : week == 0 ? '周日' : '';
  117 + formatWeek(week) {
  118 + return week == 1
  119 + ? '周一'
  120 + : week == 2
  121 + ? '周二'
  122 + : week == 3
  123 + ? '周三'
  124 + : week == 4
  125 + ? '周四'
  126 + : week == 5
  127 + ? '周五'
  128 + : week == 6
  129 + ? '周六'
  130 + : week == 0
  131 + ? '周日'
  132 + : ''
118 133 },
  134 + },
  135 +}
  136 +</script>
  137 +<style lang="scss">
  138 +// 长辈版
  139 +.elder {
  140 + .van-tab {
  141 + font-size: 36px;
  142 + }
  143 + .base_detail {
  144 + .uni_text {
  145 + .course_name {
  146 + font-size: 52px;
  147 + }
  148 + .course_info {
  149 + font-size: 36px;
  150 + }
  151 + }
  152 + .tag_item {
  153 + .tag_title {
  154 + font-size: 42px;
  155 + }
  156 + .tag_text {
  157 + font-size: 36px !important;
  158 + line-height: 48px !important;
  159 + }
  160 + }
  161 + .content_box .content_all .active_item{
  162 + .title{
  163 + font-size: 36px;
  164 + line-height: 52px;
  165 + height: 124px;
  166 + }
  167 + .tag{
  168 + font-size: 36px;
  169 + }
  170 + }
119 171 }
120 172 }
121   -</script>
122 173 \ No newline at end of file
  174 +</style>
... ...
src/views/Service/CheckOrderReserve.vue
... ... @@ -75,7 +75,6 @@ export default {
75 75 TalentReserveData: '', //套餐
76 76 showCourseData: '', //当前课程的信息
77 77 publicName: '',
78   - openId: '', //支付用
79 78 userInfo: '', //支付用
80 79 appId: 'wx1305e88d2bc74073',
81 80 CourseParentId: '', //学习中心途径购买课程对应参数
... ... @@ -89,17 +88,8 @@ export default {
89 88 }
90 89 },
91 90 mounted() {
92   - let openId = localStorage.getItem('openId')
93 91  
94   - if (process.env.NODE_ENV === 'production' && this.common.isWeiXin()) {
95   - if (!openId) {
96   - localStorage.setItem('prePage', 'ServiceCheckOrder')
97   - this.$router.push({ name: 'Authorize' })
98   - return
99   - } else {
100   - this.openId = openId
101   - }
102   - }
  92 +
103 93  
104 94 let userInfo = localStorage.getItem('userInfo')
105 95 if (userInfo) {
... ...
src/views/Service/CourseBaseList/RankingList.vue
... ... @@ -471,3 +471,12 @@ p{
471 471 }
472 472 }
473 473 </style>
  474 +<style lang="scss">
  475 +// 长辈版
  476 +.elder {
  477 + .dataList li h3,.dataList li .address,.dataList li .bottom,.dataList li .img .bot,#taobao-best .swiper-slide .goods .cont div,#taobao-best .swiper-slide .goods .cont .bottomLabel span,#taobao-best .swiper-slide .goods .lookNum{
  478 + font-size: 36px;
  479 + }
  480 +
  481 +}
  482 +</style>
474 483 \ No newline at end of file
... ...
src/views/Service/CourseBaseList/SelectionBase.vue
... ... @@ -307,3 +307,12 @@ export default {
307 307 }
308 308 }
309 309 </style>
  310 +<style lang="scss">
  311 +// 长辈版
  312 +.elder {
  313 + .select_popup .filter_title,.select_popup .select_item,#SelectionBase .drop_down_box .filter,#SelectionBase .van-dropdown-menu__title{
  314 + font-size: 36px;
  315 + }
  316 +
  317 +}
  318 +</style>
... ...
src/views/Service/TalentReserve.vue
... ... @@ -161,8 +161,6 @@ export default {
161 161 this.$toast('请先选择团期')
162 162 return
163 163 }
164   - let isLogin = this.checkLogin()
165   - if (!isLogin) return
166 164 const query = {
167 165 date: this.date,
168 166 count: this.count,
... ... @@ -176,25 +174,7 @@ export default {
176 174 )
177 175 this.$router.push({ name: 'ServiceCheckOrderReserve', query: query })
178 176 },
179   - // 判断是否已登录
180   - checkLogin() {
181   - // if (process.env.NODE_ENV != "production") return true;
182   -
183   - const userInfo = JSON.parse(localStorage.getItem('userInfo'))
184   - const publicName = localStorage.getItem('publicName')
185   - if (!userInfo?.phone) {
186   - localStorage.setItem('prePage', 'TalentReserve')
187   - localStorage.setItem('prePageQuery', JSON.stringify({ ProgramType: this.$route.query.ProgramType,
188   - productSceneId: this.$route.query.ProgramType }))
189   - this.$router.push({ name: 'LoginQYX', query: { publicName: publicName } })
190   - return false
191   - }
192   - // else if (localStorage.getItem('schoolNames') == 'undefined' || !localStorage.getItem('schoolNames')) {
193   - // this.showSchool = true
194   - // return false;
195   - // }
196   - return true
197   - },
  177 +
198 178 // 选择日期
199 179 chooseDate(date) {
200 180 let hasDate = false
... ...
src/views/Service/component/ServiceListSecond.vue
... ... @@ -214,3 +214,11 @@ export default {
214 214 }
215 215 }
216 216 </style>
  217 +<style lang="scss">
  218 +// 长辈版
  219 +.elder {
  220 + .abroad .uni_item_mini .content .title,.abroad .uni_item_mini .content .address,.abroad .uni_item_mini .img_box .bottom{
  221 + font-size: 36px !important;
  222 + }
  223 +}
  224 +</style>
... ...
src/views/Service/component/c_CourseList.vue
... ... @@ -148,3 +148,11 @@ export default {
148 148 }
149 149 }
150 150 </style>
  151 +<style lang="scss">
  152 +// 长辈版
  153 +.elder {
  154 + .abroad .uni_item_mini .content .title,.abroad .uni_item_mini .img_box .bottom .level,.abroad .uni_item_mini .img_box .bottom .count,.abroad .uni_item_mini .content .name{
  155 + font-size: 36px !important;
  156 + }
  157 +}
  158 +</style>
... ...
src/views/Teacher/Teacher.vue
... ... @@ -121,3 +121,12 @@ export default {
121 121 }
122 122 }
123 123 </style>
  124 +<style lang="scss">
  125 +// 长辈版
  126 +.elder {
  127 + #article .teacher_item .name,#article .teacher_item .name span,#article .teacher_item .des{
  128 + font-size: 36px;
  129 + }
  130 +
  131 +}
  132 +</style>
... ...
src/views/Travel/schoolFollow.vue
... ... @@ -70,4 +70,12 @@ export default {
70 70 }
71 71 }
72 72 }
  73 +</style>
  74 +<style lang="scss">
  75 +// 长辈版
  76 +.elder {
  77 + .card .cardItem{
  78 + font-size: 36px;
  79 + }
  80 +}
73 81 </style>
74 82 \ No newline at end of file
... ...
src/views/aboutDes.vue 0 → 100644
... ... @@ -0,0 +1,42 @@
  1 +<template>
  2 + <p class="bottom_about_des">
  3 + 本服务由浙江政务服务网、绍兴市教育局提供<br />服务咨询热线:
  4 + <a href="tel:400-826-2468">400-826-2468</a>
  5 + <!-- <span @click="call">400-826-2468</span> -->
  6 + </p>
  7 +</template>
  8 +<script>
  9 +export default {
  10 + methods: {
  11 + call() {
  12 + ZWJSBridge.phoneCall({
  13 + corpId: '400-826-2468',
  14 + })
  15 + .then((res) => {
  16 + console.log(res)
  17 + })
  18 + .catch((err) => {
  19 + console.log(err)
  20 + })
  21 + },
  22 + },
  23 +}
  24 +</script>
  25 +<style lang="scss">
  26 +.bottom_about_des {
  27 + font-size: 26px;
  28 + text-align: center;
  29 + padding: 40px;
  30 +
  31 + a,span {
  32 + color: rgb(41, 122, 189);
  33 + }
  34 +}
  35 +</style>
  36 +<style lang="scss">
  37 +.elder {
  38 + .bottom_about_des {
  39 + font-size: 36px;
  40 + }
  41 +}
  42 +</style>
... ...