网格员积分应用名称可随菜单变化
This commit is contained in:
@@ -19,14 +19,14 @@ export default {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
permissions: Function,
|
||||
menuName: {default: "网格员积分"}
|
||||
},
|
||||
|
||||
computed: {
|
||||
currentPage() {
|
||||
let {hash} = this.$route
|
||||
return hash == "#gridScoreDetail" ? gridScoreDetail :
|
||||
hash == "#gridScoreRules" ? gridScoreRules :
|
||||
hash == "#gridScoreStatistics" ? gridScoreStatistics :
|
||||
hash == "#gridScoreRules" ? gridScoreRules :
|
||||
hash == "#gridScoreStatistics" ? gridScoreStatistics :
|
||||
hash == "#gridScoreManage" ? gridScoreManage : gmScore
|
||||
}
|
||||
},
|
||||
@@ -41,7 +41,7 @@ export default {
|
||||
methods: {
|
||||
onChange(data) {
|
||||
let {type, params: query} = data,
|
||||
hash = ["gridScoreManage", "gridScoreRules","gridScoreStatistics"].includes(type) ? "" : "#" + type
|
||||
hash = ["gridScoreManage", "gridScoreRules", "gridScoreStatistics"].includes(type) ? "" : "#" + type
|
||||
this.$router.push({hash, query})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<ai-list class="AppGridMemberScore">
|
||||
<template slot="title">
|
||||
<ai-title title="网格员积分" :isShowBottomBorder="false" :instance="instance" >
|
||||
<ai-title :title="menuName" :isShowBottomBorder="false" :instance="instance">
|
||||
<template slot="sub">
|
||||
<div>网格员可通过完成某些任务获取一定数量的积分,积分可去兑换相应的奖励。</div>
|
||||
</template>
|
||||
@@ -10,8 +10,7 @@
|
||||
<template slot="tabs">
|
||||
<el-tabs v-model="currIndex">
|
||||
<el-tab-pane v-for="(tab,i) in tabs" :key="i" :label="tab.label">
|
||||
<component :is="tab.comp" v-if="currIndex === String(i)" :ref="tab.name" v-on="$listeners"
|
||||
:areaId="areaId" :instance="instance" :dict="dict" :permissions="permissions"/>
|
||||
<component :is="tab.comp" v-if="currIndex === String(i)" :ref="tab.name" v-on="$listeners" :areaId="areaId" v-bind="$props"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</template>
|
||||
@@ -25,17 +24,17 @@ import gridScoreStatistics from './gridScoreStatistics.vue'
|
||||
import {mapState} from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'AppGridMemberScore',
|
||||
label: "网格员积分",
|
||||
name: 'gmScore',
|
||||
components: {
|
||||
girdScoreManage,
|
||||
gridScoreRules,
|
||||
girdScoreManage,
|
||||
gridScoreRules,
|
||||
gridScoreStatistics
|
||||
},
|
||||
props: {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
permissions: Function,
|
||||
menuName: String
|
||||
},
|
||||
|
||||
data() {
|
||||
@@ -74,10 +73,8 @@ export default {
|
||||
this.areaId = this.user.info.areaId
|
||||
// this.$dict.load("")
|
||||
},
|
||||
methods: {
|
||||
|
||||
},
|
||||
|
||||
methods: {},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<section class="gridScoreDetail">
|
||||
<ai-title slot="title" title="网格员积分详情" isShowBottomBorder :isShowBack="true" @onBackClick="cancel(false)"/>
|
||||
<ai-title slot="title" :title="`${menuName}详情`" isShowBottomBorder :isShowBack="true" @onBackClick="cancel(false)"/>
|
||||
<el-row style="margin-top: 20px;">
|
||||
<div class="card_list">
|
||||
<div class="card">
|
||||
@@ -21,7 +21,9 @@
|
||||
<div class="title">
|
||||
<h4>事件汇总</h4>
|
||||
<div class="timecSelect">
|
||||
时间:<el-date-picker size="small" value-format="yyyy-MM-dd" @change="timeChange" v-model="timeList" type="daterange" range-separator="至" :start-placeholder="startPla" :end-placeholder="endPla"></el-date-picker>
|
||||
时间:
|
||||
<el-date-picker size="small" value-format="yyyy-MM-dd" @change="timeChange" v-model="timeList" type="daterange" range-separator="至"
|
||||
:start-placeholder="startPla" :end-placeholder="endPla"></el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bar_Box">
|
||||
@@ -34,12 +36,12 @@
|
||||
<template #content>
|
||||
<ai-search-bar>
|
||||
<template #left>
|
||||
<ai-select v-model="search.type" placeholder="请选择类型" @change="search.current=1,getIntegralChange()"
|
||||
:selectList="dict.getDict('integralType')"/>
|
||||
<ai-select v-model="search.type" placeholder="请选择类型" @change="search.current=1,getIntegralChange()"
|
||||
:selectList="dict.getDict('integralType')"/>
|
||||
</template>
|
||||
<template #right>
|
||||
<ai-download :instance="instance" :url="`/app/appintegraluser/changeIntegralExport?id=${$route.query.id}`" :params="search" fileName="网格员余额变动明细"
|
||||
:disabled="tableData.length == 0">
|
||||
:disabled="tableData.length == 0">
|
||||
<el-button size="small">导出</el-button>
|
||||
</ai-download>
|
||||
</template>
|
||||
@@ -73,6 +75,7 @@
|
||||
<script>
|
||||
import dayjs from "dayjs";
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
export default {
|
||||
name: "gridScoreDetail",
|
||||
data() {
|
||||
@@ -102,16 +105,17 @@ export default {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
permissions: Function,
|
||||
menuName: String
|
||||
},
|
||||
|
||||
computed: {
|
||||
colConfigs() {
|
||||
return [
|
||||
{ prop: "doTime", label: '时间', align: "left", width: "200px" },
|
||||
{ slot: "integralType", label: '类型', align: "center", width: "240px", dict:"integralType"},
|
||||
{ slot: "changeIntegral"},
|
||||
{ prop: "nowIntegral", label: '剩余积分', align: "center",width: "200px" },
|
||||
{ slot: "eventDesc"},
|
||||
{prop: "doTime", label: '时间', align: "left", width: "200px"},
|
||||
{slot: "integralType", label: '类型', align: "center", width: "240px", dict: "integralType"},
|
||||
{slot: "changeIntegral"},
|
||||
{prop: "nowIntegral", label: '剩余积分', align: "center", width: "200px"},
|
||||
{slot: "eventDesc"},
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -121,21 +125,20 @@ export default {
|
||||
this.getIntegralChange()
|
||||
this.getEventSummary()
|
||||
let nowTime = dayjs().format('YYYY-MM-DD')
|
||||
let timeAgo = dayjs().subtract(29, 'day').format('YYYY-MM-DD')
|
||||
this.startPla = timeAgo
|
||||
this.startPla = dayjs().subtract(29, 'day').format('YYYY-MM-DD')
|
||||
this.endPla = nowTime
|
||||
})
|
||||
|
||||
|
||||
},
|
||||
methods: {
|
||||
// 详情
|
||||
getDetail() {
|
||||
this.instance.post(`/app/appintegraluser/girdDetail`,null,{
|
||||
this.instance.post(`/app/appintegraluser/girdDetail`, null, {
|
||||
params: {
|
||||
id: this.$route.query.id
|
||||
}
|
||||
}).then(res=>{
|
||||
if(res?.data) {
|
||||
}).then(res => {
|
||||
if (res?.data) {
|
||||
this.data = res.data
|
||||
}
|
||||
})
|
||||
@@ -143,16 +146,16 @@ export default {
|
||||
|
||||
// 事件汇总
|
||||
getEventSummary() {
|
||||
this.instance.post(`/app/appintegraluser/eventSummary`,null,{
|
||||
this.instance.post(`/app/appintegraluser/eventSummary`, null, {
|
||||
params: {
|
||||
id: this.$route.query.id,
|
||||
startTime: this.startTime,
|
||||
endTime: this.endTime,
|
||||
endTime: this.endTime,
|
||||
}
|
||||
}).then(res=>{
|
||||
if(res?.data) {
|
||||
this.xData = res.data.map(x=> x.eventName)
|
||||
this.yData = res.data.map(y=> y.totalIntegral)
|
||||
}).then(res => {
|
||||
if (res?.data) {
|
||||
this.xData = res.data.map(x => x.eventName)
|
||||
this.yData = res.data.map(y => y.totalIntegral)
|
||||
this.getColEcherts(this.xData, this.yData)
|
||||
}
|
||||
})
|
||||
@@ -167,7 +170,7 @@ export default {
|
||||
id: this.$route.query.id,
|
||||
}
|
||||
}).then(res => {
|
||||
if(res?.data) {
|
||||
if (res?.data) {
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
}
|
||||
@@ -175,7 +178,7 @@ export default {
|
||||
},
|
||||
|
||||
timeChange() {
|
||||
if(this.timeList.length) {
|
||||
if (this.timeList.length) {
|
||||
this.startTime = this.timeList[0]
|
||||
this.endTime = this.timeList[1]
|
||||
this.getEventSummary()
|
||||
@@ -248,7 +251,7 @@ export default {
|
||||
|
||||
filters: {
|
||||
formatTime(num) {
|
||||
if(num > 0) {
|
||||
if (num > 0) {
|
||||
return '+' + num
|
||||
} else {
|
||||
return num
|
||||
@@ -260,7 +263,7 @@ export default {
|
||||
this.getColEcherts()
|
||||
},
|
||||
|
||||
destroyed () {
|
||||
destroyed() {
|
||||
window.removeEventListener('resize', this.onResize)
|
||||
},
|
||||
}
|
||||
@@ -273,55 +276,65 @@ export default {
|
||||
padding: 0 20px;
|
||||
box-sizing: border-box;
|
||||
overflow-y: scroll;
|
||||
|
||||
.card_list {
|
||||
display: flex;
|
||||
|
||||
.card {
|
||||
flex: 1;
|
||||
height: 96px;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 4px 6px -2px rgba(15,15,21,0.1500);
|
||||
box-shadow: 0px 4px 6px -2px rgba(15, 15, 21, 0.1500);
|
||||
border-radius: 4px;
|
||||
margin-right: 20px;
|
||||
padding: 16px 24px;
|
||||
box-sizing: border-box;
|
||||
|
||||
h2 {
|
||||
color: #888888;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 8px;
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.color1 {
|
||||
color: #2891FF;
|
||||
}
|
||||
|
||||
.color2 {
|
||||
color: #22AA99;
|
||||
}
|
||||
|
||||
.color3 {
|
||||
color: #F8B425;
|
||||
}
|
||||
}
|
||||
|
||||
.card:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.echertsBox {
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 4px 6px -2px rgba(15,15,21,0.1500);
|
||||
box-shadow: 0px 4px 6px -2px rgba(15, 15, 21, 0.1500);
|
||||
border-radius: 4px;
|
||||
padding: 16px;
|
||||
box-sizing: border-box;
|
||||
|
||||
.title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
h4 {
|
||||
color: #222222;
|
||||
font-style: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
@@ -329,13 +342,14 @@ export default {
|
||||
|
||||
.bar_Box {
|
||||
width: 100%;
|
||||
|
||||
#chartDom {
|
||||
width: 100%;
|
||||
height: 230px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<ai-search-bar>
|
||||
<template #left>
|
||||
<el-button type="primary" size="small" icon="iconfont iconAdd" @click="changeIntegral('',0)"> 批量调整积分</el-button>
|
||||
<el-cascader ref="cascader1" clearable v-model="girdIdList" :options="girdOptions" placeholder="所属网格" size="small"
|
||||
<el-cascader ref="cascader1" clearable v-model="girdIdList" :options="girdOptions" placeholder="所属网格" size="small"
|
||||
:props="defaultProps" :show-all-levels="false" @change="gridChange"></el-cascader>
|
||||
</template>
|
||||
<template #right>
|
||||
<el-input size="small" placeholder="姓名" v-model="search.userName" clearable
|
||||
@clear="current = 1, search.userName = '', getTableData()" suffix-icon="iconfont iconSearch"
|
||||
v-throttle="() => {(current = 1), getTableData();}"/>
|
||||
<ai-download :instance="instance" url="/app/appintegraluser/girdIntegralExport" :params="search" fileName="网格员积分"
|
||||
<ai-download :instance="instance" url="/app/appintegraluser/girdIntegralExport" :params="search" :fileName="menuName"
|
||||
:disabled="tableData.length == 0">
|
||||
<el-button size="small">导出</el-button>
|
||||
</ai-download>
|
||||
@@ -21,7 +21,7 @@
|
||||
<ai-table :tableData="tableData" :total="total" :current.sync="current" :size.sync="size"
|
||||
@getList="getTableData()" :col-configs="colConfigs" :dict="dict" @sort-change="changeTableSort">
|
||||
|
||||
|
||||
|
||||
<el-table-column slot="options" label="操作" align="center">
|
||||
<template slot-scope="{ row }">
|
||||
<el-button type="text" @click="changeIntegral(row,1)">调整积分</el-button>
|
||||
@@ -65,7 +65,7 @@
|
||||
</el-form>
|
||||
</ai-dialog>
|
||||
</section>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -77,26 +77,27 @@ export default {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
permissions: Function,
|
||||
menuName:String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
search: {
|
||||
userName: '',
|
||||
girdId: '',
|
||||
current: 1,
|
||||
current: 1,
|
||||
size: 10,
|
||||
sortFiled: '',
|
||||
sortRule: '',
|
||||
},
|
||||
girdIdList: [],
|
||||
tableData: [],
|
||||
size: 10,
|
||||
size: 10,
|
||||
total: 0,
|
||||
current: 1,
|
||||
girdList: [],
|
||||
form: {
|
||||
ids: [],
|
||||
eventDesc: "",
|
||||
eventDesc: "",
|
||||
enclosure: "", // 附件
|
||||
integralCalcType: "",
|
||||
integral: '',
|
||||
@@ -257,7 +258,7 @@ export default {
|
||||
this.flag = true
|
||||
this.instance.post(`/app/appintegraluser/changeIntegral`,{
|
||||
ids: this.form.ids,
|
||||
eventDesc: this.form.eventDesc,
|
||||
eventDesc: this.form.eventDesc,
|
||||
enclosure: this.form.enclosure, // 附件
|
||||
integralCalcType: this.form.integralCalcType,
|
||||
integral: this.form.integral,
|
||||
@@ -275,7 +276,7 @@ export default {
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
},
|
||||
|
||||
toDetail(id) {
|
||||
@@ -298,7 +299,7 @@ export default {
|
||||
max-height: 600px!important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.userlist {
|
||||
display: inline-block;
|
||||
@@ -358,4 +359,4 @@ export default {
|
||||
background: pink;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user