cashier_app/pageBwc/index/index.vue

292 lines
7.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="boxconstant min-page">
<view class="bg-fff u-flex u-m-b-32 top">
<image style="width: 60rpx;height:60rpx;" src="/pageBwc/static/images/bwc.png"></image>
<view class="u-flex-1 u-flex u-p-l-24">
<view class=" u-font-28 u-flex-1 u-p-r-4">
<view class="color-333 font-bold">霸王餐</view>
<view class="color-666 u-m-t-4 u-font-24">设置充值消费的N倍当前订单立即免单</view>
</view>
<up-switch v-model="form.enable" size="18"></up-switch>
</view>
</view>
<view class="boxconstantbox"
>
<view class="boxconstantbox_one">
充值设置
</view>
<view class="u-flex u-m-t-32">
<input class="number-box" type="number" :min='2' v-model="form.rechargeTimes" @blur="rechargeTimesInput" />
<view class="bei">倍</view>
</view>
<view class="color-666 u-font-28 u-m-t-16">
用户消费结账时成功充值订单金额的X倍即可享受免单
</view>
<view class="u-m-t-20 u-m-b-20">
<up-line class=""></up-line>
</view>
<view class="boxconstantbox_one">
充值门槛
</view>
<view class="u-flex u-m-t-32">
<input class="number-box" type="number" v-model="form.rechargeThreshold" @blur="rechargeThresholdInput" />
<view class="bei">元</view>
</view>
<view class="color-666 u-font-28 u-m-t-16">
订单的支付金额满足X元才能使用
</view>
</view>
<view class="boxconstantbox"
>
<view class="boxconstantbox_one">
可用门店
</view>
<view class="u-m-t-16">
<my-shop-select @shop-select="shopSelect" v-model:selShops="form.shopIdList" v-model:useType="form.useShopType"></my-shop-select>
</view>
</view>
<!-- <view class="boxconstantbox"
style="margin-top:24rpx; padding:32rpx 24rpx; border-radius: 0 0 18px 18px;">
<view class="boxconstantbox_one" style="margin-bottom: 15rpx;">
充值说明
</view>
<view>
<up-textarea v-model="form.rechargeDesc" placeholder="请输入内容"></up-textarea>
</view>
</view> -->
<view class="boxconstantbox">
<view class="boxconstantbox_one">
可使用类型
</view>
<view class="u-m-t-16">
<my-dine-types v-model="form.useType"></my-dine-types>
</view>
</view>
<view class="boxconstantbox ">
<view class="u-flex u-col-center u-row-between">
<view>
<view class="color-333 u-font-32 font-bold">与优惠券同享</view>
<view class="color-666 u-font-24 u-m-t-4">开启后,可与优惠券同时使用</view>
</view>
<up-switch v-model="form.withCoupon" size="18"></up-switch>
</view>
<view class="u-flex u-col-center u-row-between u-m-t-24">
<view>
<view class="color-333 u-font-32 font-bold">与积分抵扣同享</view>
<view class="color-666 u-font-24 u-m-t-4">开启后,可与积分抵扣同时使用</view>
</view>
<up-switch v-model="form.withPoints" size="18"></up-switch>
</view>
</view>
<my-bottom-btn-group @cancel="cancel" @save="editFreeDing"></my-bottom-btn-group>
</view>
</template>
<script setup>
import { onShow, onLoad } from "@dcloudio/uni-app";
import { reactive, ref, watch } from "vue";
import { getFreeDing, updateFreeDing } from "@/http/api/freeDing.js";
const form = reactive({
rechargeTimes: 2,
rechargeThreshold: "",
enable: false,
rechargeDesc: "",
useShopType: "all",
useType: [],
shopIdList: [],
withCoupon: false,
withPoints: false,
});
onLoad(() => {
// uni.$utils.inputReg.bind()()
});
onShow(() => {
getlist();
});
/**
* 获取配置信息
*/
const getlist = async () => {
let res = await getFreeDing();
res.shopIdList = res.shopIdList || [];
Object.assign(form, res);
};
let rechargeTimesInput = (e) => {
console.log(e);
if (e.detail.value == "" || e.detail.value < 2) {
form.rechargeTimes = 2;
uni.showToast({
title: "请输入大于等于2的整数",
icon: "none",
});
return;
}
};
function rechargeThresholdInput(e){
if (e.detail.value == "" || e.detail.value <= 0.01) {
form.rechargeThreshold = 0.01;
uni.showToast({
title: "请输入大于0的数字",
icon: "none",
});
return;
}
}
/**
* 修改配置信息
*/
const editFreeDing = async () => {
if (!form.rechargeTimes) {
uni.showToast({
title: "请输入充值设置",
icon: "none",
});
return;
}
if (!form.rechargeThreshold) {
uni.showToast({
title: "请输入充值门槛",
icon: "none",
});
return;
}
if (form.useShopType != "all" && !form.shopIdList.length) {
uni.showToast({
title: "请选择可用门店",
icon: "none",
});
return;
}
if (form.useType.length == 0) {
uni.showToast({
title: "请选择可使用类型",
icon: "none",
});
return;
}
let res = await updateFreeDing(form);
uni.showToast({
title: "保存成功",
});
Object.assign(form, res);
setTimeout(() => {
// uni.navigateBack();
}, 1500);
};
function cancel() {
uni.navigateBack();
}
</script>
<style lang="scss" scoped>
.boxconstant {
background: #f7f7f7;
padding: 32rpx 28rpx;
.boxconstantbox {
padding: 32rpx 24rpx;
border-radius: 16rpx;
margin-top: 32rpx;
width: 100%;
background: #ffffff;
.boxconstantbox_one {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 28rpx;
color: #333333;
}
.boxconstantbox_tow {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 28rpx;
color: #333333;
// display: flex;
// justify-content: flex-start;
// align-items: center;
// flex-wrap: wrap;
// align-content: flex-start;
.text {
display: inline-flex;
text-align: center;
margin: 0 12rpx;
width: 118rpx;
height: 48rpx;
line-height: 48rpx;
background: #ffffff;
border-radius: 8rpx 8rpx 8rpx 8rpx;
border: 2rpx solid #e5e5e5;
}
}
}
.oneboxconstant {
margin-top: 32rpx;
width: 100%;
background: #ffffff;
border-radius: 12rpx 12rpx 12rpx 12rpx;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
padding: 32rpx 24rpx;
.oneboxconstant_one {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 28rpx;
color: #333333;
}
}
.save {
margin: 100rpx auto 50rpx auto;
width: 530rpx;
height: 80rpx;
background: #318afe;
border-radius: 56rpx 56rpx 56rpx 56rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 32rpx;
color: #ffffff;
line-height: 80rpx;
text-align: center;
}
}
.top {
padding: 24rpx 20rpx 28rpx 28rpx;
}
.number-box {
width: 260rpx;
font-size: 28rpx;
padding: 0 26rpx;
border-radius: 6rpx 0 0 6rpx;
border-top: 2rpx solid #d9d9d9;
border-bottom: 2rpx solid #d9d9d9;
border-left: 2rpx solid #d9d9d9;
background: #fff;
box-sizing: border-box;
height: 70rpx;
line-height: 70rpx;
}
.bei {
display: flex;
padding: 0 38rpx;
height: 70rpx;
line-height: 70rpx;
align-items: center;
border-radius: 0 6rpx 6rpx 0;
border: 2rpx solid #d9d9d9;
background: #f7f7fa;
font-size: 28rpx;
color: #999999;
}
</style>