优化更新

This commit is contained in:
gyq
2025-11-11 11:04:26 +08:00
parent 2432c53a73
commit 636fa4e033
32 changed files with 2280 additions and 704 deletions

View File

@@ -42,22 +42,11 @@
<span class="u-font-14">部分抵扣</span>
</el-radio> -->
</el-radio-group>
<el-input-number
class="u-m-l-10"
v-if="score.sel != -1"
v-model="usePointsNumber"
step-strictly
:step="pointsRes.equivalentPoints"
placeholder="请输入积分抵扣数量"
:min="pointsRes.minDeductionPoints"
:max="pointsRes.maxUsablePoints"
@change="pointsToMoney"
></el-input-number>
<el-input-number class="u-m-l-10" v-if="score.sel != -1" v-model="usePointsNumber" step-strictly
:step="pointsRes.equivalentPoints" placeholder="请输入积分抵扣数量" :min="pointsRes.minDeductionPoints"
:max="pointsRes.maxUsablePoints" @change="pointsToMoney"></el-input-number>
</div>
<p
class="u-font-14 color-666 u-m-t-10"
v-if="pointsRes.unusableReason && !pointsRes.usable"
>
<p class="u-font-14 color-666 u-m-t-10" v-if="pointsRes.unusableReason && !pointsRes.usable">
<span class="color-red">*</span>
<span>{{ pointsRes.unusableReason }}</span>
</p>
@@ -70,7 +59,9 @@
<span class="u-font-14 font-bold u-m-r-20">团购代金券</span>
<div class="u-flex my-select">
<span class="u-m-r-10">代金券名称</span>
<el-icon><ArrowDown /></el-icon>
<el-icon>
<ArrowDown />
</el-icon>
</div>
<svg-icon iconClass="scan" size="30" class="u-m-l-10 cur-pointer"></svg-icon>
</div>
@@ -78,7 +69,9 @@
<span class="u-font-14 font-bold u-m-r-20">优惠券</span>
<div class="u-flex my-select" @click="openCoupon">
<span class="u-m-r-10">选择优惠券</span>
<el-icon><ArrowDown /></el-icon>
<el-icon>
<ArrowDown />
</el-icon>
</div>
</div>
<div class="u-m-t-20" v-if="quansSelArr.length > 0">
@@ -121,16 +114,13 @@
<div class="u-m-t-30">
<p class="u-font-16 font-bold u-m-r-20 font-bold u-flex">选择支付方式</p>
<div class="u-m-t-20">
<el-button
v-for="(item, index) in payTypes.list"
:key="index"
size="large"
:type="index == payTypes.sel ? 'primary' : ''"
:disabled="canUsePayType(item)"
@click="changePayType(index)"
>
{{ item.payName }}
</el-button>
<div>
<el-button v-for="(item, index) in payTypes.list" :key="index" size="large"
:type="index == payTypes.sel ? 'primary' : ''" :disabled="canUsePayType(item)"
@click="changePayType(index)">
{{ item.payName }}
</el-button>
</div>
</div>
<div class="u-m-t-20">
<el-button type="primary" size="large" @click="nowPayClick()">立即支付</el-button>
@@ -206,26 +196,17 @@
</div>
</div>
<!-- 扫码 -->
<scanPay
ref="refScanPay"
:order="orderInfo"
@confirm="refScanPayConfirm"
@paysuccess="paysuccess"
></scanPay>
<scanPay ref="refScanPay" :order="orderInfo" @confirm="refScanPayConfirm" @paysuccess="paysuccess"></scanPay>
<!-- 打折 -->
<discount ref="refDiscount" @confirm="discountConfirm"></discount>
<!-- 优惠券 -->
<popup-coupon ref="refCoupon" :user="user" @confirm="refCouponConfirm"></popup-coupon>
<!-- 挂账 -->
<chooseGuaZahng
ref="refGuaZhang"
:payMoney="currentpayMoney"
@confirm="refGuaZhangConfirm"
></chooseGuaZahng>
<chooseGuaZahng ref="refGuaZhang" :payMoney="currentpayMoney" @confirm="refGuaZhangConfirm"></chooseGuaZahng>
</div>
</template>
<script setup>
<script setup>
import * as UTILS from "@/utils/coupon-utils.js";
import * as quanUtil from "../quan_util.js";
@@ -237,7 +218,7 @@ const shopUser = useUserStore();
const carts = useCartsStore();
import popupCoupon from "./popup-coupon.vue";
import PointsApi from "@/api/account/points";
import limitTimeDiscountApi from '@/api/market/limitTimeDiscount.js'
import payTypeApi from "@/api/account/payType";
import payApi from "@/api/order/pay";
import scanPay from "./scan-pay.vue";
@@ -357,7 +338,7 @@ function discountShow(e) {
const props = defineProps({
table: {
type: Object,
default: () => {},
default: () => { },
},
user: {
type: Object,
@@ -371,7 +352,7 @@ const props = defineProps({
},
orderInfo: {
type: Object,
default: () => {},
default: () => { },
},
});
@@ -488,6 +469,26 @@ function changePayType(i) {
refScanPayOpen(payType);
}
// 根据用户id获取新客立减金额返回null代表不可用
const newCustomerDiscount = ref(null)
async function getConsumeDiscountAjax() {
try {
if (props.user.id) {
newCustomerDiscount.value = await limitTimeDiscountApi.getConsumeDiscount({
shopId: localStorage.getItem("shopId"),
shopUserId: props.user.id,
orderId: props.orderInfo.id
})
console.log('根据用户id获取新客立减金额返回null代表不可用', newCustomerDiscount.value);
if (newCustomerDiscount.value !== null) {
carts.newUserDiscount = newCustomerDiscount.value.amount
}
}
} catch (error) {
console.log(error);
}
}
function returnPayParams() {
console.log("carts.orderCostSummary", carts.orderCostSummary);
return {
@@ -511,6 +512,9 @@ function returnPayParams() {
couponList: carts.coupons.map((v) => v.id),
userId: props.user.userId || "",
allPack: carts.dinnerType == "take-out" ? 1 : 0,
limitRate: carts.limitDiscountRes,
newCustomerDiscountId: newCustomerDiscount.value !== null ? newCustomerDiscount.value.id : '', // 新客立减Id
newCustomerDiscountAmount: newCustomerDiscount.value !== null ? newCustomerDiscount.value.amount : 0, // 新客立减金额
},
};
}
@@ -550,7 +554,7 @@ function nowPayClick(payType) {
.then(() => {
payOrder("cash");
})
.catch(() => {});
.catch(() => { });
return;
}
if (payType == "member-account") {
@@ -680,9 +684,25 @@ watch(
}
}
);
// 获取当前店铺可用的限时折扣
async function getlimitTimeDiscount() {
try {
const res = await limitTimeDiscountApi.getLimitTimeDiscount({
shopId: localStorage.getItem("shopId")
})
console.log('获取当前店铺可用的限时折扣===', res);
} catch (error) {
console.log(error);
}
}
onMounted(() => {
carts.payParamsInit();
getPaytype();
getlimitTimeDiscount()
getConsumeDiscountAjax()
});
defineExpose({
nowPayClick,
@@ -696,6 +716,7 @@ defineExpose({
line-height: 1;
cursor: pointer;
}
.vip {
padding: 2px 5px;
background: #f7793d;
@@ -704,27 +725,33 @@ defineExpose({
margin-left: 10px;
font-size: 10px;
}
.order-box {
display: flex;
padding: 20px 20px;
background-color: #f7f7fa;
min-height: 100%;
.left,
.right {
flex: 1;
}
.left {
padding-right: 20px;
}
.right {
border-left: 1px solid #ebebeb;
padding-left: 20px;
.order-info {
font-size: 14px;
.title {
}
.value {
}
.title {}
.value {}
.price {
color: #fa5555;
font-size: 20px;
@@ -732,6 +759,7 @@ defineExpose({
}
}
}
.my-select {
border: 1px solid #d9d9d9;
border-radius: 4px;