上传
This commit is contained in:
@@ -51,7 +51,8 @@ export default defineComponent({
|
||||
// 表单label宽度
|
||||
labelWidth: propTypes.oneOfType([String, Number]).def('auto'),
|
||||
// 是否 loading 数据中 add by 芋艿
|
||||
vLoading: propTypes.bool.def(false)
|
||||
vLoading: propTypes.bool.def(false),
|
||||
inlineBlock: propTypes.bool.def(false)
|
||||
},
|
||||
emits: ['register'],
|
||||
setup(props, { slots, expose, emit }) {
|
||||
@@ -289,6 +290,7 @@ export default defineComponent({
|
||||
model={props.isCustom ? props.model : formModel}
|
||||
class={prefixCls}
|
||||
v-loading={props.vLoading}
|
||||
style={props.inlineBlock ? 'display: inline' : ''}
|
||||
>
|
||||
{{
|
||||
// 如果需要自定义,就什么都不渲染,而是提供默认插槽
|
||||
|
||||
@@ -38,6 +38,7 @@ const props = defineProps({
|
||||
// 伸缩的界限字段
|
||||
expandField: propTypes.string.def(''),
|
||||
inline: propTypes.bool.def(true),
|
||||
inlineBlock: propTypes.bool.def(false),
|
||||
model: {
|
||||
type: Object as PropType<Recordable>,
|
||||
default: () => ({})
|
||||
@@ -154,6 +155,7 @@ initSearch()
|
||||
<!-- update by 芋艿:class="-mb-15px" 用于降低和 ContentWrap 组件的底部距离,避免空隙过大 -->
|
||||
<Form
|
||||
:inline="inline"
|
||||
:inlineBlock="inlineBlock"
|
||||
:is-col="isCol"
|
||||
:is-custom="false"
|
||||
isSearch
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
<el-date-picker
|
||||
v-model="searchForm.dealDate"
|
||||
type="daterange"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
range-separator="-"
|
||||
start-placeholder="登记日期"
|
||||
end-placeholder="登记日期"
|
||||
@@ -48,6 +50,8 @@
|
||||
<el-date-picker
|
||||
v-model="searchForm.applyTime"
|
||||
type="daterange"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
range-separator="-"
|
||||
start-placeholder="申请日期"
|
||||
end-placeholder="申请日期"
|
||||
@@ -94,7 +98,7 @@
|
||||
text
|
||||
v-if="row.state == 1"
|
||||
v-hasPermi="['clue:order:after-sale-audit']"
|
||||
@click="handleAudit(row.id)"
|
||||
@click="handleAudit(row)"
|
||||
>
|
||||
审核
|
||||
</el-button>
|
||||
@@ -107,6 +111,7 @@
|
||||
:total="total"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<DialogAfterSaleAudit ref="afterSaleAuditDialog" @success="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -115,6 +120,10 @@ import * as AfterSaleApi from '@/api/clue/afterSale'
|
||||
import { getSimpleUserList as getUserOption } from '@/api/system/user'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
import DialogAfterSaleAudit from './DialogAfterSaleAudit.vue'
|
||||
|
||||
const afterSaleAuditDialog = ref()
|
||||
|
||||
const userStore = useUserStore()
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
@@ -168,8 +177,8 @@ async function getList() {
|
||||
}
|
||||
}
|
||||
|
||||
function batchAudit() {
|
||||
console.log(123)
|
||||
function batchAudit(row) {
|
||||
afterSaleAuditDialog.value.open(row)
|
||||
}
|
||||
|
||||
function handleDetail(id) {
|
||||
@@ -188,8 +197,8 @@ async function handleCancel(id) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
function handleAudit(id) {
|
||||
console.log(id)
|
||||
function handleAudit(row) {
|
||||
afterSaleAuditDialog.value.open(row)
|
||||
}
|
||||
|
||||
function getOptions() {
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
新增售后
|
||||
</el-button>
|
||||
<el-form v-if="!showAdd" :model="form" ref="formRef" :rules="rules" label-width="80px">
|
||||
<el-form-item label="退款原因" prop="reason">
|
||||
<el-input v-model="form.reason" placeholder="请输入退款原因" />
|
||||
<el-form-item label="售后原因" prop="reason">
|
||||
<el-input v-model="form.reason" placeholder="请输入售后原因" />
|
||||
</el-form-item>
|
||||
<el-form-item label="退款金额" prop="refundAmount">
|
||||
<el-input-number
|
||||
|
||||
135
src/views/Clue/Order/Comp/DialogAfterSaleAudit.vue
Normal file
135
src/views/Clue/Order/Comp/DialogAfterSaleAudit.vue
Normal file
@@ -0,0 +1,135 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="800px">
|
||||
<Descriptions :data="orderInfo" :schema="schema" :columns="2" labelWidth="130px" />
|
||||
<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 { auditAfterSale } from '@/api/clue/afterSale'
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
|
||||
const schema = [
|
||||
{
|
||||
field: 'name',
|
||||
label: '线索名称',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'phone',
|
||||
label: '联系方式',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'signUserName',
|
||||
label: '登记人',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'dealDate',
|
||||
label: '登记时间',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'reason',
|
||||
label: '售后原因',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'solution',
|
||||
label: '解决方案',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'refundAmount',
|
||||
label: '退款金额',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'isReturns',
|
||||
label: '是否退货',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'applyUserName',
|
||||
label: '申请人',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'applyTime',
|
||||
label: '申请时间',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'remark',
|
||||
label: '备注',
|
||||
span: 2,
|
||||
isEditor: true
|
||||
}
|
||||
]
|
||||
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formData = ref({
|
||||
state: 3,
|
||||
remark: ''
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
const orderInfo = ref({})
|
||||
/** 打开弹窗 */
|
||||
const open = async (row) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = '售后审核'
|
||||
resetForm(row.id)
|
||||
// 修改时,设置数据
|
||||
orderInfo.value = { ...row }
|
||||
}
|
||||
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 {
|
||||
await auditAfterSale(formData.value)
|
||||
message.success('审核完成!')
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = (signId) => {
|
||||
formData.value = {
|
||||
saleId: signId,
|
||||
state: 3,
|
||||
remark: ''
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
125
src/views/Clue/Order/Comp/DialogFeebackAudit.vue
Normal file
125
src/views/Clue/Order/Comp/DialogFeebackAudit.vue
Normal file
@@ -0,0 +1,125 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="800px">
|
||||
<Descriptions :data="orderInfo" :schema="schema" :columns="2" labelWidth="130px" />
|
||||
<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="DialogFeebackAudit" setup>
|
||||
import { auditPayment } from '@/api/clue/payment'
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
|
||||
const schema = [
|
||||
{
|
||||
field: 'name',
|
||||
label: '线索名称',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'phone',
|
||||
label: '联系方式',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'signUserName',
|
||||
label: '登记人',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'dealDate',
|
||||
label: '登记时间',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'money',
|
||||
label: '回款金额',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'isPayoff',
|
||||
label: '是否结清',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'applyUserName',
|
||||
label: '申请人',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'applyTime',
|
||||
label: '申请时间',
|
||||
span: 1
|
||||
},
|
||||
{
|
||||
field: 'remark',
|
||||
label: '备注',
|
||||
span: 2,
|
||||
isEditor: true
|
||||
}
|
||||
]
|
||||
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formData = ref({
|
||||
state: 3,
|
||||
remark: ''
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
const orderInfo = ref({})
|
||||
/** 打开弹窗 */
|
||||
const open = async (row) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = '回款审核'
|
||||
resetForm(row.id)
|
||||
// 修改时,设置数据
|
||||
orderInfo.value = { ...row }
|
||||
}
|
||||
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 {
|
||||
await auditPayment(formData.value)
|
||||
message.success('审核完成!')
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = (signId) => {
|
||||
formData.value = {
|
||||
payId: signId,
|
||||
state: 3,
|
||||
remark: ''
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
@@ -2,9 +2,15 @@
|
||||
<div>
|
||||
<!-- 搜索工作栏 -->
|
||||
<div>
|
||||
<el-form :model="searchForm" ref="moreSearchRef" inline label-width="0">
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
ref="moreSearchRef"
|
||||
inline
|
||||
label-width="0"
|
||||
style="display: inline"
|
||||
>
|
||||
<template v-if="appStore.getAppInfo?.instanceType == 1">
|
||||
<el-form-item>
|
||||
<el-form-item style="margin-bottom: 10px">
|
||||
<el-select
|
||||
v-model="searchForm.signSchool"
|
||||
placeholder="选择驾校"
|
||||
@@ -20,7 +26,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item style="margin-bottom: 10px">
|
||||
<el-select
|
||||
v-model="searchForm.signPlace"
|
||||
placeholder="选择场地"
|
||||
@@ -37,7 +43,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item style="margin-bottom: 10px">
|
||||
<el-select
|
||||
v-model="searchForm.signClass"
|
||||
:disabled="!searchForm.signPlace"
|
||||
@@ -87,7 +93,13 @@
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-form>
|
||||
<Search v-if="!loading" ref="searchRef" :schema="allSchemas.searchSchema" labelWidth="0">
|
||||
<Search
|
||||
v-if="!loading"
|
||||
ref="searchRef"
|
||||
:schema="allSchemas.searchSchema"
|
||||
inlineBlock
|
||||
labelWidth="0"
|
||||
>
|
||||
<template #actionMore>
|
||||
<el-button @click="getTableList" v-hasPermi="['clue:order:search']"> 搜索 </el-button>
|
||||
<el-button @click="resetQuery" v-hasPermi="['clue:order:reset']"> 重置 </el-button>
|
||||
@@ -97,7 +109,7 @@
|
||||
<!-- 列表 -->
|
||||
<SSTable
|
||||
v-if="!loading"
|
||||
class="mt-20px"
|
||||
class="mt-10px"
|
||||
v-model:tableObject="tableObject"
|
||||
:tableColumns="allSchemas.tableColumns"
|
||||
@get-list="getTableList"
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
<el-date-picker
|
||||
v-model="searchForm.dealDate"
|
||||
type="daterange"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
range-separator="-"
|
||||
start-placeholder="登记日期"
|
||||
end-placeholder="登记日期"
|
||||
@@ -48,6 +50,8 @@
|
||||
<el-date-picker
|
||||
v-model="searchForm.applyTime"
|
||||
type="daterange"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
range-separator="-"
|
||||
start-placeholder="申请日期"
|
||||
end-placeholder="申请日期"
|
||||
@@ -92,7 +96,7 @@
|
||||
text
|
||||
v-if="row.state == 1"
|
||||
v-hasPermi="['clue:order:return-audit']"
|
||||
@click="handleAudit(row.id)"
|
||||
@click="handleAudit(row)"
|
||||
>
|
||||
审核
|
||||
</el-button>
|
||||
@@ -105,6 +109,8 @@
|
||||
:total="total"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<DialogFeebackAudit ref="feebackDialog" @success="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -113,9 +119,13 @@ import * as FeebackApi from '@/api/clue/payment'
|
||||
import { getSimpleUserList as getUserOption } from '@/api/system/user'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
import DialogFeebackAudit from './DialogFeebackAudit.vue'
|
||||
|
||||
const userStore = useUserStore()
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const feebackDialog = ref()
|
||||
|
||||
const currentUserId = userStore.getUser.id
|
||||
|
||||
const searchForm = ref({
|
||||
@@ -186,8 +196,8 @@ async function handleCancel(id) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
function handleAudit(id) {
|
||||
console.log(id)
|
||||
function handleAudit(row) {
|
||||
feebackDialog.value.open(row)
|
||||
}
|
||||
|
||||
function getOptions() {
|
||||
|
||||
Reference in New Issue
Block a user