|
@@ -33,6 +33,11 @@ export default defineComponent({
|
|
|
orderType: {
|
|
|
type: String,
|
|
|
default: ''
|
|
|
+ },
|
|
|
+ discountPrice: {
|
|
|
+ // 优惠券使用金额
|
|
|
+ type: Number,
|
|
|
+ default: 0
|
|
|
}
|
|
|
},
|
|
|
emits: ['couponSelect'],
|
|
@@ -42,7 +47,9 @@ export default defineComponent({
|
|
|
popupLoading: false,
|
|
|
useCouponList: [] as any,
|
|
|
useCouponLoading: false,
|
|
|
- useCouponCount: 0
|
|
|
+ useCouponCount: 0,
|
|
|
+ dataLoading: false,
|
|
|
+ list: [] as any
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -50,11 +57,18 @@ export default defineComponent({
|
|
|
const limitCount = this.useCouponList.map((list: any) => {
|
|
|
return Number(list.discountPrice || 0)
|
|
|
})
|
|
|
- return limitCount.length > 0
|
|
|
- ? limitCount.reduce((sum: any, list: any) => {
|
|
|
- return sum + list
|
|
|
- })
|
|
|
- : 0
|
|
|
+ let count = 0
|
|
|
+ if (this.disabled) {
|
|
|
+ count = this.discountPrice
|
|
|
+ } else {
|
|
|
+ count =
|
|
|
+ limitCount.length > 0
|
|
|
+ ? limitCount.reduce((sum: any, list: any) => {
|
|
|
+ return sum + list
|
|
|
+ })
|
|
|
+ : 0
|
|
|
+ }
|
|
|
+ return count
|
|
|
},
|
|
|
couponCategory() {
|
|
|
// 如果订单类型不在优惠券类型里面,则默认查询通用券
|
|
@@ -62,25 +76,67 @@ export default defineComponent({
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
- this.getUseableCoupon()
|
|
|
+ // this.getUseableCoupon()
|
|
|
+ this.getList()
|
|
|
},
|
|
|
methods: {
|
|
|
- async getUseableCoupon() {
|
|
|
+ async getList() {
|
|
|
+ if (this.dataLoading) return
|
|
|
+ this.dataLoading = true
|
|
|
try {
|
|
|
- this.useCouponLoading = true
|
|
|
- // 判断是哪个端
|
|
|
- const url =
|
|
|
- state.platformType === 'STUDENT' ? '/api-student' : '/api-teacher'
|
|
|
- const res = await request.get(`${url}/couponInfo/statInfo`)
|
|
|
- this.useCouponLoading = false
|
|
|
- const result = (res.data || []).find(
|
|
|
- result => result.useState === 'USABLE'
|
|
|
- )
|
|
|
- this.useCouponCount = result.total || 0
|
|
|
+ const res = await request.post(`${state.platformApi}/couponInfo/page`, {
|
|
|
+ data: {
|
|
|
+ couponCategory: this.couponCategory,
|
|
|
+ couponType: 'FULL_DISCOUNT',
|
|
|
+ useState: 'USABLE',
|
|
|
+ page: 1,
|
|
|
+ rows: 100
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.dataLoading = false
|
|
|
+ const result = res.data || {}
|
|
|
+ // 处理重复请求数据
|
|
|
+ if (this.list.length > 0 && result.pageNo === 1) return
|
|
|
+ this.list = result.rows || []
|
|
|
+
|
|
|
+ // 处理可用优惠券是否支付使用
|
|
|
+ this.list.forEach((item: any) => {
|
|
|
+ item.checked = false
|
|
|
+ // 如果使用金额大于订单金额则优惠券不可用
|
|
|
+ if (item.useLimit > this.orderAmount) {
|
|
|
+ item.disabled = true
|
|
|
+ } else {
|
|
|
+ item.disabled = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ let count = 0
|
|
|
+ this.list.forEach((item: any) => {
|
|
|
+ if (!item.disabled) {
|
|
|
+ count++
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.useCouponCount = count
|
|
|
} catch {
|
|
|
- // TODO: handle
|
|
|
+ //
|
|
|
}
|
|
|
},
|
|
|
+ // async getUseableCoupon() {
|
|
|
+ // try {
|
|
|
+ // this.useCouponLoading = true
|
|
|
+ // // 判断是哪个端
|
|
|
+ // const url =
|
|
|
+ // state.platformType === 'STUDENT' ? '/api-student' : '/api-teacher'
|
|
|
+ // const res = await request.get(`${url}/couponInfo/statInfo`)
|
|
|
+ // this.useCouponLoading = false
|
|
|
+ // const result = (res.data || []).find(
|
|
|
+ // result => result.useState === 'USABLE'
|
|
|
+ // )
|
|
|
+ // this.useCouponCount = result.total || 0
|
|
|
+ // } catch {
|
|
|
+ // // TODO: handle
|
|
|
+ // }
|
|
|
+ // },
|
|
|
onSubmit(item: any) {
|
|
|
// useCouponList
|
|
|
this.useCouponList = item
|
|
@@ -142,6 +198,7 @@ export default defineComponent({
|
|
|
couponCategory={this.couponCategory}
|
|
|
useCoupon={this.useCouponList}
|
|
|
orderAmount={this.orderAmount}
|
|
|
+ couponList={this.list}
|
|
|
onClose={() => (this.popupStatus = false)}
|
|
|
onSubmit={(item: any) => this.onSubmit(item)}
|
|
|
/>
|