|
@@ -1,8 +1,8 @@
|
|
<template>
|
|
<template>
|
|
- <div class="SingleDay">
|
|
|
|
|
|
+ <div class="Compete">
|
|
<el-breadcrumb separator-class="el-icon-arrow-right">
|
|
<el-breadcrumb separator-class="el-icon-arrow-right">
|
|
<el-breadcrumb-item>传统媒体</el-breadcrumb-item>
|
|
<el-breadcrumb-item>传统媒体</el-breadcrumb-item>
|
|
- <el-breadcrumb-item>频道全天节目</el-breadcrumb-item>
|
|
|
|
|
|
+ <el-breadcrumb-item>节目竞争一览</el-breadcrumb-item>
|
|
</el-breadcrumb>
|
|
</el-breadcrumb>
|
|
<el-card class="box-card">
|
|
<el-card class="box-card">
|
|
<el-form
|
|
<el-form
|
|
@@ -13,51 +13,50 @@
|
|
label-width="120px"
|
|
label-width="120px"
|
|
class="demo-form-inline"
|
|
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="结束日期"
|
|
|
|
- >
|
|
|
|
- </el-date-picker>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="时间">
|
|
|
|
- <el-time-picker
|
|
|
|
- v-model="form.rangeTime"
|
|
|
|
- is-range
|
|
|
|
- format="HH:mm"
|
|
|
|
- range-separator="-"
|
|
|
|
- start-placeholder="开始时间"
|
|
|
|
- end-placeholder="结束时间"
|
|
|
|
- >
|
|
|
|
- </el-time-picker>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="频道组">
|
|
|
|
|
|
+ <el-form-item label="节目">
|
|
<el-select
|
|
<el-select
|
|
- v-model="form.channelGroup"
|
|
|
|
- placeholder="请选择频道组"
|
|
|
|
- @change="channelSelect"
|
|
|
|
|
|
+ v-model="form.program"
|
|
|
|
+ class="m-2"
|
|
|
|
+ placeholder="节目名称"
|
|
|
|
+ multiple
|
|
|
|
+ filterable
|
|
|
|
+ remote
|
|
|
|
+ reserve-keyword
|
|
|
|
+ :remote-method="remoteMethod"
|
|
|
|
+ :loading="loading"
|
|
>
|
|
>
|
|
<el-option
|
|
<el-option
|
|
- v-for="item in channelList"
|
|
|
|
|
|
+ v-for="item in options"
|
|
:key="item.value"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:label="item.label"
|
|
:value="item.value"
|
|
:value="item.value"
|
|
- :disabled="item.disabled"
|
|
|
|
>
|
|
>
|
|
</el-option>
|
|
</el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="区域">
|
|
|
|
|
|
+ <el-form-item label="节目选择">
|
|
<el-cascader
|
|
<el-cascader
|
|
- v-model="form.region"
|
|
|
|
|
|
+ v-model="form.egp"
|
|
|
|
+ collapse-tags
|
|
:options="region"
|
|
:options="region"
|
|
- :props="{children: 'options'}"
|
|
|
|
|
|
+ :props="{ multiple: true, children: 'options' }"
|
|
></el-cascader>
|
|
></el-cascader>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <el-form-item label="区域">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="form.region"
|
|
|
|
+ placeholder="请选择区域"
|
|
|
|
+ @change="regionSelect"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in region"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
<el-form-item style="float: right">
|
|
<el-form-item style="float: right">
|
|
<el-button type="primary" @click="onSubmit">查询</el-button>
|
|
<el-button type="primary" @click="onSubmit">查询</el-button>
|
|
<el-button type="primary" @click="onExport">导出</el-button>
|
|
<el-button type="primary" @click="onExport">导出</el-button>
|
|
@@ -66,31 +65,71 @@
|
|
</el-card>
|
|
</el-card>
|
|
<br />
|
|
<br />
|
|
<el-card class="box-card">
|
|
<el-card class="box-card">
|
|
- <line-charts
|
|
|
|
- :list="tableData"
|
|
|
|
- xName="channel_2"
|
|
|
|
- :keys="chartKeys"
|
|
|
|
- ></line-charts>
|
|
|
|
- <el-table
|
|
|
|
- :data="tableData"
|
|
|
|
- :header-cell-style="{ backgroundColor: '#f4f5f7', color: '#606266' }"
|
|
|
|
- style="width: 100%"
|
|
|
|
|
|
+ <el-radio-group v-model="radio">
|
|
|
|
+ <el-radio :label="0">同时段频道 </el-radio>
|
|
|
|
+ <el-radio :label="1">同时段节目 </el-radio>
|
|
|
|
+ <el-radio :label="2">同时段多节目 </el-radio>
|
|
|
|
+ </el-radio-group>
|
|
|
|
+
|
|
|
|
+ <el-row style="margin: 1em 0;" v-if="radio === 2" :gutter="20">
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-card>
|
|
|
|
+ <div class="title">
|
|
|
|
+ 直播关注度
|
|
|
|
+ </div>
|
|
|
|
+ <div class="body">{{ format(total.tv_ratings) }}%</div>
|
|
|
|
+ </el-card>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-card>
|
|
|
|
+ <div class="title">
|
|
|
|
+ 市占率
|
|
|
|
+ </div>
|
|
|
|
+ <div class="body">{{ format(total.market_ratings) }}%</div>
|
|
|
|
+ </el-card>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-card>
|
|
|
|
+ <div class="title">
|
|
|
|
+ 平均到达率
|
|
|
|
+ </div>
|
|
|
|
+ <div class="body">{{ format(total.arrive) }}%</div>
|
|
|
|
+ </el-card>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <el-card>
|
|
|
|
+ <div class="title">
|
|
|
|
+ 平均忠诚度
|
|
|
|
+ </div>
|
|
|
|
+ <div class="body">{{ format(total.loyal) }}%</div>
|
|
|
|
+ </el-card>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="col"
|
|
|
|
+ @change="change"
|
|
|
|
+ class="m-2"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ multiple
|
|
|
|
+ collapse-tags
|
|
|
|
+ v-if="radio === 2"
|
|
|
|
+ style="float: right;"
|
|
>
|
|
>
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in cols"
|
|
|
|
+ :key="item.type"
|
|
|
|
+ :label="item.name"
|
|
|
|
+ :value="item.type"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-table :data="tableList" style="width: 100%">
|
|
<el-table-column
|
|
<el-table-column
|
|
- align="center"
|
|
|
|
- show-overflow-tooltip
|
|
|
|
- width="400px"
|
|
|
|
- prop="channel_2"
|
|
|
|
- label="省级卫视"
|
|
|
|
- class-name="nowrap"
|
|
|
|
- />
|
|
|
|
- <el-table-column
|
|
|
|
- v-for="(item, i) in chartKeys"
|
|
|
|
- :key="'table' + i"
|
|
|
|
- align="center"
|
|
|
|
- :prop="item.key"
|
|
|
|
- :formatter="matrer"
|
|
|
|
|
|
+ :prop="item.type"
|
|
:label="item.name"
|
|
:label="item.name"
|
|
|
|
+ :type="item.colType"
|
|
|
|
+ v-for="(item, i) in columns[radio] || []"
|
|
|
|
+ :key="'col' + i"
|
|
/>
|
|
/>
|
|
</el-table>
|
|
</el-table>
|
|
</el-card>
|
|
</el-card>
|
|
@@ -101,87 +140,322 @@
|
|
// @ is an alias to /src
|
|
// @ is an alias to /src
|
|
// import { } from "@/api/index";
|
|
// import { } from "@/api/index";
|
|
|
|
|
|
-import lineCharts from "@/views/Country/components/lineCharts";
|
|
|
|
|
|
+// import lineCharts from "@/views/Country/components/lineCharts";
|
|
|
|
|
|
import config from "@/config/index";
|
|
import config from "@/config/index";
|
|
|
|
+const three = [
|
|
|
|
+ {
|
|
|
|
+ type: "epg_name",
|
|
|
|
+ name: "节目",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "tv_name",
|
|
|
|
+ name: "频道",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "start_time:end_time",
|
|
|
|
+ name: "播出时间",
|
|
|
|
+ },
|
|
|
|
+];
|
|
export default {
|
|
export default {
|
|
name: "Channel",
|
|
name: "Channel",
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
- chartKeys: [
|
|
|
|
|
|
+ form: {
|
|
|
|
+ program: "",
|
|
|
|
+ region: 9,
|
|
|
|
+ epg: -1,
|
|
|
|
+ },
|
|
|
|
+ options: [],
|
|
|
|
+ list: [],
|
|
|
|
+ loading: false,
|
|
|
|
+ radio: 0,
|
|
|
|
+ col: [],
|
|
|
|
+ cols: [
|
|
{
|
|
{
|
|
- key: "indicators_tv_ratings",
|
|
|
|
- name: "直播关注度排名",
|
|
|
|
|
|
+ type: "all_sametime-同时段全频道排名",
|
|
|
|
+ name: "同时段全频道排名",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- key: "indicators_tv_ratings",
|
|
|
|
|
|
+ type: "all_sametime_province_weishi-同时段省卫频道排名",
|
|
|
|
+ name: "同时段省卫频道排名",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "all_sametime_weishi-同时段卫视频道排名",
|
|
|
|
+ name: "同时段卫视频道排名",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "all_sametime_weishi_cctv1-同时段综合频道排名",
|
|
|
|
+ name: "同时段综合频道排名",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "all_sametime_jiemu-同时段全频道节目排名",
|
|
|
|
+ name: "同时段全频道节目排名",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "all_in_day-全天全频道节目排名",
|
|
|
|
+ name: "全天全频道节目排名",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "all_weishi-全天卫视频道节目排名",
|
|
|
|
+ name: "全天卫视频道节目排名",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "tv_ratings-直播关注度",
|
|
name: "直播关注度",
|
|
name: "直播关注度",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- key: "indicators_market_ratings",
|
|
|
|
|
|
+ type: "market_ratings-市占率",
|
|
name: "市占率",
|
|
name: "市占率",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- key: "indicators_arrive",
|
|
|
|
|
|
+ type: "arrive-到达率",
|
|
name: "到达率",
|
|
name: "到达率",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- key: "indicators_loyal",
|
|
|
|
|
|
+ type: "loyal-忠诚度",
|
|
name: "忠诚度",
|
|
name: "忠诚度",
|
|
},
|
|
},
|
|
|
|
+ {
|
|
|
|
+ type: "column_remain-上期节目留存",
|
|
|
|
+ name: "上期节目留存",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "traction-用户牵引",
|
|
|
|
+ name: "用户牵引",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "tv_contribution-直播关注度贡献",
|
|
|
|
+ name: "直播关注度贡献",
|
|
|
|
+ },
|
|
],
|
|
],
|
|
- form: {
|
|
|
|
- rangeTime: [],
|
|
|
|
- channelGroup: 0,
|
|
|
|
- date: [
|
|
|
|
- new Date(new Date() - 86400000),
|
|
|
|
- new Date(new Date() - 86400000),
|
|
|
|
- ],
|
|
|
|
- region: -1,
|
|
|
|
- },
|
|
|
|
- tableData: [
|
|
|
|
|
|
+ tableList: [
|
|
{
|
|
{
|
|
- channel_2: "广东卫视",
|
|
|
|
- indicators_arrive: "",
|
|
|
|
- indicators_loyal: "",
|
|
|
|
- indicators_market_ratings: 0.022008,
|
|
|
|
- indicators_market_ratings_rank: 1,
|
|
|
|
- indicators_tv_ratings: 0.003919,
|
|
|
|
- indicators_tv_ratings_rank: 1,
|
|
|
|
|
|
+ market_ratings: 0.103766,
|
|
|
|
+ tv_name: "CCTV-8",
|
|
|
|
+ time_range: "04:02~04:32",
|
|
|
|
+ epgs: "《破冰行动 8 9 10 11 12 13》、《星推荐》",
|
|
|
|
+ rank: 1,
|
|
|
|
+ tv_ratings: 0.000401,
|
|
|
|
+ id: 13,
|
|
|
|
+ type: "央视",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- channel_2: "湖南卫视",
|
|
|
|
- indicators_arrive: "",
|
|
|
|
- indicators_loyal: "",
|
|
|
|
- indicators_market_ratings: 0.019602,
|
|
|
|
- indicators_market_ratings_rank: 2,
|
|
|
|
- indicators_tv_ratings: 0.00349,
|
|
|
|
- indicators_tv_ratings_rank: 2,
|
|
|
|
|
|
+ market_ratings: 0.081786,
|
|
|
|
+ tv_name: "CCTV-新闻",
|
|
|
|
+ time_range: "04:02~04:32",
|
|
|
|
+ epgs: "《新闻直播间》",
|
|
|
|
+ rank: 2,
|
|
|
|
+ tv_ratings: 0.000316,
|
|
|
|
+ id: 18,
|
|
|
|
+ type: "央视",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
|
|
+ columns: [
|
|
|
|
+ [
|
|
|
|
+ {
|
|
|
|
+ colType: "index",
|
|
|
|
+ name: "排名",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "tv_name",
|
|
|
|
+ name: "频道",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "time_range",
|
|
|
|
+ name: "时段",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "tv_ratings",
|
|
|
|
+ name: "直播关注度",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "market_ratings",
|
|
|
|
+ name: "市占率",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "epgs",
|
|
|
|
+ name: "节目信息",
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ [
|
|
|
|
+ {
|
|
|
|
+ colType: "index",
|
|
|
|
+ name: "排名",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "epg_name",
|
|
|
|
+ name: "节目",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "tv_name",
|
|
|
|
+ name: "频道",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "start_time:end_time",
|
|
|
|
+ name: "播出时间",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "tv_ratings",
|
|
|
|
+ name: "直播关注度",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "market_ratings",
|
|
|
|
+ name: "市占率",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "arrive",
|
|
|
|
+ name: "到达率",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "loyal",
|
|
|
|
+ name: "忠诚度",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "column_remain",
|
|
|
|
+ name: "节目留存",
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ [
|
|
|
|
+ {
|
|
|
|
+ type: "epg_name",
|
|
|
|
+ name: "节目",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "tv_name",
|
|
|
|
+ name: "频道",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: "start_time:end_time",
|
|
|
|
+ name: "播出时间",
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ ],
|
|
|
|
+ total: {
|
|
|
|
+ arrive: 0.00003,
|
|
|
|
+ loyal: 0.412556,
|
|
|
|
+ market_ratings: 0.003147,
|
|
|
|
+ tv_ratings: 0.000012,
|
|
|
|
+ },
|
|
};
|
|
};
|
|
},
|
|
},
|
|
mounted() {},
|
|
mounted() {},
|
|
computed: {
|
|
computed: {
|
|
- channelList() {
|
|
|
|
- return config.channelList;
|
|
|
|
- },
|
|
|
|
region() {
|
|
region() {
|
|
- console.log(config.region)
|
|
|
|
- return config.region;
|
|
|
|
|
|
+ let reg = config.region || [],
|
|
|
|
+ li = [];
|
|
|
|
+ for (let i = 0; i < reg.length; i++) {
|
|
|
|
+ const v = reg[i];
|
|
|
|
+ if (v.label === "行业分城") {
|
|
|
|
+ li = v.options || [];
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return li;
|
|
|
|
+ },
|
|
|
|
+ tableDate() {
|
|
|
|
+ const obj = {};
|
|
|
|
+
|
|
|
|
+ const b = [
|
|
|
|
+ {
|
|
|
|
+ key: "indicators_tv_ratings",
|
|
|
|
+ name: "直播关注度",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ key: "indicators_market_ratings",
|
|
|
|
+ name: "市占率",
|
|
|
|
+ },
|
|
|
|
+ ];
|
|
|
|
+ for (let i = 0; i < this.tableData.length; i++) {
|
|
|
|
+ const v = this.tableData[i];
|
|
|
|
+ if (typeof obj[v.epg] !== "object") obj[v.epg] = {};
|
|
|
|
+ obj[v.epg][v.minute] = v;
|
|
|
|
+ }
|
|
|
|
+ let li = [],
|
|
|
|
+ keys = Object.keys(obj),
|
|
|
|
+ dataLen = [];
|
|
|
|
+ for (let i = 0; i < keys.length; i++) {
|
|
|
|
+ const k = keys[i];
|
|
|
|
+ dataLen.push(...Object.keys(obj[k]));
|
|
|
|
+ }
|
|
|
|
+ for (let i = 0; i < dataLen.length; i++) {
|
|
|
|
+ let p = {};
|
|
|
|
+ for (let o = 0; o < keys.length; o++) {
|
|
|
|
+ const v = obj[keys[o]][dataLen[i]];
|
|
|
|
+ if (!v) continue;
|
|
|
|
+
|
|
|
|
+ b.map(k => {
|
|
|
|
+ p[keys[o] + "_" + k.key] = v[k.key] || 0;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ li.push({
|
|
|
|
+ date: dataLen[i],
|
|
|
|
+ ...p,
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ return li;
|
|
|
|
+ },
|
|
|
|
+ chartKeys() {
|
|
|
|
+ const obj = {},
|
|
|
|
+ li = [];
|
|
|
|
+ for (let i = 0; i < this.tableData.length; i++) {
|
|
|
|
+ const b = [
|
|
|
|
+ {
|
|
|
|
+ key: "indicators_tv_ratings",
|
|
|
|
+ name: "直播关注度",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ key: "indicators_market_ratings",
|
|
|
|
+ name: "市占率",
|
|
|
|
+ },
|
|
|
|
+ ];
|
|
|
|
+ const v = this.tableData[i];
|
|
|
|
+ if (obj[v.epg] === true) continue;
|
|
|
|
+ obj[v.epg] = true;
|
|
|
|
+ li.push(
|
|
|
|
+ ...b.map(k => {
|
|
|
|
+ k.key = v.epg + "_" + k.key;
|
|
|
|
+ k.name = v.epg + "_" + k.name;
|
|
|
|
+ return k;
|
|
|
|
+ })
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ return li;
|
|
|
|
+ },
|
|
|
|
+ tableKeys() {
|
|
|
|
+ const obj = {},
|
|
|
|
+ li = [];
|
|
|
|
+ for (let i = 0; i < this.tableData.length; i++) {
|
|
|
|
+ const b = [
|
|
|
|
+ {
|
|
|
|
+ key: "indicators_tv_ratings",
|
|
|
|
+ name: "直播关注度",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ key: "indicators_market_ratings",
|
|
|
|
+ name: "市占率",
|
|
|
|
+ },
|
|
|
|
+ ];
|
|
|
|
+ const v = this.tableData[i];
|
|
|
|
+ if (obj[v.epg] === true) continue;
|
|
|
|
+ obj[v.epg] = true;
|
|
|
|
+ li.push({
|
|
|
|
+ name: v.epg,
|
|
|
|
+ children: b.map(k => {
|
|
|
|
+ k.key = v.epg + "_" + k.key;
|
|
|
|
+ return k;
|
|
|
|
+ }),
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ return li;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
onExport() {},
|
|
onExport() {},
|
|
- disabledDate(time) {
|
|
|
|
- return time.getTime() > Date.now() - 86400000;
|
|
|
|
- },
|
|
|
|
onSubmit() {},
|
|
onSubmit() {},
|
|
matrer(row, column, cellValue) {
|
|
matrer(row, column, cellValue) {
|
|
- return (cellValue * 100).toFixed(4) - 0 + "%";
|
|
|
|
- },
|
|
|
|
- channelSelect(a) {
|
|
|
|
- this.selectAll(a, "channelGroup", 0);
|
|
|
|
|
|
+ let val = cellValue || 0;
|
|
|
|
+ return (val * 100).toFixed(4) - 0 + "%";
|
|
},
|
|
},
|
|
regionSelect(a) {
|
|
regionSelect(a) {
|
|
this.selectAll(a, "region", -1);
|
|
this.selectAll(a, "region", -1);
|
|
@@ -196,16 +470,67 @@ export default {
|
|
.replace(/,$/, "")
|
|
.replace(/,$/, "")
|
|
.split(",");
|
|
.split(",");
|
|
},
|
|
},
|
|
|
|
+ change(v) {
|
|
|
|
+ let ori = v || [];
|
|
|
|
+ let l = JSON.parse(JSON.stringify(three));
|
|
|
|
+ for (let i = 0; i < ori.length; i++) {
|
|
|
|
+ const ol = ori[i];
|
|
|
|
+ let li = (ol || "").split("-");
|
|
|
|
+ let o = {
|
|
|
|
+ type: li[0],
|
|
|
|
+ name: li[1],
|
|
|
|
+ };
|
|
|
|
+ l.push(o);
|
|
|
|
+ }
|
|
|
|
+ this.columns[2] = l;
|
|
|
|
+ },
|
|
|
|
+ format(v) {
|
|
|
|
+ return (v * 100).toFixed(4);
|
|
|
|
+ },
|
|
|
|
+ remoteMethod(query) {
|
|
|
|
+ if (query) {
|
|
|
|
+ this.loading = true;
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ this.loading = false;
|
|
|
|
+ this.options = this.list.filter(item => {
|
|
|
|
+ return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
|
|
|
|
+ });
|
|
|
|
+ }, 200);
|
|
|
|
+ } else {
|
|
|
|
+ this.options = [];
|
|
|
|
+ }
|
|
|
|
+ },
|
|
},
|
|
},
|
|
- components: { lineCharts },
|
|
|
|
|
|
+ components: {},
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style>
|
|
<style>
|
|
-.SingleDay {
|
|
|
|
|
|
+.Compete {
|
|
margin: 10px 15px;
|
|
margin: 10px 15px;
|
|
}
|
|
}
|
|
-.SingleDay .nowrap .cell {
|
|
|
|
|
|
+.Compete .nowrap .cell {
|
|
white-space: nowrap;
|
|
white-space: nowrap;
|
|
}
|
|
}
|
|
|
|
+.Compete .nowrap .cell {
|
|
|
|
+ white-space: nowrap;
|
|
|
|
+}
|
|
|
|
+.Compete .title {
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ color: #787b82;
|
|
|
|
+ padding: auto 1em;
|
|
|
|
+}
|
|
|
|
+.Compete .body {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 108px;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: row;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ flex-wrap: nowrap;
|
|
|
|
+ font-size: 30px;
|
|
|
|
+ color: #53507b;
|
|
|
|
+ font-weight: 700;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|