积分流水 积分结算

This commit is contained in:
HuskyOo 2022-05-12 10:23:02 +08:00
parent c6e8e6f2e3
commit 09c4fb088d
5 changed files with 405 additions and 5 deletions

View File

@ -23,3 +23,19 @@ export function del(params) {
params
})
}
export function recordList(data) {
return request({
url: '/api/convenience/fingertipIntegral/recordList',
method: 'post',
data
})
}
export function settlementList(data) {
return request({
url: '/api/convenience/fingertipIntegral/settlementList',
method: 'post',
data
})
}

View File

@ -385,9 +385,28 @@ export const asyncRoutes = [
name: 'FingertipIntegralList',
meta: {
title: '规则列表',
icon: 'townRanking',
affix: true,
parentTitle: '积分管理'
parentTitle: '规则列表'
}
},
{
path: 'recordList',
component: () => import('@/views/fingertipIntegral/recordList'),
name: 'FingertipIntegralRecordList',
meta: {
title: '积分流水',
affix: true,
parentTitle: '积分流水'
}
},
{
path: 'settlementList',
component: () => import('@/views/fingertipIntegral/settlementList'),
name: 'FingertipIntegralSettlementList',
meta: {
title: '积分结算',
affix: true,
parentTitle: '积分结算'
}
}
]

View File

