许成详 6 лет назад
Родитель
Сommit
a51217db52

+ 4
- 10
src/components/qrCodeCard/qrCodeCard.vue Просмотреть файл

@@ -10,8 +10,8 @@ export default {
10 10
   name: 'qrCodeCard',
11 11
   props: {
12 12
     msg: {
13
-      type: Object,
14
-      default: () => {}
13
+      type: String,
14
+      default: ''
15 15
     }
16 16
   },
17 17
   data () {
@@ -27,13 +27,7 @@ export default {
27 27
   },
28 28
   methods: {
29 29
     InitCodeRules (info) {
30
-      let codeText
31
-      for (var Key in this.lessonType
32
-      ) {
33
-        if (parseInt(Key) === this.msg.course_type) {
34
-          codeText = this.lessonType[Key] + '-1'
35
-        }
36
-      }
30
+      let codeText = info
37 31
       const ele = document.querySelector('#QRcode')
38 32
       this.qrCode = new QRCode(ele, {
39 33
         text: codeText,
@@ -49,7 +43,7 @@ export default {
49 43
     QRCode
50 44
   },
51 45
   mounted () {
52
-    this.InitCodeRules()
46
+    this.InitCodeRules(this.msg)
53 47
   }
54 48
 }
55 49
 </script>

+ 2
- 2
src/pages/user/card/index.vue Просмотреть файл

@@ -156,10 +156,10 @@ export default {
156 156
       this.active = index
157 157
     },
158 158
     toUse (item) {
159
-      console.log(item)
159
+      // console.log(item)
160 160
     },
161 161
     getList () {
162
-      console.log(111)
162
+      // console.log(111)
163 163
     },
164 164
     toCardDetail (item) {
165 165
       this.$router.push({ name: 'cardDetail' })

+ 2
- 2
src/pages/user/coupons/index.vue Просмотреть файл

@@ -83,10 +83,10 @@ export default {
83 83
       this.active = index
84 84
     },
85 85
     toUse (item) {
86
-      console.log(item)
86
+      // console.log(item)
87 87
     },
88 88
     getList () {
89
-      console.log(111)
89
+      // console.log(111)
90 90
     }
91 91
   }
92 92
 }

+ 65
- 25
src/pages/user/lessonDetail/index.vue Просмотреть файл

@@ -1,55 +1,52 @@
1 1
 <template>
2 2
   <div class="mainPage">
3 3
     <div class="title">课程详情</div>
4
-    <div class="content" :class="{'opacity' : useType == '已失效' || useType == '已使用', 'gray': useType == '已使用' || useType == '已失效'}">
4
+    <div class="content" :class="{'opacity' : courseOrderDetail.IsDone === 1, 'gray': courseOrderDetail.IsDone === 1}">
5 5
       <div class="list-item">
6 6
         <span>订单编号</span>
7
-        <span>144215646445464</span>
7
+        <span>{{courseOrderDetail.OrdersNo !== undefined ? courseOrderDetail.OrdersNo : ''}}</span>
8 8
       </div>
9 9
       <div class="list-item">
10
-        <span>订单名称</span>
11
-        <span>拉伸柔韧度</span>
10
+        <span>课程名称</span>
11
+        <span>{{courseOrderDetail.CourseName}}</span>
12 12
       </div>
13 13
       <div class="list-item">
14
-        <span>课数</span>
15
-        <span>2节课</span>
14
+        <span>课数</span>
15
+        <span>{{courseOrderDetail.JoinNum}}/{{courseOrderDetail.CourseNum}}</span>
16 16
       </div>
17 17
       <div class="list-item">
18 18
         <span>类型</span>
19
-        <span>健身</span>
19
+        <span>{{returnLocationName(courseOrderDetail.LocationId)}}</span>
20 20
       </div>
21 21
       <div class="list-item">
22 22
         <span>商品价格</span>
23
-        <span>¥1999</span>
23
+        <span>¥{{courseOrderDetail.Price}}</span>
24 24
       </div>
25 25
       <div class="list-item">
26 26
         <span>下单时间</span>
27
-        <span>2018/04/12 14:26:09</span>
27
+        <span>{{toolClass.dateFormat(courseOrderDetail.CreateDate)}}</span>
28 28
       </div>
29
-      <div class="list-item">
30
-        <span>课程时间</span>
31
-        <span>2018/04/12 12:00至14:00 计划备注(每周六 19:30)</span>
32
-      </div>
33
-      <div class="list-item">
29
+      <!-- <div class="list-item">
34 30
         <span>地点</span>
35
-        <span>悦见山G99</span>
36
-      </div>
31
+        <span>{{returnCaseName(courseOrderDetail.CaseId)}}</span>
32
+      </div> -->
37 33
       <div class="list-item">
38 34
         <span>付款方式</span>
39
-        <span>优惠券抵用 <div class="coupon-name">小拉伸柔韧度体验券</div></span>
35
+        <span>{{courseOrderDetail.CourseObtaimType === 'cheng-coin' ? '城币支付' : '优惠券抵用'}}</span>
36
+        <!-- <span>优惠券抵用 <div class="coupon-name">小拉伸柔韧度体验券</div></span> -->
40 37
       </div>
41 38
       <div class="half-cic">
42 39
         <span></span>
43 40
         <span></span>
44 41
       </div>
45
-      <div class="qr-code">
46
-        <qrCode :msg='msg'></qrCode>
47
-        <div class="number">32237489123</div>
42
+      <div class="qr-code" v-if="courseOrderDetail.IsDone === 0">
43
+        <qrCode :msg="courseOrderDetail.QrCodeString"></qrCode>
44
+        <!-- <div class="number">32237489123</div> -->
48 45
       </div>
49 46
     </div>
50 47
     <div class="useType">
51
-      <img :src="used" alt="已使用" v-if="useType == '已使用'" width="100%" height="100%">
52
-      <img :src="failure" alt="已失效" v-if="useType == '已失效'" width="100%" height="100%">
48
+      <img :src="used" alt="已使用" v-if="courseOrderDetail.IsDone === 1" width="100%" height="100%">
49
+      <!-- <img :src="failure" alt="已失效" v-if="useType == '已失效'" width="100%" height="100%"> -->
53 50
     </div>
54 51
   </div>
55 52
 </template>
@@ -58,6 +55,9 @@
58 55
 import qrCode from '../../../components/qrCodeCard/qrCodeCard'
59 56
 import used from '../../../common/icon/already.png'
60 57
 import failure from '../../../common/icon/inv.png'
58
+import { mapState, createNamespacedHelpers } from 'vuex'
59
+const { mapActions: actions } = createNamespacedHelpers('app')
60
+const { mapActions: mapUserActions, mapState: mapUserState } = createNamespacedHelpers('userCenter')
61 61
 export default {
62 62
   data () {
63 63
     return {
@@ -70,15 +70,55 @@ export default {
70 70
       failure,
71 71
     }
72 72
   },
73
+  created () {
74
+    this.getCourseLocationList().then(() => {
75
+      this.getCaseList().then(() => {
76
+        this.getCourseOrderDetail({
77
+          id: this.$route.query.id
78
+        }).then((res) => {
79
+          // console.log(JSON.stringify(res))
80
+        })
81
+      })
82
+    })
83
+  },
84
+  computed: {
85
+    ...mapUserState({
86
+      courseOrderDetail: x => x.courseOrderDetail,
87
+      courseLocationList: x => x.courseLocationList,
88
+    }),
89
+    ...mapState({
90
+      CaseList: x => x.app.CaseList,
91
+    })
92
+  },
73 93
   methods: {
74
-
94
+    ...mapUserActions([
95
+      'getCourseOrderDetail',
96
+      'getCourseLocationList',
97
+    ]),
98
+    ...actions([
99
+      'getCaseList',
100
+    ]),
101
+    returnLocationName (id) {
102
+      for (var n = 0; n < this.courseLocationList.length; n++) {
103
+        if (this.courseLocationList[n].LocationId === id) {
104
+          return this.courseLocationList[n].LocationName
105
+        }
106
+      }
107
+    },
108
+    returnCaseName (id) {
109
+      for (var n = 0; n < this.CaseList.length; n++) {
110
+        if (this.CaseList[n].CaseId === id) {
111
+          return this.CaseList[n].CaseName
112
+        }
113
+      }
114
+    },
75 115
   },
76 116
   components: {
77
-    qrCode
117
+    qrCode,
78 118
   }
79 119
 }
80 120
 </script>
81 121
 
82 122
 <style lang="scss" scoped>
83
-@import "page.scss";
123
+@import 'page.scss';
84 124
 </style>

+ 12
- 5
src/pages/user/lessonOrder/index.vue Просмотреть файл

@@ -4,7 +4,7 @@
4 4
       <div class="box">
5 5
         <div class="order-card flex-h" v-for="(item,index) in courseOrderList.list" :key='index' :class="{'opacity' : item.status === 1}" @click="toDetail(item)">
6 6
           <div class="card-pic">
7
-            <div :class="{'gray-location' : item.status === 1}"><span>{{item.LocationName}}</span></div>
7
+            <div :class="{'gray-location' : item.status === 1}"><span>{{returnLocationName(item.LocationId)}}</span></div>
8 8
             <img src="" class="cover" width="100%" height="100%" alt="">
9 9
           </div>
10 10
           <div class="card-msg">
@@ -49,7 +49,7 @@ export default {
49 49
   created () {
50 50
     var _that = this
51 51
     this.getCourseLocationList().then((res) => {
52
-      console.log(JSON.stringify(res))
52
+      // console.log(JSON.stringify(res))
53 53
       this.getCourseOrderList({ page: this.page })
54 54
     })
55 55
   },
@@ -75,6 +75,13 @@ export default {
75 75
       'getCourseOrderList',
76 76
       'getCourseLocationList',
77 77
     ]),
78
+    returnLocationName (id) {
79
+      for (var n = 0; n < this.courseLocationList.length; n++) {
80
+        if (this.courseLocationList[n].LocationId === id) {
81
+          return this.courseLocationList[n].LocationName
82
+        }
83
+      }
84
+    },
78 85
     getList () {
79 86
       var _that = this
80 87
       Math.ceil(this.courseOrderList.pagenum / this.courseOrderList.pagesize) > this.page ? this.hasMore = true : this.hasMore = false
@@ -84,7 +91,7 @@ export default {
84 91
           this.getCourseOrderList({
85 92
             page: _that.page + 1
86 93
           }).then((res) => {
87
-            if(res.list.length){
94
+            if (res.list.length) {
88 95
               _that.page += 1
89 96
             }
90 97
           })
@@ -94,8 +101,8 @@ export default {
94 101
         return false
95 102
       }
96 103
     },
97
-    toDetail () {
98
-      this.$router.push({ name: 'lessonDetail' })
104
+    toDetail (item) {
105
+      this.$router.push({ name: 'lessonDetail', query: {id: item.CustomerCourseId} })
99 106
     }
100 107
   }
101 108
 }

+ 1
- 1
src/store/majorProjects/majorProjects.js Просмотреть файл

@@ -47,7 +47,7 @@ export default {
47 47
         })
48 48
       })
49 49
     },
50
-    getCourseDetailInfo (context, { id }) { // 获取课程列表
50
+    getCourseDetailInfo (context, { id }) { // 获取课程详情信息
51 51
       return new Promise((resolve) => {
52 52
         Ajax(api.majorProjects.getCourseDetail.url, {
53 53
           method: api.majorProjects.getCourseDetail.method,

+ 18
- 3
src/store/userCenter/userCenter.js Просмотреть файл

@@ -77,6 +77,7 @@ export default {
77 77
     caseInfo: {},
78 78
     courseOrderList: {},
79 79
     courseLocationList: [],
80
+    courseOrderDetail: {},
80 81
   },
81 82
   mutations: {
82 83
     setUserInfo (state, data) {
@@ -85,6 +86,9 @@ export default {
85 86
     setCaseInfo (state, data) {
86 87
       state.caseInfo = data
87 88
     },
89
+    setCourseOrderDetail (state, data) { // 设置课程订单详情
90
+      state.courseOrderDetail = data
91
+    },
88 92
     setCourseLocationList (state, data) { // 设置课程类型列表
89 93
       state.courseLocationList = data
90 94
     },
@@ -92,17 +96,28 @@ export default {
92 96
       if (page === 1) {
93 97
         state.courseOrderList = res
94 98
       } else {
95
-        state.courseOrderList = {...res, list: [...state.courseOrderList.list, res.list]}
99
+        state.courseOrderList = { ...res, list: [...state.courseOrderList.list, res.list] }
96 100
       }
97 101
     }
98 102
   },
99 103
   actions: {
104
+    getCourseOrderDetail (context, payload) { // 获取课程类型列表
105
+      return new Promise((resolve) => {
106
+        Ajax(api.user.getCourseOrderDetail.url, {
107
+          method: api.user.getCourseOrderDetail.method,
108
+          urlData: { ...payload }
109
+        }).then(res => {
110
+          context.commit('setCourseOrderDetail', res)
111
+          resolve(res)
112
+        })
113
+      })
114
+    },
100 115
     getCourseLocationList (context) { // 获取课程类型列表
101 116
       return new Promise((resolve) => {
102 117
         Ajax(api.user.getCourseLoactionList.url, {
103 118
           method: api.user.getCourseLoactionList.method,
104 119
         }).then(res => {
105
-          context.commit('setCourseLocationList')
120
+          context.commit('setCourseLocationList', res)
106 121
           resolve(res)
107 122
         })
108 123
       })
@@ -111,7 +126,7 @@ export default {
111 126
       return new Promise((resolve) => {
112 127
         Ajax(api.user.getCourseOrderList.url, {
113 128
           method: api.user.getCourseOrderList.method,
114
-          queryData: {...payload}
129
+          queryData: { ...payload }
115 130
         }).then(res => {
116 131
           context.commit('setCourseOrder', { res, page: payload.page })
117 132
           resolve(res)

+ 1
- 1
src/util/ajax.js Просмотреть файл

@@ -49,7 +49,7 @@ Axios.interceptors.request.use((config) => {
49 49
 const ajax = (...args) => {
50 50
   return new Promise((resolve, reject) => {
51 51
     Axios(...args).then(({ data }) => {
52
-      console.log(111)
52
+      // console.log(111)
53 53
       const { code, message, result } = data
54 54
       if (code === 200) {
55 55
         resolve(result)

+ 4
- 0
src/util/api.js Просмотреть файл

@@ -88,6 +88,10 @@ const $api = {
88 88
       method: 'get',
89 89
       url: `${baseUrl}${guest}/cms/location`
90 90
     },
91
+    getCourseOrderDetail: { // 获取课程订单详情
92
+      method: 'get',
93
+      url: `${baseUrl}${wechat}/course/user/:id`
94
+    },
91 95
   },
92 96
   login:{ // 主管、销售端登陆
93 97
     login: {