优化退款密码

This commit is contained in:
gyq
2024-08-31 10:20:25 +08:00
parent 2d2a014bc4
commit 86c8ca6472
13 changed files with 408 additions and 499 deletions

View File

@@ -1,40 +1,187 @@
<template>
<div class="box">
<div class="dialog_footer" v-for="(item, index) in props.flowingwater.list" :key="index">
<div class="dialog_footer_left">
<span>{{ item.biz_name }}</span>
<span>{{ dayjs(item.create_time).format("YYYY-MM-DD HH:mm:ss") }}</span>
<el-dialog v-model="visableDialog" title="余额明细" width="500">
<div class="box">
<div class="box1" v-loading="tableData.loading">
<div class="dialog_footer" v-for="(item, index) in tableData.list" :key="index">
<div class="dialog_footer_left">
<span>{{ item.biz_name }}</span>
<span>{{ dayjs(item.create_time).format("YYYY-MM-DD HH:mm:ss") }}</span>
</div>
<div class="dialog_footer_right">
<span :class="{ active: item.type == '+' }">
<template v-if="item.type == '+'">+</template>
<template v-else>-</template>
{{ formatDecimal(item.amount) }}
</span>
<span>余额{{ formatDecimal(item.balance) }}</span>
</div>
<div class="btm" style="width: 80px;">
<el-button type="primary"
v-if="item.biz_code == 'scanMemberIn' || item.biz_code == 'cashMemberIn'"
@click="showRefundHandle(item)" :disabled="item.is_return == 1">
<template v-if="item.is_return == 0">退款</template>
<template v-if="item.is_return == 1">已退</template>
</el-button>
</div>
</div>
<el-empty description="暂无数据" v-if="!tableData.list.length" />
</div>
<div class="dialog_footer_right">
<span :class="{ active: item.type == '+' }">
<template v-if="item.type == '+'">+</template>
<template v-else>-</template>
{{ formatDecimal(item.amount) }}
</span>
<span>余额{{ formatDecimal(item.balance) }}</span>
<div class="page_wrap">
<el-pagination v-model:current-page="tableData.page" background layout="prev, pager, next, total"
:total="tableData.total" @current-change="memberqueryMemberAccountAjax" />
</div>
<el-dialog v-model="showDialog" title="会员充值退款">
<el-form ref="formRef" :model="form" :rules="rules" label-width="100">
<el-form-item label="退款金额" prop="amount">
<el-input-number v-model="form.amount" :min="1" :max="refundItem.amount"
placeholder="请输入退款金额" />
</el-form-item>
<el-form-item label="退款说明">
<el-input v-model="form.remark" placeholder="请输入退款说明" />
</el-form-item>
</el-form>
<template #footer>
<div style="padding: 0 20px 20px;">
<el-button @click="showDialog = false">取消</el-button>
<el-button type="primary" :loading="loading" @click="refundHandle">确定</el-button>
</div>
</template>
</el-dialog>
<takeFoodCode ref="takeFoodCodeRef" title="退款密码" :type="2" input-type="password" placeholder="请输入退款密码"
@success="passwordSuccess" />
</div>
<el-empty description="暂无数据" v-if="!props.flowingwater.list.length" />
</div>
</el-dialog>
</template>
<script setup>
import { ref } from 'vue'
import { dayjs } from 'element-plus'
import md5 from "js-md5";
import { onMounted, reactive, ref } from 'vue'
import { dayjs, ElMessage } from 'element-plus'
import { formatDecimal } from '@/utils/index'
import { returnFlow, memberqueryMemberAccount } from '@/api/member/index.js'
import { queryPwdInfo } from '@/api/user.js'
import takeFoodCode from "@/components/takeFoodCode.vue";
const props = defineProps({
flowingwater: {
type: Object,
default: {}
const memberId = ref('')
const visableDialog = ref(false)
const tableData = reactive({
page: 1,
total: 0,
loading: false,
list: []
})
// 会员流水
async function memberqueryMemberAccountAjax() {
try {
tableData.loading = true
let res = await memberqueryMemberAccount({
memberId: memberId.value,
page: tableData.page,
pageSize: 10
})
tableData.loading = false
tableData.total = res.total
tableData.list = res.list
} catch (error) {
console.log(error);
}
}
const emits = defineEmits(['refund'])
const takeFoodCodeRef = ref(null)
const showDialog = ref(false)
const form = reactive({
amount: 1,
remark: ''
})
const rules = reactive({
amount: [
{
trigger: 'blur',
required: true,
message: '请输入退款金额'
}
]
})
const loading = ref(false)
const refundItem = ref({})
const formRef = ref(null)
function showRefundHandle(item) {
refundItem.value = item
showDialog.value = true
}
// 线上充值退款
function refundHandle() {
formRef.value.validate(async valid => {
try {
if (valid) {
loading.value = true
let res = await queryPwdInfo()
loading.value = false
if (res.isMemberReturn == 1) {
takeFoodCodeRef.value.show();
} else {
passwordSuccess()
}
}
} catch (error) {
loading.value = false
console.log(error);
}
})
}
// 得到退款密码
async function passwordSuccess(e = '') {
try {
loading.value = true
const res = await returnFlow({
flowId: refundItem.value.id,
remark: form.remark,
amount: form.amount,
pwd: e ? md5(e) : '',
})
ElMessage.success('退款成功')
form.amount = 1
form.remark = ''
showDialog.value = false
loading.value = false
emits('refund')
memberqueryMemberAccountAjax()
} catch (error) {
loading.value = false
console.log(error);
}
}
function show(id) {
memberId.value = id
visableDialog.value = true
memberqueryMemberAccountAjax()
}
defineExpose({
show
})
</script>
<style scoped lang="scss">
.box {
height: 400px;
overflow: auto;
.box1 {
height: 350px;
overflow-y: auto;
}
.page_wrap {
padding-top: 20px;
}
.dialog_footer:nth-child(1) {
margin-top: 0;
@@ -43,12 +190,12 @@ const props = defineProps({
.dialog_footer {
margin-top: 10px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #ececec;
padding-bottom: 6px;
.dialog_footer_left {
flex: 1;
display: flex;
flex-direction: column;
align-items: flex-start;
@@ -67,9 +214,11 @@ const props = defineProps({
}
.dialog_footer_right {
width: 150px;
display: flex;
flex-direction: column;
align-items: flex-end;
padding-right: 20px;
span:nth-child(1) {
font-size: 16px;

View File

@@ -48,7 +48,7 @@
<div class="orderbox_right_top_item_tow">{{ tableData.list.length != 0 ?
tableData.list[datarow].levelConsume : '无' }}</div>
</div>
<div class="orderbox_right_top_item" @click="stored = true">
<div class="orderbox_right_top_item" @click="dialogRef.show(tableData.list[datarow].id)">
<div class="orderbox_right_top_item_one">
<el-icon :size="24" style="color:#00b58d ;">
<Box />
@@ -94,10 +94,7 @@
<el-button style="width: 60%;" type="primary">确认</el-button>
</div>
</div>
<el-dialog v-model="stored" title="余额明细" width="500" :before-close="handleClose">
<add :flowingwater='flowingwater' />
</el-dialog>
<add ref="dialogRef" @refund="refundSuccess" @page-change="MemberAccount" />
<el-dialog v-model="memberaddshow" title="添加会员" width="600" :before-close="memberaddshowclose"
@open="membrform = { ...resetMembrform }">
<el-form ref="formRef" :rules="rules" :model="membrform" label-width="70px" hide-required-asterisk>
@@ -194,6 +191,9 @@ const stored = ref(false)//储值余额
const handleClose = async () => {
stored.value = !stored.value
}
const dialogRef = ref(null)
const emit = defineEmits('paySuccess')
function paySuccess() {
@@ -238,6 +238,12 @@ const payCarddialogVisible = ref(false)
const orderId = ref('')
// 退款成功
function refundSuccess() {
asyncqueryMembermember()
MemberAccount()
}
const confirmEvent = async () => {//子组件 确认按钮
orderId.value = tableData.list[datarow.value].id
payCarddialogVisible.value = true
@@ -262,15 +268,15 @@ const confirmEvent = async () => {//子组件 确认按钮
// }
}
const MemberAccount = async () => {//获取流水
const MemberAccount = async (page = 1) => {//获取流水
try {
let res = await memberqueryMemberAccount({
memberId: tableData.list[datarow.value].id,
page: 1,
page: page,
pageSize: 10
})
flowingwater.total = res.total
flowingwater.list = res.list
// flowingwater.list = res.list
} catch (error) {
}