积分整合

This commit is contained in:
aixianling
2022-05-13 17:29:46 +08:00
parent aef1ebc8c9
commit dfa29e1677
2 changed files with 132 additions and 248 deletions

View File

@@ -28,31 +28,20 @@
:instance="instance" :instance="instance"
url="/app/appvillagerintegraldetail/export" url="/app/appvillagerintegraldetail/export"
:disabled="!Boolean(tableData.length)" :disabled="!Boolean(tableData.length)"
:params="{familyId:detailInfo.id,bizType:doType}" :params="{familyId:detailInfo.id,type}"
fileName="余额变动明细"> fileName="余额变动明细">
<span class="iconfont iconExported">导出</span> <el-button type="text" icon="iconfont iconExported">导出</el-button>
</ai-download> </ai-download>
</template> </template>
<template #content> <template #content>
<el-select v-model="doType" placeholder="请选择类型" size='small' clearable @change="page.current=1,getList()"> <ai-search-bar>
<el-option <template #left>
v-for="(item,i) in dict.getDict('integralDetailType')" <ai-select v-model="type" placeholder="请选择类型" @change="page.current=1,getList()"
:label="item.dictName" :selectList="dict.getDict('integralDetailType')"/>
:key="i" </template>
:value="item.dictValue"> </ai-search-bar>
</el-option> <ai-table :tableData="tableData" :col-configs="colConfigs"
</el-select> :total="page.total" border :dict="dict" :current.sync="page.current" :size.sync="page.size" @getList="getList"/>
<ai-table
style="margin-top: 16px;"
:tableData="tableData"
:col-configs="colConfigs"
:total="page.total"
:border="true"
:stripe="false"
:current.sync="page.current"
:size.sync="page.size"
@getList="getList">
</ai-table>
</template> </template>
</ai-card> </ai-card>
</template> </template>
@@ -62,7 +51,6 @@
<script> <script>
export default { export default {
name: 'balance', name: 'balance',
props: { props: {
detailInfo: { detailInfo: {
type: Object, type: Object,
@@ -79,61 +67,31 @@ export default {
size: 10, size: 10,
total: 0 total: 0
}, },
doType: '', type: "",
tableData: [] tableData: []
} }
}, },
created() { created() {
this.dict.load('integralDetailType') this.dict.load('integralDetailType')
this.getList() this.getList()
}, },
computed: { computed: {
colConfigs() { colConfigs() {
const _this = this
return [ return [
{ {prop: 'doTime', label: '时间', width: 200},
prop: 'doTime', {prop: "type", label: "类型", dict: "integralDetailType", align: 'center'},
label: '时间' {prop: 'changeIntegral', align: 'center', label: '变动积分', formart: v => v > 0 ? `+${v}` : `-${v}`},
}, {prop: 'nowIntegral', align: 'center', label: '剩余积分'},
{ {prop: 'eventDesc', label: '事件', width: 500}
prop: 'bizType',
align: 'center',
label: '类型',
render(h, {row}) {
return h('span', {}, _this.dict.getLabel('integralDetailType', row.bizType))
}
},
{
prop: 'changeIntegral',
align: 'center',
label: '变动积分',
formart: v => v > 0 ? `+${v}` : v
},
{
prop: 'nowIntegral',
align: 'center',
label: '剩余积分'
},
{
prop: 'description',
label: '事件类型',
}
] ]
} }
}, },
methods: { methods: {
getList() { getList() {
this.instance.post('/app/appvillagerintegraldetail/list', null, { this.instance.post('/app/appvillagerintegraldetail/list', null, {
params: { params: {...this.page, familyId: this.detailInfo.id}
...this.page,
familyId: this.detailInfo.id,
bizType: this.doType
}
}).then(res => { }).then(res => {
if (res.code === 0) { if (res?.data) {
this.tableData = res.data.records this.tableData = res.data.records
this.page.total = res.data.total this.page.total = res.data.total
} }
@@ -148,11 +106,6 @@ export default {
height: 100%; height: 100%;
background-color: #fff; background-color: #fff;
::v-deep .ai-card__body {
padding: 12px 16px 20px !important;
}
.detail-info { .detail-info {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -187,25 +140,5 @@ export default {
} }
} }
} }
.iconExported {
color: #5088FF;
font-size: 12px;
cursor: pointer;
}
.info {
padding: 16px 0 16px 0;
}
.do_type {
height: 56px;
}
.fs-14 {
::v-deep .el-table--small {
font-size: 14px !important;
}
}
} }
</style> </style>

View File

@@ -1,7 +1,7 @@
<template> <template>
<ai-detail class="family_detail"> <ai-detail class="family_detail">
<template slot="title"> <template slot="title">
<ai-title title="个人积分明细" :isShowBack="true" :isShowBottomBorder="true" @onBackClick="$emit('goBack')" ></ai-title> <ai-title title="个人积分明细" :isShowBack="true" :isShowBottomBorder="true" @onBackClick="$emit('goBack')"></ai-title>
</template> </template>
<template slot="content"> <template slot="content">
<div class="detail-info"> <div class="detail-info">
@@ -19,37 +19,15 @@
</div> </div>
</div> </div>
<ai-card title="余额变动明细"> <ai-card title="余额变动明细">
<template slot="right">
<!-- <ai-download
:instance="instance"
url="/app/appvillagerintegraldetail/export"
:disabled="!Boolean(tableData.length)"
:params="{familyName:detailInfo.name,doType:doType}"
fileName="余额变动明细">
<span class="iconfont iconExported">导出</span>
</ai-download> -->
</template>
<template #content> <template #content>
<el-select v-model="doType" placeholder="请选择类型" size='small' clearable @change="page.current=1,getList()"> <ai-search-bar>
<el-option <template #left>
v-for="(item,i) in dict.getDict('integralDetailType')" <ai-select v-model="type" placeholder="请选择类型" @change="page.current=1,getList()"
:label="item.dictName" :selectList="dict.getDict('integralDetailType')"/>
:key="i" </template>
:value="item.dictValue"> </ai-search-bar>
</el-option> <ai-table :tableData="tableData" :col-configs="colConfigs"
</el-select> :total="page.total" border :dict="dict" :current.sync="page.current" :size.sync="page.size" @getList="getList"/>
<ai-table class="fs-14"
style="margin-top: 16px;"
:tableData="tableData"
:col-configs="colConfigs"
:total="page.total"
:current.sync="page.current"
:size.sync="page.size"
:isShowPagination="false"
tableSize="small"
:border="true"
@getList="getList">
</ai-table>
</template> </template>
</ai-card> </ai-card>
</template> </template>
@@ -57,151 +35,124 @@
</template> </template>
<script> <script>
export default { export default {
name: 'balance', name: 'balance',
props: { props: {
detailInfo: { detailInfo: {
type: Object, type: Object,
require: true require: true
},
instance: Function,
dict: Object
},
data() {
return {
page: {
current: 1,
size: 10,
total: 0
}, },
instance: Function, info: {},
dict: Object type: '',
}, tableData: []
}
},
data () { created() {
return { this.dict.load('integralDetailType')
page: { this.getList()
current: 1, },
size: 10, computed: {
total: 0 colConfigs() {
}, return [
info: {}, {prop: 'doTime', label: '时间', width: 200},
doType: '', {prop: "type", label: "类型", dict: "integralDetailType", align: 'center'},
tableData: [] {prop: 'changeIntegral', align: 'center', label: '变动积分', formart: v => v > 0 ? `+${v}` : `-${v}`},
} {prop: 'nowIntegral', align: 'center', label: '剩余积分'},
}, {prop: 'eventDesc', label: '事件', width: 500}
]
created () { }
this.dict.load('integralDetailType') },
this.getList() methods: {
}, getList() {
this.instance.post(`/app/appresident/detail?id=${this.detailInfo.id}`).then(res => {
computed: { if (res?.data) {
colConfigs () { this.info = res.data.resident
const _this = this let {type, info: {id: residentId}} = this
return [ this.instance.post(`/app/appvillagerintegraldetail/IntegralList`, null, {
{ params: {...this.page, queryType: 1, type, residentId}
prop: 'doTime', }).then(res => {
align: 'center', if (res?.data) {
label: '时间', this.tableData = res.data.records
align:'left'
},
{
prop: 'doType',
align: 'center',
label: '类型',
render (h, {row}) {
return h('span',{}, _this.dict.getLabel('integralDetailType', row.bizType))
} }
}, })
{ }
prop: 'changeIntegral', })
align: 'center',
label: '变动积分'
},
{
prop: 'nowIntegral',
align: 'center',
label: '剩余积分'
},
{
prop: 'description',
align: 'center',
label: '事件类型',
align:'left'
}
]
}
},
methods: {
getList () {
this.instance.post(`/app/appresident/detail?id=${this.detailInfo.id}`).then(res => {
if (res.code === 0) {
this.info = res.data.resident
this.instance.post(`/app/appvillagerintegraldetail/IntegralList?bizType=${this.doType}&type=1&residentId=${res.data.resident.id}`, null, {
params: this.page
}).then(res => {
if (res.code === 0) {
this.tableData = res.data.records
}
})
}
})
}
} }
} }
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.family_detail{ .family_detail {
height: 100%; height: 100%;
background-color: #fff; background-color: #fff;
::v-deep .ai-card__body { .detail-info {
padding: 12px 16px 20px!important; display: flex;
} align-items: center;
margin-bottom: 20px;
.detail-info { .detail-info__item {
display: flex; flex: 1;
align-items: center; height: 96px;
margin-bottom: 20px; margin-right: 20px;
padding: 16px 24px;
background: #FFFFFF;
box-shadow: 0px 4px 6px -2px rgba(15, 15, 21, 0.15);
border-radius: 4px;
.detail-info__item { &:last-child {
flex: 1; margin-right: 0;
height: 96px;
margin-right: 20px;
padding: 16px 24px;
background: #FFFFFF;
box-shadow: 0px 4px 6px -2px rgba(15, 15, 21, 0.15);
border-radius: 4px;
&:last-child {
margin-right: 0;
}
h2 {
margin-bottom: 8px;
color: #888888;
font-size: 16px;
font-weight: bold;
}
span {
display: block;
line-height: 32px;
font-size: 24px;
font-weight: bold;
color: #222;
}
} }
}
.iconExported{ h2 {
color:#5088FF; margin-bottom: 8px;
font-size: 12px; color: #888888;
cursor: pointer; font-size: 16px;
} font-weight: bold;
.info{ }
padding: 16px 0 16px 0;
} span {
.do_type{ display: block;
height: 56px; line-height: 32px;
} font-size: 24px;
.fs-14{ font-weight: bold;
::v-deep .el-table--small{ color: #222;
font-size: 14px!important;
} }
} }
} }
.iconExported {
color: #5088FF;
font-size: 12px;
cursor: pointer;
}
.info {
padding: 16px 0 16px 0;
}
.do_type {
height: 56px;
}
.fs-14 {
::v-deep .el-table--small {
font-size: 14px !important;
}
}
}
</style> </style>