This commit is contained in:
@@ -64,11 +64,20 @@
|
||||
>
|
||||
<ElForm ref="formRef" :model="form" :rules="rules" label-width="120px">
|
||||
<ElFormItem label="运营商编码" prop="carrier_code">
|
||||
<ElInput
|
||||
v-model="form.carrier_code"
|
||||
placeholder="请输入运营商编码"
|
||||
:disabled="dialogType === 'edit'"
|
||||
/>
|
||||
<div style="display: flex; gap: 8px">
|
||||
<ElInput
|
||||
v-model="form.carrier_code"
|
||||
placeholder="请输入运营商编码或点击生成"
|
||||
:disabled="dialogType === 'edit'"
|
||||
clearable
|
||||
style="flex: 1"
|
||||
/>
|
||||
<CodeGeneratorButton
|
||||
v-if="dialogType === 'add'"
|
||||
code-type="carrier"
|
||||
@generated="handleCodeGenerated"
|
||||
/>
|
||||
</div>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="运营商名称" prop="carrier_name">
|
||||
<ElInput v-model="form.carrier_name" placeholder="请输入运营商名称" />
|
||||
@@ -150,6 +159,7 @@
|
||||
import ArtButtonTable from '@/components/core/forms/ArtButtonTable.vue'
|
||||
import ArtMenuRight from '@/components/core/others/ArtMenuRight.vue'
|
||||
import TableContextMenuHint from '@/components/core/others/TableContextMenuHint.vue'
|
||||
import CodeGeneratorButton from '@/components/business/CodeGeneratorButton.vue'
|
||||
import type { MenuItemType } from '@/components/core/others/ArtMenuRight.vue'
|
||||
import { formatDateTime } from '@/utils/business/format'
|
||||
import {
|
||||
@@ -441,6 +451,15 @@
|
||||
})
|
||||
}
|
||||
|
||||
// 处理编码生成
|
||||
const handleCodeGenerated = (code: string) => {
|
||||
form.carrier_code = code
|
||||
// 清除该字段的验证错误提示
|
||||
nextTick(() => {
|
||||
formRef.value?.clearValidate('carrier_code')
|
||||
})
|
||||
}
|
||||
|
||||
// 删除运营商
|
||||
const deleteCarrier = (row: any) => {
|
||||
ElMessageBox.confirm(`确定删除运营商 ${row.carrier_name} 吗?`, '删除确认', {
|
||||
|
||||
@@ -151,6 +151,23 @@
|
||||
{{ formatDateTime(scope.row.created_at) }}
|
||||
</template>
|
||||
</ElTableColumn>
|
||||
<ElTableColumn label="操作" width="150" fixed="right">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.status === 99" style="display: flex; gap: 8px">
|
||||
<ArtButtonTable
|
||||
text="入账"
|
||||
iconColor="#67C23A"
|
||||
@click="handleResolveCommission(scope.row, 'release')"
|
||||
/>
|
||||
<ArtButtonTable
|
||||
text="作废"
|
||||
iconColor="#F56C6C"
|
||||
@click="handleResolveCommission(scope.row, 'invalidate')"
|
||||
/>
|
||||
</div>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</ElTableColumn>
|
||||
</template>
|
||||
</ArtTable>
|
||||
</ElTabPane>
|
||||
@@ -233,6 +250,69 @@
|
||||
</ElTabPane>
|
||||
</ElTabs>
|
||||
</ElDrawer>
|
||||
|
||||
<!-- 佣金修正对话框 -->
|
||||
<ElDialog
|
||||
v-model="resolveDialogVisible"
|
||||
:title="resolveAction === 'release' ? '佣金入账' : '佣金作废'"
|
||||
width="500px"
|
||||
>
|
||||
<ElAlert
|
||||
:title="
|
||||
resolveAction === 'release'
|
||||
? '确认将该笔待审佣金记录入账'
|
||||
: '确认将该笔待审佣金记录作废'
|
||||
"
|
||||
:type="resolveAction === 'release' ? 'success' : 'warning'"
|
||||
style="margin-bottom: 16px"
|
||||
:closable="false"
|
||||
/>
|
||||
|
||||
<ElForm
|
||||
ref="resolveFormRef"
|
||||
:model="resolveForm"
|
||||
:rules="resolveRules"
|
||||
label-width="100px"
|
||||
>
|
||||
<ElFormItem v-if="resolveAction === 'release'" label="入账金额" prop="amount">
|
||||
<ElInputNumber
|
||||
v-model="resolveForm.amount"
|
||||
:min="0"
|
||||
:step="100"
|
||||
:precision="0"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
placeholder="请输入入账金额(分)"
|
||||
/>
|
||||
<div style="color: var(--el-text-color-secondary); font-size: 12px; margin-top: 4px">
|
||||
金额单位为分,例如:100元 = 10000分
|
||||
</div>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="备注" prop="remark">
|
||||
<ElInput
|
||||
v-model="resolveForm.remark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入备注(可选,最多500字符)"
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</ElFormItem>
|
||||
</ElForm>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<ElButton @click="resolveDialogVisible = false">取消</ElButton>
|
||||
<ElButton
|
||||
:type="resolveAction === 'release' ? 'success' : 'warning'"
|
||||
@click="handleResolveSubmit"
|
||||
:loading="resolveSubmitLoading"
|
||||
>
|
||||
确认
|
||||
</ElButton>
|
||||
</div>
|
||||
</template>
|
||||
</ElDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -240,11 +320,13 @@
|
||||
import { h, watch, onBeforeUnmount } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { CommissionService } from '@/api/modules'
|
||||
import { ElMessage, ElTag } from 'element-plus'
|
||||
import { ElMessage, ElMessageBox, ElTag } from 'element-plus'
|
||||
import type { FormInstance, FormRules } from 'element-plus'
|
||||
import type {
|
||||
ShopCommissionSummaryItem,
|
||||
ShopCommissionRecordItem,
|
||||
WithdrawalRequestItem
|
||||
WithdrawalRequestItem,
|
||||
CommissionResolveAction
|
||||
} from '@/types/api/commission'
|
||||
import { useCheckedColumns } from '@/composables/useCheckedColumns'
|
||||
import { useAuth } from '@/composables/useAuth'
|
||||
@@ -321,6 +403,34 @@
|
||||
total: 0
|
||||
})
|
||||
|
||||
// 佣金修正对话框状态
|
||||
const resolveDialogVisible = ref(false)
|
||||
const resolveFormRef = ref<FormInstance>()
|
||||
const resolveSubmitLoading = ref(false)
|
||||
const resolveAction = ref<CommissionResolveAction>('release')
|
||||
const currentCommissionId = ref<number>(0)
|
||||
const resolveForm = reactive({
|
||||
amount: undefined as number | undefined,
|
||||
remark: ''
|
||||
})
|
||||
|
||||
// 佣金修正表单验证规则
|
||||
const resolveRules = computed<FormRules>(() => ({
|
||||
amount:
|
||||
resolveAction.value === 'release'
|
||||
? [
|
||||
{ required: true, message: '请输入入账金额', trigger: 'blur' },
|
||||
{
|
||||
type: 'number',
|
||||
min: 1,
|
||||
message: '入账金额必须大于0',
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
: [],
|
||||
remark: [{ max: 500, message: '备注最多500字符', trigger: 'blur' }]
|
||||
}))
|
||||
|
||||
// 列配置
|
||||
const columnOptions = [
|
||||
{ label: '店铺编码', prop: 'shop_code' },
|
||||
@@ -624,6 +734,68 @@
|
||||
|
||||
// 暂无其他菜单项
|
||||
}
|
||||
|
||||
// 处理佣金修正
|
||||
const handleResolveCommission = (row: ShopCommissionRecordItem, action: CommissionResolveAction) => {
|
||||
currentCommissionId.value = row.id
|
||||
resolveAction.value = action
|
||||
resolveForm.amount = undefined
|
||||
resolveForm.remark = ''
|
||||
resolveDialogVisible.value = true
|
||||
}
|
||||
|
||||
// 提交佣金修正
|
||||
const handleResolveSubmit = async () => {
|
||||
if (!resolveFormRef.value) return
|
||||
|
||||
await resolveFormRef.value.validate(async (valid) => {
|
||||
if (valid) {
|
||||
const actionText = resolveAction.value === 'release' ? '入账' : '作废'
|
||||
const confirmText =
|
||||
resolveAction.value === 'release'
|
||||
? `确认将该笔佣金记录入账 ${formatMoney(resolveForm.amount || 0)} 吗?`
|
||||
: '确认将该笔佣金记录作废吗?'
|
||||
|
||||
try {
|
||||
await ElMessageBox.confirm(confirmText, '确认操作', {
|
||||
confirmButtonText: '确认',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
|
||||
resolveSubmitLoading.value = true
|
||||
try {
|
||||
const params: any = {
|
||||
action: resolveAction.value
|
||||
}
|
||||
|
||||
if (resolveAction.value === 'release' && resolveForm.amount) {
|
||||
params.amount = resolveForm.amount
|
||||
}
|
||||
|
||||
if (resolveForm.remark) {
|
||||
params.remark = resolveForm.remark
|
||||
}
|
||||
|
||||
await CommissionService.resolveCommissionRecord(currentCommissionId.value, params)
|
||||
ElMessage.success(`${actionText}成功`)
|
||||
resolveDialogVisible.value = false
|
||||
resolveFormRef.value?.resetFields()
|
||||
|
||||
// 刷新佣金明细列表
|
||||
loadCommissionRecords()
|
||||
} catch (error: any) {
|
||||
console.error(error)
|
||||
ElMessage.error(error?.message || `${actionText}失败`)
|
||||
} finally {
|
||||
resolveSubmitLoading.value = false
|
||||
}
|
||||
} catch {
|
||||
// 用户取消
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -201,6 +201,9 @@
|
||||
const rejectRules = reactive<FormRules>({
|
||||
reject_reason: [
|
||||
{ required: true, message: t('commission.validation.rejectReasonRequired'), trigger: 'blur' }
|
||||
],
|
||||
remark: [
|
||||
{ required: true, message: t('commission.validation.remarkRequired'), trigger: 'blur' }
|
||||
]
|
||||
})
|
||||
|
||||
@@ -402,7 +405,7 @@
|
||||
try {
|
||||
await CommissionService.rejectWithdrawal(currentWithdrawalId.value, {
|
||||
reject_reason: rejectForm.reject_reason,
|
||||
remark: rejectForm.remark || undefined
|
||||
remark: rejectForm.remark
|
||||
})
|
||||
ElMessage.success(t('commission.messages.rejectSuccess'))
|
||||
rejectDialogVisible.value = false
|
||||
|
||||
Reference in New Issue
Block a user