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> <!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 \ 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 @@ ...@@ -4,7 +4,7 @@
* @Author: 无尘 * @Author: 无尘
* @Date: 2019-11-18 10:37:02 * @Date: 2019-11-18 10:37:02
* @LastEditors: 无尘 * @LastEditors: 无尘
* @LastEditTime: 2019-12-15 15:20:50 * @LastEditTime: 2019-12-17 12:15:13
--> -->
<!-- <!--
<base-config @submitNext="submitNext"></base-config> <base-config @submitNext="submitNext"></base-config>
...@@ -115,7 +115,7 @@ export default { ...@@ -115,7 +115,7 @@ export default {
callback(new Error('请选择活动有效期')); callback(new Error('请选择活动有效期'));
} else if (value[0].split(' ')[0] == timeFormat.timeStampToYmd(new Date().getTime()) && value[0].split(' ')[0] == value[1].split(' ')[0]) { } else if (value[0].split(' ')[0] == timeFormat.timeStampToYmd(new Date().getTime()) && value[0].split(' ')[0] == value[1].split(' ')[0]) {
callback(new Error('不能选择今天')); 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('开始时间无法改到当前时间之后,结束时间无法改到当前时间之前')); callback(new Error('开始时间无法改到当前时间之后,结束时间无法改到当前时间之前'));
} else { } else {
callback(); callback();
...@@ -137,7 +137,8 @@ export default { ...@@ -137,7 +137,8 @@ export default {
cardCoupName: '', cardCoupName: '',
router: '', router: '',
activityName: '', activityName: '',
dateRange: [] dateRange: [],
editDate: false,
}, },
rules: { rules: {
activityName: [{ required: true, message: '请输入活动名称', trigger: 'blur' }], activityName: [{ required: true, message: '请输入活动名称', trigger: 'blur' }],
...@@ -169,6 +170,7 @@ export default { ...@@ -169,6 +170,7 @@ export default {
*/ */
changeDate(e) { changeDate(e) {
const that = this; const that = this;
that.editDate = true;
if (!e) { if (!e) {
that.choiceDateCopy = []; that.choiceDateCopy = [];
that.activeInfoData.dateRange = []; that.activeInfoData.dateRange = [];
......
...@@ -18,10 +18,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue'; ...@@ -18,10 +18,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
<div class="data-statistics-left"> <div class="data-statistics-left">
<ul class="flex flex-column flex-pack-center flex-align-center"> <ul class="flex flex-column flex-pack-center flex-align-center">
<li class="flex-1 flex flex-pack-center flex-align-center"> <li class="flex-1 flex flex-pack-center flex-align-center">
<div class="data-statistics-icon"><img <div class="data-statistics-icon"><img src="../../assets/images/bgl.png" alt="" /></div>
src="../../assets/images/bgl.png"
alt=""
/></div>
<div class="data-statistics-txt flex flex-column"> <div class="data-statistics-txt flex flex-column">
<div class="font-14 color-606266 font-w-400">活动曝光量</div> <div class="font-14 color-606266 font-w-400">活动曝光量</div>
...@@ -29,10 +26,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue'; ...@@ -29,10 +26,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
</div> </div>
</li> </li>
<li class="flex-1 flex flex-pack-center flex-align-center"> <li class="flex-1 flex flex-pack-center flex-align-center">
<div class="data-statistics-icon"><img <div class="data-statistics-icon"><img src="../../assets/images/cyrs.png" alt="" /></div>
src="../../assets/images/cyrs.png"
alt=""
/></div>
<div class="data-statistics-txt flex flex-column"> <div class="data-statistics-txt flex flex-column">
<div class="font-14 color-606266 font-w-400">参与人数</div> <div class="font-14 color-606266 font-w-400">参与人数</div>
...@@ -40,10 +34,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue'; ...@@ -40,10 +34,7 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
</div> </div>
</li> </li>
<li class="flex-1 flex flex-pack-center flex-align-center"> <li class="flex-1 flex flex-pack-center flex-align-center">
<div class="data-statistics-icon"><img <div class="data-statistics-icon"><img src="../../assets/images/syrs.png" alt="" /></div>
src="../../assets/images/syrs.png"
alt=""
/></div>
<div class="data-statistics-txt flex flex-column"> <div class="data-statistics-txt flex flex-column">
<div class="font-14 color-606266 font-w-400">受邀人数</div> <div class="font-14 color-606266 font-w-400">受邀人数</div>
...@@ -56,18 +47,57 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue'; ...@@ -56,18 +47,57 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
<div class="data-right-top flex"> <div class="data-right-top flex">
<div class="data-statistics-middle flex-1 border-box m-l-20"> <div class="data-statistics-middle flex-1 border-box m-l-20">
<div class="font-14 color-606266">参与率</div> <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">
<div <div class="data-percentage-inner" :style="{ width: Number(Number(activeData.attendRate) * 100).toFixed(2) + '%' }"></div>
class="data-percentage-inner"
:style="{ width: Number(Number(activeData.attendRate)*100).toFixed(2) + '%' }"
></div>
</div> </div>
</div> </div>
<div class="data-statistics-right flex-1 border-box m-l-20"> <div class="data-statistics-right flex-1 border-box m-l-20">
<div class="font-14 color-606266">传播系数</div> <div class="font-14 color-606266">传播系数</div>
<div class="font-22 color-303133 p-t-5">{{ activeData.spread }}</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" v-if="activeData.spread < 10"
class="data-percentage" class="data-percentage"
> >
...@@ -102,14 +132,11 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue'; ...@@ -102,14 +132,11 @@ import dataStatisticsChild from '@/components/active/data-statistics-child.vue';
:key="key + 'xrbg'" :key="key + 'xrbg'"
></i> ></i>
</template> </template>
</div> </div> -->
</div> </div>
</div> </div>
<div class="data-right-bottom"> <div class="data-right-bottom">
<bar-chart <bar-chart :barChartData="barChartData" :charHeight="charHeight"></bar-chart>
:barChartData="barChartData"
:charHeight="charHeight"
></bar-chart>
</div> </div>
<!--<div class="chart-title font-12 color-000 text-center">- 近15天趋势图 -</div>--> <!--<div class="chart-title font-12 color-000 text-center">- 近15天趋势图 -</div>-->
</div> </div>
...@@ -122,7 +149,7 @@ export default { ...@@ -122,7 +149,7 @@ export default {
name: 'data-statistics', name: 'data-statistics',
props: { props: {
activeData: { activeData: {
type: [Object,Array], type: [Object, Array],
default() { default() {
return { return {
exposure: 0, exposure: 0,
...@@ -133,6 +160,12 @@ export default { ...@@ -133,6 +160,12 @@ export default {
}; };
} }
}, },
activityId: {
type: String,
default() {
return '';
}
},
barChartData: { barChartData: {
type: [Array, Object], type: [Array, Object],
default() { default() {
...@@ -146,11 +179,36 @@ export default { ...@@ -146,11 +179,36 @@ export default {
charHeight: '220px' 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() { mounted() {
console.log(this.activeData); const that = this;
that.$nextTick(() => {
that.activeData.hasOwnProperty('spread') ? that.diagram(that.activeData.spread) : '';
});
} }
}; };
</script> </script>
...@@ -244,6 +302,32 @@ export default { ...@@ -244,6 +302,32 @@ export default {
color: rgba(24, 144, 255, 0.15); 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 @@ ...@@ -4,7 +4,7 @@
* @Author: 无尘 * @Author: 无尘
* @Date: 2019-11-13 16:37:02 * @Date: 2019-11-13 16:37:02
* @LastEditors: 无尘 * @LastEditors: 无尘
* @LastEditTime: 2019-12-15 16:41:59 * @LastEditTime: 2019-12-17 12:31:18
--> -->
<!-- <!--
<finished-active></finished-active> <finished-active></finished-active>
...@@ -13,64 +13,36 @@ import finishedActive from '@/components/active/finished-active.vue'; ...@@ -13,64 +13,36 @@ import finishedActive from '@/components/active/finished-active.vue';
--> -->
<template> <template>
<div>
<div v-if="finishedData.length" class="separator-space">- 以下为已结束活动 -</div>
<div class="finished-active border-box"> <div class="finished-active border-box">
<ul> <ul>
<template v-for="(item, index) in finishedData"> <template v-for="(item, index) in finishedData">
<li <li :class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" :key="index + 'data'">
:class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" <div class="finished-active-title flex flex-space-between border-box" @click.stop="selectLi(item)">
: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-left">
<div class="active-title-name font-18 color-303133 font-w-700">{{ item.activityName }}</div> <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 class="active-title-date font-14 color-909399 m-t-7">{{ item.startDate | formatTimeYmdHms }} - {{ item.endDate | formatTimeYmdHms }}</div>
</div> </div>
<div class="active-title-right"> <div class="active-title-right">
<el-button <el-button type="primary" plain @click.stop="toEdit(index, item)">活动配置</el-button>
type="primary"
plain
@click.stop="toEdit(index, item)"
>活动配置</el-button>
<!-- <el-button <!-- <el-button
type="primary" type="primary"
plain plain
@click="handleCopy(index, item)" @click="handleCopy(index, item)"
>复制路径</el-button> --> >复制路径</el-button> -->
<el-button <el-button type="primary" plain @click.stop="toDataList(index, item)">数据明细</el-button>
type="primary"
plain
@click.stop="toDataList(index, item)"
>数据明细</el-button>
</div> </div>
</div> </div>
<div <div v-if="selectItem == item.activityId" class="finished-active-body">
v-if="selectItem == item.activityId" <out-date-active :barChartData="barChartData" :funnelData="funnelData" :activityId="item.activityId"></out-date-active>
class="finished-active-body"
>
<out-date-active
:barChartData="barChartData"
:funnelData="funnelData"
></out-date-active>
</div> </div>
</li> </li>
</template> </template>
</ul> </ul>
<div <div class="pagination text-right m-t-14" v-if="finishedData.length">
class="pagination text-right m-t-14" <el-pagination small :page-size="pageSize" :current-page="currentPage" layout="prev, pager, next" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange"> </el-pagination>
v-if="finishedData.length" </div>
>
<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> </div>
</template> </template>
...@@ -134,12 +106,12 @@ export default { ...@@ -134,12 +106,12 @@ export default {
ele['日期'] = ele.date.split('-')[2]; ele['日期'] = ele.date.split('-')[2];
ele['新增参与人数'] = ele.inviteCount; ele['新增参与人数'] = ele.inviteCount;
ele['新增受邀人数'] = ele.invitedCount; ele['新增受邀人数'] = ele.invitedCount;
}) });
} }
that.barChartData = { that.barChartData = {
columns: ['日期', '新增参与人数', '新增受邀人数'], columns: ['日期', '新增参与人数', '新增受邀人数'],
rows: resData.result.trend || [] rows: resData.result.trend || []
} };
return false; return false;
} }
errMsg.errorMsg(resData); errMsg.errorMsg(resData);
...@@ -165,6 +137,7 @@ export default { ...@@ -165,6 +137,7 @@ export default {
const that = this; const that = this;
that.$router.push(`/dataDetail?activityId=${row.activityId}`); that.$router.push(`/dataDetail?activityId=${row.activityId}`);
}, },
/** /**
* 分页 * 分页
*/ */
...@@ -222,6 +195,19 @@ export default { ...@@ -222,6 +195,19 @@ export default {
.m-t-7 { .m-t-7 {
margin-top: 7px; 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 { .finished-active {
width: 100%; width: 100%;
padding: 0 20px 48px 20px; padding: 0 20px 48px 20px;
......
...@@ -13,57 +13,34 @@ import inProgressActive from '@/components/active/in-progress-active.vue'; ...@@ -13,57 +13,34 @@ import inProgressActive from '@/components/active/in-progress-active.vue';
--> -->
<template> <template>
<div>
<div class="separator-space">- 当前有计划中的活动,无法创建新的活动 -</div>
<div class="in-progress-active border-box"> <div class="in-progress-active border-box">
<ul> <ul>
<template v-for="(item, index) in inProgressData"> <template v-for="(item, index) in inProgressData">
<li <li :class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" :key="index + 'data'">
:class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" <div class="in-progress-active-title flex flex-space-between border-box" @click.stop.prevent="selectLi(item)">
: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-left">
<div class="active-title-name font-18 color-303133 font-w-700">{{ item.activityName }}</div> <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 class="active-title-date font-14 color-909399 m-t-7">{{ item.startDate | formatTimeYmdHms }} - {{ item.endDate | formatTimeYmdHms }}</div>
</div> </div>
<div class="active-title-right"> <div class="active-title-right">
<el-button <el-button type="primary" plain @click.stop="toEdit(index, item)">活动配置</el-button>
type="primary" <el-button data-clipboard-action="copy" :data-clipboard-text="item.activityUrl" class="copy-tag" type="primary" plain @click.stop="handleCopy(index, item)">复制路径</el-button>
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 <el-button type="primary" plain @click.stop="toDataList(index, item)">数据明细</el-button>
type="primary" <el-button v-if="item.status == 2" type="primary" plain @click="toDelList(index, item)">删除</el-button>
plain
@click.stop="toDataList(index, item)"
>数据明细</el-button>
</div> </div>
</div> </div>
<div <div v-if="selectItem == item.activityId" class="in-progress-active-body">
v-if="selectItem==item.activityId" <out-date-active :barChartData="barChartData" :funnelData="funnelData" :activityId="item.activityId"></out-date-active>
class="in-progress-active-body"
>
<out-date-active
:barChartData="barChartData"
:funnelData="funnelData"
></out-date-active>
</div> </div>
</li> </li>
</template> </template>
</ul> </ul>
</div> </div>
</div>
</template> </template>
<script> <script>
import outDateActive from '@/components/active/out-date-active.vue'; import outDateActive from '@/components/active/out-date-active.vue';
...@@ -82,7 +59,7 @@ export default { ...@@ -82,7 +59,7 @@ export default {
funnelData: {}, funnelData: {},
barChartData: { barChartData: {
columns: ['日期', '新增参与人数', '新增受邀人数'], 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: '', selectItem: '',
inProgressData: [ inProgressData: [
...@@ -124,12 +101,12 @@ export default { ...@@ -124,12 +101,12 @@ export default {
ele['日期'] = ele.date.split('-')[2]; ele['日期'] = ele.date.split('-')[2];
ele['新增参与人数'] = ele.inviteCount; ele['新增参与人数'] = ele.inviteCount;
ele['新增受邀人数'] = ele.invitedCount; ele['新增受邀人数'] = ele.invitedCount;
}) });
} }
that.barChartData = { that.barChartData = {
columns: ['日期', '新增参与人数', '新增受邀人数'], columns: ['日期', '新增参与人数', '新增受邀人数'],
rows: resData.result.trend || [] rows: resData.result.trend || []
} };
return false; return false;
} }
errMsg.errorMsg(resData); errMsg.errorMsg(resData);
...@@ -146,14 +123,14 @@ export default { ...@@ -146,14 +123,14 @@ export default {
*/ */
toEdit(index, row) { toEdit(index, row) {
const that = this; const that = this;
that.$router.push(`/createActive?activityId=${row.activityId}`) that.$router.push(`/createActive?activityId=${row.activityId}`);
}, },
/** /**
* 数据明细 * 数据明细
*/ */
toDataList(index, row) { toDataList(index, row) {
const that = this; const that = this;
that.$router.push(`/dataDetail?activityId=${row.activityId}`) that.$router.push(`/dataDetail?activityId=${row.activityId}`);
}, },
/** /**
* 复制路径 * 复制路径
...@@ -161,7 +138,7 @@ export default { ...@@ -161,7 +138,7 @@ export default {
/* eslint-disable */ /* eslint-disable */
handleCopy: _debounce(function(index, row) { handleCopy: _debounce(function(index, row) {
const that = this; const that = this;
const fakeElement = document.createElement('button') const fakeElement = document.createElement('button');
let clipboard = new Clipboard(fakeElement, { let clipboard = new Clipboard(fakeElement, {
text: function() { text: function() {
return row.activityUrl || '您复制的数据是空的!'; return row.activityUrl || '您复制的数据是空的!';
...@@ -178,17 +155,54 @@ export default { ...@@ -178,17 +155,54 @@ export default {
// 释放内存 // 释放内存
clipboard.destroy(); clipboard.destroy();
}); });
document.body.appendChild(fakeElement) document.body.appendChild(fakeElement);
fakeElement.click(); fakeElement.click();
document.body.removeChild(fakeElement) document.body.removeChild(fakeElement);
},300), }, 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() { getTableList() {
const that = this; const that = this;
let para = {type: 1}; let para = { type: 4 };
getRequest('/sharing-core-web/page-activity', para) getRequest('/sharing-core-web/page-activity', para)
.then(res => { .then(res => {
let resData = res.data; let resData = res.data;
...@@ -228,10 +242,31 @@ export default { ...@@ -228,10 +242,31 @@ export default {
.m-t-7 { .m-t-7 {
margin-top: 7px; 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 { .in-progress-active {
width: 100%; width: 100%;
padding: 0 20px 48px 20px; padding: 0 20px 48px 20px;
background: #fff; background: #fff;
.el-tag.el-tag--danger {
/* background-color: transparent;
border-color: transparent;
color: #f56c6c; */
height: 25px;
line-height: 25px;
padding: 0 5px;
}
li { li {
// height: 90px; // height: 90px;
padding: 0 20px; padding: 0 20px;
......
...@@ -13,10 +13,7 @@ import outDateActive from '@/components/active/out-date-active.vue'; ...@@ -13,10 +13,7 @@ import outDateActive from '@/components/active/out-date-active.vue';
--> -->
<template> <template>
<div class="out-date-active flex flex-space-between"> <div class="out-date-active flex flex-space-between">
<data-statistics-child <data-statistics-child :activeData="activeData" :barChartData="barChartData" :activityId="itemId"></data-statistics-child>
:activeData="activeData"
:barChartData="barChartData"
></data-statistics-child>
<funnel-chart :funnelData="funnelData"></funnel-chart> <funnel-chart :funnelData="funnelData"></funnel-chart>
</div> </div>
</template> </template>
...@@ -37,6 +34,12 @@ export default { ...@@ -37,6 +34,12 @@ export default {
default() { default() {
return {}; return {};
} }
},
activityId: {
type: String,
default() {
return '';
}
} }
}, },
components: { components: {
...@@ -51,24 +54,30 @@ export default { ...@@ -51,24 +54,30 @@ export default {
invited: 0, invited: 0,
attendRate: 0, attendRate: 0,
spread: 0 spread: 0
} },
itemId: this.activityId
}; };
}, },
methods: {}, methods: {},
watch: { watch: {
funnelData(newData, oldData) { funnelData(newData, oldData) {
if (Object.keys(newData).length) { if (Object.keys(newData).length) {
this.activeData= newData; this.activeData = JSON.parse(JSON.stringify(newData));
}
},
activityId(newData, oldData) {
if (newData) {
this.itemId = newData;
} }
} }
}, },
mounted() { mounted() {
const that = this; const that = this;
if (Object.keys(that.funnelData).length) { if (Object.keys(that.funnelData).length) {
that.activeData = that.funnelData; that.activeData = JSON.parse(JSON.stringify(that.funnelData));
}
that.itemId = that.activityId;
} }
},
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
......
...@@ -16,66 +16,31 @@ import willStartActive from '@/components/active/will-start-active.vue'; ...@@ -16,66 +16,31 @@ import willStartActive from '@/components/active/will-start-active.vue';
<div class="start-active border-box"> <div class="start-active border-box">
<ul> <ul>
<template v-for="(item, index) in startData"> <template v-for="(item, index) in startData">
<li <li :class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" :key="index + 'data'">
:class="['border-box', selectItem == item.activityId && index != 0 ? 'li-border' : '']" <div class="start-active-title flex flex-space-between border-box" @click.stop="selectLi(item)">
: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-left">
<div class="active-title-name font-18 color-303133 font-w-700">{{ item.activityName }}</div> <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 class="active-title-date font-14 color-909399 m-t-7">{{ item.startDate | formatTimeYmdHms }} - {{ item.endDate | formatTimeYmdHms }}</div>
</div> </div>
<div class="active-title-right"> <div class="active-title-right">
<el-button <el-button type="primary" plain @click="toEdit(index, item)">活动配置</el-button>
type="primary"
plain
@click="toEdit(index, item)"
>活动配置</el-button>
<!-- <el-button <!-- <el-button
type="primary" type="primary"
plain plain
@click="handleCopy(index, item)" @click="handleCopy(index, item)"
>复制路径</el-button> --> >复制路径</el-button> -->
<el-button <el-button type="primary" plain @click="toDataList(index, item)">数据明细</el-button>
type="primary" <el-button type="primary" plain @click="toDelList(index, item)">删除</el-button>
plain
@click="toDataList(index, item)"
>数据明细</el-button>
<el-button
type="primary"
plain
@click="toDelList(index, item)"
>数据明细</el-button>
</div> </div>
</div> </div>
<div <div v-if="selectItem == item.activityId" class="start-active-body">
v-if="selectItem == item.activityId" <out-date-active :barChartData="barChartData" :funnelData="funnelData"></out-date-active>
class="start-active-body"
>
<out-date-active
:barChartData="barChartData"
:funnelData="funnelData"
></out-date-active>
</div> </div>
</li> </li>
</template> </template>
</ul> </ul>
<div <div class="pagination text-right m-t-14" v-if="startData.length">
class="pagination text-right m-t-14" <el-pagination small :page-size="pageSize" :current-page="currentPage" layout="prev, pager, next" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange"> </el-pagination>
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>
</div> </div>
</template> </template>
...@@ -139,12 +104,12 @@ export default { ...@@ -139,12 +104,12 @@ export default {
ele['日期'] = ele.date.split('-')[2]; ele['日期'] = ele.date.split('-')[2];
ele['新增参与人数'] = ele.inviteCount; ele['新增参与人数'] = ele.inviteCount;
ele['新增受邀人数'] = ele.invitedCount; ele['新增受邀人数'] = ele.invitedCount;
}) });
} }
that.barChartData = { that.barChartData = {
columns: ['日期', '新增参与人数', '新增受邀人数'], columns: ['日期', '新增参与人数', '新增受邀人数'],
rows: resData.result.trend || [] rows: resData.result.trend || []
} };
return false; return false;
} }
errMsg.errorMsg(resData); errMsg.errorMsg(resData);
...@@ -185,15 +150,17 @@ export default { ...@@ -185,15 +150,17 @@ export default {
/** /**
* 删除 * 删除
*/ */
toDelList(index, item){ toDelList(index, item) {
const that = this; const that = this;
this.$confirm('是否要删除该活动?', '提示', { this.$confirm('是否要删除该活动?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { })
.then(() => {
that.delData(item.activityId); that.delData(item.activityId);
}).catch(() => {}) })
.catch(() => {});
}, },
delData(activityId) { delData(activityId) {
const that = this; const that = this;
......
...@@ -17,11 +17,11 @@ ...@@ -17,11 +17,11 @@
</div> </div>
<div> <div>
<!-- v-if="!canCreate" --> <!-- v-if="!canCreate" -->
<div class="separator-space">- 当前有正在进行的活动,无法创建新的活动 -</div>
<in-progress-active></in-progress-active> <in-progress-active></in-progress-active>
<div class="separator-space">- 当前有未开始的活动 -</div> <!-- <div class="separator-space">- 当前有未开始的活动 -</div>
<will-start-active></will-start-active> <will-start-active></will-start-active> -->
<div class="separator-space">- 以下为已结束活动 -</div>
<finished-active></finished-active> <finished-active></finished-active>
</div> </div>
</div> </div>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
import activeSelect from '@/components/active/active-select.vue'; import activeSelect from '@/components/active/active-select.vue';
import inProgressActive from '@/components/active/in-progress-active.vue'; import inProgressActive from '@/components/active/in-progress-active.vue';
import finishedActive from '@/components/active/finished-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 showMsg from '@/common/js/showmsg';
import errMsg from '@/common/js/error'; import errMsg from '@/common/js/error';
import { getRequest } from '@/api/api'; import { getRequest } from '@/api/api';
...@@ -42,7 +42,7 @@ export default { ...@@ -42,7 +42,7 @@ export default {
activeSelect, activeSelect,
inProgressActive, inProgressActive,
finishedActive, finishedActive,
willStartActive // willStartActive
}, },
data() { data() {
return { 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