优化会员充值

This commit is contained in:
gyq 2024-05-29 10:04:37 +08:00
parent 69482f81a7
commit bf0614e10b
8 changed files with 116 additions and 20 deletions

View File

@ -1,7 +1,7 @@
{ {
"name": "vite-electron", "name": "vite-electron",
"private": true, "private": true,
"version": "1.1.14", "version": "1.2.2",
"main": "dist-electron/main.js", "main": "dist-electron/main.js",
"scripts": { "scripts": {
"dev": "chcp 65001 && vite", "dev": "chcp 65001 && vite",

View File

@ -7,10 +7,14 @@
</el-icon> </el-icon>
</div> </div>
<div class="right"> <div class="right">
<div class="t1"> <div class="t1" v-if="props.type == 1">
<span class="title">应收:</span> <span class="title">应收:</span>
<span class="num">{{ money }}</span> <span class="num">{{ money }}</span>
</div> </div>
<div class="t1" v-else>
<span class="title">会员:</span>
<span class="num">{{ props.userInfo.id && props.userInfo.telephone }}</span>
</div>
<div class="t2"> <div class="t2">
<span>已付:0.00</span> <span>已付:0.00</span>
<span>优惠:0.00</span> <span>优惠:0.00</span>
@ -53,18 +57,31 @@
</div> </div>
</div> </div>
</div> </div>
<scanModal ref="scanModalRef" fast :amount="money" @success="scanCodeSuccess" /> <scanModal ref="scanModalRef" fast :amount="money" :selecttype="1" :orderId="props.userInfo.id"
@success="scanCodeSuccess" />
</template> </template>
<script setup> <script setup>
import { onMounted, ref } from "vue"; import { onMounted, ref } from "vue";
import { queryPayType, quickPay } from "@/api/pay"; import { queryPayType, quickPay } from "@/api/pay";
import { queryMembermember, createMembermember, membermemberScanPay, accountPaymember } from '@/api/member/index.js'
import { useUser } from "@/store/user.js"; import { useUser } from "@/store/user.js";
import { clearNoNum } from "@/utils"; import { clearNoNum } from "@/utils";
import scanModal from "@/components/payCard/scanModal.vue"; import scanModal from "@/components/payCard/scanModal.vue";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
const props = defineProps({
type: {
type: [String, Number],
default: 1 // 1 2
},
userInfo: {
type: Object,
default: {}
}
})
const store = useUser(); const store = useUser();
const emit = defineEmits(["paySuccess", "close"]); const emit = defineEmits(["paySuccess", "close"]);
@ -112,11 +129,19 @@ async function confirmOrder() {
payLoading.value = true; payLoading.value = true;
switch (payList.value[payActive.value].payType) { switch (payList.value[payActive.value].payType) {
case "cash": // case "cash": //
await quickPay({ if (props.type == 1) {
amount: money.value, await quickPay({
authCode: "", amount: money.value,
payType: payList.value[payActive.value].payType, authCode: "",
}); payType: payList.value[payActive.value].payType,
});
} else {
await accountPaymember({
shopId: store.userInfo.shopId,
memberId: props.userInfo.id,
amount: money.value
})
}
break; break;
default: default:
break; break;

View File

@ -82,7 +82,7 @@
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<el-button style="width: 100%;">取消</el-button> <el-button style="width: 100%;" @click="detailVisible = false">取消</el-button>
<el-button type="primary" style="width: 100%;" :loading="groupDetailLoading" <el-button type="primary" style="width: 100%;" :loading="groupDetailLoading"
@click="groupOrdergroupScanHandle">确认核销</el-button> @click="groupOrdergroupScanHandle">确认核销</el-button>
</div> </div>
@ -169,6 +169,7 @@ async function submitHandle() {
groupDetail.value = res groupDetail.value = res
detailVisible.value = true detailVisible.value = true
} catch (error) { } catch (error) {
loading.value = false
console.log(error); console.log(error);
} }
} }

View File

@ -201,6 +201,7 @@ async function printHandle() {
// //
function paySuccess() { function paySuccess() {
useStorage.del('memberInfo')
dialogVisible.value = false; dialogVisible.value = false;
printHandle(); printHandle();
emit("paySuccess"); emit("paySuccess");

View File

@ -237,7 +237,6 @@ async function pendingCart(params, status = true) {
if (status && cartList.value.length) { if (status && cartList.value.length) {
await createCodeAjax(); await createCodeAjax();
cartLoading.value = false; cartLoading.value = false;
clearMember()
} else { } else {
cartLoading.value = false; cartLoading.value = false;
} }
@ -368,6 +367,7 @@ async function createCodeAjax(type = "0") {
}); });
masterId.value = res.code; masterId.value = res.code;
queryCartAjax(); queryCartAjax();
getLocalMemberInfo()
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
@ -379,7 +379,7 @@ function getLocalMemberInfo() {
if (localMemberInfo && localMemberInfo.telephone) { if (localMemberInfo && localMemberInfo.telephone) {
memberInfo.value = localMemberInfo memberInfo.value = localMemberInfo
} else { } else {
memberInfo.value = '' memberInfo.value = {}
} }
} }
@ -432,8 +432,9 @@ onMounted(() => {
flex: 1; flex: 1;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center;
background-color: var(--el-color-info-light-7); background-color: var(--el-color-info-light-7);
padding-left: var(--el-font-size-base); // padding-left: var(--el-font-size-base);
.t { .t {
font-size: var(--el-font-size-base); font-size: var(--el-font-size-base);

View File

@ -3,11 +3,15 @@
<div class="dialog_footer" v-for="(item, index) in props.flowingwater.list" :key="index"> <div class="dialog_footer" v-for="(item, index) in props.flowingwater.list" :key="index">
<div class="dialog_footer_left"> <div class="dialog_footer_left">
<span>{{ item.biz_name }}</span> <span>{{ item.biz_name }}</span>
<span>{{ dayjs(item.create_time).format("YYYY-MM-DD") }}</span> <span>{{ dayjs(item.create_time).format("YYYY-MM-DD HH:mm:ss") }}</span>
</div> </div>
<div class="dialog_footer_right"> <div class="dialog_footer_right">
<span>{{ item.balance }}</span> <span :class="{ active: item.biz_code == 'cashMemberIn' }">
<span>{{ item.amount }}</span> <template v-if="item.biz_code == 'cashMemberIn'">+</template>
<template v-else>-</template>
{{ (Math.floor(item.amount * 100) / 100).toFixed(2) }}
</span>
<span>余额{{ (Math.floor(item.balance * 100) / 100).toFixed(2) }}</span>
</div> </div>
</div> </div>
</div> </div>
@ -29,6 +33,7 @@ const props = defineProps({
.box { .box {
height: 400px; height: 400px;
overflow: auto; overflow: auto;
.dialog_footer:nth-child(1) { .dialog_footer:nth-child(1) {
margin-top: 0; margin-top: 0;
} }
@ -54,7 +59,8 @@ const props = defineProps({
span:nth-child(2) { span:nth-child(2) {
margin-top: 10px; margin-top: 10px;
color: #333; color: #999;
font-size: 12px;
} }
} }
@ -64,14 +70,18 @@ const props = defineProps({
align-items: flex-end; align-items: flex-end;
span:nth-child(1) { span:nth-child(1) {
color: #fc3d3d;
font-size: 16px; font-size: 16px;
&.active {
color: #fc3d3d;
}
} }
span:nth-child(2) { span:nth-child(2) {
margin-top: 10px; margin-top: 10px;
font-size: 14px; font-size: 14px;
color: #999;
} }
} }
} }

View File

@ -0,0 +1,55 @@
<template>
<el-drawer size="100%" :with-header="false" direction="btt" v-model="dialogVisible">
<div class="drawer_wrap">
<div class="pay_wrap">
<fastPayCard ref="fastPayCardRef" type="2" :userInfo="userInfo" @paySuccess="paySuccess"
@close="dialogVisible = false" />
</div>
</div>
</el-drawer>
</template>
<script setup>
import { ref } from "vue";
import fastPayCard from "@/components/fastPayCard.vue";
const props = defineProps({
userInfo: {
type: Object,
default: {}
}
})
const emit = defineEmits(["paySuccess"]);
const dialogVisible = ref(false);
const fastPayCardRef = ref(null);
//
function paySuccess() {
dialogVisible.value = false;
emit("paySuccess");
}
function show() {
dialogVisible.value = true;
fastPayCardRef.value.reset();
}
defineExpose({
show,
});
</script>
<style scoped lang="scss">
.drawer_wrap {
width: 100%;
height: 100%;
display: flex;
padding: var(--el-font-size-base) 0;
.pay_wrap {
flex: 1;
}
}
</style>

View File

@ -83,7 +83,8 @@
<keyboard v-if="props.membershow == '1'" @consumeFees="consumeFees"></keyboard> <keyboard v-if="props.membershow == '1'" @consumeFees="consumeFees"></keyboard>
<div class="orderbox_right_button" v-if="props.membershow == '0'"> <div class="orderbox_right_button" v-if="props.membershow == '0'">
<el-button style="width: 100%;" @click="toHome">创建订单</el-button> <el-button style="width: 100%;" @click="toHome">创建订单</el-button>
<el-button style="width: 60%;" type="primary" @click="recharge = true">账户充值</el-button> <!-- <el-button style="width: 60%;" type="primary" @click="recharge = true">账户充值</el-button> -->
<el-button style="width: 60%;" type="primary" @click="userChargeRef.show()">账户充值</el-button>
</div> </div>
<div class="orderbox_right_button" v-if="props.membershow == '1'"> <div class="orderbox_right_button" v-if="props.membershow == '1'">
<router-link to="/" style="width: 35%;"> <router-link to="/" style="width: 35%;">
@ -158,8 +159,7 @@
:close-on-click-modal="false"> :close-on-click-modal="false">
<payCard :amount="moneys" :orderId="orderId" :selecttype="1" @paySuccess="paySuccess" /> <payCard :amount="moneys" :orderId="orderId" :selecttype="1" @paySuccess="paySuccess" />
</el-dialog> </el-dialog>
<userCharge ref="userChargeRef" :userInfo="tableData.list[datarow]" @paySuccess="asyncqueryMembermember" />
</template> </template>
<script setup> <script setup>
@ -174,6 +174,9 @@ import keyboard from '@/views/home/components/keyboard.vue'
import payCard from '@/components/payCard/payCard.vue' import payCard from '@/components/payCard/payCard.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import useStorage from '@/utils/useStorage' import useStorage from '@/utils/useStorage'
import userCharge from './components/userCharge.vue'
const userChargeRef = ref(null)
const router = useRouter() const router = useRouter()