178 lines
6.2 KiB
Vue
178 lines
6.2 KiB
Vue
<template>
|
|
<div v-loading="loading" class="dily-register-user" :data-language="language">
|
|
<el-date-picker
|
|
v-model="dateNumber"
|
|
style="margin-bottom: 10px;"
|
|
type="date"
|
|
:placeholder="$t('pages.dashboard.userGoldTop.datePlaceholder')"
|
|
value-format="yyyyMMdd"
|
|
size="mini"
|
|
:picker-options="pickerOptions"
|
|
:clearable="false"
|
|
@change="changeDateNumber"
|
|
/>
|
|
<div v-for="(item, index) in list" :key="index">
|
|
<el-card v-if="sysOriginPlatforms.includes(item.sysOrigin)" class="box-card">
|
|
<div slot="header" class="clearfix">
|
|
<span>{{ $t('pages.dashboard.userGoldTop.title', { sysOriginName: item.sysOriginName }) }}</span>
|
|
</div>
|
|
<div class="content">
|
|
<div style="font-size: 12px;color: #666;margin-bottom: 10px;">{{ $t('pages.dashboard.userGoldTop.description') }}</div>
|
|
<el-table
|
|
:data="item.items"
|
|
element-loading-text="Loading"
|
|
fit
|
|
highlight-current-row
|
|
>
|
|
<el-table-column label="No" width="50" align="center">
|
|
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
|
|
</el-table-column>
|
|
<el-table-column :label="$t('pages.dashboard.userGoldTop.user')" prop="roomProfile.roomName" align="center" min-width="200">
|
|
<template slot-scope="scope">
|
|
<user-table-exhibit :user-profile="scope.row.userProfile" :query-details="true" />
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column :label="$t('pages.dashboard.userGoldTop.income')" width="100" align="center">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.groupTypeQuantity['0'] || 0 }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column :label="$t('pages.dashboard.userGoldTop.expenditure')" width="100" align="center">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.groupTypeQuantity['1'] || 0 }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column :label="$t('pages.dashboard.userGoldTop.total')" prop="quantity" align="center" width="100" />
|
|
<el-table-column fixed="right" :label="$t('pages.dashboard.userGoldTop.action')" align="center" width="80">
|
|
<template slot-scope="scope">
|
|
<el-button type="text" @click.native="clickQueryDetails(scope.row)">{{ $t('pages.dashboard.userGoldTop.details') }}</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
</el-card>
|
|
</div>
|
|
|
|
<div class="user-daily-currency-gold-top-drawer">
|
|
<el-drawer
|
|
:title="$t('pages.dashboard.userGoldTop.details')"
|
|
:before-close="() => queryDetailsVisible = false"
|
|
:visible="queryDetailsVisible"
|
|
:close-on-press-escape="false"
|
|
:wrapper-closable="false"
|
|
:modal-append-to-body="true"
|
|
:append-to-body="true"
|
|
custom-class="drawer-auto-layout"
|
|
>
|
|
<div class="bar-graph-charts" style="padding: 0 10px">
|
|
<bar-graph-charts
|
|
ref="lineGraphCharts"
|
|
:key="(queryDetailsRow ? queryDetailsRow.userId : 'tmp') + '-' + language"
|
|
:charts-data="queryDetailsRow.items"
|
|
:height="(queryDetailsRow.items ? queryDetailsRow.items.length > 5 ? queryDetailsRow.items.length * 40 : queryDetailsRow.items.length * 80 : 300) + 'px'"
|
|
/>
|
|
</div>
|
|
</el-drawer>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { listDailyUserGoldTop } from '@/api/statistics'
|
|
import BarGraphCharts from './bar-graph-charts'
|
|
import { currencyOrigins } from '@/constant/type'
|
|
import { mapGetters } from 'vuex'
|
|
import { formatDate, beforeDateObject } from '@/utils'
|
|
|
|
export default {
|
|
name: 'DilyRegisterUser',
|
|
components: { BarGraphCharts },
|
|
data() {
|
|
return {
|
|
queryDetailsVisible: false,
|
|
pickerOptions: {
|
|
disabledDate(date) {
|
|
return date.getTime() > beforeDateObject(1).getTime()
|
|
}
|
|
},
|
|
dateNumber: formatDate(beforeDateObject(new Date().getHours() > 8 ? 1 : 2), 'yyyyMMdd'),
|
|
loading: false,
|
|
list: [],
|
|
queryDetailsRow: {},
|
|
selectOrigin: currencyOrigins[0].value,
|
|
selectOriginName: currencyOrigins[0].name
|
|
}
|
|
},
|
|
computed: {
|
|
...mapGetters(['permissionsSysOriginPlatformAlls', 'language']),
|
|
sysOriginPlatforms() {
|
|
if (!this.permissionsSysOriginPlatformAlls || this.permissionsSysOriginPlatformAlls.length <= 0) {
|
|
return []
|
|
}
|
|
return this.permissionsSysOriginPlatformAlls.map(item => item.value)
|
|
}
|
|
},
|
|
created() {
|
|
this.loadOrigin()
|
|
},
|
|
methods: {
|
|
loadOrigin() {
|
|
this.loading = true
|
|
listDailyUserGoldTop(this.dateNumber).then(res => {
|
|
this.loading = false
|
|
const { body } = res
|
|
const list = body || []
|
|
this.list = list.filter(item => !item.sysOrigin || this.permissionsSysOriginPlatformAlls.some(sys => sys.value === item.sysOrigin))
|
|
}).catch(() => {
|
|
this.loading = false
|
|
})
|
|
},
|
|
querySearch(queryString, cb) {
|
|
const restaurants = currencyOrigins
|
|
const results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants
|
|
cb(results)
|
|
},
|
|
createFilter(queryString) {
|
|
return restaurant => {
|
|
return restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) >= 0 ||
|
|
restaurant.name.toLowerCase().indexOf(queryString.toLowerCase()) >= 0
|
|
}
|
|
},
|
|
handleSelect(item) {
|
|
const selectedItem = item || currencyOrigins[0]
|
|
this.selectOrigin = selectedItem.value
|
|
this.selectOriginName = selectedItem.name
|
|
this.loadOrigin()
|
|
},
|
|
clickAnalyze() {
|
|
this.$router.push('/system/manager/tools/manager/gold-analyze')
|
|
},
|
|
changeDateNumber() {
|
|
this.loadOrigin()
|
|
},
|
|
clickQueryDetails(row) {
|
|
this.queryDetailsRow = row
|
|
this.queryDetailsVisible = true
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.box-card {
|
|
margin-bottom: 10px;
|
|
padding: 10px;
|
|
|
|
.card-col {
|
|
margin-bottom: 10px;
|
|
}
|
|
}
|
|
|
|
.register-logout-count {
|
|
.date {
|
|
font-weight: bold;
|
|
line-height: 30px;
|
|
}
|
|
}
|
|
</style>
|