@ -115,6 +115,21 @@
<el-radio v-model="form.all" :label="true"></el-radio>
<el-radio v-model="form.all" :label="false"></el-radio>
</el-form-item>
<el-form-item v-if="form.ruleType === 'FINAL'" label="商户结算具体要求" prop="specialBusinessContent">
<el-input
v-model="form.specialBusinessContent"
placeholder="请输入"
/>
</el-form-item>
<el-form-item v-if="form.ruleType === 'FINAL'" label="商户结算积分最低限额" prop="specialBusinessMin">
<el-input
v-model="form.specialBusinessMin"
type="number"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="申请办件积分" prop="apply">
<el-input
v-model="form.apply"
@ -157,6 +172,13 @@
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="特殊工单类型奖励积分(医保卫生)" prop="specialWorkType">
<el-input
v-model="form.specialWorkType"
type="number"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="超期办件扣分(负数)" prop="timeOut">
<el-input
v-model="form.timeOut"
@ -221,15 +243,22 @@ export default {
read: undefined,
realNameAuthentication: undefined,
sendACircleOfFriends: undefined,
specialWorkType: undefined,
timeOut: undefined,
verySatisfied: undefined
verySatisfied: undefined,
specialBusinessContent: undefined,
specialBusinessMin: undefined
},
rules: {
name: [{ required: true, message: '请输入', trigger: 'change' }],
ruleType: [{ required: true, message: '请选择', trigger: 'change' }],
regionIds: [{ required: true, message: '请选择', trigger: 'change' }],
all: [{ required: true, message: '请选择', trigger: 'change' }],
dateRange: [{ required: true, message: '请选择', trigger: 'change' }]
dateRange: [{ required: true, message: '请选择', trigger: 'change' }],
specialBusinessContent: [{ required: true, message: '请输入', trigger: 'change' }],
specialBusinessMin: [{ required: true, message: '请输入', trigger: 'change' }]
},
ruleTypeOptions: [
@ -326,8 +355,12 @@ export default {
read: undefined,
realNameAuthentication: undefined,
sendACircleOfFriends: undefined,
specialWorkType: undefined,
timeOut: undefined,
verySatisfied: undefined
verySatisfied: undefined,
specialBusinessContent: undefined,
specialBusinessMin: undefined
}
}
this.$nextTick(() => {

View File

@ -0,0 +1,169 @@
<template>
<div class="app-container">
<div class="filter-container">
<!-- <el-input
v-model="listQuery.keyword"
style="width:200px;margin-right:10px"
class="filter-item"
placeholder="请输入关键字"
clearable
/> -->
<el-select v-model="listQuery.source" clearable class="filter-item" placeholder="请选择积分来源">
<el-option v-for="item of sourceOptions" :key="item.value" v-bind="item" />
</el-select>
<el-button
type="primary"
style="margin-left:10px"
@click="handleSearch"
>搜索</el-button>
</div>
<el-table :data="list" border style="width: 100%">
<el-table-column label="用户名" prop="residentInformation.name" />
<el-table-column label="积分来源" prop="source">
<template slot-scope="scope">
<span>{{
scope.row.source | optionsFilter(sourceOptions)
}}</span>
</template>
</el-table-column>
<el-table-column label="获取积分数" prop="num" />
<el-table-column label="获取时间">
<template slot-scope="scope">
<span>{{
scope.row.createDate | parseTime("{y}-{m}-{d} {h}:{i}:{s}")
}}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-if="total > 0"
:total="total"
:page.sync="listQuery.lastPageIndex"
:limit.sync="listQuery.size"
@pagination="getList"
/>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { recordList } from '@/api/fingertipIntegral'
export default {
components: { Pagination },
filters: {
optionsFilter(value, options = []) {
const findItem = options.find((option) => option.value === value)
if (findItem) {
return findItem.label
}
return ''
}
},
data() {
return {
total: 0,
listQuery: {
lastPageIndex: 1,
// params: {},
size: 10,
category: undefined,
id: undefined,
innerCategory: undefined,
keyword: undefined,
source: undefined,
status: undefined,
userId: undefined
},
list: undefined,
sourceOptions: [
{
value: 'REAL_NAME_AUTHENTICATION',
label: '实名认证'
},
{
value: 'HANDLING',
label: '处理办件'
},
{
value: 'APPLY',
label: '申请办件'
},
{
value: 'TIMEOUT',
label: '超期办件扣分'
},
{
value: 'VERY_SATISFIED',
label: '非常满意得分'
},
{
value: 'NEGATIVE_COMMENT',
label: '差评扣分'
},
{
value: 'READ',
label: '阅读'
},
{
value: 'SEND_A_CIRCLE_OF_FRIENDS',
label: '发朋友圈'
},
{
value: 'CONSUMPTION',
label: '消费'
},
{
value: 'MERCHANT_SETTLEMENT',
label: '商户结算'
},
{
value: 'POINT_REFUND',
label: '积分回退'
},
{
value: 'REGULATORY_PUNISHMENT_AND_REWARD',
label: '监管惩罚'
},
{
value: 'SPECIAL_WORK_TYPE',
label: '特殊工单类型奖励积分(医保卫生)'
}
]
}
},
watch: {
'listQuery.lastPageIndex': {
handler(val) {
this.getList()
},
deep: true // true
}
},
created() {
this.getList()
},
methods: {
getList() {
recordList(this.listQuery).then(res => {
this.list = res.d.records
this.total = res.d.total
// this.pageSize = res.d.pageSize
})
},
handleSearch() {
const { listQuery } = this
this.listQuery.lastPageIndex = 1
Object.keys(listQuery).forEach(key => {
if (listQuery[key] === '') listQuery[key] = undefined
})
this.getList()
}
}
}
</script>
<style></style>

View File

@ -0,0 +1,163 @@
<template>
<div class="app-container">
<div class="filter-container">
<!-- <el-input
v-model="listQuery.keyword"
style="width:200px;margin-right:10px"
class="filter-item"
placeholder="请输入关键字"
clearable
/> -->
<el-select v-model="listQuery.settlementStatus" clearable class="filter-item" style="width:200px;margin-right:10px" placeholder="请选择结算状态">
<el-option v-for="item of statusOptions" :key="item.value" v-bind="item" />
</el-select>
<el-select v-model="listQuery.dealStatus" clearable class="filter-item" style="width:200px;margin-right:10px" placeholder="请选择已处理状态">
<el-option v-for="item of dealStatusOptions" :key="item.value" v-bind="item" />
</el-select>
<el-button
type="primary"
style="margin-left:10px"
@click="handleSearch"
>搜索</el-button>
</div>
<el-table :data="list" border style="width: 100%">
<el-table-column label="用户名" prop="residentInformation.name" />
<el-table-column label="结算积分数" prop="num" />
<el-table-column label="提交时间">
<template slot-scope="scope">
<span>{{
scope.row.createDate | parseTime("{y}-{m}-{d} {h}:{i}:{s}")
}}</span>
</template>
</el-table-column>
<el-table-column label="结算状态">
<template slot-scope="scope">
<span>{{
scope.row.settlementStatus | optionsFilter(statusOptions)
}}</span>
</template>
</el-table-column>
<el-table-column label="已处理状态">
<template slot-scope="scope">
<span>{{
scope.row.dealStatus | optionsFilter(dealStatusOptions)
}}</span>
</template>
</el-table-column>
<el-table-column label="处理备注" prop="remark" />
<el-table-column label="发票状态">
<template slot-scope="scope">
<span>{{
scope.row.invoiceStatus | optionsFilter(invoiceStatusOptions)
}}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-if="total > 0"
:total="total"
:page.sync="listQuery.lastPageIndex"
:limit.sync="listQuery.size"
@pagination="getList"
/>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { settlementList } from '@/api/fingertipIntegral'
export default {
components: { Pagination },
filters: {
optionsFilter(value, options = []) {
const findItem = options.find((option) => option.value === value)
if (findItem) {
return findItem.label
}
return ''
}
},
data() {
return {
total: 0,
listQuery: {
lastPageIndex: 1,
size: 10,
category: undefined,
dealStatus: undefined,
endDate: undefined,
id: undefined,
innerCategory: undefined,
keyword: undefined,
settlementStatus: undefined,
startDate: undefined,
status: undefined
},
list: undefined,
statusOptions: [
{
label: '待处理',
value: '0'
},
{
label: '已处理',
value: '1'
}
],
dealStatusOptions: [
{
label: '兑换',
value: '0'
},
{
label: '不兑换',
value: '1'
}
],
invoiceStatusOptions: [
{
label: '未收',
value: '0'
},
{
label: '已收',
value: '1'
}
]
}
},
watch: {
'listQuery.lastPageIndex': {
handler(val) {
this.getList()
},
deep: true // true
}
},
created() {
this.getList()
},
methods: {
getList() {
settlementList(this.listQuery).then(res => {
this.list = res.d.records
this.total = res.d.total
// this.pageSize = res.d.pageSize
})
},
handleSearch() {
const { listQuery } = this
this.listQuery.lastPageIndex = 1
Object.keys(listQuery).forEach(key => {
if (listQuery[key] === '') listQuery[key] = undefined
})
this.getList()
}
}
}
</script>
<style></style>