Commit fd467c346e70bc05c3b22d70abcd8fdf6b58824a

Authored by 夏洋涛
1 parent 823e59cb
Exists in master

feat: 适老化,支付

src/App.vue
... ... @@ -8,6 +8,7 @@
8 8 </div>
9 9 </template>
10 10 <script>
  11 +import vConsole from 'vconsole'
11 12 export default {
12 13 data () {
13 14 return {
... ... @@ -15,7 +16,7 @@ export default {
15 16 }
16 17 },
17 18 mounted () {
18   -
  19 + new vConsole()
19 20 ZWJSBridge.onReady(() => {
20 21 console.log('初始化完成后,执行bridge方法')
21 22  
... ...
src/router/index.js
... ... @@ -24,7 +24,8 @@ import EditContact from &#39;@/views/Service/EditContact.vue&#39; //新增联系人
24 24 import MyClassList from '@/views/Home/MyClassList.vue' //扫码基地签到
25 25 import StudentDetail from '@/views/Home/StudentDetail.vue' //学生信息
26 26  
27   -
  27 +import payneed from '@/views/Service/payneed.vue' //购买须知
  28 +import protocol from '@/views/Service/protocol.vue' //用户协议
28 29  
29 30  
30 31 Vue.use(VueRouter)
... ... @@ -195,6 +196,22 @@ const routes = [{
195 196 title: '学生信息'
196 197 }
197 198 },
  199 + {
  200 + path: '/payneed',
  201 + name: 'payneed',
  202 + component: payneed,
  203 + meta: {
  204 + title: '购买须知'
  205 + }
  206 + },
  207 + {
  208 + path: '/protocol',
  209 + name: 'protocol',
  210 + component: protocol,
  211 + meta: {
  212 + title: '用户协议'
  213 + }
  214 + },
198 215 ]
199 216 const router = new VueRouter({
200 217 mode: 'hash',
... ...
src/views/Home/Home.vue
... ... @@ -30,7 +30,7 @@
30 30 </div>
31 31 <div class="item" @click="handelElder">
32 32 <div class="left">
33   - <van-icon class="icon" name="discount" />
  33 + <van-icon class="icon" name="friends-o" />
34 34 <span>长辈版</span>
35 35 </div>
36 36 <p>
... ...
src/views/Home/MyClassList.vue
... ... @@ -94,8 +94,7 @@ export default {
94 94 onSuccess: res => {
95 95 this.$toast.success('打卡签到成功');
96 96 setTimeout(() => {
97   - let publicName = sessionStorage.getItem('publicName');
98   - this.$router.push({ name: 'Home' + publicName })
  97 + this.$router.push({ name: 'Home' })
99 98 }, 1000)
100 99 },
101 100 onFail: err => {
... ...
src/views/Home/StudentDetail.vue
... ... @@ -416,4 +416,57 @@ export default {
416 416 }
417 417 }
418 418 }
  419 +</style>
  420 +<style lang="scss">
  421 +.elder {
  422 + .student_detail {
  423 + .infomation {
  424 + .top {
  425 + .right {
  426 + .name {
  427 + font-size: 50px;
  428 + span {
  429 + font-size: 36px;
  430 + line-height: 50px;
  431 + }
  432 + }
  433 + .school_name {
  434 + font-size: 36px;
  435 + }
  436 + }
  437 + }
  438 + .count_box .count_item {
  439 + .count {
  440 + font-size: 36px;
  441 + span {
  442 + font-size: 44px;
  443 + }
  444 + }
  445 + .des {
  446 + font-size: 40px;
  447 + }
  448 + }
  449 + .icon_box .icon_item p {
  450 + font-size: 40px;
  451 + }
  452 + }
  453 + .list_box .list_item {
  454 + .left{
  455 + font-size: 40px;
  456 + .minute{
  457 + font-size: 36px;
  458 + }
  459 + }
  460 + .right {
  461 + button {
  462 + font-size: 32px;
  463 + padding: 0;
  464 + }
  465 + .item_title {
  466 + font-size: 40px;
  467 + }
  468 + }
  469 + }
  470 + }
  471 +}
419 472 </style>
420 473 \ No newline at end of file
... ...
src/views/Home/component/AddChildPopupGroup.vue
... ... @@ -92,7 +92,6 @@ export default {
92 92 data () {
93 93 return {
94 94 step: 1,
95   - publicName: '',
96 95 phone: '',
97 96 codeText: '获取验证码',//获取验证码按钮文字
98 97 code: '',//验证码
... ... @@ -129,14 +128,11 @@ export default {
129 128 school: '',
130 129 schoolId: '',
131 130  
132   - appId: '',
133 131 chooseSchoolisShow: false
134 132 }
135 133 },
136 134  
137 135 mounted () {
138   - let publicName = sessionStorage.getItem('publicName')
139   - this.publicName = publicName
140 136 let userInfo = sessionStorage.getItem('userInfo')
141 137 this.userInfo = JSON.parse(userInfo);
142 138 this.initYearArr()
... ...
src/views/Service/AbroadDetail.vue
... ... @@ -194,10 +194,12 @@
194 194 <div class="pintuan_about">
195 195 <img class="about_img" src="@/assets/service/tip.png" alt="">
196 196 <p class="about_title">拼团规则说明</p>
197   - <p class="about_content">1、拼团展示默认为最近活动档期,选择其它档期请时刻注意成团动态。</p>
198   - <p class="about_content">2、在限时截止后,报名人数未达最低成团数,则结束本团活动,系统将在72小时内,全额退还!</p>
199   - <p class="about_content">3、报名人数达到最低成团要求后,则拼团成功,凡在报名截止时间内未达最大限团人数,则可放心参与。</p>
200   - <p class="about_content">4、已成团的活动,除特殊情况等不可抗拒因素外,活动如期举行。</p>
  197 + <div class="about_box">
  198 + <p class="about_content">1、拼团展示默认为最近活动档期,选择其它档期请时刻注意成团动态。</p>
  199 + <p class="about_content">2、在限时截止后,报名人数未达最低成团数,则结束本团活动,系统将在72小时内,全额退还!</p>
  200 + <p class="about_content">3、报名人数达到最低成团要求后,则拼团成功,凡在报名截止时间内未达最大限团人数,则可放心参与。</p>
  201 + <p class="about_content">4、已成团的活动,除特殊情况等不可抗拒因素外,活动如期举行。</p>
  202 + </div>
201 203 <p class="about_know" @click="showPintuanAbout=false">我知道了</p>
202 204 </div>
203 205 </van-popup>
... ... @@ -210,7 +212,6 @@ export default {
210 212 return {
211 213 isOpen: true,
212 214 courseId: "",
213   - publicName: '',
214 215 detailData: "",
215 216 active: 0,
216 217 courseTable: [], //课程表
... ... @@ -230,7 +231,6 @@ export default {
230 231 proCoupon: [],//优惠券
231 232 proCouponHas: false,//优惠券已领取
232 233 showPintuanAbout: false,
233   - appId: '',
234 234 centerNo: ''
235 235 };
236 236 },
... ... @@ -610,9 +610,7 @@ export default {
610 610 },
611 611 // 返回首页
612 612 backHome () {
613   - let publicName = sessionStorage.getItem("publicName");
614   - console.log("Service" + (publicName ? publicName : ""));
615   - this.$router.push({ name: "Service" + (publicName ? publicName : "") });
  613 + this.$router.push({ name: "ServiceKQ" });
616 614 },
617 615 // 点击评价进入评价详情页
618 616 handleEvaluate () {
... ... @@ -1274,6 +1272,21 @@ export default {
1274 1272 font-size: 40px !important;
1275 1273 }
1276 1274 }
  1275 + .pintuan_about {
  1276 + .about_title {
  1277 + font-size: 44px;
  1278 + }
  1279 + .about_box {
  1280 + height: 600px;
  1281 + overflow: auto;
  1282 + }
  1283 + .about_content {
  1284 + font-size: 36px;
  1285 + }
  1286 + .about_know {
  1287 + font-size: 40px;
  1288 + }
  1289 + }
1277 1290 }
1278 1291 }
1279 1292 </style>
1280 1293 \ No newline at end of file
... ...
src/views/Service/AbroadEvaluate.vue
... ... @@ -197,4 +197,31 @@ export default {
197 197 .preview_img {
198 198 width: 100vw;
199 199 }
  200 +</style>
  201 +<style lang="scss">
  202 +.elder {
  203 + #abroadEvaluate {
  204 + .top .score {
  205 + span {
  206 + font-size: 80px;
  207 + }
  208 + p {
  209 + font-size: 36px;
  210 + }
  211 + }
  212 + .evaluate_list .evaluate_item {
  213 + .user {
  214 + p {
  215 + font-size: 40px;
  216 + }
  217 + span {
  218 + font-size: 40px;
  219 + }
  220 + }
  221 + .evaluation{
  222 + font-size: 40px;
  223 + }
  224 + }
  225 + }
  226 +}
200 227 </style>
201 228 \ No newline at end of file
... ...
src/views/Service/CardBoxXST.vue
... ... @@ -414,4 +414,32 @@ export default {
414 414 }
415 415 }
416 416 }
  417 +</style>
  418 +<style lang="scss">
  419 +.elder {
  420 + #cardBox .card_item {
  421 + height: 300px;
  422 + background-size: 100% 100%;
  423 + &.big {
  424 + height: 330px;
  425 + }
  426 + .left .top {
  427 + .title {
  428 + font-size: 40px;
  429 + }
  430 + .bigtext {
  431 + font-size: 40px;
  432 + }
  433 + }
  434 + .end_time {
  435 + font-size: 36px;
  436 + }
  437 + .des {
  438 + font-size: 36px;
  439 + }
  440 + .usenow{
  441 + font-size: 40px;
  442 + }
  443 + }
  444 +}
417 445 </style>
418 446 \ No newline at end of file
... ...
src/views/Service/CardCourseList.vue
... ... @@ -21,7 +21,6 @@ export default {
21 21 name: 'CardBoxXST',
22 22 data () {
23 23 return {
24   - publicName: '',
25 24 unionId: '',
26 25 cardTitle: '',
27 26 couponPrice: '',
... ... @@ -34,11 +33,6 @@ export default {
34 33 }
35 34 },
36 35 mounted () {
37   - let publicName = this.$route.query.publicName || sessionStorage.getItem('publicName');
38   - if (publicName) {
39   - sessionStorage.setItem('publicName', publicName)
40   - this.publicName = publicName
41   - }
42 36 this.cardTitle = sessionStorage.getItem('cardCousreCardTitle');
43 37 this.couponPrice = sessionStorage.getItem('cardCousreCardPrice');
44 38 this.cardId = sessionStorage.getItem('cardCousreCardId');
... ... @@ -46,17 +40,6 @@ export default {
46 40 this.proName = sessionStorage.getItem('cardCousreProName');
47 41 this.pics = sessionStorage.getItem('cardCousrePics');
48 42 this.geted = sessionStorage.getItem('cardCousreGeted') == 'true' ? true : false
49   - if (process.env.NODE_ENV === "production") {
50   - let openId = sessionStorage.getItem('openId' + this.publicName);
51   - if (!openId) {
52   - sessionStorage.setItem('prePage', 'CardBoxXST');
53   - this.$router.push({ name: 'Authorize' + this.publicName })
54   - return;
55   - }
56   - this.unionId = sessionStorage.getItem('unionId');
57   - } else {
58   - this.unionId = 'oJPmPuLaAx2x2DaRGfCFeYuLWzLU';
59   - }
60 43 this.getCourseList()
61 44 },
62 45 methods: {
... ...
src/views/Service/CheckOrder.vue
... ... @@ -64,25 +64,12 @@ export default {
64 64 selectCombo: '',//当前套餐信息
65 65 showCourseData: '',//当前课程的信息
66 66 selectCombo: '',//已选择的套餐
67   - publicName: '',
68 67 userInfo: '',//支付用
69   - appId: '',
70 68 selectedContactArr: [],//选择的出行人
71 69 selectedContact: '',
72 70 }
73 71 },
74 72 mounted () {
75   - let publicName = sessionStorage.getItem('publicName');
76   - if (publicName) {
77   - this.publicName = publicName
78   - if (publicName == 'SXYX') {
79   - this.appId = 'wx1305e88d2bc74073'
80   - } else if (publicName == 'XST') {
81   - this.appId = 'wx1c630c8773c482f1'
82   - } else if (publicName == 'KQ') {
83   - this.appId = 'wx1305e88d2bc74073'
84   - }
85   - }
86 73 let userInfo = sessionStorage.getItem('userInfo');
87 74 if (userInfo) {
88 75 this.userInfo = JSON.parse(userInfo);
... ... @@ -177,7 +164,7 @@ export default {
177 164 "price": this.selectCombo.actualPrice * 1000 * this.count / 1000,//商品减掉优惠券之前的价格
178 165 "travelNum": this.selectedContact,//出行人编号
179 166 "couponId": this.useCard?.id || 0,
180   - "appId": this.appId
  167 + "appId": 'wx1305e88d2bc74073'
181 168 },
182 169 onSuccess: res => {
183 170 if (res.data.data) {
... ... @@ -204,20 +191,52 @@ export default {
204 191 },
205 192 openPay (data) {
206 193 const sUserAgent = window.navigator.userAgent.toLowerCase()
207   - const dtdreamweb = sUserAgent.indexOf("dtdreamweb") > -1
208   - const miniprogram = sUserAgent.indexOf("miniprogram") > -1 && sUserAgent.indexOf("alipay") > -1
209   - if (dtdreamweb) {
210   - alert('浙里办')
211   - }
212   - else if (miniprogram) {
213   - alert('支付宝')
214   - }
215   - let that = this;
216   - var payMsg = {
217   - platform: 1,
218   - arg: {
219   - "credential": JSON.stringify({
220   - "appid": "2021000118637887",
  194 + const Jupiter = sUserAgent.indexOf("Jupiter") > -1
  195 + if (Jupiter) {
  196 + alert('App')
  197 + this.mgop({
  198 + api: 'mgop.sz.hswsy.appPay', // 必须
  199 + host: 'https://mapi.zjzwfw.gov.cn/',
  200 + dataType: 'JSON',
  201 + type: 'POST',
  202 + appKey: 'fuxgnukl+2001895516+edccpx', // 必须
  203 + headers: {
  204 + // 'isTestUrl': '1'
  205 + },
  206 + data: {
  207 + "appid": "2021002189681626",
  208 + "attach": "string1",
  209 + "body": "string23",
  210 + "notify_url": "http://47.110.50.251:9091/api/alipay/pay",
  211 + "outTradeNo": new Date().getTime(),
  212 + "payType": 0,
  213 + "payWay": 0,
  214 + "productId": "11",
  215 + "quit_url": "https://puser.zjzwfw.gov.cn/sso/mobile.do?action=oauth&scope=1&servicecode=hswsy&goto=",
  216 + "subject": "string",
  217 + "totalFee": "0.01",
  218 + },
  219 + onSuccess: res => {
  220 + console.log(res)
  221 + this.BridgePay(res.data.message)
  222 + },
  223 + onFail: err => {
  224 + console.log('err', err)
  225 + }
  226 + });
  227 + } else {
  228 + alert('H5')
  229 + this.mgop({
  230 + api: 'mgop.sz.hswsy.mobilePay', // 必须
  231 + host: 'https://mapi.zjzwfw.gov.cn/',
  232 + dataType: 'JSON',
  233 + type: 'POST',
  234 + appKey: 'fuxgnukl+2001895516+edccpx', // 必须
  235 + headers: {
  236 + // 'isTestUrl': '1'
  237 + },
  238 + data: {
  239 + "appid": "2021002189681626",
221 240 "attach": "string1",
222 241 "body": "string23",
223 242 "notify_url": "http://47.110.50.251:9091/api/alipay/pay",
... ... @@ -227,8 +246,24 @@ export default {
227 246 "productId": "11",
228 247 "quit_url": "https://www.baidu.com",
229 248 "subject": "string",
230   - "totalFee": "1000000"
231   - }),
  249 + "totalFee": "0.01",
  250 + },
  251 + onSuccess: res => {
  252 + console.log(res)
  253 + this.BridgePay(res.data.message)
  254 + },
  255 + onFail: err => {
  256 + console.log('err', err)
  257 + }
  258 + });
  259 + }
  260 + },
  261 + // 支付API
  262 + BridgePay (credential) {
  263 + var payMsg = {
  264 + platform: 1,
  265 + arg: {
  266 + "credential": credential,
232 267 "inSandBox": false
233 268 }
234 269 };
... ... @@ -242,76 +277,7 @@ export default {
242 277 alert('支付失败:' + errorMsg);
243 278 console.log('#### ZWJSBridge.pay() error:' + error);
244 279 });
245   - return;
246   -
247   - Axios({
248   -
249   - url: 'https://proxy.shunzhi.net/prod/api/wx/pay/' + this.appId + '/1614900216',
250   - method: 'post',
251   - headers: { 'Content-Type': 'application/json;charset=UTF-8' },
252   - data: {
253   - notify_url: `https://yanxue.myjxt.com/api/Manage/WxBackInfo`,
254   - body: this.showCourseData.course_name + '_' + this.date,
255   - openId: this.openId, //'oHHbojor4C_gR96lxxFUeYTrY0Uc'
256   - outTradeNo: data.trade_no, //订单号
257   - productId: this.showCourseData.id, //商品id
258   - totalFee: this.paymoney * 100, //钱
259   - subject: '研学产品'
260   - // comeType: 9999
261   - }
262   - }).then((res) => { //这里使用了ES6的语法
263   - console.log('微信支付配置:', res.data.data)
264   - let obj = res.data.data
265   - wx.config({
266   - "debug": false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
267   - "appId": obj.appId, // 必填,公众号的唯一标识
268   - "timestamp": obj.timeStamp, // 必填,生成签名的时间戳
269   - "nonceStr": obj.nonceStr, // 必填,生成签名的随机串
270   - "signature": obj.paySign, // 必填,签名,见附录1
271   - "jsApiList": ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
272   - });
273   - wx.ready(function () {
274   - console.log('ready')
275   - wx.chooseWXPay({
276   - "timestamp": obj.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
277   - "nonceStr": obj.nonceStr, // 支付签名随机串,不长于 32 位
278   - // "package": obj.packageValue, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
279   - "package": 'prepay_id=' + obj.prepay_id, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
280   - "signType": obj.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
281   - "paySign": obj.paySign, // 支付签名
282   - success: function (res) {
283   - // 支付成功后的回调函数
284   - console.log('成功回调函数:'.error)
285   - // if (that.useCard) {
286   - // that.useCoupon()
287   - // } else {
288   - sessionStorage.removeItem('selectedContactArr')
289   -
290   - // 此处应跳转我的订单
291   - if (that.publicName == 'SXYX' || that.publicName == 'XST' || that.publicName == 'KQ') {
292   - that.$router.push({ name: 'ServiceOrderXST', query: { active: 1, showChatGroupUrl: 1 } })
293   - } else {
294   - that.$router.push({ name: 'ServiceOrderPublic' })
295   - }
296   - // }
297   -
298   - },
299   - fail: function (error) {
300   - //失败回调函数
301   - console.log('失败回调函数:'.error)
302   - that.$toast.fail(error.message);
303   - }
304   - });
305   - });
306   - wx.error(function (res) {
307   - console.log('err', res)
308   - // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
309   - this.$toast.fail('config信息验证失败');
310   - });
311   - }).catch((error) => {
312   - console.log(error) //请求失败返回的数据
313   - })
314   - },
  280 + }
315 281 }
316 282 }
317 283 </script>
... ... @@ -490,4 +456,61 @@ export default {
490 456 .van-checkbox {
491 457 display: inline-flex;
492 458 }
  459 +</style>
  460 +<style lang="scss">
  461 +.elder {
  462 + #checkOrder {
  463 + .goods_data {
  464 + .top {
  465 + img {
  466 + width: 200px;
  467 + height: 200px;
  468 + }
  469 + div {
  470 + width: 470px;
  471 + }
  472 + .goods_title {
  473 + font-size: 40px;
  474 + }
  475 + .package_name {
  476 + font-size: 36px;
  477 + }
  478 + .count {
  479 + font-size: 36px;
  480 + }
  481 + }
  482 + .bottom {
  483 + .time {
  484 + font-size: 36px;
  485 + }
  486 + .price {
  487 + font-size: 36px;
  488 + span {
  489 + font-size: 32px;
  490 + }
  491 + }
  492 + }
  493 + }
  494 + .card {
  495 + font-size: 40px;
  496 + }
  497 + .protocol {
  498 + font-size: 36px;
  499 + }
  500 + .Collection {
  501 + .box1 p {
  502 + font-size: 56px;
  503 + span {
  504 + font-size: 40px;
  505 + }
  506 + del {
  507 + font-size: 40px;
  508 + }
  509 + }
  510 + .box > span {
  511 + font-size: 44px;
  512 + }
  513 + }
  514 + }
  515 +}
493 516 </style>
494 517 \ No newline at end of file
... ...
src/views/Service/DatePackage.vue
... ... @@ -203,8 +203,6 @@ export default {
203 203 },
204 204  
205 205 checkOrder () {
206   - let isLogin = this.checkLogin()
207   - if (!isLogin) return;
208 206 if (this.count > this.numSecond) {
209 207 this.$toast('库存不足');
210 208  
... ... @@ -222,20 +220,6 @@ export default {
222 220 this.$router.push({ name: 'ServiceCheckOrder', query: query })
223 221 }
224 222 },
225   - // 判断是否已登录
226   - checkLogin () {
227   - if (process.env.NODE_ENV != "production") return true;
228   -
229   - const userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
230   - const publicName = sessionStorage.getItem('publicName')
231   - if (!userInfo?.phone) {
232   - sessionStorage.setItem('prePage', 'ServiceDatePackage');
233   - sessionStorage.setItem('prePageQuery', JSON.stringify({ date: this.date }));
234   - this.$router.push({ name: 'LoginPublic', query: { publicName: publicName } })
235   - return false;
236   - }
237   - return true;
238   - },
239 223 }
240 224 }
241 225 </script>
... ... @@ -417,40 +401,41 @@ export default {
417 401 </style>
418 402 <style lang="scss">
419 403 .elder {
420   - #datePackage {.tag_item {
421   - .tag_title {
422   - font-size: 44px;
423   - }
424   - .package_name {
425   - font-size: 40px;
426   - }
427   - .period .period_item {
428   - font-size: 40px;
429   - }
430   - .tag_title_flex .count{
431   - font-size: 40px;
432   - }
433   - .package_num{
434   - font-size: 40px;
435   - .tint{
436   - font-size: 40px;
437   -
  404 + #datePackage {
  405 + .tag_item {
  406 + .tag_title {
  407 + font-size: 44px;
  408 + }
  409 + .package_name {
  410 + font-size: 40px;
  411 + }
  412 + .period .period_item {
  413 + font-size: 40px;
  414 + }
  415 + .tag_title_flex .count {
  416 + font-size: 40px;
  417 + }
  418 + .package_num {
  419 + font-size: 40px;
  420 + .tint {
  421 + font-size: 40px;
  422 + }
438 423 }
439 424 }
440   - }
441   - .Collection {.box1 p{
442   - font-size: 56px;
443   - span{
444   - font-size: 40px;
445   - }
446   - del{
447   - font-size: 40px;
  425 + .Collection {
  426 + .box1 p {
  427 + font-size: 56px;
  428 + span {
  429 + font-size: 40px;
  430 + }
  431 + del {
  432 + font-size: 40px;
  433 + }
  434 + }
  435 + .box > span {
  436 + font-size: 44px;
  437 + }
448 438 }
449 439 }
450   - .box > span{
451   - font-size: 44px;
452   - }
453   - }
454   - }
455 440 }
456 441 </style>
457 442 \ No newline at end of file
... ...
src/views/Service/SelectContact.vue
... ... @@ -212,4 +212,27 @@ export default {
212 212 border-radius: 45px;
213 213 }
214 214 }
  215 +</style>
  216 +<style lang="scss" scoped>
  217 +.elder {
  218 + #selectContact {
  219 + .contact_item .info {
  220 + .name {
  221 + font-size: 44px;
  222 + }
  223 + .des {
  224 + font-size: 40px;
  225 + }
  226 + }
  227 + .box {
  228 + .add_btn {
  229 + font-size: 40px;
  230 + }
  231 + }
  232 + .btn{
  233 + font-size: 40px;
  234 + }
  235 +
  236 + }
  237 +}
215 238 </style>
216 239 \ No newline at end of file
... ...
src/views/Service/ServiceBaseKQ.vue
... ... @@ -92,7 +92,7 @@ export default {
92 92 handler () {
93 93 // 设置tabbar状态
94 94 this.tabName = this.$route.query.showTab || 'KQ'
95   - document.title = this.$route.query.showTab == 'ZZY' ? '周周营' : '柯桥研学'
  95 + document.title = this.$route.query.showTab == 'ZZY' ? '周周营' : '红色网上游——柯桥研学'
96 96 }
97 97 }
98 98 },
... ... @@ -368,24 +368,8 @@ export default {
368 368 },
369 369 // 我的优惠券
370 370 handleMyCard () {
371   - let isLogin = this.checkLogin()
372   - if (!isLogin) return;
373   - const publicName = sessionStorage.getItem('publicName')
374 371 // this.$toast('暂未开放,敬请期待!');
375   - this.$router.push({ name: 'CardBoxXST', query: { active: 1, publicName: publicName } })
376   - },
377   - // 判断是否已登录
378   - checkLogin () {
379   - if (process.env.NODE_ENV != "production") return true;
380   - const userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
381   - if (!userInfo?.phone) {
382   - const publicName = sessionStorage.getItem('publicName')
383   - sessionStorage.setItem('prePage', 'Service' + publicName);
384   - sessionStorage.setItem('prePageQuery', JSON.stringify({ showTab: this.$route.query.showTab }));
385   - this.$router.push({ name: 'LoginPublic', query: { publicName: publicName } })
386   - return false;
387   - }
388   - return true;
  372 + this.$router.push({ name: 'CardBoxXST', query: { active: 1} })
389 373 },
390 374 formatWeek (week) {
391 375 return week == 1 ? '周一' : week == 2 ? '周二' : week == 3 ? '周三' : week == 4 ? '周四' : week == 5 ? '周五' : week == 6 ? '周六' : week == 0 ? '周日' : '';
... ...
src/views/Service/ServiceOrderXST.vue
... ... @@ -51,9 +51,9 @@
51 51 <span>加入拼团群</span>
52 52 </div>
53 53 <div>
54   - <van-button type="warning" plain size="small" @click="showPintuanAbout = true" style="margin-right:15px">退款说明</van-button>
  54 + <van-button class="btn" type="warning" plain size="small" @click="showPintuanAbout = true" style="margin-right:15px">退款说明</van-button>
55 55 <!-- <van-button type="info" size="small" @click="makeCode(item.id)">核销码</van-button> -->
56   - <van-button type="info" size="small" @click="toCode(item)">核销码</van-button>
  56 + <van-button class="btn" type="info" size="small" @click="toCode(item)">核销码</van-button>
57 57 </div>
58 58 </div>
59 59 <div class="detailsBox">
... ... @@ -144,12 +144,14 @@
144 144 <div class="pintuan_about">
145 145 <img class="about_img" src="@/assets/service/tip.png" alt="">
146 146 <p class="about_title">退款说明</p>
147   - <p class="about_content">1、凡拼团活动报名人数未达最低成团数,本团活动则不开营,系统将在72小时内,全额退还,且不产生违约风险赔偿。</p>
148   - <p class="about_content">2、如果您因行程发生变动需要取消预订,建议您尽可能提前与平台商户取得联系,并按商品订购须知或该商户旅游合同条款进行退款。</p>
149   - <p class="about_content" style="font-weight:bold">如若未声明与明确的,按《浙江省境内旅游合同》条款退款。</p>
150   - <!-- <p class="about_content">(1)出发前7日至4日,支付旅游费用总额的10%。</p>
  147 + <div class="about_box">
  148 + <p class="about_content">1、凡拼团活动报名人数未达最低成团数,本团活动则不开营,系统将在72小时内,全额退还,且不产生违约风险赔偿。</p>
  149 + <p class="about_content">2、如果您因行程发生变动需要取消预订,建议您尽可能提前与平台商户取得联系,并按商品订购须知或该商户旅游合同条款进行退款。</p>
  150 + <p class="about_content" style="font-weight:bold">如若未声明与明确的,按《浙江省境内旅游合同》条款退款。</p>
  151 + <!-- <p class="about_content">(1)出发前7日至4日,支付旅游费用总额的10%。</p>
151 152 <p class="about_content">(2)出发前3日至1日,支付旅游费用总额的15%。</p>
152 153 <p class="about_content">(3)出发当日,支付旅游费用总额的20%。</p> -->
  154 + </div>
153 155 <p class="about_know" @click="showPintuanAbout=false">我知道了</p>
154 156 </div>
155 157 </van-popup>
... ... @@ -434,7 +436,7 @@ export default {
434 436 },
435 437 //跳转
436 438 toEdit (item) {
437   - this.$router.push({ path: 'abroad_detail', query: { courseId: item.courseId, publicName: sessionStorage.getItem('publicName') } })
  439 + this.$router.push({ path: 'abroad_detail', query: { courseId: item.courseId } })
438 440 },
439 441 //二维码转图片
440 442 canvanqrCode () {
... ... @@ -865,3 +867,91 @@ export default {
865 867 width: 100vw;
866 868 }
867 869 </style>
  870 +<style lang="scss">
  871 +.elder {
  872 + .myOrders {
  873 + .showBoxDPJ {
  874 + .topLine {
  875 + .topLineL,
  876 + .topLineR {
  877 + font-size: 40px;
  878 + }
  879 + }
  880 + .top {
  881 + .basefont {
  882 + .titlefont {
  883 + font-size: 40px;
  884 + }
  885 + .tcfont {
  886 + font-size: 36px;
  887 + }
  888 + }
  889 + .priceRight {
  890 + font-size: 40px;
  891 + }
  892 + }
  893 + .detailsBox {
  894 + font-size: 40px;
  895 + .detailsBoxOne {
  896 + display: block;
  897 + }
  898 + }
  899 + }
  900 + .showBox {
  901 + .top {
  902 + .basefont {
  903 + .titlefont {
  904 + font-size: 40px;
  905 + }
  906 + .tcfont {
  907 + font-size: 36px;
  908 + }
  909 + }
  910 + .priceRight {
  911 + font-size: 40px;
  912 + }
  913 + }
  914 + .detailsBox {
  915 + font-size: 40px;
  916 + .detailsBoxOne {
  917 + display: block;
  918 + }
  919 + }
  920 + .groupTime {
  921 + font-size: 36px;
  922 + }
  923 + .btnBox {
  924 + .wechat_code {
  925 + font-size: 36px;
  926 + }
  927 + .btn {
  928 + font-size: 36px;
  929 + }
  930 + }
  931 + }
  932 + .showBoxYPJ {
  933 + .boxdf .title {
  934 + font-size: 36px;
  935 + }
  936 + .evaluation {
  937 + font-size: 36px;
  938 + }
  939 + }
  940 + .pintuan_about {
  941 + .about_title {
  942 + font-size: 44px;
  943 + }
  944 + .about_box {
  945 + height: 600px;
  946 + overflow: auto;
  947 + }
  948 + .about_content {
  949 + font-size: 36px;
  950 + }
  951 + .about_know {
  952 + font-size: 40px;
  953 + }
  954 + }
  955 + }
  956 +}
  957 +</style>
868 958 \ No newline at end of file
... ...
src/views/Service/component/ServiceList.vue
... ... @@ -92,8 +92,7 @@ export default {
92 92 },
93 93 methods: {
94 94 handleUniDetail (item) {
95   - const publicName = sessionStorage.getItem('publicName');
96   - this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id,publicName:publicName } })
  95 + this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id} })
97 96 },
98 97 }
99 98 }
... ...
src/views/Service/component/ServiceListFour.vue
... ... @@ -64,8 +64,7 @@ export default {
64 64 },
65 65 methods: {
66 66 handleUniDetail (item) {
67   - const publicName = sessionStorage.getItem('publicName');
68   - this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id,publicName:publicName } })
  67 + this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id} })
