fix: 分销商审核模块列表接口对接

This commit is contained in:
lzhizhao 2025-07-15 17:02:51 +08:00
parent c086415233
commit 071941ef8a
1 changed files with 132 additions and 127 deletions

View File

@ -1,114 +1,114 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<el-card class="filter-container" shadow="never"> <el-card class="filter-container" shadow="never">
<div class="filter-item"> <div class="filter-item">
<el-form :inline="true" :model="listQuery" size="small"> <el-form :inline="true" :model="listQuery" size="small">
<el-form-item label="审核状态"> <el-form-item label="审核状态">
<el-select v-model="listQuery.status" placeholder="请选择审核状态" clearable> <el-select v-model="listQuery.status" placeholder="请选择审核状态" clearable>
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" <el-option v-for="item in statusOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleFilter">查询</el-button> <el-button type="primary" @click="handleFilter">查询</el-button>
<el-button @click="resetQuery">重置</el-button> <el-button @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</el-card> </el-card>
<!-- 表格区域 --> <!-- 表格区域 -->
<el-card class="table-container" shadow="never"> <el-card class="table-container" shadow="never">
<div class="table-header"> <div class="table-header">
<span class="table-title">分销商申请列表</span> <span class="table-title">分销商申请列表</span>
<div class="table-operations"> <div class="table-operations">
<el-button v-if="hasWaitingApproval" type="primary" size="mini" @click="handlePassAll"> <el-button v-if="hasWaitingApproval" type="primary" size="mini" @click="handlePassAll">
一键通过 一键通过
</el-button> </el-button>
</div> </div>
</div> </div>
<el-table v-loading="listLoading" :data="list" border style="width: 100%" <el-table v-loading="listLoading" :data="list" border style="width: 100%"
:header-cell-style="{ background: '#F5F7FA', color: '#606266' }"> :header-cell-style="{ background: '#F5F7FA', color: '#606266' }">
<el-table-column prop="userName" label="申请人" align="center"></el-table-column> <el-table-column prop="userName" label="申请人" align="center"></el-table-column>
<el-table-column prop="createTime" label="申请时间" align="center"> <el-table-column prop="createTime" label="申请时间" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.createTime | formatDate }}</span> <span>{{ scope.row.createTime | formatDate }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="auditTime" label="审核时间" align="center"> <el-table-column prop="auditTime" label="审核时间" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.auditTime | formatDate }}</span> <span>{{ scope.row.auditTime | formatDate }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="status" label="审核状态" align="center"> <el-table-column prop="status" label="审核状态" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag :type="getStatusType(scope.row.status)"> <el-tag :type="getStatusType(scope.row.status)">
{{ getStatusText(scope.row.status) }} {{ getStatusText(scope.row.status) }}
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="refuseReason" label="拒绝理由" align="center" width="200"> <el-table-column prop="refuseReason" label="拒绝理由" align="center" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.status === 2">{{ scope.row.refuseReason }}</span> <span v-if="scope.row.status === -1">{{ scope.row.refuseReason }}</span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="180"> <el-table-column label="操作" align="center" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="scope.row.status === 0" size="mini" type="success" <el-button v-if="scope.row.status === 0" size="mini" type="success"
@click="handleApprove(scope.row)">通过</el-button> @click="handleApprove(scope.row)">通过</el-button>
<el-button v-if="scope.row.status === 0" size="mini" type="danger" <el-button v-if="scope.row.status === 0" size="mini" type="danger"
@click="handleReject(scope.row)">拒绝</el-button> @click="handleReject(scope.row)">拒绝</el-button>
<el-button v-else size="mini" type="primary" @click="handleDetail(scope.row)">详情</el-button> <el-button v-else size="mini" type="primary" @click="handleDetail(scope.row)">详情</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<div class="pagination-container"> <div class="pagination-container">
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="listQuery.pageNumber" :page-sizes="[10, 20, 30, 50]" :current-page.sync="listQuery.pageNumber" :page-sizes="[10, 20, 30, 50]" :page-size="listQuery.pageSize"
:page-size="listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> layout="total, sizes, prev, pager, next, jumper" :total="total">
</el-pagination> </el-pagination>
</div> </div>
</el-card> </el-card>
<!-- 拒绝原因对话框 --> <!-- 拒绝原因对话框 -->
<el-dialog title="拒绝申请" :visible.sync="rejectDialogVisible" width="30%"> <el-dialog title="拒绝申请" :visible.sync="rejectDialogVisible" width="30%">
<el-form :model="rejectForm" :rules="rejectRules" ref="rejectForm" label-width="100px"> <el-form :model="rejectForm" :rules="rejectRules" ref="rejectForm" label-width="100px">
<el-form-item label="拒绝理由" prop="reason"> <el-form-item label="拒绝理由" prop="reason">
<el-input type="textarea" :rows="4" placeholder="请输入拒绝理由" v-model="rejectForm.reason"> <el-input type="textarea" :rows="4" placeholder="请输入拒绝理由" v-model="rejectForm.reason">
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="rejectDialogVisible = false"> </el-button> <el-button @click="rejectDialogVisible = false"> </el-button>
<el-button type="primary" @click="confirmReject"> </el-button> <el-button type="primary" @click="confirmReject"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 详情对话框 --> <!-- 详情对话框 -->
<el-dialog title="申请详情" :visible.sync="detailDialogVisible" width="50%"> <el-dialog title="申请详情" :visible.sync="detailDialogVisible" width="50%">
<el-descriptions :column="2" border> <el-descriptions :column="2" border>
<el-descriptions-item label="申请人">{{ detailData.userName }}</el-descriptions-item> <el-descriptions-item label="申请人">{{ detailData.userName }}</el-descriptions-item>
<el-descriptions-item label="申请时间">{{ detailData.createTime | formatDate }}</el-descriptions-item> <el-descriptions-item label="申请时间">{{ detailData.createTime | formatDate }}</el-descriptions-item>
<el-descriptions-item label="审核时间">{{ detailData.auditTime | formatDate }}</el-descriptions-item> <el-descriptions-item label="审核时间">{{ detailData.auditTime | formatDate }}</el-descriptions-item>
<el-descriptions-item label="审核状态"> <el-descriptions-item label="审核状态">
<el-tag :type="getStatusType(detailData.status)"> <el-tag :type="getStatusType(detailData.status)">
{{ getStatusText(detailData.status) }} {{ getStatusText(detailData.status) }}
</el-tag> </el-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="拒绝理由" v-if="detailData.status === 2" :span="2"> <el-descriptions-item label="拒绝理由" v-if="detailData.status === -1" :span="2">
{{ detailData.refuseReason }} {{ detailData.refuseReason }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="detailDialogVisible = false"> </el-button> <el-button @click="detailDialogVisible = false"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
@ -132,7 +132,7 @@ export default {
statusOptions: [ statusOptions: [
{ label: '待审核', value: 0 }, { label: '待审核', value: 0 },
{ label: '已通过', value: 1 }, { label: '已通过', value: 1 },
{ label: '已拒绝', value: 2 } { label: '已拒绝', value: -1 }
], ],
rejectDialogVisible: false, rejectDialogVisible: false,
detailDialogVisible: false, detailDialogVisible: false,
@ -144,7 +144,7 @@ export default {
rejectRules: { rejectRules: {
reason: [ reason: [
{ required: true, message: '请输入拒绝理由', trigger: 'blur' }, { required: true, message: '请输入拒绝理由', trigger: 'blur' },
{ min: 5, max: 200, message: '长度在 5 到 200 个字符', trigger: 'blur' } { min: 2, max: 200, message: '长度在 2 到 200 个字符', trigger: 'blur' }
] ]
}, },
detailData: {} detailData: {}
@ -210,8 +210,9 @@ export default {
mer_admin.getApplyRecord(params) mer_admin.getApplyRecord(params)
.then(response => { .then(response => {
this.list = response.data.list || []; console.log(response);
this.total = response.data.total || 0; this.list = response.data.data.data || [];
this.total = response.data.data.total || 0;
this.listLoading = false; this.listLoading = false;
}) })
.catch(() => { .catch(() => {
@ -244,7 +245,7 @@ export default {
return 'warning'; return 'warning';
case 1: case 1:
return 'success'; return 'success';
case 2: case -1:
return 'danger'; return 'danger';
default: default:
return 'info'; return 'info';
@ -256,7 +257,7 @@ export default {
return '待审核'; return '待审核';
case 1: case 1:
return '已通过'; return '已通过';
case 2: case -1:
return '已拒绝'; return '已拒绝';
default: default:
return '未知状态'; return '未知状态';
@ -271,6 +272,7 @@ export default {
this.listLoading = true; this.listLoading = true;
const params = { const params = {
id: row.id, id: row.id,
distributorId: row.distributorId,
status: 1 // status: 1 //
}; };
@ -305,7 +307,8 @@ export default {
this.listLoading = true; this.listLoading = true;
const params = { const params = {
id: this.rejectForm.id, id: this.rejectForm.id,
status: 2, // distributorId: this.currentRow.distributorId,
status: -1, //
refuseReason: this.rejectForm.reason refuseReason: this.rejectForm.reason
}; };
@ -330,7 +333,9 @@ export default {
this.$confirm('确定要一键通过所有待审核的分销商申请?', '提示', { this.$confirm('确定要一键通过所有待审核的分销商申请?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning',
dangerouslyUseHTMLString: true,
message: '<strong>一键通过操作将批量审核所有待审核申请,此操作不可撤销,请谨慎操作!</strong>'
}).then(() => { }).then(() => {
this.listLoading = true; this.listLoading = true;
const params = {}; const params = {};
@ -382,37 +387,37 @@ export default {
<style scoped> <style scoped>
.app-container { .app-container {
padding: 20px; padding: 20px;
} }
.filter-container { .filter-container {
margin-bottom: 20px; margin-bottom: 20px;
} }
.table-container { .table-container {
margin-bottom: 20px; margin-bottom: 20px;
} }
.table-header { .table-header {
padding: 0 0 15px; padding: 0 0 15px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.table-title { .table-title {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
} }
.table-operations { .table-operations {
display: flex; display: flex;
gap: 10px; gap: 10px;
} }
.pagination-container { .pagination-container {
padding: 15px 0; padding: 15px 0;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
</style> </style>