Plat Admin

orgCount.vue 8.3KB

    <template> <div class="app-container"> <div class="box-container"> <div class="contain-title">合作机构数据统计</div> </div> <div class="content-container"> <div class="content-item" style="padding-top:0"> <div class="content-item-tit">机构总浏览量统计</div> <div class="line-chart-box"> <LineChart :chartData="chartData"></LineChart> </div> </div> <div class="content-item"> <div class="content-item-tit">机构浏览量查询</div> <div class="contain-search" style="margin-top:20px; width:70%"> <el-form :model="formFilter" class="demo-form" label-width="100px"> <el-row :gutter="10"> <el-col :span="12"> <el-form-item label="机构名称:"> <el-input v-model="formFilter.name" placeholder="搜索机构名称"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="机构类型:"> <el-input v-model="formFilter.orgType" placeholder="搜索机构类型"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="入驻时间:"> <el-date-picker v-model="formFilter.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" @change="changeRangerDate"> </el-date-picker> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="排序方式:"> <el-select v-model="formFilter.orderBy" placeholder="选择排序方式" @change="sortChanged"> <el-option label="按入驻时间由新到旧排序" value="1"></el-option> <el-option label="按浏览量由高到底排序" value="2"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="24"> <el-form-item label-width="30px" align="right"> <el-button type="primary" @click="filterSearch">查询</el-button> </el-form-item> </el-col> </el-row> </el-form> </div> <complex-table :tableData="tableDataEnd" :tableItem="tableItem" :total="total" :jump="'org'" v-on:current="current" :chartLine= true @showChart="showChart" v-loading="tableLoding"></complex-table> </div> </div> <el-dialog title="机构流量分析" :visible.sync="ChartItemDialogVisible" width="860px"> <LineChart :chartData="chartOneData"></LineChart> </el-dialog> </div> </template> <script> import { pqOrgFilterList, queryTotalView, queryOneView } from '@/api/statistics' import { parseTime } from '@/utils/index' import complexTable from '@/components/complexTable' import crossDomin from '@/utils/CrossDomain' import LineChart from './lineChart/LineChart' import { dayListFn, chartModel } from './lineChart/chart' import { doneFilter } from './ObjFilters' export default { data() { return { ChartItemDialogVisible: false, formFilter: { name: '', orgType: '', dateRange: '', orderBy: '1' }, pageSize: 10, pageNo: 1, total: 0, tableData: [], tableDataEnd: [], filterTableDataEnd: [], flag: false, tableLoding: true, tableItem: [ { tit: '图表', chart: true, width: 80 }, { prop: 'name', tit: '机构名称', active: 'active' }, { prop: 'orgType', tit: '机构类型' }, { prop: 'phone', tit: '联系电话', width: '160' }, { prop: 'email', tit: '联系邮箱', width: '160' }, { prop: 'assTime', tit: '入驻时间', width: '160' }, { prop: 'sum', tit: '浏览数量' } ], chartData: [], chartOneData: [], beginDate: dayListFn(true) } }, components: { complexTable, LineChart }, created() { this.queryInfoList() this.getInfoTotal() }, methods: { getInfoTotal() { this.$http.get(queryTotalView, { tn: 'organization', bt: this.beginDate }, (res) => { var obj = res.data this.chartData = chartModel(obj) }) }, filterSearch() { this.tableLoding = true const form = this.formFilter let st = new Date('1970-01-01') let et = new Date().getTime() if (form.dateRange) { st = new Date(form.dateRange[0]).getTime() et = new Date(form.dateRange[1]).getTime() } // 筛选条件 var Conditions = { strs: [ { type: 'name', val: form.name }, { type: 'orgType', val: form.orgType } ], ranges: [ { type: 'assTime', min: st, max: et } ] } this.tableDataEnd = [] this.filterTableDataEnd = [] this.filterTableDataEnd = doneFilter(this.tableData, Conditions) this.pageNo = 1 this.total = this.filterTableDataEnd.length this.currentChangePage(this.filterTableDataEnd) this.flag = true this.tableLoding = false }, sortChanged(val) { this.formFilter.orderBy = val }, sortTableOperate(val) { if (val.length > 0) { val.sort((a, b) => { if (this.formFilter.orderBy === '1') { return new Date(b.assTime).getTime() - new Date(a.assTime).getTime() } else if (this.formFilter.orderBy === '2') { return b.sum - a.sum } }) } return val }, queryInfoList() { this.$http.get(pqOrgFilterList, {}, (response) => { if (response.success && response.data) { const epData = response.data let j = 0 for (let i = 0; i < epData.length; i++) { epData[i].assTime = parseTime(epData[i].assTime).substr(0, 10) j++ crossDomin.getAgencyInfo(epData[i].id, data => { j-- Object.assign(epData[i], data) if (j === 0) { this.tableData = epData this.total = epData.length if (this.total > this.pageSize) { for (let i = 0; i < this.pageSize; i++) { this.tableDataEnd.push(epData[i]) } } else { this.tableDataEnd = epData } this.tableLoding = false this.tableDataEnd = this.sortTableOperate(this.tableDataEnd) } }) } if (epData.length === 0) { this.dataList = [] this.tableData = [] this.total = 0 } } else { this.$sort.total = 0 this.tableData = [] } }) }, current(val) { this.pageNo = val if (!this.flag) { this.currentChangePage(this.tableDataEnd) } else { this.currentChangePage(this.filterTableDataEnd) } }, currentChangePage(list) { let from = (this.pageNo - 1) * this.pageSize const to = this.pageNo * this.pageSize this.tableDataEnd = [] for (; from < to; from++) { if (list[from]) { this.tableDataEnd.push(list[from]) } } this.tableDataEnd = this.sortTableOperate(this.tableDataEnd) }, changeRangerDate(val) { this.formFilter.dateRange = val }, showChart(val) { this.chartOneData = [] this.$http.get(queryOneView, { tn: 'organization', id: val, bt: this.beginDate }, (res) => { if (res.success) { this.chartOneData = chartModel(res.data) this.ChartItemDialogVisible = true } }) } } } </script> <style> .content-item{ padding: 10px; } .content-item + .content-item { border-top: 1px solid #ccc; } .content-item-tit{ line-height: 30px; } </style>