Commit fecce48f by 无尘

fix: 修改bug

parent d239a1ef
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>分享有礼</title><link href=./static/css/app.0333d4e87c34134c059cf7165a541144.css rel=stylesheet></head><body style="background-color: #f0f2f5;min-width: 1400px;"><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.6.6/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/elementUI/index.2.5.4.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.33.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.03.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.29.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.14.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.38.js></script><script src=//web-1251519181.file.myqcloud.com/components/aside-menu.2.0.11.js></script><script src=//web-1251519181.file.myqcloud.com/components/area-ab.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.02.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.1.91.js></script><script type=text/javascript src=./static/js/manifest.7f9c2adcf54e2efcff6d.js></script><script type=text/javascript src=./static/js/vendor.8455def81090347f10ce.js></script><script type=text/javascript src=./static/js/app.a5d6a27bac101a87247e.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>分享有礼</title><link href=./static/css/app.2501689148d2d83ddec90985c9eccc08.css rel=stylesheet></head><body style="background-color: #f0f2f5;min-width: 1400px;"><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.6.6/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/elementUI/index.2.5.4.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.33.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.03.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.29.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.14.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.38.js></script><script src=//web-1251519181.file.myqcloud.com/components/aside-menu.2.0.11.js></script><script src=//web-1251519181.file.myqcloud.com/components/area-ab.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.02.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.1.91.js></script><script type=text/javascript src=./static/js/manifest.7abff912552c18057024.js></script><script type=text/javascript src=./static/js/vendor.8455def81090347f10ce.js></script><script type=text/javascript src=./static/js/app.a5d6a27bac101a87247e.js></script></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,a){for(var f,i,u,d=0,s=[];d<r.length;d++)i=r[d],t[i]&&s.push(t[i][0]),t[i]=0;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(e[f]=c[f]);for(n&&n(r,c,a);s.length;)s.shift()();if(a)for(d=0;d<a.length;d++)u=o(o.s=a[d]);return u};var r={},t={15:0};function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,o){n=t[e]=[r,o]});n[2]=r;var c=document.getElementsByTagName("head")[0],a=document.createElement("script");a.type="text/javascript",a.charset="utf-8",a.async=!0,a.timeout=12e4,o.nc&&a.setAttribute("nonce",o.nc),a.src=o.p+"static/js/"+e+"."+{0:"f0728605b4cabfe16cd5",1:"5b546fa38466a0b05e37",2:"96016ff541a14a45d7e6",3:"4d2a65049c6002aa5528",4:"67ccecbc8d185b3f1c8c",5:"0c49c41eb27e8038adad",6:"f11d902de0350ef6b333",7:"b0fd74564cc799593b8f",8:"fe9ec49f63ecd8e527ba",9:"522a01ff8d619d2bf030",10:"e16b73d2d4b922255e52",11:"79c83b22c308f0e0e879",12:"3c0d12e65df907bcbcc5"}[e]+".js";var f=setTimeout(i,12e4);function i(){a.onerror=a.onload=null,clearTimeout(f);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return a.onerror=a.onload=i,c.appendChild(a),r},o.m=e,o.c=r,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="./",o.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,o,a){for(var f,i,u,d=0,s=[];d<r.length;d++)i=r[d],t[i]&&s.push(t[i][0]),t[i]=0;for(f in o)Object.prototype.hasOwnProperty.call(o,f)&&(e[f]=o[f]);for(n&&n(r,o,a);s.length;)s.shift()();if(a)for(d=0;d<a.length;d++)u=c(c.s=a[d]);return u};var r={},t={15:0};function c(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,c),t.l=!0,t.exports}c.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,c){n=t[e]=[r,c]});n[2]=r;var o=document.getElementsByTagName("head")[0],a=document.createElement("script");a.type="text/javascript",a.charset="utf-8",a.async=!0,a.timeout=12e4,c.nc&&a.setAttribute("nonce",c.nc),a.src=c.p+"static/js/"+e+"."+{0:"f0728605b4cabfe16cd5",1:"5b546fa38466a0b05e37",2:"3946300399ed574c7c3a",3:"47cdc7ab1727a7c4fcef",4:"67ccecbc8d185b3f1c8c",5:"0c49c41eb27e8038adad",6:"f11d902de0350ef6b333",7:"b0fd74564cc799593b8f",8:"fe9ec49f63ecd8e527ba",9:"522a01ff8d619d2bf030",10:"e16b73d2d4b922255e52",11:"79c83b22c308f0e0e879",12:"3c0d12e65df907bcbcc5"}[e]+".js";var f=setTimeout(i,12e4);function i(){a.onerror=a.onload=null,clearTimeout(f);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return a.onerror=a.onload=i,o.appendChild(a),r},c.m=e,c.c=r,c.d=function(e,n,r){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="./",c.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
......@@ -4,7 +4,7 @@
* @Author: 无尘
* @Date: 2019-11-18 10:37:02
* @LastEditors: 无尘
* @LastEditTime: 2019-12-15 15:20:50
* @LastEditTime: 2019-12-17 12:15:13
-->
<!--
<base-config @submitNext="submitNext"></base-config>
......@@ -115,7 +115,7 @@ export default {
callback(new Error('请选择活动有效期'));
} else if (value[0].split(' ')[0] == timeFormat.timeStampToYmd(new Date().getTime()) && value[0].split(' ')[0] == value[1].split(' ')[0]) {
callback(new Error('不能选择今天'));
}else if (!!this.$route.query.activityId && (value[0].split(' ')[0] != timeFormat.timeStampToYmd(new Date().getTime()) || timeFormat.timeStampToYmd(new Date().getTime()) == value[1].split(' ')[0])) {
}else if (this.editDate && !!this.$route.query.activityId && (value[0].split(' ')[0] != timeFormat.timeStampToYmd(new Date().getTime()) || timeFormat.timeStampToYmd(new Date().getTime()) == value[1].split(' ')[0])) {
callback(new Error('开始时间无法改到当前时间之后,结束时间无法改到当前时间之前'));
} else {
callback();
......@@ -137,7 +137,8 @@ export default {
cardCoupName: '',
router: '',
activityName: '',
dateRange: []
dateRange: [],
editDate: false,
},
rules: {
activityName: [{ required: true, message: '请输入活动名称', trigger: 'blur' }],
......@@ -169,6 +170,7 @@ export default {
*/
changeDate(e) {
const that = this;
that.editDate = true;
if (!e) {
that.choiceDateCopy = [];
that.activeInfoData.dateRange = [];
......
......@@ -18,10 +18,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
<div class="data-statistics-left">
<ul class="flex flex-column flex-pack-center flex-align-center">
<li class="flex-1 flex flex-pack-center flex-align-center">
<div class="data-statistics-icon"><img
src="../../assets/images/bgl.png"
alt=""
/></div>
<div class="data-statistics-icon"><img src="../../assets/images/bgl.png" alt="" /></div>
<div class="data-statistics-txt flex flex-column">
<div class="font-14 color-606266 font-w-400">活动曝光量</div>
......@@ -29,10 +26,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
</div>
</li>
<li class="flex-1 flex flex-pack-center flex-align-center">
<div class="data-statistics-icon"><img
src="../../assets/images/cyrs.png"
alt=""
/></div>
<div class="data-statistics-icon"><img src="../../assets/images/cyrs.png" alt="" /></div>
<div class="data-statistics-txt flex flex-column">
<div class="font-14 color-606266 font-w-400">参与人数</div>
......@@ -40,10 +34,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
</div>
</li>
<li class="flex-1 flex flex-pack-center flex-align-center">
<div class="data-statistics-icon"><img
src="../../assets/images/syrs.png"
alt=""
/></div>
<div class="data-statistics-icon"><img src="../../assets/images/syrs.png" alt="" /></div>
<div class="data-statistics-txt flex flex-column">
<div class="font-14 color-606266 font-w-400">受邀人数</div>
......@@ -56,18 +47,57 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
<div class="data-right-top flex">
<div class="data-statistics-middle flex-1 border-box m-l-20">
<div class="font-14 color-606266">参与率</div>
<div :class="['font-22 color-303133 p-t-5 ', activeData.attendRate]">{{ activeData.attendRate? Number(Number(activeData.attendRate) * 100).toFixed(2) : 0 }} %</div>
<div :class="['font-22 color-303133 p-t-5 ', activeData.attendRate]">{{ activeData.attendRate ? Number(Number(activeData.attendRate) * 100).toFixed(2) : 0 }} %</div>
<div class="data-percentage">
<div
class="data-percentage-inner"
:style="{ width: Number(Number(activeData.attendRate)*100).toFixed(2) + '%' }"
></div>
<div class="data-percentage-inner" :style="{ width: Number(Number(activeData.attendRate) * 100).toFixed(2) + '%' }"></div>
</div>
</div>
<div class="data-statistics-right flex-1 border-box m-l-20">
<div class="font-14 color-606266">传播系数</div>
<div class="font-22 color-303133 p-t-5">{{ activeData.spread }}</div>
<div
<ul class="spread-ul">
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
<li>
<div class="gray"></div>
<div :class="['blue', 'blue' + activityId]" style="width: 0px;"></div>
</li>
</ul>
<!-- <div
v-if="activeData.spread < 10"
class="data-percentage"
>
......@@ -102,14 +132,11 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
:key="key + 'xrbg'"
></i>
</template>
</div>
</div> -->
</div>
</div>
<div class="data-right-bottom">
<bar-chart
:barChartData="barChartData"
:charHeight="charHeight"
></bar-chart>
<bar-chart :barChartData="barChartData" :charHeight="charHeight"></bar-chart>
</div>
<!--<div class="chart-title font-12 color-000 text-center">- 近15天趋势图 -</div>-->
</div>
......@@ -122,7 +149,7 @@ export default {
name: 'data-statistics',
props: {
activeData: {
type: [Object,Array],
type: [Object, Array],
default() {
return {
exposure: 0,
......@@ -133,6 +160,12 @@ export default {
};
}
},
activityId: {
type: String,
default() {
return '';
}
},
barChartData: {
type: [Array, Object],
default() {
......@@ -146,11 +179,36 @@ export default {
charHeight: '220px'
};
},
/* methods() {
} */
methods: {
diagram(num) {
let arr = document.getElementsByClassName('blue' + this.activityId);
for (let i = 0; i < arr.length; i++) {
if (i + 1 <= num) {
arr[i].style.width = '17px';
} else if (i + 1 == Math.ceil(num)) {
arr[i].style.width = (parseInt(num * 10 - parseInt(num) * 10) / 10) * 17 + 'px';
} else {
arr[i].style.width = '0px';
}
}
this.$forceUpdate();
}
},
watch: {
activeData(newData, oldData) {
const that = this;
if (newData) {
that.$nextTick(() => {
that.diagram(newData.spread);
});
}
}
},
mounted() {
console.log(this.activeData);
const that = this;
that.$nextTick(() => {
that.activeData.hasOwnProperty('spread') ? that.diagram(that.activeData.spread) : '';
});
}
};
</script>
......@@ -244,6 +302,32 @@ export default {
color: rgba(24, 144, 255, 0.15);
}
}
.spread-ul {
width: 100%;
overflow: hidden;
li {
float: left;
position: relative;
margin-left: 0px;
.gray {
display: block;
width: 17px;
height: 29px;
background: url(../../assets/images/blue-opacity.png) no-repeat;
background-size: contain;
}
.blue {
width: 17px;
height: 29px;
background: url(../../assets/images/blue.png) no-repeat;
background-size: cover;
display: block;
position: absolute;
top: 0;
left: 0;
}
}
}
}
}
}
......
......@@ -4,7 +4,7 @@
* @Author: 无尘
* @Date: 2019-11-13 16:37:02
* @LastEditors: 无尘
* @LastEditTime: 2019-12-15 16:41:59
* @LastEditTime: 2019-12-17 12:31:18
-->
<!--
<finished-active></finished-active>
......@@ -13,64 +13,36 @@ import finishedActive from '@/components/active/finished-active.vue';
-->
<template>
<div class="finished-active border-box">
<ul>
<template v-for="(item, index) in finishedData">
<li
:class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']"
:key="index + 'data'"
>
<div
class="finished-active-title flex flex-space-between border-box"
@click.stop="selectLi(item)"
>
<div class="active-title-left">
<div class="active-title-name font-18 color-303133 font-w-700">{{ item.activityName }}</div>
<div class="active-title-date font-14 color-909399 m-t-7">{{ item.startDate | formatTimeYmdHms }} - {{ item.endDate | formatTimeYmdHms }}</div>
</div>
<div class="active-title-right">
<el-button
type="primary"
plain
@click.stop="toEdit(index, item)"
>活动配置</el-button>
<!-- <el-button
<div>
<div v-if="finishedData.length" class="separator-space">- 以下为已结束活动 -</div>
<div class="finished-active border-box">
<ul>
<template v-for="(item, index) in finishedData">
<li :class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" :key="index + 'data'">
<div class="finished-active-title flex flex-space-between border-box" @click.stop="selectLi(item)">
<div class="active-title-left">
<div class="active-title-name font-18 color-303133 font-w-700">{{ item.activityName }}</div>
<div class="active-title-date font-14 color-909399 m-t-7">{{ item.startDate | formatTimeYmdHms }} - {{ item.endDate | formatTimeYmdHms }}</div>
</div>
<div class="active-title-right">
<el-button type="primary" plain @click.stop="toEdit(index, item)">活动配置</el-button>
<!-- <el-button
type="primary"
plain
@click="handleCopy(index, item)"
>复制路径</el-button> -->
<el-button
type="primary"
plain
@click.stop="toDataList(index, item)"
>数据明细</el-button>
<el-button type="primary" plain @click.stop="toDataList(index, item)">数据明细</el-button>
</div>
</div>
<div v-if="selectItem == item.activityId" class="finished-active-body">
<out-date-active :barChartData="barChartData" :funnelData="funnelData" :activityId="item.activityId"></out-date-active>
</div>
</div>
<div
v-if="selectItem == item.activityId"
class="finished-active-body"
>
<out-date-active
:barChartData="barChartData"
:funnelData="funnelData"
></out-date-active>
</div>
</li>
</template>
</ul>
<div
class="pagination text-right m-t-14"
v-if="finishedData.length"
>
<el-pagination
small
:page-size="pageSize"
:current-page="currentPage"
layout="prev, pager, next"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
> </el-pagination>
</li>
</template>
</ul>
<div class="pagination text-right m-t-14" v-if="finishedData.length">
<el-pagination small :page-size="pageSize" :current-page="currentPage" layout="prev, pager, next" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange"> </el-pagination>
</div>
</div>
</div>
</template>
......@@ -134,12 +106,12 @@ export default {
ele['日期'] = ele.date.split('-')[2];
ele['新增参与人数'] = ele.inviteCount;
ele['新增受邀人数'] = ele.invitedCount;
})
});
}
that.barChartData = {
that.barChartData = {
columns: ['日期', '新增参与人数', '新增受邀人数'],
rows: resData.result.trend || []
}
};
return false;
}
errMsg.errorMsg(resData);
......@@ -165,6 +137,7 @@ export default {
const that = this;
that.$router.push(`/dataDetail?activityId=${row.activityId}`);
},
/**
* 分页
*/
......@@ -222,6 +195,19 @@ export default {
.m-t-7 {
margin-top: 7px;
}
.separator-space {
width: 100%;
height: 60px;
line-height: 60px;
text-align: center;
font-size: 14px;
color: #909399;
font-weight: 600;
&.no-active {
height: 40px;
line-height: 20px;
}
}
.finished-active {
width: 100%;
padding: 0 20px 48px 20px;
......
......@@ -13,56 +13,33 @@ import inProgressActive from '@/components/active/in-progress-active.vue';
-->
<template>
<div class="in-progress-active border-box">
<ul>
<template v-for="(item, index) in inProgressData">
<li
:class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']"
:key="index + 'data'"
>
<div
class="in-progress-active-title flex flex-space-between border-box"
@click.stop.prevent="selectLi(item)"
>
<div class="active-title-left">
<div class="active-title-name font-18 color-303133 font-w-700">{{ item.activityName }}</div>
<div class="active-title-date font-14 color-909399 m-t-7">{{ item.startDate | formatTimeYmdHms }} - {{ item.endDate | formatTimeYmdHms }}</div>
</div>
<div class="active-title-right">
<el-button
type="primary"
plain
@click.stop="toEdit(index, item)"
>活动配置</el-button>
<el-button
data-clipboard-action="copy"
:data-clipboard-text="item.activityUrl"
class="copy-tag"
type="primary"
plain
@click.stop="handleCopy(index, item)"
>复制路径</el-button>
<!-- -->
<div>
<div class="separator-space">- 当前有计划中的活动,无法创建新的活动 -</div>
<div class="in-progress-active border-box">
<ul>
<template v-for="(item, index) in inProgressData">
<li :class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" :key="index + 'data'">
<div class="in-progress-active-title flex flex-space-between border-box" @click.stop.prevent="selectLi(item)">
<div class="active-title-left">
<div class="active-title-name font-18 color-303133 font-w-700">{{ item.activityName }} <el-tag v-if="item.status == 2" type="danger">待完善</el-tag></div>
<div class="active-title-date font-14 color-909399 m-t-7">{{ item.startDate | formatTimeYmdHms }} - {{ item.endDate | formatTimeYmdHms }}</div>
</div>
<div class="active-title-right">
<el-button type="primary" plain @click.stop="toEdit(index, item)">活动配置</el-button>
<el-button data-clipboard-action="copy" :data-clipboard-text="item.activityUrl" class="copy-tag" type="primary" plain @click.stop="handleCopy(index, item)">复制路径</el-button>
<!-- -->
<el-button
type="primary"
plain
@click.stop="toDataList(index, item)"
>数据明细</el-button>
<el-button type="primary" plain @click.stop="toDataList(index, item)">数据明细</el-button>
<el-button v-if="item.status == 2" type="primary" plain @click="toDelList(index, item)">删除</el-button>
</div>
</div>
<div v-if="selectItem == item.activityId" class="in-progress-active-body">
<out-date-active :barChartData="barChartData" :funnelData="funnelData" :activityId="item.activityId"></out-date-active>
</div>
</div>
<div
v-if="selectItem==item.activityId"
class="in-progress-active-body"
>
<out-date-active
:barChartData="barChartData"
:funnelData="funnelData"
></out-date-active>
</div>
</li>
</template>
</ul>
</li>
</template>
</ul>
</div>
</div>
</template>
<script>
......@@ -82,7 +59,7 @@ export default {
funnelData: {},
barChartData: {
columns: ['日期', '新增参与人数', '新增受邀人数'],
rows: [{ 日期: '1', 新增参与人数: 1393, 新增受邀人数: 1093 }, { 日期: '2', 新增参与人数: 3530, 新增受邀人数: 3230}, { 日期: '3', 新增参与人数: 2923, 新增受邀人数: 2623}, { 日期: '4', 新增参与人数: 1723, 新增受邀人数: 1423}, { 日期: '5', 新增参与人数: 3192, 新增受邀人数: 3192}, { 日期: '6', 新增参与人数: 3593, 新增受邀人数: 3293}]
rows: [{ 日期: '1', 新增参与人数: 1393, 新增受邀人数: 1093 }, { 日期: '2', 新增参与人数: 3530, 新增受邀人数: 3230 }, { 日期: '3', 新增参与人数: 2923, 新增受邀人数: 2623 }, { 日期: '4', 新增参与人数: 1723, 新增受邀人数: 1423 }, { 日期: '5', 新增参与人数: 3192, 新增受邀人数: 3192 }, { 日期: '6', 新增参与人数: 3593, 新增受邀人数: 3293 }]
},
selectItem: '',
inProgressData: [
......@@ -124,12 +101,12 @@ export default {
ele['日期'] = ele.date.split('-')[2];
ele['新增参与人数'] = ele.inviteCount;
ele['新增受邀人数'] = ele.invitedCount;
})
});
}
that.barChartData = {
that.barChartData = {
columns: ['日期', '新增参与人数', '新增受邀人数'],
rows: resData.result.trend || []
}
};
return false;
}
errMsg.errorMsg(resData);
......@@ -146,14 +123,14 @@ export default {
*/
toEdit(index, row) {
const that = this;
that.$router.push(`/createActive?activityId=${row.activityId}`)
that.$router.push(`/createActive?activityId=${row.activityId}`);
},
/**
* 数据明细
*/
toDataList(index, row) {
const that = this;
that.$router.push(`/dataDetail?activityId=${row.activityId}`)
that.$router.push(`/dataDetail?activityId=${row.activityId}`);
},
/**
* 复制路径
......@@ -161,7 +138,7 @@ export default {
/* eslint-disable */
handleCopy: _debounce(function(index, row) {
const that = this;
const fakeElement = document.createElement('button')
const fakeElement = document.createElement('button');
let clipboard = new Clipboard(fakeElement, {
text: function() {
return row.activityUrl || '您复制的数据是空的!';
......@@ -178,17 +155,54 @@ export default {
// 释放内存
clipboard.destroy();
});
document.body.appendChild(fakeElement)
document.body.appendChild(fakeElement);
fakeElement.click();
document.body.removeChild(fakeElement)
},300),
document.body.removeChild(fakeElement);
}, 300),
/**
* 删除
*/
toDelList(index, item) {
const that = this;
this.$confirm('是否要删除该活动?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
that.delData(item.activityId);
})
.catch(() => {});
},
delData(activityId) {
const that = this;
let para = {
activityId: activityId
};
getRequest('/sharing-core-web/delete-activity', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
showMsg.showmsg('删除成功', 'success');
that.currentPage = 1;
that.getTableList();
return false;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
},
/**
* 获取列表数据
*/
getTableList() {
const that = this;
let para = {type: 1};
let para = { type: 4 };
getRequest('/sharing-core-web/page-activity', para)
.then(res => {
let resData = res.data;
......@@ -228,10 +242,31 @@ export default {
.m-t-7 {
margin-top: 7px;
}
.separator-space {
width: 100%;
height: 60px;
line-height: 60px;
text-align: center;
font-size: 14px;
color: #909399;
font-weight: 600;
&.no-active {
height: 40px;
line-height: 20px;
}
}
.in-progress-active {
width: 100%;
padding: 0 20px 48px 20px;
background: #fff;
.el-tag.el-tag--danger {
/* background-color: transparent;
border-color: transparent;
color: #f56c6c; */
height: 25px;
line-height: 25px;
padding: 0 5px;
}
li {
// height: 90px;
padding: 0 20px;
......
......@@ -13,10 +13,7 @@ import outDateActive from '@/components/active/out-date-active.vue';
-->
<template>
<div class="out-date-active flex flex-space-between">
<data-statistics-child
:activeData="activeData"
:barChartData="barChartData"
></data-statistics-child>
<data-statistics-child :activeData="activeData" :barChartData="barChartData" :activityId="itemId"></data-statistics-child>
<funnel-chart :funnelData="funnelData"></funnel-chart>
</div>
</template>
......@@ -37,6 +34,12 @@ export default {
default() {
return {};
}
},
activityId: {
type: String,
default() {
return '';
}
}
},
components: {
......@@ -51,24 +54,30 @@ export default {
invited: 0,
attendRate: 0,
spread: 0
}
},
itemId: this.activityId
};
},
methods: {},
watch: {
funnelData(newData, oldData) {
if (Object.keys(newData).length) {
this.activeData= newData;
this.activeData = JSON.parse(JSON.stringify(newData));
}
},
activityId(newData, oldData) {
if (newData) {
this.itemId = newData;
}
}
},
mounted() {
const that = this;
if (Object.keys(that.funnelData).length) {
that.activeData = that.funnelData;
that.activeData = JSON.parse(JSON.stringify(that.funnelData));
}
},
that.itemId = that.activityId;
}
};
</script>
<style lang="less" scoped>
......
......@@ -16,66 +16,31 @@ import willStartActive from '@/components/active/will-start-active.vue';
<div class="start-active border-box">
<ul>
<template v-for="(item, index) in startData">
<li
:class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']"
:key="index + 'data'"
>
<div
class="start-active-title flex flex-space-between border-box"
@click.stop="selectLi(item)"
>
<li :class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" :key="index + 'data'">
<div class="start-active-title flex flex-space-between border-box" @click.stop="selectLi(item)">
<div class="active-title-left">
<div class="active-title-name font-18 color-303133 font-w-700">{{ item.activityName }}</div>
<div class="active-title-date font-14 color-909399 m-t-7">{{ item.startDate | formatTimeYmdHms }} - {{ item.endDate | formatTimeYmdHms }}</div>
</div>
<div class="active-title-right">
<el-button
type="primary"
plain
@click="toEdit(index, item)"
>活动配置</el-button>
<el-button type="primary" plain @click="toEdit(index, item)">活动配置</el-button>
<!-- <el-button
type="primary"
plain
@click="handleCopy(index, item)"
>复制路径</el-button> -->
<el-button
type="primary"
plain
@click="toDataList(index, item)"
>数据明细</el-button>
<el-button
type="primary"
plain
@click="toDelList(index, item)"
>数据明细</el-button>
<el-button type="primary" plain @click="toDataList(index, item)">数据明细</el-button>
<el-button type="primary" plain @click="toDelList(index, item)">删除</el-button>
</div>
</div>
<div
v-if="selectItem == item.activityId"
class="start-active-body"
>
<out-date-active
:barChartData="barChartData"
:funnelData="funnelData"
></out-date-active>
<div v-if="selectItem == item.activityId" class="start-active-body">
<out-date-active :barChartData="barChartData" :funnelData="funnelData"></out-date-active>
</div>
</li>
</template>
</ul>
<div
class="pagination text-right m-t-14"
v-if="startData.length"
>
<el-pagination
small
:page-size="pageSize"
:current-page="currentPage"
layout="prev, pager, next"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
> </el-pagination>
<div class="pagination text-right m-t-14" v-if="startData.length">
<el-pagination small :page-size="pageSize" :current-page="currentPage" layout="prev, pager, next" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange"> </el-pagination>
</div>
</div>
</template>
......@@ -139,12 +104,12 @@ export default {
ele['日期'] = ele.date.split('-')[2];
ele['新增参与人数'] = ele.inviteCount;
ele['新增受邀人数'] = ele.invitedCount;
})
});
}
that.barChartData = {
that.barChartData = {
columns: ['日期', '新增参与人数', '新增受邀人数'],
rows: resData.result.trend || []
}
};
return false;
}
errMsg.errorMsg(resData);
......@@ -185,15 +150,17 @@ export default {
/**
* 删除
*/
toDelList(index, item){
toDelList(index, item) {
const that = this;
this.$confirm('是否要删除该活动?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
that.delData(item.activityId);
}).catch(() => {})
})
.then(() => {
that.delData(item.activityId);
})
.catch(() => {});
},
delData(activityId) {
const that = this;
......
......@@ -17,11 +17,11 @@
</div>
<div>
<!-- v-if="!canCreate" -->
<div class="separator-space">- 当前有正在进行的活动,无法创建新的活动 -</div>
<in-progress-active></in-progress-active>
<div class="separator-space">- 当前有未开始的活动 -</div>
<will-start-active></will-start-active>
<div class="separator-space">- 以下为已结束活动 -</div>
<!-- <div class="separator-space">- 当前有未开始的活动 -</div>
<will-start-active></will-start-active> -->
<finished-active></finished-active>
</div>
</div>
......@@ -32,7 +32,7 @@
import activeSelect from '@/components/active/active-select.vue';
import inProgressActive from '@/components/active/in-progress-active.vue';
import finishedActive from '@/components/active/finished-active.vue';
import willStartActive from '@/components/active/will-start-active.vue';
// import willStartActive from '@/components/active/will-start-active.vue';
// import showMsg from '@/common/js/showmsg';
import errMsg from '@/common/js/error';
import { getRequest } from '@/api/api';
......@@ -42,7 +42,7 @@ export default {
activeSelect,
inProgressActive,
finishedActive,
willStartActive
// willStartActive
},
data() {
return {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment