myCouse.vue
11.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
<template>
<div class="container">
<headers></headers>
<right></right>
<scrollpage></scrollpage>
<div class="w box_sizing width_box my_wrap">
<div class="left_position">
<left></left>
</div>
<div class="my_couse_wrap box_sizing">
<div class="my_couse_top box_sizing flex_box">
<div class="my_couse_top_list box_sizing flex_box flex_diection flex_align_center" @click="typeChange(1)">
<div class="my_couse_top_list_txt" :class="[type == 1 ? 'now' : '']">已购课程</div>
<div class="my_couse_top_list_line" v-if="type == 1"></div>
</div>
<div class="my_couse_top_list box_sizing flex_box flex_diection flex_align_center" @click="typeChange(2)">
<div class="my_couse_top_list_txt" :class="[type == 2 ? 'now' : '']">推荐课程</div>
<div class="my_couse_top_list_line" v-if="type == 2"></div>
</div>
</div>
<div class="my_couse_box flex_box flex-warp" v-if="type == 1">
<div class="my_couse" v-for="(item, index) in list" :key='"couse" + index'>
<div class="my_couse_img">
<img :src="item.course.image" alt="">
</div>
<div class="my_couse_bottom box_sizing">
<div class="my_couse_title box_sizing overflow2">{{item.course.name}}</div>
<div class="my_couse_info box_sizing flex_box flex_justify_between flex_align_center">
<div class="my_couse_info_money">¥{{item.course.price}}</div>
<div class="my_couse_info_num">学习人数:<span>{{item.course.number}}</span></div>
</div>
<div class="my_couse_btns box_sizing flex_box flex_justify_between flex_align_center">
<div class="my_couse_btn flex_1 flex_box flex_justify_center flex_align_center" @click="jumpDetail(item.course.id)">立即学习</div>
<div class="my_couse_btn flex_1 flex_box flex_justify_center flex_align_center" @click="showStatus(item)" v-if='item.status == 2'>评价课程</div>
</div>
</div>
</div>
</div>
<div class="my_couse_box flex_box flex-warp" v-if="type == 2">
<div class="my_couse" v-for="(item, index) in list" :key='"couse" + index'>
<div class="my_couse_img">
<img :src="item.image" alt="">
</div>
<div class="my_couse_bottom box_sizing">
<div class="my_couse_title box_sizing overflow2">¥{{item.name}}</div>
<div class="my_couse_info box_sizing flex_box flex_justify_between flex_align_center">
<div class="my_couse_info_money">¥{{item.price}}</div>
<div class="my_couse_info_num">学习人数:<span>{{item.number}}</span></div>
</div>
<div class="my_couse_btns box_sizing flex_box flex_justify_between flex_align_center">
<div class="my_couse_btn flex_1 flex_box flex_justify_center flex_align_center" @click="jumpDetail(item.id)">立即学习</div>
<div class="my_couse_btn flex_1 flex_box flex_justify_center flex_align_center" @click="showStatus(item)" v-if='item.is_order != 0 && item.status == 1'>评价课程</div>
</div>
</div>
</div>
</div>
<div class="pinglun_bottom box_sizing" v-if='total > 5 && type == 1'>
<el-pagination
background
:page-size='5'
layout="prev, pager, next"
@current-change='pageChange'
:total="total">
</el-pagination>
</div>
</div>
</div>
<footers></footers>
<div class="couse_pinglun_wrap" v-if="status">
<div class="couse_pinglun_box box_sizing">
<div class="couse_pinglun_top box_sizing flex_box flex_justify_between">
<div class="couse_linglun_img">
<img :src="imageSrc" alt="">
</div>
<div class="couse_linglun_info flex_1 flex_box flex_diection flex_justify_between">
<div class="couse_linglun_info_title overflow2">{{title}}</div>
<div class="couse_linglun_info_bottom flex_box">
<div class="flex_1 couse_linglun_info_money">¥{{money}}</div>
<div class="flex_1 couse_linglun_info_num">学习人数:<span>{{renNum}}</span></div>
</div>
</div>
</div>
<div class="couse_pinglun_star_box box_sizing flex_box flex_align_center">
<div class="couse_pinglun_star_left">评分</div>
<div class="couse_pinglun_star_right box_sizing flex_box flex_align_center">
<div class="couse_pinglun_star" v-for="(item, index) in imgList" :key='index' @click="startClick(index)">
<img :src="item" alt="">
</div>
</div>
</div>
<div class="text_content_wrap box_sizing">
<textarea v-model="content" placeholder="请输入评价内容"></textarea>
</div>
<div class="text_content_btns box_sizing flex_box flex_align_center flex_justify_center">
<div class="text_content_btn box_sizing flex_box flex_align_center flex_justify_center" @click="status = false">取消</div>
<div class="text_content_btn box_sizing flex_box flex_align_center flex_justify_center nos" @click='submitStart'>确定</div>
</div>
</div>
</div>
</div>
</template>
<script>
import headers from "@/components/headers";
import footers from "@/components/footders";
import left from "@/components/left";
import right from "@/components/right";
import scrollpage from "@/components/scrollpage";
import "@/css/my.css";
var _this;
export default {
components: {
headers,
footers,
left,
right,
scrollpage,
},
data() {
return {
content: '',
status: false,
type: 1,
avatar: '',
name: '',
page: 1,
list: [],
total: 0,
title: '',
money: 0,
renNum: 0,
imageSrc: '',
start: 0,
courseId: '',
weiSrc: require("../assets/images/weixuan_star.png"),
xuanSrc: require("../assets/images/yixuan_star.png"),
imgList: [require("../assets/images/weixuan_star.png"), require("../assets/images/weixuan_star.png"), require("../assets/images/weixuan_star.png"), require("../assets/images/weixuan_star.png"), require("../assets/images/weixuan_star.png")]
}
},
created() {
_this = this;
_this.getMyCouse()
},
mounted() {
},
methods: {
// 提交对该课程的评价
submitStart() {
let params = {
order_id: _this.courseId,
score: _this.start,
content: _this.content
}
if(_this.start == 0) {
_this.$message.error('请先进行评分');
}else {
_this.$axios.post('course.course_comment/addCourseComment', params).then(res => {
console.log(res);
if(res.code == 1) {
_this.$message.success('评价成功');
_this.status = false;
}else {
_this.$message.error(res.msg);
}
}).catch(err => {
console.log(err)
})
}
},
// 评价星星
startClick(i) {
console.log(i)
let list = _this.imgList;
for(var j = 0; j < list.length; j++) {
if(j <= i) {
list[j] = require("../assets/images/yixuan_star.png")
}else {
list[j] = require("../assets/images/weixuan_star.png")
}
}
_this.start = i + 1;
console.log(_this.start);
_this.imgList = list;
_this.$forceUpdate();
},
// 显示评价课程
showStatus(obj) {
console.log(obj);
_this.title = obj.course.name;
_this.money = obj.course.price;
_this.renNum = obj.course.number;
_this.imageSrc = obj.course.image;
_this.courseId = obj.id;
_this.status = true;
},
// 课程跳转详情
jumpDetail(id) {
console.log(id)
this.$router.push({
path:'/couseDetail',
query: {
id: id
}
})
},
// 改变type
typeChange(type) {
_this.type = type;
_this.page = 1;
if(type == 1) {
_this.getMyCouse()
}else {
_this.getTuiJian()
}
},
// 获取推荐课程
getTuiJian() {
let d = {
limit: 9
}
_this.$axios.post('course.course/getCourseRandList', d).then(res => {
console.log(res);
if(res.code == 1) {
_this.list = res.data
}else {
_this.$message.error(res.msg);
}
}).catch(err => {
console.log(err)
})
},
// 获取我购买的课程
getMyCouse() {
let d = {
page: _this.page,
per_page: 9
}
_this.$axios.post('user/getUserCourse', d).then(res => {
console.log(res);
if(res.code == 1) {
_this.total = res.data.total;
_this.list = res.data.data
}else {
_this.$message.error(res.msg);
}
}).catch(err => {
console.log(err)
})
},
// 改变页码时
pageChange(page) {
_this.page = page;
// _this.getCourseComment();
},
}
}
</script>
<style>
.my_wrap {
min-height: 600px;
}
</style>