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

feat:新增审核模块

上级 3dbc23c0
......@@ -25,7 +25,8 @@ export default {
return {
menuList: [
{ 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 @@
</div>
<div class="form-set-pay">
<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-radio v-model="data.can_pay" :label="1">开启</el-radio>
<el-radio v-model="data.can_pay" :label="0">关闭</el-radio>
......@@ -50,6 +55,17 @@
<el-radio v-model="data.can_invoice" :label="1">开启</el-radio>
<el-radio v-model="data.can_invoice" :label="0">关闭</el-radio>
</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-radio v-model="data.can_company" :label="1">开启</el-radio>
<el-radio v-model="data.can_company" :label="0">关闭</el-radio>
......@@ -94,9 +110,19 @@
import VEditor from '@/components/tinymce/Index.vue'
export default {
components: { VEditor },
props: { data: { type: Object, default: () => {} } },
props: {
data: {
type: Object,
default: () => {}
}
},
data() {
return {
payType: [
{ key: '1', value: '微信' },
{ key: '2', value: '支付宝' },
{ key: '3', value: '线下支付' }
],
rules: {
title: { required: true, message: '请填写标题', trigger: 'blur' },
pay_price: [
......@@ -114,7 +140,7 @@ export default {
}
],
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' }
},
options: [],
......@@ -166,6 +192,7 @@ export default {
}
},
mounted() {
console.log(this.data, 'pay_type')
this.setInfoFields()
},
methods: {
......@@ -195,6 +222,7 @@ export default {
})
return a
}, [])
this.data.pay_type = this.data.pay_type.toString()
},
submitForm() {
let flag = false
......
......@@ -163,14 +163,16 @@ export default {
order: order,
title: '',
desc: '',
can_import: '0',
can_pay: 0,
pay_price: '0.00',
can_invoice: 0,
pay_type: '1',
offline_info: '',
can_company: 0,
can_jump: 0,
jump_url: '',
shop_id: '',
pay_type: '2',
can_skip_pay: 0,
user_fields: [
{ 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>
<div class="pay-list">
<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="checkbox">
<el-checkbox-group v-model="item.form">
......@@ -24,7 +28,8 @@ import { getPayList, recordsQr } from '../api.js'
export default {
data() {
return {
checkList: []
checkList: [],
pay_type: ''
}
},
mounted() {
......@@ -50,7 +55,8 @@ export default {
},
recordsQr(index) {
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)
})
},
......
......@@ -17,6 +17,8 @@
<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="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-button type="primary" @click="getRecordsDetail">搜索</el-button>
......@@ -43,9 +45,9 @@
归属人id:<span>{{ item.belong_user_id }}</span>
</div>
<div class="item">
缴费状态:<span>{{ parseInt(item.pay_status) ? '已支付' : '未支付' }}</span>
缴费状态:<span>{{ gatPayStatus(item) }}</span>
</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>
</template>
......@@ -135,6 +137,17 @@ export default {
this.getRecordsDetail()
},
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) {
if (row.row.pay_records.length === 0) {
return 'row-expand-cover'
......@@ -165,7 +178,7 @@ export default {
})
}
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.gender = parseInt(item.gender) ? (parseInt(item.gender) === 1 ? '男' : '女') : '未知'
Object.keys(item).forEach(cItem => {
......
......@@ -20,16 +20,6 @@
<el-option label="归属人" value="2"></el-option>
</el-select>
</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-button type="primary" @click="handleScreen">搜索</el-button>
<el-button @click="handleReset">重置</el-button>
......@@ -57,9 +47,9 @@
归属人id:<span>{{ item.belong_user_id }}</span>
</div>
<div class="item">
缴费状态:<span>{{ parseInt(item.pay_status) ? '已支付' : '未支付' }}</span>
缴费状态:<span>{{ payStatus(item) }}</span>
</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>
</template>
......@@ -68,7 +58,7 @@
<el-table-column v-if="item.visible" :label="item.label" :prop="item.key" :key="item.key"></el-table-column>
</template>
<el-table-column label="操作">
<el-table-column label="操作" style="width: 200px">
<template slot-scope="scope">
<el-button type="text" @click="$router.push({ path: '/register/detail', query: { id: scope.row.id } })"
>详情</el-button
......@@ -88,7 +78,11 @@
</el-pagination>
</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
@closeSetHeader="columnsOptionsVisible = false"
@handleConfirm="handleConfirm"
......@@ -155,6 +149,7 @@ export default {
]
}
},
mounted() {
this.getAppList()
if (window.localStorage.registerTabelField) {
......@@ -162,6 +157,17 @@ export default {
}
},
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) {
if (row.row.pay_records.length === 0) {
return 'row-expand-cover'
......@@ -196,7 +202,7 @@ export default {
getAppList(form).then(res => {
this.page.total = res.data.total
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.gender = parseInt(item.gender) ? (parseInt(item.gender) === 1 ? '男' : '女') : '未知'
Object.keys(item).forEach(cItem => {
......@@ -299,4 +305,7 @@ export default {
.row-expand-cover td .el-table__expand-icon {
visibility: hidden !important;
}
.el-table .cell {
padding-left: 0;
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论