123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- <template>
- <div class="app-container">
- <div style="width: 60%;margin: 0 auto;display: flex;justify-content: space-around;color: #0685c0">
- <div><span>客户总数:</span><countTo :startVal='0' :endVal='all' :duration='2500'/></div>
- <div><span>活跃客户:</span><countTo :startVal='0' :endVal='active' :duration='2500'/></div>
- </div>
- <div style="width: 100%;margin-top: 30px">
- <div id="getData" style="width: 100%;height: 400px;"></div>
- </div>
- <div style="width: 100%;margin-top: 30px;position:relative;">
- <el-button
- type="warning"
- size="mini"
- style="position: absolute;right: 30px"
- @click="handleExport"
- :disabled="!type"
- >导出</el-button>
- <el-table
- ref="table"
- v-loading="loading"
- :data="dataList"
- stripe
- style="width: 50%;margin: 0 auto"
- >
- <el-table-column
- label="客户名称"
- prop="fName"
- align="center"
- :show-overflow-tooltip="true"
- ></el-table-column>
- <el-table-column
- label="最后收费日期"
- prop="fBsdate"
- align="center"
- :show-overflow-tooltip="true"
- ></el-table-column>
- </el-table>
- </div>
- </div>
- </template>
- <script>
- import { corpAnalysis, inactiveCorpList, corpAnalysisExport } from "@/api/reportManagement/customerAnalysis";
- import countTo from 'vue-count-to';
- export default {
- name: "index",
- data() {
- return {
- loading:false,
- dataList: [],
- pieList: [],
- all: 0,
- active: 0,
- type: null,
- }
- },
- components: {
- countTo
- },
- created() {
- },
- activated() {
- corpAnalysis().then(res => {
- console.log(res)
- this.all = res.data.all;
- this.active = res.data.active;
- this.pieList = res.data.series[0].data;
- this.$nextTick(() => {
- this.getEcharts();
- })
- })
- },
- methods:{
- getEcharts() {
- // 基于准备好的dom,初始化echarts实例,所以只能在mounted中调用
- let myChart = this.$echarts.init(document.getElementById("getData"));
- // 绘制图表
- myChart.setOption({
- legend: {
- top: 'bottom',
- },
- title: {
- text: '未活跃分析',
- textStyle:{
- color: "#9a9494",
- fontSize: 15,
- fontWeight: 'normal'
- },
- top: "37.5%",
- textAlign: "center",
- left: "49.9%"
- },
- // toolbox: {
- // show: true,
- // feature: {
- // mark: { show: true },
- // dataView: { show: true, readOnly: false },
- // restore: { show: true },
- // saveAsImage: { show: true }
- // }
- // },
- tooltip: {
- trigger: 'item',
- formatter: '{b} : {c} ({d}%)'
- },
- series: [
- {
- name: '未活跃分析',
- type: 'pie',
- radius: [50, 180],
- center: ['50%', '40%'],
- roseType: 'area',
- itemStyle: {
- borderRadius: 8,
- },
- data: this.pieList
- }
- ]
- })
- myChart.on('click', this.handleClick)
- },
- handleClick(param) {
- this.loading = true;
- if (param.data.name == '1-3个月') {
- this.type = 1
- } else if (param.data.name == '3-6个月') {
- this.type = 2
- } else if (param.data.name == '6-12个月') {
- this.type = 3
- } else if (param.data.name == '12-24个月') {
- this.type = 4
- } else if (param.data.name == '24个月以上') {
- this.type = 5
- }
- inactiveCorpList({type: this.type}).then(res => {
- this.dataList = res.data
- }).finally(() => {
- this.loading = false;
- })
- },
- handleExport() {
- this.$confirm('是否确认导出', '警告', {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- }).then(() => {
- corpAnalysisExport({type: this.type}).then(res => {
- this.download(res.msg);
- })
- }).catch(() => {
- })
- },
- }
- }
- </script>
- <style scoped>
- </style>
|