feat: 完善订单定价与支付收益管理
This commit is contained in:
@@ -92,11 +92,6 @@
|
||||
{{ formatDateTime(row.CreatedAt) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="warning" size="small" @click="handleRefund(row)">退款</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div class="pagination-wrapper">
|
||||
@@ -131,6 +126,16 @@
|
||||
<el-radio label="sub">减少</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="balanceForm.state === 'add'" label="收益入账">
|
||||
<div class="account-amount-field">
|
||||
<el-switch
|
||||
v-model="balanceForm.account_amount"
|
||||
active-text="计入 007pay"
|
||||
inactive-text="不计入"
|
||||
/>
|
||||
<div class="form-tip">加款同时生成 007pay 手工入账记录,用于收益统计。</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="变动金额" prop="price">
|
||||
<el-input v-model.number="balanceForm.price" placeholder="请输入变动金额">
|
||||
<template #prepend>¥</template>
|
||||
@@ -180,28 +185,6 @@
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 退款对话框 -->
|
||||
<el-dialog v-model="refundDialogVisible" title="退款" width="500px">
|
||||
<el-form ref="refundFormRef" :model="refundForm" :rules="refundRules" label-width="120px">
|
||||
<el-form-item label="余额记录ID">
|
||||
<el-input :value="refundForm.history_id" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="订单ID" prop="order_id">
|
||||
<el-input v-model="refundForm.order_id" :min="0" style="width: 100%" placeholder="请输入订单ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="退款方式" prop="bandwidth">
|
||||
<el-radio-group v-model="refundForm.bandwidth">
|
||||
<el-radio :label="false">退回余额</el-radio>
|
||||
<el-radio :label="true">提现</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="form-tip">退回余额:将退款金额添加到对应余额;提现:将退款金额提现</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="refundDialogVisible = false">取消</el-button>
|
||||
<el-button type="warning" @click="submitRefundForm" :loading="refundLoading">确认退款</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -210,7 +193,7 @@ import { ref, reactive, onMounted, computed, watch } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { Refresh, ArrowLeft } from '@element-plus/icons-vue'
|
||||
import { getUserBalanceRecord, editUserBalance, addUserConsumption, getUserBalanceCount, getUserList, refundBalance } from '@/api/admin/user'
|
||||
import { getUserBalanceRecord, editUserBalance, addUserConsumption, getUserBalanceCount, getUserList } from '@/api/admin/user'
|
||||
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
@@ -246,11 +229,8 @@ const userList = ref([])
|
||||
// 对话框
|
||||
const balanceDialogVisible = ref(false)
|
||||
const recordDialogVisible = ref(false)
|
||||
const refundDialogVisible = ref(false)
|
||||
const balanceFormRef = ref(null)
|
||||
const recordFormRef = ref(null)
|
||||
const refundFormRef = ref(null)
|
||||
const refundLoading = ref(false)
|
||||
|
||||
// 余额表单
|
||||
const balanceForm = reactive({
|
||||
@@ -258,7 +238,8 @@ const balanceForm = reactive({
|
||||
balance_type: '',
|
||||
price: 0,
|
||||
state: 'add',
|
||||
note: ''
|
||||
note: '',
|
||||
account_amount: false
|
||||
})
|
||||
|
||||
const balanceRules = {
|
||||
@@ -290,18 +271,6 @@ const recordRules = {
|
||||
note: [{ required: true, message: '请输入备注', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
// 退款表单
|
||||
const refundForm = reactive({
|
||||
history_id: 0,
|
||||
order_id: 0,
|
||||
bandwidth: false
|
||||
})
|
||||
|
||||
const refundRules = {
|
||||
order_id: [{ required: true, message: '请输入订单ID', trigger: 'blur' }],
|
||||
bandwidth: [{ required: true, message: '请选择退款方式', trigger: 'change' }]
|
||||
}
|
||||
|
||||
// 当前余额显示
|
||||
const currentBalanceDisplay = computed(() => {
|
||||
const balance = balanceList.value.find(b => userBalance[b.type]?.type === balanceForm.balance_type)
|
||||
@@ -445,7 +414,8 @@ const handleEditBalance = (balanceType) => {
|
||||
balance_type: apiType,
|
||||
price: 0,
|
||||
state: 'add',
|
||||
note: ''
|
||||
note: '',
|
||||
account_amount: false
|
||||
})
|
||||
balanceDialogVisible.value = true
|
||||
}
|
||||
@@ -471,7 +441,11 @@ const submitBalanceForm = () => {
|
||||
balanceFormRef.value?.validate(async (valid) => {
|
||||
if (valid) {
|
||||
try {
|
||||
const res = await editUserBalance(balanceForm)
|
||||
const submitData = { ...balanceForm }
|
||||
if (submitData.state !== 'add' || !submitData.account_amount) {
|
||||
delete submitData.account_amount
|
||||
}
|
||||
const res = await editUserBalance(submitData)
|
||||
if (res.data.code === 200) {
|
||||
ElMessage.success('修改成功')
|
||||
balanceDialogVisible.value = false
|
||||
@@ -517,40 +491,6 @@ const handleRecordCurrentChange = () => {
|
||||
fetchBalanceRecord()
|
||||
}
|
||||
|
||||
// 退款
|
||||
const handleRefund = (row) => {
|
||||
Object.assign(refundForm, {
|
||||
history_id: row.Id,
|
||||
order_id: String(row.OrderId) || 0,
|
||||
bandwidth: false
|
||||
})
|
||||
refundDialogVisible.value = true
|
||||
}
|
||||
|
||||
// 提交退款
|
||||
const submitRefundForm = () => {
|
||||
refundFormRef.value?.validate(async (valid) => {
|
||||
if (valid) {
|
||||
refundLoading.value = true
|
||||
try {
|
||||
const res = await refundBalance(refundForm)
|
||||
if (res.data.code === 200) {
|
||||
ElMessage.success('退款成功')
|
||||
refundDialogVisible.value = false
|
||||
fetchUserBalance()
|
||||
} else {
|
||||
ElMessage.error(res.data.message || '退款失败')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('退款错误:', error)
|
||||
ElMessage.error('退款失败')
|
||||
} finally {
|
||||
refundLoading.value = false
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化
|
||||
onMounted(() => {
|
||||
getUserListData()
|
||||
@@ -573,6 +513,15 @@ watch(
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
watch(
|
||||
() => balanceForm.state,
|
||||
(state) => {
|
||||
if (state !== 'add') {
|
||||
balanceForm.account_amount = false
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -802,6 +751,12 @@ watch(
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.account-amount-field {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
/* 响应式 */
|
||||
@media (max-width: 1200px) {
|
||||
.balance-cards {
|
||||
|
||||
Reference in New Issue
Block a user