69 68 },
70 69 }
71 70 }
... ... @@ -271,29 +270,46 @@ export default {
271 270 .elder {
272 271 .abroad {
273 272 .uni_item {
274   - .content{
275   - .title{
  273 + .content {
  274 + height: auto;
  275 + .title {
276 276 font-size: 40px;
277 277 }
278   - .active_time{
  278 + .active_time {
279 279 font-size: 32px;
280 280 }
281   - .tag_box{
282   - .tag{
283   - font-size: 32px;
284   - }
  281 + .tag_box {
  282 + .tag {
  283 + font-size: 32px;
  284 + }
  285 + }
  286 + .address {
  287 + font-size: 40px;
285 288 }
286 289 .price {
287   - .icon {
288   - font-size: 34px;
  290 + font-size: 40px;
  291 + .icon {
  292 + font-size: 40px;
  293 + }
  294 + .tint {
  295 + font-size: 40px;
  296 + }
  297 + .limit {
  298 + font-size: 34px;
  299 + }
289 300 }
290   - .tint {
291   - font-size: 28px;
  301 + .flex_box {
  302 + display: block;
292 303 }
293   - .limit {
294   - font-size: 28px;
  304 + .pintuan {
  305 + width: auto;
  306 + height: auto;
  307 + font-size: 34px;
  308 + line-height: 44px;
295 309 }
296 310 }
  311 + .img_box .bottom .count {
  312 + font-size: 34px;
297 313 }
298 314 }
299 315 }
... ...
src/views/Service/component/ServiceListSecond.vue
... ... @@ -56,8 +56,7 @@ export default {
56 56 },
57 57 methods: {
58 58 handleUniDetail (item) {
59   - const publicName = sessionStorage.getItem('publicName');
60   - this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id, publicName: publicName } })
  59 + this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id } })
61 60 },
62 61 }
63 62 }
... ...
src/views/Service/component/ServiceListThird.vue
... ... @@ -70,8 +70,7 @@ export default {
70 70 },
71 71 methods: {
72 72 handleUniDetail (item) {
73   - const publicName = sessionStorage.getItem('publicName');
74   - this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id, publicName: publicName } })
  73 + this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: item.id } })
