Commit aff4e02a by crushh

update: dist

parents 9cf2bf35 94b3cbe9
<!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></title><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//at.alicdn.com/t/font_688955_2dxzdzrb3a7.css><script src=//at.alicdn.com/t/font_688955_2dxzdzrb3a7.js></script><link rel=stylesheet href=//at.alicdn.com/t/font_3229694_f4zx0uhc8y.css><script src=//at.alicdn.com/t/font_3229694_f4zx0uhc8y.js></script><link src=//at.alicdn.com/t/font_2859043_udehp133w1.css><script src=//at.alicdn.com/t/font_2859043_udehp133w1.js></script><link rel=stylesheet href=//at.alicdn.com/t/font_2996579_dv9vctk5vdt.css><script src=//at.alicdn.com/t/font_2996579_dv9vctk5vdt.js></script><link href=/marketing/static/css/main.5ac4f96b2dd46fa7e1a817e78f9d97a4.css rel=stylesheet></head><body><div id=app><div class=el-loading-spinner style="width: 98%;"><svg viewBox="25 25 50 50" class=circular><circle cx=50 cy=50 r=20 fill=none class=path></circle></svg></div></div><script>(function() {
<!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></title><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//at.alicdn.com/t/font_688955_2dxzdzrb3a7.css><script src=//at.alicdn.com/t/font_688955_2dxzdzrb3a7.js></script><link rel=stylesheet href=//at.alicdn.com/t/c/font_3229694_yzk6z4765g.css><script src=//at.alicdn.com/t/c/font_3229694_yzk6z4765g.js></script><link src=//at.alicdn.com/t/font_2859043_udehp133w1.css><script src=//at.alicdn.com/t/font_2859043_udehp133w1.js></script><link rel=stylesheet href=//at.alicdn.com/t/font_2996579_dv9vctk5vdt.css><script src=//at.alicdn.com/t/font_2996579_dv9vctk5vdt.js></script><link href=/marketing/static/css/main.c6b614bfeadf72a2e4ee221f969d56df.css rel=stylesheet></head><body><div id=app><div class=el-loading-spinner style="width: 98%;"><svg viewBox="25 25 50 50" class=circular><circle cx=50 cy=50 r=20 fill=none class=path></circle></svg></div></div><script>(function() {
var src = '/component/static/import-component.js?timestrap=' + new Date().getTime();
var host = window.location.host;
host = host.indexOf('localhost') > -1 || host.indexOf('192.168') > -1 ? 'gicdev.demogic.com' : host;
document.write('<script src="//' + host + src + '"><\/script>');
})();</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/upload-file.1.0.10.js></script><script type=text/javascript src=/marketing/static/js/manifest.d9d1f21e9321795c3386.js></script><script type=text/javascript src=/marketing/static/js/vendor.24a60bdab11def7b4f96.js></script><script type=text/javascript src=/marketing/static/js/main.243400d1425a8a4e1e64.js></script></body></html>
\ No newline at end of file
})();</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/upload-file.1.0.10.js></script><script type=text/javascript src=/marketing/static/js/manifest.293606ff590b48e3482f.js></script><script type=text/javascript src=/marketing/static/js/vendor.24a60bdab11def7b4f96.js></script><script type=text/javascript src=/marketing/static/js/main.1b315697e84bf63003fd.js></script></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
!function(e){var a=window.webpackJsonp_marketing;window.webpackJsonp_marketing=function(n,c,o){for(var d,f,i,u=0,b=[];u<n.length;u++)f=n[u],r[f]&&b.push(r[f][0]),r[f]=0;for(d in c)Object.prototype.hasOwnProperty.call(c,d)&&(e[d]=c[d]);for(a&&a(n,c,o);b.length;)b.shift()();if(o)for(u=0;u<o.length;u++)i=t(t.s=o[u]);return i};var n={},r={25:0};function t(a){if(n[a])return n[a].exports;var r=n[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}t.e=function(e){var a=r[e];if(0===a)return new Promise(function(e){e()});if(a)return a[2];var n=new Promise(function(n,t){a=r[e]=[n,t]});a[2]=n;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,t.nc&&o.setAttribute("nonce",t.nc),o.src=t.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"ecm",4:"message",5:"ewash",6:"scan",7:"recharge",8:"activity",9:"signIn",10:"evaluation",11:"cdKey",12:"popup",13:"msg",15:"calllog"}[e]||e)+"."+{0:"5a39dd207248cc516e4c",1:"32d83ed88289c143e8d4",2:"cb227d9c20782b65a0ed",3:"e8d623d87ab295317177",4:"92eed00eae04c1c05e52",5:"df35e7d6b79d3ba888ca",6:"96e72dd499e91d09b89b",7:"a9bbd120fabf848f5798",8:"2752eac376825855da07",9:"58971e2fb708dd611c68",10:"909105bb9fb1be817f42",11:"f44b4a5a120f0f2cad59",12:"75479ca225ff682b2c84",13:"a0002da07eb7fe5ded54",14:"b031fe162afae74135c3",15:"ca1b6c405fa4a5375476",16:"5f17ee8d63c094a0bd79",17:"2375e81f689ace2e6da3",18:"24762a36528bc07f1ef6",19:"8647e1716c7d904c83a4",20:"75da9bad4acb0c1baccf",21:"ad98c8e9d3749f2f1097",22:"565b19a2c1b633ae81e9"}[e]+".js";var d=setTimeout(f,12e4);function f(){o.onerror=o.onload=null,clearTimeout(d);var a=r[e];0!==a&&(a&&a[1](new Error("Loading chunk "+e+" failed.")),r[e]=void 0)}return o.onerror=o.onload=f,c.appendChild(o),n},t.m=e,t.c=n,t.d=function(e,a,n){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},t.p="/marketing/",t.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var n=window.webpackJsonp_marketing;window.webpackJsonp_marketing=function(r,c,o){for(var d,f,i,u=0,b=[];u<r.length;u++)f=r[u],t[f]&&b.push(t[f][0]),t[f]=0;for(d in c)Object.prototype.hasOwnProperty.call(c,d)&&(e[d]=c[d]);for(n&&n(r,c,o);b.length;)b.shift()();if(o)for(u=0;u<o.length;u++)i=a(a.s=o[u]);return i};var r={},t={25:0};function a(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,a),t.l=!0,t.exports}a.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,a){n=t[e]=[r,a]});n[2]=r;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,a.nc&&o.setAttribute("nonce",a.nc),o.src=a.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"ecm",4:"message",5:"ewash",6:"scan",7:"recharge",8:"activity",9:"signIn",10:"evaluation",11:"cdKey",12:"popup",13:"msg",15:"calllog"}[e]||e)+"."+{0:"e81e4d925c7450c6db4e",1:"04d115b4e4d5a93474b1",2:"cb227d9c20782b65a0ed",3:"0e2151db6d6052eed865",4:"5f3375e2994fdb0d61b5",5:"df35e7d6b79d3ba888ca",6:"35e6b7b8d16ecc4ddecf",7:"a9bbd120fabf848f5798",8:"2752eac376825855da07",9:"58971e2fb708dd611c68",10:"79163d42473b7301d388",11:"f44b4a5a120f0f2cad59",12:"a4ca4f06f8fee1f54722",13:"e7f1e22e9a5c799c154c",14:"0c5e366d46181e3cae82",15:"410d734e15e42bc183a8",16:"8602e3df04be47306841",17:"65cd5e73f2b994958e66",18:"064dc42154e4d15ceedb",19:"4dfc79b6c05d8c649d15",20:"a73719930016529fa9ae",21:"ad98c8e9d3749f2f1097",22:"565b19a2c1b633ae81e9"}[e]+".js";var d=setTimeout(f,12e4);function f(){o.onerror=o.onload=null,clearTimeout(d);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=f,c.appendChild(o),r},a.m=e,a.c=r,a.d=function(e,n,r){a.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="/marketing/",a.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.
......@@ -8,8 +8,8 @@
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.BASE_URL %>static/css/common.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_688955_2dxzdzrb3a7.css"> <!--GIC后台3.0-->
<script src="//at.alicdn.com/t/font_688955_2dxzdzrb3a7.js"></script> <!--GIC后台3.0-->
<link rel="stylesheet" href="//at.alicdn.com/t/font_3229694_f4zx0uhc8y.css"> <!--GIC3.0营销-->
<script src="//at.alicdn.com/t/font_3229694_f4zx0uhc8y.js"></script> <!--GIC3.0营销-->
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_3229694_yzk6z4765g.css"> <!--GIC3.0营销-->
<script src="//at.alicdn.com/t/c/font_3229694_yzk6z4765g.js"></script> <!--GIC3.0营销-->
<link src="//at.alicdn.com/t/font_2859043_udehp133w1.css"><!--3.0组件库-->
<script src="//at.alicdn.com/t/font_2859043_udehp133w1.js"></script><!--3.0组件库-->
<link rel="stylesheet" href="//at.alicdn.com/t/font_2996579_dv9vctk5vdt.css"> <!-- 3.0企业 -->
......
@font-face {
@font-face {
font-family: "iconfont-components3"; /* Project id 2859043 */
src: url('iconfont.woff2?t=1659408855687') format('woff2'),
url('iconfont.woff?t=1659408855687') format('woff'),
url('iconfont.ttf?t=1659408855687') format('truetype');
}
.iconfont-components3 {
font-family: "iconfont-components3" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-cp-check1:before {
content: "\e646";
}
.icon-cp-close1:before {
content: "\e62a";
}
.icon-cp-toBottom-fill:before {
content: "\e615";
}
.icon-cp-shurumima-anma:before {
content: "\ec6c";
}
.icon-cp-shurumima-mingma:before {
content: "\ec6d";
}
.icon-cp-no-permission:before {
content: "\ec9c";
}
.icon-cp-tuozhuaipaixu:before {
content: "\ec9a";
}
.icon-cp-more:before {
content: "\ec97";
}
.icon-cp-xiajiantou:before {
content: "\e9e9";
}
.icon-cp-shangjiantou:before {
content: "\ea62";
}
.icon-cp-zanwuhuashu:before {
content: "\ec6e";
}
.icon-cp-reload-outlined:before {
content: "\e61a";
}
.icon-cp-no-data:before {
content: "\ec64";
}
.icon-cp-peizhiweikong:before {
content: "\ec56";
}
.icon-cp-Excleweishangchuan:before {
content: "\e675";
}
.icon-cp-excel:before {
content: "\e614";
}
.icon-cp-xitong:before {
content: "\ec54";
}
.icon-cp-CaretLeftOutlined:before {
content: "\e658";
}
.icon-cp-CaretRightOutlined:before {
content: "\e991";
}
.icon-cp-fuwu:before {
content: "\ec3a";
}
.icon-cp-peizhi:before {
content: "\ec39";
}
.icon-cp-shangcheng:before {
content: "\ec38";
}
.icon-cp-shuju:before {
content: "\ec37";
}
.icon-cp-jifen:before {
content: "\ec36";
}
.icon-cp-shangpin:before {
content: "\ec32";
}
.icon-cp-qiye:before {
content: "\ec31";
}
.icon-cp-yingxiao:before {
content: "\ec30";
}
.icon-cp-kehu:before {
content: "\ec2b";
}
.icon-cp-CaretUpOutlined:before {
content: "\e655";
}
.icon-cp-CaretDownOutlined:before {
content: "\e654";
}
.icon-cp-shouye:before {
content: "\ec23";
}
.icon-cp-SwapOutlined:before {
content: "\e672";
}
.icon-cp-BellOutlined:before {
content: "\e673";
}
.icon-cp-QuestionCircleOutlined:before {
content: "\e65c";
}
.icon-cp-error_403:before {
content: "\ebd0";
}
.icon-cp-xianliu:before {
content: "\ebcf";
}
.icon-cp-zoom-in-outlined:before {
content: "\e652";
}
.icon-cp-DeleteOutlined:before {
content: "\e612";
}
.icon-cp-edit-outlined:before {
content: "\e623";
}
.icon-cp-PlusOutlined:before {
content: "\e61d";
}
.icon-cp-PlusCircleOutlined:before {
content: "\e666";
}
.icon-cp-check-circle-fill:before {
content: "\e844";
}
.icon-cp-close-circle-fill:before {
content: "\e845";
}
.icon-cp-warning-circle-fill:before {
content: "\e848";
}
.icon-cp-setting:before {
content: "\e62e";
}
.icon-cp-file-text:before {
content: "\e7b9";
}
.icon-cp-time-circle:before {
content: "\e999";
}
.icon-cp-calendar:before {
content: "\e7d3";
}
.icon-cp-close:before {
content: "\e992";
}
.icon-cp-star:before {
content: "\e8e4";
}
.icon-cp-close-circle:before {
content: "\e77d";
}
.icon-cp-up:before {
content: "\eb1e";
}
.icon-cp-xiazai:before {
content: "\eb83";
}
.icon-cp-shangc:before {
content: "\e62d";
}
.icon-cp-search:before {
content: "\e993";
}
.icon-cp-check:before {
content: "\e7fc";
}
.icon-cp-left:before {
content: "\eb1b";
}
.icon-cp-down:before {
content: "\eb1c";
}
.icon-cp-right:before {
content: "\eb1d";
}
.icon-cp-error_404:before {
content: "\ebce";
}
.icon-cp-error_500:before {
content: "\ebcd";
}
.icon-cp-user-default:before {
content: "\ebcc";
}
.icon-cp-pic-error:before {
content: "\ebcb";
}
.icon-cp-no-access:before {
content: "\ebc9";
}
.icon-cp-loading-error:before {
content: "\ebc8";
}
.icon-cp-goods-default:before {
content: "\ebc7";
}
.icon-cp-gift-default:before {
content: "\ebc6";
}
This source diff could not be displayed because it is too large. You can view the blob instead.
/* Logo 字体 */
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
@font-face {
@font-face {
font-family: "iconfont"; /* Project id 688955 */
src: url('iconfont.woff2?t=1637225676006') format('woff2'),
url('iconfont.woff?t=1637225676006') format('woff'),
url('iconfont.ttf?t=1637225676006') format('truetype');
src: url('iconfont.woff2?t=1659408885671') format('woff2'),
url('iconfont.woff?t=1659408885671') format('woff'),
url('iconfont.ttf?t=1659408885671') format('truetype');
}
.iconfont {
......@@ -13,20 +13,152 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-a-1_heimingdanguanli:before {
content: "\e68d";
.icon-bianji6:before {
content: "\ec81";
}
.icon-weixinquguan:before {
content: "\e68c";
.icon-delete:before {
content: "\ec82";
}
.icon-jifen1:before {
.icon-more:before {
content: "\ec97";
}
.icon-shengji:before {
content: "\eca9";
}
.icon-gengduo2:before {
content: "\e6aa";
}
.icon-shangc:before {
content: "\e6ac";
}
.icon-xiazai:before {
content: "\eb83";
}
.icon-PlusOutlined:before {
content: "\e6a9";
}
.icon-peizhiweikong:before {
content: "\ec56";
}
.icon-arrow-right1:before {
content: "\e808";
}
.icon-yuanyin:before {
content: "\e6a7";
}
.icon-jifenguanli:before {
content: "\e6a8";
}
.icon-jiaoseliebiao:before {
content: "\e6a1";
}
.icon-yonghuliebiao1:before {
content: "\e6a0";
}
.icon-tingyezhengdun:before {
content: "\e69f";
}
.icon-yishangxian:before {
content: "\e689";
}
.icon-yingxiao:before {
content: "\e765";
.icon-weishangxian:before {
content: "\e69d";
}
.icon-daishangxian:before {
content: "\e69e";
}
.icon-huodongliebiao:before {
content: "\e698";
}
.icon-huodongtongji:before {
content: "\e699";
}
.icon-yongjinguanli:before {
content: "\e69c";
}
.icon-error_403:before {
content: "\ebd0";
}
.icon-no-access:before {
content: "\ebc9";
}
.icon-jifenjiabei:before {
content: "\e696";
}
.icon-jifenduihuan:before {
content: "\e697";
}
.icon-xiangqing1:before {
content: "\e695";
}
.icon-qiwei:before {
content: "\e694";
}
.icon-waibu:before {
content: "\e673";
}
.icon-search:before {
content: "\e672";
}
.icon-renwuwancheng:before {
content: "\ec13";
}
.icon-QuestionCircleOutlined:before {
content: "\e693";
}
.icon-tonghuajilu1:before {
content: "\e68f";
}
.icon-yingxiaojilu:before {
content: "\e691";
}
.icon-a-weimeng2:before {
content: "\eba7";
}
.icon-zhangdan:before {
content: "\e74b";
}
.icon-a-1_heimingdanguanli:before {
content: "\e68d";
}
.icon-weixinquguan:before {
content: "\e68c";
}
.icon-shouqi1:before {
......@@ -45,10 +177,6 @@
content: "\e684";
}
.icon-weimeng:before {
content: "\e6e4";
}
.icon-weixin1:before {
content: "\e685";
}
......@@ -113,18 +241,14 @@
content: "\e677";
}
.icon-SwapOutlined:before {
content: "\e672";
}
.icon-BellOutlined:before {
content: "\e673";
}
.icon-chakanxiangqing:before {
content: "\e892";
}
.icon-chakanxiangqing-copy:before {
content: "\eba8";
}
.icon-jiaocheng:before {
content: "\e6f8";
}
......@@ -625,22 +749,6 @@
content: "\e791";
}
.icon-guijijiansuo:before {
content: "\e78c";
}
.icon-xiaofei2:before {
content: "\e78d";
}
.icon-jibenxinxi:before {
content: "\e78e";
}
.icon-yingxiaohuodongguanli:before {
content: "\e78f";
}
.icon-fengefu:before {
content: "\e61f";
}
......@@ -757,18 +865,10 @@
content: "\ea17";
}
.icon-shuangxianghujiao:before {
content: "\e617";
}
.icon-yuyinxiaoxi:before {
content: "\e65d";
}
.icon-duanxin:before {
content: "\e61d";
}
.icon-shoujiyanzhengma:before {
content: "\e619";
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
{
......@@ -6,6 +6,251 @@
"description": "",
"glyphs": [
{
"icon_id": "28506829",
"name": "编辑",
"font_class": "bianji6",
"unicode": "ec81",
"unicode_decimal": 60545
},
{
"icon_id": "28506833",
"name": "删除",
"font_class": "delete",
"unicode": "ec82",
"unicode_decimal": 60546
},
{
"icon_id": "28687110",
"name": "more",
"font_class": "more",
"unicode": "ec97",
"unicode_decimal": 60567
},
{
"icon_id": "30105703",
"name": "升级",
"font_class": "shengji",
"unicode": "eca9",
"unicode_decimal": 60585
},
{
"icon_id": "11939784",
"name": "更多",
"font_class": "gengduo2",
"unicode": "e6aa",
"unicode_decimal": 59050
},
{
"icon_id": "7501395",
"name": "上传",
"font_class": "shangc",
"unicode": "e6ac",
"unicode_decimal": 59052
},
{
"icon_id": "19954052",
"name": "下载",
"font_class": "xiazai",
"unicode": "eb83",
"unicode_decimal": 60291
},
{
"icon_id": "20415179",
"name": "PlusOutlined",
"font_class": "PlusOutlined",
"unicode": "e6a9",
"unicode_decimal": 59049
},
{
"icon_id": "27876718",
"name": "配置为空",
"font_class": "peizhiweikong",
"unicode": "ec56",
"unicode_decimal": 60502
},
{
"icon_id": "8376401",
"name": "arrow-right",
"font_class": "arrow-right1",
"unicode": "e808",
"unicode_decimal": 59400
},
{
"icon_id": "23919509",
"name": "原因",
"font_class": "yuanyin",
"unicode": "e6a7",
"unicode_decimal": 59047
},
{
"icon_id": "19657697",
"name": "积分管理",
"font_class": "jifenguanli",
"unicode": "e6a8",
"unicode_decimal": 59048
},
{
"icon_id": "26925526",
"name": "角色列表",
"font_class": "jiaoseliebiao",
"unicode": "e6a1",
"unicode_decimal": 59041
},
{
"icon_id": "10235785",
"name": "用户列表",
"font_class": "yonghuliebiao1",
"unicode": "e6a0",
"unicode_decimal": 59040
},
{
"icon_id": "26804068",
"name": "停业整顿",
"font_class": "tingyezhengdun",
"unicode": "e69f",
"unicode_decimal": 59039
},
{
"icon_id": "26803980",
"name": "已上线",
"font_class": "yishangxian",
"unicode": "e689",
"unicode_decimal": 59017
},
{
"icon_id": "26803981",
"name": "未上线",
"font_class": "weishangxian",
"unicode": "e69d",
"unicode_decimal": 59037
},
{
"icon_id": "26803982",
"name": "待上线",
"font_class": "daishangxian",
"unicode": "e69e",
"unicode_decimal": 59038
},
{
"icon_id": "26701965",
"name": "活动列表",
"font_class": "huodongliebiao",
"unicode": "e698",
"unicode_decimal": 59032
},
{
"icon_id": "26701968",
"name": "活动统计",
"font_class": "huodongtongji",
"unicode": "e699",
"unicode_decimal": 59033
},
{
"icon_id": "26701969",
"name": "佣金管理",
"font_class": "yongjinguanli",
"unicode": "e69c",
"unicode_decimal": 59036
},
{
"icon_id": "24937766",
"name": "error_403",
"font_class": "error_403",
"unicode": "ebd0",
"unicode_decimal": 60368
},
{
"icon_id": "24838389",
"name": "no-access",
"font_class": "no-access",
"unicode": "ebc9",
"unicode_decimal": 60361
},
{
"icon_id": "20657659",
"name": "积分加倍",
"font_class": "jifenjiabei",
"unicode": "e696",
"unicode_decimal": 59030
},
{
"icon_id": "20657666",
"name": "积分兑换",
"font_class": "jifenduihuan",
"unicode": "e697",
"unicode_decimal": 59031
},
{
"icon_id": "966293",
"name": "详情",
"font_class": "xiangqing1",
"unicode": "e695",
"unicode_decimal": 59029
},
{
"icon_id": "26390250",
"name": "企微",
"font_class": "qiwei",
"unicode": "e694",
"unicode_decimal": 59028
},
{
"icon_id": "26389942",
"name": "外部",
"font_class": "waibu",
"unicode": "e673",
"unicode_decimal": 58995
},
{
"icon_id": "462796",
"name": "search",
"font_class": "search",
"unicode": "e672",
"unicode_decimal": 58994
},
{
"icon_id": "26304073",
"name": "任务完成",
"font_class": "renwuwancheng",
"unicode": "ec13",
"unicode_decimal": 60435
},
{
"icon_id": "20893446",
"name": "QuestionCircleOutlined",
"font_class": "QuestionCircleOutlined",
"unicode": "e693",
"unicode_decimal": 59027
},
{
"icon_id": "25982878",
"name": "通话记录",
"font_class": "tonghuajilu1",
"unicode": "e68f",
"unicode_decimal": 59023
},
{
"icon_id": "25982879",
"name": "营销记录",
"font_class": "yingxiaojilu",
"unicode": "e691",
"unicode_decimal": 59025
},
{
"icon_id": "23690641",
"name": "微盟 (2)",
"font_class": "a-weimeng2",
"unicode": "eba7",
"unicode_decimal": 60327
},
{
"icon_id": "17102423",
"name": "账单",
"font_class": "zhangdan",
"unicode": "e74b",
"unicode_decimal": 59211
},
{
"icon_id": "22465139",
"name": "1_黑名单管理",
"font_class": "a-1_heimingdanguanli",
......@@ -20,20 +265,6 @@
"unicode_decimal": 59020
},
{
"icon_id": "25698898",
"name": "积分",
"font_class": "jifen1",
"unicode": "e689",
"unicode_decimal": 59017
},
{
"icon_id": "5880283",
"name": "营销",
"font_class": "yingxiao",
"unicode": "e765",
"unicode_decimal": 59237
},
{
"icon_id": "672034",
"name": "收起",
"font_class": "shouqi1",
......@@ -62,13 +293,6 @@
"unicode_decimal": 59012
},
{
"icon_id": "7722415",
"name": "微盟",
"font_class": "weimeng",
"unicode": "e6e4",
"unicode_decimal": 59108
},
{
"icon_id": "15933094",
"name": "微信",
"font_class": "weixin1",
......@@ -181,20 +405,6 @@
"unicode_decimal": 58999
},
{
"icon_id": "20893458",
"name": "SwapOutlined",
"font_class": "SwapOutlined",
"unicode": "e672",
"unicode_decimal": 58994
},
{
"icon_id": "22596519",
"name": "BellOutlined",
"font_class": "BellOutlined",
"unicode": "e673",
"unicode_decimal": 58995
},
{
"icon_id": "9002691",
"name": "查看详情",
"font_class": "chakanxiangqing",
......@@ -202,6 +412,13 @@
"unicode_decimal": 59538
},
{
"icon_id": "26072953",
"name": "查看详情",
"font_class": "chakanxiangqing-copy",
"unicode": "eba8",
"unicode_decimal": 60328
},
{
"icon_id": "22607678",
"name": "教程",
"font_class": "jiaocheng",
......@@ -1077,34 +1294,6 @@
"unicode_decimal": 59281
},
{
"icon_id": "6841622",
"name": "轨迹检索",
"font_class": "guijijiansuo",
"unicode": "e78c",
"unicode_decimal": 59276
},
{
"icon_id": "6841623",
"name": "消费",
"font_class": "xiaofei2",
"unicode": "e78d",
"unicode_decimal": 59277
},
{
"icon_id": "6841624",
"name": "基本信息",
"font_class": "jibenxinxi",
"unicode": "e78e",
"unicode_decimal": 59278
},
{
"icon_id": "6841625",
"name": "营销活动管理",
"font_class": "yingxiaohuodongguanli",
"unicode": "e78f",
"unicode_decimal": 59279
},
{
"icon_id": "3934054",
"name": "分隔符",
"font_class": "fengefu",
......@@ -1308,13 +1497,6 @@
"unicode_decimal": 59927
},
{
"icon_id": "327811",
"name": "双向呼叫",
"font_class": "shuangxianghujiao",
"unicode": "e617",
"unicode_decimal": 58903
},
{
"icon_id": "707983",
"name": "语音消息",
"font_class": "yuyinxiaoxi",
......@@ -1322,13 +1504,6 @@
"unicode_decimal": 58973
},
{
"icon_id": "1510339",
"name": "短信",
"font_class": "duanxin",
"unicode": "e61d",
"unicode_decimal": 58909
},
{
"icon_id": "2741961",
"name": "手机验证码",
"font_class": "shoujiyanzhengma",
......
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.
/* Logo 字体 */
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
@font-face {
@font-face {
font-family: "iconfont"; /* Project id 3380872 */
src: url('iconfont.woff2?t=1659408931949') format('woff2'),
url('iconfont.woff?t=1659408931949') format('woff'),
url('iconfont.ttf?t=1659408931949') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-wenbenmsg:before {
content: "\e790";
}
.icon-anquanbaozhang:before {
content: "\e694";
}
.icon-renwuwancheng:before {
content: "\ec13";
}
.icon-duanxinyzm:before {
content: "\e777";
}
.icon-shuangxianghujiao1:before {
content: "\ec14";
}
.icon-warning-circle-fill:before {
content: "\e848";
}
.icon-check:before {
content: "\e7fc";
}
.icon-user-default:before {
content: "\ebcc";
}
.icon-AIdianhua:before {
content: "\ec78";
}
.icon-xitongtongzhi:before {
content: "\e6a7";
}
.icon-shengrizunxiang:before {
content: "\ec7b";
}
.icon-Plus:before {
content: "\ec7e";
}
.icon-edit:before {
content: "\ec7f";
}
.icon-Delete:before {
content: "\ec80";
}
.icon-zanwuhuashu:before {
content: "\ec6e";
}
.icon-lianjie:before {
content: "\e620";
}
.icon-kaiqi:before {
content: "\eca6";
}
.icon-zanting:before {
content: "\eca7";
}
.icon-yinfu:before {
content: "\e626";
}
.icon-xingzhuangjiehe2x:before {
content: "\e6cf";
}
.icon-yaoqing:before {
content: "\eca4";
}
.icon-kaika:before {
content: "\ecab";
}
.icon-chakanxiangqing-copy:before {
content: "\eba8";
}
.icon-kehufugouguanli:before {
content: "\e731";
}
.icon-huodongyaoyue:before {
content: "\ec6f";
}
.icon-qiweihaoyou:before {
content: "\ec70";
}
.icon-qitachangjing:before {
content: "\ec7a";
}
.icon-biaoqian:before {
content: "\e70a";
}
.icon-dengji-:before {
content: "\e6a3";
}
.icon-dengji-1:before {
content: "\e6a4";
}
.icon-dengji-2:before {
content: "\e6a2";
}
.icon-dengji-3:before {
content: "\e6a5";
}
.icon-dengji-4:before {
content: "\e6a6";
}
.icon-arrow-right1:before {
content: "\e808";
}
.icon-dengji-5:before {
content: "\e67a";
}
.icon-dengji-6:before {
content: "\e67b";
}
.icon-dengji-7:before {
content: "\e67c";
}
.icon-dengji-8:before {
content: "\e67d";
}
.icon-dengji-9:before {
content: "\e67e";
}
.icon-PlusOutlined:before {
content: "\e6a9";
}
.icon-reload-outlined:before {
content: "\e6aa";
}
.icon-peizhiweikong:before {
content: "\ec56";
}
.icon-jibenxinxi:before {
content: "\ec5a";
}
.icon-xiaofeihuodong:before {
content: "\ec5b";
}
.icon-yingxiaohuodong:before {
content: "\ec5c";
}
.icon-yonghuguiji:before {
content: "\ec5d";
}
.icon-daogoubiaoqian:before {
content: "\ec5e";
}
.icon-qitabiaoqian:before {
content: "\ec5f";
}
.icon-weimengbiaoqian:before {
content: "\ec60";
}
.icon-changyongbiaoqian:before {
content: "\ec61";
}
.icon-qudaobiaoqian:before {
content: "\ec62";
}
.icon-kehufenzu:before {
content: "\ec67";
}
.icon-jinzitakehu:before {
content: "\ec68";
}
.icon-yingxiaohuodongbiaoqian:before {
content: "\ec75";
}
.icon-bianji6:before {
content: "\ec81";
}
.icon-delete:before {
content: "\ec82";
}
.icon-more:before {
content: "\ec97";
}
.icon-gengduo:before {
content: "\ec98";
}
.icon-tuozhuaipaixu:before {
content: "\ec9a";
}
.icon-fuzhi:before {
content: "\ec9b";
}
.icon-wodejifen:before {
content: "\eca8";
}
.icon-shangsheng:before {
content: "\ec9d";
}
.icon-xiajiang:before {
content: "\ec9e";
}
.icon-mendian-data:before {
content: "\eca0";
}
.icon-laodian:before {
content: "\eca1";
}
.icon-xindian:before {
content: "\eca2";
}
.icon-yichang:before {
content: "\eca3";
}
.icon-zhibiaoshuoming:before {
content: "\eb57";
}
.icon-shangc:before {
content: "\e6ac";
}
.icon-xiazai:before {
content: "\eb83";
}
.icon-QuestionCircleOutlined:before {
content: "\e693";
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -248,4 +248,23 @@
/*tooltip宽度*/
.el-tooltip__popper {
max-width: 400px !important;
}
.dialog-wrap {
display: flex;
align-items: center;
justify-content: center;
}
.custom-class-dialog {
margin: 0 !important;
padding: 0 4px 4px;
max-height: 700px;
.el-dialog__header {
display: none;
}
.el-dialog__body {
padding-bottom: 0 !important;
}
.el-dialog__footer {
padding: 20px 0;
}
}
\ No newline at end of file
......@@ -17,7 +17,7 @@
<span class="groupName"> {{ item.groupName }}</span>
</div>
</div>
<el-dialog title="选择客户分组" :visible.sync="visiable" width="1000px" :before-close="close" custom-class="member-group-dialog" class="member-group-dialog-wrap">
<el-dialog title="选择客户分组" :visible.sync="visiable" width="1000px" :before-close="close" custom-class="custom-class-dialog" class="dialog-wrap">
<div class="member-group">
<div class="left">
<el-tabs v-model="activeName">
......@@ -252,25 +252,6 @@ export default {
</script>
<style lang="scss" scoped>
.member-group-dialog-wrap {
display: flex;
align-items: center;
justify-content: center;
}
.member-group-dialog {
margin: 0 !important;
padding: 0 4px 4px;
max-height: 700px;
.el-dialog__header {
display: none;
}
.el-dialog__body {
padding-bottom: 0 !important;
}
.el-dialog__footer {
padding: 20px 0;
}
}
.delBtn {
color: #f5222d;
}
......
......@@ -21,19 +21,25 @@
{{scope.row.activityStatus === 0 ? '未开始' : '已结束'}}
</div>
</template>
<template v-else-if="'status' in scope.row">
<div v-if="scope.row.status === 1"><span class="dm-status--primary--flash"></span>进行中</div>
<div v-else :class="scope.row.status === 0 ? 'dm-status--warning' : 'dm-status--info'">
{{ scope.row.status === 0 ? '未开始' : '已结束' }}
</div>
</template>
</template>
</el-table-column>
<el-table-column label="开始时间">
<div slot-scope="scope" style="line-height: normal">
<p>{{ formatDateTimeByType(scope.row.gameStartTime, 'yyyy-MM-dd-HH-mm-ss', true).y }}</p>
<p>{{ formatDateTimeByType(scope.row.gameStartTime, 'yyyy-MM-dd-HH-mm-ss', true).h }}</p>
</div>
<template slot-scope="{ row }">
<p>{{ formatDateTimeByType(row.gameStartTime || row.startDate, 'yyyy-MM-dd') }}</p>
<p>{{ formatDateTimeByType(row.gameStartTime || row.startDate, 'HH:mm:ss') }}</p>
</template>
</el-table-column>
<el-table-column label="结束时间">
<div slot-scope="scope" style="line-height: normal">
<p>{{ formatDateTimeByType(scope.row.gameEndTime, 'yyyy-MM-dd-HH-mm-ss', true).y }}</p>
<p>{{ formatDateTimeByType(scope.row.gameEndTime, 'yyyy-MM-dd-HH-mm-ss', true).h }}</p>
</div>
<template slot-scope="{ row }">
<p>{{ formatDateTimeByType(row.gameEndTime || row.endDate, 'yyyy-MM-dd') }}</p>
<p>{{ formatDateTimeByType(row.gameEndTime || row.endDate, 'HH:mm:ss') }}</p>
</template>
</el-table-column>
</el-table>
<el-pagination
......@@ -102,17 +108,20 @@
getList(gameType) {
const setResponse = (res, type) => {
//type 0 大转盘/刮刮卡 ----- 1 其他游戏
const { errorCode, message, result } = res.data || {}
if (errorCode != 0) {
const { errorCode, message, result , code} = res.data || {}
if (errorCode != 0&& code != 0) {
return this.$message.error(message)
} else {
if (type === 0) {
this.list = result.page.result || [];
this.total = result.page.totalCount || 0;
} else {
this.list = (result.result || []).map(item => ({...item, gameId: item.gameActivityId}));
this.total = result.totalCount || 0;
}
}else if (type === 1) {
this.list = (result.result || []).map(item => ({ ...item, gameId: item.gameActivityId }));
this.total = result.totalCount || 0;
} else if (type === 2) {
this.list = result.list || [];
this.total = result.total || 0;
}
}
}
switch(gameType) {
......@@ -141,6 +150,17 @@
setResponse(res, 1);
})
break;
case 'GAME_LINK_XYMH':
const para = {
gameName: this.query.searchParam,
pageNum: this.query.currentPage,
pageSize: 6,
status: 1
};
this.axios.post(`/api-marketing/game-pro/page?requestProject=marketing`, para).then(res => {
setResponse(res, 2);
});
break;
}
}
},
......
......@@ -1875,12 +1875,25 @@ export default {
const selectedGame = this.$refs.gameList.seletedItem
this.selectLinkObj.gameId = selectedGame.gameId;
this.selectLinkObj.name = selectedGame.gameName;
let url = selectedGame.gameUrl
// const reg = /(?<=(redirect_uri=)).+(?=(&response_type=))/
if(this.selectLinkObj.threeLevelValue=="GAME_LINK_XYMH"){
this.axios.get(`/api-marketing/game-pro/get-qr-game?requestProject=gic-web&id=${selectedGame.gameId}`).then(res=>{
if(res.data.code==0){
const {result} = res.data;
this.selectLinkObj.url = result.link
this.transData()
}else{
this.$message.error(res.data.message)
}
})
}else if( selectedGame.gameUrl){
let url = selectedGame.gameUrl
const index1 = url.indexOf('redirect_uri=')
const index2 = url.indexOf('&response_type=')
this.selectLinkObj.url = decodeURIComponent(url.slice(index1 + ('redirect_uri=').length, index2))
this.transData()
this.transData()
}
} else if(this.gameProps.gameId) {
this.selectLinkObj.gameId = this.linkData.gameId;
this.selectLinkObj.name = this.linkData.name;
......
......@@ -107,6 +107,8 @@ export default {
}
}
};
console.log(this.gameType);
console.log(this.gameId);
switch (gameType) {
case 'GAME_LINK_DZP':
this.axios.post(`/api-marketing/page-lottery-game`, qs.stringify({ ...this.query, gameType: 1 })).then(res => {
......@@ -133,6 +135,16 @@ export default {
setResponse(res, 1);
});
break;
case 'GAME_LINK_XYMH':
const para = { ...this.query };
para.status = 1;
console.log(para);
// delete para.gameStatus
this.axios.post(`/api-marketing/game-pro/page`, qs.stringify(para)).then(res => {
console.log(res);
setResponse(res, 1);
});
break;
}
}
},
......@@ -141,6 +153,7 @@ export default {
handler() {
this.query.currentPage = 1;
this.query.searchParam = '';
console.log(this.query);
this.getList(this.gameType);
},
immediate: true
......
......@@ -145,7 +145,7 @@ import qs from 'qs';
import { formatDateTimeByType } from '@/utils/index.js';
import GameList from '../game-list.vue';
import GameList from './game-list.vue';
import { generateMiniProgramLink } from '@/service/api/gameApi.js';
......
......@@ -41,7 +41,7 @@
</div>
<span slot="reference">
<a :href="'/member/#/wechatmemberDetail?memberId=' + row.memberId" target="_blank">
<img class="vertical-middle table__avatar--40" :src="filterAvatar(row.imageUrl)" width="40" height="40" alt="" srcset="" />
<img v-if="showImg" class="vertical-middle table__avatar--40" :src="filterAvatar(row.imageUrl)" width="40" height="40" alt="" srcset="" />
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">{{ row.memberName || '--' }}</p>
<p class="table-name--ellipsis fz13">{{ row.cardNum || '--' }}</p>
......@@ -63,6 +63,10 @@ export default {
default() {
return {};
}
},
showImg:{
type:Boolean,
default:true
}
},
data() {
......
......@@ -8,6 +8,7 @@ import directives from './directives';
import limit from '@/utils/limiting';
import scrollToError from '@/assets/common.js';
import '@/utils/sticky.js';
Vue.config.productionTip = false;
if (process.env.NODE_ENV == 'development') { // eslint-disable-line
......
......@@ -21,6 +21,9 @@ export default {
case 4:
str = '客户复购';
break;
case 5:
str = '开卡场景';
break;
case 0:
str = '其它场景';
break;
......
......@@ -123,3 +123,12 @@ export const aiTransformStoreGroupSplit = params => requests('/api-marketing/sta
// 客户明细导出
export const exportAiCustomDetail = '/api-marketing/statistics/export-ai-custom-detail';
// 【Ai活动计划】手动开启活动计划
export const continueActivityPlan = params => requests('/api-marketing/ai/continue-activity-plan', params, true, false, 'get');
// 【Ai活动计划】手动暂停活动计划
export const suspendActivityPlan = params => requests('/api-marketing/ai/suspend-activity-plan', params, true, false, 'get');
// 【Ai活动计划】非会员开卡 - 导入Excel
export const importAiCallPhone = params => requests('/api-marketing/ai/import-ai-call-phone', params, true);
......@@ -50,7 +50,7 @@ export default {
this.filterJson = filterJson;
},
toDetailPage(name) {
this.$router.push(`/ai/ai-data-detail/${this.$route.params.id}?flag=${this.flags.smsFlag}&analyseFlag=${this.flags.analyseFlag}&name=${name}`);
this.$router.push(`/ai/ai-data-detail/${this.$route.params.id}?flag=${this.flags.smsFlag}&analyseFlag=${this.flags.analyseFlag}&name=${name}&scene=${this.$route.query.scene}`);
}
}
};
......
......@@ -28,11 +28,18 @@
触达之日起 {{ activityInfo.analyseDays || '--' }}
</div>
</div>
<div class="member-rule">
<div class="member-rule" v-if="scene != 5">
<div class="member-rule-title">人群规则:</div>
<ruleFilter class="member-rule-list" v-if="activityInfo.memberType == 0" :memberCrowdWidgetId="activityInfo.filterJson" />
<gic-new-member-group class="member-rule-list" v-if="activityInfo.memberType == 1" :selected-ids="activityInfo.filterJson"></gic-new-member-group>
</div>
<div class="member-rule" v-else>
<div class="member-rule-title">人群规则:</div>
<div class="numCount">
号码导入: <span>{{ activityInfo.totalCount && activityInfo.totalCount.toLocaleString() }}</span
>
</div>
</div>
</div>
</template>
......@@ -46,7 +53,8 @@ export default {
components: { ruleFilter },
data() {
return {
activityInfo: {}
activityInfo: {},
scene: ''
};
},
filters: {
......@@ -63,6 +71,7 @@ export default {
},
created() {
this.getActivityInfo();
this.scene = this.$route.query.scene;
},
methods: {
formatDateTimeByType,
......@@ -102,6 +111,7 @@ export default {
}
}
}
.member-rule {
margin-top: 20px;
.member-rule-title {
......@@ -110,6 +120,17 @@ export default {
color: #303133;
line-height: 20px;
}
.numCount {
margin-top: 10px;
width: 100%;
padding: 16px;
line-height: 20px;
background: #f7f8fa;
border-radius: 4px;
span {
font-weight: 500;
}
}
.member-rule-list {
margin-top: 10px;
/deep/ .echo-member-group {
......
......@@ -30,27 +30,28 @@
</el-table>
<div class="chart-box">
<div class="chart-member-count" v-if="funnelData.hasData">
<img :src="scene == 5 ? img2 : img1" class="funnelImg" />
<div class="funnel">
<div class="funnel-item plan-count">
<!-- <div class="funnel-item plan-count">
<p class="item-label">营销人数</p>
<p class="item-value">{{ numFormat(funnelData.marketingNumber) }}</p>
</div>
<div class="funnel-item target-count">
<p class="item-label">触达人数</p>
<p class="item-value">{{ numFormat(funnelData.reachNumber) }}</p>
<div class="item-rate">
<p class="rate-label">触达率</p>
<p class="rate-value">{{ funnelData.reachRate }}</p>
</div> -->
<div class="funnel-item" :style="`height:${item.height}`" v-for="item in transeData" :key="item.prop">
<p class="item-label">{{ item.label }}</p>
<p class="item-value">{{ numFormat(funnelData[item.prop]) }}</p>
<div class="item-rate" v-if="item.rateLable">
<p class="rate-label">{{ item.rateLable }}</p>
<p class="rate-value">{{ funnelData[item.rateProp] }}</p>
</div>
</div>
<div class="funnel-item change-count">
<!-- <div class="funnel-item change-count">
<p class="item-label">转化人数</p>
<p class="item-value">{{ numFormat(funnelData.conversionNumber) }}</p>
<div class="item-rate">
<p class="rate-label">转化率</p>
<p class="rate-value">{{ funnelData.conversionRate }}</p>
</div>
</div>
</div> -->
</div>
</div>
<div v-else class="no-data">
......@@ -72,7 +73,8 @@
import { getPlanStatistics, getMemberCrowd, getComparativeData } from '@/service/api/aiApi.js';
import { numFormat } from '@/utils/index.js';
import TargetGroup from '@/components/target-group.vue';
import img1 from '../../../assets/img/ai-chart.png';
import img2 from '../../../assets/img/ai-chart2.png';
export default {
name: 'Conversion',
props: {
......@@ -88,9 +90,12 @@ export default {
components: { TargetGroup },
data() {
return {
img1,
img2,
numFormat,
activityId: '',
planId: '',
scene: '',
funnelData: {
hasData: false
},
......@@ -149,6 +154,27 @@ export default {
}
]
],
transeData: [
{
prop: 'marketingNumber',
label: '营销人数',
height: '75px'
},
{
prop: 'reachNumber',
label: '触达人数',
height: '68px',
rateLable: '触达率',
rateProp: 'reachRate'
},
{
prop: 'conversionNumber',
label: '转化人数',
height: '69px',
rateLable: '转化率',
rateProp: 'conversionRate'
}
],
comparative: {
loading: false,
originData: [],
......@@ -168,6 +194,18 @@ export default {
created() {
this.activityId = this.$route.params.id;
this.planId = this.$route.query.planId;
this.scene = this.$route.query.scene;
if (this.scene == 5) {
this.transeData[2].height = '56px';
let obj = {
prop: 'openCardNumber',
label: '开卡人数',
height: '69px',
rateLable: '开卡转换率',
rateProp: 'openCardConversionRate'
};
this.transeData.splice(2, 0, obj);
}
this.getPlanStatistics();
this.getMemberCrowd();
},
......@@ -210,7 +248,11 @@ export default {
// 转化人数
conversionNumber: targetData.conversionNumber,
// 转化率
conversionRate: targetData.conversionRate
conversionRate: targetData.conversionRate,
// 开卡人数
openCardNumber: targetData.openCardNumber,
// 开卡转化率
openCardConversionRate: targetData.openCardConversionRate
};
});
},
......@@ -362,13 +404,23 @@ export default {
.chart-member-count {
width: calc(50% - 100px);
margin-right: 100px;
position: relative;
.funnelImg {
width: 300px;
position: absolute;
left: 85px;
top: 17px;
}
.funnel {
margin: 16px auto 0;
width: 300px;
background-image: url('../../../assets/img/ai-chart.png');
background-repeat: no-repeat;
background-position: center;
background-size: 100%;
position: absolute;
left: 85px;
// background-image: url('../../../assets/img/ai-chart.png');
// background-repeat: no-repeat;
// background-position: center;
// background-size: 100%;
.funnel-item {
position: relative;
display: flex;
......
......@@ -29,7 +29,7 @@
<el-descriptions-item label="外呼周期">{{ holidayTimeData.activeTime }}</el-descriptions-item>
</el-descriptions>
</div>
<div class="section" v-if="form.scene == 3 || form.scene == 4 || form.scene == 0">
<div class="section" v-if="form.scene == 3 || form.scene == 4 || form.scene == 0 || form.scene == 5">
<el-descriptions column="4">
<el-descriptions-item label="外呼时段"> {{ activeTimeData.callTime }}</el-descriptions-item>
<el-descriptions-item label="外呼周期">{{ activeTimeData.activeTime }}</el-descriptions-item>
......@@ -37,9 +37,17 @@
</div>
<dm-sub-title type="line">人群规则</dm-sub-title>
<div class="section">
<el-descriptions column="4">
<el-descriptions column="4" v-if="form.scene != 5">
<el-descriptions-item label="参与人群">{{ form.memberType == 0 && !memberCrowdWidgetId ? '全部客户' : '' }} </el-descriptions-item>
<el-descriptions-item label="预计覆盖人数">{{ form.planMemberCount }}</el-descriptions-item>
<el-descriptions-item label="预计覆盖人数">
<span class="numStyle">{{ form.planMemberCount }}</span></el-descriptions-item
>
</el-descriptions>
<el-descriptions column="4" v-else>
<el-descriptions-item label="号码导入">
<span class="numStyle">{{ form.planMemberCount }}</span
></el-descriptions-item
>
</el-descriptions>
<ruleFilter v-show="form.memberType == 0 && memberCrowdWidgetId" :memberCrowdWidgetId="memberCrowdWidgetId" onlyRead style="width:100%" />
<gic-new-member-group v-show="form.memberType == 1" :selectedIds="selectedGroupIds" onlyRead style="width:100%" />
......@@ -247,7 +255,7 @@ export default {
labelFlag, //是否根据客户意向打标签
smsFlag, //是否根据客户意向发送挂机短信
recallFlag, //是否根据未接通状态设置重拨
planMemberCount, //覆盖人数
planMemberCount: planMemberCount.toLocaleString(), //覆盖人数
analyseDays, //分析天数
analyseAmount, //销售额
planId,
......@@ -398,6 +406,12 @@ export default {
.section {
padding: 20px 0 18px 0;
}
.numStyle {
font-size: 14px;
font-weight: 500;
color: #303133;
line-height: 20px;
}
.card {
margin-top: 20px;
&:first-child {
......
......@@ -14,7 +14,7 @@
</div>
<div class="account">
<span>
账户可用余额:<span style="font-size:16px;">{{ (money / 100) | amount }}</span>
账户可用余额:<span style="font-size:16px;">{{ money | amount }}</span>
</span>
<el-button v-if="$getButtonLimit($buttonCode.marketingAiRecharge)" :limit-code="$buttonCode.marketingAiRecharge" type="text" @click="recharge">立即充值</el-button>
</div>
......@@ -90,7 +90,7 @@
</template>
<script>
import { page, rechargeCenter, stopActivityPlan, startActivityPlan, pageStatistics, aiAccountCheck } from '@/service/api/aiApi.js';
import { page, rechargeCenter, stopActivityPlan, startActivityPlan, pageStatistics, aiAccountCheck, getAiCalcSingle, continueActivityPlan, suspendActivityPlan } from '@/service/api/aiApi.js';
import { formatDateTimeByType } from '@/utils/index.js';
import filterAvater from '@/mixins/filterAvater.js';
......@@ -128,6 +128,13 @@ export default {
handler: row => this.$router.push('/ai/info/' + row.activityId)
},
{
text: '暂停',
visible: row => {
return row.activityPlanStatus == 2;
},
handler: row => this.handleSuspend(row)
},
{
text: '编辑',
props: {
limitCode: this.$buttonCode.marketingAiEdit
......@@ -153,7 +160,7 @@ export default {
limitCode: this.$buttonCode.marketingAiStart
},
visible: row => {
return row.activityPlanStatus === 5 && this.$getButtonLimit(this.$buttonCode.marketingAiStart);
return (row.activityPlanStatus === 5 || row.activityPlanStatus === 6) && this.$getButtonLimit(this.$buttonCode.marketingAiStart);
},
handler: row => this.rebootTask(row)
},
......@@ -199,7 +206,8 @@ export default {
this.$router.push({
path: '/ai/ai-data-report/' + row.activityId,
query: {
planId: row.planId
planId: row.planId,
scene: row.scene
}
});
}
......@@ -235,6 +243,12 @@ export default {
scene: 0,
iconName: 'icon-qitachangjing',
content: '自定义营销场景'
},
{
title: '开卡场景',
scene: 5,
iconName: 'icon-kaika',
content: '针对非会员营销,提升开卡率'
}
],
optionScenes: [
......@@ -257,6 +271,10 @@ export default {
{
value: 0,
label: '其它场景'
},
{
value: 5,
label: '开卡场景'
}
],
optionActive: [
......@@ -279,6 +297,10 @@ export default {
{
value: 5,
label: '欠费暂停'
},
{
value: 6,
label: '手动暂停'
}
],
money: 0,
......@@ -288,8 +310,10 @@ export default {
2: 'dm-status--primary--flash',
3: 'dm-status--error',
4: 'dm-status--info',
5: 'dm-status--warning'
}
5: 'dm-status--warning',
6: 'dm-status--warning'
},
isWhite: false
};
},
created() {
......@@ -301,6 +325,7 @@ export default {
this.getTableData();
this.getRechargeCenter();
this.getAiAccountCheck();
this.getAiCalcSingle();
},
activated() {
if (this.$route.meta.refresh) {
......@@ -349,6 +374,9 @@ export default {
case 5:
str = '欠费暂停';
break;
case 6:
str = '手动暂停';
break;
}
return str;
},
......@@ -373,6 +401,12 @@ export default {
}
},
methods: {
async getAiCalcSingle() {
const { result } = await getAiCalcSingle();
if (!result) return;
this.isWhite = result.white;
},
create(scene, id) {
if (!this.canCreate) {
this.$confirm(`当前账户已无可用余额,请充值后再${id ? '复制' : '创建'}外呼任务`, '提示', {
......@@ -393,7 +427,7 @@ export default {
// 获取余额
async getRechargeCenter() {
const { result } = await rechargeCenter();
this.money = result.account.balance;
this.money = (result.account.balance || 0) / 100;
},
search() {
this.form.pageNum = 1;
......@@ -470,15 +504,15 @@ export default {
});
});
},
rebootTask(row) {
this.$confirm('重新开启任务后,将会对未外呼的客户进行外呼,是否确定重新开启营销活动?', '提示', {
confirmButtonText: '确定',
cancelBUttonText: '取消',
handleSuspend({ planId }) {
this.$confirm('任务正在进行中,暂停任务后,计划将暂停', '提示', {
confirmButtonText: '暂停',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
}).then(_ => {
this.loading = true;
startActivityPlan({ planId: row.planId })
.then(res => {
suspendActivityPlan({ planId })
.then(_ => {
this.$message.success('操作成功');
this.getTableData();
})
......@@ -487,6 +521,67 @@ export default {
});
});
},
rebootTask(row) {
if (row.activityPlanStatus === 5) {
this.$confirm('重新开启任务后,将会对未外呼的客户进行外呼,是否确定重新开启营销活动?', '提示', {
confirmButtonText: '确定',
cancelBUttonText: '取消',
type: 'warning'
}).then(() => {
this.loading = true;
startActivityPlan({ planId: row.planId })
.then(res => {
this.$message.success('操作成功');
this.getTableData();
})
.finally(_ => {
this.loading = false;
});
});
} else if (row.activityPlanStatus === 6) {
if (this.money > row.fee || this.isWhite) {
this.$confirm(`本次外呼预计营销人数${row.peopleCount}人,费用预计需要消费${row.fee.toLocaleString()}元,是否继续启动?`, '提示', {
confirmButtonText: '启动',
cancelButtonText: '取消',
type: 'warning'
}).then(res => {
this.loading = true;
continueActivityPlan({ planId: row.planId })
.then(res => {
this.$message.success('操作成功');
this.getTableData();
})
.finally(_ => {
this.loading = false;
});
});
} else if (this.money <= 0) {
this.$confirm(`本次外呼预计营销人数${row.peopleCount}人,费用预计需要消费${row.fee.toLocaleString()}元,当前余额不足,请充值。`, '提示', {
confirmButtonText: '充值',
cancelButtonText: '取消',
type: 'warning'
}).then(_ => {
this.recharge();
});
} else {
this.$confirm(`本次外呼预计营销人数${row.peopleCount}人,费用预计需要消费${row.fee.toLocaleString()}元,是否继续启动?`, '提示', {
confirmButtonText: '启动',
cancelButtonText: '取消',
type: 'warning'
}).then(_ => {
this.loading = true;
continueActivityPlan({ planId: row.planId })
.then(res => {
this.$message.success('操作成功');
this.getTableData();
})
.finally(_ => {
this.loading = false;
});
});
}
}
},
editPlan(row) {
this.$router.push('/ai/edit/' + row.activityId);
}
......@@ -499,17 +594,15 @@ export default {
margin: 0 20px;
.cardList {
display: flex;
flex-wrap: wrap;
gap: 12px;
.card {
width: 20%;
min-width: 224px;
height: 140px;
background: #f0f3fd;
border-radius: 4px;
padding: 12px 16px;
box-sizing: border-box;
margin-right: 12px;
&:last-child {
margin-right: 0;
}
}
.cardTitle {
i {
......@@ -529,6 +622,7 @@ export default {
font-size: 14px;
line-height: 20px;
height: 40px;
width: 192px;
color: #606266;
}
}
......
......@@ -76,7 +76,7 @@
<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>
<component v-else-if="v.component" :is="v.component" :row="scope.row"></component>
<component v-else-if="v.component" :is="v.component" :row="scope.row" :showImg="v.showImg"></component>
<span v-else>{{ scope.row[v.prop] || '--' }}</span>
</template>
</el-table-column>
......@@ -167,7 +167,7 @@ export default {
return row.title || '--';
}
},
{ label: '会员信息', prop: 'marketingType', minWidth: '120', align: 'left', component: 'member-info' },
{ label: '会员信息', prop: 'marketingType', minWidth: '120', align: 'left', component: 'member-info', showImg: 0 },
{ label: '手机号码', prop: 'phoneNumber', minWidth: '120', align: 'left' },
{ label: '主门店', prop: 'mainStoreName', minWidth: '120', align: 'left' },
{ label: '专属导购', prop: 'mainClerkName', minWidth: '120', align: 'left' },
......
......@@ -21,18 +21,24 @@
{{ scope.row.activityStatus === 0 ? '未开始' : '已结束' }}
</div>
</template>
<template v-else-if="'status' in scope.row">
<div v-if="scope.row.status === 1"><span class="dm-status--primary--flash"></span>进行中</div>
<div v-else :class="scope.row.status === 0 ? 'dm-status--warning' : 'dm-status--info'">
{{ scope.row.status === 0 ? '未开始' : '已结束' }}
</div>
</template>
</template>
</el-table-column>
<el-table-column label="开始时间">
<template slot-scope="scope">
<p>{{ formatDateTimeByType(scope.row.gameStartTime, 'yyyy-MM-dd') }}</p>
<p>{{ formatDateTimeByType(scope.row.gameStartTime, 'HH:mm:ss') }}</p>
<template slot-scope="{ row }">
<p>{{ formatDateTimeByType(row.gameStartTime || row.startDate, 'yyyy-MM-dd') }}</p>
<p>{{ formatDateTimeByType(row.gameStartTime || row.startDate, 'HH:mm:ss') }}</p>
</template>
</el-table-column>
<el-table-column label="结束时间">
<template slot-scope="scope">
<p>{{ formatDateTimeByType(scope.row.gameEndTime, 'yyyy-MM-dd') }}</p>
<p>{{ formatDateTimeByType(scope.row.gameEndTime, 'HH:mm:ss') }}</p>
<template slot-scope="{ row }">
<p>{{ formatDateTimeByType(row.gameEndTime || row.endDate, 'yyyy-MM-dd') }}</p>
<p>{{ formatDateTimeByType(row.gameEndTime || row.endDate, 'HH:mm:ss') }}</p>
</template>
</el-table-column>
</el-table>
......@@ -94,16 +100,19 @@ export default {
getList(gameType) {
const setResponse = (res, type) => {
//type 0 大转盘/刮刮卡 ----- 1 其他游戏
const { errorCode, message, result } = res.data || {};
if (errorCode != 0) {
const { errorCode, message, result, code } = res.data || {};
if (errorCode != 0 && code != 0) {
return this.$message.error(message);
} else {
if (type === 0) {
this.list = result.page.result || [];
this.total = result.page.totalCount || 0;
} else {
} else if (type === 1) {
this.list = (result.result || []).map(item => ({ ...item, gameId: item.gameActivityId }));
this.total = result.totalCount || 0;
} else if (type === 2) {
this.list = result.list || [];
this.total = result.total || 0;
}
}
};
......@@ -130,7 +139,19 @@ export default {
break;
case 'GAME_LINK_KLFL':
this.axios.post(`/api-marketing/page-klfl-game`, qs.stringify({ ...this.query })).then(res => {
setResponse(res, 1);
setResponse(res, 2);
});
break;
case 'GAME_LINK_XYMH':
const para = {
gameName: this.query.searchParam,
pageNum: this.query.currentPage,
pageSize: 6,
status: 1
};
this.axios.post(`/api-marketing/game-pro/page?requestProject=marketing`, para).then(res => {
console.log(res);
setResponse(res, 2);
});
break;
}
......
......@@ -302,6 +302,7 @@ export default {
}
},
changeThreeValue(val) {
console.log(val);
if (val.startsWith('GAME_LINK')) {
this.selectedGame = null;
this.wechatContent.type = val;
......
......@@ -63,6 +63,7 @@
</el-table-column>
<el-table-column label="浏览人数" min-width="96px" prop="browseCnt"></el-table-column>
<el-table-column label="参与人数" min-width="96px" prop="palyCnt"></el-table-column>
<el-table-column label="参与人次" min-width="96px" prop="playTimes"></el-table-column>
<el-table-column label="中奖人数" min-width="96px" prop="winCnt"></el-table-column>
<el-table-column label="游戏状态" min-width="96px" prop="status">
<template slot-scope="{ row }">
......
......@@ -258,14 +258,28 @@ export default {
],
[
{
label: '参与人次',
value: '',
key: 'playTimes',
type: 'number'
},
{
label: '中奖人数',
value: '',
key: 'winCnt',
type: 'number'
}
],
[
{
label: '中奖人次',
value: '',
key: 'winTimes',
type: 'number'
},
{
label: '中奖率',
tips: '中奖人数/参与人数',
tips: '中奖人次/参与人次',
value: '',
key: 'winRate',
type: 'rate'
......
......@@ -118,6 +118,7 @@ export default {
}
},
{ label: '参与人数', prop: 'userCount', width: '100', align: 'left' },
{ label: '参与次数', prop: 'totalCount', width: '100', align: 'left' }
],
tableList: []
......
......@@ -154,7 +154,6 @@ import varDialog from './variables.vue';
import innerUrl from '@/components/innerUrl/innerUrl';
import linktoolspage from '@/components/linktools/linktoolspage.vue';
import integralChange from './module/integral-change';
import { enableAccessControl, confirmInfo, alertInfo } from '@/utils/auth.js';
export default {
name: 'add-record',
......@@ -204,11 +203,7 @@ export default {
created() {
this.listTemplateVariables();
},
mounted() {
if (enableAccessControl()) {
alertInfo();
}
},
watch: {
'info.urlType'(val) {
if (this.info.urlType === 1) {
......@@ -474,11 +469,7 @@ export default {
type: 'warning'
})
.then(() => {
if (enableAccessControl()) {
confirmInfo(this.updateTempAdvice);
} else {
this.updateTempAdvice();
}
this.updateTempAdvice();
})
.catch(err => {});
},
......
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