123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- <template>
- <div class="Version">
- <el-breadcrumb separator-class="el-icon-arrow-right">
- <el-breadcrumb-item>总编室需求</el-breadcrumb-item>
- </el-breadcrumb>
- <el-card class="box-card">
- <el-form
- ref="form"
- :model="form"
- size="small"
- :inline="true"
- label-width="120px"
- class="demo-form-inline"
- >
- <el-form-item label="日期">
- <el-date-picker
- v-model="form.date"
- type="daterange"
- :disabled-date="time => disabledDate(time)"
- range-separator="-"
- start-placeholder="开始日期"
- end-placeholder="结束日期"
- :clearable="false"
- >
- </el-date-picker>
- </el-form-item>
- <el-form-item label="应用">
- <el-select v-model="form.app" placeholder="请选择时段">
- <el-option
- v-for="item in cycle"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- :disabled="item.disabled"
- >
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item style="float: right">
- <el-button type="primary" @click="onSubmit">查询</el-button>
- </el-form-item>
- </el-form>
- </el-card>
- <br />
- <el-card class="box-card">
- <div style="text-align: right">
- <el-button
- size="small"
- style="margin-left: 0.5em"
- type="primary"
- @click="onExport"
- >
- 导出
- </el-button>
- </div>
- <br />
- <br />
- <el-tabs v-model="activeName" class="demo-tabs">
- <el-tab-pane label="单日分析" name="first">
- <el-table
- :data="table.dt || []"
- style="width: 100%"
- :header-cell-style="{
- backgroundColor: '#f4f5f7',
- color: '#606266'
- }"
- >
- <el-table-column
- prop="dtf"
- header-align="center"
- align="center"
- label="日期"
- show-overflow-tooltip
- >
- <template #default="scope">
- <span v-text="scope.row.dtf || '-'"></span>
- </template>
- </el-table-column>
- <el-table-column
- show-overflow-tooltip
- prop="pv"
- label="PV"
- header-align="center"
- align="center"
- >
- <template #default="scope">
- <countTo
- :startVal="(scope.row.uv || 0) * 0.8"
- :endVal="scope.row.uv || 0"
- ></countTo>
- </template>
- </el-table-column>
- <el-table-column
- show-overflow-tooltip
- prop="uv"
- label="UV"
- header-align="center"
- align="center"
- >
- <template #default="scope">
- <countTo
- :startVal="(scope.row.uv || 0) * 0.8"
- :endVal="scope.row.uv || 0"
- ></countTo>
- </template>
- </el-table-column>
- <el-table-column
- prop="title"
- header-align="center"
- align="center"
- label="当日访问最高稿件标题"
- show-overflow-tooltip
- >
- </el-table-column>
- <el-table-column
- show-overflow-tooltip
- prop="cpv"
- label="稿件浏览量"
- header-align="center"
- align="center"
- >
- <template #default="scope">
- <countTo
- :startVal="(scope.row.cpv || 0) * 0.8"
- :endVal="scope.row.cpv || 0"
- ></countTo>
- </template>
- </el-table-column>
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="整月分析" name="second">
- <el-row :gutter="10">
- <el-col :span="span">
- <el-table
- :data="table.all"
- style="width: 100%"
- :header-cell-style="{
- backgroundColor: '#f4f5f7',
- color: '#606266'
- }"
- >
- <el-table-column
- prop="title"
- header-align="center"
- align="center"
- label="当日访问最高稿件标题"
- show-overflow-tooltip
- :cell-style="{}"
- >
- </el-table-column>
- <el-table-column
- show-overflow-tooltip
- prop="cpv"
- label="浏览量"
- header-align="center"
- align="center"
- :cell-style="{}"
- >
- <template #default="scope">
- <countTo
- :startVal="(scope.row.cpv || 0) * 0.8"
- :endVal="scope.row.cpv || 0"
- ></countTo>
- </template>
- </el-table-column>
- </el-table>
- </el-col>
- <el-col :span="span">
- <el-table
- :data="table.web"
- style="width: 100%"
- :header-cell-style="{
- backgroundColor: '#f4f5f7',
- color: '#606266'
- }"
- >
- <el-table-column
- prop="title"
- header-align="center"
- align="center"
- label="当日访问最高稿件标题"
- show-overflow-tooltip
- :cell-style="{}"
- >
- </el-table-column>
- <el-table-column
- show-overflow-tooltip
- prop="cpv"
- label="浏览量"
- header-align="center"
- align="center"
- :cell-style="{}"
- >
- <template #default="scope">
- <countTo
- :startVal="(scope.row.cpv || 0) * 0.8"
- :endVal="scope.row.cpv || 0"
- ></countTo>
- </template>
- </el-table-column>
- </el-table>
- </el-col>
- <el-col :span="span">
- <el-table
- :data="table.client"
- style="width: 100%"
- :header-cell-style="{
- backgroundColor: '#f4f5f7',
- color: '#606266'
- }"
- >
- <el-table-column
- prop="title"
- header-align="center"
- align="center"
- label="当日访问最高稿件标题"
- show-overflow-tooltip
- :cell-style="{}"
- >
- </el-table-column>
- <el-table-column
- show-overflow-tooltip
- prop="cpv"
- label="浏览量"
- header-align="center"
- align="center"
- :cell-style="{}"
- >
- <template #default="scope">
- <countTo
- :startVal="(scope.row.cpv || 0) * 0.8"
- :endVal="scope.row.cpv || 0"
- ></countTo>
- </template>
- </el-table-column>
- </el-table>
- </el-col>
- </el-row>
- </el-tab-pane>
- </el-tabs>
- </el-card>
- </div>
- </template>
- <script>
- // @ is an alias to /src
- import { getAppList, getUnionList, getRule } from '@/api/index';
- import countTo from '@/components/counto/vue-countTo.vue';
- import { defaultAppNameFunc } from '@/utils/tool.js';
- // import config from "@/config/index";
- export default {
- name: 'Version',
- data() {
- return {
- lastParams: {},
- activeName: 'first',
- span: 8,
- table: {},
- form: {
- app: '',
- date: []
- },
- cycle: [],
- showList: []
- };
- },
- mounted() {
- // 应用列表
- const roleid =
- JSON.parse(window.parent.localStorage.userinfo || '{}').roleid || '9999';
- getRule({
- db: 'authplat',
- exportMark: '0',
- menuid: 399,
- roleid
- }).then(res => {
- const data =
- res && res.output && res.output.data
- ? res.output.data.prvRolectrl || []
- : [];
- const source = { length: 0 };
- for (let i = 0; i < data.length; i++) {
- const v = data[i];
- if (v.controlid == 'RMT_SOURCE') {
- source[v.detid] = true;
- source.length = source.length + 1;
- }
- }
- getAppList({
- exportMark: '0',
- gcode: 'SOURCE',
- pageid: 1,
- pagesize: 1000
- }).then(r => {
- if (r && r.output && r.output.data.length > 0) {
- this.cycle = this.verifyList(
- r.output.data,
- source,
- {
- value: 'mname',
- label: 'mname'
- },
- false
- );
- this.form = {
- app: defaultAppNameFunc(this.cycle),
- date: [
- new Date(Date.now() - 604800000),
- new Date(Date.now() - 86400000)
- ]
- };
- // this.onSubmit();
- }
- });
- });
- },
- computed: {},
- methods: {
- verifyList(list, verify, obj, more) {
- if (!obj) return;
- let li = list || [];
- const out = [];
- more && out.push({ value: -1, label: '不限' });
- for (let i = 0; i < li.length; i++) {
- const v = li[i];
- if (verify.length !== 0 && !verify[v.mcode]) continue;
- out.push({
- value: v[obj.value],
- label: v[obj.label]
- });
- }
- return out;
- },
- onSubmit() {
- this.lastParams = {
- app: this.form.app,
- start: this.FormData(this.form.date[0]),
- end: this.FormData(this.form.date[1])
- };
- getUnionList(this.lastParams).then(resChart => {
- this.table = resChart;
- let n = 0;
- this.table.all && this.table.all.length && n++;
- this.table.web && this.table.web.length && n++;
- this.table.client && this.table.client.length && n++;
- this.span = 24/(n || 1);
- });
- },
- disabledDate(time) {
- const first = new Date('2021-06-21 00:00:00');
- return (
- time.getTime() > Date.now() - 86400000 ||
- time.getTime() < first.getTime()
- );
- },
- FormData(date) {
- const d = new Date(date || Date.now() - 86400000);
- const year = d.getFullYear();
- const month =
- d.getMonth() <= 8 ? '0' + (d.getMonth() + 1) : d.getMonth() + 1;
- const day = d.getDate() <= 9 ? '0' + d.getDate() : d.getDate();
- return [year, month, day].join('-');
- },
- onExport() {
- window.open = `http://172.16.101.20:8762/cxzx-program/union/export?start=${this.lastParams.start}&end=${this.lastParams.end}&app=${this.lastParams.app}`
- }
- },
- components: {
- countTo
- }
- };
- </script>
- <style>
- .Version {
- margin: 10px 15px;
- }
- .libTitle {
- color: tomato;
- font-weight: 700;
- font-size: 14px;
- }
- .btn-next i,
- .btn-prev i {
- margin: 0 auto;
- }
- .caret-wrapper .ascending {
- display: none;
- }
- </style>
|