Commit 408fe40f0218c4a97b23c72c81bdd4ba0071fd70

Authored by 夏洋涛
1 parent b966d2bc
Exists in master

feat:mgop更换成接口

src/App.vue
1 1 <template>
2   - <div id="app" :class="isElder?'elder':''">
3   -
  2 + <div id="app" :class="isElder ? 'elder' : ''">
4 3 <router-view @setElder="setElder" />
5 4 </div>
6 5 </template>
7 6 <script>
8 7 // import vConsole from 'vconsole'
9 8 export default {
10   - data () {
  9 + data() {
11 10 return {
12   - isElder: false
  11 + isElder: false,
13 12 }
14 13 },
15   - mounted () {
  14 + mounted() {
16 15 // new vConsole()
17 16 ZWJSBridge.onReady(() => {
18 17 console.log('初始化完成后,执行bridge方法')
... ... @@ -23,21 +22,23 @@ export default {
23 22 } else {
24 23 ZWJSBridge.getUiStyle({})
25 24 .then((result) => {
26   - console.log(result);
  25 + console.log(result)
27 26 if (result.uiStyle == 'elder') {
28   - this.isElder = true;
  27 + this.isElder = true
29 28 localStorage.setItem('isElder', 1)
30 29 }
31 30 })
32 31 //浙里办APP 6.11.0 版本以下版本标准模式兼容
33   - .catch((error) => { console.log(error); });
  32 + .catch((error) => {
  33 + console.log(error)
  34 + })
34 35 }
35 36 },
36 37 methods: {
37   - setElder (e) {
  38 + setElder(e) {
38 39 this.isElder = e
39   - }
40   - }
  40 + },
  41 + },
41 42 }
42 43 </script>
43 44 <style>
... ...
src/common/index.js
... ... @@ -2,8 +2,10 @@ var common = function() {
2 2 return {
3 3 //取地址参数方法
4 4 getUrlParam: function(name) {
  5 + console.log(name)
5 6 var url = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
6 7 var newUrl = window.location.search.substr(1).match(url);
  8 + console.log(window.location)
7 9 if (newUrl != null) {
8 10 return unescape(newUrl[2]);
9 11 } else {
... ...
src/main.js
... ... @@ -7,7 +7,8 @@ import store from &#39;./store&#39;
7 7 import Moment from 'moment'
8 8 Vue.prototype.Moment = Moment;
9 9  
10   -// Vue.prototype.yanxueUrl = 'https://yanxue.myjxt.com';
  10 +Vue.prototype.proxyUrl = 'https://proxy.shunzhi.net/prod';
  11 +Vue.prototype.yanxueUrl = 'https://yanxue.myjxt.com';
11 12 // Vue.prototype.dataUrl = 'http://47.110.50.251:9010'
12 13 Vue.prototype.dataUrl = 'https://proxy.shunzhi.net/consulte'
13 14 // Vue.prototype.kqUrl = 'http://47.110.50.251:9092/'
... ...
src/router/index.js
... ... @@ -5,9 +5,6 @@ import HomeUserInfo from &#39;@/views/Home/HomeUserInfo.vue&#39;
5 5  
6 6 import ServiceAbroadDetail from '@/views/Service/AbroadDetail.vue'
7 7 import ServiceAbroadEvaluate from '@/views/Service/AbroadEvaluate.vue'
8   -import ServiceDatePackage from '@/views/Service/DatePackage.vue'
9   -import ServiceCheckOrder from '@/views/Service/CheckOrder.vue'
10   -import ServiceCardSelect from '@/views/Service/CardSelect.vue'
11 8 import ServiceOrderXST from '@/views/Service/ServiceOrderXST.vue'
12 9 import evaluateCourse from '@/views/Service/evaluateCourse.vue'
13 10 import evaluateBase from '@/views/Service/evaluateBase.vue' //基地评价
... ... @@ -15,8 +12,6 @@ import evaluateDetail from &#39;@/views/Service/evaluateDetail.vue&#39; //评价详情
15 12  
16 13 import ServiceKQ from '@/views/Service/ServiceKQ.vue' //柯桥研学
17 14  
18   -import CardBoxXST from '@/views/Service/CardBoxXST.vue'
19   -import CardCourseList from '@/views/Service/CardCourseList.vue' //优惠券对应商品列表
20 15 import YanxueCode from '@/views/Home/YanxueCode.vue' //研学码
21 16 import YanxueInfo from '@/views/Home/YanxueInfo.vue' //研学码信息
22 17 import chooseSchool from '@/views/Service/component/chooseSchool.vue' //选择学校
... ... @@ -87,46 +82,6 @@ const routes = [{
87 82 }
88 83 },
89 84  
90   - {
91   - path: '/date_package',
92   - name: 'ServiceDatePackage',
93   - component: ServiceDatePackage,
94   - meta: {
95   - title: '选择套餐/日期'
96   - }
97   - },
98   - {
99   - path: '/check_order',
100   - name: 'ServiceCheckOrder',
101   - component: ServiceCheckOrder,
102   - meta: {
103   - title: '支付'
104   - }
105   - },
106   - {
107   - path: '/card_select',
108   - name: 'ServiceCardSelect',
109   - component: ServiceCardSelect,
110   - meta: {
111   - title: '我的优惠券'
112   - }
113   - },
114   - {
115   - path: '/CardBoxXST',
116   - name: 'CardBoxXST',
117   - component: CardBoxXST,
118   - meta: {
119   - title: '我的优惠券'
120   - }
121   - },
122   - {
123   - path: '/CardCourseList',
124   - name: 'CardCourseList',
125   - component: CardCourseList,
126   - meta: {
127   - title: '限时限量特惠大集合'
128   - }
129   - },
130 85  
131 86 {
132 87 path: '/service_orderXST',
... ...
src/views/Home/Home.vue
... ... @@ -130,10 +130,6 @@ export default {
130 130 handleGroup() {
131 131 this.$toast('暂未开放,敬请期待!')
132 132 },
133   - // 我的优惠券
134   - handleMyCard() {
135   - this.$router.push({ name: 'CardBoxXST' })
136   - },
137 133 // 个人信息
138 134 handleMyInfo() {
139 135 this.$router.push({ name: 'HomeUserInfo' })
... ... @@ -201,42 +197,27 @@ export default {
201 197 },
202 198 // 获取用户信息
203 199 getUserInfo() {
204   - this.mgop({
205   - api: 'mgop.sz.hswsy.getPortalUserByNum', // 必须
206   - host: 'https://mapi.zjzwfw.gov.cn/',
207   - dataType: 'JSON',
208   - type: 'GET',
209   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
210   - headers: {
211   - // 'isTestUrl': '1'
212   - },
213   - data: {
214   - userNum: this.centerNo,
215   - },
216   - onSuccess: (res) => {
217   - console.log('getUserInfo', res)
218   - if (res.data.code == 200) {
219   - let userInfo = res.data.data.userInfo
220   - this.userInfo = userInfo
221   - localStorage.setItem('userInfo', JSON.stringify(userInfo))
222   - if (userInfo.schoolNames || userInfo.schoolNames == [] || userInfo.schoolNames == 'null') {
223   - userInfo.schoolNames = userInfo.schoolNames.filter((n) => n)
224   - localStorage.setItem('schoolNames', JSON.stringify(userInfo.schoolNames))
225   - this.$store.commit('changeSchool', userInfo.schoolNames)
226   - if (!localStorage.getItem('schoolNamesChoose') || localStorage.getItem('schoolNamesChoose') == 'null') {
227   - localStorage.setItem('schoolNamesChoose', JSON.stringify(userInfo.schoolNames[0]))
228   - this.schoolNamesChoose = userInfo.schoolNames[0]
229   - }
230   - } else {
231   - localStorage.setItem('schoolNames', [])
232   - this.$store.commit('changeSchool', [])
  200 + // alert('getUserInfo:' + this.centerNo)
  201 + this.yxAxios.get(`${this.proxyUrl}/user/info/getPortalUserByNum?userNum=${this.centerNo}`).then((res) => {
  202 + console.log('getUserInfo', res)
  203 + if (res.data.code == 200) {
  204 + let userInfo = res.data.data.userInfo
  205 + this.userInfo = userInfo
  206 + localStorage.setItem('userInfo', JSON.stringify(userInfo))
  207 + if (userInfo.schoolNames || userInfo.schoolNames == [] || userInfo.schoolNames == 'null') {
  208 + userInfo.schoolNames = userInfo.schoolNames.filter((n) => n)
  209 + localStorage.setItem('schoolNames', JSON.stringify(userInfo.schoolNames))
  210 + this.$store.commit('changeSchool', userInfo.schoolNames)
  211 + if (!localStorage.getItem('schoolNamesChoose') || localStorage.getItem('schoolNamesChoose') == 'null') {
  212 + localStorage.setItem('schoolNamesChoose', JSON.stringify(userInfo.schoolNames[0]))
  213 + this.schoolNamesChoose = userInfo.schoolNames[0]
233 214 }
  215 + } else {
  216 + localStorage.setItem('schoolNames', [])
  217 + this.$store.commit('changeSchool', [])
234 218 }
235   - this.showChildList = true
236   - },
237   - onFail: (err) => {
238   - console.log('err', err)
239   - },
  219 + }
  220 + this.showChildList = true
240 221 })
241 222 },
242 223 formatterTime(time) {
... ...
src/views/Home/HomeUserInfo.vue
... ... @@ -9,29 +9,28 @@
9 9 </van-cell>
10 10 </template>
11 11 </van-popover> -->
12   -
  12 +
13 13 <van-cell title="身份证" :value="idCard" />
14 14 <van-cell title="手机号" :value="phone" />
15 15 <van-cell title="关注主学校" :value="schoolNamesChoose" />
16 16 </van-cell-group>
17   -
18 17 </div>
19 18 </template>
20 19 <script>
21 20 export default {
22   - data () {
  21 + data() {
23 22 return {
24   - nickName: '',//姓名
25   - gender: '',//性别
26   - idCard: '',//身份证
27   - phone: '',//手机号
28   - schoolNamesChoose: '',//学校
29   - showGenderPopover:false,
  23 + nickName: '', //姓名
  24 + gender: '', //性别
  25 + idCard: '', //身份证
  26 + phone: '', //手机号
  27 + schoolNamesChoose: '', //学校
  28 + showGenderPopover: false,
30 29 actions: [{ text: '选项一' }, { text: '选项二' }, { text: '选项三' }],
31 30 }
32 31 },
33   - mounted () {
34   - this.centerNo = localStorage.getItem('centerNo');
  32 + mounted() {
  33 + this.centerNo = localStorage.getItem('centerNo')
35 34 const userInfo = JSON.parse(localStorage.getItem('userInfo'))
36 35 this.nickName = userInfo.nickName
37 36 this.gender = userInfo.gender
... ... @@ -43,41 +42,25 @@ export default {
43 42 }
44 43 },
45 44 methods: {
46   - onSelect(action) {
47   - Toast(action.text);
  45 + onSelect(action) {
  46 + Toast(action.text)
48 47 },
49 48 // 获取用户信息
50   - getUserInfo: function () {
  49 + getUserInfo: function() {
51 50 this.$toast.loading({
52 51 message: '加载中...',
53 52 duration: 0,
54   - forbidClick: true
  53 + forbidClick: true,
55 54 })
56   - this.mgop({
57   - api: 'mgop.sz.hswsy.getPortalUserByNum', // 必须
58   - host: 'https://mapi.zjzwfw.gov.cn/',
59   - dataType: 'JSON',
60   - type: 'GET',
61   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
62   - headers: {
63   - // 'isTestUrl': '1'
64   - },
65   - data: {
66   - "userNum": this.centerNo
67   - },
68   - onSuccess: res => {
  55 + this.yxAxios.get(`${this.proxyUrl}/user/info/getPortalUserByNum?userNum=${this.centerNo}`).then((res) => {
69 56 this.$toast.clear()
70   - if (res.data.code == 200) {
71   - const userInfo = res.data.data.userInfo
  57 + if (res.data.code == 200) {
  58 + const userInfo = res.data.data.userInfo
72 59 localStorage.setItem('userInfo', JSON.stringify(userInfo))
73   - }
74   - },
75   - onFail: err => {
76   - console.log('err', err)
77 60 }
78   - });
  61 + })
79 62 },
80   - }
  63 + },
81 64 }
82 65 </script>
83 66 <style lang="scss">
... ... @@ -90,4 +73,4 @@ export default {
90 73 padding: 30px 32px;
91 74 }
92 75 }
93   -</style>
94 76 \ No newline at end of file
  77 +</style>
... ...
src/views/Home/MyClassList.vue
... ... @@ -3,31 +3,45 @@
3 3 <div class="header">
4 4 <van-swipe class="my-swipe" indicator-color="white" v-if="baseInfo.coverList && baseInfo.coverList.length > 0">
5 5 <van-swipe-item v-for="n in baseInfo.coverList" :key="n.id">
6   - <video v-if="n.cover_url.indexOf('.mp4') > -1" id="video" :src="n.cover_url" poster="" controls="controls" windowlessvideo="true" playsinline="true" webkit-playsinline="true" x5-playsinline="true" x-webkit-airplay="allow" width="100%" height="260px" type="video/mp4"></video>
  6 + <video
  7 + v-if="n.cover_url.indexOf('.mp4') > -1"
  8 + id="video"
  9 + :src="n.cover_url"
  10 + poster=""
  11 + controls="controls"
  12 + windowlessvideo="true"
  13 + playsinline="true"
  14 + webkit-playsinline="true"
  15 + x5-playsinline="true"
  16 + x-webkit-airplay="allow"
  17 + width="100%"
  18 + height="260px"
  19 + type="video/mp4"
  20 + ></video>
7 21 <img v-if="n.cover_url.indexOf('.mp4') == -1" :src="n.cover_url" />
8 22 </van-swipe-item>
9 23 </van-swipe>
10 24 <img v-else src="@/assets/service/defCoure.jpg" alt="" />
11 25 </div>
12 26 <div class="base_info">
13   - <p class="base_title">{{baseInfo.baseName}}</p>
  27 + <p class="base_title">{{ baseInfo.baseName }}</p>
14 28 <div class="rate">
15 29 <van-rate v-model="baseInfo.baseScore" color="#FFCC00" :size="16" readonly />
16 30 <span>{{ baseInfo.baseScore }}</span>
17 31 </div>
18 32 <p class="address">
19 33 <van-icon name="location" class="icon" />
20   - {{baseInfo.address}}
  34 + {{ baseInfo.address }}
21 35 </p>
22 36 <p class="phone">
23 37 <van-icon name="phone" class="icon" />
24   - {{baseInfo.phone}}
  38 + {{ baseInfo.phone }}
25 39 </p>
26 40 </div>
27 41 <div class="select_student" @click="selectStudent">
28 42 <p class="select_tip">请选择需要打卡的孩子</p>
29 43 <div class="student" v-if="selectedContact.travelerName">
30   - <span>{{selectedContact.travelerName}}</span>
  44 + <span>{{ selectedContact.travelerName }}</span>
31 45 <van-icon name="close" class="icon" />
32 46 </div>
33 47 <div class="student" v-else>
... ... @@ -35,9 +49,9 @@
35 49 </div>
36 50 </div>
37 51 <div class="btns" @click="getPosition">立即打卡</div>
38   - <van-popup v-model="failShow" round closeable :style="{ width:'80%'}">
  52 + <van-popup v-model="failShow" round closeable :style="{ width: '80%' }">
39 53 <div class="success">
40   - <img src="@/assets/tip1.png" alt="">
  54 + <img src="@/assets/tip1.png" alt="" />
41 55 <h3>打卡失败!</h3>
42 56 <p>您当前所在的地理位置不在课程的打卡范围内!</p>
43 57 </div>
... ... @@ -47,169 +61,135 @@
47 61  
48 62 <script>
49 63 export default {
50   - data () {
  64 + data() {
51 65 return {
52 66 baseInfo: '',
53 67 list: [],
54 68 baseId: '',
55 69 userInfo: '',
56 70 failShow: false,
57   - selectedContact: '',//选择的出行人
58   -
  71 + selectedContact: '', //选择的出行人
59 72 }
60 73 },
61   - mounted () {
62   - var userInfo = localStorage.getItem('userInfo');
  74 + mounted() {
  75 + var userInfo = localStorage.getItem('userInfo')
63 76 if (userInfo) {
64   - this.userInfo = JSON.parse(userInfo);
  77 + this.userInfo = JSON.parse(userInfo)
65 78 }
66 79 // 选择的出行人
67   - let selectedContactArr = localStorage.getItem('selectedContactArr');
  80 + let selectedContactArr = localStorage.getItem('selectedContactArr')
68 81 if (selectedContactArr) {
69   - selectedContactArr = JSON.parse(selectedContactArr);
  82 + selectedContactArr = JSON.parse(selectedContactArr)
70 83 this.selectedContact = selectedContactArr[0]
71 84 }
72   - this.baseId = this.$route.query.qrresult;
73   - this.GetStudyBaseDetail(this.baseId);
  85 + this.baseId = this.$route.query.qrresult
  86 + this.GetStudyBaseDetail(this.baseId)
74 87 },
75 88 methods: {
76   - AddSign () {
77   -
  89 + AddSign() {
78 90 this.$toast.loading({
79 91 message: '请求中...',
80   - });
81   - this.mgop({
82   - api: 'mgop.sz.hswsy.AddSign', // 必须
83   - host: 'https://mapi.zjzwfw.gov.cn/',
84   - dataType: 'JSON',
85   - type: 'GET',
86   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
87   - headers: {
88   - // 'isTestUrl': '1'
89   - },
90   - data: {
91   - "userId": this.selectedContact.travelerNum,
92   - "baseId": this.baseId
93   - },
94   - onSuccess: res => {
95   - this.$toast.success('打卡签到成功');
  92 + })
  93 + this.yxAxios
  94 + .get(`${this.yanxueUrl}/api/BaseManage/AddSign?userId=${this.selectedContact.travelerNum}&baseId=${this.baseId}&type=3`)
  95 + .then((res) => {
  96 + this.$toast.success('打卡签到成功')
96 97 setTimeout(() => {
97 98 this.$router.push({ name: 'Home' })
98 99 }, 1000)
99   - },
100   - onFail: err => {
101   - console.log('err', err)
102   - }
103   - });
  100 + })
104 101 },
105 102 // 获取基地信息
106   - GetStudyBaseDetail (baseId) {
  103 + GetStudyBaseDetail(baseId) {
107 104 this.$toast.loading({
108 105 message: '请求中...',
109   - });
110   - this.mgop({
111   - api: 'mgop.sz.hswsy.GetStudyBaseDetail', // 必须
112   - host: 'https://mapi.zjzwfw.gov.cn/',
113   - dataType: 'JSON',
114   - type: 'GET',
115   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
116   - headers: {
117   - // 'isTestUrl': '1'
118   - },
119   - data: {
120   - "userId": 0,
121   - "cs": '绍兴市',
122   - "id": baseId
123   - },
124   - onSuccess: res => {
  106 + })
  107 + this.yxAxios.get(`${this.yanxueUrl}/api/StudiesWap/GetStudyBaseDetail?userId=0&cs=绍兴市&id=${baseId}`).then((res) => {
  108 + this.$toast.clear()
  109 + console.log('基地信息:', res.data)
  110 + if (res.data.data) {
125 111 this.$toast.clear()
126   - console.log('基地信息:', res.data)
127   - if (res.data.data) {
128   - this.$toast.clear();
129   - this.baseInfo = res.data.data;
130   - } else {
131   - this.$toast.fail(res.data.message)
132   - }
133   - },
134   - onFail: err => {
135   - console.log('err', err)
  112 + this.baseInfo = res.data.data
  113 + } else {
  114 + this.$toast.fail(res.data.message)
136 115 }
137   - });
  116 + })
138 117 },
139   - getPosition () {
  118 + getPosition() {
140 119 if (!this.selectedContact.travelerNum) {
141   - this.$toast('请选择需要打卡的孩子');
142   - return false;
  120 + this.$toast('请选择需要打卡的孩子')
  121 + return false
143 122 }
144   - if (this.baseInfo.signLong == 0 && this.baseInfo.signLat == 0) { //基地没数坐标
145   - this.AddSign();
  123 + if (this.baseInfo.signLong == 0 && this.baseInfo.signLat == 0) {
  124 + //基地没数坐标
  125 + this.AddSign()
146 126 return false
147 127 }
148   - var basePosition = [this.baseInfo.signLong, this.baseInfo.signLat];
149   - AMap.convertFrom(basePosition, 'baidu', function (status, result) {
150   - console.log('基地定位转换:',result)
  128 + var basePosition = [this.baseInfo.signLong, this.baseInfo.signLat]
  129 + AMap.convertFrom(basePosition, 'baidu', function(status, result) {
  130 + console.log('基地定位转换:', result)
151 131 if (result.info === 'ok') {
152   - basePosition = [result.locations[0].lng, result.locations[0].lat]; // Array.<LngLat>
  132 + basePosition = [result.locations[0].lng, result.locations[0].lat] // Array.<LngLat>
153 133 }
154   - });
  134 + })
155 135 this.$toast.loading({
156 136 message: '请求中...',
157   - });
158   - this.getNowPosition((posi) => { //获取当前位置坐标
159   - console.log('获取当前位置坐标:',posi)
160   - this.$toast.clear();
  137 + })
  138 + this.getNowPosition((posi) => {
  139 + //获取当前位置坐标
  140 + console.log('获取当前位置坐标:', posi)
  141 + this.$toast.clear()
161 142 if (posi) {
162   - var nowPosition = [posi.position.lng, posi.position.lat];
163   - var distance = AMap.GeometryUtil.distance(nowPosition, basePosition);
164   - console.log('两点距离:',distance)
  143 + var nowPosition = [posi.position.lng, posi.position.lat]
  144 + var distance = AMap.GeometryUtil.distance(nowPosition, basePosition)
  145 + console.log('两点距离:', distance)
165 146 console.log(parseInt(distance), nowPosition, basePosition)
166 147 if (parseInt(distance) > 500) {
167   - this.failShow = true;
  148 + this.failShow = true
168 149 } else {
169 150 // alert('定位小于500m')
170   - this.AddSign();
  151 + this.AddSign()
171 152 }
172 153 } else {
173 154 // alert('getNowPosition没有返回')
174 155 }
175   - });
  156 + })
176 157 },
177   - getNowPosition: function (callback) {
178   - let mapObj = new AMap.Map('iCenter');
179   - mapObj.plugin('AMap.Geolocation', function () {
  158 + getNowPosition: function(callback) {
  159 + let mapObj = new AMap.Map('iCenter')
  160 + mapObj.plugin('AMap.Geolocation', function() {
180 161 let geolocation = new AMap.Geolocation({
181   - enableHighAccuracy: true,//是否使用高精度定位,默认:true
182   - timeout: 10000, //超过10秒后停止定位,默认:无穷大
183   - maximumAge: 0, //定位结果缓存0毫秒,默认:0
184   - convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
185   - showButton: true, //显示定位按钮,默认:true
186   - buttonPosition: 'LB', //定位按钮停靠位置,默认:'LB',左下角
187   - buttonOffset: new AMap.Pixel(0, 0),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
188   - showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
189   - showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
190   - panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
191   - zoomToAccuracy: true //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
192   - });
193   - mapObj.addControl(geolocation);
194   - geolocation.getCurrentPosition();
195   - AMap.event.addListener(geolocation, 'complete', function (res) {
  162 + enableHighAccuracy: true, //是否使用高精度定位,默认:true
  163 + timeout: 10000, //超过10秒后停止定位,默认:无穷大
  164 + maximumAge: 0, //定位结果缓存0毫秒,默认:0
  165 + convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
  166 + showButton: true, //显示定位按钮,默认:true
  167 + buttonPosition: 'LB', //定位按钮停靠位置,默认:'LB',左下角
  168 + buttonOffset: new AMap.Pixel(0, 0), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
  169 + showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
  170 + showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
  171 + panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
  172 + zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
  173 + })
  174 + mapObj.addControl(geolocation)
  175 + geolocation.getCurrentPosition()
  176 + AMap.event.addListener(geolocation, 'complete', function(res) {
196 177 // alert('返回定位信息:' + JSON.stringify(res))
197 178 console.log('返回定位信息:', res)
198   - callback(res);
199   - });//返回定位信息
200   - AMap.event.addListener(geolocation, 'error', function (res) {
  179 + callback(res)
  180 + }) //返回定位信息
  181 + AMap.event.addListener(geolocation, 'error', function(res) {
201 182 // alert('返回定位出错信息:' + JSON.stringify(res))
202 183 console.log('返回定位出错信息:', res)
203   - callback();
204   - }); //返回定位出错信息
  184 + callback()
  185 + }) //返回定位出错信息
205 186 })
206   -
207 187 },
208 188 // 选择孩子
209   - selectStudent () {
  189 + selectStudent() {
210 190 this.$router.push({ name: 'SelectContact', query: { limit: 1, hideParent: 1 } })
211   - }
212   - }
  191 + },
  192 + },
213 193 }
214 194 </script>
215 195  
... ...
src/views/Home/StudentDetail.vue
... ... @@ -3,28 +3,36 @@
3 3 <div class="infomation">
4 4 <div class="top">
5 5 <div>
6   - <img class="head" :src="defaultHead" alt="">
  6 + <img class="head" :src="defaultHead" alt="" />
7 7 <div class="right">
8   - <p class="name">{{studentInfo.travelerName}}<span v-if="studentInfo.enrollYear">{{studentInfo.enrollYear}}级</span></p>
9   - <p class="school_name">{{studentInfo.schoolName}}</p>
  8 + <p class="name">
  9 + {{ studentInfo.travelerName }}<span v-if="studentInfo.enrollYear">{{ studentInfo.enrollYear }}级</span>
  10 + </p>
  11 + <p class="school_name">{{ studentInfo.schoolName }}</p>
10 12 </div>
11 13 </div>
12 14 <HomeScan></HomeScan>
13 15 </div>
14 16 <div class="count_box">
15 17 <div class="count_item">
16   - <p class="count"><span>{{signCheckCountInfo.signCount}}</span>/次</p>
  18 + <p class="count">
  19 + <span>{{ signCheckCountInfo.signCount }}</span
  20 + >/次
  21 + </p>
17 22 <p class="des">基地打卡次数</p>
18 23 </div>
19 24 <div class="line"></div>
20 25 <div class="count_item">
21   - <p class="count"><span>{{signCheckCountInfo.courseDays}}</span>/天</p>
  26 + <p class="count">
  27 + <span>{{ signCheckCountInfo.courseDays }}</span
  28 + >/天
  29 + </p>
22 30 <p class="des">课程实践</p>
23 31 </div>
24 32 </div>
25 33 <div class="icon_box">
26 34 <div class="icon_item" @click="handleYanxue">
27   - <img src="@/assets/home/stu_icon1.png" alt="">
  35 + <img src="@/assets/home/stu_icon1.png" alt="" />
28 36 <p>研学码</p>
29 37 </div>
30 38 <!-- <div class="icon_item" @click="contactService">
... ... @@ -40,36 +48,36 @@
40 48 <div class="list_box">
41 49 <van-tabs v-model="active" color="#21A3FF">
42 50 <van-tab title="基地记录">
43   - <div class="list_item" v-for="(item,index) in baseList" :key="index">
  51 + <div class="list_item" v-for="(item, index) in baseList" :key="index">
44 52 <div class="left">
45   - <p class="day">{{item.day}}</p>
46   - <p class="minute">{{item.minute}}</p>
  53 + <p class="day">{{ item.day }}</p>
  54 + <p class="minute">{{ item.minute }}</p>
47 55 </div>
48 56 <div class="line"></div>
49 57 <div class="right">
50   - <img :src="item.baseUrl" alt="">
51   - <p class="item_title">{{item.baseName}} </p>
52   - <button class="active" v-if="item.evaluationId==0" @click="evaluateBase(item)">去评价</button>
  58 + <img :src="item.baseUrl" alt="" />
  59 + <p class="item_title">{{ item.baseName }}</p>
  60 + <button class="active" v-if="item.evaluationId == 0" @click="evaluateBase(item)">去评价</button>
53 61 <button v-else @click="evaluateBaseDetail(item)">查看评价</button>
54 62 </div>
55 63 </div>
56   - <van-empty v-if="baseList.length==0" description="暂无基地记录" />
  64 + <van-empty v-if="baseList.length == 0" description="暂无基地记录" />
57 65 </van-tab>
58 66 <van-tab title="课程记录">
59   - <div class="list_item" v-for="(item,index) in courseList" :key="index">
  67 + <div class="list_item" v-for="(item, index) in courseList" :key="index">
60 68 <div class="left">
61   - <p class="day">{{item.day}}</p>
62   - <p class="minute">{{item.minute}}</p>
  69 + <p class="day">{{ item.day }}</p>
  70 + <p class="minute">{{ item.minute }}</p>
63 71 </div>
64 72 <div class="line"></div>
65 73 <div class="right">
66   - <img :src="item.baseUrl" alt="">
67   - <p class="item_title">{{item.baseName}} </p>
68   - <button class="active" v-if="item.evaluationId==0" @click="evaluateCourse(item)">去评价</button>
  74 + <img :src="item.baseUrl" alt="" />
  75 + <p class="item_title">{{ item.baseName }}</p>
  76 + <button class="active" v-if="item.evaluationId == 0" @click="evaluateCourse(item)">去评价</button>
69 77 <button v-else @click="evaluateCourseDetail(item)">查看评价</button>
70 78 </div>
71 79 </div>
72   - <van-empty v-if="courseList.length==0" description="暂无课程记录" />
  80 + <van-empty v-if="courseList.length == 0" description="暂无课程记录" />
73 81 </van-tab>
74 82 </van-tabs>
75 83 </div>
... ... @@ -78,28 +86,28 @@
78 86 <script>
79 87 import HomeScan from '@/views/Home/component/HomeScan'
80 88 export default {
81   - data () {
  89 + data() {
82 90 return {
83 91 defaultHead: require('@/assets/head.png'),
84 92 studentInfo: '',
85   - courseList: [],//课程记录
86   - baseList: [],//基地记录
87   - signCheckCountInfo: '',//打卡和课程天数信息
88   - active: 0
  93 + courseList: [], //课程记录
  94 + baseList: [], //基地记录
  95 + signCheckCountInfo: '', //打卡和课程天数信息
  96 + active: 0,
89 97 }
90 98 },
91   - mounted () {
  99 + mounted() {
92 100 let studentInfo = localStorage.getItem('StudentDetialInfo')
93 101 this.studentInfo = JSON.parse(studentInfo)
94 102 this.$nextTick(() => {
95 103 if (!this.studentInfo?.travelerNum) {
96 104 this.$toast.fail('学生信息缺失,请返回首页重试')
97   - return;
  105 + return
98 106 }
99 107 this.$toast.loading({
100 108 message: '加载中...',
101 109 duration: 0,
102   - forbidClick: true
  110 + forbidClick: true,
103 111 })
104 112 this.getCourseList()
105 113 this.getBaseList()
... ... @@ -108,22 +116,14 @@ export default {
108 116 },
109 117 methods: {
110 118 // 获取课程记录
111   - getCourseList () {
112   - this.mgop({
113   - api: 'mgop.sz.hswsy.CourseCheckDetail', // 必须
114   - host: 'https://mapi.zjzwfw.gov.cn/',
115   - dataType: 'JSON',
116   - type: 'POST',
117   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
118   - headers: {
119   - // 'isTestUrl': '1'
120   - },
121   - data: {
122   - "userId": this.studentInfo?.travelerNum,
123   - "pageIndex": 1,
124   - "pageSize": 999
125   - },
126   - onSuccess: res => {
  119 + getCourseList() {
  120 + this.yxAxios
  121 + .post(`${this.yanxueUrl}/api/StudiesWap/CourseCheckDetail/List`, {
  122 + userId: this.studentInfo?.travelerNum,
  123 + pageIndex: 1,
  124 + pageSize: 999,
  125 + })
  126 + .then((res) => {
127 127 this.$toast.clear()
128 128 console.log('课程记录:', res.data)
129 129 if (res.data.status == 1) {
... ... @@ -137,29 +137,17 @@ export default {
137 137 } else {
138 138 this.$toast.fail(res.data.message)
139 139 }
140   - },
141   - onFail: err => {
142   - console.log('err', err)
143   - }
144   - });
  140 + })
145 141 },
146 142 // 获取基地记录
147   - getBaseList () {
148   - this.mgop({
149   - api: 'mgop.sz.hswsy.SignDetail', // 必须
150   - host: 'https://mapi.zjzwfw.gov.cn/',
151   - dataType: 'JSON',
152   - type: 'POST',
153   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
154   - headers: {
155   - // 'isTestUrl': '1'
156   - },
157   - data: {
158   - "userId": this.studentInfo?.travelerNum,
159   - "pageIndex": 1,
160   - "pageSize": 999
161   - },
162   - onSuccess: res => {
  143 + getBaseList() {
  144 + this.yxAxios
  145 + .post(`${this.yanxueUrl}/api/StudiesWap/SignDetail/List`, {
  146 + userId: this.studentInfo?.travelerNum,
  147 + pageIndex: 1,
  148 + pageSize: 999,
  149 + })
  150 + .then((res) => {
163 151 this.$toast.clear()
164 152 console.log('基地记录:', res.data)
165 153 if (res.data.status == 1) {
... ... @@ -173,27 +161,13 @@ export default {
173 161 } else {
174 162 this.$toast.fail(res.data.message)
175 163 }
176   - },
177   - onFail: err => {
178   - console.log('err', err)
179   - }
180   - });
  164 + })
181 165 },
182 166 // 根据用户编号获取打卡和课程天数信息
183   - getSignCheckCountInfo () {
184   - this.mgop({
185   - api: 'mgop.sz.hswsy.SignCheckCountInfoByUserId', // 必须
186   - host: 'https://mapi.zjzwfw.gov.cn/',
187   - dataType: 'JSON',
188   - type: 'GET',
189   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
190   - headers: {
191   - // 'isTestUrl': '1'
192   - },
193   - data: {
194   - "userId": this.studentInfo?.travelerNum,
195   - },
196   - onSuccess: res => {
  167 + getSignCheckCountInfo() {
  168 + this.yxAxios
  169 + .get(`${this.yanxueUrl}/api/StudiesWap/SignCheckCountInfo/ByUserId?userId=${this.studentInfo?.travelerNum}`)
  170 + .then((res) => {
197 171 this.$toast.clear()
198 172 console.log('天数:', res.data)
199 173 if (res.data.status == 1) {
... ... @@ -201,44 +175,40 @@ export default {
201 175 } else {
202 176 this.$toast.fail(res.data.message)
203 177 }
204   - },
205   - onFail: err => {
206   - console.log('err', err)
207   - }
208   - });
  178 + })
209 179 },
210 180 // 研学码
211   - handleYanxue () {
  181 + handleYanxue() {
212 182 this.$router.push({ name: 'YanxueCode' })
213 183 },
214 184 // 联系客服
215   - contactService () {
  185 + contactService() {
216 186 // if (this.detailData.mobiles) {
217 187 // location.href = "tel://" + this.detailData.mobiles.split(",")[0];
218 188 // }
219 189 },
220 190 // 基地评价
221   - evaluateBase (item) {
  191 + evaluateBase(item) {
222 192 this.$router.push({ name: 'evaluateBase', query: { baseId: item.baseId, signId: item.signId } })
223 193 },
224 194 // 课程评价
225   - evaluateCourse (item) {
226   - let courseInfo = item;
  195 + evaluateCourse(item) {
  196 + let courseInfo = item
227 197 courseInfo.id = courseInfo.orderId
228 198 window.localStorage.setItem('courseInfo', JSON.stringify(courseInfo))
229 199 this.$router.push({ name: 'evaluateCourse' })
230 200 },
231 201 // 基地评价详情
232   - evaluateBaseDetail (item) {
  202 + evaluateBaseDetail(item) {
233 203 this.$router.push({ name: 'evaluateDetail', query: { evaluationId: item.evaluationId, baseId: item.baseId } })
234 204 },
235 205 // 课程评价详情
236   - evaluateCourseDetail (item) {
  206 + evaluateCourseDetail(item) {
237 207 this.$router.push({ name: 'evaluateDetail', query: { evaluationId: item.evaluationId } })
238   - }
  208 + },
239 209 },
240 210 components: {
241   - HomeScan
  211 + HomeScan,
242 212 },
243 213 }
244 214 </script>
... ... @@ -249,7 +219,7 @@ export default {
249 219 .infomation {
250 220 width: 100%;
251 221 height: 852px;
252   - background: url("~@/assets/home/bg_stu.png");
  222 + background: url('~@/assets/home/bg_stu.png');
253 223 background-size: 100%;
254 224 background-position: center;
255 225 .top {
... ... @@ -451,22 +421,22 @@ export default {
451 421 }
452 422 }
453 423 .list_box .list_item {
454   - .left{
  424 + .left {
455 425 font-size: 40px;
456   - .minute{
  426 + .minute {
457 427 font-size: 36px;
458 428 }
459 429 }
460 430 .right {
461   - button {
462   - font-size: 32px;
463   - padding: 0;
464   - }
465   - .item_title {
466   - font-size: 40px;
  431 + button {
  432 + font-size: 32px;
  433 + padding: 0;
  434 + }
  435 + .item_title {
  436 + font-size: 40px;
  437 + }
467 438 }
468 439 }
469   - }
470 440 }
471 441 }
472   -</style>
473 442 \ No newline at end of file
  443 +</style>
... ...
src/views/Home/YanxueInfo.vue
... ... @@ -12,7 +12,7 @@
12 12  
13 13 <script>
14 14 export default {
15   - data () {
  15 + data() {
16 16 return {
17 17 codeNum: '',
18 18 userNum: '',
... ... @@ -20,59 +20,41 @@ export default {
20 20 name: '',
21 21 }
22 22 },
23   - created () {
24   -
25   - let studentInfo = JSON.parse(localStorage.getItem('StudentDetialInfo'));
  23 + created() {
  24 + let studentInfo = JSON.parse(localStorage.getItem('StudentDetialInfo'))
26 25 this.userNum = studentInfo.travelerNum
27 26 this.school = studentInfo.schoolName
28 27 this.name = studentInfo.travelerName
29   - this.codeNum = this.GetQueryString('qrresult') || studentInfo.studyCode;
  28 + this.codeNum = this.GetQueryString('qrresult') || studentInfo.studyCode
30 29 },
31 30 methods: {
32   - getbind () {
  31 + getbind() {
33 32 if (this.userNum == '' || this.codeNum == '') {
34   - this.$toast('请先填写完整信息!');
35   - return ;
  33 + this.$toast('请先填写完整信息!')
  34 + return
36 35 }
37   - this.mgop({
38   - api: 'mgop.sz.hswsy.bingStudyCode', // 必须
39   - host: 'https://mapi.zjzwfw.gov.cn/',
40   - dataType: 'JSON',
41   - type: 'GET',
42   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
43   - headers: {
44   - // 'isTestUrl': '1'
45   - },
46   - data: {
47   - "userNum": this.userNum,
48   - "code": this.codeNum,
49   - },
50   - onSuccess: res => {
51   - if (res.data.code == '200') {
52   - this.$toast('操作成功');
53   - this.$router.push({ name: 'YanxueCode' })
54   - } else {
55   - this.$toast('操作失败:' + res.data.message);
56   - }
57   - },
58   - onFail: err => {
59   - console.log('err', err)
  36 + this.yxAxios.get(this.proxyUrl + '/user/info/bingStudyCode?userNum=' + this.userNum + '&code=' + this.codeNum).then((res) => {
  37 + console.log('接口返回', res.data)
  38 + if (res.data.code == '200') {
  39 + this.$toast('操作成功')
  40 + this.$router.push({ name: 'YanxueCode' })
  41 + } else {
  42 + this.$toast('操作失败:' + res.data.message)
60 43 }
61   - });
  44 + })
62 45 },
63 46 //扫一扫
64   - saoYiSao () {
65   - window.location.href = 'http://sao315.com/w/api/saoyisao?redirect_uri=https://payment.myjxt.com/center/%23/YanxueInfo';
  47 + saoYiSao() {
  48 + window.location.href = 'http://sao315.com/w/api/saoyisao?redirect_uri=https://payment.myjxt.com/center/%23/YanxueInfo'
66 49 },
67 50 // 获取链接参数
68   - GetQueryString (name) {
69   - var reg = new RegExp("\\b" + name + "=([^&]*)");
70   - var r = location.href.match(reg);
71   - if (r != null) return decodeURIComponent(r[1]);
72   - }
73   - }
  51 + GetQueryString(name) {
  52 + var reg = new RegExp('\\b' + name + '=([^&]*)')
  53 + var r = location.href.match(reg)
  54 + if (r != null) return decodeURIComponent(r[1])
  55 + },
  56 + },
74 57 }
75 58 </script>
76 59  
77   -<style>
78   -</style>
79 60 \ No newline at end of file
  61 +<style></style>
... ...
src/views/Home/component/AddChildPopupGroup.vue
... ... @@ -206,21 +206,13 @@ export default {
206 206 duration: 0,
207 207 forbidClick: true,
208 208 })
209   - this.mgop({
210   - api: 'mgop.sz.hswsy.getMsg', // 必须
211   - host: 'https://mapi.zjzwfw.gov.cn/',
212   - dataType: 'JSON',
213   - type: 'POST',
214   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
215   - headers: {
216   - // 'isTestUrl': '1'
217   - },
218   - data: {
  209 + this.http
  210 + .getMsg({
219 211 phone: this.phone,
220   - },
221   - onSuccess: (res) => {
  212 + })
  213 + .then((res) => {
222 214 this.$toast.clear()
223   - if (res.data.code == 200 || res.data.success) {
  215 + if (res.success) {
224 216 let i = 60
225 217 codeInterval = setInterval(() => {
226 218 if (i == 0) {
... ... @@ -232,13 +224,9 @@ export default {
232 224 i--
233 225 }, 1000)
234 226 } else {
235   - this.$toast.fail(res.data?.message)
  227 + this.$toast.fail(res.message)
236 228 }
237   - },
238   - onFail: (err) => {
239   - console.log('err', err)
240   - },
241   - })
  229 + })
242 230 },
243 231 // 获取手机号白名单信息,激活认证
244 232 checkPhoneAndCode() {
... ... @@ -259,21 +247,13 @@ export default {
259 247 duration: 0,
260 248 forbidClick: true,
261 249 })
262   - this.mgop({
263   - api: 'mgop.sz.hswsy.checkPhone', // 必须
264   - host: 'https://mapi.zjzwfw.gov.cn/',
265   - dataType: 'JSON',
266   - type: 'POST',
267   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
268   - headers: {
269   - // 'isTestUrl': '1'
270   - },
271   - data: {
  250 + this.yxAxios
  251 + .post(`${this.proxyUrl}/user/info/checkPhone`, {
272 252 code: this.code,
273 253 phone: this.phone,
274 254 travelerNum: this.travelerNum,
275   - },
276   - onSuccess: (res) => {
  255 + })
  256 + .then((res) => {
277 257 this.$toast.clear()
278 258 if (res.data.code == 200) {
279 259 this.$toast.success('认证成功')
... ... @@ -281,11 +261,7 @@ export default {
281 261 } else {
282 262 this.$toast.fail(res.data?.message)
283 263 }
284   - },
285   - onFail: (err) => {
286   - console.log('err', err)
287   - },
288   - })
  264 + })
289 265 },
290 266 // 获取身份证认证
291 267 checkCard() {
... ... @@ -302,20 +278,12 @@ export default {
302 278 duration: 0,
303 279 forbidClick: true,
304 280 })
305   - this.mgop({
306   - api: 'mgop.sz.hswsy.checkIdCard', // 必须
307   - host: 'https://mapi.zjzwfw.gov.cn/',
308   - dataType: 'JSON',
309   - type: 'POST',
310   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
311   - headers: {
312   - // 'isTestUrl': '1'
313   - },
314   - data: {
  281 + this.yxAxios
  282 + .post(`${this.proxyUrl}/user/info/checkIdCard`, {
315 283 idCard: this.cardId,
316 284 travelerNum: this.travelerNum,
317   - },
318   - onSuccess: (res) => {
  285 + })
  286 + .then((res) => {
319 287 this.$toast.clear()
320 288 if (res.data.code == 200) {
321 289 this.$toast.success('认证成功')
... ... @@ -323,41 +291,20 @@ export default {
323 291 } else {
324 292 this.$toast.fail(res.data?.message)
325 293 }
326   - },
327   - onFail: (err) => {
328   - console.log('err', err)
329   - },
330   - })
  294 + })
331 295 },
332 296 // 初始化入学年份选项
333 297 initYearArr() {
334   - this.mgop({
335   - api: 'mgop.sz.hswsy.SchoolManageGradeAll', // 必须
336   - host: 'https://mapi.zjzwfw.gov.cn/',
337   - dataType: 'JSON',
338   - type: 'GET',
339   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
340   - headers: {
341   - // 'isTestUrl': '1'
342   - },
343   - onSuccess: (res) => {
344   - if (res.data.status == 1) {
345   - console.log('入学年份列表:', res)
346   - let yearArr = res.data.data
347   - let newYearArr = yearArr.map((x) => {
348   - return {
349   - value: x,
350   - label: x,
351   - }
352   - })
353   - this.yearArr = newYearArr
354   - } else {
355   - this.$toast.fail(res.data?.message)
  298 + this.yxAxios.get(`${this.yanxueUrl}/api/SchoolManage/Grade/All`).then((res) => {
  299 + console.log('入学年份列表:', res)
  300 + let yearArr = res.data.data
  301 + let newYearArr = yearArr.map((x) => {
  302 + return {
  303 + value: x,
  304 + label: x,
356 305 }
357   - },
358   - onFail: (err) => {
359   - console.log('err', err)
360   - },
  306 + })
  307 + this.yearArr = newYearArr
361 308 })
362 309 },
363 310 selectYearOver(value) {
... ... @@ -382,18 +329,8 @@ export default {
382 329 },
383 330 // 获取班级列表
384 331 GetSchoolManageClass() {
385   - this.mgop({
386   - api: 'mgop.sz.hswsy.SchoolManageClassAll', // 必须
387   - host: 'https://mapi.zjzwfw.gov.cn/',
388   - dataType: 'JSON',
389   - type: 'GET',
390   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
391   - headers: {
392   - // 'isTestUrl': '1'
393   - },
394   - onSuccess: (res) => {
395   - if (res.data.status == 1) {
396   - console.log('班级列表:', res)
  332 + this.yxAxios.get(`${this.yanxueUrl}/api/SchoolManage/Class/All`).then((res) => {
  333 + console.log('班级列表:', res)
397 334 let classTypeArr = res.data.data
398 335 let newClassTypeArr = classTypeArr.map((x) => {
399 336 return {
... ... @@ -402,13 +339,6 @@ export default {
402 339 }
403 340 })
404 341 this.classTypeArr = newClassTypeArr
405   - } else {
406   - this.$toast.fail(res.data?.message)
407   - }
408   - },
409   - onFail: (err) => {
410   - console.log('err', err)
411   - },
412 342 })
413 343 },
414 344 handleSelectArea() {
... ... @@ -455,29 +385,18 @@ export default {
455 385 duration: 0,
456 386 forbidClick: true,
457 387 })
458   - this.mgop({
459   - api: 'mgop.sz.hswsy.addStudent', // 必须
460   - host: 'https://mapi.zjzwfw.gov.cn/',
461   - dataType: 'JSON',
462   - type: 'GET',
463   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
464   - headers: {
465   - // 'isTestUrl': '1'
466   - },
467   - data: postData,
468   - onSuccess: (res) => {
469   - console.log('添加学生:', res)
470   - this.$toast.clear()
471   - if (res.data.code == 200) {
472   - this.$toast.success('添加学生成功')
  388 + this.yxAxios.post(`${this.proxyUrl}/user/info/addStudent`, postData).then((res) => {
  389 + console.log('添加学生:', res)
  390 + this.$toast.clear()
  391 + if (res.data.code == 200) {
  392 + this.$toast.success('添加学生成功')
  393 +
  394 + setTimeout(() => {
473 395 this.$emit('complete')
474   - } else {
475   - this.$toast.fail(res.data?.message)
476   - }
477   - },
478   - onFail: (err) => {
479   - console.log('err', err)
480   - },
  396 + }, 500)
  397 + } else {
  398 + this.$toast.fail(res.data?.message)
  399 + }
481 400 })
482 401 }
483 402 },
... ...
src/views/Home/component/HomeChildList.vue
... ... @@ -65,20 +65,8 @@ export default {
65 65 duration: 0,
66 66 forbidClick: true
67 67 })
68   - this.mgop({
69   - api: 'mgop.sz.hswsy.getPortalUserByNum', // 必须
70   - host: 'https://mapi.zjzwfw.gov.cn/',
71   - dataType: 'JSON',
72   - type: 'GET',
73   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
74   - headers: {
75   - // 'isTestUrl': '1'
76   - },
77   - data: {
78   - "userNum": localStorage.getItem('centerNo')
79   - },
80   - onSuccess: res => {
81   - console.log('getUserInfo', res)
  68 + this.yxAxios.get(`${this.proxyUrl}/user/info/getPortalUserByNum?userNum=${localStorage.getItem('centerNo')}`).then((res) => {
  69 + console.log('getUserInfo', res)
82 70 this.$toast.clear()
83 71 if (res.data.code == 200) {
84 72 const userInfo = res.data.data.userInfo
... ... @@ -94,11 +82,7 @@ export default {
94 82 this.$store.commit('changeSchool', [])
95 83 }
96 84 }
97   - },
98   - onFail: err => {
99   - console.log('err', err)
100   - }
101   - });
  85 + })
102 86 },
103 87 addStudent () {
104 88 this.step = 1
... ...
src/views/Service/AbroadDetail.vue
... ... @@ -36,23 +36,6 @@
36 36 </template>
37 37 </div>
38 38 </div>
39   - <!-- <div class="package top_border">
40   - <p class="package_title">套餐类型/日期</p>
41   - <div class="package_box" v-if="packageArr.length>0">
42   - <div style="overflow:auto;">
43   - <div class="package_item" :class="packageActive==index?'active':''" v-for="(item, index) in packageArr" :key="index" @click="handlePackageDay(index)">
44   - <p class="date">{{ item.day }}</p>
45   - <p class="week">{{ item.week }}</p>
46   - <img class="select" src="@/assets/service/select.png" alt="" />
47   - </div>
48   - </div>
49   - <div class="package_item package_item_more" @click="checkDatePackage()" v-if="packageArr.length>5">
50   - <img class="more_icon" src="@/assets/service/more.png" alt="" />
51   - <p class="more_text">查看更多</p>
52   - </div>
53   - </div>
54   - <img class="notime" v-if="packageArr.length==0" src="@/assets/service/notime.png" alt="">
55   - </div> -->
56 39 <div class="package top_border" v-if="packageArr.length>0&&packageArr[packageActive].comboInfoList.length>1">
57 40 <div class="package_box">
58 41 <div style="overflow:auto;">
... ... @@ -93,8 +76,6 @@
93 76 import AbroadDes from './component/AbroadDetail/AbroadDes';
94 77 import AbroadBase from './component/AbroadDetail/AbroadBase';
95 78 import AbroadEvaluate from './component/AbroadDetail/AbroadEvaluate';
96   -import CountDown from './component/AbroadDetail/CountDown';
97   -import AbroadCoupon from './component/AbroadDetail/AbroadCoupon';
98 79 import './AbroadDetail.scss';
99 80 export default {
100 81 name: "ServiceAbroadDetail",
... ... @@ -122,12 +103,6 @@ export default {
122 103 this.GetCourseDetail();
123 104 },
124 105 methods: {
125   - // 点击套餐日期
126   - handlePackageDay (index) {
127   - this.packageActive = index;
128   - this.packageTypeActive = 0;//重置套餐类型选择
129   - //TODO 获取该日所包含的套餐
130   - },
131 106  
132 107 // 点击预约
133 108 checkDatePackage () {
... ... @@ -161,22 +136,8 @@ export default {
161 136 });
162 137  
163 138 this.addReadNum(this.courseId)
164   -
165   - this.mgop({
166   - api: 'mgop.sz.hswsy.GetCourseDetail', // 必须
167   - host: 'https://mapi.zjzwfw.gov.cn/',
168   - dataType: 'JSON',
169   - type: 'POST',
170   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
171   - headers: {
172   - // 'isTestUrl': '1'
173   - },
174   - data: {
175   - "id": this.courseId,
176   - "cs": "绍兴市",
177   - },
178   - onSuccess: res => {
179   - this.$toast.clear();
  139 + this.yxAxios.get(`${this.yanxueUrl}/api/StudiesWap/GetCourseDetail?id=${this.courseId}&cs=绍兴市`).then((res) => {
  140 + this.$toast.clear();
180 141 if (res.data.data && res.data.data.id !== 0) {
181 142 let detailData = res.data.data;
182 143 console.log('产品详情:', detailData)
... ... @@ -191,7 +152,6 @@ export default {
191 152 price: detailData.price,
192 153 })
193 154 );
194   - this.getPackageData(); //获取套餐列表
195 155 } else {
196 156 let message = res.data.message;
197 157 if (!message) {
... ... @@ -199,104 +159,9 @@ export default {
199 159 }
200 160 this.$toast.fail(message)
201 161 }
202   - },
203   - onFail: err => {
204   - console.log('err', err)
205   - }
206   - });
  162 + })
207 163 },
208 164  
209   - // 获取套餐列表
210   - getPackageData () {
211   - let startDate = this.Moment().format("YYYY-MM-DD");
212   - let endDate = this.Moment().add(60, "days").format("YYYY-MM-DD");
213   - this.mgop({
214   - api: 'mgop.sz.hswsy.DateComboBindList', // 必须
215   - host: 'https://mapi.zjzwfw.gov.cn/',
216   - dataType: 'JSON',
217   - type: 'GET',
218   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
219   - headers: {
220   - // 'isTestUrl': '1'
221   - },
222   - data: {
223   - "productId": this.detailData.id,
224   - "startDate": startDate,
225   - "endDate": endDate,
226   - },
227   - onSuccess: res => {
228   - console.log('套餐列表:', res.data.data);
229   - if (res.data.data) {
230   - let allPackage = res.data.data;
231   - let usefulPackage = [];
232   - for (let i in allPackage) {
233   - if (allPackage[i]?.comboList?.length > 0) {
234   - usefulPackage.push(allPackage[i]);
235   - }
236   - }
237   - this.packageData = usefulPackage;
238   - localStorage.setItem(
239   - "packageData",
240   - JSON.stringify(usefulPackage)
241   - );
242   - this.setPackageArr();
243   - }
244   - },
245   - onFail: err => {
246   - console.log('err', err)
247   - }
248   - });
249   - },
250   - // 设置套餐价格
251   - setPackageArr () {
252   - console.log('含套餐的日期:', this.packageData);
253   - let packageArr = [];
254   - for (let i in this.packageData) {
255   - let packageDate = this.Moment(
256   - new Date(this.packageData[i]?.dayName.replace(/\-/g, "/"))
257   - );
258   - let week = packageDate.format("d");
259   - week =
260   - week == 1
261   - ? "周一"
262   - : week == 2
263   - ? "周二"
264   - : week == 3
265   - ? "周三"
266   - : week == 4
267   - ? "周四"
268   - : week == 5
269   - ? "周五"
270   - : week == 6
271   - ? "周六"
272   - : week == 0
273   - ? "周日"
274   - : "";
275   - let comboInfoList = [];
276   - let comboList = JSON.parse(JSON.stringify(this.packageData[i]?.comboList))
277   - // 为套餐添加下标
278   - let marketPrice = 999;
279   - for (let j in comboList) {
280   - for (let k in comboList[j].comboInfoList) {
281   - comboList[j].comboInfoList[k].tagIndex = [j, k]
282   - comboList[j].comboInfoList[k].bindId = comboList[j].id
283   - if (comboList[j].comboInfoList[k].actualPrice < marketPrice) {
284   - marketPrice = comboList[j].comboInfoList[k].actualPrice
285   - }
286   - }
287   - comboInfoList.push(...comboList[j].comboInfoList)
288   - }
289   - packageArr.push({
290   - day: packageDate.format("M/D"),
291   - date: packageDate.format("YYYY-MM-DD"),
292   - week: week,
293   - marketPrice: marketPrice,
294   - comboInfoList: comboInfoList,
295   - });
296   - }
297   - this.packageArr = packageArr;
298   - this.initPackageArr = true
299   - },
300 165 // 联系客服
301 166 contactService () {
302 167 if (this.detailData.mobiles) {
... ... @@ -327,8 +192,6 @@ export default {
327 192 AbroadDes,
328 193 AbroadBase,
329 194 AbroadEvaluate,
330   - CountDown,
331   - AbroadCoupon
332 195 }
333 196 };
334 197 </script>
... ...
src/views/Service/AbroadEvaluate.vue
... ... @@ -2,7 +2,7 @@
2 2 <div id="abroadEvaluate">
3 3 <div class="top">
4 4 <div class="score">
5   - <span>{{score}}.0</span>
  5 + <span>{{ score }}.0</span>
6 6 <div>
7 7 <p>商家评分</p>
8 8 <van-rate v-model="score" void-icon="star" void-color="#eee" color="#FFCC00" :size="14" />
... ... @@ -16,83 +16,73 @@
16 16 </div> -->
17 17 </div>
18 18 <div class="evaluate_list">
19   - <div class="evaluate_item" v-for="(item,index) in list" :key="index">
  19 + <div class="evaluate_item" v-for="(item, index) in list" :key="index">
20 20 <div class="user">
21   - <img src="@/assets/head.png" alt="">
  21 + <img src="@/assets/head.png" alt="" />
22 22 <div>
23   - <p>{{item.nickName||'匿名用户'}}</p>
24   - <span>{{item.intime}}</span>
  23 + <p>{{ item.nickName || '匿名用户' }}</p>
  24 + <span>{{ item.intime }}</span>
25 25 </div>
26 26 </div>
27 27 <div class="rate_box">
28 28 <van-rate v-model="item.courseScore" void-icon="star" void-color="#eee" color="#FFCC00" :size="18" />
29   - <span class="rate">{{item.courseScore}}.0</span>
  29 + <span class="rate">{{ item.courseScore }}.0</span>
30 30 </div>
31   - <p class="evaluation"><span>评价:</span>{{item.evaluation}}</p>
  31 + <p class="evaluation"><span>评价:</span>{{ item.evaluation }}</p>
32 32 <div class="evaluation_img_box">
33 33 <!-- <img class="evaluation_img" src="@/assets/head.png" alt=""> -->
34   - <img class="evaluation_img" v-for="(imgItem,index) in item.imgList" :key="index" :src="imgItem.imgUrl" alt="" @click="previewImg(imgItem.imgUrl)">
  34 + <img
  35 + class="evaluation_img"
  36 + v-for="(imgItem, index) in item.imgList"
  37 + :key="index"
  38 + :src="imgItem.imgUrl"
  39 + alt=""
  40 + @click="previewImg(imgItem.imgUrl)"
  41 + />
35 42 </div>
36 43 </div>
37 44 </div>
38 45 <van-popup v-model="showPreview" round get-container="body">
39   - <img class="preview_img" :src="previewUrl" alt="">
  46 + <img class="preview_img" :src="previewUrl" alt="" />
40 47 </van-popup>
41 48 </div>
42 49 </template>
43 50 <script>
44 51 export default {
45   - data () {
  52 + data() {
46 53 return {
47 54 score: '',
48 55 list: [],
49   - previewUrl: '',//图片预览
50   - showPreview: false
  56 + previewUrl: '', //图片预览
  57 + showPreview: false,
51 58 }
52 59 },
53   - mounted () {
54   - const courseId = this.$route.query.courseId;
  60 + mounted() {
  61 + const courseId = this.$route.query.courseId
55 62 this.$toast.loading({
56 63 message: '加载中...',
57   - });
  64 + })
58 65 this.getEvaluationList(courseId)
59   -
60 66 },
61 67 methods: {
62   - getEvaluationList (courseId) {
63   - this.mgop({
64   - api: 'mgop.sz.hswsy.EvaluationList', // 必须
65   - host: 'https://mapi.zjzwfw.gov.cn/',
66   - dataType: 'JSON',
67   - type: 'GET',
68   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
69   - headers: {
70   - // 'isTestUrl': '1'
71   - },
72   - data: {
73   - "courseId": courseId,
74   - },
75   - onSuccess: res => {
76   - this.$toast.clear();
77   - if (res.data.status == 1) {
78   - let list = res.data.data?.evaluationList;
79   - for (let i in list) {
80   - list[i].intime = this.Moment(list[i].intime).format("YYYY.MM.DD");
81   - }
82   - this.list = list;
83   - this.score = res.data.data?.shopScore
  68 + getEvaluationList(courseId) {
  69 + this.yxAxios.get(`${this.yanxueUrl}/api/StudiesWap/Evaluation/List?courseId=${this.courseId}`).then((res) => {
  70 + this.$toast.clear()
  71 + if (res.data.status == 1) {
  72 + let list = res.data.data?.evaluationList
  73 + for (let i in list) {
  74 + list[i].intime = this.Moment(list[i].intime).format('YYYY.MM.DD')
84 75 }
85   - },
86   - onFail: err => {
87   - console.log('err', err)
  76 + this.list = list
  77 + this.score = res.data.data?.shopScore
88 78 }
89   - });
  79 + })
90 80 },
91 81 // 预览图片
92   - previewImg (url) {
93   - this.previewUrl = url;
  82 + previewImg(url) {
  83 + this.previewUrl = url
94 84 this.showPreview = true
95   - }
  85 + },
96 86 },
97 87 }
98 88 </script>
... ... @@ -218,10 +208,10 @@ export default {
218 208 font-size: 40px;
219 209 }
220 210 }
221   - .evaluation{
  211 + .evaluation {
222 212 font-size: 40px;
223 213 }
224 214 }
225 215 }
226 216 }
227   -</style>
228 217 \ No newline at end of file
  218 +</style>
... ...
src/views/Service/CardBoxXST.vue
... ... @@ -1,445 +0,0 @@
1   -<template>
2   - <div>
3   - <van-tabs v-model="active" :before-change="beforeTabChange" sticky>
4   - <div id="cardBox">
5   - <van-tab title="未使用">
6   - <!-- <div class="exchange_btn" @click="handleExchange">
7   - <p>
8   - <van-icon name="coupon-o" />
9   - 兑换优惠券
10   - </p>
11   - <van-icon name="arrow" />
12   - </div> -->
13   - <div class="card_item" :class="{'big':item.picsArr.length>1,'margin_bottom':item.desShow}" v-for="(item,index) in cardList" :key="index">
14   - <div class="left">
15   - <div class="top" @click="handleUseCard(index)">
16   - <template v-if="item.picsArr.length==1">
17   - <img :src="item.picsArr[0]" alt="">
18   - <p class="title">仅该商品可用:<span>{{item.proNameArr[0]}}</span></p>
19   - </template>
20   - <template v-if="item.picsArr.length>1">
21   - <p class="bigtext">{{item.title}}</p>
22   - <template v-for="(img,index2) in item.picsArr">
23   - <img class="bigimg" v-if="index2<3" :src="img" :key="index2" alt="">
24   - </template>
25   - </template>
26   - </div>
27   - <p class="end_time" @click="item.desShow=!item.desShow">
28   - <span>有效期至:{{item.couponEndTimeVo}}</span>
29   - <van-icon v-if="item.desShow" name="arrow-up" />
30   - <van-icon v-else name="arrow-down" />
31   - </p>
32   - </div>
33   - <div class="right" @click="handleUseCard(index)">
34   - <p class="discount" :class="item.couponState==1?'':'disable'"><span>¥</span>{{item.couponPrice}}</p>
35   - <p class="usenow" v-if="item.couponState==1">立即使用</p>
36   - <p class="usenow disable" v-else>{{item.couponState==2?'已使用':'已过期'}}</p>
37   - </div>
38   - <p class="des" v-if="item.desShow">仅限领券中心品类券指定商品内使用</p>
39   - </div>
40   -
41   - <van-empty v-if="cardList.length==0" description="暂无优惠券" />
42   - </van-tab>
43   - <van-tab title="领券中心">
44   - <div class="card_item" :class="{'big':item.picsArr.length>1,'margin_bottom':item.desShow}" v-for="(item,index) in reCardList" :key="index">
45   - <div class="left">
46   - <div class="top">
47   - <template v-if="item.picsArr.length==1">
48   - <img :src="item.picsArr[0]" alt="">
49   - <p class="title">仅该商品可用:<span>{{item.proNameArr[0]}}</span></p>
50   - </template>
51   - <template v-if="item.picsArr.length>1">
52   - <p class="bigtext">{{item.title}}</p>
53   - <template v-for="(img,index2) in item.picsArr">
54   - <img class="bigimg" v-if="index2<3" :src="img" :key="index2" alt="">
55   - </template>
56   - </template>
57   - </div>
58   - <p class="end_time" @click="item.desShow=!item.desShow">
59   - <span v-if="item.lifeFlag==1">领取后当天生效,有效期为:{{item.lifeDay}}天</span>
60   - <span v-else>有效期至:{{item.lifeTime}}</span>
61   - <van-icon v-if="item.desShow" name="arrow-up" />
62   - <van-icon v-else name="arrow-down" />
63   - </p>
64   - </div>
65   - <div class="right" @click="reCard(item)">
66   - <p class="discount" :class="item.geted?'disable':''"><span>¥</span>{{item.couponPrice}}</p>
67   - <p class="usenow disable" v-if="item.geted">已领取</p>
68   - <p class="usenow" v-else>立即领取</p>
69   - </div>
70   - <p class="des" v-if="item.desShow">仅限领券中心品类券指定商品内使用,每人仅可领取一次!</p>
71   - </div>
72   - <van-empty v-if="reCardList.length==0" description="暂无优惠券" />
73   -
74   - </van-tab>
75   - </div>
76   - </van-tabs>
77   - </div>
78   -</template>
79   -<script>
80   -export default {
81   - name: 'CardBoxXST',
82   - data () {
83   - return {
84   - cardList: [],
85   - reCardList: [],
86   - centerNo: '',
87   - active: 0,
88   - pickerArr: []
89   - }
90   - },
91   - mounted () {
92   - let active = this.$route.query.active;
93   - if (active) {
94   - this.active = Number(active)
95   - }
96   - this.centerNo = localStorage.getItem('centerNo')
97   - this.getAllCard()
98   - this.getReCard()
99   - },
100   - methods: {
101   - beforeTabChange (item) {
102   - if (item == 0) {
103   - this.getAllCard()
104   - } else {
105   - this.getReCard()
106   - }
107   - return true;
108   - },
109   - // 获取所有优惠券
110   - getAllCard () {
111   - this.mgop({
112   - api: 'mgop.sz.hswsy.CouponList', // 必须
113   - host: 'https://mapi.zjzwfw.gov.cn/',
114   - dataType: 'JSON',
115   - type: 'POST',
116   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
117   - headers: {
118   - // 'isTestUrl': '1'
119   - },
120   - data: {
121   - "userId": this.centerNo,
122   - "state": '',//状态 1-正常 2-已使用 3-已过期 不传为全部,
123   - "pageNum": '1',
124   - "pageSize": '999'
125   - },
126   - onSuccess: res => {
127   - console.log('所有优惠券:', res)
128   - if (res.data.rows) {
129   - let cardList = res.data.rows
130   - for (let i in cardList) {
131   - // cardList[i].useEndTime = this.Moment(cardList[i].useEndTime.replace(/\-/g, "/")).format("YYYY-MM-DD")
132   - cardList[i].picsArr = cardList[i].pics.split(',');
133   - cardList[i].proNameArr = cardList[i].proName.split(',');
134   - cardList[i].desShow = false;
135   - }
136   - this.cardList = cardList
137   - if (this.reCardList.length > 0) {
138   - this.$nextTick(() => {
139   - this.resetReCardList()//设置领券中心券的状态
140   - })
141   - }
142   - }
143   - else {
144   - this.$toast.fail(res.data.message);
145   - }
146   -
147   - },
148   - onFail: err => {
149   - console.log('err', err)
150   - }
151   - });
152   - },
153   -
154   - //待领取的优惠券
155   - getReCard () {
156   - this.mgop({
157   - api: 'mgop.sz.hswsy.getNormalCoupons', // 必须
158   - host: 'https://mapi.zjzwfw.gov.cn/',
159   - dataType: 'JSON',
160   - type: 'POST',
161   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
162   - headers: {
163   - // 'isTestUrl': '1'
164   - },
165   - data: {
166   - "unionId": this.centerNo,
167   - },
168   - onSuccess: res => {
169   - console.log('待领取的优惠券:', res)
170   - if (res.data.rows) {
171   - let reCardList = res.data.rows
172   - for (let i in reCardList) {
173   - reCardList[i].lifeTime = this.Moment(new Date(reCardList[i].lifeTime)).format("YYYY-MM-DD HH:mm:ss")
174   - reCardList[i].picsArr = reCardList[i].pics.split(',');
175   - reCardList[i].proNameArr = reCardList[i].proName.split(',');
176   - reCardList[i].desShow = false;
177   - }
178   - this.reCardList = reCardList
179   - if (this.reCardList.length > 0) {
180   - this.$nextTick(() => {
181   - this.resetReCardList()//设置领券中心券的状态
182   - })
183   - }
184   - } else {
185   - this.$toast.fail(res.data.msg);
186   - }
187   - },
188   - onFail: err => {
189   - console.log('err', err)
190   - }
191   - });
192   -
193   - },
194   - //设置领券中心券的状态
195   - resetReCardList () {
196   - let cardList = this.cardList;
197   - let reCardList = this.reCardList;
198   - for (let i = 0; i < reCardList.length; i++) {
199   - for (let j = 0; j < cardList.length; j++) {
200   - if (reCardList[i].id == cardList[j].id) {
201   - reCardList[i].geted = true
202   - }
203   - }
204   - }
205   - console.log(this.reCardList)
206   - this.reCardList = reCardList
207   - this.$forceUpdate()
208   -
209   - },
210   - //领取优惠券
211   - reCard (item) {
212   - this.mgop({
213   - api: 'mgop.sz.hswsy.CouponGet', // 必须
214   - host: 'https://mapi.zjzwfw.gov.cn/',
215   - dataType: 'JSON',
216   - type: 'POST',
217   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
218   - headers: {
219   - // 'isTestUrl': '1'
220   - },
221   - data: {
222   - "unionId": this.centerNo,
223   - "proId": item.proId,
224   - "proName": item.proName,
225   - "pic": item.pics,
226   - "couponId": item.id,
227   - },
228   - onSuccess: res => {
229   - console.log('领取优惠券:', res)
230   - if (res.data.code == 200) {
231   - this.$toast('领取成功!')
232   - this.$nextTick(() => {
233   - this.resetReCardList()//设置领券中心券的状态
234   - })
235   - } else {
236   - this.$toast.fail(res.data.message);
237   - }
238   - },
239   - onFail: err => {
240   - console.log('err', err)
241   - }
242   - });
243   -
244   - },
245   - // 使用优惠券
246   - handleUseCard (index) {
247   - const item = this.cardList[index];
248   - // 未使用才触发后续操作
249   - if (item.couponState == 1) {
250   - let proIdArr = item.proId.split(',')
251   - if (proIdArr.length == 1) {
252   - // 单个商品直接跳转商品
253   - this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: proIdArr[0] } })
254   - } else {
255   - // 多个商品跳转优惠券详情页
256   - localStorage.setItem('cardCousreCardId', item.id)
257   - localStorage.setItem('cardCousreCardPrice', item.couponPrice)
258   - localStorage.setItem('cardCousreCardTitle', item.title)
259   - localStorage.setItem('cardCousreProId', item.proId)
260   - localStorage.setItem('cardCousreProName', item.proName)
261   - localStorage.setItem('cardCousrePics', item.pics)
262   - localStorage.setItem('cardCousreGeted', true)//设置详情页优惠券状态为已领取
263   - this.$router.push({ name: 'CardCourseList' })
264   - }
265   - }
266   - },
267   -
268   - handleCard (index) {
269   - const item = this.reCardList[index];
270   - let proIdArr = item.proId.split(',')
271   - // 单个商品直接跳转商品
272   - if (proIdArr.length == 1) {
273   - this.$router.push({ name: 'ServiceAbroadDetail', query: { courseId: proIdArr[0] } })
274   - } else {
275   - // 多个商品跳转优惠券详情页
276   - localStorage.setItem('cardCousreCardId', item.id)
277   - localStorage.setItem('cardCousreCardPrice', item.couponPrice)
278   - localStorage.setItem('cardCousreCardTitle', item.title)
279   - localStorage.setItem('cardCousreProId', item.proId)
280   - localStorage.setItem('cardCousreProName', item.proName)
281   - localStorage.setItem('cardCousrePics', item.pics)
282   - localStorage.setItem('cardCousreGeted', false)//设置详情页优惠券状态为待领取
283   - this.$router.push({ name: 'CardCourseList' })
284   - }
285   -
286   - },
287   - }
288   -}
289   -</script>
290   -<style lang="scss" scoped>
291   -#cardBox {
292   - width: 100%;
293   - min-height: 100vh;
294   - background: rgb(246, 246, 250);
295   - overflow: hidden;
296   - box-sizing: border-box;
297   - padding-bottom: 100px;
298   - .exchange_btn {
299   - font-size: 28px;
300   - width: 710px;
301   - height: 76px;
302   - background: #ffffff;
303   - border-radius: 8px;
304   - display: flex;
305   - align-items: center;
306   - justify-content: space-between;
307   - margin: 16px auto;
308   - box-sizing: border-box;
309   - padding: 0 16px;
310   - }
311   - .card_item {
312   - width: 726px;
313   - height: 210px;
314   - background: url("../../assets/service/card.png");
315   - background-size: 100%;
316   - background-repeat: no-repeat;
317   - margin: 0 auto;
318   - margin-top: 20px;
319   - position: relative;
320   - &.margin_bottom {
321   - margin-bottom: 60px;
322   - }
323   - &.big {
324   - height: 250px;
325   - }
326   - p {
327   - width: 100%;
328   - margin: 0;
329   - }
330   - .left {
331   - display: inline-block;
332   - width: 68%;
333   - height: 100%;
334   - vertical-align: top;
335   - box-sizing: border-box;
336   - padding: 24px 40px;
337   - padding-right: 0;
338   - padding-bottom: 10px;
339   - .top {
340   - display: flex;
341   - flex-wrap: wrap;
342   - img {
343   - width: 66px;
344   - height: 66px;
345   - background: #d8d8d8;
346   - border-radius: 6px;
347   - }
348   - .title {
349   - font-size: 24px;
350   - font-weight: bold;
351   - margin-left: 10px;
352   - word-break: break-all;
353   - max-width: 370px;
354   - span {
355   - color: #7f5316;
356   - }
357   - }
358   - .bigtext {
359   - font-size: 24px;
360   - width: 400px;
361   - font-weight: bold;
362   - margin-bottom: 10px;
363   - }
364   - .bigimg {
365   - width: 120px;
366   - height: 120px;
367   - margin-right: 16px;
368   - }
369   - }
370   - }
371   - .right {
372   - width: 32%;
373   - height: 100%;
374   - display: inline-flex;
375   - align-content: center;
376   - flex-wrap: wrap;
377   - position: relative;
378   - }
379   - .end_time {
380   - font-size: 24px;
381   - color: #999;
382   - left: 40px;
383   - position: absolute;
384   - bottom: 20px;
385   - display: flex;
386   - align-items: center;
387   - justify-content: space-between;
388   - width: 450px;
389   - }
390   - .discount {
391   - text-align: center;
392   - font-size: 60px;
393   - font-weight: bold;
394   - span {
395   - font-size: 24px;
396   - }
397   - &.disable {
398   - color: #999;
399   - }
400   - }
401   - .usenow {
402   - font-size: 32px;
403   - text-align: center;
404   - font-weight: bold;
405   - margin-top: 10px;
406   - &.disable {
407   - color: #999;
408   - }
409   - }
410   - .des {
411   - font-size: 26px;
412   - padding: 10px;
413   - color: #999;
414   - }
415   - }
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   -}
445   -</style>
446 0 \ No newline at end of file
src/views/Service/CardCourseList.vue
... ... @@ -1,210 +0,0 @@
1   -<template>
2   - <div id="cardCourseList">
3   - <div class="card_box">
4   - <img src="../../assets/service/card_bg.png" alt="">
5   - <p class="card_title">{{cardTitle}}</p>
6   - <p class="card_tip">仅限相关活动产品使用</p>
7   - <div class="right" @click="reCard">
8   - <p class="card_price"><span>¥</span>{{couponPrice}}</p>
9   - <span class="card_btn nobg" v-if="geted">已领取</span>
10   - <span class="card_btn" v-else>立即抢券</span>
11   - </div>
12   - </div>
13   - <p class="line">以/下/指/定/商/品/可/用</p>
14   - <ServiceListSecond :list="proList" :notab="true"></ServiceListSecond>
15   -
16   - </div>
17   -</template>
18   -<script>
19   -import ServiceListSecond from '@/views/Service/component/ServiceListSecond.vue'
20   -export default {
21   - name: 'CardBoxXST',
22   - data () {
23   - return {
24   - unionId: '',
25   - cardTitle: '',
26   - couponPrice: '',
27   - cardId: '',
28   - proId: '',
29   - proName: '',
30   - pics: '',
31   - geted: false,
32   - proList: []
33   - }
34   - },
35   - mounted () {
36   - this.cardTitle = localStorage.getItem('cardCousreCardTitle');
37   - this.couponPrice = localStorage.getItem('cardCousreCardPrice');
38   - this.cardId = localStorage.getItem('cardCousreCardId');
39   - this.proId = localStorage.getItem('cardCousreProId');
40   - this.proName = localStorage.getItem('cardCousreProName');
41   - this.pics = localStorage.getItem('cardCousrePics');
42   - this.geted = localStorage.getItem('cardCousreGeted') == 'true' ? true : false
43   - this.getCourseList()
44   - },
45   - methods: {
46   - // 获取优惠券对应的商品列表
47   - getCourseList () {
48   - this.$toast.loading({
49   - message: "加载中...",
50   - duration: 0,
51   - forbidClick: true,
52   - });
53   - this.mgop({
54   - api: 'mgop.sz.hswsy.CourseListByIdList', // 必须
55   - host: 'https://mapi.zjzwfw.gov.cn/',
56   - dataType: 'JSON',
57   - type: 'POST',
58   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
59   - headers: {
60   - // 'isTestUrl': '1'
61   - },
62   - data: {
63   - idList: this.proId.split(',')
64   - },
65   - onSuccess: res => {
66   - this.$toast.clear();
67   - let proList = res.data.data;
68   - for (let i in proList) {
69   - proList[i].course_labels = proList[i].course_labels?.split(',');
70   - proList[i].coverUrl = proList[i]?.coverList[0]?.cover_url
71   - if (proList[i].startDate) {
72   - proList[i].week = this.formatWeek(this.Moment(proList[i].startDate).format('d'));
73   - proList[i].startDate = this.Moment(proList[i].startDate).format('YYYY.M.D');
74   - proList[i].endDate = this.Moment(proList[i].endDate).format('YYYY.M.D');
75   - }
76   - }
77   - console.log(proList)
78   - this.proList = proList
79   - },
80   - onFail: err => {
81   - console.log('err', err)
82   - }
83   - });
84   - },
85   - formatWeek (week) {
86   - return week == 1 ? '周一' : week == 2 ? '周二' : week == 3 ? '周三' : week == 4 ? '周四' : week == 5 ? '周五' : week == 6 ? '周六' : week == 0 ? '周日' : '';
87   - },
88   -
89   - //领取优惠券
90   - reCard () {
91   - if (this.geted) return;
92   - this.mgop({
93   - api: 'mgop.sz.hswsy.CouponGet', // 必须
94   - host: 'https://mapi.zjzwfw.gov.cn/',
95   - dataType: 'JSON',
96   - type: 'POST',
97   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
98   - headers: {
99   - // 'isTestUrl': '1'
100   - },
101   - data: {
102   - "unionId": localStorage.getItem('centerNo'),
103   - "proId": this.proId,
104   - "proName": this.proName,
105   - "pic": this.pics,
106   - "couponId": this.cardId,
107   - },
108   - onSuccess: res => {
109   - if (res.data.code == 200) {
110   - localStorage.setItem('cardCousreGeted', true)
111   - this.geted = true;
112   - this.$toast('领取成功!')
113   - } else {
114   - this.$toast.fail(res.data.message);
115   - }
116   - },
117   - onFail: err => {
118   - console.log('err', err)
119   - }
120   - });
121   -
122   - },
123   - onConfirm (item) {
124   - this.showPicker = false;
125   - this.enterAboradDetail(item.proId)
126   - },
127   - },
128   - components: {
129   - ServiceListSecond
130   - }
131   -}
132   -</script>
133   -<style lang="scss" scoped>
134   -#cardCourseList {
135   - width: 100%;
136   - min-height: 100vh;
137   - background: #fff;
138   - background-image: url("../../assets/service/bg.png");
139   - background-size: 100%;
140   - background-repeat: no-repeat;
141   - // padding-top: 36px;
142   - overflow: hidden;
143   - .card_box {
144   - width: 704px;
145   - height: 150px;
146   - margin: 0 auto;
147   - position: relative;
148   - margin-top: 36px;
149   - img {
150   - width: 100%;
151   - }
152   - .card_title {
153   - font-size: 40px;
154   - font-weight: bold;
155   - color: #7f5316;
156   - position: absolute;
157   - top: 22px;
158   - left: 40px;
159   - }
160   - .card_tip {
161   - font-size: 24px;
162   - color: #7f5316;
163   - position: absolute;
164   - top: 94px;
165   - left: 40px;
166   - }
167   - .right {
168   - height: 100%;
169   - position: absolute;
170   - top: 0;
171   - right: 2px;
172   - padding-top: 20px;
173   - box-sizing: border-box;
174   - }
175   - .card_price {
176   - width: 160px;
177   - font-size: 60px;
178   - font-weight: bold;
179   - text-align: center;
180   - color: #000;
181   - span {
182   - font-size: 28px;
183   - }
184   - }
185   - .card_btn {
186   - display: block;
187   - margin: 0 auto;
188   - margin-top: 10px;
189   - width: 134px;
190   - line-height: 40px;
191   - color: #7f5316;
192   - font-size: 26px;
193   - text-align: center;
194   - font-weight: bold;
195   - background: #fff;
196   - border-radius: 4px;
197   - &.nobg {
198   - background: transparent;
199   - }
200   - }
201   - }
202   - .line {
203   - font-size: 32px;
204   - color: #fff;
205   - letter-spacing: 4px;
206   - text-align: center;
207   - margin-top: 18px;
208   - }
209   -}
210   -</style>
211 0 \ No newline at end of file
src/views/Service/CheckOrder.vue
... ... @@ -1,564 +0,0 @@
1   -<template>
2   - <div id="checkOrder">
3   - <div class="goods_data top_border">
4   - <div class="top">
5   - <img src="@/assets/service/school_bg.png" alt="">
6   - <div>
7   - <p class="goods_title">{{showCourseData.course_name}}</p>
8   - <p class="package_name">套餐名称:{{selectCombo.comboName}}</p>
9   - <p class="count">数量:x{{count}}{{selectComboUnitName}}</p>
10   - </div>
11   - </div>
12   - <div class="bottom">
13   - <p class="time">使用时间: {{date}}</p>
14   - <p class="price"><span>¥</span>{{selectCombo.actualPrice*1000*count/1000}}</p>
15   - </div>
16   - </div>
17   - <div class="card top_border" v-if="selectCombo.actualPrice>0" @click="openCardBox">
18   - <p>可用优惠券</p>
19   - <div>
20   - <span class="use_card" v-if="useCard">已使用红包抵扣{{useCard.couponPrice}}</span>
21   - <van-icon name="arrow" />
22   - </div>
23   - </div>
24   - <div class="top_border">
25   - <contact-box :limit="count" :people="selectCombo.adultCount" :child="selectCombo.chilCount"></contact-box>
26   - </div>
27   - <div class="card top_border">
28   - <p>服务承诺和保障</p>
29   - <van-icon name="arrow" />
30   - </div>
31   - <div class="protocol">
32   - <van-checkbox v-model="checked" shape="square" icon-size="16px">我已阅读并同意 </van-checkbox>
33   - <span style="text-decoration: underline;" @click="goPayneed">购买须知</span> <span style="text-decoration: underline;" @click="goProtocol">用户协议</span>
34   - </div>
35   - <div class="Collection">
36   - <div class="box box1">
37   - <p><span>¥</span>{{paymoney}} <del>{{selectCombo.productPrice*1000*count/1000}}</del></p>
38   - <p class="coupon" v-if="useCard">优惠券已抵用:{{useCard.couponPrice}}</p>
39   - </div>
40   - <div class="box box2" v-if="userInfo">
41   - <span @click="createOrder()">支付</span>
42   - </div>
43   - </div>
44   - </div>
45   -</template>
46   -<script>
47   -import ContactBox from './component/ContactBox.vue'
48   -export default {
49   - name: 'ServiceCheckOrder',
50   - data () {
51   - return {
52   - date: '',
53   - period: '',
54   - count: 1,
55   - checked: false,
56   - useCard: '',
57   - orderDetail: '',
58   - selectCombo: '',//当前套餐信息
59   - selectComboUnitName:'',//套餐单位 人或份
60   - showCourseData: '',//当前课程的信息
61   - selectCombo: '',//已选择的套餐
62   - userInfo: '',//支付用
63   - }
64   - },
65   - mounted () {
66   - let userInfo = localStorage.getItem('userInfo');
67   - if (userInfo) {
68   - this.userInfo = JSON.parse(userInfo);
69   - }
70   -
71   - this.date = this.$route.query.date;
72   - this.count = this.$route.query.count;
73   - this.period = this.$route.query.period;
74   -
75   - // 套餐
76   - let selectCombo = localStorage.getItem('selectCombo')
77   - if (selectCombo) {
78   - this.selectCombo = JSON.parse(selectCombo)
79   - }
80   - this.selectComboUnitName = localStorage.getItem('selectComboUnitName')
81   -
82   - // 如果有优惠券,就展示
83   - let useCard = localStorage.getItem('useCard')
84   - let showCourseData = localStorage.getItem('showCourseData')
85   - if (useCard) {
86   - this.useCard = JSON.parse(useCard)
87   - }
88   - if (showCourseData) {
89   - this.showCourseData = JSON.parse(showCourseData)
90   - }
91   - //判断是否为支付会跳,查询订单状态
92   - let outTradeNo = localStorage.getItem('outTradeNo')
93   - if (outTradeNo) {
94   - this.getOrderStatus(outTradeNo)
95   - }
96   - },
97   - computed: {
98   - paymoney () {
99   - let paymoney = (this.selectCombo.actualPrice * 1000 * this.count - (this.useCard.couponPrice * 1000 || 0)) / 1000;
100   - if (paymoney < 0) paymoney = 0;
101   - return paymoney
102   - }
103   - },
104   - methods: {
105   - // 进入选择优惠券
106   - openCardBox () {
107   - this.$router.push({ name: 'ServiceCardSelect' })
108   - },
109   - //购买须知
110   - goPayneed () {
111   - this.$router.push({ name: 'payneed' })
112   - },
113   - // 前往查看协议
114   - goProtocol () {
115   - this.$router.push({ name: 'protocol' })
116   - },
117   - // 创建订单
118   - createOrder () {
119   - // 出行人数量判断
120   - let selectedContactArr = localStorage.getItem('selectedContactArr');
121   - selectedContactArr = JSON.parse(selectedContactArr);
122   - let selAdult = 0;
123   - let selChild = 0;
124   - for(let i in selectedContactArr){
125   - if(selectedContactArr[i].userType==2){
126   - selAdult++
127   - }else{
128   - selChild++
129   - }
130   - }
131   - // 判断选择成人和学生数量是否匹配
132   - if(selAdult!=this.count*this.selectCombo.adultCount||selChild!=this.count*this.selectCombo.chilCount){
133   - this.$toast.fail('请选择正确数量的出行人');
134   - return;
135   - }
136   - // 协议勾选
137   - if (!this.checked) {
138   - this.$toast.fail('请先阅读并同意用户协议');
139   - return;
140   - }
141   -
142   - // 出行人字段格式
143   - let selectedContact = []
144   - for (let i in selectedContactArr) {
145   - selectedContact.push(selectedContactArr[i].travelerNum)
146   - }
147   - selectedContact = selectedContact.join(',')
148   - this.mgop({
149   - api: 'mgop.sz.hswsy.AddOrderPay', // 必须
150   - host: 'https://mapi.zjzwfw.gov.cn/',
151   - dataType: 'JSON',
152   - type: 'POST',
153   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
154   - headers: {
155   - // 'isTestUrl': '1'
156   - },
157   - data: {
158   - "courseId": this.showCourseData.id,
159   - "payway": 2,
160   - "paymoney": this.paymoney,//时段个数*单价*人数-优惠券
161   - "userId": this.userInfo?.centerNo,//升学汇和其他端接口字段不同
162   - "orderCount": this.count,//人数
163   - "orderTime": this.date,//时段集合 2018-10-15
164   - "comboId": this.selectCombo.id,
165   - "dateBindComboId": localStorage.getItem('selectComboBindId'),
166   - "unionId": this.userInfo?.centerNo,
167   - "price": this.selectCombo.actualPrice * 1000 * this.count / 1000,//商品减掉优惠券之前的价格
168   - "travelNum": selectedContact,//出行人编号
169   - "couponId": this.useCard?.id || 0,
170   - },
171   - onSuccess: res => {
172   - if (res.data.data) {
173   - if (this.paymoney == 0) {
174   - // 使用后移除优惠券,防止返回继续使用
175   - localStorage.removeItem('useCard')
176   - this.$router.push({ name: 'ServiceOrderXST', query: { active: 1, showChatGroupUrl: 1 } })
177   - } else {
178   - // 使用后移除优惠券,防止返回继续使用
179   - localStorage.removeItem('useCard')
180   - this.openPay(res.data.data);
181   - this.orderId = res.data.data.orderId;
182   - }
183   - } else {
184   - this.$toast.fail(res.data?.result);
185   - }
186   -
187   - },
188   - onFail: err => {
189   - console.log('err', err)
190   - }
191   - });
192   - },
193   - openPay (data) {
194   - const sUserAgent = window.navigator.userAgent.toLowerCase()
195   - const Jupiter = sUserAgent.indexOf("Jupiter") > -1
196   - if (Jupiter) {
197   - alert('App')
198   - // console.log('App')
199   - // this.mgop({
200   - // api: 'mgop.sz.hswsy.appPay', // 必须
201   - // host: 'https://mapi.zjzwfw.gov.cn/',
202   - // dataType: 'JSON',
203   - // type: 'POST',
204   - // appKey: 'fuxgnukl+2001895516+edccpx', // 必须
205   - // headers: {
206   - // // 'isTestUrl': '1'
207   - // },
208   - // data: {
209   - // "appid": "2021002189681626",
210   - // "attach": "string1",
211   - // "body": "string23",
212   - // "notify_url": "http://47.110.50.251:9091/api/alipay/pay",
213   - // "outTradeNo": new Date().getTime(),
214   - // "payType": 0,
215   - // "payWay": 0,
216   - // "productId": "11",
217   - // "quit_url": location.href,
218   - // "subject": "string",
219   - // "totalFee": "0.01",
220   - // },
221   - // onSuccess: res => {
222   - // console.log(res)
223   - // this.BridgePay(res.data.message)
224   - // },
225   - // onFail: err => {
226   - // console.log('err', err)
227   - // }
228   - // });
229   - } else {
230   - // alert('H5')
231   - console.log('h5')
232   - this.mgop({
233   - api: 'mgop.sz.hswsy.mobilePay', // 必须
234   - host: 'https://mapi.zjzwfw.gov.cn/',
235   - dataType: 'JSON',
236   - type: 'POST',
237   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
238   - headers: {
239   - // 'isTestUrl': '1'
240   - },
241   - data: {
242   - "appid": "2021002189681626",
243   - "attach": this.showCourseData.course_name + '_' + this.date,
244   - "body": this.showCourseData.course_name + '_' + this.date,
245   - "notify_url": "https://yanxue.myjxt.com/api/Manage/AlipayBackInfo",
246   - "outTradeNo": data.trade_no,
247   - "payType": 0,
248   - "payWay": 0,
249   - "productId": this.showCourseData.id, //商品id
250   - "quit_url": location.href,
251   - "subject": this.showCourseData.course_name + '_' + this.date,
252   - "totalFee": this.selectCombo.actualPrice * 1000 * this.count / 1000
253   - },
254   - onSuccess: res => {
255   - console.log(res)
256   - localStorage.setItem('outTradeNo', data.trade_no)
257   - // this.BridgePay(res.data.message)
258   - let divForm = document.getElementsByTagName('divform')
259   - if (divForm.length) {
260   - document.body.removeChild(divForm[0])
261   - }
262   - const div = document.createElement('divform')
263   - div.innerHTML = res.data.message // res.data就是sb支付宝返回给你的form
264   - document.body.appendChild(div)
265   - // document.forms[0].setAttribute('target', '_blank') // 加了_blank可能出问题所以我注释了
266   - document.forms[0].submit()
267   - },
268   - onFail: err => {
269   - console.log('err', err)
270   - }
271   - });
272   - }
273   - },
274   - // 支付API
275   - // BridgePay (credential) {
276   - // var payMsg = {
277   - // platform: 1,
278   - // arg: {
279   - // "credential": credential,
280   - // "inSandBox": false
281   - // }
282   - // };
283   - // ZWJSBridge.pay(payMsg).then((result) => {
284   -
285   - // alert('支付成功!');
286   - // console.log('#### ZWJSBridge.pay() result:' + result);
287   -
288   - // }).catch((error) => {
289   - // var errorMsg = JSON.stringify(error);
290   - // alert('支付失败:' + errorMsg);
291   - // console.log('#### ZWJSBridge.pay() error:' + error);
292   - // });
293   - // },
294   - //判断是否为支付会跳,查询订单状态
295   - getOrderStatus (outTradeNo) {
296   - console.log('getOrderStatus')
297   - this.$toast.loading()
298   - this.mgop({
299   - api: 'mgop.sz.hswsy.IsPayByTradNo', // 必须
300   - host: 'https://mapi.zjzwfw.gov.cn/',
301   - dataType: 'JSON',
302   - type: 'POST',
303   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
304   - headers: {
305   - // 'isTestUrl': '1'
306   - },
307   - data: {
308   - "tradNo": outTradeNo,
309   - },
310   - onSuccess: res => {
311   - console.log(res)
312   - this.$toast.clear()
313   - localStorage.removeItem('outTradeNo')
314   - // 如果已支付就跳转
315   - if (res.data.data) {
316   - localStorage.removeItem('selectedContactArr')
317   - this.$router.push({ name: 'ServiceOrderXST', query: { active: 1, showChatGroupUrl: 1 } })
318   - }
319   - },
320   - onFail: err => {
321   - console.log('err', err)
322   - }
323   - });
324   - }
325   - },
326   - components: {
327   - ContactBox
328   - }
329   -}
330   -</script>
331   -<style lang="scss" scoped>
332   -#checkOrder {
333   - padding-bottom: 260px;
334   - .top_border {
335   - border-top: 16px solid #f6f7fa;
336   - }
337   - .goods_data {
338   - padding: 0 22px;
339   - .top {
340   - padding: 20px 0;
341   - img {
342   - display: inline-block;
343   - width: 124px;
344   - height: 124px;
345   - border-radius: 8px;
346   - }
347   - div {
348   - vertical-align: top;
349   - display: inline-block;
350   - margin-left: 20px;
351   - width: 560px;
352   - }
353   - p {
354   - margin: 0;
355   - }
356   - .goods_title {
357   - font-size: 28px;
358   - font-weight: bold;
359   - }
360   - .package_name {
361   - font-size: 24px;
362   - margin-top: 18px;
363   - }
364   - .count {
365   - font-size: 24px;
366   - }
367   - }
368   - .bottom {
369   - display: flex;
370   - justify-content: space-between;
371   - align-items: center;
372   - padding: 28px 0;
373   - border-top: 2px solid #f2f4f9;
374   - .time {
375   - font-size: 28px;
376   - }
377   - .price {
378   - font-size: 32px;
379   - font-weight: bold;
380   - span {
381   - font-size: 20px;
382   - }
383   - }
384   - }
385   - }
386   - .card {
387   - padding: 0 22px;
388   - height: 98px;
389   - display: flex;
390   - align-items: center;
391   - justify-content: space-between;
392   - font-size: 28px;
393   - font-weight: bold;
394   - .use_card {
395   - font-size: 26px;
396   - color: #f64c37;
397   - // padding: 2px 24px;
398   - // background: #ffecc0;
399   - // border-radius: 8px;
400   - margin-right: 10px;
401   - font-weight: normal;
402   - }
403   - }
404   - .protocol {
405   - display: flex;
406   - align-items: center;
407   - padding: 0 22px;
408   - font-size: 24px;
409   - span {
410   - color: #3f92ff;
411   - margin: 0 4px;
412   - }
413   - }
414   - .Collection {
415   - background-color: white;
416   - position: fixed;
417   - bottom: 0;
418   - left: 0;
419   - width: 100%;
420   - padding: 28px 22px;
421   - box-sizing: border-box;
422   - padding-bottom: 50px;
423   - z-index: 500;
424   - box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.34);
425   -
426   - .box {
427   - display: inline-block;
428   - vertical-align: middle;
429   - color: #666666;
430   - .icon {
431   - display: inline-block;
432   - width: 45%;
433   - text-align: center;
434   - font-size: 24px;
435   - p {
436   - // margin: 0;
437   - color: #999999;
438   - margin-top: 8px;
439   - }
440   - i {
441   - font-size: 48px;
442   - color: rgb(45, 45, 45);
443   - font-weight: bold;
444   - }
445   - }
446   -
447   - > span {
448   - display: inline-block;
449   - width: 100%;
450   - line-height: 92px;
451   - box-sizing: border-box;
452   - border-radius: 100px;
453   - color: white;
454   - font-size: 32px;
455   - background: #4092ff;
456   - text-align: center;
457   - box-shadow: 0px 10px 40px 0px #a0c9ff;
458   - b {
459   - display: inline-block;
460   - vertical-align: middle;
461   - margin-left: 20px;
462   - color: white;
463   - }
464   - i {
465   - vertical-align: middle;
466   - font-size: 44px;
467   - font-weight: bold;
468   - }
469   - }
470   - }
471   - .box1 {
472   - width: 40%;
473   - p {
474   - font-size: 49px;
475   - font-weight: bold;
476   - color: #f64c37;
477   - }
478   - span {
479   - font-size: 32px;
480   - }
481   - del {
482   - font-size: 20px;
483   - color: #999;
484   - }
485   - .coupon {
486   - font-size: 24px;
487   - color: #999;
488   - }
489   - }
490   - .box2 {
491   - width: 60%;
492   - }
493   - }
494   -}
495   -::v-deep .van-calendar__bottom-info {
496   - color: #f95555;
497   -}
498   -::v-deep .van-calendar__selected-day {
499   - background: #ecf2fc !important;
500   - border: 4px solid #79abff;
501   - box-sizing: border-box;
502   - color: #333;
503   -}
504   -.van-checkbox {
505   - display: inline-flex;
506   -}
507   -</style>
508   -<style lang="scss">
509   -.elder {
510   - #checkOrder {
511   - .goods_data {
512   - .top {
513   - img {
514   - width: 200px;
515   - height: 200px;
516   - }
517   - div {
518   - width: 470px;
519   - }
520   - .goods_title {
521   - font-size: 40px;
522   - }
523   - .package_name {
524   - font-size: 36px;
525   - }
526   - .count {
527   - font-size: 36px;
528   - }
529   - }
530   - .bottom {
531   - .time {
532   - font-size: 36px;
533   - }
534   - .price {
535   - font-size: 36px;
536   - span {
537   - font-size: 32px;
538   - }
539   - }
540   - }
541   - }
542   - .card {
543   - font-size: 40px;
544   - }
545   - .protocol {
546   - font-size: 36px;
547   - }
548   - .Collection {
549   - .box1 p {
550   - font-size: 56px;
551   - span {
552   - font-size: 40px;
553   - }
554   - del {
555   - font-size: 40px;
556   - }
557   - }
558   - .box > span {
559   - font-size: 44px;
560   - }
561   - }
562   - }
563   -}
564   -</style>
565 0 \ No newline at end of file
src/views/Service/DatePackage.vue
... ... @@ -1,475 +0,0 @@
1   -<template>
2   - <div id="datePackage" v-if="comboList">
3   - <!-- <div class="tag_item">
4   - <p class="tag_title">商品名称</p>
5   - <p class="package_name">{{showCourseData.course_name}}</p>
6   - </div> -->
7   - <div class="tag_item">
8   - <p class="tag_title">出行时间</p>
9   - <p class="package_name" :class="date?'active':''" @click="showCalendar=true">{{date||'选择日期'}}<van-icon name="arrow" /></p>
10   - <van-calendar v-model="showCalendar" :default-date="defaultDate" @confirm="chooseDate" :show-confirm="false" color="#3F92FF" :formatter="formatCalendar" />
11   - </div>
12   - <div class="tag_item" v-if="date">
13   - <p class="tag_title">行程选择</p>
14   - <div class="period">
15   - <div class="period_item" :class="Index1==index?'active':''" v-for="(item,index) in comboList" :key="index" @click="choosePeriod(index)">行程{{index + 1}} :{{item.dateComboName}}</div>
16   - </div>
17   - </div>
18   - <div class="tag_item" v-if="comboList[Index1]">
19   - <p class="tag_title">成团情况<span class="pintuan_status" v-if="comboList[Index1].clusterName">{{comboList[Index1].clusterName}}</span></p>
20   - <p class="package_name">最低拼团数 {{comboList[Index1].peopleCount}}{{comboList[Index1].unitName}} 已报名{{comboList[Index1].unitName}}数{{numOne}}/{{comboList[Index1].stockCount}}{{comboList[Index1].unitName}}</p>
21   - </div>
22   - <div class="tag_item" v-if="date">
23   - <p class="tag_title">套餐类型</p>
24   - <div class="period">
25   - <div class="period_item" :class="Index2==index?'active':''" v-for="(item,index) in comboList[Index1].comboInfoList" :key="index" @click="choosePeriod2(index)">套餐{{index + 1}} :{{item.comboName}} ¥{{item.actualPrice}}</div>
26   - </div>
27   - </div>
28   - <div class="tag_item">
29   - <div class="tag_title tag_title_flex">
30   - <span>请选择套餐数量</span>
31   - <div class="tag_title_right">
32   - <span class="btn" @click="countReduce">-</span>
33   - <span class="count">{{count}}</span>
34   - <span class="btn" @click="count++">+</span>
35   - </div>
36   - </div>
37   - <div class="package_num">
38   - <span>库存数量({{numSecond}} /</span>
39   - <span class="tint">{{numOne+numSecond}}{{comboList[Index1].unitName}})</span>
40   - </div>
41   - </div>
42   - <p class="package_des" v-if="comboList[Index1].comboInfoList[Index2].comboDescrption">套餐说明<br>{{comboList[Index1].comboInfoList[Index2].comboDescrption}}</p>
43   - <div class="Collection">
44   - <div class="box box1">
45   - <p><span>¥</span>{{comboList[Index1].comboInfoList[Index2].actualPrice*1000*count/1000}} <del>{{comboList[Index1].comboInfoList[Index2].productPrice*1000*count/1000}}</del></p>
46   - </div>
47   - <div class="box box2">
48   - <span @click="checkOrder()">去下单</span>
49   - </div>
50   - </div>
51   -
52   - <van-popup style="background: transparent;" get-container="body" v-model="showSchool" @close='closeSchool'>
53   - <school-add @closeAdd='closeAdd'></school-add>
54   - </van-popup>
55   - </div>
56   -</template>
57   -<script>
58   -import schoolAdd from '@/views/Travel/component/schoolAdd'
59   -export default {
60   - name: 'ServiceDatePackage',
61   - data () {
62   - return {
63   - date: null,
64   - defaultDate: null,
65   - packageData: '',
66   - showCourseData: '',
67   - comboList: '',
68   - Index1: 0,//选中的档期
69   - Index2: 0,//选中的套餐
70   - showCalendar: false,
71   - count: 1,
72   - days: 1,
73   - numOne: 0,
74   - numSecond: 0,
75   - showSchool: false
76   - }
77   - },
78   - mounted () {
79   - localStorage.removeItem('selectedContactArr')
80   - // date 日期
81   - const date = this.$route.query.date;
82   - if (date) {
83   - this.date = date
84   - this.defaultDate = new Date(date)
85   - }
86   - // 缓存中读取排期
87   - let packageData = localStorage.getItem('packageData')
88   - if (packageData) {
89   - this.packageData = JSON.parse(packageData)
90   -
91   - console.log(this.packageData)
92   - if (this.date) {
93   - this.setComboList()
94   - }
95   - }
96   - // 当前的商品信息
97   - let showCourseData = localStorage.getItem('showCourseData')
98   - if (showCourseData) {
99   - this.showCourseData = JSON.parse(showCourseData)
100   - }
101   - console.log(showCourseData)
102   - },
103   - methods: {
104   - // 获取库存
105   - GetOrderPayCount (bindId) {
106   - let showCourseData = JSON.parse(localStorage.getItem('showCourseData'))
107   - this.mgop({
108   - api: 'mgop.sz.hswsy.OrderPayCount', // 必须
109   - host: 'https://mapi.zjzwfw.gov.cn/',
110   - dataType: 'JSON',
111   - type: 'GET',
112   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
113   - headers: {
114   - // 'isTestUrl': '1'
115   - },
116   - data: {
117   - "bindId":bindId,
118   - "productId": showCourseData.id,
119   - "startDate": this.date,
120   - },
121   - onSuccess: res => {
122   - if (res.data.data) {
123   - this.numOne = res.data.data
124   - }
125   - },
126   - onFail: err => {
127   - console.log('err', err)
128   - }
129   - });
130   - },
131   - // 获取库存第二个参数
132   - getSurplusComboCount (bindId) {
133   - let showCourseData = JSON.parse(localStorage.getItem('showCourseData'))
134   - this.mgop({
135   - api: 'mgop.sz.hswsy.SurplusComboCount', // 必须
136   - host: 'https://mapi.zjzwfw.gov.cn/',
137   - dataType: 'JSON',
138   - type: 'GET',
139   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
140   - headers: {
141   - // 'isTestUrl': '1'
142   - },
143   - data: {
144   - "bindId": bindId,
145   - "productId": showCourseData.id,
146   - "startDate": this.date,
147   - },
148   - onSuccess: res => {
149   - if (res.data.data) {
150   - this.numSecond = res.data.data
151   - }
152   - },
153   - onFail: err => {
154   - console.log('err', err)
155   - }
156   - });
157   - },
158   - // 选择排期
159   - choosePeriod (index) {
160   - this.Index1 = index;
161   - this.Index2 = 0;
162   - let bindId = this.comboList[index].id
163   - console.log(this.comboList[index])
164   - this.GetOrderPayCount(bindId)
165   - this.getSurplusComboCount(bindId)
166   - },
167   - // 选择套餐
168   - choosePeriod2 (index) {
169   - this.Index2 = index;
170   - },
171   - // 选择日期
172   - chooseDate (date) {
173   - let canChoose = false
174   - for (let i in this.packageData) {
175   - if (this.Moment(date, 'YYYY-MM-DD').format('YYYY-MM-DD') == this.Moment(this.packageData[i].dayName, 'YYYY-MM-DD').format('YYYY-MM-DD')) {
176   - canChoose = true;
177   - }
178   - }
179   - if (!canChoose) {
180   - this.$toast('当前日期无可选套餐')
181   - return;
182   - }
183   - this.date = this.Moment(date, 'YYYY-MM-DD').format('YYYY-MM-DD')
184   - this.Index1 = 0;
185   - this.Index2 = 0;
186   - this.showCalendar = false;
187   - this.setComboList()
188   - },
189   - // 设置日历文字
190   - formatCalendar (day) {
191   - // console.log(day)
192   - for (let i in this.packageData) {
193   - if (this.Moment(day.date, 'YYYY-MM-DD').format('YYYY-MM-DD') == this.Moment(this.packageData[i].dayName, 'YYYY-MM-DD').format('YYYY-MM-DD')) {
194   - day.bottomInfo = '¥' + this.packageData[i].comboList[0].comboInfoList[0].actualPrice;
195   - }
196   - }
197   - return day;
198   - },
199   - // 根据日期设置套餐
200   - setComboList () {
201   - for (let i in this.packageData) {
202   - if (this.Moment(this.packageData[i].dayName, 'YYYY-MM-DD').format(('YYYY-MM-DD')) == this.date) {
203   - let comboList = this.packageData[i].comboList;
204   - this.comboList = comboList
205   - let bindId = comboList[this.Index1].id
206   - this.days = this.packageData[i].days
207   - this.GetOrderPayCount(bindId)
208   - this.getSurplusComboCount(bindId)
209   - break;
210   - }
211   - }
212   - },
213   - // 减少数量
214   - countReduce () {
215   - if (this.count > 1) {
216   - this.count--
217   - }
218   - },
219   -
220   - checkOrder () {
221   - if (this.count > this.numSecond) {
222   - this.$toast('库存不足');
223   -
224   - } else {
225   - const query = {
226   - date: this.date,
227   - count: this.count
228   - }
229   - localStorage.setItem('selectCombo', JSON.stringify(this.comboList[this.Index1].comboInfoList[this.Index2]))
230   - localStorage.setItem('selectComboBindId', JSON.stringify(this.comboList[this.Index1].id))
231   - localStorage.setItem('selectComboUnitName', this.comboList[this.Index1].unitName)
232   - this.$router.push({ name: 'ServiceCheckOrder', query: query })
233   - }
234   - },
235   - closeSchool () {
236   - if (localStorage.getItem('schoolNames') == 'undefined' || !localStorage.getItem('schoolNames')) {
237   - // this.showSchool = true
238   - }
239   - },
240   - closeAdd () {
241   - this.showSchool = false
242   - }
243   - },
244   - components: {
245   - schoolAdd
246   - }
247   -}
248   -</script>
249   -<style lang="scss" scoped>
250   -#datePackage {
251   - padding-top: 40px;
252   - .tag_item {
253   - padding: 22px;
254   - .tag_title {
255   - font-size: 34px;
256   - font-weight: bold;
257   - margin-top: 0;
258   - margin-bottom: 32px;
259   - display: flex;
260   - align-items: center;
261   - .pintuan_status {
262   - font-size: 24px;
263   - padding: 2px 10px;
264   - background: #ffe9b1;
265   - border-radius: 6px;
266   - margin-left: 12px;
267   - }
268   - }
269   - .package_name {
270   - display: flex;
271   - justify-content: space-between;
272   - font-size: 28px;
273   - width: 100%;
274   - background: #f5f6fa;
275   - border-radius: 12px;
276   - padding: 20px 18px;
277   - box-sizing: border-box;
278   - margin: 0;
279   - &.active {
280   - background: #3f92ff;
281   - color: #fff;
282   - }
283   - }
284   - // 时间段
285   - .period {
286   - .period_item {
287   - padding: 10px 20px;
288   - font-size: 28px;
289   - margin-bottom: 15px;
290   - text-align: left;
291   - background: #f5f6fa;
292   - border-radius: 10px;
293   - box-sizing: border-box;
294   - &.active {
295   - background: #3f92ff;
296   - color: #fff;
297   - }
298   - }
299   - }
300   - .tag_title_flex {
301   - display: flex;
302   - justify-content: space-between;
303   - align-items: center;
304   - margin-bottom: 0;
305   - padding: 50px 0;
306   - .tag_title_right {
307   - display: flex;
308   - align-items: center;
309   - }
310   - .btn {
311   - width: 48px;
312   - height: 48px;
313   - background: #f5f6fa;
314   - border-radius: 10px;
315   - font-size: 32px;
316   - line-height: 48px;
317   - text-align: center;
318   - }
319   - .count {
320   - width: 100px;
321   - text-align: center;
322   - font-size: 32px;
323   - }
324   - }
325   - .package_num {
326   - font-size: 30px;
327   - width: 50%;
328   - float: right;
329   - text-align: right;
330   - border-radius: 12px;
331   - padding: 0px 18px;
332   - box-sizing: border-box;
333   - .tint {
334   - font-size: 30px;
335   - font-weight: normal;
336   - color: #909399;
337   - }
338   - }
339   - }
340   - .package_des {
341   - margin: 0 24px;
342   - margin-top: 28px;
343   - padding: 20px 0;
344   - font-size: 26px;
345   - line-height: 40px;
346   - color: #a9a9aa;
347   - border-top: 1px solid #e2e7ee;
348   - }
349   - .Collection {
350   - background-color: white;
351   - position: fixed;
352   - bottom: 0;
353   - left: 0;
354   - width: 100%;
355   - padding: 28px 22px;
356   - box-sizing: border-box;
357   - padding-bottom: 50px;
358   - z-index: 500;
359   - box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.34);
360   -
361   - .box {
362   - display: inline-block;
363   - vertical-align: middle;
364   - color: #666666;
365   - .icon {
366   - display: inline-block;
367   - width: 45%;
368   - text-align: center;
369   - font-size: 24px;
370   - p {
371   - // margin: 0;
372   - color: #999999;
373   - margin-top: 8px;
374   - }
375   - i {
376   - font-size: 48px;
377   - color: rgb(45, 45, 45);
378   - font-weight: bold;
379   - }
380   - }
381   -
382   - > span {
383   - display: inline-block;
384   - width: 100%;
385   - line-height: 92px;
386   - box-sizing: border-box;
387   - border-radius: 100px;
388   - color: white;
389   - font-size: 32px;
390   - background: #4092ff;
391   - text-align: center;
392   - box-shadow: 0px 10px 40px 0px #a0c9ff;
393   - b {
394   - display: inline-block;
395   - vertical-align: middle;
396   - margin-left: 20px;
397   - color: white;
398   - }
399   - i {
400   - vertical-align: middle;
401   - font-size: 44px;
402   - font-weight: bold;
403   - }
404   - }
405   - }
406   - .box1 {
407   - width: 40%;
408   - p {
409   - font-size: 49px;
410   - font-weight: bold;
411   - color: #f64c37;
412   - }
413   - span {
414   - font-size: 32px;
415   - }
416   - del {
417   - font-size: 20px;
418   - color: #999;
419   - }
420   - }
421   - .box2 {
422   - width: 60%;
423   - }
424   - }
425   -}
426   -::v-deep .van-calendar__bottom-info {
427   - color: #f95555;
428   -}
429   -::v-deep .van-calendar__selected-day {
430   - background: #ecf2fc !important;
431   - border: 4px solid #79abff;
432   - box-sizing: border-box;
433   - color: #333;
434   -}
435   -</style>
436   -<style lang="scss">
437   -.elder {
438   - #datePackage {
439   - .tag_item {
440   - .tag_title {
441   - font-size: 44px;
442   - }
443   - .package_name {
444   - font-size: 40px;
445   - }
446   - .period .period_item {
447   - font-size: 40px;
448   - }
449   - .tag_title_flex .count {
450   - font-size: 40px;
451   - }
452   - .package_num {
453   - font-size: 40px;
454   - .tint {
455   - font-size: 40px;
456   - }
457   - }
458   - }
459   - .Collection {
460   - .box1 p {
461   - font-size: 56px;
462   - span {
463   - font-size: 40px;
464   - }
465   - del {
466   - font-size: 40px;
467   - }
468   - }
469   - .box > span {
470   - font-size: 44px;
471   - }
472   - }
473   - }
474   -}
475   -</style>
476 0 \ No newline at end of file
src/views/Service/EditContact.vue
... ... @@ -22,7 +22,7 @@
22 22 </template>
23 23 <script>
24 24 export default {
25   - data () {
  25 + data() {
26 26 return {
27 27 id: '',
28 28 userType: '',
... ... @@ -32,16 +32,16 @@ export default {
32 32 gender: '',
33 33 travelerIdCard: '',
34 34 travelerNum: '',
35   - isAdd: false,//是否为新增家长(新增学生不在此页面)
  35 + isAdd: false, //是否为新增家长(新增学生不在此页面)
36 36 }
37 37 },
38   - mounted () {
  38 + mounted() {
39 39 let editContact = JSON.parse(localStorage.getItem('editContact'))
40 40 if (this.$route.query.add) {
41 41 console.log('新增家长')
42   - this.userType = 2;
  42 + this.userType = 2
43 43 this.userTypeName = '家长'
44   - this.isAdd = true;
  44 + this.isAdd = true
45 45 } else {
46 46 this.userType = editContact?.userType
47 47 this.userTypeName = editContact?.userType == 1 ? '学生' : '家长'
... ... @@ -63,86 +63,72 @@ export default {
63 63 },
64 64 methods: {
65 65 // 确认
66   - addContact () {
  66 + addContact() {
67 67 if (!this.gender) {
68 68 this.$toast('请选择性别')
69   - return;
  69 + return
70 70 }
71 71 if (!this.phone) {
72 72 this.$toast('请输入手机号')
73   - return;
  73 + return
74 74 }
75 75 if (!this.checkPhone(this.phone)) {
76 76 this.$toast('请输入正确的手机号')
77   - return;
  77 + return
78 78 }
79 79 if (!this.travelerIdCard) {
80   - this.$toast('请输入身份证');
81   - return;
  80 + this.$toast('请输入身份证')
  81 + return
82 82 }
83 83 if (!this.checkCard(this.travelerIdCard)) {
84 84 this.$toast('请输入正确的身份证号')
85   - return;
  85 + return
86 86 }
87 87 let userInfo = localStorage.getItem('userInfo')
88   - userInfo = userInfo ? JSON.parse(userInfo) : userInfo;
  88 + userInfo = userInfo ? JSON.parse(userInfo) : userInfo
89 89 let postData = {
90 90 contactsName: this.travelerName,
91 91 contactsMobile: this.phone,
92 92 contactsIdCard: this.travelerIdCard,
93 93 contactsType: this.userType,
94 94 gender: Number(this.gender),
95   - loginMobile: userInfo?.phone
96   - };
97   - if (!this.isAdd) {//新增学生或家长
98   - postData.userNum = this.travelerNum;
  95 + loginMobile: userInfo?.phone,
  96 + }
  97 + if (!this.isAdd) {
  98 + //新增学生或家长
  99 + postData.userNum = this.travelerNum
99 100 }
100 101 this.$toast.loading({
101 102 message: '加载中',
102 103 duration: 0,
103   - forbidClick: true
  104 + forbidClick: true,
104 105 })
105   - this.mgop({
106   - api: 'mgop.sz.hswsy.addContacts', // 必须
107   - host: 'https://mapi.zjzwfw.gov.cn/',
108   - dataType: 'JSON',
109   - type: 'GET',
110   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
111   - headers: {
112   - // 'isTestUrl': '1'
113   - },
114   - data: postData,
115   - onSuccess: res => {
116   - this.$toast.clear()
117   - if (res.data.code == 200) {
118   - this.$toast.success('完善成功')
119   - this.$router.back()
120   - } else {
121   - this.$toast.fail(res.message)
122   - }
123   - },
124   - onFail: err => {
125   - console.log('err', err)
  106 + this.yxAxios.post(`${this.proxyUrl}/user/info/addContacts`, postData).then((res) => {
  107 + this.$toast.clear()
  108 + if (res.data.code == 200) {
  109 + this.$toast.success('完善成功')
  110 + this.$router.back()
  111 + } else {
  112 + this.$toast.fail(res.message)
126 113 }
127   - });
  114 + })
128 115 },
129   - checkPhone (phone) {
130   - if ((/^1[3456789]\d{9}$/.test(phone))) {
  116 + checkPhone(phone) {
  117 + if (/^1[3456789]\d{9}$/.test(phone)) {
131 118 return true
132 119 } else {
133 120 return false
134 121 }
135 122 },
136   - checkCard (card) {
  123 + checkCard(card) {
137 124 // 18位身份证校验
138   - if ((/^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(card))) {
  125 + if (/^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(card)) {
139 126 return true
140 127 } else {
141 128 return false
142 129 }
143 130 },
144   - }
145   -
  131 + },
146 132 }
147 133 </script>
148 134 <style lang="scss" scoped>
... ... @@ -180,4 +166,4 @@ export default {
180 166 border-radius: 45px;
181 167 }
182 168 }
183   -</style>
184 169 \ No newline at end of file
  170 +</style>
... ...
src/views/Service/SelectContact.vue
1 1 <template>
2 2 <div id="selectContact">
3 3 <div class="control">
4   - <div class="add_btn" @click="showAddChildPopupGroup=true">
  4 + <div class="add_btn" @click="showAddChildPopupGroup = true">
5 5 <van-icon name="add-o" />
6 6 新增学生
7 7 </div>
... ... @@ -11,21 +11,20 @@
11 11 </div>
12 12 </div>
13 13 <div class="box">
14   - <template v-for="(item,index) in contactList">
15   - <div class="contact_item" v-if="!hideParent&&item.userType!=1||item.userType==1" :key="index">
  14 + <template v-for="(item, index) in contactList">
  15 + <div class="contact_item" v-if="(!hideParent && item.userType != 1) || item.userType == 1" :key="index">
16 16 <van-checkbox class="checkbox" v-model="item.checked" shape="square"></van-checkbox>
17 17 <div class="info">
18   - <p class="name">{{item.travelerName}}<span v-if="!item.travelerIdCard||!item.gender">需完善</span></p>
19   - <p class="des">{{item.userType==1?'学生':'家长'}}·{{showPhone(item.travelerMobile)}}</p>
  18 + <p class="name">{{ item.travelerName }}<span v-if="!item.travelerIdCard || !item.gender">需完善</span></p>
  19 + <p class="des">{{ item.userType == 1 ? '学生' : '家长' }}·{{ showPhone(item.travelerMobile) }}</p>
20 20 </div>
21 21 <van-icon class="edit" name="edit" @click="editContact(index)" />
22 22 </div>
23 23 </template>
24   -
25 24 </div>
26 25 <van-button class="btn" type="primary" @click="selectContact">确定</van-button>
27 26 <van-popup style="background: transparent;" get-container="body" v-model="showAddChildPopupGroup">
28   - <AddChildPopupGroup @complete="complete" step='1'></AddChildPopupGroup>
  27 + <AddChildPopupGroup @complete="complete" step="1"></AddChildPopupGroup>
29 28 </van-popup>
30 29 </div>
31 30 </template>
... ... @@ -33,64 +32,48 @@
33 32 import AddChildPopupGroup from '@/views/Home/component/AddChildPopupGroup'
34 33 import IdentityCodeValid from '@/common/validateIdent'
35 34 export default {
36   - data () {
  35 + data() {
37 36 return {
38   - limit: '',//数量
  37 + limit: '', //数量
39 38 hideParent: false,
40 39 contactList: [],
41   - showAddChildPopupGroup: false
  40 + showAddChildPopupGroup: false,
42 41 }
43 42 },
44   - mounted () {
45   - this.limit = this.$route.query.limit;
46   - this.hideParent = this.$route.query.hideParent ? true : false;
  43 + mounted() {
  44 + this.limit = this.$route.query.limit
  45 + this.hideParent = this.$route.query.hideParent ? true : false
47 46 this.getContactList()
48 47 },
49 48 methods: {
50 49 // 获取联系人列表
51   - getContactList () {
  50 + getContactList() {
52 51 this.$toast.loading({
53 52 message: '加载中...',
54 53 duration: 0,
55   - forbidClick: true
  54 + forbidClick: true,
56 55 })
57   - this.mgop({
58   - api: 'mgop.sz.hswsy.getPortalUserByNum', // 必须
59   - host: 'https://mapi.zjzwfw.gov.cn/',
60   - dataType: 'JSON',
61   - type: 'GET',
62   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
63   - headers: {
64   - // 'isTestUrl': '1'
65   - },
66   - data: {
67   - "userNum": localStorage.getItem('centerNo')
68   - },
69   - onSuccess: res => {
70   - console.log('联系人列表:', res)
71   - this.$toast.clear()
72   - if (res.data.code == 200) {
73   - let userInfo = res.data.data.userInfo;
74   - let contactList = userInfo.subUsers
75   - // 把家长添加到列表
76   - contactList.unshift({
77   - travelerMobile: userInfo?.phone,
78   - travelerNum: userInfo?.centerNo,
79   - travelerIdCard: userInfo?.idCard,
80   - userType: 2,
81   - travelerName: userInfo?.nickName,
82   - gender: userInfo?.gender,
83   - })
84   - this.contactList = contactList
85   - }
86   - },
87   - onFail: err => {
88   - console.log('err', err)
  56 + this.yxAxios.get(`${this.proxyUrl}/user/info/getPortalUserByNum?userNum=${localStorage.getItem('centerNo')}`).then((res) => {
  57 + console.log('联系人列表:', res)
  58 + this.$toast.clear()
  59 + if (res.data.code == 200) {
  60 + let userInfo = res.data.data.userInfo
  61 + let contactList = userInfo.subUsers
  62 + // 把家长添加到列表
  63 + contactList.unshift({
  64 + travelerMobile: userInfo?.phone,
  65 + travelerNum: userInfo?.centerNo,
  66 + travelerIdCard: userInfo?.idCard,
  67 + userType: 2,
  68 + travelerName: userInfo?.nickName,
  69 + gender: userInfo?.gender,
  70 + })
  71 + this.contactList = contactList
89 72 }
90   - });
  73 + })
91 74 },
92 75 // 修改联系人
93   - editContact (index) {
  76 + editContact(index) {
94 77 let contactItem = this.contactList[index]
95 78 let editContact = {
96 79 travelerMobile: contactItem.travelerMobile,
... ... @@ -104,25 +87,25 @@ export default {
104 87 this.$router.push({ name: 'EditContact' })
105 88 },
106 89 // 添加家长
107   - addContact () {
  90 + addContact() {
108 91 this.$router.push({ name: 'EditContact', query: { add: 1 } })
109 92 },
110   - complete () {
111   - this.showAddChildPopupGroup = false;
  93 + complete() {
  94 + this.showAddChildPopupGroup = false
112 95 this.getContactList()
113 96 },
114 97 // 选择联系人完成
115   - selectContact () {
116   - let contactList = this.contactList;
117   - let selectedArr = [];
  98 + selectContact() {
  99 + let contactList = this.contactList
  100 + let selectedArr = []
118 101 for (let i in contactList) {
119 102 if (contactList[i]?.checked) {
120 103 if ((!contactList[i].travelerIdCard || !contactList[i].gender) && !this.hideParent) {
121 104 this.$toast('请先完善您选择的出行人信息')
122   - return;
  105 + return
123 106 } else if (!IdentityCodeValid(contactList[i].travelerIdCard)) {
124 107 this.$toast(`${contactList[i].travelerName}的身份证有误,请重新完善修改`)
125   - return;
  108 + return
126 109 } else {
127 110 selectedArr.push({
128 111 travelerName: contactList[i].travelerName,
... ... @@ -136,7 +119,7 @@ export default {
136 119 }
137 120 console.log(this.limit, selectedArr.length)
138 121 // 判断是否选择学生
139   - let hasStudent = false;
  122 + let hasStudent = false
140 123 for (let i in selectedArr) {
141 124 if (selectedArr[i].userType == 1) {
142 125 hasStudent = true
... ... @@ -146,22 +129,21 @@ export default {
146 129 this.$dialog.alert({
147 130 title: '温馨提示',
148 131 message: '活动参与主体为学生本人,请选择出行学生!未绑定学生,请新增出行学生进行添加。',
149   - confirmButtonColor: '#3385FF'
  132 + confirmButtonColor: '#3385FF',
150 133 })
151   - return;
  134 + return
152 135 }
153 136 // console.log(selectedArr)
154 137 localStorage.setItem('selectedContactArr', JSON.stringify(selectedArr))
155 138 this.$router.back()
156 139 },
157   - showPhone(phone){
158   - return phone.replace(/^(\d{3})\d{4}(\d+)/,"$1****$2")
159   - }
  140 + showPhone(phone) {
  141 + return phone.replace(/^(\d{3})\d{4}(\d+)/, '$1****$2')
  142 + },
160 143 },
161 144 components: {
162   - AddChildPopupGroup
163   - }
164   -
  145 + AddChildPopupGroup,
  146 + },
165 147 }
166 148 </script>
167 149 <style lang="scss" scoped>
... ... @@ -266,4 +248,4 @@ export default {
266 248 }
267 249 }
268 250 }
269   -</style>
270 251 \ No newline at end of file
  252 +</style>
... ...
src/views/Service/ServiceBaseKQ.vue
1 1 <template>
2 2 <div id="serviceKQ">
3   - <div v-show="tabName == 'ZZY'">
4   - <div class="container" style="top:0">
5   - <van-swipe class="service_swipe" :loop="true" :show-indicators="false">
6   - <!-- <van-swipe-item @click="handleBanner"> -->
7   - <van-swipe-item>
8   - <img style="width:100vw" src="@/assets/service/banner3.jpg" alt="" />
9   - </van-swipe-item>
10   - </van-swipe>
11   - <img class="card_zzy" src="@/assets/service/card_zzy.png" alt="" @click="handleMyCard" />
12   - <img class="order_btn" src="@/assets/service/order.png" alt="" @click="handleMyOrder" />
13   - <van-pull-refresh v-model="loading" @refresh="onRefresh('campList')">
14   - <ServiceListFour :list="campList" :notab="false"></ServiceListFour>
15   - </van-pull-refresh>
16   - </div>
  3 + <div class="swipeDiv">
  4 + <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
  5 + <van-swipe-item>
  6 + <img src="@/assets/keqiao/kq_main1.png" style="width:100%;height:100%" />
  7 + </van-swipe-item>
  8 + <van-swipe-item>
  9 + <img src="@/assets/keqiao/kq_main2.png" style="width:100%;height:100%" />
  10 + </van-swipe-item>
  11 + </van-swipe>
17 12 </div>
18   - <div v-show="tabName == 'KQ'">
19   - <div class="swipeDiv">
20   - <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
21   - <van-swipe-item>
22   - <img src="@/assets/keqiao/kq_main1.png" style="width:100%;height:100%" />
23   - </van-swipe-item>
24   - <van-swipe-item>
25   - <img src="@/assets/keqiao/kq_main2.png" style="width:100%;height:100%" />
26   - </van-swipe-item>
27   - </van-swipe>
28   - </div>
29   - <div class="container" style="margin-bottom:10">
30   - <!-- 顶部搜索、扫一扫、个人中心 -->
31   - <van-sticky>
32   - <!-- <div class="top_tool">
  13 + <div class="container" style="margin-bottom:10">
  14 + <!-- 顶部搜索、扫一扫、个人中心 -->
  15 + <van-sticky>
  16 + <!-- <div class="top_tool">
33 17 <van-search class="search" v-model="search" shape="round" background="transparent" left-icon="" right-icon="search" placeholder="搜索活动、研学旅行、服务" @search="onSearch" />
34 18 </div> -->
35   - <div class="redLink" @click="handleRedLink">
36   - <img src="@/assets/keqiao/redlink.png" alt="" />
37   - </div>
38   - </van-sticky>
39   - <div class="tabsCard">
40   - <van-tabs v-model="active" sticky offset-top="19.73vw" z-index="100" :ellipsis="false" :before-change="beforeChange" ref="tabs">
41   - <van-tab title="革命遗址">
42   - <van-pull-refresh v-model="loading" @refresh="onRefresh('uniList')">
43   - <ServiceListThird :list="uniList" :notab="true"></ServiceListThird>
44   - </van-pull-refresh>
45   - </van-tab>
46   - <van-tab title="文化传承">
47   - <van-pull-refresh v-model="loading" @refresh="onRefresh('weekList')">
48   - <ServiceListThird :list="weekList" :notab="true"></ServiceListThird>
49   - </van-pull-refresh>
50   - </van-tab>
51   - <van-tab title="红色军旅">
52   - <van-pull-refresh v-model="loading" @refresh="onRefresh('cityList')">
53   - <ServiceListThird :list="cityList" :notab="true"></ServiceListThird>
54   - </van-pull-refresh>
55   - </van-tab>
56   - <van-tab title="共同富裕">
57   - <van-pull-refresh v-model="loading" @refresh="onRefresh('selectList')">
58   - <ServiceListThird :list="selectList" :notab="true"></ServiceListThird>
59   - </van-pull-refresh>
60   - </van-tab>
61   - <van-tab title="大好河山">
62   - <van-pull-refresh v-model="loading" @refresh="onRefresh('riverList')">
63   - <ServiceListThird :list="riverList" :notab="true"></ServiceListThird>
64   - </van-pull-refresh>
65   - </van-tab>
66   - </van-tabs>
  19 + <div class="redLink" @click="handleRedLink">
  20 + <img src="@/assets/keqiao/redlink.png" alt="" />
67 21 </div>
  22 + </van-sticky>
  23 + <div class="tabsCard">
  24 + <van-tabs v-model="active" sticky offset-top="19.73vw" z-index="100" :ellipsis="false" :before-change="beforeChange" ref="tabs">
  25 + <van-tab title="革命遗址">
  26 + <van-pull-refresh v-model="loading" @refresh="onRefresh('uniList')">
  27 + <ServiceListThird :list="uniList" :notab="true"></ServiceListThird>
  28 + </van-pull-refresh>
  29 + </van-tab>
  30 + <van-tab title="文化传承">
  31 + <van-pull-refresh v-model="loading" @refresh="onRefresh('weekList')">
  32 + <ServiceListThird :list="weekList" :notab="true"></ServiceListThird>
  33 + </van-pull-refresh>
  34 + </van-tab>
  35 + <van-tab title="红色军旅">
  36 + <van-pull-refresh v-model="loading" @refresh="onRefresh('cityList')">
  37 + <ServiceListThird :list="cityList" :notab="true"></ServiceListThird>
  38 + </van-pull-refresh>
  39 + </van-tab>
  40 + <van-tab title="共同富裕">
  41 + <van-pull-refresh v-model="loading" @refresh="onRefresh('selectList')">
  42 + <ServiceListThird :list="selectList" :notab="true"></ServiceListThird>
  43 + </van-pull-refresh>
  44 + </van-tab>
  45 + <van-tab title="大好河山">
  46 + <van-pull-refresh v-model="loading" @refresh="onRefresh('riverList')">
  47 + <ServiceListThird :list="riverList" :notab="true"></ServiceListThird>
  48 + </van-pull-refresh>
  49 + </van-tab>
  50 + </van-tabs>
68 51 </div>
69 52 </div>
70 53  
... ... @@ -135,16 +118,8 @@ export default {
135 118 // 革命遗址
136 119 getUniList() {
137 120 this.$toast.loading()
138   - this.mgop({
139   - api: 'mgop.sz.hswsy.qxyList', // 必须
140   - host: 'https://mapi.zjzwfw.gov.cn/',
141   - dataType: 'JSON',
142   - type: 'POST',
143   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
144   - headers: {
145   - // 'isTestUrl': '1'
146   - },
147   - data: {
  121 + this.yxAxios
  122 + .post(`${this.yanxueUrl}/api/StudiesWap/SpecialCourse/List`, {
148 123 area: '',
149 124 province: '',
150 125 city: '',
... ... @@ -153,10 +128,9 @@ export default {
153 128 productTypeId: 'BQ0001',
154 129 businessTypeId: 'BQ0001',
155 130 channelCode: '',
156   - },
157   - onSuccess: (data) => {
158   - this.$toast.clear()
159   - let uniList = data.data.data
  131 + })
  132 + .then((res) => {
  133 + let uniList = res.data.data
160 134 for (let i in uniList) {
161 135 uniList[i].course_labels = uniList[i].course_labels?.split(',')
162 136 if (uniList[i].startDate) {
... ... @@ -167,25 +141,14 @@ export default {
167 141 }
168 142 this.loading = false
169 143 this.uniList = uniList
170   - console.log('革命遗址:', data)
171   - },
172   - onFail: (err) => {
173   - console.log('err', err)
174   - },
175   - })
  144 + console.log('革命遗址:', uniList)
  145 + })
176 146 },
177 147 // 文化传承
178 148 getWeekList() {
179   - this.mgop({
180   - api: 'mgop.sz.hswsy.qxyList', // 必须
181   - host: 'https://mapi.zjzwfw.gov.cn/',
182   - dataType: 'JSON',
183   - type: 'POST',
184   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
185   - headers: {
186   - // 'isTestUrl': '1'
187   - },
188   - data: {
  149 + this.$toast.loading()
  150 + this.yxAxios
  151 + .post(`${this.yanxueUrl}/api/StudiesWap/SpecialCourse/List`, {
189 152 area: '',
190 153 province: '',
191 154 city: '',
... ... @@ -194,9 +157,9 @@ export default {
194 157 productTypeId: 'BQ0002',
195 158 businessTypeId: 'BQ0001',
196 159 channelCode: '',
197   - },
198   - onSuccess: (data) => {
199   - let weekList = data.data.data
  160 + })
  161 + .then((res) => {
  162 + let weekList = res.data.data
200 163 for (let i in weekList) {
201 164 weekList[i].course_labels = weekList[i].course_labels?.split(',')
202 165 if (weekList[i].startDate) {
... ... @@ -208,24 +171,13 @@ export default {
208 171 this.loading = false
209 172 this.weekList = weekList
210 173 console.log('文化传承:', weekList)
211   - },
212   - onFail: (err) => {
213   - console.log('err', err)
214   - },
215   - })
  174 + })
216 175 },
217 176 // 红色军旅
218 177 getCityList() {
219   - this.mgop({
220   - api: 'mgop.sz.hswsy.qxyList', // 必须
221   - host: 'https://mapi.zjzwfw.gov.cn/',
222   - dataType: 'JSON',
223   - type: 'POST',
224   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
225   - headers: {
226   - // 'isTestUrl': '1'
227   - },
228   - data: {
  178 + this.$toast.loading()
  179 + this.yxAxios
  180 + .post(`${this.yanxueUrl}/api/StudiesWap/SpecialCourse/List`, {
229 181 area: '',
230 182 province: '',
231 183 city: '',
... ... @@ -234,9 +186,9 @@ export default {
234 186 productTypeId: 'BQ0003',
235 187 businessTypeId: 'BQ0001',
236 188 channelCode: '',
237   - },
238   - onSuccess: (data) => {
239   - let cityList = data.data.data
  189 + })
  190 + .then((res) => {
  191 + let cityList = res.data.data
240 192 for (let i in cityList) {
241 193 cityList[i].course_labels = cityList[i].course_labels?.split(',')
242 194 if (cityList[i].startDate) {
... ... @@ -248,24 +200,13 @@ export default {
248 200 this.loading = false
249 201 this.cityList = cityList
250 202 console.log('红色军旅:', cityList)
251   - },
252   - onFail: (err) => {
253   - console.log('err', err)
254   - },
255   - })
  203 + })
256 204 },
257 205 // 乡村振新
258 206 getSelectList() {
259   - this.mgop({
260   - api: 'mgop.sz.hswsy.qxyList', // 必须
261   - host: 'https://mapi.zjzwfw.gov.cn/',
262   - dataType: 'JSON',
263   - type: 'POST',
264   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
265   - headers: {
266   - // 'isTestUrl': '1'
267   - },
268   - data: {
  207 + this.$toast.loading()
  208 + this.yxAxios
  209 + .post(`${this.yanxueUrl}/api/StudiesWap/SpecialCourse/List`, {
269 210 area: '',
270 211 province: '',
271 212 city: '',
... ... @@ -274,9 +215,9 @@ export default {
274 215 productTypeId: 'BQ0004',
275 216 businessTypeId: 'BQ0001',
276 217 channelCode: '',
277   - },
278   - onSuccess: (data) => {
279   - let selectList = data.data.data
  218 + })
  219 + .then((res) => {
  220 + let selectList = res.data.data
280 221 for (let i in selectList) {
281 222 selectList[i].course_labels = selectList[i].course_labels?.split(',')
282 223 if (selectList[i].startDate) {
... ... @@ -288,24 +229,13 @@ export default {
288 229 this.loading = false
289 230 this.selectList = selectList
290 231 console.log('乡村振新:', selectList)
291   - },
292   - onFail: (err) => {
293   - console.log('err', err)
294   - },
295   - })
  232 + })
296 233 },
297 234 // 大好河山
298 235 getRiverList() {
299   - this.mgop({
300   - api: 'mgop.sz.hswsy.qxyList', // 必须
301   - host: 'https://mapi.zjzwfw.gov.cn/',
302   - dataType: 'JSON',
303   - type: 'POST',
304   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
305   - headers: {
306   - // 'isTestUrl': '1'
307   - },
308   - data: {
  236 + this.$toast.loading()
  237 + this.yxAxios
  238 + .post(`${this.yanxueUrl}/api/StudiesWap/SpecialCourse/List`, {
309 239 area: '',
310 240 province: '',
311 241 city: '',
... ... @@ -314,9 +244,9 @@ export default {
314 244 productTypeId: 'BQ0005',
315 245 businessTypeId: 'BQ0001',
316 246 channelCode: '',
317   - },
318   - onSuccess: (data) => {
319   - let riverList = data.data.data
  247 + })
  248 + .then((res) => {
  249 + let riverList = res.data.data
320 250 for (let i in riverList) {
321 251 riverList[i].course_labels = riverList[i].course_labels?.split(',')
322 252 if (riverList[i].startDate) {
... ... @@ -328,25 +258,14 @@ export default {
328 258 this.loading = false
329 259 this.riverList = riverList
330 260 console.log('大好河山:', riverList)
331   - },
332   - onFail: (err) => {
333   - console.log('err', err)
334   - },
335   - })
  261 + })
336 262 },
337 263  
338 264 // 每周一营 6
339 265 getCampList() {
340   - this.mgop({
341   - api: 'mgop.sz.hswsy.qxyList', // 必须
342   - host: 'https://mapi.zjzwfw.gov.cn/',
343   - dataType: 'JSON',
344   - type: 'POST',
345   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
346   - headers: {
347   - // 'isTestUrl': '1'
348   - },
349   - data: {
  266 + this.$toast.loading()
  267 + this.yxAxios
  268 + .post(`${this.yanxueUrl}/api/StudiesWap/SpecialCourse/List`, {
350 269 area: '',
351 270 province: '',
352 271 city: '',
... ... @@ -355,9 +274,9 @@ export default {
355 274 productTypeId: 'ZZY001',
356 275 businessTypeId: 'JY0004',
357 276 channelCode: 'GZH002',
358   - },
359   - onSuccess: (data) => {
360   - let campList = data.data.data
  277 + })
  278 + .then((res) => {
  279 + let campList = res.data.data
361 280 for (let i in campList) {
362 281 campList[i].course_labels = campList[i].course_labels?.split(',')
363 282 if (campList[i].startDate) {
... ... @@ -368,12 +287,8 @@ export default {
368 287 }
369 288 this.loading = false
370 289 this.campList = campList
371   - console.log('每周一营:', data)
372   - },
373   - onFail: (err) => {
374   - console.log('err', err)
375   - },
376   - })
  290 + console.log('每周一营:', campList)
  291 + })
377 292 },
378 293 beforeChange(index) {
379 294 // if (index != 0 && index != 1 && index != 2) {
... ... @@ -389,11 +304,6 @@ export default {
389 304 handleMyOrder() {
390 305 this.$router.push({ name: 'ServiceOrderXST' })
391 306 },
392   - // 我的优惠券
393   - handleMyCard() {
394   - // this.$toast('暂未开放,敬请期待!');
395   - this.$router.push({ name: 'CardBoxXST', query: { active: 1 } })
396   - },
397 307 formatWeek(week) {
398 308 return week == 1
399 309 ? '周一'
... ... @@ -417,7 +327,7 @@ export default {
417 327 },
418 328 handleRedLink() {
419 329 let isWechat = localStorage.getItem('isWechat')
420   - if (isWechat==1) {
  330 + if (isWechat == 1) {
421 331 return
422 332 } else {
423 333 location.href = 'https://www.wasee.com/wt/b46pjfuln&ua=WaseeVRAndroid'
... ...
src/views/Service/ServiceKQ.vue
... ... @@ -41,14 +41,14 @@ export default {
41 41 let centerNo = localStorage.getItem('centerNo')
42 42 let ticket = this.common.getUrlParam('ticket') //浙里办app访问
43 43 let ticketId = this.common.getUrlParam('ticketId') //浙里办微信小程序访问
44   - // alert(location.href)
45   - // alert(ticketId)
46   - if (centerNo) {
47   - // alert('有中台编号:' + centerNo)
48   - this.centerNo = centerNo
49   - localStorage.setItem('centerNo', centerNo)
50   - this.getUserInfo()
51   - } else if (ticket) {
  44 + console.log(ticket,ticketId)
  45 + // if (centerNo) {
  46 + // // alert('有中台编号:' + centerNo)
  47 + // this.centerNo = centerNo
  48 + // localStorage.setItem('centerNo', centerNo)
  49 + // this.getUserInfo()
  50 + // } else
  51 + if (ticket) {
52 52 this.getCenterByTicket(ticket)
53 53 } else if (ticketId) {
54 54 // alert('getCenterByTicketId')
... ... @@ -77,65 +77,29 @@ export default {
77 77 },
78 78 // 通过ticket获取centerNo
79 79 getCenterByTicket(ticket) {
80   - this.mgop({
81   - api: 'mgop.sz.hswsy.getCenterNo', // 必须
82   - host: 'https://mapi.zjzwfw.gov.cn/',
83   - dataType: 'JSON',
84   - type: 'GET',
85   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
86   - headers: {
87   - // 'isTestUrl': '1'
88   - },
89   - data: {
90   - ticket: ticket,
91   - },
92   - onSuccess: (res) => {
93   - console.log('通过ticket获取centerNo成功:', res)
94   - // alert('通过ticket获取centerNo成功:' + res.data.message)
95   - if (res.data.code == 200) {
96   - this.centerNo = res.data.message
97   - localStorage.setItem('centerNo', res.data.message)
98   - this.getUserInfo()
99   - } else {
100   - this.reLoad()
101   - }
102   - },
103   - onFail: (err) => {
104   - // alert('通过ticket获取centerNo失败:' + JSON.stringify(err))
105   - console.log('通过ticket获取centerNo失败:', JSON.stringify(err))
  80 + this.yxAxios.get(`${this.proxyUrl}/api/third/getCenterNo?ticket=${ticket}`).then((res) => {
  81 + console.log('通过ticket获取centerNo成功:', res)
  82 + if (res.data.code == 200) {
  83 + this.centerNo = res.data.message
  84 + localStorage.setItem('centerNo', res.data.message)
  85 + this.getUserInfo()
  86 + } else {
106 87 this.reLoad()
107   - },
  88 + }
108 89 })
109 90 },
110 91 // 通过ticketId获取centerNo
111 92 getCenterByTicketId(ticketId) {
112 93 // alert(ticketId)
113   - this.mgop({
114   - api: 'mgop.sz.hswsy.getCenterNoWx', // 必须
115   - host: 'https://mapi.zjzwfw.gov.cn/',
116   - dataType: 'JSON',
117   - type: 'GET',
118   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
119   - headers: {
120   - // 'isTestUrl': '1'
121   - },
122   - data: {
123   - ticket: ticketId,
124   - },
125   - onSuccess: (res) => {
126   - // alert('通过ticketId获取centerNo Success:' + res.data.message)
127   - if (res.data.code == 200) {
128   - // this.centerNo = res.data.message
129   - localStorage.setItem('centerNo', res.data.message)
130   - this.getUserInfo()
131   - } else {
132   - this.getUserInfo()
133   - }
134   - },
135   - onFail: (err) => {
136   - // alert('通过ticket获取centerNo Fail:' + JSON.stringify(err))
137   - // this.reLoad()
138   - },
  94 + this.yxAxios.get(`${this.proxyUrl}/api/third/getCenterNoWx?ticket=${ticketId}`).then((res) => {
  95 + console.log('通过ticket获取centerNo成功:', res)
  96 + if (res.data.code == 200) {
  97 + this.centerNo = res.data.message
  98 + localStorage.setItem('centerNo', res.data.message)
  99 + this.getUserInfo()
  100 + } else {
  101 + this.reLoad()
  102 + }
139 103 })
140 104 },
141 105 reLoad() {
... ... @@ -170,30 +134,16 @@ export default {
170 134 }
171 135 },
172 136 // 获取用户信息
173   - getUserInfo: function() {
  137 + getUserInfo() {
174 138 this.centerNo = localStorage.getItem('centerNo')
175 139 // alert('getUserInfo:' + this.centerNo)
176   - this.mgop({
177   - api: 'mgop.sz.hswsy.getPortalUserByNum', // 必须
178   - // host: 'https://mapi.zjzwfw.gov.cn/',
179   - // dataType: 'JSON',
180   - // type: 'GET',
181   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
182   - headers: {
183   - // 'isTestUrl': '1'
184   - },
185   - data: {
186   - userNum: localStorage.getItem('centerNo'),
187   - },
188   - onSuccess: (res) => {
189   - // alert('getUserInfo success:' + JSON.stringify(res))
190   - if (res.data.code == 200) {
191   - localStorage.setItem('userInfo', JSON.stringify(res.data.data.userInfo))
192   - }
193   - },
194   - onFail: (err) => {
195   - // alert('getUserInfo fail:' + JSON.stringify(err))
196   - },
  140 + this.yxAxios.get(`${this.proxyUrl}/user/info/getPortalUserByNum?userNum=${localStorage.getItem('centerNo')}`).then((res) => {
  141 + console.log('获取用户信息getPortalUserByNum:', res)
  142 + if (res.data.code == 200) {
  143 + localStorage.setItem('userInfo', JSON.stringify(res.data.data.userInfo))
  144 + this.userInfo = res.data.data.userInfo
  145 +
  146 + }
197 147 })
198 148 },
199 149 },
... ...
src/views/Service/ServiceOrderXST.vue
... ... @@ -119,22 +119,9 @@ export default {
119 119 },
120 120 //获取待评价
121 121 onLoadCareer () {
122   - this.mgop({
123   - api: 'mgop.sz.hswsy.GetOrderPayList', // 必须
124   - host: 'https://mapi.zjzwfw.gov.cn/',
125   - dataType: 'JSON',
126   - type: 'GET',
127   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
128   - headers: {
129   - // 'isTestUrl': '1'
130   - },
131   - data: {
132   - "userId": localStorage.getItem('centerNo'),
133   - "type": 3,
134   - "page": 1,
135   - "pageSize": 999
136   - },
137   - onSuccess: res => {
  122 + this.yxAxios
  123 + .get(`${this.yanxueUrl}/api/StudiesWap/GetOrderPayList?userId=${localStorage.getItem('centerNo')}&type=${3}&page=1&pageSize=999`)
  124 + .then((res) => {
138 125 console.log('待评价:', res)
139 126 if (res.data.status == 1) {
140 127 this.datalist = res.data.data.list;
... ... @@ -143,30 +130,13 @@ export default {
143 130 } else {
144 131 this.$toast.fail(res.data.message);
145 132 }
146   - },
147   - onFail: err => {
148   - console.log('err', err)
149   - }
150   - });
  133 + })
151 134 },
152 135 //获取已评价
153 136 onLoad () {
154   - this.mgop({
155   - api: 'mgop.sz.hswsy.GetOrderPayList', // 必须
156   - host: 'https://mapi.zjzwfw.gov.cn/',
157   - dataType: 'JSON',
158   - type: 'GET',
159   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
160   - headers: {
161   - // 'isTestUrl': '1'
162   - },
163   - data: {
164   - "userId": localStorage.getItem('centerNo'),
165   - "type": 4,
166   - "page": 1,
167   - "pageSize": 999
168   - },
169   - onSuccess: res => {
  137 + this.yxAxios
  138 + .get(`${this.yanxueUrl}/api/StudiesWap/GetOrderPayList?userId=${localStorage.getItem('centerNo')}&type=${4}&page=1&pageSize=999`)
  139 + .then((res) => {
170 140 console.log('已评价:', res)
171 141 if (res.data.status == 1) {
172 142 this.list = res.data.data.list;
... ... @@ -175,11 +145,7 @@ export default {
175 145 } else {
176 146 this.$toast.fail(res.data.message);
177 147 }
178   - },
179   - onFail: err => {
180   - console.log('err', err)
181   - }
182   - });
  148 + })
183 149 },
184 150 //评价
185 151 evaluate (item) {
... ...
src/views/Service/component/AbroadDetail/AbroadBase.vue
... ... @@ -4,10 +4,8 @@
4 4 <img v-if="baseData.coverList.length > 0" :src="baseData.coverList[0].cover_url" alt="" />
5 5 <div class="center">
6 6 <p class="basename">{{ baseData.baseName }}</p>
7   - <p class="address">
8   - <van-icon name="location-o" />{{ baseData.city }}{{ baseData.area}}{{ baseData.address }}
9   - </p>
10   - <p class="tag">{{ baseData.baseLabel.join("/") }}</p>
  7 + <p class="address"><van-icon name="location-o" />{{ baseData.city }}{{ baseData.area }}{{ baseData.address }}</p>
  8 + <p class="tag">{{ baseData.baseLabel.join('/') }}</p>
11 9 </div>
12 10 </div>
13 11 </div>
... ... @@ -15,39 +13,24 @@
15 13 <script>
16 14 export default {
17 15 props: ['baseId'],
18   - data () {
  16 + data() {
19 17 return {
20   - baseData: "", //基地信息
  18 + baseData: '', //基地信息
21 19 }
22 20 },
23   - mounted () {
  21 + mounted() {
24 22 this.GetOneBase()
25 23 },
26 24 methods: {
27 25 // 获取单个基地
28   - GetOneBase () {
29   - this.mgop({
30   - api: 'mgop.sz.hswsy.GetOneBase', // 必须
31   - host: 'https://mapi.zjzwfw.gov.cn/',
32   - dataType: 'JSON',
33   - type: 'GET',
34   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
35   - headers: {
36   - // 'isTestUrl': '1'
37   - },
38   - data: {
39   - "id": this.baseId,
40   - },
41   - onSuccess: res => {
42   - if (res.data.data) {
43   - this.baseData = res.data.data;
44   - }
45   - },
46   - onFail: err => {
47   - console.log('err', err)
  26 + GetOneBase() {
  27 + this.yxAxios.get(`${this.yanxueUrl}/api/Manage/GetOneBase?id=${this.baseId}`).then((res) => {
  28 + // console.log(res.data.data)
  29 + if (res.data.data) {
  30 + this.baseData = res.data.data
48 31 }
49   - });
  32 + })
50 33 },
51   - }
  34 + },
52 35 }
53   -</script>
54 36 \ No newline at end of file
  37 +</script>
... ...
src/views/Service/component/AbroadDetail/AbroadCoupon.vue
... ... @@ -1,82 +0,0 @@
1   -<template>
2   - <div class="course_coupons" v-if="proCoupon.length>0">
3   - <div>
4   - <van-tag v-for="(item,index) in proCoupon" :key="index" color="#ffffff" text-color="#FF2B2B">{{proCouponHas?'已领取:':''}}{{item.title}}</van-tag>
5   - </div>
6   - <div @click="toCoupons" class="fontBlue">领取 ></div>
7   - </div>
8   -</template>
9   -<script>
10   -export default {
11   - props: ['detailDataId', 'centerNo'],
12   - data () {
13   - return {
14   - proCoupon: [],//优惠券
15   - proCouponHas: false,//优惠券已领取
16   - }
17   - },
18   - mounted () {
19   - this.getOrderCoupon()
20   - },
21   - methods: {
22   - //获取产品可使用优惠券
23   - getOrderCoupon () {
24   - this.mgop({
25   - api: 'mgop.sz.hswsy.orderCoupon', // 必须
26   - host: 'https://mapi.zjzwfw.gov.cn/',
27   - dataType: 'JSON',
28   - type: 'POST',
29   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
30   - headers: {
31   - // 'isTestUrl': '1'
32   - },
33   - data: {
34   - "proId": this.detailDataId,
35   - "userId": this.centerNo,
36   - },
37   - onSuccess: res => {
38   - if (res.data.data) {
39   - if (res.data.data.has.length > 0) {
40   - this.proCoupon = res.data.data.has
41   - localStorage.setItem("proCoupon", JSON.stringify(this.proCoupon))
42   - this.chooseDefaultUseCard(res.data.data.has)//设置默认选中的优惠券
43   - this.proCouponHas = true;
44   - } else if (res.data.data.get.length > 0) {
45   - this.proCoupon = {
46   - title: '您有可领优惠券'
47   - }
48   - }
49   - }
50   - },
51   - onFail: err => {
52   - console.log('err', err)
53   - }
54   - });
55   - },
56   - // 设置默认选中的优惠券
57   - chooseDefaultUseCard (has) {
58   - if (has.length > 1) {
59   - let useCard = has[0];
60   - for (let i in has) {
61   - console.log(Number(has[i].couponPrice) > Number(useCard.couponPrice))
62   - if (Number(has[i].couponPrice) > Number(useCard.couponPrice)) {
63   - useCard = has[i]
64   - }
65   - }
66   - // console.log('useCard', useCard)
67   - this.proCoupon = [useCard]
68   - localStorage.setItem('useCard', JSON.stringify(useCard))
69   -
70   - } else {
71   - localStorage.setItem('useCard', JSON.stringify(this.proCoupon[0]))
72   - }
73   - },
74   - //领券
75   - toCoupons () {
76   - this.$router.push({
77   - name: "CardBoxXST",
78   - });
79   - },
80   - }
81   -}
82   -</script>
83 0 \ No newline at end of file
src/views/Service/component/AbroadDetail/AbroadEvaluate.vue
1 1 <template>
2 2 <div class="abroad_evaluate">
3 3 <div class="rate" @click="handleEvaluate">
4   - <div>
5   - <van-rate v-model="evaluationData.evaluationScore" color="#FFCC00" :size="16" readonly />
6   - <span>{{ evaluationData.evaluationScore }}</span>
7   - </div>
8   - <span>共{{evaluationData.evaluationCount}}个客户评价
9   - <van-icon name="arrow" />
10   - </span>
  4 + <div>
  5 + <van-rate v-model="evaluationData.evaluationScore" color="#FFCC00" :size="16" readonly />
  6 + <span>{{ evaluationData.evaluationScore }}</span>
11 7 </div>
  8 + <span
  9 + >共{{ evaluationData.evaluationCount }}个客户评价
  10 + <van-icon name="arrow" />
  11 + </span>
  12 + </div>
12 13 </div>
13 14 </template>
14 15 <script>
15 16 export default {
16   - props:['courseId'],
17   - data(){
18   - return{
19   - evaluationData: '',//评价
  17 + props: ['courseId'],
  18 + data() {
  19 + return {
  20 + evaluationData: '', //评价
20 21 }
21 22 },
22   - mounted(){
  23 + mounted() {
23 24 this.getEvaluationSummary()
24 25 },
25   - methods:{
  26 + methods: {
26 27 // 获取评价
27   - getEvaluationSummary () {
28   - this.mgop({
29   - api: 'mgop.sz.hswsy.EvaluationSummary', // 必须
30   - host: 'https://mapi.zjzwfw.gov.cn/',
31   - dataType: 'JSON',
32   - type: 'GET',
33   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
34   - headers: {
35   - // 'isTestUrl': '1'
36   - },
37   - data: {
38   - "courseId": this.courseId,
39   - },
40   - onSuccess: res => {
41   - if (res.data.data) {
42   - this.evaluationData = res.data.data
43   - }
44   - },
45   - onFail: err => {
46   - console.log('err', err)
  28 + getEvaluationSummary() {
  29 + this.yxAxios.get(`${this.yanxueUrl}/api/StudiesWap/Evaluation/Summary?courseId=${this.courseId}`).then((res) => {
  30 + if (res.data.data) {
  31 + this.evaluationData = res.data.data
47 32 }
48   - });
  33 + })
49 34 },
50 35 // 点击评价进入评价详情页
51   - handleEvaluate () {
52   - this.$router.push({ name: "ServiceAbroadEvaluate", query: { courseId: this.courseId } });
  36 + handleEvaluate() {
  37 + this.$router.push({ name: 'ServiceAbroadEvaluate', query: { courseId: this.courseId } })
53 38 },
54   - }
  39 + },
55 40 }
56   -</script>
57 41 \ No newline at end of file
  42 +</script>
... ...
src/views/Service/component/AbroadDetail/CountDown.vue
... ... @@ -1,146 +0,0 @@
1   -<template>
2   - <div class="count_down">
3   - <div class="countDown" v-show="detailData.clusterTime ">
4   - <div class="countDownTop">
5   - <div>{{day}} {{detailData.applyCount>=detailData.minPeopleCount?'报名截止时间:':'团期截止倒计时'}}</div>
6   - <div v-if="detailData.applyCount>=detailData.minPeopleCount||timeTamp * 1 < 0">{{detailData.periodOfValidity}}</div>
7   - <div class="countDownTime" v-else>
8   - <div class="countDownFont">{{ showTime.day }}</div>
9   - 天
10   - <div class="countDownFont">{{ showTime.hour }}</div>
11   - 时
12   - <div class="countDownFont">{{ showTime.minute }}</div>
13   - 分
14   - <div class="countDownFont">{{ showTime.second }}</div>
15   - 秒
16   - </div>
17   - </div>
18   - <!-- <div class="countDownTop" v-else>
19   - <div>{{day}}</div>
20   - </div> -->
21   - <div class="countDownBottom">
22   - <div>
23   - <div class="countDownBottomyellow" v-show="detailData.minPeopleCount">
24   - {{ detailData.clusterName }}
25   - </div>
26   - <span v-if="detailData.applyCount>=detailData.minPeopleCount">已报名 {{detailData.applyCount}}/{{detailData.stockCount}}{{detailData.unitName}}</span>
27   - <span v-else>最低成团数{{detailData.minPeopleCount}}{{detailData.unitName}}/已报名{{detailData.applyCount}}{{detailData.unitName}}</span>
28   - <!-- 已报名:<span>{{ detailData.applyCount }}</span><span>/{{ detailData.stockCount }}</span> -->
29   - </div>
30   - <div class="countDownAbout" @click="showPintuanAbout=true">关于拼团?</div>
31   - </div>
32   - </div>
33   - <van-popup v-model="showPintuanAbout" round>
34   - <div class="pintuan_about">
35   - <img class="about_img" src="@/assets/service/tip.png" alt="">
36   - <p class="about_title">拼团规则说明</p>
37   - <p class="about_content">1、拼团展示默认为最近活动档期,选择其它档期请时刻注意成团动态。</p>
38   - <p class="about_content">2、在限时截止后,报名人数未达最低成团数,则结束本团活动,系统将在72小时内,全额退还!</p>
39   - <p class="about_content">3、报名人数达到最低成团要求后,则拼团成功,凡在报名截止时间内未达最大限团人数,则可放心参与。</p>
40   - <p class="about_content">4、已成团的活动,除特殊情况等不可抗拒因素外,活动如期举行。</p>
41   - <p class="about_know" @click="showPintuanAbout=false">我知道了</p>
42   - </div>
43   - </van-popup>
44   - </div>
45   -</template>
46   -<script>
47   -export default {
48   - props: ['day','productId', 'packageArr', 'bindId', 'comboId'],
49   - data () {
50   - return {
51   - timeTamp: "",
52   - showTime: {
53   - day: "",
54   - hour: "",
55   - minute: "",
56   - second: "",
57   - },
58   - showPintuanAbout: false,
59   - detailData: ''
60   - }
61   - },
62   - watch: {
63   - bindId (oldVal, newVal) {
64   - this.getDateInfoById()
65   - },
66   - comboId (oldVal, newVal) {
67   - this.getDateInfoById()
68   - },
69   - },
70   - mounted () {
71   - // console.log(this.detailData)
72   - // console.log(this.packageArr)
73   - this.getDateInfoById()
74   -
75   - },
76   - methods: {
77   - // 根据选择的档期显示成团状态
78   - getDateInfoById () {
79   - const productId = this.productId
80   - const bindId = this.bindId
81   - const comboId = this.comboId
82   - // console.log(productId, bindId, comboId)
83   - this.mgop({
84   - api: 'mgop.sz.hswsy.DateInfoById', // 必须
85   - host: 'https://mapi.zjzwfw.gov.cn/',
86   - dataType: 'JSON',
87   - type: 'GET',
88   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
89   - headers: {
90   - // 'isTestUrl': '1'
91   - },
92   - data: {
93   - "productId": productId,
94   - "bindId": bindId,
95   - "comboId": comboId,
96   - },
97   - onSuccess: res => {
98   - console.log('套餐列表:', res.data.data);
99   - if (res.data.data) {
100   - this.detailData = res.data.data
101   - let timer = setInterval(() => {
102   - this.timeDown(); //倒计时
103   - }, 1000);
104   - this.$once("hook:beforeDestroy", () => {
105   - clearInterval(timer); //清理定时器
106   - console.log('清理定时器')
107   - });
108   - }
109   - },
110   - onFail: err => {
111   - console.log('err', err)
112   - }
113   - });
114   - },
115   - //倒计时计算
116   - timeDown () {
117   - var clusterTime = Date.parse(new Date(this.detailData.clusterTime.replace(/\-/g, "/"))) + 60 * 60 * 24 * 1000;
118   - var nowTime = Date.parse(new Date());
119   - let timeTamp = clusterTime / 1000 - nowTime / 1000;
120   - // console.log(timeTamp)
121   - this.timeTamp = timeTamp;
122   - // console.log(timeTamp)
123   - let k = this.calculateDiffTime(timeTamp);
124   - // console.log(k)
125   - },
126   - calculateDiffTime (timeDiff) {
127   - var day = parseInt(timeDiff / 86400);
128   - var hour = parseInt((timeDiff % 86400) / 3600);
129   - var minute = parseInt(((timeDiff % 86400) % 3600) / 60);
130   - var second = parseInt((((timeDiff % 86400) % 3600) % 60) % 60);
131   -
132   - this.showTime = {
133   - day,
134   - hour,
135   - minute,
136   - second,
137   - };
138   - day = day ? day + "天" : "";
139   - hour = hour ? hour + "时" : "";
140   - minute = minute ? minute + "分" : "";
141   - second = second ? second + "秒" : "";
142   - return day + hour + minute + second;
143   - },
144   - }
145   -}
146   -</script>
147 0 \ No newline at end of file
src/views/Service/component/chooseSchool.vue
... ... @@ -7,8 +7,8 @@
7 7 </form>
8 8 </div>
9 9 <div class="listCardBox">
10   - <div v-for="(val,i) in schoolList" :key="i" class="listCard">
11   - <div @click="schoolClick(val)">{{val.text}}</div>
  10 + <div v-for="(val, i) in schoolList" :key="i" class="listCard">
  11 + <div @click="schoolClick(val)">{{ val.text }}</div>
12 12 </div>
13 13 </div>
14 14 </div>
... ... @@ -16,71 +16,55 @@
16 16  
17 17 <script>
18 18 export default {
19   - data () {
  19 + data() {
20 20 return {
21 21 searchSchool: '',
22   - schoolList: []
  22 + schoolList: [],
23 23 }
24 24 },
25 25 methods: {
26   - onSearch (val) {
  26 + onSearch(val) {
27 27 console.log(val)
28 28 this.GetHighSchoolList()
29 29 },
30   - onCancel () {
  30 + onCancel() {
31 31 // this.$toast('取消');
32 32 this.searchSchool = ''
33 33 this.schoolList = []
34 34 this.$emit('input', false)
35 35 },
36 36 // 通过学校姓名获取学校
37   - GetHighSchoolList () {
38   - this.mgop({
39   - api: 'mgop.sz.hswsy.GetAllSchoolList', // 必须
40   - host: 'https://mapi.zjzwfw.gov.cn/',
41   - dataType: 'JSON',
42   - type: 'GET',
43   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
44   - headers: {
45   - // 'isTestUrl': '1'
46   - },
47   - data: {
48   - "schoolName": this.searchSchool
49   - },
50   - onSuccess: res => {
51   - console.log('学校:', res)
52   - if (res.data.data) {
53   - let data = res.data.data;
54   - let arr = [];
55   - if (data) {
56   - data.forEach((n, i) => {
57   - let obj = {};
58   - obj.text = n.schoolName;
59   - obj.id = n.id;
60   - arr.push(obj);
61   - });
62   - this.schoolList = arr;
63   - console.log(this.schoolList)
64   - }
65   - } else {
66   - this.$toast.fail(res.data.message)
  37 + GetHighSchoolList() {
  38 + this.yxAxios.get(`${this.yanxueUrl}/api/SchoolManage/GetAllSchoolList?schoolName=${this.searchSchool}`).then((res) => {
  39 + console.log('学校:', res)
  40 + if (res.data.data) {
  41 + let data = res.data.data
  42 + let arr = []
  43 + if (data) {
  44 + data.forEach((n, i) => {
  45 + let obj = {}
  46 + obj.text = n.schoolName
  47 + obj.id = n.id
  48 + arr.push(obj)
  49 + })
  50 + this.schoolList = arr
  51 + console.log(this.schoolList)
67 52 }
68   - },
69   - onFail: err => {
70   - console.log('err', err)
  53 + } else {
  54 + this.$toast.fail(res.data.message)
71 55 }
72   - });
  56 + })
73 57 },
74 58 //点击学校
75   - schoolClick (val) {
  59 + schoolClick(val) {
76 60 console.log(val)
77 61 this.$emit('schoolData', val)
78 62 this.onCancel()
79   - }
  63 + },
80 64 },
81   - mounted () {
  65 + mounted() {
82 66 // this.GetHighSchoolList()
83   - }
  67 + },
84 68 }
85 69 </script>
86 70  
... ... @@ -109,4 +93,4 @@ export default {
109 93 }
110 94 }
111 95 }
112   -</style>
113 96 \ No newline at end of file
  97 +</style>
... ...
src/views/Service/evaluateBase.vue
... ... @@ -86,70 +86,40 @@ export default {
86 86 this.$toast.loading({
87 87 message: '请求中...',
88 88 });
89   - this.mgop({
90   - api: 'mgop.sz.hswsy.AddEvaluation', // 必须
91   - host: 'https://mapi.zjzwfw.gov.cn/',
92   - dataType: 'JSON',
93   - type: 'POST',
94   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
95   - headers: {
96   - // 'isTestUrl': '1'
97   - },
98   - data: {
99   - "baseId": this.baseId,
100   - "signId": this.signId,
101   - "evaluation": this.content,
102   - "userId": this.studentInfo.travelerNum,
103   - "imgList": this.imgsrc,
104   - "baseScore": this.starsBaseNum
105   - },
106   - onSuccess: res => {
107   - this.$toast.clear();
108   - if (res.data.status == 1) {
109   - this.$toast.success('发布成功');
110   - setTimeout(() => {
111   - this.$router.back()
112   - }, 1000)
113   - }
114   - },
115   - onFail: err => {
116   - console.log('err', err)
  89 + this.yxAxios.post(`${this.yanxueUrl}/api/StudiesWap/AddEvaluation`,
  90 + {
  91 + baseId: this.baseId,
  92 + signId:this.signId,
  93 + evaluation: this.content,
  94 + userId: this.studentInfo.travelerNum,
  95 + imgList: this.imgsrc,
  96 + baseScore: this.starsBaseNum
117 97 }
118   - });
  98 + ).then((res) => {
  99 + this.$toast.clear();
  100 + if (res.data.status == 1) {
  101 + this.$toast.success('发布成功');
  102 + setTimeout(() => {
  103 + this.$router.back()
  104 + }, 1000)
  105 + }
  106 + })
  107 +
119 108 },
120 109 // 获取基地信息
121 110 GetStudyBaseDetail () {
122 111 this.$toast.loading({
123 112 message: '请求中...',
124 113 });
125   - this.mgop({
126   - api: 'mgop.sz.hswsy.GetStudyBaseDetail', // 必须
127   - host: 'https://mapi.zjzwfw.gov.cn/',
128   - dataType: 'JSON',
129   - type: 'GET',
130   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
131   - headers: {
132   - // 'isTestUrl': '1'
133   - },
134   - data: {
135   - "userId": 0,
136   - "cs": '绍兴市',
137   - "id": this.baseId
138   - },
139   - onSuccess: res => {
140   - this.$toast.clear()
141   - console.log('基地信息:', res.data)
142   - if (res.data.data) {
143   - this.$toast.clear();
144   - this.baseInfo = res.data.data;
145   - } else {
146   - this.$toast.fail(res.data.message)
147   - }
148   - },
149   - onFail: err => {
150   - console.log('err', err)
  114 + this.yxAxios.get(`${this.yanxueUrl}/api/StudiesWap/GetStudyBaseDetail?userId=0&cs=绍兴市&id=${this.baseId}`).then((res) => {
  115 + console.log(res.data)
  116 + if (res.data.data) {
  117 + this.$toast.clear();
  118 + this.baseInfo = res.data.data;
  119 + } else {
  120 + this.$toast.fail(res.data.message)
151 121 }
152   - });
  122 + })
153 123 },
154 124 callback (img) {
155 125 this.imgsrc.push({
... ...
src/views/Service/evaluateCourse.vue
... ... @@ -93,40 +93,29 @@ export default {
93 93 this.$toast.loading({
94 94 message: '请求中...',
95 95 });
96   - this.mgop({
97   - api: 'mgop.sz.hswsy.AddEvaluation', // 必须
98   - host: 'https://mapi.zjzwfw.gov.cn/',
99   - dataType: 'JSON',
100   - type: 'POST',
101   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
102   - headers: {
103   - // 'isTestUrl': '1'
104   - },
105   - data: {
106   - "baseId": this.courseInfo.baseId,
107   - "title": this.courseInfo.courseName,
108   - "evaluation": this.content,
109   - "courseId": this.courseInfo.courseId,
110   - "orderId": this.courseInfo.id,
111   - "userId": this.userInfo.centerNo,
112   - "imgList": this.imgsrc,
113   - "courseScore": this.starsCourseNum,
114   - "baseScore": this.starsBaseNum
115   - },
116   - onSuccess: res => {
117   - this.$toast.clear();
118   - if (res.data.status == 1) {
119   - this.$toast.success('发布成功');
120   - setTimeout(() => {
121   - // this.$router.push({ name: 'ServiceOrderXST' })
122   - this.$router.back()
123   - }, 1000)
124   - }
125   - },
126   - onFail: err => {
127   - console.log('err', err)
  96 + this.yxAxios.post(`${this.yanxueUrl}/api/StudiesWap/AddEvaluation`,
  97 + {
  98 + baseId: this.courseInfo.baseId,
  99 + title: this.courseInfo.courseName,
  100 + evaluation: this.content,
  101 + courseId: this.courseInfo.courseId,
  102 + orderId: this.courseInfo.id,
  103 + userId: this.userInfo.centerNo,
  104 + imgList: this.imgsrc,
  105 + courseScore: this.starsCourseNum,
  106 + baseScore: this.starsBaseNum
128 107 }
129   - });
  108 + ).then((res) => {
  109 + this.$toast.clear();
  110 + if (res.data.status == 1) {
  111 + this.$toast.success('发布成功');
  112 + setTimeout(() => {
  113 + // this.$router.push({ name: 'ServiceOrderQYX' })
  114 + this.$router.back()
  115 + }, 1000)
  116 + }
  117 + })
  118 +
130 119 },
131 120 callback (img) {
132 121 this.imgsrc.push({
... ...
src/views/Service/evaluateDetail.vue
... ... @@ -2,22 +2,30 @@
2 2 <div class="releaseEvaluate">
3 3 <div class="box top" v-if="baseId">
4 4 <div class="pic">
5   - <img :src="baseInfo.coverList[0].cover_url ? baseInfo.coverList[0].cover_url : require('../../assets/service/defCoure.jpg')" alt="" style="width:100%;height:100%">
  5 + <img
  6 + :src="baseInfo.coverList[0].cover_url ? baseInfo.coverList[0].cover_url : require('../../assets/service/defCoure.jpg')"
  7 + alt=""
  8 + style="width:100%;height:100%"
  9 + />
6 10 </div>
7 11 <div class="basefont">
8   - <div class="titlefont">{{baseInfo.baseName}}</div>
9   - <div class="tcfont">{{baseInfo.address}}</div>
10   - <div class="tcfont">{{baseInfo.phone}}</div>
  12 + <div class="titlefont">{{ baseInfo.baseName }}</div>
  13 + <div class="tcfont">{{ baseInfo.address }}</div>
  14 + <div class="tcfont">{{ baseInfo.phone }}</div>
11 15 </div>
12 16 </div>
13 17 <div class="box top" v-else>
14 18 <div class="pic">
15   - <img :src="courseInfo.coverUrl ? courseInfo.coverUrl : require('../../assets/service/defCoure.jpg')" alt="" style="width:100%;height:100%">
  19 + <img
  20 + :src="courseInfo.coverUrl ? courseInfo.coverUrl : require('../../assets/service/defCoure.jpg')"
  21 + alt=""
  22 + style="width:100%;height:100%"
  23 + />
16 24 </div>
17 25 <div class="basefont">
18   - <div class="titlefont">{{courseInfo.baseName}}</div>
19   - <div class="tcfont">套餐名称:{{courseInfo.courseName}}</div>
20   - <div class="tcfont" v-if="courseInfo.orderCount">数量*{{courseInfo.orderCount}}</div>
  26 + <div class="titlefont">{{ courseInfo.baseName }}</div>
  27 + <div class="tcfont">套餐名称:{{ courseInfo.courseName }}</div>
  28 + <div class="tcfont" v-if="courseInfo.orderCount">数量*{{ courseInfo.orderCount }}</div>
21 29 </div>
22 30 </div>
23 31 <div class="box">
... ... @@ -25,21 +33,28 @@
25 33 <div class="title">课程评分</div>
26 34 <div class="fr">
27 35 <van-rate v-model="evaluationData.courseScore" void-icon="star" void-color="#eee" color="#FFCC00" :size="16" readonly />
28   - <span class="rate">{{evaluationData.courseScore}}.0</span>
  36 + <span class="rate">{{ evaluationData.courseScore }}.0</span>
29 37 </div>
30 38 </div>
31 39 <div class="boxdf">
32 40 <div class="title">基地评分</div>
33 41 <div class="fr">
34 42 <van-rate v-model="evaluationData.baseScore" void-icon="star" void-color="#eee" color="#FFCC00" :size="16" readonly />
35   - <span class="rate">{{evaluationData.baseScore}}.0</span>
  43 + <span class="rate">{{ evaluationData.baseScore }}.0</span>
36 44 </div>
37 45 </div>
38   - <p class="evaluation"><span>评价:</span>{{evaluationData.evaluation}}</p>
  46 + <p class="evaluation"><span>评价:</span>{{ evaluationData.evaluation }}</p>
39 47 <div class="evaluation_img_box">
40   - <img class="evaluation_img" v-for="(imgItem,index) in evaluationData.imgList" :key="index" :src="imgItem.imgUrl" alt="" @click="previewImg(imgItem.imgUrl)">
  48 + <img
  49 + class="evaluation_img"
  50 + v-for="(imgItem, index) in evaluationData.imgList"
  51 + :key="index"
  52 + :src="imgItem.imgUrl"
  53 + alt=""
  54 + @click="previewImg(imgItem.imgUrl)"
  55 + />
41 56 </div>
42   - <p class="evaluation_time">评价于 {{evaluationData.intime}}</p>
  57 + <p class="evaluation_time">评价于 {{ evaluationData.intime }}</p>
43 58 </div>
44 59 </div>
45 60 </template>
... ... @@ -47,9 +62,9 @@
47 62 <script>
48 63 import { imgCut } from 'vue-imgcut'
49 64 export default {
50   - data () {
  65 + data() {
51 66 return {
52   - baseId: '',//有基地id时为基地评价
  67 + baseId: '', //有基地id时为基地评价
53 68 baseInfo: '',
54 69 evaluationId: '',
55 70 evaluationData: '',
... ... @@ -68,9 +83,9 @@ export default {
68 83 }
69 84 },
70 85 components: {
71   - imgCut
  86 + imgCut,
72 87 },
73   - mounted () {
  88 + mounted() {
74 89 this.evaluationId = this.$route.query.evaluationId
75 90 let baseId = this.$route.query.baseId
76 91 // 当前为基地评价
... ... @@ -80,33 +95,21 @@ export default {
80 95 }
81 96 this.getEvaluationDetail()
82 97  
83   - var courseInfo = window.localStorage.getItem('courseInfo');
  98 + var courseInfo = window.localStorage.getItem('courseInfo')
84 99 if (courseInfo) {
85   - this.courseInfo = JSON.parse(courseInfo);
  100 + this.courseInfo = JSON.parse(courseInfo)
86 101 }
87 102 },
88 103 methods: {
89   - getEvaluationDetail () {
  104 + getEvaluationDetail() {
90 105 this.$toast.loading({
91 106 message: '加载中...',
92 107 duration: 0,
93   - forbidClick: true
  108 + forbidClick: true,
94 109 })
95   - this.mgop({
96   - api: 'mgop.sz.hswsy.EvaluationDetailById', // 必须
97   - host: 'https://mapi.zjzwfw.gov.cn/',
98   - dataType: 'JSON',
99   - type: 'GET',
100   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
101   - headers: {
102   - // 'isTestUrl': '1'
103   - },
104   - data: {
105   - "id": this.evaluationId
106   - },
107   - onSuccess: res => {
108   - this.$toast.clear()
109   - console.log('评价详情:', res.data)
  110 + this.yxAxios.get(`${this.yanxueUrl}/api/StudiesWap/EvaluationDetail/ById?id=${this.evaluationId}`).then((res) => {
  111 + this.$toast.clear()
  112 + console.log('评价详情:', res.data)
110 113 if (res.data.status == 1) {
111 114 let evaluationData = res.data.data
112 115 evaluationData.intime = this.Moment(new Date(evaluationData.intime)).format('YYYY-MM-DD')
... ... @@ -114,47 +117,25 @@ export default {
114 117 } else {
115 118 this.$toast.fail(res.data.message)
116 119 }
117   - },
118   - onFail: err => {
119   - console.log('err', err)
120   - }
121   - });
  120 + })
122 121 },
123 122 // 获取基地信息
124   - GetStudyBaseDetail () {
  123 + GetStudyBaseDetail() {
125 124 this.$toast.loading({
126 125 message: '请求中...',
127   - });
128   - this.mgop({
129   - api: 'mgop.sz.hswsy.GetStudyBaseDetail', // 必须
130   - host: 'https://mapi.zjzwfw.gov.cn/',
131   - dataType: 'JSON',
132   - type: 'GET',
133   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
134   - headers: {
135   - // 'isTestUrl': '1'
136   - },
137   - data: {
138   - "userId": 0,
139   - "cs": '绍兴市',
140   - "id": this.baseId
141   - },
142   - onSuccess: res => {
  126 + })
  127 + this.yxAxios.get(`${this.yanxueUrl}/api/StudiesWap/GetStudyBaseDetail?userId=0&cs=绍兴市&id=${this.baseId}`).then((res) => {
  128 + this.$toast.clear()
  129 + console.log('基地信息:', res.data)
  130 + if (res.data.data) {
143 131 this.$toast.clear()
144   - console.log('基地信息:', res.data)
145   - if (res.data.data) {
146   - this.$toast.clear();
147   - this.baseInfo = res.data.data;
148   - } else {
149   - this.$toast.fail(res.data.message)
150   - }
151   - },
152   - onFail: err => {
153   - console.log('err', err)
  132 + this.baseInfo = res.data.data
  133 + } else {
  134 + this.$toast.fail(res.data.message)
154 135 }
155   - });
  136 + })
156 137 },
157   - }
  138 + },
158 139 }
159 140 </script>
160 141  
... ...
src/views/Service/evaluatePubilc.vue
... ... @@ -2,12 +2,16 @@
2 2 <div class="releaseEvaluate">
3 3 <div class="box top">
4 4 <div class="pic">
5   - <img :src="courseInfo.coverUrl ? courseInfo.coverUrl : require('../../assets/service/defCoure.jpg')" alt="" style="width:100%;height:100%">
  5 + <img
  6 + :src="courseInfo.coverUrl ? courseInfo.coverUrl : require('../../assets/service/defCoure.jpg')"
  7 + alt=""
  8 + style="width:100%;height:100%"
  9 + />
6 10 </div>
7 11 <div class="basefont">
8   - <div class="titlefont">{{courseInfo.baseName}}</div>
9   - <div class="tcfont">套餐名称:{{courseInfo.courseName}}</div>
10   - <div class="tcfont">数量*{{courseInfo.orderCount}}</div>
  12 + <div class="titlefont">{{ courseInfo.baseName }}</div>
  13 + <div class="tcfont">套餐名称:{{ courseInfo.courseName }}</div>
  14 + <div class="tcfont">数量*{{ courseInfo.orderCount }}</div>
11 15 </div>
12 16 </div>
13 17 <div class="box">
... ... @@ -15,14 +19,14 @@
15 19 <div class="title">课程评分</div>
16 20 <div class="fr">
17 21 <van-rate v-model="starsCourseNum" void-icon="star" void-color="#eee" color="#FFCC00" :size="16" />
18   - <span class="rate">{{starsCourseNum}}.0</span>
  22 + <span class="rate">{{ starsCourseNum }}.0</span>
19 23 </div>
20 24 </div>
21 25 <div class="boxdf">
22 26 <div class="title">基地评分</div>
23 27 <div class="fr">
24 28 <van-rate v-model="starsBaseNum" void-icon="star" void-color="#eee" color="#FFCC00" :size="16" />
25   - <span class="rate">{{starsBaseNum}}.0</span>
  29 + <span class="rate">{{ starsBaseNum }}.0</span>
26 30 </div>
27 31 </div>
28 32 <div class="cont">
... ... @@ -31,7 +35,7 @@
31 35 </div>
32 36 </div>
33 37 <div class="imgs">
34   - <img :src="n.imgUrl" alt="" v-for="(n,i) in imgsrc" :key="i">
  38 + <img :src="n.imgUrl" alt="" v-for="(n, i) in imgsrc" :key="i" />
35 39 <div class="selectImg">
36 40 <imgCut @callback="callback" :width="142" :height="142">
37 41 <van-icon name="cross" />
... ... @@ -40,14 +44,14 @@
40 44 <!-- <van-uploader v-model="fileList" multiple /> -->
41 45 </div>
42 46 </div>
43   - <div class="btns" :class="content==''||starsCourseNum==0||starsBaseNum==0?'disabled':''" @click="AddEvaluation ">发布</div>
  47 + <div class="btns" :class="content == '' || starsCourseNum == 0 || starsBaseNum == 0 ? 'disabled' : ''" @click="AddEvaluation">发布</div>
44 48 </div>
45 49 </template>
46 50  
47 51 <script>
48 52 import { imgCut } from 'vue-imgcut'
49 53 export default {
50   - data () {
  54 + data() {
51 55 return {
52 56 starsBaseNum: 0,
53 57 starsCourseNum: 0,
... ... @@ -64,75 +68,64 @@ export default {
64 68 }
65 69 },
66 70 components: {
67   - imgCut
  71 + imgCut,
68 72 },
69   - created () {
70   - var userInfo = localStorage.getItem('userInfo');
  73 + created() {
  74 + var userInfo = localStorage.getItem('userInfo')
71 75 if (userInfo) {
72   - this.userInfo = JSON.parse(userInfo);
  76 + this.userInfo = JSON.parse(userInfo)
73 77 }
74   - var courseInfo = localStorage.getItem('courseInfo');
  78 + var courseInfo = localStorage.getItem('courseInfo')
75 79 if (courseInfo) {
76   - this.courseInfo = JSON.parse(courseInfo);
  80 + this.courseInfo = JSON.parse(courseInfo)
77 81 }
78 82 },
79 83 methods: {
80   - AddEvaluation () {
  84 + AddEvaluation() {
81 85 if (this.content == '') {
82 86 this.$toast('请输入评价内容')
83   - return;
  87 + return
84 88 }
85 89 if (this.starsCourseNum == 0) {
86 90 this.$toast('请完成课程评分')
87   - return;
  91 + return
88 92 }
89 93 if (this.starsBaseNum == 0) {
90 94 this.$toast('请完成基地评分')
91   - return;
  95 + return
92 96 }
93 97 this.$toast.loading({
94 98 message: '请求中...',
95   - });
96   - this.mgop({
97   - api: 'mgop.sz.hswsy.AddEvaluation', // 必须
98   - host: 'https://mapi.zjzwfw.gov.cn/',
99   - dataType: 'JSON',
100   - type: 'POST',
101   - appKey: 'fuxgnukl+2001895516+edccpx', // 必须
102   - headers: {
103   - // 'isTestUrl': '1'
104   - },
105   - data: {
106   - "baseId": this.courseInfo.baseId,
107   - "title": this.courseInfo.courseName,
108   - "evaluation": this.content,
109   - "courseId": this.courseInfo.courseId,
110   - "orderId": this.courseInfo.id,
111   - "userId": this.userInfo.centerNo,
112   - "imgList": this.imgsrc,
113   - "courseScore": this.starsCourseNum,
114   - "baseScore": this.starsBaseNum
115   - },
116   - onSuccess: res => {
117   - this.$toast.clear();
  99 + })
  100 + this.yxAxios
  101 + .post(`${this.yanxueUrl}/api/StudiesWap/AddEvaluation`, {
  102 + baseId: this.courseInfo.baseId,
  103 + title: this.courseInfo.courseName,
  104 + evaluation: this.content,
  105 + courseId: this.courseInfo.courseId,
  106 + orderId: this.courseInfo.id,
  107 + userId: this.userInfo.centerNo,
  108 + imgList: this.imgsrc,
  109 + courseScore: this.starsCourseNum,
  110 + baseScore: this.starsBaseNum,
  111 + })
  112 + .then((res) => {
  113 + this.$toast.clear()
118 114 if (res.data.status == 1) {
119   - this.$toast.success('发布成功');
  115 + this.$toast.success('发布成功')
120 116 setTimeout(() => {
121   - this.$router.push({ name: 'ServiceOrderXST' })
  117 + // this.$router.push({ name: 'ServiceOrderQYX' })
  118 + this.$router.back()
122 119 }, 1000)
123 120 }
124   - },
125   - onFail: err => {
126   - console.log('err', err)
127   - }
128   - });
  121 + })
129 122 },
130   - callback (img) {
  123 + callback(img) {
131 124 this.imgsrc.push({
132   - imgUrl: img
133   - });
134   - }
135   - }
  125 + imgUrl: img,
  126 + })
  127 + },
  128 + },
136 129 }
137 130 </script>
138 131  
... ...