75 74 },
76 75 orderScroll () {
77 76 // console.log(this.$refs.viewBox.scrollTop)
... ...
src/views/Service/payneed.vue 0 → 100644
... ... @@ -0,0 +1,66 @@
  1 +<template>
  2 + <div class="text">
  3 + <div class="title"><b>购买须知</b></div>
  4 + <div class="line"></div>
  5 + <div>第一条.特别提示</div>
  6 + <div>趣研学啦代理预订平台展示的游学产品由具备相关资质的合作商家直接提供,趣研学啦仅作为网络预订平台。合作商家充分借用趣研学啦预订平台,推出全方位的游学产品,并负责产品销售、资源确认、合同签署、发票开具、行程安排等全部环节的游学服务。趣研学啦作为游学产品的展示平台,您对本协议的接受并不意味着趣研学啦成为游学产品交易的参与者,对前述交易趣研学啦仅提供技术支持,不对合作商家行为的合法性、有效性及游学产品的真实性、合法性及有效性作任何明示或暗示的担保。</div>
  7 + <div>在预订开始前,请仔细阅读本须知,产品页面中的附件条款也作为协议的补充内容。当您开始预订该产品时,表明您已仔细阅读并接受协议中的所有条款。</div>
  8 + <div>第二条.词语定义</div>
  9 + <div>1.合作商家:通过趣研学啦代理预订平台展示游学产品的具有合法资质的商家。</div>
  10 + <div>2.趣研学啦代理预订平台:由趣研学啦提供系统平台技术,合作商家自行进行产品上线及售卖服务的第三方服务平台。</div>
  11 + <div>第三条.产品内容与价格</div>
  12 + <div>趣研学啦展示的产品价格仅为参考价格,由于游学产品价格的波动性,合作商家可能因为机票、酒店的价格变动而适度调整其在趣研学啦上已公布的游学产品的价格。您预订的所有游学产品的价格及产品价格包含的内容,以合作商家与您最后确认为准。非特别标明,产品价格不包含办理护照、入台证、签证或签注费、行李物品的保管及超重费、个人消费、航空人身意外保险费及您应自行投保的其它保险费用。</div>
  13 + <div class="fontRed">第四条.拼团生效与合同效</div>
  14 + <div class="fontRed">1.拼团展示默认为最近活动档期,选择其它档期请时刻注意成团动态。</div>
  15 + <div class="fontRed">2.在限时截止后,报名人数未达最低成团数,则结束本团活动,系统将在72小时内,全额退还,且不产生违约风险赔偿。</div>
  16 + <div class="fontRed">3.报名人数达到最低成团要求后,则拼团成功,凡在报名截止时间内未达最大限团人数,则可放心参与。</div>
  17 + <div class="fontRed">4.已成团的活动成功后,合作商家给予您最终确认后,合作商家与您之间的合同生效,除特殊情况等不可抗拒因素外,活动如期举行。</div>
  18 + <div class="fontRed">5.合同生效后,商家违约更改或取消需求,相应违约费用由商家承担,趣研学啦平台介入确保活动费用金额先行赔付。</div>
  19 + <div>第五条您主动更改或取消已生效订单</div>
  20 + <div>订单生效后,您若需要更改或取消该订单内的任何项目,请务必在行程开始前通知合作商家更改或取消需求。合作商家会尽量满足您的需求,但您必须全额承担因变更或取消带来的损失及可能增加的费用,包括但不限于签证或签注费、订房损失费、机票费及其它车船交通费用等。若您所预订的产品在目的地停留的日期部分或全部处在国家法定节假日或其它部分国际性、国家性、地方性重大节日期间,鉴于资源的特殊状况,已生效订单如进行更改或取消将产生全额损失。</div>
  21 + <div>第六条.因合作商家原因变更或取消已生效订单</div>
  22 + <div>在您按要求付清应付费用并经合作商家最终确认后,如因合作商家原因,致使您的游学产品不能成行或内容发生更改的,合作商家会第一时间通知您,并无条件退返您已支付的所有费用。或在经您同意后,调整产品中的行程内容或接待标准,退还差额费用。如调整后的产品价格高于原来价格,您须补足多出的相应差额。</div>
  23 + <div>第七条.安全事项第六条.因合作商家原因变更或取消已生效订单</div>
  24 + <div>1.您应确保出行人身体条件适合本次外出游学度假,如出行人为孕妇或有心脏病、高血压、呼吸系统疾病等病史,请在征得医院专业医生同意后出行。</div>
  25 + <div>2.您保证提供的证件、通讯联络方式、配送地址等相关资料均真实有效。</div>
  26 + <div>3.您应尊重当地的法律法规、宗教信仰、民族习惯和风土人情,自觉保护当地自然环境。</div>
  27 + <div>4.您在旅行中应注意人身财产安全,妥善保管自己的证件及行李物品,如果发生人身意外、伤害或随身携带行李物品遗失、被盗、被抢等情况,由您自行承担。</div>
  28 + <div>5.您在游学过程中如对游学产品合作商家的服务质量有异议,应积极与游学产品合作商家沟通积极争取在游学过程中解决。</div>
  29 + <div>第八条.第三方责任</div>
  30 + <div>由于出入境管理局、各国领馆、航空公司、保险公司、及其他有权机构等不可控制的第三方、原因导致您人身、财产权益受到损害的,包括但不限于,航班延误或取消、护照延期、签证拒签或未按时出签、不得出入境等,应由您方自行协商解决,必要时请及时联系合作商家协助处理。</div>
  31 + <div></div>
  32 + </div>
  33 +</template>
  34 +
  35 +<script>
  36 +export default {
  37 +
  38 +}
  39 +</script>
  40 +
  41 +<style lang="scss" scoped>
  42 +.text {
  43 + width: 100vw;
  44 + font-size: 4vw;
  45 + color: black;
  46 + padding:1vh 2vw;
  47 + box-sizing: border-box;
  48 + line-height: 7vw;
  49 +}
  50 +.title {
  51 + text-align: center;
  52 +}
  53 +.line {
  54 + height: 2vh;
  55 +}
  56 +.fontRed {
  57 + color: red;
  58 +}
  59 +</style>
  60 +<style lang="scss" scoped>
  61 + .elder{
  62 + .text{
  63 + font-size: 44px;
  64 + }
  65 + }
  66 +</style>
0 67 \ No newline at end of file
... ...
src/views/Service/protocol.vue 0 → 100644
... ... @@ -0,0 +1,162 @@
  1 +<template>
  2 + <div class="text">
  3 + <div class="title"><b>趣研学啦</b></div>
  4 + <div class="line"></div>
  5 + <div>注册协议</div>
  6 + <div>欢迎您访问并使用趣研学啦的服务与产品(以下简称服务)</div>
  7 + <div>在您注册成为“趣研学啦”用户前,请务必仔细阅读并充分理解本协议以下条款,特别是涉及免责声明的条款、隐私责任的条款、单项服务的条款、法律适用和争议的条款等。其中,以加粗形式提示的条款,您应重点阅读。若您一旦授权注册登陆,则视为您同意接受“趣研学啦”平台的服务并受以下条款的约束。若您不接受以下条款,请您立即停止授权或主动停止使用本平台服务。</div>
  8 + <div>一、定义</div>
  9 + <div>1、“趣研学啦”是指由浙江行之教育信息咨询有限公司独立开发并享有合法所有权的网站/活动商城,“趣研学啦”平台将为“趣研学啦用户”提供K12学生用户的研学、升学活动咨询、预定等信息服务。</div>
  10 + <div>2、“趣研学啦用户”是指按照“趣研学啦”的要求自愿完成授权登录注册的“趣研学啦”用户。用户可以通过手机浏览器、访问公众号成为“趣研学啦”用户,享受“趣研学啦”为用户提供K12学生用户的研学、升学活动咨询、预定等信息服务。(以下称为“用户”或“您”)。</div>
  11 + <div>二、总则及适用范围</div>
  12 + <div>2.1本协议内容包括协议正文、附件、各单项服务协议及其他“趣研学啦”已经发布的或将来可能发布的各类规则,包括但不限于免责声明、隐私政策、产品预订须知、账户协议等其他协议(“条款”)。如果本协议与其他协议(“条款”)有不一致之处,则以其他协议(“条款”)为准。除另行明确声明外,“趣研学啦”提供的服务均受本协议约束。前述内容已经正式发布,并以适当的方式送达用户(网站公布、系统通知等),即为本协议不可分割的组成部分,您应同样遵守。</div>
  13 + <div>2.2本协议是您与“趣研学啦”之间就您注册、登录、使用“趣研学啦”提供的相关服务所订立的协议,本协议项下涉及的服务,可能会由“趣研学啦”及其关联公司、控制公司向您提供,您知晓并同意上述服务内容,即视为接受双方之间的相关权利义务关系亦受本协议约束。</div>
  14 + <div>三、用户账号与注册</div>
  15 + <div>3.1、“趣研学啦”接受持有有效身份证明的年满18周岁且具有完全民事行为能力的自然人成为平台用户。如您不符合上述要求,请务必在家长和其他监护人的陪同下阅读本服务协议,并在进行注册、下单、支付等任何行为或使用“趣研学啦”的其他任何服务前,应事先征得您的家长和其他监护人的同意。如您不符合资格并未在您的家长和其他监护人的陪同下进行上述行为,由此产生的一切后果将由您或您的家长和其他监护人承担。</div>
  16 + <div>3.2、“趣研学啦”为用户提供了注册通道,您有权自行设置符合安全要求的密码。用户设置的账号、密码是用户用以登录并以注册用户身份使用“趣研学啦”相关服务的凭证。您理解并承诺,您所设置的账号不得违反国家法律法规及公司的相关规则,你的账号名称、头像和简介等注册信息及其他个人信息中不得出现违法和不良信息,未经他人许可不得用他人名义(包括但不限于冒用、盗用他人姓名、名称、字号、头像等足以让人引起混淆的方式)开设账户,不得恶意注册“趣研学啦”账号(包括但不限于频繁注册、批量注册等行为)。</div>
  17 + <div>3.3、您务必妥善保管您的用户账号、绑定微信、支付密码(如有)及您在其项下填写的所有个人信息的准确性,真实性。因您自身原因或其他不可抗力致使账号的被盗、丢失而导致的损失及后果,“趣研学啦”并不承担责任,您应通过司法、行政等救济途径向侵权行为人追偿。您应高度重视对账户及密码的保密,在任情况下不向他人透露账号及密码。您对您应账户项下的所有行为结果(包括但不限于在线签署各类协议、发布信息、购买商品及服务及披露信息等)负责。</div>
  18 + <div>3.4、在您注册/登录时,应当确保当前登录的微信号为您的主体身份且是本人操作。您在授权登录时的微信号是趣研学啦确认您身份的唯一依据,若第三方凭正确的微信号进行账号操作,将被“趣研学啦”视为该用户的自身行为,该行为引起的一切法律后果由该用户自行承担。
  19 +如果您未更换微信号,而是更换了手机号,可登陆后在个人中心处更换绑定手机号即可,原账号信息保留;如果您更换了微信号,将被“趣研学啦”视为新用户,原账号内订单等各种信息均无法通用。</div>
  20 + <div>3.5、您充分理解并完全同意:根据您的用户账号下的商品购买记录及其他相关信息,“趣研学啦”如果发现或者合理怀疑您此前或者当次通过本平台购买的商品有出现并非用于个人消费或者使用用途的情形,对于您用户账号的商品购买需求,“趣研学啦”有权不予接受;您如果已经下达订单,“趣研学啦”有权不予确认;如果“趣研学啦”已经接受预定的,同样有权单方面解除本次出行。并且,“趣研学啦”还有权视情况冻结您的用户账号,使之无法通过本平台访问、购买、预定商品。</div>
  21 + <div>3.6、申请成为“趣研学啦用户”的具体流程如下:</div>
  22 + <div>① 第一步:打开“趣研学啦”H5商城或“趣研学啦”微信公众号内商城;</div>
  23 + <div>② 第二步:根据提示信息,同意《用户协议》、《隐私条款》,授权并申请登录;</div>
  24 + <div>③ 第三步:申请成功后,个人中心处绑定手机号码,收取验证码验证;</div>
  25 + <div>④ 第四步:根据您的需求,选择填写其他信息。</div>
  26 + <div>3.7、“趣研学啦”为您提供账户注销功能,我们在此善意的提醒您,您注销账户的行为会给您的售后维权带来诸多不便,且注销账户后,您的个人信息我们只会在本平台前台系统中去除,使其保持不可被检索、访问的状态,或对其进行匿名化处理。您理解并同意,根据法律法规规定,相关交易记录可能须在平台后台保存 3 年甚至更长时间。</div>
  27 + <div>您可以通过联系客服注销您的个人账户,经“趣研学啦”确认您的账户满足以下条件的,您的账户将被注销:</div>
  28 + <div>(1)账户无任何纠纷,包括投诉举报和被投诉举报;</div>
  29 + <div>(2)账户为正常使用中的账户且无任何账户被限制的记录;</div>
  30 + <div>(3)账户内无未完成的订单、服务;</div>
  31 + <div>(4)账户已经解除与其他网站、其他 APP 的授权登录或绑定关系。</div>
  32 + <div>一旦您的个人账户注销,您将无法登录、使用“趣研学啦”,您也将无法找回您账户中及与账
  33 +户相关的任何内容或信息。如果您希望日后再次加入“趣研学啦”,您将只能创建一个新的帐户。为了防止窃取身份的行为,“趣研学啦”可能会向认证您的身份。请您在提交注销申请前,请先核实是否满足上述条件,具体可与我们的客服联系。</div>
  34 + <div>四、 权利和义务</div>
  35 + <div>4.1、用户有权在趣研学啦浏览商品信息、有权通过趣研学啦购买商品、支付价款等;</div>
  36 + <div>4.2、用户有权在趣研学啦查看其账号下的信息,有权应用趣研学啦提供的功能进行操作;</div>
  37 + <div>4.3、用户有权按照趣研学啦发布的活动规则参与趣研学啦组织的线上线下活动;</div>
  38 + <div>4.4、为便于用户及时了解订单、进度等相关的信息,提升用户使用体验,用户理解“趣研学啦”在尊重用户隐私保护条款的前提下,以推送通知、短信、电话等方式向您提供相关信息。如果用户不想接收上述信息,用户有权办理退阅或设置拒绝接受消息;</div>
  39 + <div>4.5、用户在体验商品的过程中,有任何问题都有权向“趣研学啦”反馈,“趣研学啦”需在职责范围内尽可能帮助用户处理问题;</div>
  40 + <div>4.6、用户付款成功前,“趣研学啦”有权对商品内容作出变更。如用户接受变更后的内容,则用户可确认订单及付款;如用户不接受变更后内容,则有权取消订单不付款。用户付款成功后,如确因情况变化导致需对订单内容作出变更的,“趣研学啦”有权单方对订单内容作出变更,如用户接受变更则按变更后的订单内容进行消费,如用户不接受变更则用户有权取消订单并要求“趣研学啦”全额退款。</div>
  41 + <div>五、用户承诺遵守包括但不限于下列服务规则:</div>
  42 + <div>5.1、用户应当遵守中国人民共和国相关法律法规、规章、规范性文件及政策要求的规定,不得在“趣研学啦”或利用“趣研学啦”服务从事非法或其他损害“趣研学啦”或第三方权益的活动,如发送或接收任何违法、违规、违反公序良俗、侵犯他人权益的信息,发送或接收存在其他危害的信息或言论,未经“趣研学啦”授权使用或伪造“趣研学啦”电子邮件题头信息等。</div>
  43 + <div>5.2、您的账号仅限于您本人使用,禁止以任何形式赠与、借用、出租、转让、售卖或以其他方式许可他人使用该账号。如果因为您主动同意、泄露、遭受他人攻击、诈骗或因管理不善造成账户(包括但不限于注册账户微信、登陆密码、支付账户和密码等)被复制、盗用及其他行为而导致的损失及后果,均由您自行承担。</div>
  44 + <div>5.3、若发现或怀疑他人未经许可使用您的账号或发生其他安全漏洞问题时,您应当及时通知“趣研学啦”,我们将尽量及时的配合您处理账号事宜,减少您的利益损失。如果“趣研学啦”发现或者有合理理由认为使用者并非账号初始注册本人,为保障账号安全,“趣研学啦”有权在未通知您的情况下立即暂停或者终止向该注册账号提供服务,或者有权注销该账号,而无需向注册该账号的用户承担责任。</div>
  45 + <div>5.4、用户承诺在“趣研学啦”上浏览、购买商品过程中遵守法律法规、不违背社会公德及遵守诚实信用原则,不扰乱“趣研学啦”运营的正常秩序。用户亦不得实施以下行为,若发生下列行为,则 “趣研学啦”有权随时限制或取消其用户权限,取消该用户获得的所有权益, 并由该用户应自行承担相应的法律责任:</div>
  46 + <div>1) 以任何机器人软件、蜘蛛软件、爬虫软件、刷屏软件等非“趣研学啦”认可的方式访问或登录“趣研学啦”,或者通过任何方式对“趣研学啦”造成或可能造成不合理或不合比例的重大负荷;</div>
  47 + <div>2) 通过发送病毒、木马等行为攻击其它用户的账号或终端设备;</div>
  48 + <div>3) 未经“趣研学啦”同意,在“趣研学啦”上发布任何形式的广告;</div>
  49 + <div>4) 冒充“趣研学啦”工作人员欺骗其他用户;</div>
  50 + <div>5) 协助他人获取不正当利益;教唆他人从事本协议所禁止的行为;</div>
  51 + <div>6) 在“趣研学啦”服务平台上发送任何形式的违规或垃圾信息,或发送含有下列内容的信息:</div>
  52 + <div>a. 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一;</div>
  53 + <div>b. 损害国家荣誉和利益;</div>
  54 + <div>c. 煽动民族仇恨、民族歧视,破坏民族团结;</div>
  55 + <div>d. 破坏国家宗教政策,宣扬邪教和封建迷信;</div>
  56 + <div>e. 散布谣言,扰乱社会秩序,破坏社会稳定;</div>
  57 + <div>f. 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪;</div>
  58 + <div>g. 含有法律、行政法规禁止的其他内容。</div>
  59 + <div>7) 利用在“趣研学啦”上注册的账号进行经营活动、牟利行为及其他未经“趣研学啦”许可的行为,包括但不仅限于以下行为:</div>
  60 + <div>a. 恶意利用技术手段或其他任何方式,为获取优惠、折扣或其他利益而利用账号参与活动、浏览下单等行为,影响其他用户正常消费行为或相关合法权益、影响“趣研学啦”正常秩序的行为;</div>
  61 + <div>b. 任何对商品目录、说明、描述、价格、数量、用户信息或其他内容的下载、转载、
  62 +收集、衍生利用、复制、出售、转售或其他形式的使用,无论是否通过Robots、Spiders、自动仪器或手工操作(已获得授权协议的除外);</div>
  63 + <div>c. 不以真实消费为目的刷单,导致“趣研学啦”利益受损的任何行为;</div>
  64 + <div>d. 用户账号内的任何“趣研学啦”优惠信息(包括但不限于积分、返利、优惠券)由“趣研学啦”享有修改权,用户仅享有在“趣研学啦”购物时的使用权,严禁利用“趣研学啦”账号、积分、返利、抵用券或其他类型的优惠券、礼品卡等进行经营性行为;
  65 +若用户未遵守以上规定的,“趣研学啦”有权做出独立判断,有权随时采取暂停或注销用户的账号、冻结账号内余额(如有)、取消相应交易订单等措施。并有权要求其赔偿由此给“趣研学啦”造成的损失。</div>
  66 + <div>六、交易规则</div>
  67 + <div>用户承诺在其进入“趣研学啦”消费的过程中遵守如下交易规则:</div>
  68 + <div>6.1 浏览商品信息</div>
  69 + <div>用户在“趣研学啦”浏览商品信息时,应当仔细阅读商品信息中包含的全部内容,包括但不限
  70 +于商品的名称、所在地、有效期、品牌、晚数、价格、数量、退改规则、售后服务等内容,其中用户应特别注意商品的退改规则等内容,您应在认真阅读、理解并完全接受商品信息中包含的全部内容后方可点击购买。</div>
  71 + <div>6.2 提交及确认商品订单</div>
  72 + <div>1) 您在点击购买后,将进入商品订单页面,您应当再次仔细阅读订单页面中所包含的全部内容,且再次核实您提供的信息是最新、真实、完整、有效的,以便订单及时准确的完成。特别提示您:当您付款完成后,您提交商品订单将被“趣研学啦”默认为您已知晓、同意并接受商品订单中的全部内容。</div>
  73 + <div>2) 您完成订单支付后,即与“趣研学啦”就订单中的商品成立合同关系,合同关系一经成立,商品订单中所包含的内容即为商品合同的内容,一切信息以订单内容为准。用户与“趣研学啦”均应当按照合同的约定履行各自的权利义务。用户可以随时登录用户在本站注册的账户,查询用户的订单状态。</div>
  74 + <div>3) 您理解并同意:由于市场变化及各种以合理商业努力难以控制的因素的影响,在一些情况下,用户预约时也会存在库存不足,以及不可抗力等导致的履约不能的可能。如果发生这种情况,“趣研学啦”通过系统通知、短信、电话等形式提前告知用户后有权取消订单,用户有权在取消订单后要求交易价款返还至付款账户。“趣研学啦”特别提示您,库存实时变动,建议您越早预约越好,最终以酒店/供应商回复为准。</div>
  75 + <div>4) 用户应根据付款页面的提示通过网上支付平台完成商品价款的支付,用户在支付商品价款之前无权要求“趣研学啦”向用户提供商品。</div>
  76 + <div>七、用户隐私的保护</div>
  77 + <div>7.1“趣研学啦”深知个人信息安全的重要性,我们将按照法律法律规定的规定,遵循合法、正当、必要的原则,采用安全保护措施保护用户您的个人信息。因此,我们制定《趣研学啦隐私政策》,并提醒您请务必仔细阅读并充分理解,在您确认并同意后方能使用相关产品和服务。一旦您开始使用“趣研学啦”的相关服务,则视为您对隐私政策内容的接受和认可。如果您不同意《趣研学啦隐私政策》的内容,我们将无法为您提供相关服务。</div>
  78 + <div>7.2您知悉、理解并同意,“趣研学啦”服务过程中,可能涉及收集、存储、使用、共享和保护用户个人信息。在您使用“趣研学啦”提供的服务时,您同意“趣研学啦”依据《趣研学啦隐私政策》的规定执行相关个人信息的收集、使用和共享。</div>
  79 + <div>八、政策的变更</div>
  80 + <div>8.1 我们的业务将不时变化,为给您提供更好的服务,我们会适时对本政策进行修订。政策变更前,我们会在“趣研学啦”平台发出更新版本并在生效前通过网站公告或其他适当的方式提醒您相关内容的更新,以便您及时了解最新隐私政策。</div>
  81 + <div>九、知识产权</div>
  82 + <div>9.1、“趣研学啦”所展示的各运营系统由“趣研学啦”自主开发、运营提供技术支持,并对“趣研学啦”服务的开发和运营等过程中产生的所有数据和信息等享有全部权利。</div>
  83 + <div>9.2、“趣研学啦”提供各项服务中提供的内容(包括但不限于数据库、网站设计、文字和图表、软件、照片、录像、音乐、声音及其前述组合,软件编译、相关源代码和软件 (包括小应用程序和脚本)知识产权均归“趣研学啦”或相关权利人所有。公司提供服务时所依托软件的著作权、专利权,及其他知识产权均归“趣研学啦”所有。</div>
  84 + <div>9.3请您在任何情况下都不要私自使用公司的包括但不限于商标、商号、商业形象、商业标识、服务标记、技术诀窍、域名、网站名称或其他显著品牌特征等(以下统称“标识”)。您不得将本条款前述标识以单独或结合任何方式展示、使用或申请注册商标、进行域名注册等,也不得实施向他人明示或暗示有权展示、使用或其他有权处理该些标识的行为,如您违反本款约定使用上述标识等给公司或他人造成损失的,由您承担全部法律责任。</div>
  85 + <div>9.4、用户在使用“趣研学啦”服务过程中不得非法使用或处分“趣研学啦”或他人的知识产权权利。用户不得将“趣研学啦”的信息以任何形式发布或授权其它网站(及媒体)使用。</div>
  86 + <div>9.5、用户理解并同意,在使用“趣研学啦”提供的服务时上传、提交、存储或者发布的内容(包括但不限于文字、图片、视频、音频、动画等)均由用户原创或已获合法授权。用户通过“趣研学啦”上传、提交、存储或发布的任何内容的知识产权归属用户或原始著作权人所有,用户的上传、提交、存储或发布行为不会侵犯他人的知识产权或其他合法权益。</div>
  87 + <div>9.6、用户一旦接受本协议,即表明您主动将上述内容的非专属、可转让的财产性权利,如著作权(包括但不限于:复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权以及应当由著作权人享有的其他可转让权利),在全世界范围内永久、免费、独家且不可撤销地授权给“趣研学啦”及其关联公司,“趣研学啦”及其关联公司可基于该等授权使用上述内容或向第三方自主进行任何必要的转授权。该等授权、转授权的使用场景包括但不限于当前或其他任何网络、应用程序、产品或移动终端等,且“趣研学啦”其他关联公司或“趣研学啦”及其关联公司所授权许可的第三方可通过对上述授权内容进行修改、复制、改编、翻译、汇编或制作,形成衍生产品。在不违反相关法律法规第强制性规定、尊重相关原始授权内容的知识产权的基础上,该等衍生产品的相关知识产权归“趣研学啦”及其关联公司或“趣研学啦”及其关联公司所许可的第三方所有。</div>
  88 + <div>9.7、用户确认并同意授权“趣研学啦”及其关联公司以自己的名义或委托专业第三方针对有关您上传、提交、存储或发布的内容(含衍生作品)的侵权行为进行独立自主的维权并获得全部赔偿。维权形式包括但不限于:监测侵权行为、发送维权函、提起诉讼或仲裁、调解、和解等。“趣研学啦”及其关联公司有权对维权事宜做出独立决策并予以实施。</div>
  89 + <div>9.8、“趣研学啦”有权但无义务对用户上传、发布的内容进行审核,有权根据相关证据结合《侵权责任法》、《信息网络传播权保护条例》等法律法规对侵权信息进行处理。</div>
  90 + <div>9.9、用户同意,因用户通过“趣研学啦”上传、发布的任何内容导致的知识产权侵权问题,用户将承担全部责任;如“趣研学啦”及其关联公司,或“趣研学啦”授权的其他服务提供方因第三方知识产权维权而产生的损失,用户将全额赔偿。</div>
  91 + <div>十、服务中断、终止与协议的终止</div>
  92 + <div>10.1、你理解并同意,“趣研学啦”提供的相关服务是按照现有技术和条件所能达到的现状提供的。公司会尽最大努力向您提供服务,确保服务的连贯性和安全性。您理解,公司不能随时预见和防范技术以及其他风险,包括但不限于不可抗力、计算机病毒、黑客攻击、系统不稳定,第三方服务瑕疵、通信线路等其他各种原因可能导致的服务中断、数据丢失以及其他风险。因上述原因由此可能给您带来的损失和风险“趣研学啦”不承担赔偿责任。</div>
  93 + <div>10.2、您理解并同意,“趣研学啦”为了公司整体商业运营的需要,有权提前三十日在首页显著位置持续公示有关信息后,终止全部“趣研学啦”服务,本协议于“趣研学啦”全部服务依法定程序及方式终止之日终止。</div>
  94 + <div>10.3、如果您不同意本协议或其中任何条款或本协议后续的不时修订,您应立即停止使用“趣研学啦”。</div>
  95 + <div>10.4、本协议终止后,用户无权要求“趣研学啦”继续向其提供任何服务或履行任何其他义务,包括但不限于要求“趣研学啦”为用户保留或向用户披露其原“趣研学啦”账号中的任何信息,向用户或第三方转发任何其未曾阅读或发送过的信息等。</div>
  96 + <div>10.5、如出现以下情形“趣研学啦”将有权直接以注销账户的方式终止“趣研学啦用户”服务:</div>
  97 + <div>1) 符合上述所有条款中预先说明“趣研学啦”有权暂定或注销账户的任何情形的;</div>
  98 + <div>2)发现或有理由怀疑用户通过不正当手段(包括但不限于作弊、扰乱系统、网络攻击、恶意套现、刷信誉、批量操作、机器注册、机器模拟)参加活动,有违反活动目的之行为,“趣研学啦”有权取消其获奖资格或其因参加活动所获赠品或权益。如该作弊行为给“趣研学啦”造成损失的,“趣研学啦”保留追究赔偿的权利;</div>
  99 + <div>3)对于恶意进行注册,反复交易/退款,侵害“趣研学啦”实际经营交易的情况,“趣研学啦”会停止服务、封停账号并追究责任;</div>
  100 + <div>4)“趣研学啦”终止向“趣研学啦用户”提供服务后,“趣研学啦用户”涉嫌再一次直接或间接或以他人名义注册为“趣研学啦”服务平台用户的;</div>
  101 + <div>5)您在符合注销账号要求的前提下,主动要求注销“趣研学啦”账号的;</div>
  102 + <div>十一、免责声明</div>
  103 + <div>11.1您理解并同意,“趣研学啦”提供的服务可能会受多种因素的影响或干扰,公司不保证(包括但不限于):</div>
  104 + <div>1)公司完全适合用户的使用要求;</div>
  105 + <div>2)公司不受干扰、及时、安全、可靠或不出现错误;</div>
  106 + <div>3)提供的服务出现任何错误都能及时得到更正;</div>
  107 + <div>4)对于涉嫌借款或其他涉嫌财产的网络信息、账户密码、广告或推广等信息的,用户请谨慎对待并自行进行判断,基于前述原因您因此遭受的有形或无形的损失,公司不承担任何直接、间接、连带、衍生性或惩罚性的赔偿责任;</div>
  108 + <div>5)“不可抗力”是指“趣研学啦”不能控制、不可预见或即使预见亦无法避免的事件,该事件妨碍、影响或延误“趣研学啦”根据本协议条款履行其全部或部分义务。该事件包括但不限于政府行为、自然灾害、战争、黑客袭击、电脑病毒、网络故障等。不可抗力可能导致“趣研学啦”网站及手机客户端无法访问、访问速度缓慢、存储数据丢失、用户个人信息泄漏等不利后果。遭受不可抗力事件时,用户理解并同意“趣研学啦”会在现有技术水平和条件下尽最大努力确保服务的连贯性和安全性,但是由此给用户造成的损失,“趣研学啦”将在法律允许的范围内免责。</div>
  109 + <div>6)在法律允许的范围内,“趣研学啦”对以下情形之一导致的服务中断或受阻不承担责任:</div>
  110 + <div>a. 用户操作不当;</div>
  111 + <div>b.用户通过非“趣研学啦”授权的方式使用服务;</div>
  112 + <div>c.其他“趣研学啦”无法控制或合理预见的情形。</div>
  113 + <div>7)“趣研学啦”依据本协议约定获得处理违法违规内容的权利,该权利不构成“趣研学啦”的义务或承诺,“趣研学啦”不能保证及时发现违法行为或进行相应处理。</div>
  114 + <div>8)用户理解并同意,“趣研学啦”有权制订关于用户使用“趣研学啦”服务的一般措施及限制,包括但不限于“趣研学啦”保留用户发布内容之最长期限。用户在“趣研学啦”中发布或存储之任何信息、图片、视频和其它内容,“趣研学啦”为了APP更新迭代、整体服务运营致使用户发布或存储的内容被删除,用户同意“趣研学啦”无须承担任何责任。建议用户对在“趣研学啦”中发表或存储的内容自行不定期备份。</div>
  115 + <div>十二、关于单项服务的特殊约定</div>
  116 + <div>12.1“趣研学啦”提供相关服务中包含公司以各种合法方式获取的信息或信息内容链接, 同时也包括公司及其关联公司、控制公司合法运营的其他单项服务。这些服务在“趣研学啦”在以单独板块形式存在。公司有权不时地增加、减少或改动这些特别板块的设置及服务。</div>
  117 + <div>12.2您可以“趣研学啦”平台中开启和使用上述单项服务功能。某些单项服务功能可能需要您同时接受该单项服务特别制定的协议或者其他约束您与该项服务提供者之间的规则。公司将以醒目的方式提供这些协议、规则供您查阅。一旦您开始使用上述服务,则视为您同时接受有关单项服务的相关协议、规则的约束。</div>
  118 + <div>十三、法律适用和争议解决</div>
  119 + <div>13.1、本协议之成立、生效、履行、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国大陆地区法律;如法律无相关规定的,参照商业惯例或行业惯例。</div>
  120 + <div>13.2、因本协议产生之争议,“趣研学啦用户”与“趣研学啦”首先应友好协商解决;协商解决不成的,任何一方均可向“趣研学啦”公司注册地有管辖权的人民法院提起诉讼。</div>
  121 + <div>十四、其他</div>
  122 + <div>14.1、协议、附件及单项服务的变更、通知</div>
  123 + <div>1)“趣研学啦”始终在不断优化和改进服务。“趣研学啦”有权在必要时通过在网页上发出公告、短信、邮件等合理方式修改本用户协议、附件及各单项服务的相关协议,修订后的服务协议条款在公示届满7日起生效。</div>
  124 + <div>2)客户在享受各项服务时,应及时查阅了解修改的内容,并自觉遵守修改后的用户协议附件及各单项服务的相关协议。如客户继续使用服务,则视为客户已同意修改的内容,发生有关争议时,以最新的用户协议为准;如客户不同意修改内容,则应立即停止使用“趣研学啦”的所有服务。</div>
  125 + <div>“趣研学啦”在此特别提示您,为确保您能接受到“趣研学啦”服务变更的通知,建议您向“趣研学啦”提供真实有效的联系方式,对于联系方式发生变更的,请您及时更新并保存可被联系的状态。除此之外,小程序通知、小程序商城都将是向您送达各类通知的重要入口,此类通知的内容可能对您的权利义务产生重大的有利或不利影响,建议您不要关闭,并及时关注。</div>
  126 + <div>14.2本协议的标题仅为方便阅读而设,并不影响本协议中任何规定的含义或解释。</div>
  127 + <div>您再次确认:您在同意注册成为“趣研学啦用户”时,您是在认真阅读并完全理解本协议的全部内容后点击的确认键。在您点击确认键时,本协议即已生效,对您及“趣研学啦”均有法律约束力,特殊性规范另有约定的按照其约定。</div>
  128 + <div>生效日期:  2021年9月17日</div>
  129 + <div></div>
  130 + </div>
  131 +</template>
  132 +
  133 +<script>
  134 +export default {
  135 +
  136 +}
  137 +</script>
  138 +
  139 +
  140 +<style lang="scss" scoped>
  141 +.text {
  142 + width: 100vw;
  143 + font-size: 4vw;
  144 + color: black;
  145 + padding:1vh 2vw;
  146 + box-sizing: border-box;
  147 + line-height: 7vw;
  148 +}
  149 +.title {
  150 + text-align: center;
  151 +}
  152 +.line {
  153 + height: 2vh;
  154 +}
  155 +</style>
  156 +<style lang="scss" scoped>
  157 + .elder{
  158 + .text{
  159 + font-size: 44px;
  160 + }
  161 + }
  162 +</style>
0 163 \ No newline at end of file
... ...