下单界面

This commit is contained in:
YunaiV
2023-12-11 22:21:21 +08:00
parent 7a15c9496c
commit 4ddf17e2df
7 changed files with 434 additions and 402 deletions
+5 -3
View File
@@ -115,12 +115,14 @@ export default {
formData: {
group,
},
// TODO 芋艿:临时写死
header: {
// Accept: 'text/json',
// Authorization: token,
Accept : '*/*',
'tenant-id' :'1',
Authorization: 'Bearer test247',
Accept : '*/*',
'tenant-id' :'1',
'terminal': 20,
Authorization: 'Bearer test247',
},
success: (uploadFileRes) => {
let result = JSON.parse(uploadFileRes.data);
+8 -17
View File
@@ -65,27 +65,18 @@ export default {
// 解决 SpringMVC 接受 List<Item> 参数的问题
delete data2.items
for (let i = 0; i < data.items.length; i++) {
// data2['items[' + i + '' + '].skuId'] = data.items[i].skuId + '';
// data2['items[' + i + '' + '].count'] = data.items[i].count + '';
// data2['items[' + i + '' + '].cartId'] = data.items[i].cartId + '';
data2['items' + `%5B${i}%5D` + '.skuId'] = data.items[i].skuId + '';
data2['items' + `%5B${i}%5D` + '.count'] = data.items[i].count + '';
data2['items' + `%5B${i}%5D` + '.cartId'] = data.items[i].cartId + '';
data2[encodeURIComponent('items[' + i + '' + '].skuId')] = data.items[i].skuId + '';
data2[encodeURIComponent('items[' + i + '' + '].count')] = data.items[i].count + '';
if (data.items[i].cartId) {
data2[encodeURIComponent('items[' + i + '' + '].cartId')] = data.items[i].cartId + '';
}
}
console.log(data2, '对比数据')
const queryString= Object.keys(data2).map(key => key + '=' + data2[key]).join('&')
return request2({
url: 'trade/order/settlement',
method: 'GET',
// data,
params: data2
url: `trade/order/settlement?${queryString}`,
method: 'GET'
})
},
// calc: (data) =>
// request({
// url: 'order/order/calc',
// method: 'POST',
// data,
// }),
// 创建订单
create: (data) =>
request({
+13
View File
@@ -17,4 +17,17 @@ export default {
params: { spuId, productScope, count },
});
},
// 获得匹配指定商品的优惠劵列表
getMatchCouponList: (price, spuIds, skuIds, categoryIds) => {
return request({
url: '/app-api/promotion/coupon/match-list',
method: 'GET',
params: {
price,
spuIds: spuIds.join(','),
skuIds: skuIds.join(','),
categoryIds: categoryIds.join(','),
},
});
}
};
+41
View File
@@ -0,0 +1,41 @@
import request2 from '@/sheep/request2';
const OrderApi = {
// 计算订单信息
settlementOrder: (data) => {
const data2 = {
...data,
}
// 移除多余字段
if (!(data.couponId > 0)) {
delete data2.couponId
}
if (!(data.addressId > 0)) {
delete data2.addressId
}
// 解决 SpringMVC 接受 List<Item> 参数的问题
delete data2.items
for (let i = 0; i < data.items.length; i++) {
data2[encodeURIComponent('items[' + i + '' + '].skuId')] = data.items[i].skuId + '';
data2[encodeURIComponent('items[' + i + '' + '].count')] = data.items[i].count + '';
if (data.items[i].cartId) {
data2[encodeURIComponent('items[' + i + '' + '].cartId')] = data.items[i].cartId + '';
}
}
const queryString= Object.keys(data2).map(key => key + '=' + data2[key]).join('&')
return request2({
url: `trade/order/settlement?${queryString}`,
method: 'GET'
})
},
// 创建订单
createOrder: (data) => {
return request2({
url: `trade/order/create`,
method: 'POST',
data
})
}
};
export default OrderApi;
@@ -1,3 +1,4 @@
<!-- 订单确认的优惠劵选择弹窗 -->
<template>
<su-popup
:show="show"
@@ -16,20 +17,21 @@
:enable-back-to-top="true"
>
<view class="subtitle ss-m-l-20">可使用优惠券</view>
<view v-for="(item, index) in state.couponInfo.can_use" :key="index">
<view v-for="(item, index) in state.couponInfo" :key="index">
<s-coupon-list :data="item" type="user" :disabled="false">
<template #default>
<label class="ss-flex ss-col-center" @tap="radioChange(item.id)">
<radio
color="var(--ui-BG-Main)"
style="transform: scale(0.8)"
:checked="state.couponId == item.id"
:checked="state.couponId === item.id"
@tap.stop="radioChange(item.id)"
/>
</label>
</template>
</s-coupon-list>
</view>
<!-- TODO 芋艿未来接口需要支持下
<view class="subtitle ss-m-t-40 ss-m-l-20">不可使用优惠券</view>
<view v-for="item in state.couponInfo.cannot_use" :key="item.id">
<s-coupon-list :data="item" type="user" :disabled="true">
@@ -41,6 +43,7 @@
</template>
</s-coupon-list>
</view>
-->
</scroll-view>
</view>
<view class="modal-footer ss-flex">
@@ -50,8 +53,9 @@
</template>
<script setup>
import { computed, reactive } from 'vue';
const props = defineProps({
modelValue: {
modelValue: { // 优惠劵列表
type: Object,
default() {},
},
@@ -60,21 +64,27 @@
default: false,
},
});
const emits = defineEmits(['confirm', 'close']);
const state = reactive({
couponInfo: computed(() => props.modelValue),
couponId: 0,
couponInfo: computed(() => props.modelValue), // 优惠劵列表
couponId: 0, // 选中的优惠劵编号
});
// 选中优惠劵
function radioChange(couponId) {
if (state.couponId == couponId) {
if (state.couponId === couponId) {
state.couponId = 0;
} else {
state.couponId = couponId;
}
}
// 确认优惠劵
const onConfirm = () => {
emits('confirm', state.couponId);
};
}
</script>
<style lang="scss" scoped>
:deep() {
@@ -26,7 +26,7 @@
:style="[{ color: priceColor }]"
v-if="price && Number(price) > 0"
>
{{ price }}
{{ fen2yuan(price) }}
</view>
<view v-if="score && Number(price) > 0">+</view>
<view class="price-text ss-flex ss-col-center" v-if="score">
@@ -54,6 +54,7 @@
<script setup>
import sheep from '@/sheep';
import { computed } from 'vue';
import { fen2yuan } from '../../hooks/useGoods';
/**
* 订单卡片
*