fix:钱包bug

This commit is contained in:
dzc committed 2025-01-22 21:13:52 +08:00
1 parent 075cb570c5
commit 58d290ebb3
1 file changed
+120 -123
+120 -123
View File
@@ -1,165 +1,162 @@
<template> <template>
<el-dialog title="修改余额" v-model="visible" width="30%" :close-on-click-modal="false" draggable> <el-dialog title="修改余额" v-model="visible" width="30%" :close-on-click-modal="false" draggable>
<el-form ref="dataFormRef" :model="form" :rules="dataRules" formDialogRef label-width="120px" <el-form ref="dataFormRef" :model="form" :rules="dataRules" formDialogRef label-width="120px" v-loading="loading">
v-loading="loading"> <el-row :gutter="24">
<el-row :gutter="24"> <el-col :span="24" class="mb20">
<el-col :span="24" class="mb20"> <el-form-item label="用户编号" prop="id">
<el-form-item label="用户编号" prop="id"> <el-input v-model="form.id" placeholder="" disabled />
<el-input v-model="form.id" placeholder="" disabled /> </el-form-item>
</el-form-item> </el-col>
</el-col>
<el-col :span="24" class="mb20"> <el-col :span="24" class="mb20">
<el-form-item label="用户昵称" prop="nickname"> <el-form-item label="用户昵称" prop="nickname">
<el-input v-model="form.nickname" placeholder="" disabled /> <el-input v-model="form.nickname" placeholder="" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" class="mb20"> <el-col :span="24" class="mb20">
<el-form-item label="变动前余额(元)" prop="balance"> <el-form-item label="变动前余额(元)" prop="balance">
<el-input v-model="form.balance" placeholder="" disabled /> <el-input v-model="form.balance" placeholder="" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" class="mb20"> <el-col :span="24" class="mb20">
<el-form-item label="变动类型" prop="changeType"> <el-form-item label="变动类型" prop="changeType">
<el-radio-group v-model="form.changeType"> <el-radio-group v-model="form.changeType">
<el-radio :label="1">充值</el-radio> <el-radio :label="1">充值</el-radio>
<el-radio :label="-1">减少</el-radio> <el-radio :label="-1">减少</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" class="mb20"> <el-col :span="24" class="mb20">
<el-form-item label="变动余额(元)" prop="changeBalance"> <el-form-item label="变动余额(元)" prop="changeBalance">
<el-input-number v-model="form.changeBalance" :min="0" :precision="2" :step="0.1" <el-input-number v-model="form.changeBalance" :min="0" :precision="2" :step="0.1" class="!w-240px" />
class="!w-240px" /> </el-form-item>
</el-form-item> </el-col>
</el-col>
<el-col :span="24" class="mb20"> <el-col :span="24" class="mb20">
<el-form-item label="变动后余额(元)" prop="balanceResult"> <el-form-item label="变动后余额(元)" prop="balanceResult">
<el-input v-model="balanceResult" placeholder="" disabled /> <el-input v-model="balanceResult" placeholder="" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
</el-row> </el-form>
</el-form> <template #footer>
<template #footer> <span class="dialog-footer">
<span class="dialog-footer"> <el-button @click="visible = false">取消</el-button>
<el-button @click="visible = false">取消</el-button> <el-button type="primary" @click="onSubmit" :disabled="loading">确认</el-button>
<el-button type="primary" @click="onSubmit" :disabled="loading">确认</el-button> </span>
</span> </template>
</template> </el-dialog>
</el-dialog>
</template> </template>
<script setup lang="ts" name="WalletManageDialog"> <script setup lang="ts" name="WalletManageDialog">
import { useDict } from '/@/hooks/dict'; import { useDict } from "/@/hooks/dict"
import { useMessage } from "/@/hooks/message"; import { useMessage } from "/@/hooks/message"
import * as walletApi from "/@/api/wallet/wallet-manage" import * as walletApi from "/@/api/wallet/wallet-manage"
import * as walletTransactionApi from "/@/api/wallet/wallet-transaction" import * as walletTransactionApi from "/@/api/wallet/wallet-transaction"
import * as AdminUserApi from '/@/api/admin/user' import * as AdminUserApi from "/@/api/admin/user"
import { rule } from '/@/utils/validate'; import { rule } from "/@/utils/validate"
import { displayPrice } from "/@/utils/formatMoney" import { displayPrice } from "/@/utils/formatMoney"
import { convertToInteger } from "/@/utils/convert" import { convertToInteger } from "/@/utils/convert"
const emit = defineEmits(['refresh']); const emit = defineEmits(["refresh"])
// 定义变量内容 // 定义变量内容
const dataFormRef = ref(); const dataFormRef = ref()
const visible = ref(false) const visible = ref(false)
const loading = ref(false) const loading = ref(false)
// 定义字典 // 定义字典
// 提交表单数据 // 提交表单数据
const form = reactive<any>({ const form = reactive<any>({
id: undefined, id: undefined,
walletId: undefined, walletId: undefined,
nickname: undefined, nickname: undefined,
balance: '0', balance: "0",
changeBalance: 0, changeBalance: 0,
changeType: 1 changeType: 1,
}); })
/** 变动后的余额 */ /** 变动后的余额 */
const balanceResult = computed(() => const balanceResult = computed(() =>
displayPrice( displayPrice(convertToInteger(form.balance) + convertToInteger(form.changeBalance) * form.changeType),
convertToInteger(form.balance) +
convertToInteger(form.changeBalance) * form.changeType
)
) )
// 定义校验规则 // 定义校验规则
const dataRules = ref({ const dataRules = ref({
changeBalance: [{ required: true, message: '变动余额不能为空', trigger: 'blur' }] changeBalance: [{ required: true, message: "变动余额不能为空", trigger: "blur" }],
}) })
// 打开弹窗 // 打开弹窗
const openDialog = (userId: string, id: string) => { const openDialog = (userId: string, id: string) => {
visible.value = true visible.value = true
form.id = '' form.id = ""
// 重置表单数据 // 重置表单数据
nextTick(() => { nextTick(() => {
dataFormRef.value?.resetFields(); dataFormRef.value?.resetFields()
}); })
// 获取walletManage信息 // 获取walletManage信息
if (id) { if (id) {
form.id = id form.id = id
getwalletManageData(userId, id) getwalletManageData(userId, id)
} }
}; }
// 提交 // 提交
const onSubmit = async () => { const onSubmit = async () => {
const valid = await dataFormRef.value.validate().catch(() => { }); const valid = await dataFormRef.value.validate().catch(() => {})
if (!valid) return false; if (!valid) return false
if (form.changeBalance <= 0) { if (form.changeBalance <= 0) {
useMessage().error('变动余额不能为零') useMessage().error("变动余额不能为零")
return return
} }
if (convertToInteger(balanceResult.value) < 0) { if (convertToInteger(balanceResult.value) < 0) {
useMessage().error('变动后的余额不能小于 0') useMessage().error("变动后的余额不能小于 0")
return return
} }
try { try {
loading.value = true; loading.value = true
const pa = { const pa = {
...form, ...form,
userId: form.id, userId: form.id,
walletId: form.walletId, walletId: form.walletId,
balance: form.changeBalance * 100, balance: form.changeBalance * 100,
} }
await walletTransactionApi.updateBalance(pa) if (pa.changeType == -1) {
useMessage().success("操作成功"); pa.balance = -1 * pa.balance
visible.value = false; }
emit('refresh'); await walletTransactionApi.updateBalance(pa)
} catch (err: any) { useMessage().success("操作成功")
useMessage().error(err.msg); visible.value = false
} finally { emit("refresh")
loading.value = false; } catch (err: any) {
} useMessage().error(err.msg)
}; } finally {
loading.value = false
}
}
// 初始化表单数据 // 初始化表单数据
const getwalletManageData = async (userId: string, id: string) => { const getwalletManageData = async (userId: string, id: string) => {
// 获取数据 // 获取数据
loading.value = true loading.value = true
try { try {
const { data: user } = await AdminUserApi.getObj(userId) const { data: user } = await AdminUserApi.getObj(userId)
const { data: wallet } = await walletApi.getObj(id) const { data: wallet } = await walletApi.getObj(id)
form.id = user.userId form.id = user.userId
form.walletId = wallet.id form.walletId = wallet.id
form.nickname = user.nickname form.nickname = user.nickname
form.balance = displayPrice(wallet.balance, "") form.balance = displayPrice(wallet.balance, "")
form.changeType = 1 form.changeType = 1
form.changeBalance = 0 form.changeBalance = 0
} finally { } finally {
loading.value = false loading.value = false
} }
}; }
// 暴露变量 // 暴露变量
defineExpose({ defineExpose({
openDialog openDialog,
}); })
</script> </script>