Commit 0fe121c1 by wangyusheng

Merge branch 'feature/m10' into 'master'

Feature/m10

See merge request !113
parents 93290512 087da1b8
<!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.e77c853f06ca6afcd7a78ad8e2ffb48f.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.40.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.13.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.24.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.46.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.42.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.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.13.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.3.js></script><script type=text/javascript src=/marketing/static/js/manifest.5622d848304648a9fb21.js></script><script type=text/javascript src=/marketing/static/js/vendor.b30a466c3b2d11195801.js></script><script type=text/javascript src=/marketing/static/js/main.f03ba571891f68d98fe0.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.a5ce9ca631a967a2d8a4a1afe8042d56.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.40.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.13.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.24.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.571.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.42.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.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=/marketing/static/js/manifest.2460c2af8efdd848d348.js></script><script type=text/javascript src=/marketing/static/js/vendor.fef1c3d3b3b586faaee2.js></script><script type=text/javascript src=/marketing/static/js/main.a2ce008183bf0c9a9655.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.
......@@ -6,6 +6,83 @@
"description": "",
"glyphs": [
{
"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": "17682067",
"name": "热区绘制",
"font_class": "requhuizhi",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"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",
......
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 r=window.webpackJsonp;window.webpackJsonp=function(n,o,c){for(var i,f,u,d=0,s=[];d<n.length;d++)f=n[d],t[f]&&s.push(t[f][0]),t[f]=0;for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(e[i]=o[i]);for(r&&r(n,o,c);s.length;)s.shift()();if(c)for(d=0;d<c.length;d++)u=a(a.s=c[d]);return u};var n={},t={15:0};function a(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var r=t[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var n=new Promise(function(n,a){r=t[e]=[n,a]});r[2]=n;var o=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,a.nc&&c.setAttribute("nonce",a.nc),c.src=a.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"message",4:"ewash",5:"scan",6:"ecm",7:"evaluation",8:"activity",9:"cdKey",10:"recharge",11:"msg",12:"calllog"}[e]||e)+"."+{0:"2498d2d97f9406c1349e",1:"0264c33f4f01117a0edf",2:"46c9be506057a77934c5",3:"09547865dfa13de327a0",4:"391130c8f773cb8775d6",5:"f9698829b629c8ef4758",6:"69341cd9777b2efe8452",7:"63a1a6d2b30b644fe2b0",8:"262d5730485583a8e9ea",9:"b28ab42e4c850a719a9e",10:"deed87acac924fb81b10",11:"68885a5b2ba02a163454",12:"374fb631de99b469adc8"}[e]+".js";var i=setTimeout(f,12e4);function f(){c.onerror=c.onload=null,clearTimeout(i);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return c.onerror=c.onload=f,o.appendChild(c),n},a.m=e,a.c=n,a.d=function(e,r,n){a.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="/marketing/",a.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(t,a,c){for(var f,i,u,d=0,s=[];d<t.length;d++)i=t[d],n[i]&&s.push(n[i][0]),n[i]=0;for(f in a)Object.prototype.hasOwnProperty.call(a,f)&&(e[f]=a[f]);for(r&&r(t,a,c);s.length;)s.shift()();if(c)for(d=0;d<c.length;d++)u=o(o.s=c[d]);return u};var t={},n={14:0};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.e=function(e){var r=n[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var t=new Promise(function(t,o){r=n[e]=[t,o]});r[2]=t;var a=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,o.nc&&c.setAttribute("nonce",o.nc),c.src=o.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"message",4:"ewash",5:"ecm",6:"evaluation",7:"activity",8:"cdKey",9:"recharge",10:"msg",11:"calllog"}[e]||e)+"."+{0:"e166f6857069c5f2917b",1:"0264c33f4f01117a0edf",2:"21a2ae8bde8fd576d6c1",3:"629fde2a7541a483d950",4:"391130c8f773cb8775d6",5:"7d750a088ac10f7f7424",6:"fe87f8c54744c96fa200",7:"73e5fc5c4c70c216a37e",8:"078735466efde17f1d65",9:"d0c7fdeaae259a8befad",10:"0d4820f42ef1fa47e4cc",11:"07f9326e2a68fd201646"}[e]+".js";var f=setTimeout(i,12e4);function i(){c.onerror=c.onload=null,clearTimeout(f);var r=n[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),n[e]=void 0)}return c.onerror=c.onload=i,a.appendChild(c),t},o.m=e,o.c=t,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.p="/marketing/",o.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.
webpackJsonp([12],{"+2+s":function(t,n,r){"use strict";var e=r("Ds5P"),o=r("49qz")(!0);e(e.P,"String",{at:function(t){return o(this,t)}})},"+CM9":function(t,n,r){"use strict";var e=r("Ds5P"),o=r("ot5s")(!1),i=[].indexOf,u=!!i&&1/[1].indexOf(1,-0)<0;e(e.P+e.F*(u||!r("NNrz")(i)),"Array",{indexOf:function(t){return u?i.apply(this,arguments)||0:o(this,t,arguments[1])}})},"+E39":function(t,n,r){t.exports=!r("S82l")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"+Mt+":function(t,n,r){"use strict";var e=r("Ds5P"),o=r("7gX0"),i=r("OzIq"),u=r("7O1s"),c=r("nphH");e(e.P+e.R,"Promise",{finally:function(t){var n=u(this,o.Promise||i.Promise),r="function"==typeof t;return this.then(r?function(r){return c(n,t()).then(function(){return r})}:t,r?function(r){return c(n,t()).then(function(){throw r})}:t)}})},"+ZMJ":function(t,n,r){var e=r("lOnJ");t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},"+tPU":function(t,n,r){r("xGkn");for(var e=r("7KvD"),o=r("hJx8"),i=r("/bQp"),u=r("dSzd")("toStringTag"),c="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),a=0;a<c.length;a++){var s=c[a],f=e[s],l=f&&f.prototype;l&&!l[u]&&o(l,u,s),i[s]=i.Array}},"+vXH":function(t,n,r){r("77Ug")("Float64",8,function(t){return function(n,r,e){return t(this,n,r,e)}})},"+yjc":function(t,n,r){var e=r("UKM+");r("3i66")("isSealed",function(t){return function(n){return!e(n)||!!t&&t(n)}})},"//Fk":function(t,n,r){t.exports={default:r("U5ju"),__esModule:!0}},"/bQp":function(t,n){t.exports={}},"/whu":function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"07k+":function(t,n,r){for(var e,o=r("OzIq"),i=r("2p1q"),u=r("ulTY"),c=u("typed_array"),a=u("view"),s=!(!o.ArrayBuffer||!o.DataView),f=s,l=0,h="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(e=o[h[l++]])?(i(e.prototype,c,!0),i(e.prototype,a,!0)):f=!1;t.exports={ABV:s,CONSTR:f,TYPED:c,VIEW:a}},"0Rih":function(t,n,r){"use strict";var e=r("OzIq"),o=r("Ds5P"),i=r("R3AP"),u=r("A16L"),c=r("1aA0"),a=r("vmSO"),s=r("9GpA"),f=r("UKM+"),l=r("zgIt"),h=r("qkyc"),p=r("yYvK"),v=r("kic5");t.exports=function(t,n,r,d,y,g){var m=e[t],x=m,b=y?"set":"add",w=x&&x.prototype,P={},S=function(t){var n=w[t];i(w,t,"delete"==t?function(t){return!(g&&!f(t))&&n.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!f(t))&&n.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!f(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function(t){return n.call(this,0===t?0:t),this}:function(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof x&&(g||w.forEach&&!l(function(){(new x).entries().next()}))){var O=new x,_=O[b](g?{}:-0,1)!=O,D=l(function(){O.has(1)}),E=h(function(t){new x(t)}),j=!g&&l(function(){for(var t=new x,n=5;n--;)t[b](n,n);return!t.has(-0)});E||((x=n(function(n,r){s(n,x,t);var e=v(new m,n,x);return void 0!=r&&a(r,y,e[b],e),e})).prototype=w,w.constructor=x),(D||j)&&(S("delete"),S("has"),y&&S("get")),(j||_)&&S(b),g&&w.clear&&delete w.clear}else x=d.getConstructor(n,t,y,b),u(x.prototype,r),c.NEED=!0;return p(x,t),P[t]=x,o(o.G+o.W+o.F*(x!=m),P),g||d.setStrong(x,t,y),x}},"0j1G":function(t,n,r){"use strict";var e=r("Ds5P");t.exports=function(t){e(e.S,t,{of:function(){for(var t=arguments.length,n=new Array(t);t--;)n[t]=arguments[t];return new this(n)}})}},"0pGU":function(t,n,r){"use strict";var e=r("DIVP");t.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},"1A13":function(t,n,r){"use strict";var e=r("49qz")(!0);r("uc2A")(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},"1ETD":function(t,n,r){var e=r("kkCw")("match");t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,!"/./"[t](n)}catch(t){}}return!0}},"1H6C":function(t,n,r){var e=function(){return this}()||Function("return this")(),o=e.regeneratorRuntime&&Object.getOwnPropertyNames(e).indexOf("regeneratorRuntime")>=0,i=o&&e.regeneratorRuntime;if(e.regeneratorRuntime=void 0,t.exports=r("HhN8"),o)e.regeneratorRuntime=i;else try{delete e.regeneratorRuntime}catch(t){e.regeneratorRuntime=void 0}},"1Yoh":function(t,n){
webpackJsonp([13],{"+2+s":function(t,n,r){"use strict";var e=r("Ds5P"),o=r("49qz")(!0);e(e.P,"String",{at:function(t){return o(this,t)}})},"+CM9":function(t,n,r){"use strict";var e=r("Ds5P"),o=r("ot5s")(!1),i=[].indexOf,u=!!i&&1/[1].indexOf(1,-0)<0;e(e.P+e.F*(u||!r("NNrz")(i)),"Array",{indexOf:function(t){return u?i.apply(this,arguments)||0:o(this,t,arguments[1])}})},"+E39":function(t,n,r){t.exports=!r("S82l")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"+Mt+":function(t,n,r){"use strict";var e=r("Ds5P"),o=r("7gX0"),i=r("OzIq"),u=r("7O1s"),c=r("nphH");e(e.P+e.R,"Promise",{finally:function(t){var n=u(this,o.Promise||i.Promise),r="function"==typeof t;return this.then(r?function(r){return c(n,t()).then(function(){return r})}:t,r?function(r){return c(n,t()).then(function(){throw r})}:t)}})},"+ZMJ":function(t,n,r){var e=r("lOnJ");t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},"+tPU":function(t,n,r){r("xGkn");for(var e=r("7KvD"),o=r("hJx8"),i=r("/bQp"),u=r("dSzd")("toStringTag"),c="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),a=0;a<c.length;a++){var s=c[a],f=e[s],l=f&&f.prototype;l&&!l[u]&&o(l,u,s),i[s]=i.Array}},"+vXH":function(t,n,r){r("77Ug")("Float64",8,function(t){return function(n,r,e){return t(this,n,r,e)}})},"+yjc":function(t,n,r){var e=r("UKM+");r("3i66")("isSealed",function(t){return function(n){return!e(n)||!!t&&t(n)}})},"//Fk":function(t,n,r){t.exports={default:r("U5ju"),__esModule:!0}},"/bQp":function(t,n){t.exports={}},"/whu":function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"07k+":function(t,n,r){for(var e,o=r("OzIq"),i=r("2p1q"),u=r("ulTY"),c=u("typed_array"),a=u("view"),s=!(!o.ArrayBuffer||!o.DataView),f=s,l=0,h="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(e=o[h[l++]])?(i(e.prototype,c,!0),i(e.prototype,a,!0)):f=!1;t.exports={ABV:s,CONSTR:f,TYPED:c,VIEW:a}},"0Rih":function(t,n,r){"use strict";var e=r("OzIq"),o=r("Ds5P"),i=r("R3AP"),u=r("A16L"),c=r("1aA0"),a=r("vmSO"),s=r("9GpA"),f=r("UKM+"),l=r("zgIt"),h=r("qkyc"),p=r("yYvK"),v=r("kic5");t.exports=function(t,n,r,d,y,g){var m=e[t],x=m,b=y?"set":"add",w=x&&x.prototype,P={},S=function(t){var n=w[t];i(w,t,"delete"==t?function(t){return!(g&&!f(t))&&n.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!f(t))&&n.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!f(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function(t){return n.call(this,0===t?0:t),this}:function(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof x&&(g||w.forEach&&!l(function(){(new x).entries().next()}))){var O=new x,_=O[b](g?{}:-0,1)!=O,D=l(function(){O.has(1)}),E=h(function(t){new x(t)}),j=!g&&l(function(){for(var t=new x,n=5;n--;)t[b](n,n);return!t.has(-0)});E||((x=n(function(n,r){s(n,x,t);var e=v(new m,n,x);return void 0!=r&&a(r,y,e[b],e),e})).prototype=w,w.constructor=x),(D||j)&&(S("delete"),S("has"),y&&S("get")),(j||_)&&S(b),g&&w.clear&&delete w.clear}else x=d.getConstructor(n,t,y,b),u(x.prototype,r),c.NEED=!0;return p(x,t),P[t]=x,o(o.G+o.W+o.F*(x!=m),P),g||d.setStrong(x,t,y),x}},"0j1G":function(t,n,r){"use strict";var e=r("Ds5P");t.exports=function(t){e(e.S,t,{of:function(){for(var t=arguments.length,n=new Array(t);t--;)n[t]=arguments[t];return new this(n)}})}},"0pGU":function(t,n,r){"use strict";var e=r("DIVP");t.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},"1A13":function(t,n,r){"use strict";var e=r("49qz")(!0);r("uc2A")(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},"1ETD":function(t,n,r){var e=r("kkCw")("match");t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,!"/./"[t](n)}catch(t){}}return!0}},"1H6C":function(t,n,r){var e=function(){return this}()||Function("return this")(),o=e.regeneratorRuntime&&Object.getOwnPropertyNames(e).indexOf("regeneratorRuntime")>=0,i=o&&e.regeneratorRuntime;if(e.regeneratorRuntime=void 0,t.exports=r("HhN8"),o)e.regeneratorRuntime=i;else try{delete e.regeneratorRuntime}catch(t){e.regeneratorRuntime=void 0}},"1Yoh":function(t,n){
/*!
* Determine if an object is a Buffer
*
......
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.
......@@ -28,14 +28,14 @@
<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.24.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.js"></script><!-- 门店选择器 -->
<script src="//web-1251519181.file.myqcloud.com/components/store-new.2.0.46.js"></script><!-- 新版门店选择器 -->
<script src="//web-1251519181.file.myqcloud.com/components/store-new.2.0.571.js"></script><!-- 新版门店选择器 -->
<script src="//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/people.2.0.42.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.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.13.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.3.js"></script>
<!-- <script src="//web-1251519181.file.myqcloud.com/components/track.1.0.3.js"></script> -->
</body>
</html>
......@@ -337,4 +337,60 @@
font-weight: inherit;
padding: 2px 0;
border-bottom: 1px dashed #1890ff;
}
// 仿表格
.imitation-table {
text-align: left;
thead tr {
background: #ebecf0;
color: #303133;
font-size: 14px;
}
thead th {
padding: 0 10px;
height: 48px;
line-height: 48px;
}
tbody {
td {
border-bottom: 1px solid #e4e7ed;
padding: 12px 0px;
vertical-align: middle;
color: #606266;
}
.count {
text-align: center;
border-left: 1px solid #e4e7ed;
}
}
// div的仿表格
.thead {
background: #f1f3f7;
color: #303133;
font-size: 14px;
.el-col {
line-height: 23px;
padding: 12px 10px;
}
}
.tbody {
.td {
border-bottom: 1px solid #e4e7ed;
padding: 12px 10px;
vertical-align: middle;
color: #606266;
&.active, &:hover {
background: #f5f7fa;
}
.el-row {
display: flex;
align-items: center;
}
.el-col {
padding: 0 10px;
line-height: 23px;
}
}
}
}
\ No newline at end of file
......@@ -145,7 +145,6 @@ export default {
that.axios
.post(that.baseUrl + '/api-auth/get-current-memu-data', qs.stringify(para))
.then(res => {
// console.log(res,res.data,res.data.errorCode)
var resData = res.data;
if (resData.errorCode == 0) {
if (!resData.result) {
......@@ -205,7 +204,8 @@ export default {
},
$route(val) {
if (val.query.new) {
this.handleSelect(val.path);
const path = val.params.path || val.path;
this.handleSelect(path);
}
}
},
......@@ -228,7 +228,6 @@ export default {
that.pathName = that.pathName.split('?')[0];
}
// console.log("pathname:",that.pathName)
// 获取菜单
that.getLeftMenu();
// 设置默认打开子菜单
......
......@@ -46,7 +46,8 @@ export default {
return this.$store.state.marketing.asideShow;
},
contentTitle() {
return this.$route.name;
const name = (this.$route.meta && this.$route.meta.aliasName) || this.$route.name; // 有些params跳转的需要用到route.name 这种情况如果meta中有aliasName,优先aliasName
return name;
},
breadcrumb() {
return this.$store.state.marketing.breadcrumb;
......
......@@ -68,3 +68,75 @@ export default {
}
]
};
//扫码营销
export const scan = {
path: 'scan',
name: '扫码营销管理',
component: () => import(/* webpackChunkName: "scan" */ '../../views/ecm/scan-index.vue'),
redirect: '/scan/list',
children: [
{
path: 'list',
name: '营销计划',
component: () => import(/* webpackChunkName: "scan" */ '../../views/ecm/scan-list.vue'),
meta: {
path: '/scan/list'
}
},
{
path: 'history-list',
name: '历史营销计划',
component: () => import(/* webpackChunkName: "scan" */ '../../views/ecm/scan-history-list.vue'),
meta: {
path: '/scan/list'
}
},
{
path: 'edit/:id',
name: '营销计划编辑',
component: () => import(/* webpackChunkName: "scan" */ '../../views/ecm/scan-form.vue'),
meta: {
type: 'edit',
path: '/scan/list'
}
},
{
path: 'info/:id',
name: 'scanInfo',
component: () => import(/* webpackChunkName: "scan" */ '../../views/ecm/scan-form.vue'),
meta: {
aliasName: '营销计划详情',
type: 'info',
path: '/scan/list'
}
},
{
path: 'add',
name: '营销计划新增',
component: () => import(/* webpackChunkName: "scan" */ '../../views/ecm/scan-form.vue'),
meta: {
type: 'add',
path: '/scan/list'
}
},
{
path: 'log',
name: '扫码营销日志',
component: () => import(/* webpackChunkName: "scan" */ '../../views/ecm/scan-log-list.vue'),
meta: {
type: 'add',
path: '/scan/log'
}
},
{
path: 'currentlist/:id',
name: '扫码营销记录',
component: () => import(/* webpackChunkName: "scan" */ '../../views/ecm/scan-current-list.vue'),
meta: {
type: 'add',
path: '/scan/list'
}
}
]
};
......@@ -68,7 +68,7 @@ export default {
name: '导入发送列表',
component: () => import(/* webpackChunkName: "message" */ '../../views/message/importSendList.vue'),
meta: {
path: '/message/importSend'
path: '/message/import-send'
}
},
{
......@@ -77,7 +77,7 @@ export default {
component: () => import(/* webpackChunkName: "message" */ '../../views/message/importSendForm.vue'),
meta: {
type: 'add',
path: '/message/importSend'
path: '/message/import-send'
}
},
{
......@@ -86,7 +86,7 @@ export default {
component: () => import(/* webpackChunkName: "message" */ '../../views/message/importSendDetail.vue'),
meta: {
type: 'info',
path: '/message/importSend'
path: '/message/import-send'
}
}
]
......
......@@ -14,7 +14,7 @@ import message from './modules/message';
//卡券营销
import card from './modules/card';
//智能营销
import ecm from './modules/ecm';
import ecm, { scan } from './modules/ecm';
//模板消息
import msg from './modules/msg';
//通话中心
......@@ -36,7 +36,7 @@ export default [
name: 'layout',
component: Layout,
redirect: '/wechat/record',
children: [card, ecm, game, message, wechat, msg, calllog, recharge, evaluation, ewash, activity, cdKey]
children: [card, ecm, scan, game, message, wechat, msg, calllog, recharge, evaluation, ewash, activity, cdKey]
},
{
path: '/401',
......
......@@ -7,6 +7,12 @@ export const url = config.api + PREFIX;
//智能营销--ECM营销引擎分页列表
export const loadEcmList = params => requests(PREFIX + 'page-ecm-list', params);
//扫码营销--分页列表排序
export const changeEcmPlanSort = params => requests(PREFIX + 'change-ecm-plan-sort', params);
//扫码营销-日志
export const listEcmScanLogPage = params => requests(PREFIX + 'list-ecm-scan-log-page', params);
//智能营销--ECM营销引擎-- 删除
export const deleteEcm = params => requests(PREFIX + 'delete-ecm', params);
......
......@@ -34,6 +34,9 @@ export const exportSmsExcel = config.api + PREFIX + 'export-sms-sendlog-excel';
//短信群发--保存群发
export const saveSendSmsService = params => requests(PREFIX + 'save-marketing-message', params);
//短信群发--禁用导入群发
export const stopSmsImportPlanTimer = params => requests(PREFIX + 'stop-sms-import-plan-timer', params);
//短信群发, 微信群发前查看筛选人数
export const checkMessageSendCount = params => requests(PREFIX + 'check-message-send-count', params);
......
......@@ -6,13 +6,14 @@
<span style="color:#909399;" class="ml10">* 次日0点后更新当天营销数据统计</span>
</p>
<template v-if="!isHistory">
<div class="bk f1" :class="fade">
<div class="bk f1 big" :class="fade">
<div class="bl-item-01"><span>营销人次</span></div>
<el-row>
<el-col :span="8"><view-item text="昨日" :num="dataView.activityStat.activityMbrCntD"></view-item></el-col>
<el-col :span="8"><view-item text="本月" :num="dataView.activityStat.activityMbrCntM"></view-item></el-col>
<el-col :span="8"><view-item text="累计" :num="dataView.activityStat.activityMbrCntTd" numBlue run></view-item></el-col>
</el-row>
<p class="tips">注:涉及卡券投放,当投放渠道不是在卡券营销中直接投放时,营销次数可能会重复统计</p>
</div>
<div class="bk f2" :class="fade">
<div class="bl-item-02"><span>活动覆盖人数</span></div>
......
......@@ -49,7 +49,8 @@ const initForm = {
goods_discounts_number_lower_limit: 0,
products_exchange_number: 0,
onlyFlag: true, // 是否显示与优惠同享,默认true显示
giveFlag: 0 // 开启转赠 1开启
giveFlag: 0, // 开启转赠 1开启
refundFlag: 0 // 开启退货 1开启
};
const sale_limit = { fee: 0, goods: '', flag: false, type: 0 }; //最低消费
const goods = { ok: '', no: '', flag: false };
......@@ -130,6 +131,7 @@ export default {
// cardValidity: false, // 卡券有效期是否禁用
nowWmShopData: {}, // 存储wm店铺数据
giveEnable: false, // 支持转赠
refundEnable: false, // 支持退货
discount_limit: { type: 1, count: undefined, flag: false } // 适用商品折扣
};
},
......@@ -281,6 +283,11 @@ export default {
this.giveEnable = res.result.giveEnable;
}
// 后台运维开关配置 退货退券
if (res.result.refundEnable) {
this.refundEnable = res.result.refundEnable;
}
// 支持的品牌-转赠功能
if (res.result.goodsEnable) {
this.xxSysp.goodsEnable = res.result.goodsEnable;
......@@ -301,6 +308,7 @@ export default {
this.form.cardApplyChannel = card.cardApplyChannel ? card.cardApplyChannel.split(',') : [];
this.form.auditingStatus = card.auditingStatus || '';
this.form.giveFlag = res.result.giveEnable ? card.giveFlag : 0;
this.form.refundFlag = card.refundFlag || 0;
this.form.coupCardId = this.isCopy ? '' : card.coupCardId;
this.form.cardType = card.cardType;
this.form.cardName = card.cardName || '';
......@@ -545,6 +553,9 @@ export default {
if (!this.giveEnable) {
this.form.giveFlag = 0;
}
if (!this.refundEnable) {
this.form.refundFlag = 0;
}
//验证有效期
if (this.form.cardEffectiveMode) {
if (!this.form.limitDay) {
......@@ -588,6 +599,7 @@ export default {
card.useCodePrefix = this.form.useCodePrefix;
card.useCodeSuffix = this.form.useCodeSuffix;
card.giveFlag = this.form.giveFlag;
card.refundFlag = this.form.refundFlag;
//卡券条件
//抵金券 sale_limit.fee 最低消费; goods.ok 适用商品, goods.no 不适应商品, only: 1 不与其他优惠共享(不勾选only不传)
if (this.form.cardType === 0) {
......@@ -771,6 +783,7 @@ export default {
// 门店展架
params.shelfIds = JSON.stringify(this.form.shelfIds);
params.card = JSON.stringify(card);
console.log(card);
this.submitLoading = true;
saveUpdateCard(params)
.then(res => {
......
......@@ -250,6 +250,13 @@
<el-switch :disabled="isEdit" v-model="form.giveFlag" :active-value="1" :inactive-value="0"></el-switch>
<span class="tips fz12 gray ml5">* code类型为自定义号段暂时不支持卡券转赠,转赠多次会消耗相同次数的库存,请设置足够的安全库存</span>
</el-form-item>
<el-form-item v-if="(isAdd || isCopy) && refundEnable && form.cardType != 2" label="退货退券">
<el-switch :disabled="isEdit" v-model="form.refundFlag" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<!-- 非新增:运维开启正常展示||运维关闭开关开启 -->
<el-form-item v-if="!isAdd && !isCopy && form.cardType != 2 && (refundEnable || form.refundFlag)" label="退货退券">
<el-switch :disabled="isEdit" v-model="form.refundFlag" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item prop="image" label="(选填)封面图片">
<dm-upload-img :disabled="isEdit || isInfo" :model.sync="form.image" width="64" label="上传图片" url="/api-plug/upload-img" tips="图片建议尺寸:850px*350px,大小不超过2M"></dm-upload-img>
......
......@@ -65,6 +65,13 @@ export default {
components: {
'member-info': memberInfo
},
props: {
isComponet: {
// 是否作为组件使用 扫码营销作为组件引入该页面
default: false,
type: Boolean
}
},
data() {
return {
dateTime: [Date.now() - 30 * 24 * 60 * 60 * 1000, Date.now()],
......@@ -152,14 +159,18 @@ export default {
};
},
mounted() {
this.$store.commit('mutations_layoutTips', `<div class="layout--tips"><i class="el-icon-info"></i>历史数据限制:2018年11月15日之前的历史营销计划,没有详细数据</div>`);
setTimeout(_ => {
this.$store.commit('mutations_layoutTips', '');
}, 5000);
if (!this.isComponet) {
this.$store.commit('mutations_layoutTips', `<div class="layout--tips"><i class="el-icon-info"></i>历史数据限制:2018年11月15日之前的历史营销计划,没有详细数据</div>`);
setTimeout(_ => {
this.$store.commit('mutations_layoutTips', '');
}, 5000);
}
},
created() {
this.ecmCurrentSendInfos();
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '智能营销', path: '/ecm' }, { name: this.$route.query.name + ` - ${ this.$route.meta.type == 'current' ? '实时' : '立即' }发送记录`, path: '' }]); // eslint-disable-line
if (!this.isComponet) {
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '智能营销', path: '/ecm' }, { name: this.$route.query.name + ` - ${ this.$route.meta.type == 'current' ? '实时' : '立即' }发送记录`, path: '' }]); // eslint-disable-line
}
},
beforeDestroy() {
this.$store.commit('mutations_layoutTips', '');
......
<template>
<!-- <span class="dm-text__wrap ellipsis-l2 inline-block" v-html="item.content"></span> -->
<pre>
<span class="dm-text__wrap inline-block" v-html="transfContent"></span>
<pre class="inline-block">
<span v-html="item.content"></span>
</pre>
</template>
<script>
......@@ -23,7 +23,7 @@ export default {
computed: {
transfContent() {
// 替换{数字}为文本
console.log(this.item);
// console.log(this.item);
let val = this.item.content;
if (this.isSupportVar) {
val = val.replace(/\{(?:[1-9]|(1[0-9])?|2[0-8])\}/g, (...argument) => {
......
<template>
<div>
<currentList isComponet></currentList>
</div>
</template>
<script>
import currentList from './current-list';
export default {
name: 'scan-current-list',
components: {
currentList
},
mounted() {
const bread = [
{ name: '扫码营销', path: '' },
{ name: '营销计划', path: '/scan/list' }
];
console.log(this.$route.query.isHistory);
if (this.$route.query.isHistory) {
bread.push({ name: '历史营销计划', path: '/scan/history-list' });
}
this.$nextTick(_ => {
this.$store.commit('mutations_breadcrumb', [...bread, { name: this.$route.query.name + ` - 扫码营销记录` }]); // eslint-disable-line
});
}
};
</script>
<template>
<section class="dm-wrap" v-loading="loading">
<div class="pb22 clearfix">
<el-date-picker class="w400 ml10" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="创建开始时间" end-placeholder="创建结束时间" @change="search"></el-date-picker>
<el-input v-model="listParams.searchName" class="w200" placeholder="输入计划名称" clearable @change="search"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-checkbox class="vertical-middle" v-if="$store.state.marketing.isShowSelf" v-model="listParams.showSelfFlag" :true-label="1" :false-label="0" label="仅看本人" border @change="search" />
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" element-loading-text="拼命加载中">
<el-table-column v-for="(v, i) in tableHeader" :fixed="v.fixed" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="i" :prop="v.prop" :label="v.label" :formatter="v.formatter">
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
<span v-else>{{ scope.row[v.prop] || '--' }}</span>
</template>
</el-table-column>
<el-table-column min-width="100" align="left" prop="creatorName" label="创建人" v-if="$store.state.marketing.openFlag"></el-table-column>
<el-table-column label="操作" align="left" width="130" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="toRecord(scope.row)">记录</el-button>
<template v-if="scope.row.canEdit !== false">
<el-button type="text" v-if="scope.row.effectType == 2" @click="$router.push(`/scan/info/${scope.row.ecmPlanId}`)">详情</el-button>
</template>
<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>
</el-table-column>
</el-table>
<dm-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></dm-pagination>
</section>
</template>
<script>
import { formatDateTimeByType } from '@/utils/index.js';
import { loadEcmList, deleteEcm } from '@/service/api/ecmApi.js';
export default {
name: 'scan-list',
data() {
return {
dateTime: [],
listParams: {
beginTime: '',
endTime: '',
onlineStatus: 2, // onlineStatus字段:不填为有效记录 2:历史记录
searchName: '',
currentPage: 1,
pageSize: 20,
showSelfFlag: '',
effectAction: 'scanning' // 新增字段:effectAction 当effectAction=scanning时 按level_sort倒序
},
total: 0,
loading: false,
tableHeader: [
{ label: '计划名称', prop: 'ecmPlanName', minWidth: '130', align: 'left' },
{
label: '创建时间',
prop: 'createTime',
minWidth: '140',
align: 'left',
formatter(row) {
const date = formatDateTimeByType(row.createTime, 'yyyy-MM-dd-HH-mm-ss', true);
return date.y + '\n' + date.h;
}
},
{
label: '状态',
minWidth: '100',
align: 'left',
formatter(row) {
return '<div v-else class="dm-status--info">已下线</div>';
}
},
{
label: '执行时间',
prop: 'createTime',
minWidth: '140',
align: 'left',
formatter(row) {
const date = formatDateTimeByType(row.beginDate, 'yyyy-MM-dd-HH-mm-ss') + ' ~ <br/>' + formatDateTimeByType(row.endDate, 'yyyy-MM-dd-HH-mm-ss');
return date;
}
},
{ label: '合计营销次数', prop: 'timesForPeople', width: '160', align: 'left' }
],
tableList: []
};
},
created() {
this.getTableList();
this.$store.commit('mutations_breadcrumb', [{ name: '扫码营销', path: '' }, { name: '营销计划', path: '/scan' }, { name: '历史营销计划' }]); // eslint-disable-line
},
methods: {
search() {
this.listParams.currentPage = 1;
this.getTableList();
},
handleSizeChange(val) {
this.listParams.pageSize = val;
this.getTableList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.getTableList();
},
async getTableList() {
if (this.dateTime) {
this.listParams.beginTime = formatDateTimeByType(this.dateTime[0], 'yyyy-MM-dd');
this.listParams.endTime = formatDateTimeByType(this.dateTime[1], 'yyyy-MM-dd');
} else {
this.listParams.beginTime = '';
this.listParams.endTime = '';
}
const params = { ...this.listParams };
if (params.effectType === '') {
params.effectType = -1; // 全部时效的默认值是-1
}
this.loading = true;
try {
let res = await loadEcmList(params);
this.tableList = res.result.result || [];
this.total = res.result.totalCount;
this.loading = false;
} catch (error) {
this.loading = false;
}
},
// 记录
toRecord(row) {
this.$router.push({ path: `/scan/currentlist/${row.ecmPlanId}`, query: { name: row.ecmPlanName, isHistory: 1 } });
},
// 删除
async delData(row) {
try {
let res = await deleteEcm({ ecmPlanId: row.ecmPlanId });
if (res.errorCode === 0) {
this.$tips({ type: 'success', message: '删除成功!' });
if (this.tableList.length === 1 && this.listParams.currentPage !== 1) {
this.listParams.currentPage--;
}
this.getTableList();
} else {
this.$tips({ type: 'error', message: res.message || '删除失败!' });
}
} catch (err) {
this.$tips({ type: 'error', message: '删除失败!' });
}
}
}
};
</script>
<template>
<div>
<router-view />
</div>
</template>
<script>
export default {
name: 'scan-index',
created() {
this.$store.commit('aside_handler', false);
this.$nextTick(_ => {
this.$store.commit('aside_handler', true);
});
}
};
</script>
<template>
<section class="dm-wrap" v-loading="loading">
<div class="pb22 clearfix">
<el-date-picker class="w400 ml10" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="扫码开始时间" end-placeholder="扫码结束时间" @change="search"></el-date-picker>
<el-input v-model="listParams.search" class="w200" placeholder="输入会员信息" clearable @change="search"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" element-loading-text="拼命加载中">
<el-table-column label="扫码时间" align="left" min-width="130">
<template slot-scope="scope">
<p class="cell-time">
{{ formatDateTimeByType(scope.row.createTime, 'yyyy-MM-dd-HH-mm-ss', true).y }}<br />
<span>{{ formatDateTimeByType(scope.row.createTime, 'yyyy-MM-dd-HH-mm-ss', true).h }}</span>
</p>
</template>
</el-table-column>
<el-table-column min-width="120" align="left" prop="memberName" label="用户">
<template slot-scope="scope">
<a :href="'/member/#/wechatmemberDetail?memberId=' + scope.row.memberId" target="_blank">
<img class="vertical-middle table__avatar--40" :src="scope.row.imageUrl || defaultAvatar" width="60" height="60" />
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">{{ scope.row.memberName || '--' }}</p>
<p class="fz13 gray">{{ scope.row.phoneNumber || '--' }}</p>
</div>
</a>
</template>
</el-table-column>
<el-table-column label="二维码信息" align="left" min-width="150">
<template slot-scope="scope">
<div>门店:{{ scope.row.scanStoreName || '--' }}</div>
<div>导购:{{ scope.row.scanClerkName || '--' }}</div>
</template>
</el-table-column>
<el-table-column label="匹配扫码营销计划" align="left" min-width="140">
<template slot-scope="scope">
<el-button
type="text"
@click="
() => {
if (scope.row.ecmPlanId) {
$router.push({ name: 'scanInfo', query: { new: 1 }, params: { id: scope.row.ecmPlanId, path: '/scan/list' } });
}
}
"
>{{ scope.row.ecmPlanName || '--' }}</el-button
>
</template>
</el-table-column>
</el-table>
<dm-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></dm-pagination>
</section>
</template>
<script>
import { formatDateTimeByType } from '@/utils/index.js';
import { listEcmScanLogPage } from '@/service/api/ecmApi.js';
export default {
name: 'scan-list',
data() {
return {
dateTime: [],
listParams: {
search: '',
currentPage: 1,
pageSize: 20,
beginTime: '',
endTime: ''
},
total: 0,
loading: false,
tableList: []
};
},
created() {
this.getTableList();
this.$store.commit('mutations_breadcrumb', [{ name: '扫码营销', path: '' }, { name: '营销计划', path: '/scan' }, { name: '历史营销计划' }]); // eslint-disable-line
},
methods: {
formatDateTimeByType,
search() {
this.listParams.currentPage = 1;
this.getTableList();
},
handleSizeChange(val) {
this.listParams.pageSize = val;
this.getTableList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.getTableList();
},
async getTableList() {
if (this.dateTime) {
this.listParams.beginTime = formatDateTimeByType(this.dateTime[0], 'yyyy-MM-dd');
this.listParams.endTime = formatDateTimeByType(this.dateTime[1], 'yyyy-MM-dd');
} else {
this.listParams.beginTime = '';
this.listParams.endTime = '';
}
this.loading = true;
try {
let res = await listEcmScanLogPage(this.listParams);
this.tableList = res.result.result || [];
this.total = res.result.totalCount;
this.loading = false;
} catch (error) {
this.loading = false;
}
}
}
};
</script>
......@@ -195,7 +195,7 @@ export default {
.then(res => {
if (res.errorCode === 0) {
this.$router.push('/message/record');
this.$tips({ type: 'success', message: '提交成功' });
this.$tips({ type: 'success', message: res.message || '提交成功' });
} else {
this.$tips({ type: 'error', message: '提交失败' });
}
......
......@@ -107,7 +107,7 @@ export default {
saveImportSmsPlan(params)
.then(res => {
this.loading = false;
this.$message({ message: `新增成功`, type: 'success' });
this.$message({ message: res.message || `新增成功`, type: 'success' });
this.$router.push('/message/import-send');
})
.catch(() => {
......
......@@ -44,6 +44,9 @@
<el-table-column label="操作" align="left" width="120px" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="$router.push(`/message/import-send/info/${scope.row.smsImportPlanId}`)">详情</el-button>
<dm-delete v-if="scope.row.sendStatus == 0" @confirm="invalidData(scope.row)" tips="禁用将关闭该发送计划,是否确认?">
<el-button type="text">禁用</el-button>
</dm-delete>
</template>
</el-table-column>
</el-table>
......@@ -52,7 +55,7 @@
</section>
</template>
<script>
import { pageSmsImportPlan } from '@/service/api/messageApi.js';
import { pageSmsImportPlan, stopSmsImportPlanTimer } from '@/service/api/messageApi.js';
import { formatDateTimeByType } from '@/utils/index.js';
import talbeMethods from '@/mixins/tableMethods.js';
import filterAvater from '@/mixins/filterAvater.js';
......@@ -95,6 +98,16 @@ export default {
timeCounts
},
methods: {
invalidData(row) {
stopSmsImportPlanTimer({ smsImportPlanId: row.smsImportPlanId })
.then(res => {
this.$tips({ type: 'success', message: '禁用成功!' });
this.getTableList();
})
.catch(err => {
this.$tips({ type: 'error', message: '禁用失败!' });
});
},
// 列表状态过滤器
// -1: 已失效; 0:定时执行,1:执行完毕,2:执行失败,3:无可用模板;4.执行中
filterStatus(row) {
......
......@@ -77,6 +77,19 @@ export default {
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '短信营销', path: '' }, { name: '模板库', path: '' }]); // eslint-disable-line
this.LoadLibList();
},
mounted() {
this.$store.commit(
'mutations_layoutTips',
`<div class="layout--tips">
<i class="el-icon-info"></i>
短信模板审核时间一般为半个工作日,具体以运营商审核为准
</div>
`
);
},
beforeDestroy() {
this.$store.commit('mutations_layoutTips', '');
},
methods: {
search() {
this.listParams.currentPage = 1;
......
......@@ -497,7 +497,7 @@ export default {
.then(res => {
this.loading = false;
if (res.errorCode === 0) {
this.$tips({ type: 'success', message: '操作成功' });
this.$tips({ type: 'success', message: res.message || '操作成功' });
setTimeout(_ => {
if (this.imgTextFlag) {
// 图片使用时跳转到图片列表
......
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.
......@@ -6,6 +6,83 @@
"description": "",
"glyphs": [
{
"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": "17682067",
"name": "热区绘制",
"font_class": "requhuizhi",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"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",
......
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