提交 809749d5 authored 作者: matian's avatar matian

feat:新增审核模块

上级 3dbc23c0
...@@ -25,7 +25,8 @@ export default { ...@@ -25,7 +25,8 @@ export default {
return { return {
menuList: [ menuList: [
{ name: '活动列表', path: '/activity/list', icon: 'el-icon-notebook-2' }, { name: '活动列表', path: '/activity/list', icon: 'el-icon-notebook-2' },
{ name: '报名列表', path: '/register/list', icon: 'el-icon-user' } { name: '报名列表', path: '/register/list', icon: 'el-icon-user' },
{ name: '审核管理', path: '/audit/list', icon: 'el-icon-connection' }
] ]
} }
}, },
......
...@@ -38,6 +38,11 @@ ...@@ -38,6 +38,11 @@
</div> </div>
<div class="form-set-pay"> <div class="form-set-pay">
<div class="sub-title">缴费设置</div> <div class="sub-title">缴费设置</div>
<!--导入功能 新增 -->
<el-form-item label="导入功能:">
<el-radio v-model="data.can_import" label="1">开启</el-radio>
<el-radio v-model="data.can_import" label="0">关闭</el-radio>
</el-form-item>
<el-form-item label="缴费功能:"> <el-form-item label="缴费功能:">
<el-radio v-model="data.can_pay" :label="1">开启</el-radio> <el-radio v-model="data.can_pay" :label="1">开启</el-radio>
<el-radio v-model="data.can_pay" :label="0">关闭</el-radio> <el-radio v-model="data.can_pay" :label="0">关闭</el-radio>
...@@ -50,6 +55,17 @@ ...@@ -50,6 +55,17 @@
<el-radio v-model="data.can_invoice" :label="1">开启</el-radio> <el-radio v-model="data.can_invoice" :label="1">开启</el-radio>
<el-radio v-model="data.can_invoice" :label="0">关闭</el-radio> <el-radio v-model="data.can_invoice" :label="0">关闭</el-radio>
</el-form-item> </el-form-item>
<!-- 缴费方式 新增-->
<el-form-item label="缴费方式:">
<el-select v-model="data.pay_type" multiple>
<el-option v-for="item in payType" :key="item.key" :label="item.value" :value="item.key">{{
item.value
}}</el-option>
</el-select>
</el-form-item>
<el-form-item label="线下支付联系方式:" prop="offline_info">
<el-input style="width: 20%" v-model="data.offline_info"></el-input>
</el-form-item>
<el-form-item label="单位优惠:"> <el-form-item label="单位优惠:">
<el-radio v-model="data.can_company" :label="1">开启</el-radio> <el-radio v-model="data.can_company" :label="1">开启</el-radio>
<el-radio v-model="data.can_company" :label="0">关闭</el-radio> <el-radio v-model="data.can_company" :label="0">关闭</el-radio>
...@@ -94,9 +110,19 @@ ...@@ -94,9 +110,19 @@
import VEditor from '@/components/tinymce/Index.vue' import VEditor from '@/components/tinymce/Index.vue'
export default { export default {
components: { VEditor }, components: { VEditor },
props: { data: { type: Object, default: () => {} } }, props: {
data: {
type: Object,
default: () => {}
}
},
data() { data() {
return { return {
payType: [
{ key: '1', value: '微信' },
{ key: '2', value: '支付宝' },
{ key: '3', value: '线下支付' }
],
rules: { rules: {
title: { required: true, message: '请填写标题', trigger: 'blur' }, title: { required: true, message: '请填写标题', trigger: 'blur' },
pay_price: [ pay_price: [
...@@ -114,7 +140,7 @@ export default { ...@@ -114,7 +140,7 @@ export default {
} }
], ],
jump_url: { required: true, message: '请填写跳转链接', trigger: 'blur' }, jump_url: { required: true, message: '请填写跳转链接', trigger: 'blur' },
shop_id: { required: true, message: '请选择支付平台', trigger: 'blur' }, shop_id: { required: true, message: '请选择支付平台', trigger: 'change' },
skip_pay_title: { required: true, message: '请填写跳过支付文案', trigger: 'blur' } skip_pay_title: { required: true, message: '请填写跳过支付文案', trigger: 'blur' }
}, },
options: [], options: [],
...@@ -166,6 +192,7 @@ export default { ...@@ -166,6 +192,7 @@ export default {
} }
}, },
mounted() { mounted() {
console.log(this.data, 'pay_type')
this.setInfoFields() this.setInfoFields()
}, },
methods: { methods: {
...@@ -195,6 +222,7 @@ export default { ...@@ -195,6 +222,7 @@ export default {
}) })
return a return a
}, []) }, [])
this.data.pay_type = this.data.pay_type.toString()
}, },
submitForm() { submitForm() {
let flag = false let flag = false
......
...@@ -163,14 +163,16 @@ export default { ...@@ -163,14 +163,16 @@ export default {
order: order, order: order,
title: '', title: '',
desc: '', desc: '',
can_import: '0',
can_pay: 0, can_pay: 0,
pay_price: '0.00', pay_price: '0.00',
can_invoice: 0, can_invoice: 0,
pay_type: '1',
offline_info: '',
can_company: 0, can_company: 0,
can_jump: 0, can_jump: 0,
jump_url: '', jump_url: '',
shop_id: '', shop_id: '',
pay_type: '2',
can_skip_pay: 0, can_skip_pay: 0,
user_fields: [ user_fields: [
{ key: 'name', required: true, enable_edit: true }, { key: 'name', required: true, enable_edit: true },
......
import httpRequest from '@/utils/axios'
/**
* 获取审核列表
*/
export function getAuditList(params) {
return httpRequest.get('/api/register/v1/audit/index', { params })
}
/**
* 获取审核列表
*/
export function auditResult(data) {
return httpRequest.post('/api/register/v1/audit/audit', data)
}
<template>
<el-dialog v-bind="$attrs" v-on="$listeners" width="20%" center>
<el-form ref="form" label-width="10px">
<el-form-item prop="status">
<el-radio-group v-model="auditInfo.status">
<el-radio label="1" :disabled="auditInfo.status !== '0'">通过</el-radio>
<el-radio label="2" :disabled="auditInfo.status !== '0'">驳回</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="reason">
<el-input
type="textarea"
:rows="2"
placeholder="原因(选填)"
v-model="auditInfo.cause"
:disabled="auditInfo.status !== '0'"
>
</el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="$emit('update:visible', false)">取 消</el-button>
<el-button type="primary" @click="handleAudit">确 定</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
props: {
auditInfo: {
type: Object,
default: () => {}
}
},
data() {
return {
dialogVisible: false
}
},
methods: {
// 提交审核结果
handleAudit() {
this.$emit('update:visible', false)
this.$emit('audlt', this.auditInfo)
}
}
}
</script>
<template>
<el-dialog v-bind="$attrs" v-on="$listeners" center width="40%">
<!-- <img
src="https://img0.baidu.com/it/u=2631861690,326885075&fm=253&fmt=auto&app=138&f=JPEG?w=550&h=392"
alt=""
class="voucher_img"
/> -->
<div class="voucher_img">{{ row }}</div>
</el-dialog>
</template>
<script>
export default {
props: {
row: {
type: String,
default: ''
}
}
}
</script>
<style lang="scss" scoped>
::v-deep {
.el-dialog__body {
width: 80% !important;
img {
width: 100%;
margin-left: 50px;
}
}
}
</style>
import AppLayout from '@/components/layout/Index.vue'
const routes = [
{
path: '/audit',
component: AppLayout,
children: [{ path: 'list', component: () => import('./views/List.vue') }]
}
]
export { routes }
<template>
<app-card>
<app-list v-bind="tableOptions" ref="list">
<el-divider></el-divider>
<template v-slot:voucher="{ row }">
<el-button type="text" @click="handleLook(row)">点击查看</el-button>
</template>
<template v-slot:table-x="{ row }">
<el-button type="text" @click="handleAudltDialog(row)">审核</el-button>
</template>
</app-list>
<!-- 点击查看凭证 -->
<pay-voucher :visible.sync="centerDialogVisible" :row="voucher" />
<!-- 审核弹框 -->
<audlt-dialog
:visible.sync="dialogVisible"
@cancel="dialogVisible = false"
@audlt="handleAudlt"
:auditInfo="auditInfo"
/>
</app-card>
</template>
<script>
import { getAuditList, auditResult } from '../api'
import audltDialog from '../components/audltDialog.vue'
import PayVoucher from '../components/payVoucher.vue'
const statusMap = [
{ value: '待审核', id: '0' },
{ value: '审核通过', id: '1' },
{ value: '驳回', id: '2' }
]
export default {
components: { audltDialog, PayVoucher },
data() {
return {
voucher: '',
auditInfo: {
cause: '',
status: '',
id: ''
},
dialogVisible: false,
centerDialogVisible: false,
multipleSelection: [] // 选择项
}
},
computed: {
tableOptions() {
return {
remote: {
httpRequest: getAuditList,
params: {
activity_name: '',
user_mobile: '',
status: ''
}
},
filters: [
{
type: 'input',
prop: 'activity_name',
label: '活动名称:'
},
{
type: 'input',
prop: 'user_mobile',
label: '手机号:'
},
{
type: 'select',
prop: 'status',
options: statusMap,
labelKey: 'value',
valueKey: 'id',
label: '审核状态:'
}
],
columns: [
{ label: 'id', prop: 'id', align: 'center' },
{ label: '活动名称', prop: 'activity_name', align: 'center' },
{ label: '步骤名称', prop: 'activity_detail_name', align: 'center' },
{ label: '申请时间', prop: 'apply_time', align: 'center' },
{
label: '审核状态',
prop: 'status',
align: 'center',
computed({ row }) {
if (row.status === '0') {
return '待审核'
} else if (row.status === '1') {
return '审核通过'
} else if (row.status === '2') {
return '驳回'
}
}
},
{ label: '姓名', prop: 'user_name', align: 'center' },
{ label: '手机号', prop: 'user_mobile', align: 'center' },
{ label: '支付金额', prop: 'amount', align: 'center' },
{ label: '凭证', align: 'center', slots: 'voucher', prop: 'voucher' },
{ label: '备注', align: 'center', prop: 'comment' },
{ label: '操作', slots: 'table-x', align: 'center' }
]
}
}
},
methods: {
handleLook(row) {
this.voucher = row.voucher
this.centerDialogVisible = true
},
handleAudltDialog(row) {
console.log(row.status, row.cause, row.id)
this.auditInfo.status = row.status
this.auditInfo.cause = row.cause
this.auditInfo.id = row.id
this.dialogVisible = true
},
// 审核
handleAudlt(val) {
auditResult(val).then(res => {
if (res.code === 0) {
this.$message.success('审核通过')
}
this.$refs.list.refetch()
})
// 审核接口
}
}
}
</script>
<template> <template>
<div class="pay-list"> <div class="pay-list">
<div class="item" v-for="(item, index) in checkList" :key="index"> <div class="item" v-for="(item, index) in checkList" :key="index">
<el-radio-group v-model="pay_type">
<el-radio :label="1">微信扫码支付</el-radio>
<el-radio :label="11">支付宝扫码支付</el-radio>
</el-radio-group>
<div class="title">{{ item.title }}</div> <div class="title">{{ item.title }}</div>
<div class="checkbox"> <div class="checkbox">
<el-checkbox-group v-model="item.form"> <el-checkbox-group v-model="item.form">
...@@ -24,7 +28,8 @@ import { getPayList, recordsQr } from '../api.js' ...@@ -24,7 +28,8 @@ import { getPayList, recordsQr } from '../api.js'
export default { export default {
data() { data() {
return { return {
checkList: [] checkList: [],
pay_type: ''
} }
}, },
mounted() { mounted() {
...@@ -50,7 +55,8 @@ export default { ...@@ -50,7 +55,8 @@ export default {
}, },
recordsQr(index) { recordsQr(index) {
console.log(this.checkList[index].form, 'form') console.log(this.checkList[index].form, 'form')
recordsQr({ pay_record_ids: this.checkList[index].form.join() }).then(res => { const params = { pay_type: this.pay_type, pay_record_ids: this.checkList[index].form.join() }
recordsQr(params).then(res => {
this.copyToClipboard(res.data.url) this.copyToClipboard(res.data.url)
}) })
}, },
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
<el-form-item v-for="(item, index) in payStatus" :key="index" :label="item.title"> <el-form-item v-for="(item, index) in payStatus" :key="index" :label="item.title">
<el-radio v-model="item.value" label="0">未支付</el-radio> <el-radio v-model="item.value" label="0">未支付</el-radio>
<el-radio v-model="item.value" label="1">已支付</el-radio> <el-radio v-model="item.value" label="1">已支付</el-radio>
<el-radio v-model="item.value" label="2">待审核</el-radio>
<el-radio v-model="item.value" label="3">审核不通过</el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="getRecordsDetail">搜索</el-button> <el-button type="primary" @click="getRecordsDetail">搜索</el-button>
...@@ -43,9 +45,9 @@ ...@@ -43,9 +45,9 @@
归属人id:<span>{{ item.belong_user_id }}</span> 归属人id:<span>{{ item.belong_user_id }}</span>
</div> </div>
<div class="item"> <div class="item">
缴费状态:<span>{{ parseInt(item.pay_status) ? '已支付' : '未支付' }}</span> 缴费状态:<span>{{ gatPayStatus(item) }}</span>
</div> </div>
<div class="btn" v-if="!parseInt(item.pay_status)" @click="deletePay(item.id)">移除</div> <div class="btn" v-if="item.pay_status === '0'" @click="deletePay(item.id)">移除</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -135,6 +137,17 @@ export default { ...@@ -135,6 +137,17 @@ export default {
this.getRecordsDetail() this.getRecordsDetail()
}, },
methods: { methods: {
gatPayStatus(item) {
if (item.pay_status === '0') {
return '未支付'
} else if (item.pay_status === '1') {
return '已支付'
} else if (item.pay_status === '2') {
return '待审核'
} else if (item.pay_status === '3') {
return '审核未通过'
}
},
getRowClass(row) { getRowClass(row) {
if (row.row.pay_records.length === 0) { if (row.row.pay_records.length === 0) {
return 'row-expand-cover' return 'row-expand-cover'
...@@ -165,7 +178,7 @@ export default { ...@@ -165,7 +178,7 @@ export default {
}) })
} }
this.tableData = res.data.records.list.map(item => { this.tableData = res.data.records.list.map(item => {
const findData = item.pay_records.find(pay => pay.pay_status === '1') const findData = item.pay_records.find(pay => pay.pay_status === '1' || pay.pay_status === '2')
item.isDelete = !!findData item.isDelete = !!findData
item.gender = parseInt(item.gender) ? (parseInt(item.gender) === 1 ? '男' : '女') : '未知' item.gender = parseInt(item.gender) ? (parseInt(item.gender) === 1 ? '男' : '女') : '未知'
Object.keys(item).forEach(cItem => { Object.keys(item).forEach(cItem => {
......
...@@ -20,16 +20,6 @@ ...@@ -20,16 +20,6 @@
<el-option label="归属人" value="2"></el-option> <el-option label="归属人" value="2"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="活动时间">
<el-date-picker
v-model="form.date"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item> -->
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleScreen">搜索</el-button> <el-button type="primary" @click="handleScreen">搜索</el-button>
<el-button @click="handleReset">重置</el-button> <el-button @click="handleReset">重置</el-button>
...@@ -57,9 +47,9 @@ ...@@ -57,9 +47,9 @@
归属人id:<span>{{ item.belong_user_id }}</span> 归属人id:<span>{{ item.belong_user_id }}</span>
</div> </div>
<div class="item"> <div class="item">
缴费状态:<span>{{ parseInt(item.pay_status) ? '已支付' : '未支付' }}</span> 缴费状态:<span>{{ payStatus(item) }}</span>
</div> </div>
<div class="btn" v-if="!parseInt(item.pay_status)" @click="deletePay(item.id)">移除</div> <div class="btn" v-if="item.pay_status === '0'" @click="deletePay(item.id)">移除</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -68,7 +58,7 @@ ...@@ -68,7 +58,7 @@
<el-table-column v-if="item.visible" :label="item.label" :prop="item.key" :key="item.key"></el-table-column> <el-table-column v-if="item.visible" :label="item.label" :prop="item.key" :key="item.key"></el-table-column>
</template> </template>
<el-table-column label="操作"> <el-table-column label="操作" style="width: 200px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click="$router.push({ path: '/register/detail', query: { id: scope.row.id } })" <el-button type="text" @click="$router.push({ path: '/register/detail', query: { id: scope.row.id } })"
>详情</el-button >详情</el-button
...@@ -88,7 +78,11 @@ ...@@ -88,7 +78,11 @@
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
<import-people @cancel="importDialogVisible = false" width="400px" :visible.sync="importDialogVisible"></import-people> <import-people
@cancel="importDialogVisible = false"
width="400px"
:visible.sync="importDialogVisible"
></import-people>
<set-tabel-heade <set-tabel-heade
@closeSetHeader="columnsOptionsVisible = false" @closeSetHeader="columnsOptionsVisible = false"
@handleConfirm="handleConfirm" @handleConfirm="handleConfirm"
...@@ -155,6 +149,7 @@ export default { ...@@ -155,6 +149,7 @@ export default {
] ]
} }
}, },
mounted() { mounted() {
this.getAppList() this.getAppList()
if (window.localStorage.registerTabelField) { if (window.localStorage.registerTabelField) {
...@@ -162,6 +157,17 @@ export default { ...@@ -162,6 +157,17 @@ export default {
} }
}, },
methods: { methods: {
payStatus(item) {
if (item.pay_status === '0') {
return '未支付'
} else if (item.pay_status === '1') {
return '已支付'
} else if (item.pay_status === '2') {
return '待审核'
} else if (item.pay_status === '3') {
return '审核未通过'
}
},
getRowClass(row) { getRowClass(row) {
if (row.row.pay_records.length === 0) { if (row.row.pay_records.length === 0) {
return 'row-expand-cover' return 'row-expand-cover'
...@@ -196,7 +202,7 @@ export default { ...@@ -196,7 +202,7 @@ export default {
getAppList(form).then(res => { getAppList(form).then(res => {
this.page.total = res.data.total this.page.total = res.data.total
this.tableData = res.data.list.map(item => { this.tableData = res.data.list.map(item => {
const findData = item.pay_records.find(pay => pay.pay_status === '1') const findData = item.pay_records.find(pay => pay.pay_status === '1' || pay.pay_status === '2')
item.isDelete = !!findData item.isDelete = !!findData
item.gender = parseInt(item.gender) ? (parseInt(item.gender) === 1 ? '男' : '女') : '未知' item.gender = parseInt(item.gender) ? (parseInt(item.gender) === 1 ? '男' : '女') : '未知'
Object.keys(item).forEach(cItem => { Object.keys(item).forEach(cItem => {
...@@ -299,4 +305,7 @@ export default { ...@@ -299,4 +305,7 @@ export default {
.row-expand-cover td .el-table__expand-icon { .row-expand-cover td .el-table__expand-icon {
visibility: hidden !important; visibility: hidden !important;
} }
.el-table .cell {
padding-left: 0;
}
</style> </style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论