electripper-v2-ui/src/views/bst/withdraw/components/WithdrawVerifyDialog.vue

171 lines
5.7 KiB
Vue
Raw Normal View History

2025-04-08 08:48:03 +08:00
<template>
<el-dialog
title="提现详情"
:visible.sync="dialogVisible"
width="700px"
append-to-body
@open="handleOpen"
>
<el-descriptions :column="2" border v-loading="loading" title="申请信息">
<el-descriptions-item label="提现单号" :span="2">
{{ detail.no }}
<dict-tag :options="dict.type.account_type" :value="detail.accountType" style="margin-left: 4px" size="small"/>
<dict-tag :options="dict.type.withdraw_status" :value="detail.status" style="margin-left: 4px" size="small"/>
</el-descriptions-item>
<el-descriptions-item label="申请时间" :span="2">{{ detail.createTime | dv}}</el-descriptions-item>
<el-descriptions-item label="用户">{{ detail.userName | dv}}</el-descriptions-item>
<el-descriptions-item label="申请金额">{{ detail.amount | fix2 | dv }} </el-descriptions-item>
<el-descriptions-item label="到账金额">{{ detail.arrivalAmount | fix2 | dv }} </el-descriptions-item>
<el-descriptions-item label="服务费">
{{ detail.serviceCharge | fix2 | dv }}
<dict-tag :options="dict.type.withdraw_service_type" :value="detail.serviceType" size="mini" style="margin-left: 4px"/>
<template v-if="detail.servicePoint">{{ detail.servicePoint | fix2 | dv }} %</template>
</el-descriptions-item>
<el-descriptions-item label="账号" v-if="AccountType.QR != detail.accountType">{{ detail.accountNo | dv}}</el-descriptions-item>
<el-descriptions-item label="姓名">{{ detail.accountName | dv}}</el-descriptions-item>
<el-descriptions-item label="手机号">{{ detail.accountMobile | dv}}</el-descriptions-item>
<el-descriptions-item label="身份证号">{{ detail.accountIdCard | dv}}</el-descriptions-item>
<el-descriptions-item label="银行名称">{{ detail.bankName | dv}}</el-descriptions-item>
<el-descriptions-item label="卡面名称">{{ detail.bankCardName | dv}}</el-descriptions-item>
<el-descriptions-item label="二维码" :span="2" v-if="AccountType.QR == detail.accountType">
<image-preview :src="detail.no" :width="100" :height="100" />
</el-descriptions-item>
</el-descriptions>
<el-form ref="form" :model="form" :rules="rules" label-width="80px" v-if="canVerify">
<el-form-item label="审核意见" prop="remark">
<el-input
type="textarea"
v-model="form.remark"
:rows="3"
placeholder="请输入审核意见"
maxlength="200"
show-word-limit
/>
</el-form-item>
</el-form>
<el-descriptions :column="2" border v-else title="审核结果">
<el-descriptions-item label="审核时间">
{{detail.verifyTime | dv}}
</el-descriptions-item>
<el-descriptions-item label="审核人">
{{detail.verifyUserName | dv}}
</el-descriptions-item>
<el-descriptions-item label="审核意见" :span="2">
{{ detail.verifyRemark | dv}}
</el-descriptions-item>
</el-descriptions>
<div slot="footer" class="dialog-footer">
<el-button type="success" plain @click="submitForm(true)" v-if="canVerify" icon="el-icon-check" :loading="submitLoading"> </el-button>
<el-button type="danger" plain @click="submitForm(false)" v-if="canVerify" icon="el-icon-close" :loading="submitLoading"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { getWithdraw, verifyWithdraw } from "@/api/bst/withdraw";
import { AccountType, WithdrawStatus } from "@/utils/enums";
export default {
name: 'WithdrawVerifyDialog',
dicts: ['account_type', 'withdraw_service_type', 'withdraw_status', 'withdraw_verify_result'],
props: {
visible: {
type: Boolean,
default: false
},
id: {
type: [String, Number],
default: null
}
},
data() {
return {
loading: false,
AccountType,
WithdrawStatus,
detail: {},
form: {
id: null,
pass: null,
remark: null
},
rules: {
},
submitLoading: false,
}
},
computed: {
canVerify() {
return WithdrawStatus.canVerify().includes(this.detail.status)
&& this.checkPermi(['bst:withdraw:verify']);
},
dialogVisible: {
get() {
return this.visible;
},
set(val) {
this.$emit('update:visible', val);
}
}
},
methods: {
handleOpen() {
this.reset();
if (this.id != null) {
this.getDetail();
}
},
reset() {
this.detail = {};
this.form = {
id: null,
status: null,
verifyRemark: null
};
this.$nextTick(() => {
this.$refs.form && this.$refs.form.clearValidate();
});
},
getDetail() {
this.loading = true;
getWithdraw(this.id).then(response => {
this.detail = response.data;
this.form.id = response.data.id;
}).finally(() => {
this.loading = false;
});
},
submitForm(pass) {
this.$refs.form.validate(valid => {
if (valid) {
this.form.pass = pass;
this.$confirm(`确定要${pass ? '通过' : '驳回'}吗?`).then(() => {
this.submitLoading = true;
verifyWithdraw(this.form).then(response => {
this.$modal.msgSuccess("操作成功");
this.dialogVisible = false;
this.$emit('success');
}).finally(() => {
this.submitLoading = false;
});
});
}
});
},
cancel() {
this.dialogVisible = false;
this.reset();
}
}
}
</script>
<style lang="scss" scoped>
.el-descriptions {
margin-bottom: 20px;
}
</style>