Commit 85d51411 by 黑潮

Merge branch 'feature/销售线索3' into master

# Conflicts:
#	src/views/ecm/marketing-event/index.vue
parents f551d9a5 6862d691
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.eda41651511733ea45300c0b7b965c7b.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/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/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.45.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.2.32.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.30.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.71.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.06.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.43.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.16.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.2.27.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script src=//web-1251519181.file.myqcloud.com/components/track.1.0.4.js></script><script src=//web-1251519181.file.myqcloud.com/components/activity-select.1.0.2.1.js></script><script src=//web-1251519181.file.myqcloud.com/components/upload-file.1.0.6.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.21.js></script><script src=//web-1251519181.file.myqcloud.com/components/radio-transfer.1.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/steps.1.0.1.js></script><script src=//web-1251519181.file.myqcloud.com/components/material.1.0.9.js></script><script type=text/javascript src=/marketing/static/js/manifest.6cddbb6966fa12ef8b87.js></script><script type=text/javascript src=/marketing/static/js/vendor.f9f292eb91cca2c0fcc1.js></script><script type=text/javascript src=/marketing/static/js/main.e2be9ed70498c3543c62.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.668bdba349558200c23f34d50b242774.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/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/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.45.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.2.32.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.30.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.71.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.06.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.43.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.16.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.2.27.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script src=//web-1251519181.file.myqcloud.com/components/track.1.0.4.js></script><script src=//web-1251519181.file.myqcloud.com/components/activity-select.1.0.3.js></script><script src=//web-1251519181.file.myqcloud.com/components/upload-file.1.0.6.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.21.js></script><script src=//web-1251519181.file.myqcloud.com/components/radio-transfer.1.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/steps.1.0.1.js></script><script src=//web-1251519181.file.myqcloud.com/components/material.1.0.9.js></script><script type=text/javascript src=/marketing/static/js/manifest.c23e873988bb1b9055d4.js></script><script type=text/javascript src=/marketing/static/js/vendor.f9f292eb91cca2c0fcc1.js></script><script type=text/javascript src=/marketing/static/js/main.de78b519eed673fd5877.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.
......@@ -6,6 +6,55 @@
"description": "",
"glyphs": [
{
"icon_id": "22270569",
"name": "Icon-yishanchu",
"font_class": "Icon-yishanchu",
"unicode": "e65a",
"unicode_decimal": 58970
},
{
"icon_id": "10704949",
"name": "数据",
"font_class": "shujux",
"unicode": "e658",
"unicode_decimal": 58968
},
{
"icon_id": "8192956",
"name": "小程序",
"font_class": "xiaochengxu3",
"unicode": "e657",
"unicode_decimal": 58967
},
{
"icon_id": "10896036",
"name": "消息中心已失效",
"font_class": "xiaoxizhongxinyishixiao",
"unicode": "e678",
"unicode_decimal": 59000
},
{
"icon_id": "20557410",
"name": "会员卡升级",
"font_class": "huiyuankashengji",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"icon_id": "12417923",
"name": "商品-一行两个",
"font_class": "shangpin-yihangliangge1",
"unicode": "ea18",
"unicode_decimal": 59928
},
{
"icon_id": "13727026",
"name": "一行多个",
"font_class": "yihangduoge",
"unicode": "ea91",
"unicode_decimal": 60049
},
{
"icon_id": "19162424",
"name": "预览",
"font_class": "yulan",
......@@ -468,6 +517,13 @@
"unicode_decimal": 58972
},
{
"icon_id": "20612141",
"name": "选中",
"font_class": "xuanzhong1-copy",
"unicode": "eb58",
"unicode_decimal": 60248
},
{
"icon_id": "1091359",
"name": "互动传播",
"font_class": "hudongchuanbo",
......
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.
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,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={17: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/"+({0:"card",1:"game",2:"wechat",3:"ecm",4:"message",5:"ewash",6:"scan",7:"evaluation",8:"activity",9:"cdKey",10:"recharge",11:"pop",12:"signIn",13:"msg",14:"calllog"}[e]||e)+"."+{0:"4851614b274fd1ed121b",1:"7b1d6f6e51e6a0bc884f",2:"3c70e9241bbdb8aa4cd2",3:"77effb79300c8a644f54",4:"575833b70aa0ddc559e9",5:"499510114acac6860134",6:"20e130042a869b229213",7:"6f650fda68f6dd28ecea",8:"5ddb72b68fcdf6943011",9:"b3526e4ba66763fb822c",10:"50521f679ec2f27197c1",11:"b378842144bad01c35f1",12:"81e33c00700b4b6e2995",13:"02883278bc559b7084a0",14:"67177b0729dc4ddc6d2c"}[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="/marketing/",c.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,b=[];d<r.length;d++)i=r[d],t[i]&&b.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);b.length;)b.shift()();if(a)for(d=0;d<a.length;d++)u=c(c.s=a[d]);return u};var r={},t={17: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/"+({0:"card",1:"game",2:"wechat",3:"ecm",4:"message",5:"ewash",6:"scan",7:"evaluation",8:"activity",9:"cdKey",10:"recharge",11:"pop",12:"signIn",13:"msg",14:"calllog"}[e]||e)+"."+{0:"d5e10c9affc5be5b9655",1:"926755e0fa5aee51b6d7",2:"3f04ab3f20219ff8b5d9",3:"b00eb331b59b43bb3ddc",4:"db647ff1aa771017a36c",5:"499510114acac6860134",6:"b60f183b156168715edc",7:"6f650fda68f6dd28ecea",8:"5ddb72b68fcdf6943011",9:"1e9ce432c3656fb230bf",10:"50521f679ec2f27197c1",11:"b378842144bad01c35f1",12:"81e33c00700b4b6e2995",13:"02883278bc559b7084a0",14:"67177b0729dc4ddc6d2c"}[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="/marketing/",c.oe=function(e){throw console.error(e),e}}([]);
\ 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.
......@@ -37,7 +37,7 @@
<script src="//web-1251519181.file.myqcloud.com/components/selector.1.2.27.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js"></script><!-- 分页器 -->
<script src="//web-1251519181.file.myqcloud.com/components/track.1.0.4.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/activity-select.1.0.2.1.js"></script><!-- 数据对话 -->
<script src="//web-1251519181.file.myqcloud.com/components/activity-select.1.0.3.js"></script><!-- 数据对话 -->
<script src="//web-1251519181.file.myqcloud.com/components/upload-file.1.0.6.js"></script><!-- 文件上传 -->
<script src="//web-1251519181.file.myqcloud.com/components/card.2.0.21.js"></script><!-- 卡券弹窗 -->
<script src="//web-1251519181.file.myqcloud.com/components/radio-transfer.1.0.13.js"></script><!-- 单选穿梭框 -->
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,6 +6,230 @@
"description": "",
"glyphs": [
{
"icon_id": "22270569",
"name": "Icon-yishanchu",
"font_class": "Icon-yishanchu",
"unicode": "e65a",
"unicode_decimal": 58970
},
{
"icon_id": "10704949",
"name": "数据",
"font_class": "shujux",
"unicode": "e658",
"unicode_decimal": 58968
},
{
"icon_id": "8192956",
"name": "小程序",
"font_class": "xiaochengxu3",
"unicode": "e657",
"unicode_decimal": 58967
},
{
"icon_id": "10896036",
"name": "消息中心已失效",
"font_class": "xiaoxizhongxinyishixiao",
"unicode": "e678",
"unicode_decimal": 59000
},
{
"icon_id": "20557410",
"name": "会员卡升级",
"font_class": "huiyuankashengji",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"icon_id": "12417923",
"name": "商品-一行两个",
"font_class": "shangpin-yihangliangge1",
"unicode": "ea18",
"unicode_decimal": 59928
},
{
"icon_id": "13727026",
"name": "一行多个",
"font_class": "yihangduoge",
"unicode": "ea91",
"unicode_decimal": 60049
},
{
"icon_id": "19162424",
"name": "预览",
"font_class": "yulan",
"unicode": "e8ae",
"unicode_decimal": 59566
},
{
"icon_id": "435984",
"name": "我的积分",
"font_class": "wodejifen",
"unicode": "e7eb",
"unicode_decimal": 59371
},
{
"icon_id": "15887887",
"name": "添加热区",
"font_class": "tianjiarequ",
"unicode": "e651",
"unicode_decimal": 58961
},
{
"icon_id": "18049658",
"name": "指标说明",
"font_class": "zhibiaoshuoming",
"unicode": "eb57",
"unicode_decimal": 60247
},
{
"icon_id": "13894326",
"name": "喇叭",
"font_class": "laba",
"unicode": "e680",
"unicode_decimal": 59008
},
{
"icon_id": "16041446",
"name": "排序",
"font_class": "paixu1",
"unicode": "e64f",
"unicode_decimal": 58959
},
{
"icon_id": "12577879",
"name": "图片",
"font_class": "tupian-copy",
"unicode": "e64c",
"unicode_decimal": 58956
},
{
"icon_id": "17614018",
"name": "绘制热区",
"font_class": "huizhirequ",
"unicode": "e64d",
"unicode_decimal": 58957
},
{
"icon_id": "17675917",
"name": "视频流量",
"font_class": "shipinliuliang",
"unicode": "eb4d",
"unicode_decimal": 60237
},
{
"icon_id": "10501417",
"name": "图标_图片空间",
"font_class": "tubiao_tupiankongjian",
"unicode": "e656",
"unicode_decimal": 58966
},
{
"icon_id": "5722952",
"name": "视频",
"font_class": "video1",
"unicode": "e64b",
"unicode_decimal": 58955
},
{
"icon_id": "12472553",
"name": "开卡",
"font_class": "kaika",
"unicode": "e716",
"unicode_decimal": 59158
},
{
"icon_id": "12987636",
"name": "订单",
"font_class": "dingdan1",
"unicode": "e64a",
"unicode_decimal": 58954
},
{
"icon_id": "12996480",
"name": "会员数量",
"font_class": "huiyuanshuliang",
"unicode": "e6e2",
"unicode_decimal": 59106
},
{
"icon_id": "8922363",
"name": "好友",
"font_class": "haoyou",
"unicode": "e649",
"unicode_decimal": 58953
},
{
"icon_id": "3824532",
"name": "兑换记录",
"font_class": "duihuanjilu",
"unicode": "e661",
"unicode_decimal": 58977
},
{
"icon_id": "3961924",
"name": "兑换码",
"font_class": "duihuanma-",
"unicode": "e646",
"unicode_decimal": 58950
},
{
"icon_id": "16075322",
"name": "会员概览",
"font_class": "huiyuangailan",
"unicode": "eb01",
"unicode_decimal": 60161
},
{
"icon_id": "15683446",
"name": "客户占比",
"font_class": "kehuzhanbi",
"unicode": "eae5",
"unicode_decimal": 60133
},
{
"icon_id": "2430810",
"name": "流失率",
"font_class": "liushishuai",
"unicode": "e645",
"unicode_decimal": 58949
},
{
"icon_id": "8486759",
"name": "结构",
"font_class": "jiegou",
"unicode": "e676",
"unicode_decimal": 58998
},
{
"icon_id": "12361673",
"name": "概率",
"font_class": "gaishuai1",
"unicode": "e68b",
"unicode_decimal": 59019
},
{
"icon_id": "15682687",
"name": "会员新增",
"font_class": "huiyuanxinzeng",
"unicode": "eae3",
"unicode_decimal": 60131
},
{
"icon_id": "15682536",
"name": "会员率",
"font_class": "gaishuai",
"unicode": "eae2",
"unicode_decimal": 60130
},
{
"icon_id": "15682331",
"name": "会员总数",
"font_class": "huiyuanzongshu",
"unicode": "eae1",
"unicode_decimal": 60129
},
{
"icon_id": "8291620",
"name": "领取记录",
"font_class": "tubiaozhizuomoban-",
......@@ -293,6 +517,13 @@
"unicode_decimal": 58972
},
{
"icon_id": "20612141",
"name": "选中",
"font_class": "xuanzhong1-copy",
"unicode": "eb58",
"unicode_decimal": 60248
},
{
"icon_id": "1091359",
"name": "互动传播",
"font_class": "hudongchuanbo",
......
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1623824837087" class="icon" viewBox="0 0 2243 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16708" xmlns:xlink="http://www.w3.org/1999/xlink" width="438.0859375" height="200"><defs><style type="text/css"></style></defs><path d="M159.744 43.885714h1920.24381c66.31619 0 119.856762 54.320762 119.856761 121.027048v605.817905a120.441905 120.441905 0 0 1-119.905523 121.075809H279.649524L39.887238 1013.369905V165.205333C39.887238 98.206476 93.42781 43.885714 159.744 43.885714z" fill="#F5222D" p-id="16709"></path><path d="M456.996571 371.370667h42.032762v67.388952h291.888762V312.124952H438.857143v-36.425142h392.825905v229.668571h-40.96v-30.183619h-291.693715v143.457524c0 30.183619 14.09219 45.251048 42.422857 45.251047h240.737524c27.940571 0 44.81219-10.093714 50.761143-30.573714 5.753905-20.041143 10.24-46.762667 13.214476-80.359619 12.629333 5.607619 26.672762 10.532571 42.032762 14.872381a693.394286 693.394286 0 0 1-14.677333 81.871238c-9.849905 37.059048-37.156571 55.588571-81.92 55.588571h-259.900952c-49.737143 0-74.703238-25.84381-74.703239-77.775238V371.370667zM1096.899048 263.801905h112.249904V452.998095h36.08381v31.451429h-36.08381v188.269714c0 30.817524-13.458286 46.32381-40.131047 46.32381-11.702857 0-25.6-0.438857-41.398857-1.462858a231.424 231.424 0 0 0-5.753905-34.084571c13.458286 2.389333 25.84381 3.657143 37.546667 3.900952 11.946667 0.438857 18.139429-7.314286 18.139428-22.625523V484.449524h-48.859428v50.858666c0 81.871238-14.921143 146.041905-44.812191 192.609524a227.181714 227.181714 0 0 0-24.33219-27.599238c24.966095-38.375619 37.546667-93.525333 37.546666-165.010286V484.449524h-40.521143v174.518857c0 32.085333-13.458286 48.274286-40.521142 48.274286-10.727619 0-22.869333-0.487619-36.08381-1.560381a306.224762 306.224762 0 0 0-5.753905-34.03581c14.726095 2.389333 25.84381 3.462095 33.694476 3.462095 11.312762 0 17.066667-7.119238 17.066667-21.113904V484.449524h-48.225524v56.661333c0 75.824762-15.36 137.898667-46.323809 185.685333a227.181714 227.181714 0 0 0-24.283429-27.550476c26.038857-41.155048 39.009524-96.548571 39.009524-166.521904v-48.274286h-39.009524V452.998095h39.009524V264.728381h111.85981V452.998095h40.521142V263.801905h-0.633904zM1330.517333 243.809524h35.644953v422.66819c0 35.59619-15.36 53.248-46.32381 53.248-18.529524 0-40.082286-0.487619-64.853333-1.121524a309.150476 309.150476 0 0 0-6.826667-40.911238c23.503238 2.389333 42.032762 3.657143 56.124953 3.900953 17.554286 0.390095 26.477714-8.630857 26.477714-26.721524V243.809524h-0.24381z m-40.96 366.445714h-34.133333v-329.630476h34.133333v329.630476z m-112.201143-315.830857h-48.859428V452.998095h48.859428V294.424381z m-152.771047 1.072762h-48.274286v157.696h48.274286V295.497143z m556.470857 213.284571h122.88V446.756571h-91.331048v-23.698285c-11.702857 9.898667-23.649524 19.358476-36.083809 28.623238a292.717714 292.717714 0 0 0-23.893333-33.596953c68.754286-46.957714 120.393143-102.107429 155.16038-165.64419h40.131048l-6.436571 13.750857c34.620952 59.050667 86.211048 105.179429 155.111619 137.898667a1589.638095 1589.638095 0 0 0-21.504 40.472381c-65.731048-38.960762-116.736-87.235048-153.209905-144.335238a551.887238 551.887238 0 0 1-97.52381 111.859809h200.118858v34.425905h-83.382858v62.073905h131.169524v34.474666h-131.169524v122.148572c0 37.692952-17.554286 56.661333-52.711619 56.661333-13.653333 0-31.792762-0.24381-54.613333-0.487619a1029.802667 1029.802667 0 0 0-6.826667-40.911238c17.456762 2.584381 34.328381 3.900952 50.322286 3.900952 17.944381 0 26.86781-9.264762 26.86781-27.599238v-113.712762h-122.88v-34.279619h-0.195048z m-11.751619 11.849143c9.167238 62.073905-5.753905 97.182476-44.373333 104.935619-11.946667 2.584381-27.940571 2.779429-47.786667 0.438857a389.851429 389.851429 0 0 0-10.24-41.398857c15.36 3.900952 29.842286 5.168762 43.495619 3.900953 22.186667-2.389333 29.257143-24.576 21.552762-66.998858-3.85219-23.064381-18.139429-50.614857-42.422857-82.748952 11.897905-41.984 24.917333-87.430095 39.009524-135.899429h-61.878858v426.130286h-36.083809V268.385524h137.654857v34.474666c-15.60381 49.298286-29.45219 92.40381-41.398857 129.706667 24.527238 33.987048 38.863238 63.536762 42.471619 88.064z m201.386667 73.923048l27.306666-24.137143a2474.910476 2474.910476 0 0 1 90.307048 94.98819l-30.086095 27.794286a3299.815619 3299.815619 0 0 0-87.478857-98.645333z m-148.72381-28.038095l32.280381 17.700571c-23.064381 43.056762-47.786667 82.261333-74.264381 117.808762-8.533333-6.436571-18.773333-14.189714-30.72-22.625524 26.672762-31.695238 50.761143-69.144381 72.752762-112.883809z" fill="#FFFFFF" p-id="16710"></path></svg>
\ No newline at end of file
......@@ -9,5 +9,7 @@ export const ecmTypes = [
{ value: 'integral', label: '积分', visible: true },
{ value: 'grade', label: '会员卡升级', visible: false },
{ value: 'qywx', label: '企微任务', visible: false },
{ value: 'qfxx', label: '群发消息', visible: false }
{ value: 'qfxx', label: '群发消息', visible: false },
{ value: 'teltask-fail', label: '群发失败-话务', visible: false },
{ value: 'message-fail', label: '群发失败-短信', visible: false }
];
......@@ -18,6 +18,12 @@
<el-input class="w250" disabled v-model="form.sceneSettingName"></el-input>
</el-form-item>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="form.marketingActivityId" :readOnly="isEdit || isInfo"></dm-activity-select>
</el-form-item>
</div>
......@@ -534,8 +540,8 @@ export default {
console.log(this.cardInfo);
if (this.cardInfo.manualGetFlag == 0) {
// 自动领取的卡券需要添加如下文案
html += `<div class="fz16">当前群发人数为${sumPerson}人,是否进行投放?</div><div class="regular-font-color fz13 mt10">用户在领取卡券后需要<b class="bold">同步至ERP</b>,如果关闭用户<b class="bold">手动领取</b>,卡券在<b class="bold">批量投放</b>时会需要将卡券信息批量同步至ERP。
该过程可能需要持续一段时间(具体同步时间和同步卡券张数以及ERP性能有关,参考同步时间为1万张卡券1个小时)。
html += `<div class="fz16">当前群发人数为${sumPerson}人,是否进行投放?</div><div class="regular-font-color fz13 mt10">用户在领取卡券后需要<b class="bold">同步至ERP</b>,如果关闭用户<b class="bold">手动领取</b>,卡券在<b class="bold">批量投放</b>时会需要将卡券信息批量同步至ERP。
该过程可能需要持续一段时间(具体同步时间和同步卡券张数以及ERP性能有关,参考同步时间为1万张卡券1个小时)。
当前支持不需要用户手动领取的卡券库存最大值为<b class="bold">${this.couponAutoGetStock}</b>张。</div>`;
} else {
html = `<div>当前群发人数为${sumPerson}人,是否进行投放?</div>`;
......
......@@ -17,6 +17,12 @@
</el-form-item>
<el-form-item label="数据对话">
<!-- 只能新增不能改 -->
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="ruleForm.marketingActivityId" :readOnly="isInfo || isEdit"></dm-activity-select>
</el-form-item>
<el-form-item prop="cardIds" label="新增卡券">
......
......@@ -5,6 +5,12 @@
<dm-input :disabled="!canEdit" class="w400" v-model="ruleForm.cdkeyName" placeholder="请输入兑换码名称" :byteType="1" :maxlength="24"></dm-input>
</el-form-item>
<el-form-item label="数据对话" prop="marketingActivityId">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select class="activity" :actId.sync="ruleForm.marketingActivityId" :readOnly="!canEdit"></dm-activity-select>
</el-form-item>
<el-form-item prop="dateTime" label="有效期">
......
......@@ -123,6 +123,8 @@ export default {
if (res.result) {
// this.typeOptions.find(el => el.value == 'qywx').visible = true;
this.typeOptions.find(el => el.value == 'qfxx').visible = true;
this.typeOptions.find(el => el.value == 'teltask-fail').visible = true;
this.typeOptions.find(el => el.value == 'message-fail').visible = true;
}
});
getUseStoredFalg().then(res => {
......
......@@ -64,7 +64,7 @@
import { ecmCurrentSendInfos, ecmCurrentSendDetails, exportCurrentSendDetails } from '@/service/api/ecmApi.js';
import { formatDateTimeByType } from '@/utils/index.js';
import memberInfo from '@/components/member-info/index.vue';
const typeOptions = [{ value: '', label: '所有类型' }, { value: 'teletext', label: '图文' }, { value: 'text', label: '文本' }, { value: 'image', label: '图片' }, { value: 'card', label: '卡券' }, { value: 'wxa', label: '小程序' }, { value: 'message', label: '短信' }, { value: 'teltask', label: '话务' }, { value: 'integral', label: '积分' }, { value: 'qywx', label: '企微任务' }, { value: 'qfxx', label: '群发消息' }, { value: 'grade', label: '会员卡升级' }]; // eslint-disable-line
const typeOptions = [{ value: '', label: '所有类型' }, { value: 'teletext', label: '图文' }, { value: 'text', label: '文本' }, { value: 'image', label: '图片' }, { value: 'card', label: '卡券' }, { value: 'wxa', label: '小程序' }, { value: 'message', label: '短信' }, { value: 'teltask', label: '话务' }, { value: 'integral', label: '积分' }, { value: 'qywx', label: '企微任务' }, { value: 'qfxx', label: '群发消息' }, { value: 'grade', label: '会员卡升级' }, { value: 'teltask-fail', label: '群发失败-话务' }, { value: 'message-fail', label: '群发失败-短信' }]; // eslint-disable-line
export default {
name: 'ecm-current-list',
components: {
......@@ -117,7 +117,7 @@ export default {
prop: 'status',
align: 'left',
formatter(row) {
return row.status ? '<span class="dm-status--primary">正在使用</span>' : '<span class="dm-status--info">已删除</span>';
return row.status ? '<span class="dm-status--primary--flash"></span><span class="vertical-middle">正在使用</span>' : '<span class="dm-status--info">已删除</span>';
}
}
],
......
......@@ -89,6 +89,12 @@
<el-input class="w400" disabled v-model="form.sceneSettingName"></el-input>
</el-form-item>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="form.marketingActivityId" :readOnly="!isAdd"></dm-activity-select>
</el-form-item>
</section>
......
......@@ -61,9 +61,12 @@
<!-- <dm-delete v-if="scope.row.effectType !== 2 && scope.row.onlineStatus === 1 && scope.row.canEdit !== false" @confirm="offlineEcmPlan(scope.row)" tips="是否下线该计划?">
<el-button type="text">下线</el-button>
</dm-delete> -->
<dm-delete v-if="scope.row.putonStatus !== 2 && scope.row.canEdit !== false" @confirm="delData(scope.row)" tips="是否删除该计划?">
<el-button type="text">删除</el-button>
</dm-delete>
<template v-if="scope.row.putonStatus !== 2 && scope.row.canEdit !== false">
<el-button v-if="xsxsFlag && isOpenFlag(scope.row.analyseJson)" type="text" @click="onDelete(scope.row)">删除</el-button>
<dm-delete v-else @confirm="delData(scope.row)" tips="是否删除该计划?">
<el-button type="text">删除</el-button>
</dm-delete>
</template>
<!-- <el-button type="text" @click="toRecord(scope.row)">记录</el-button>
<el-button type="text" @click="toTouch(scope.row)" v-if="xsxsFlag && isOpenFlag(scope.row.analyseJson)">触达效果</el-button> -->
<el-dropdown style="margin-left:8px" trigger="click" @command="onCommand($event, scope.row)">
......@@ -145,7 +148,7 @@ export default {
}
}
},
{ label: '营销方式', prop: 'marketingType', minWidth: '140', align: 'left' },
{ label: '营销方式', prop: 'marketingType', minWidth: '140', align: 'left', tooltip: true },
{
label: '数据对话',
prop: 'marketingActivityName',
......@@ -185,7 +188,9 @@ export default {
formatter(row) {
let openFlag = JSON.parse(row.analyseJson);
if (!openFlag) openFlag = {};
return openFlag.open_flag == 0 || (!row.ecmMemberNum && row.ecmMemberNum != 0) ? '--' : row.ecmMemberNum;
console.log(openFlag);
return openFlag.open_flag == 0 ? '--' : row.ecmMemberNum || 0;
// return openFlag.open_flag == 0 || (!row.ecmMemberNum && row.ecmMemberNum != 0) ? '--' : row.ecmMemberNum;
}
},
{
......@@ -196,7 +201,8 @@ export default {
formatter(row) {
let openFlag = JSON.parse(row.analyseJson);
if (!openFlag) openFlag = {};
return openFlag.open_flag == 0 || (!row.ecmSuccessNum && row.ecmSuccessNum != 0) ? '--' : row.ecmSuccessNum;
return openFlag.open_flag == 0 ? '--' : row.ecmSuccessNum || 0;
// return openFlag.open_flag == 0 || (!row.ecmSuccessNum && row.ecmSuccessNum != 0) ? '0' : row.ecmSuccessNum;
}
},
{
......@@ -207,7 +213,8 @@ export default {
formatter(row) {
let openFlag = JSON.parse(row.analyseJson);
if (!openFlag) openFlag = {};
return openFlag.open_flag == 0 || (!row.ecmTranNum && row.ecmTranNum != 0) ? '--' : row.ecmTranNum;
return openFlag.open_flag == 0 ? '--' : row.ecmTranNum || 0;
// return openFlag.open_flag == 0 || (!row.ecmTranNum && row.ecmTranNum != 0) ? '0' : row.ecmTranNum;
}
},
{
......@@ -218,7 +225,8 @@ export default {
formatter(row) {
let openFlag = JSON.parse(row.analyseJson);
if (!openFlag) openFlag = {};
return openFlag.open_flag == 0 || (!row.ecmTranIncome && row.ecmTranIncome != 0) ? '--' : row.ecmTranIncome.toFixed(2);
return openFlag.open_flag == 0 ? '--' : Number(row.ecmTranIncome).toFixed(2) || '0.00';
// return openFlag.open_flag == 0 || (!row.ecmTranIncome && row.ecmTranIncome != 0) ? '0.00' : row.ecmTranIncome.toFixed(2);
}
},
{
......@@ -229,7 +237,8 @@ export default {
formatter(row) {
let openFlag = JSON.parse(row.analyseJson);
if (!openFlag) openFlag = {};
return openFlag.open_flag == 0 || (!row.cardSalesAmt && row.cardSalesAmt != 0) ? '--' : row.cardSalesAmt.toFixed(2);
return openFlag.open_flag == 0 ? '--' : Number(row.cardSalesAmt).toFixed(2) || '0.00';
// return openFlag.open_flag == 0 || (!row.cardSalesAmt && row.cardSalesAmt != 0) ? '0.00' : row.cardSalesAmt.toFixed(2);
}
}
],
......@@ -349,6 +358,8 @@ export default {
if (this.xsxsFlag) {
// this.marketingTypeOptions.find(el => el.value == 'qywx').visible = true;
this.marketingTypeOptions.find(el => el.value == 'qfxx').visible = true;
this.marketingTypeOptions.find(el => el.value == 'teltask-fail').visible = true;
this.marketingTypeOptions.find(el => el.value == 'message-fail').visible = true;
}
});
},
......@@ -367,6 +378,14 @@ export default {
} else if (command == 4) {
this.copyData(row);
}
},
async onDelete(row) {
await this.$confirm('是否删除该计划?删除后触达效果数据会一起被删除', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
});
this.delData(row);
}
},
computed: {
......
<template>
<div class="dm__is-delete" v-if="item.status == 0">短信模板-已删除</div>
<div class="dm__is-delete" v-if="item.status == 0">{{ item.title }}( 短信模板已删除 )</div>
<span v-else class="dm-message__item__wrap">
<div class="dm-message__item">
<p class="dm-message__item--title">{{ item.title || '该短信模板已删除' }}</p>
......
......@@ -11,6 +11,14 @@
<span v-html="el"></span>
</span>
</p>
<p v-if="item.qfxx.failSetting == 1" style="margin-top:12px;color:#606266">
<span>群发失败设置:</span>
<span v-if="item.qfxx.telFlag">话务</span><span v-if="item.qfxx.smsFlag && item.qfxx.telFlag"> / </span>
<span v-if="item.qfxx.smsFlag">
短信
<template v-if="item.qfxx.gicSmsTemplateId == -1"> ( {{ item.qfxx.smsTitle }} - 短信模板已删除 ) </template>
</span>
</p>
</div>
</template>
......
......@@ -21,7 +21,7 @@
</template>
<dm-input class="w400" :rows="4" type="textarea" v-model="form.content" placeholder="限制200个字符" :maxlength="200"></dm-input>
</el-form-item>
<el-form-item label="任务逾期判定" prop="lateDays"> <el-input-number controls-position="right" class="w400" v-model="form.lateDays"></el-input-number> 天之后 </el-form-item>
<el-form-item label="任务逾期判定" prop="lateDays"> <el-input-number controls-position="right" :min="0" class="w400" v-model="form.lateDays"></el-input-number> 天之后 </el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="close">关 闭</el-button>
......@@ -66,6 +66,7 @@ export default {
},
watch: {
show(val) {
console.log(val, this.item);
this.form = {
title: '',
lateDays: '',
......
......@@ -53,6 +53,7 @@
<el-dialog title="选择短信模板" :visible.sync="smsTemplate.show" width="800px" @close="selectedData = null">
<div class="pb22">
<el-input clearable v-model="listParams.search" class="w200" placeholder="请输入短信名称" @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<span class="pl10 fz13 gray" style="vertical-align:middle"><i class="el-icon-info pr10"></i>短信运营商限制:为避免骚扰用户,营销短信只允许在8点到22点发送</span>
</div>
<el-table tooltipEffect="light" :data="smsTempList" height="400" style="width: 100%" row-class-name="cursor-pointer" v-loading="loading" @row-click="rowClick">
<el-table-column :show-overflow-tooltip="false" :width="60" align="center" prop="smsTemplateId">
......
......@@ -344,7 +344,7 @@ export default {
break;
case 'message': // 6 短信
const sms = v.sms || {};
this.list.push({ name: '短信', comName: 'item-message', item: { ...sms, ecmMarketingTypeRelationId: v.ecmMarketingTypeRelationId, relationId: v.relationId, ecmPlanId: v.ecmPlanId, status: v.status } });
this.list.push({ name: '短信', comName: 'item-message', item: { title: v.title, ...sms, ecmMarketingTypeRelationId: v.ecmMarketingTypeRelationId, relationId: v.relationId, ecmPlanId: v.ecmPlanId, status: v.status } });
break;
case 'teltask': // 7 话务
this.list.push({ name: '话务', comName: 'item-teltask', item: { ...v.teltask, ecmMarketingTypeRelationId: v.ecmMarketingTypeRelationId, relationId: v.relationId, ecmPlanId: v.ecmPlanId } });
......@@ -453,8 +453,9 @@ export default {
params.relationId = val.relationId;
}
if (val.comName === 'qywx' || val.comName === 'qfxx') {
delete val.comName;
delete val.ecmMarketingTypeRelationId;
params = { ...params, ...val };
delete params.comName;
}
// 接口请求 保存
saveUpdateMarketingType({ marketingType: JSON.stringify(params) })
......
......@@ -11,6 +11,12 @@
<el-date-picker :disabled="disabled" default-time="23:59:59" v-model="form.endDate" type="datetime" :picker-options="endDatePickerOptions" placeholder="结束时间" @change="checkBeginEndTime"> </el-date-picker>
</el-form-item>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="form.marketingActivityId" :readOnly="disabled"></dm-activity-select>
</el-form-item>
<h3 class="title mt46">
......
......@@ -29,9 +29,10 @@
<div class="tab2">
<template v-if="type == 1">
<span class="tab2-item" v-for="item in listTabsIndex == 1 ? touchTabs : taskTabs" :key="item.id" :class="{ active2: listTabsIndex == 1 ? item.id == tabsIndex : item.id == taskTabIndex }" @click="changeTabs(item.id)">{{ item.name }}</span>
<span class="tab2-tip" v-if="listTabsIndex == 1">* 只展示有数据的触达方式</span>
<span class="tab2-tip" v-if="listTabsIndex == 1">* 只展示有数据的触达方式(默认按触达转化率倒序排序)</span>
<span class="tab2-tip" v-else>* 只展示有数据的任务</span>
</template>
<span class="tab2-tip" v-else>默认按转化人数倒序排序</span>
</div>
<el-button type="primary" class="btn" @click="cdkeyExport"><i class="iconfont icon-icon_yunxiazai" style="marginRight:6px;fontSize:14px"></i>导出</el-button>
</div>
......@@ -119,8 +120,10 @@ export default {
this.getTabData();
if (this.type == 2) {
name = '后台线索';
this.touchOrderBy = 'convMbrNum desc';
} else {
name = '导购线索';
this.touchOrderBy = 'reachConvMbrRate desc';
}
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '智能营销', path: '/ecm' }, { name: `${planName} - 触达效果`, path: `/ecm/touch/${planId}?name=${planName}&&createTime=${createTime}` }, { name }]); // eslint-disable-line
},
......@@ -175,7 +178,7 @@ export default {
if (this.listTabsIndex != 0) {
this.tableHeader = [
{
label: '排',
label: '排',
prop: 'index',
align: 'left',
fixed: 'left',
......@@ -223,7 +226,7 @@ export default {
if (this.type == 1 && this.listTabsIndex == 0) {
this.tableHeader = [
{
label: '排',
label: '排',
prop: 'index',
align: 'left',
fixed: 'left',
......@@ -297,7 +300,7 @@ export default {
let resetArr = [];
this.tableExtra.forEach(item => {
if (item.groupName == '区域合计') resetArr[0] = item;
else if (item.groupName == '计划整体' && this.level < 2) resetArr[1] = item;
// else if (item.groupName == '计划整体' && this.level < 2) resetArr[1] = item;
});
res.result.result && (this.tableList = resetArr.concat(res.result.result));
this.total = res.result.totalCount;
......@@ -575,7 +578,6 @@ export default {
justify-content: space-between;
padding: 20px;
.tab2 {
cursor: pointer;
display: flex;
.tab2-item {
display: inline-block;
......@@ -590,6 +592,7 @@ export default {
color: #606266;
line-height: 32px;
text-align: center;
cursor: pointer;
}
.tab2-tip {
line-height: 32px;
......
......@@ -40,11 +40,12 @@
<template slot-scope="scope">
<div class="name" v-if="scope.row.cardName">
<div class="top">
<span v-if="scope.row.cardName.length <= 15">{{ scope.row.cardName }}</span>
<span v-if="scope.row.cardName.length <= 15" :class="[scope.row.status == 0 ? 'del_card' : 'pointer']" @click="toCardDetail(scope.row)">{{ scope.row.cardName }}</span>
<el-tooltip open-delay="100" placement="top-start" :content="scope.row.cardName" v-else>
<span class="card_name">{{ scope.row.cardName }}</span>
<span :class="['card_name', scope.row.status == 0 ? 'del_card' : 'pointer']" @click="toCardDetail(scope.row)">{{ scope.row.cardName }}</span>
</el-tooltip>
<span class="type">{{ scope.row.cardType == 0 ? '抵金券' : scope.row.cardType == 1 ? '折扣券' : scope.row.cardType == 2 ? '兑换券' : '--' }}</span>
<span class="type" v-if="scope.row.status != 0">{{ scope.row.cardType == 0 ? '抵金券' : scope.row.cardType == 1 ? '折扣券' : scope.row.cardType == 2 ? '兑换券' : '--' }}</span>
<img :src="require('@/assets/img/Icon-yishanchu.svg')" alt="" v-else style="width: 46px;height: 21px;margin-left: 6px" />
</div>
<p>{{ scope.row.subTitle }}</p>
</div>
......@@ -93,6 +94,12 @@ export default {
]
};
},
methods: {
toCardDetail(row) {
if (row.status == 0) return;
window.open(window.location.origin + `/marketing/#/card/edit/${row.cardId}`);
}
},
computed: {
formatterNum() {
return val => (!val ? '0' : parseInt(val).toLocaleString());
......@@ -205,6 +212,13 @@ export default {
overflow: hidden;
max-width: 210px;
}
.del_card {
cursor: normal;
opacity: 0.56;
}
.pointer {
cursor: pointer;
}
}
p {
font-size: 12px;
......
......@@ -50,7 +50,7 @@
</li>
</ul>
</el-drawer>
<el-drawer title="【导购线索】说明" :visible.sync="drawer" :direction="direction" custom-class="touch_drawer h850" v-else-if="contentTitle == '导购线索'">
<el-drawer title="【导购线索】说明" :visible.sync="drawer" :direction="direction" custom-class="touch_drawer h860" v-else-if="contentTitle == '导购线索'">
<ul class="content">
<li>数据更新频率:1天1次</li>
<!-- <li>导购线索:计划中触达到门店导购端的都归入导购线索,包括话务、企微任务。</li>
......@@ -93,7 +93,7 @@
<p>
任务完成情况:不同任务的完成情况,任务完成数不含放弃。<br />
触达效果:导购线索中不同任务完成方式的触达转化情况。话务任务暂不区分私人电话和企业电话,所以完成方式为 话务。<br />
注意:区域详情合计按任务门店统计汇总,上方计划整体数据以企业粒度单独计算,数据不完全一致。
注意:区域详情合计按任务门店统计汇总,同一用户在不同门店下消费,汇总不去重;上方计划整体数据以企业粒度单独计算,数据不完全一致。
</p>
</div>
</li>
......@@ -139,8 +139,8 @@
<p>4.区域详情</p>
<p>区域粒度的『触达人数』和『触达率』按服务门店统计,其余转化信息按消费门店统计。</p>
<p>无归属门店:触达的人群无服务门店,归入无归属;</p>
<p>计划整体:按计划整体去重,同一用户被触达多次,转化多次,只记1人;</p>
<p>区域合计:按所选范围下的门店汇总,同一用户在不同门店下消费,汇总不去重</p>
<!-- <p>计划整体:按计划整体去重,同一用户被触达多次,转化多次,只记1人;</p> -->
<p>区域合计:按所选范围下的门店汇总,同一用户在不同门店下消费,汇总不去重;上方展示的是计划整体数据,按计划整体去重,同一用户被触达多次,转化多次,只记1人,两者数据会有差异。</p>
</div>
</li>
</ul>
......@@ -149,8 +149,8 @@
<ul class="content">
<li>更新频率:营销人次实时统计,其余指标1天更新1次;</li>
<li>
①【营销人次】:本智能营销计划预计营销的人次<br />
②【计划触达人数】:本计划计划触达的人数。一些预计营销的人中因为一些系统特殊情况导致触发失败的,不会计入在内;重复营销的,只记1人;<br />
①【营销人次】:本次计划各次营销的人数汇总。如计划执行两次,第一次选中10000人使用了2个卡券1个短信,第二次选中相同的10000人使用了群发,整体营销人次为20000<br />
②【计划触达人数】:本计划计划触达的人数。计划中同1人被多次营销的,只记1人;<br />
③【触达人数】:通过计划中各种营销方式触达到的会员人数;<br />
④【转化人数】:触达的人中,在触达收益有效期内前来消费的人数;<br />
⑤【线索转化收益】:转化人数带来的收益,只计销售单,不看退货单和换货单;金额是应付还是实付看ERP传入的值;<br />
......@@ -183,8 +183,8 @@ export default {
</script>
<style lang="scss">
.h850 {
height: 850px !important;
.h860 {
height: 860px !important;
}
.h790 {
height: 790px !important;
......
......@@ -21,11 +21,10 @@
</template>
<!--非线索页列表-->
<div class="right" :class="[isCluePage ? 'cluePage' : '']" ref="right">
<div v-if="!isCluePage">
<!-- <div v-if="!isCluePage">
<p>计划人次</p>
<!-- <p>{{ item.planMbrTimes ? item.planMbrTimes.toLocaleString() : 0 }}</p> -->
<p>{{ formatterNum(item.planMbrTimes) }}</p>
</div>
</div> -->
<div>
<p>{{ isCluePage ? '计划触达人数' : '计划人数' }}</p>
<p>{{ formatterNum(item.planMbrNum) }}</p>
......
......@@ -7,6 +7,12 @@
<dm-input v-model="form.gameName" class="w400" :disabled="isInfo" :maxlength="25"></dm-input>
</el-form-item>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="form.marketingActivityId" :readOnly="isEdit || isInfo"></dm-activity-select>
</el-form-item>
<el-form-item label="游戏时间" prop="dateTime">
......
......@@ -7,6 +7,12 @@
<dm-input v-model="form.gameName" class="w400" :disabled="isInfo" :maxlength="25"></dm-input>
</el-form-item>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="form.marketingActivityId" :readOnly="isEdit || isInfo"></dm-activity-select>
</el-form-item>
<el-form-item label="游戏时间" class="width50" prop="dateTime">
......
......@@ -6,6 +6,12 @@
<dm-input v-model="form.gameName" class="w400" :maxlength="10"></dm-input>
</el-form-item>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="form.marketingActivityId" :readOnly="isEdit || isInfo"></dm-activity-select>
</el-form-item>
<el-form-item label="游戏背景" class="clearfix">
......
......@@ -6,6 +6,12 @@
<dm-input v-model="form.gameName" class="w400" :disabled="isInfo" :maxlength="25"></dm-input>
</el-form-item>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="form.marketingActivityId" :readOnly="isEdit || isInfo"></dm-activity-select>
</el-form-item>
<el-form-item label="游戏时间" prop="dateTime" class="width50">
......
......@@ -6,6 +6,12 @@
<dm-input v-model="form.gameName" class="w400" :maxlength="25"></dm-input>
</el-form-item>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="form.marketingActivityId" :readOnly="isEdit || isInfo"></dm-activity-select>
</el-form-item>
<el-form-item label="LOGO上传" prop="logoImg" class="width50">
......
<template>
<el-form v-loading="loading">
<el-form v-loading="loading" label-width="110px">
<section class="dm-form__wrap">
<h3 class="dm-title__label">场景设置</h3>
<el-form-item label="数据对话">
<template slot="label">
<span>数据对话</span>
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<dm-activity-select :actId.sync="info.marketingActivityId" :readOnly="isEdit || isInfo"></dm-activity-select>
</el-form-item>
<el-form-item label="发送时间">
......
......@@ -2,15 +2,20 @@
<div v-loading="loading">
<section class="dm-form__wrap">
<div class="mb20">
<span class="dm-input_label mr8">数据对话:</span>
<span class="dm-input_label mr8">
数据对话
<el-tooltip class="item" effect="dark" content="数据对话为原营销活动。可不选择,选择后会将该营销活动的数据置于选择的数据对话中一起分析" :open-delay="300">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</span>
<dm-activity-select class="inline-block" :actId.sync="info.marketingActivityId" :readOnly="isEdit || isInfo"></dm-activity-select>
</div>
<div class="mb20" v-if="!isAdd && info.sceneSettingName">
<span class="dm-input_label mr8">营销场景:</span>
<span class="dm-input_label" style="margin-right:12px">营销场景:</span>
{{ info.sceneSettingName }}
</div>
<div>
<span class="dm-input_label mr8">发送时间:</span>
<span class="dm-input_label" style="margin-right:12px">发送时间:</span>
<el-select class="w250" v-model="info.sendType" :disabled="isInfo">
<el-option v-for="(v, i) in sendTypeOptions" :key="i" :value="v.value" :label="v.label"></el-option>
</el-select>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,6 +6,55 @@
"description": "",
"glyphs": [
{
"icon_id": "22270569",
"name": "Icon-yishanchu",
"font_class": "Icon-yishanchu",
"unicode": "e65a",
"unicode_decimal": 58970
},
{
"icon_id": "10704949",
"name": "数据",
"font_class": "shujux",
"unicode": "e658",
"unicode_decimal": 58968
},
{
"icon_id": "8192956",
"name": "小程序",
"font_class": "xiaochengxu3",
"unicode": "e657",
"unicode_decimal": 58967
},
{
"icon_id": "10896036",
"name": "消息中心已失效",
"font_class": "xiaoxizhongxinyishixiao",
"unicode": "e678",
"unicode_decimal": 59000
},
{
"icon_id": "20557410",
"name": "会员卡升级",
"font_class": "huiyuankashengji",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"icon_id": "12417923",
"name": "商品-一行两个",
"font_class": "shangpin-yihangliangge1",
"unicode": "ea18",
"unicode_decimal": 59928
},
{
"icon_id": "13727026",
"name": "一行多个",
"font_class": "yihangduoge",
"unicode": "ea91",
"unicode_decimal": 60049
},
{
"icon_id": "19162424",
"name": "预览",
"font_class": "yulan",
......@@ -468,6 +517,13 @@
"unicode_decimal": 58972
},
{
"icon_id": "20612141",
"name": "选中",
"font_class": "xuanzhong1-copy",
"unicode": "eb58",
"unicode_decimal": 60248
},
{
"icon_id": "1091359",
"name": "互动传播",
"font_class": "hudongchuanbo",
......
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