salary
parent
ea7fae45e3
commit
8df1f7d25a
@ -0,0 +1,137 @@ |
||||
<template> |
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="900px"> |
||||
<Descriptions |
||||
title="申请详情" |
||||
:data="orderInfo" |
||||
:schema="applySchema" |
||||
:columns="2" |
||||
labelWidth="130px" |
||||
/> |
||||
<Descriptions |
||||
title="审核详情" |
||||
:data="orderInfo" |
||||
:schema="orderInfo.state == 2 ? cancelSchema : auditSchema" |
||||
:columns="orderInfo.state == 2 ? 2 : 3" |
||||
labelWidth="100px" |
||||
/> |
||||
</Dialog> |
||||
</template> |
||||
<script name="DialogAfterSaleDetail" setup> |
||||
import { getAfterSaleDetail } from '@/api/clue/afterSale' |
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示 |
||||
const dialogTitle = ref('') // 弹窗的标题 |
||||
|
||||
const applySchema = [ |
||||
{ |
||||
field: 'name', |
||||
label: '线索名称', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'phone', |
||||
label: '联系方式', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'signUserName', |
||||
label: '登记人', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'dealDate', |
||||
label: '登记时间', |
||||
dateFormat: 'YYYY-MM-DD HH:mm:ss', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'reason', |
||||
label: '售后原因', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'refundAmount', |
||||
label: '退款金额', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'isReturns', |
||||
label: '是否退货', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'solution', |
||||
label: '解决方案', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'applyUserName', |
||||
label: '申请人', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'applyTime', |
||||
label: '申请时间', |
||||
dateFormat: 'YYYY-MM-DD HH:mm:ss', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'remark', |
||||
label: '备注', |
||||
span: 2, |
||||
isEditor: true |
||||
} |
||||
] |
||||
|
||||
const auditSchema = [ |
||||
{ |
||||
field: 'stateName', |
||||
label: '审核状态', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'checkUserName', |
||||
label: '审核人', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'checkTime', |
||||
label: '审核时间', |
||||
dateFormat: 'YYYY-MM-DD HH:mm:ss', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'checkRemark', |
||||
label: '备注', |
||||
span: 3, |
||||
isEditor: true |
||||
} |
||||
] |
||||
|
||||
const cancelSchema = [ |
||||
{ |
||||
field: 'stateName', |
||||
label: '审核状态', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'revokeTime', |
||||
label: '撤销时间', |
||||
dateFormat: 'YYYY-MM-DD HH:mm:ss', |
||||
span: 1 |
||||
} |
||||
] |
||||
|
||||
const orderInfo = ref({}) |
||||
/** 打开弹窗 */ |
||||
const open = async (id) => { |
||||
dialogVisible.value = true |
||||
dialogTitle.value = '售后申请详情' |
||||
try { |
||||
orderInfo.value = await getAfterSaleDetail({ id }) |
||||
} catch (error) { |
||||
console.log(error) |
||||
} |
||||
} |
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗 |
||||
</script> |
@ -0,0 +1,87 @@ |
||||
<template> |
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="600px"> |
||||
<el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="80px"> |
||||
<el-form-item label="状态" prop="state"> |
||||
<el-radio-group v-model="formData.state"> |
||||
<el-radio :label="3"> 通过 </el-radio> |
||||
<el-radio :label="4"> 驳回 </el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="备注" prop="remark"> |
||||
<Editor v-model:modelValue="formData.remark" /> |
||||
</el-form-item> |
||||
</el-form> |
||||
<template #footer> |
||||
<el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button> |
||||
<el-button @click="dialogVisible = false">取 消</el-button> |
||||
</template> |
||||
</Dialog> |
||||
</template> |
||||
<script name="DialogAfterSaleAudit" setup> |
||||
import { batchAuditAfterSale } from '@/api/clue/afterSale' |
||||
import { batchAuditPayment } from '@/api/clue/payment' |
||||
|
||||
const message = useMessage() // 消息弹窗 |
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示 |
||||
const dialogTitle = ref('') // 弹窗的标题 |
||||
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 |
||||
const formData = ref({ |
||||
state: 3, |
||||
remark: '' |
||||
}) |
||||
const formRef = ref() // 表单 Ref |
||||
const formType = ref('aftersale') |
||||
const titleMap = { |
||||
aftersale: '批量售后审核', |
||||
feeback: '批量回款审核' |
||||
} |
||||
|
||||
/** 打开弹窗 */ |
||||
const open = (type, ids) => { |
||||
dialogVisible.value = true |
||||
formType.value = type |
||||
dialogTitle.value = titleMap[type] || '批量审核' |
||||
resetForm(ids) |
||||
} |
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗 |
||||
|
||||
/** 提交表单 */ |
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 |
||||
const submitForm = async () => { |
||||
// 校验表单 |
||||
if (!formRef.value) return |
||||
const valid = await formRef.value.validate() |
||||
if (!valid) return |
||||
// 提交请求 |
||||
formLoading.value = true |
||||
try { |
||||
if (formType.value == 'aftersale') { |
||||
await batchAuditAfterSale(formData.value) |
||||
message.success('审核完成!') |
||||
} else if (formType.value == 'feeback') { |
||||
await batchAuditPayment(formData.value) |
||||
message.success('审核完成!') |
||||
} else { |
||||
return |
||||
} |
||||
dialogVisible.value = false |
||||
// 发送操作成功的事件 |
||||
emit('success') |
||||
} finally { |
||||
formLoading.value = false |
||||
} |
||||
} |
||||
|
||||
/** 重置表单 */ |
||||
const resetForm = (ids) => { |
||||
formData.value = { |
||||
payIds: ids, |
||||
saleIds: ids, |
||||
state: 3, |
||||
remark: '' |
||||
} |
||||
formRef.value?.resetFields() |
||||
} |
||||
</script> |
@ -0,0 +1,127 @@ |
||||
<template> |
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="900px"> |
||||
<Descriptions |
||||
title="申请详情" |
||||
:data="orderInfo" |
||||
:schema="applySchema" |
||||
:columns="2" |
||||
labelWidth="130px" |
||||
/> |
||||
<Descriptions |
||||
title="审核详情" |
||||
:data="orderInfo" |
||||
:schema="orderInfo.state == 2 ? cancelSchema : auditSchema" |
||||
:columns="orderInfo.state == 2 ? 2 : 3" |
||||
labelWidth="100px" |
||||
/> |
||||
</Dialog> |
||||
</template> |
||||
<script name="DialogFeebackDetail" setup> |
||||
import { getPaymentDetail } from '@/api/clue/payment' |
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示 |
||||
const dialogTitle = ref('') // 弹窗的标题 |
||||
|
||||
const applySchema = [ |
||||
{ |
||||
field: 'name', |
||||
label: '线索名称', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'phone', |
||||
label: '联系方式', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'signUserName', |
||||
label: '登记人', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'dealDate', |
||||
label: '登记时间', |
||||
dateFormat: 'YYYY-MM-DD HH:mm:ss', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'money', |
||||
label: '回款金额', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'isPayoff', |
||||
label: '是否结清', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'applyUserName', |
||||
label: '申请人', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'applyTime', |
||||
label: '申请时间', |
||||
dateFormat: 'YYYY-MM-DD HH:mm:ss', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'remark', |
||||
label: '备注', |
||||
span: 2, |
||||
isEditor: true |
||||
} |
||||
] |
||||
|
||||
const auditSchema = [ |
||||
{ |
||||
field: 'stateName', |
||||
label: '审核状态', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'checkUserName', |
||||
label: '审核人', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'checkTime', |
||||
label: '审核时间', |
||||
dateFormat: 'YYYY-MM-DD HH:mm:ss', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'checkRemark', |
||||
label: '备注', |
||||
span: 3, |
||||
isEditor: true |
||||
} |
||||
] |
||||
|
||||
const cancelSchema = [ |
||||
{ |
||||
field: 'stateName', |
||||
label: '审核状态', |
||||
span: 1 |
||||
}, |
||||
{ |
||||
field: 'revokeTime', |
||||
label: '撤销时间', |
||||
dateFormat: 'YYYY-MM-DD HH:mm:ss', |
||||
span: 1 |
||||
} |
||||
] |
||||
|
||||
const orderInfo = ref({}) |
||||
/** 打开弹窗 */ |
||||
const open = async (id) => { |
||||
dialogVisible.value = true |
||||
dialogTitle.value = '回款申请详情' |
||||
try { |
||||
orderInfo.value = await getPaymentDetail({ id }) |
||||
} catch (error) { |
||||
console.log(error) |
||||
} |
||||
} |
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗 |
||||
</script> |
Loading…
Reference in new issue