Commit 3aaa79b2 by 黄冷

update: dist

parents dd553c0e 8e195bc7
......@@ -11,7 +11,7 @@ module.exports = {
assetsPublicPath: '/marketing/',
proxyTable: {
'/dmApi/': {
target: 'http://gicdev.demogic.com',
target: 'http://www.gicdev.com',
changeOrigin: true,
pathRewrite: {
'^/dmApi': ''
......
<!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.488e27612d0ea2441885f81b4bd425fd.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_3380872_b9qubgdi1ic.css><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.5653237ff7a722b06e06f2571bb47f16.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;
host = host.indexOf('localhost') > -1 || host.indexOf('192.168') > -1 ? 'www.gicdev.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.fbf3168e0c77db75bf9c.js></script><script type=text/javascript src=/marketing/static/js/vendor.e0ebad0c4fec1c8f90bf.js></script><script type=text/javascript src=/marketing/static/js/main.f4253c7a6c3187f30a9b.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.92d1861a50a1abfa8c23.js></script><script type=text/javascript src=/marketing/static/js/vendor.e0ebad0c4fec1c8f90bf.js></script><script type=text/javascript src=/marketing/static/js/main.853bac7c5aa25c5ba330.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.
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,a,o){for(var f,d,b,i=0,u=[];i<r.length;i++)d=r[i],t[d]&&u.push(t[d][0]),t[d]=0;for(f in a)Object.prototype.hasOwnProperty.call(a,f)&&(e[f]=a[f]);for(n&&n(r,a,o);u.length;)u.shift()();if(o)for(i=0;i<o.length;i++)b=c(c.s=o[i]);return b};var r={},t={25:0};function c(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,c),t.l=!0,t.exports}c.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,c){n=t[e]=[r,c]});n[2]=r;var a=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,c.nc&&o.setAttribute("nonce",c.nc),o.src=c.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:"4dfada83fbc79659c638",1:"44997340a26f1bb9598e",2:"78a893a3285592901952",3:"f977f304791ac2913fb8",4:"a11ede89dfa4f6dd621b",5:"feb0ffd2cfb795f0d746",6:"952dd795058a8320af99",7:"fed72fe4c42bb8d8d839",8:"442031faa4ebb0041149",9:"d26bee1b38e9066d3bb4",10:"0756ab734cd7ddc9e1b3",11:"36bc033917d312cfde67",12:"6a8939e0f905f5d7ace1",13:"200e6bfe2fb2f86c8231",14:"bbf5c3d415a5621fbc43",15:"7e607494d8968aef74ab",16:"3b17d743d502b83d338f",17:"3fcc0f820b45cd11895c",18:"65f42a7dbc2b1236e85b",19:"b8285d77cccf8c2e77b3",20:"4b7d606aea3710914c5d",21:"3b70c426e7cb5384d238",22:"67ff09408b92aef14903"}[e]+".js";var f=setTimeout(d,12e4);function d(){o.onerror=o.onload=null,clearTimeout(f);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=d,a.appendChild(o),r},c.m=e,c.c=r,c.d=function(e,n,r){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="/marketing/",c.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var a=window.webpackJsonp;window.webpackJsonp=function(n,c,o){for(var b,f,d,i=0,u=[];i<n.length;i++)f=n[i],r[f]&&u.push(r[f][0]),r[f]=0;for(b in c)Object.prototype.hasOwnProperty.call(c,b)&&(e[b]=c[b]);for(a&&a(n,c,o);u.length;)u.shift()();if(o)for(i=0;i<o.length;i++)d=t(t.s=o[i]);return d};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:"f44fda034a77bb3a0abb",1:"fe1f48c1d23381a2afab",2:"78a893a3285592901952",3:"ecc8d90767737556b435",4:"93829345121d14b8a625",5:"feb0ffd2cfb795f0d746",6:"5f1cbddbaf62018c6b9e",7:"fed72fe4c42bb8d8d839",8:"442031faa4ebb0041149",9:"e6f1eb3edd0d67e0733b",10:"a5b854bbbee63abccbb4",11:"b3c01b56cf6bb230b455",12:"2cc9afcdab04796a1278",13:"0da42538485540d84757",14:"bda20ad51b5860401314",15:"d9311e9aefc4261c6843",16:"bea1e19a292b8b599704",17:"cc12e35ea94e31a7caa8",18:"fdc377d2e375560439b8",19:"be3e71923d339e38ace9",20:"bc68fb59d5a3191a267b",21:"3b70c426e7cb5384d238",22:"67ff09408b92aef14903"}[e]+".js";var b=setTimeout(f,12e4);function f(){o.onerror=o.onload=null,clearTimeout(b);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
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,9 @@
<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_3380872_b9qubgdi1ic.css"><!--3.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企业 -->
......@@ -32,7 +33,7 @@
(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;
host = host.indexOf('localhost') > -1 || host.indexOf('192.168') > -1 ? 'www.gicdev.com' : host;
document.write('<script src="//' + host + src + '"><\/script>');
})();
</script>
......
......@@ -38,6 +38,8 @@ export default {
localStorage.setItem('enableAccessControl', enableAccessControl);
if (this.userId !== uId) {
this.userId = uId;
// 切换账号后,不缓存权限数据、菜单数据、面包屑数据
window.notCache = true;
// 串号
this.$confirm('当前登录账号已经发生变化,如果您在其他页面已经登录另一个账号,请重新登录!', '登录账号变更提示', {
confirmButtonText: '重新登录',
......
@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
......@@ -60,7 +60,7 @@ export default {
var host = window.location.origin;
// console.log("当前host:",host)
if (host.indexOf('localhost') != '-1') {
that.baseUrl = 'http://gicdev.demogic.com';
that.baseUrl = 'http://www.gicdev.com';
} else {
that.baseUrl = host;
}
......
......@@ -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;
}
......
......@@ -132,7 +132,7 @@ export default {
return row.readyStatus == 1 && this.realTimeType.includes(row.isRealTime);
},
addGroup() {
let str = window.location.host.includes('localhost') ? 'http://gicdev.demogic.com' : '';
let str = window.location.host.includes('localhost') ? 'http://www.gicdev.com' : '';
window.open(`${str}/member-tag/#/memberGroupEdit?refresh`, '_blank');
},
selectRow(row) {
......
......@@ -130,7 +130,7 @@ export default {
created() {
const host = window.location.origin;
this.baseUrl = host.indexOf('localhost') > -1 ? 'http://gicdev.demogic.com' : host;
this.baseUrl = host.indexOf('localhost') > -1 ? 'http://www.gicdev.com' : host;
},
mounted() {
......
......@@ -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;
}
}
},
......
......@@ -69,7 +69,7 @@ export default {
created() {
const host = window.location.origin;
this.baseUrl = host.indexOf('localhost') > -1 ? 'http://gicdev.demogic.com' : host;
this.baseUrl = host.indexOf('localhost') > -1 ? 'http://www.gicdev.com' : host;
},
methods: {
......
......@@ -7,7 +7,7 @@
<linktools :showType="showType" :linkToolsVisible="linkToolsVisible" @linkSelect="linkSelect"/>
// 直播间
// http://gicdev.demogic.com/api-plug/list-wx-lives?requestProject=gic-web&type=0
// http://www.gicdev.com/api-plug/list-wx-lives?requestProject=gic-web&type=0
this.axios.get(`${this.baseUrl}/api-plug/list-wx-lives?requestProject=gic-web&type=0`).the()
import Linktools from 'components/linktools/linktools.vue'
......@@ -731,7 +731,7 @@ export default {
this.giftFlag = false;
var that = this
var host = window.location.origin;
this.baseUrl = host.indexOf('localhost') > -1 ? 'http://gicdev.demogic.com' : host;
this.baseUrl = host.indexOf('localhost') > -1 ? 'http://www.gicdev.com' : host;
},
methods: {
// H5对接文档
......@@ -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;
......
......@@ -688,7 +688,7 @@ export default {
this.giftFlag = false;
var that = this
var host = window.location.origin;
this.baseUrl = host.indexOf('localhost') != '-1' ? 'http://gicdev.demogic.com' : host;
this.baseUrl = host.indexOf('localhost') != '-1' ? 'http://www.gicdev.com' : host;
},
methods: {
getMore() {
......
......@@ -601,7 +601,7 @@ export default {
this.giftFlag = false;
var that = this
var host = window.location.origin;
this.baseUrl = host.indexOf('localhost') > -1 ? 'http://gicdev.demogic.com' : host;
this.baseUrl = host.indexOf('localhost') > -1 ? 'http://www.gicdev.com' : host;
},
methods: {
getMore() {
......
......@@ -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 style="line-height: 18px;">{{ formatDateTimeByType(scope.row.gameStartTime, 'yyyy-MM-dd') }}</p>
<p style="line-height: 18px;">{{ formatDateTimeByType(scope.row.gameStartTime, 'HH:mm:ss') }}</p>
<template slot-scope="{ row }">
<p style="line-height: 18px;">{{ formatDateTimeByType(row.gameStartTime || row.startDate, 'yyyy-MM-dd') }}</p>
<p style="line-height: 18px;">{{ formatDateTimeByType(row.gameStartTime || row.startDate, 'HH:mm:ss') }}</p>
</template>
</el-table-column>
<el-table-column label="结束时间">
<template slot-scope="scope">
<p style="line-height: 18px;">{{ formatDateTimeByType(scope.row.gameEndTime, 'yyyy-MM-dd') }}</p>
<p style="line-height: 18px;">{{ formatDateTimeByType(scope.row.gameEndTime, 'HH:mm:ss') }}</p>
<template slot-scope="{ row }">
<p style="line-height: 18px;">{{ formatDateTimeByType(row.gameEndTime || row.endDate, 'yyyy-MM-dd') }}</p>
<p style="line-height: 18px;">{{ formatDateTimeByType(row.gameEndTime || row.endDate, 'HH:mm:ss') }}</p>
</template>
</el-table-column>
</el-table>
......@@ -94,19 +100,23 @@ 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;
}
}
};
switch (gameType) {
case 'GAME_LINK_DZP':
this.axios.post(`/api-marketing/page-lottery-game`, qs.stringify({ ...this.query, gameType: 1 })).then(res => {
......@@ -133,6 +143,17 @@ export default {
setResponse(res, 1);
});
break;
case 'GAME_LINK_XYMH':
const para = {
gameName: this.query.searchParam,
pageNum: this.query.currentPage,
pageSize: this.query.pageSize,
status: 1
};
this.axios.post(`/api-marketing/game-pro/page?requestProject=marketing`, para).then(res => {
setResponse(res, 2);
});
break;
}
}
},
......@@ -141,6 +162,7 @@ export default {
handler() {
this.query.currentPage = 1;
this.query.searchParam = '';
console.log(this.query);
this.getList(this.gameType);
},
immediate: true
......
......@@ -355,7 +355,7 @@ export default {
var host = window.location.origin;
console.log('当前host:', host);
if (host.indexOf('localhost') != '-1') {
that.baseUrl = 'http://gicdev.demogic.com';
that.baseUrl = 'http://www.gicdev.com';
} else {
that.baseUrl = host;
}
......
......@@ -129,7 +129,7 @@
<el-dialog title="游戏列表" :close-on-click-modal="false" :visible.sync="gameProps.gameListVisible">
<game-list v-if="gameProps.gameListVisible" ref="gameList" :game-type="gameProps.gameType"></game-list>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="onSelectGame">确 定</el-button>
<el-button type="primary" @click="onSelectGame" :loading="btnLoading">确 定</el-button>
</span>
</el-dialog>
</div>
......@@ -145,27 +145,10 @@ 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';
const getgameStatus = val => {
console.log(val);
let text = '已结束';
switch (val) {
case 1:
text = '进行中';
break;
case 0:
text = '未开始';
break;
default:
text = '已结束';
break;
}
return text;
};
export default {
name: 'links',
props: ['linkToolsVisible', 'showType', 'projectName', 'activeName'],
......@@ -178,6 +161,7 @@ export default {
threeLevelVisible: false, // 三级整个
// 链接类型
linksType: '',
btnLoading: false,
linksTypeOptions: [
// {
// id: '1',
......@@ -386,7 +370,7 @@ export default {
let host = window.location.origin;
console.log('当前host:', host);
if (host.indexOf('localhost') != '-1') {
that.baseUrl = 'http://gicdev.demogic.com';
that.baseUrl = 'http://www.gicdev.com';
} else {
that.baseUrl = host;
}
......@@ -400,25 +384,29 @@ export default {
onSelectGame() {
if (this.$refs.gameList && this.$refs.gameList.seletedItem) {
const gameItem = this.$refs.gameList.seletedItem;
generateMiniProgramLink({ id: gameItem.gameId || gameItem.gameActivityId, linkId: this.gameProps.gameType }).then(res => {
this.gameProps.showGameInfo = true;
this.gameProps.gameListVisible = false;
this.gameInfo = {
title: gameItem.gameName,
id: gameItem.gameId || gameItem.gameActivityId,
gameStartTime: gameItem.gameStartTime,
gameEndTime: gameItem.gameEndTime,
gameStatus: 'gameStatusName' in gameItem ? gameItem.gameStatusName : getgameStatus(gameItem.activityStatus)
};
this.selectLinkObj.id = this.gameProps.gameType;
this.selectLinkObj.url = res.result.link;
this.selectLinkObj.name = gameItem.gameName;
console.log(this.selectLinkObj);
this.$emit('linkSelect', this.selectLinkObj);
});
this.btnLoading = true;
generateMiniProgramLink({ id: gameItem.gameId || gameItem.gameActivityId, linkId: this.gameProps.gameType })
.then(res => {
this.gameProps.showGameInfo = true;
this.gameProps.gameListVisible = false;
this.gameInfo = {
title: gameItem.gameName,
id: gameItem.gameId || gameItem.gameActivityId,
gameStartTime: gameItem.gameStartTime || gameItem.startDate,
gameEndTime: gameItem.gameEndTime || gameItem.endDate,
gameStatus: '进行中'
};
this.selectLinkObj.id = this.gameProps.gameType;
this.selectLinkObj.url = res.result.link;
this.selectLinkObj.name = gameItem.gameName;
console.log(this.selectLinkObj);
this.$emit('linkSelect', this.selectLinkObj);
})
.finally(() => {
this.btnLoading = false;
});
} else {
this.$message.warning('请添加游戏');
}
......
......@@ -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>
......@@ -54,7 +54,7 @@
<script>
/* eslint-disable */
const host = window.location.origin;
export const baseUrl = host.indexOf('localhost') !== -1 ? 'http://gicdev.demogic.com/' : host;
export const baseUrl = host.indexOf('localhost') !== -1 ? 'http://www.gicdev.com/' : host;
export default {
name: 'vue-gic-member-info',
props: {
......@@ -63,6 +63,10 @@ export default {
default() {
return {};
}
},
showImg:{
type:Boolean,
default:true
}
},
data() {
......
export default {
// eslint-disable-next-line
api: process.env['NODE_ENV'] === 'development' ? 'http://gicdev.demogic.com/' : window.location.protocol + '//' + window.location.host + '/' || ''
api: process.env['NODE_ENV'] === 'development' ? 'http://www.gicdev.com/' : window.location.protocol + '//' + window.location.host + '/' || ''
// /dmApi/
// http://gicdev.demogic.com/
// http://www.gicdev.com/
// http://192.168.1.154:86/
};
......
......@@ -7,6 +7,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);
......@@ -27,5 +27,5 @@ export const removePopupPlan = params => requests(PREFIX + 'remove-popup-plan',
export const stopPopup = params => requests(PREFIX + 'stop-popup', params);
// 投放页面-获取自定义页面
// http://gicdev.demogic.com/api-admin/list-page
// http://www.gicdev.com/api-admin/list-page
export const customPageList = params => requests(`${config.api}api-admin/list-page`, params);
......@@ -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="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
},
......@@ -117,6 +122,7 @@ export default {
type: 'rate'
}
],
[
{
label: '活动费用',
......@@ -149,6 +155,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 +195,24 @@ 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) {
let arr = [
{
label: '开卡人数',
value: '',
key: 'openCardNumber',
type: 'number'
},
{
label: '开卡转化率',
value: '',
key: 'openCardConversionRate',
type: 'rate'
}
];
this.targetList.splice(1, 0, arr);
}
this.getPlanStatistics();
this.getMemberCrowd();
},
......@@ -211,6 +256,10 @@ export default {
conversionNumber: targetData.conversionNumber,
// 转化率
conversionRate: targetData.conversionRate
// // 开卡人数
// openCardNumber: targetData.openCardNumber,
// // 开卡转化率
// openCardConversionRate: targetData.openCardConversionRate
};
});
},
......@@ -362,13 +411,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;
......
......@@ -11,7 +11,7 @@
<defineTime v-show="form.callFlag == 1" ref="defineTime" :data="form.callTime" @change="$emit('change')" />
</el-form-item>
<el-form-item label="外呼周期" required prop="activeTime">
<el-date-picker value-format="timestamp" format="yyyy-MM-dd" :picker-options="pickerOptions" @blur="minTime = maxTime = null" v-model="form.activeTime" @change="handleDateChange" type="daterange" placeholder="请选择生日范围" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
<el-date-picker value-format="timestamp" :disabled="disabled" format="yyyy-MM-dd" :picker-options="pickerOptions" @blur="minTime = maxTime = null" v-model="form.activeTime" @change="handleDateChange" type="daterange" placeholder="请选择生日范围" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
<span class="tips">由于外呼线路有限,为保证外呼触达率,建议外呼时间周期不小于5天</span>
</el-form-item>
</el-form>
......@@ -64,6 +64,10 @@ export default {
scene: {
type: Number,
default: 0
},
disabled: {
type: Boolean,
default: false
}
},
watch: {
......
<template>
<el-form :model="form" ref="form" label-width="100px" :rules="rules">
<el-form-item label="外呼时间" required>
<el-radio-group v-model="form.birth_type" @change="handleChangeType">
<el-radio-group v-model="form.birth_type" :disabled="disabled" @change="handleChangeType">
<el-radio :label="1">生日当天</el-radio>
<el-radio :label="2">生日当月</el-radio>
<el-radio :label="3"
>生日前
<el-form-item prop="birth_days" style="display: inline-block;">
<el-input-number class="w100" style="margin:0 5px;" v-model="form.birth_days" @change="hanldeBirthDaysChange" controls-position="right" :max="30" :min="1" size="small" />
<el-input-number class="w100" style="margin:0 5px;" :disabled="disabled" v-model="form.birth_days" @change="hanldeBirthDaysChange" controls-position="right" :max="30" :min="1" size="small" />
</el-form-item>
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="生日范围" prop="birthDate1" v-if="form.birth_type == 1 || form.birth_type == 3" required>
<el-date-picker value-format="timestamp" format="MM-dd" v-model="form.birthDate1" @change="handleDateChange" @blur="minTime = maxTime = null" :picker-options="pickerOptions" type="daterange" placeholder="请选择生日范围" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
<el-date-picker value-format="timestamp" format="MM-dd" :disabled="disabled" v-model="form.birthDate1" @change="handleDateChange" @blur="minTime = maxTime = null" :picker-options="pickerOptions" type="daterange" placeholder="请选择生日范围" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
</el-form-item>
<el-form-item label="生日范围" prop="birthDate2" v-if="form.birth_type == 2">
<el-date-picker type="monthrange" value-format="timestamp" format="MM月" v-model="form.birthDate2" @change="handleDateMonthChange" @blur="handleMonthBlur" :picker-options="pickerOptionsMonth" placeholder="请选择生日范围" range-separator="~" start-placeholder="开始月份" end-placeholder="结束月份"> </el-date-picker>
<el-date-picker type="monthrange" value-format="timestamp" format="MM月" :disabled="disabled" v-model="form.birthDate2" @change="handleDateMonthChange" @blur="handleMonthBlur" :picker-options="pickerOptionsMonth" placeholder="请选择生日范围" range-separator="~" start-placeholder="开始月份" end-placeholder="结束月份"> </el-date-picker>
</el-form-item>
<el-form-item label="外呼时段" required>
<el-radio v-model="form.callFlag" :label="0">默认时段</el-radio>
......@@ -127,6 +127,10 @@ export default {
data: {
type: Object,
default: () => {}
},
disabled: {
type: Boolean,
default: false
}
},
watch: {
......
<template>
<el-form :model="form" ref="form" label-width="100px" :rules="rules">
<el-form-item label="节日名称" prop="holiday_type" required>
<el-radio-group v-model="form.holiday_type" @change="handleChangeType">
<el-radio-group v-model="form.holiday_type" @change="handleChangeType" :disabled="disabled">
<el-radio v-model="form.holiday_type" :label="1">推荐节日</el-radio>
<el-radio v-model="form.holiday_type" :label="2">自定义节日</el-radio>
</el-radio-group>
<span class="tips ml20">为保证触达率,节日活动需要提前创建,不支持创建节日日期为活动创建日的活动</span>
<div v-if="form.holiday_type == 1">
<el-tag type="mini" v-if="form.holiday_name1">{{ form.holiday_name1 }}</el-tag>
<el-button type="text" @click="visible = true" v-if="!form.holiday_name1">选择节日</el-button>
<el-button type="text" @click="visible = true" v-else class="ml16"> 修改节日 </el-button>
<el-button type="text" @click="visible = true" :disabled="disabled" v-if="!form.holiday_name1">选择节日</el-button>
<el-button type="text" @click="visible = true" :disabled="disabled" v-else class="ml16"> 修改节日 </el-button>
</div>
<div v-if="form.holiday_type == 2">
<el-form-item prop="holiday_name2" :rules="[{ required: true, message: '请输入节日名称' }]">
<el-input class="w340" :maxlength="10" placeholder="请输入节日名称" show-word-limit v-model="form.holiday_name2"></el-input>
<el-input class="w340" :maxlength="10" placeholder="请输入节日名称" show-word-limit v-model="form.holiday_name2" :disabled="disabled"></el-input>
</el-form-item>
</div>
</el-form-item>
......@@ -22,11 +22,11 @@
<span v-else>{{ form.holiday_date1 }}</span>
</el-form-item>
<el-form-item label="节日日期" prop="holiday_date2" v-show="form.holiday_type == 2">
<el-date-picker v-model="form.holiday_date2" value-format="yyyy-MM-dd" :picker-options="pickerOptions" @change="handleDateChange" type="date" placeholder="选择日期"> </el-date-picker>
<el-date-picker v-model="form.holiday_date2" value-format="yyyy-MM-dd" :disabled="disabled" :picker-options="pickerOptions" @change="handleDateChange" type="date" placeholder="选择日期"> </el-date-picker>
</el-form-item>
<el-form-item label="外呼时间" prop="holiday_day" :rules="[{ required: true, message: '请输入外呼时间' }]">
节日前
<el-input-number class="w100" style="margin:0 5px;" v-model="form.holiday_day" @change="hanldeHolidayDay" controls-position="right" :max="30" :min="1" size="small" />
<el-input-number class="w100" style="margin:0 5px;" :disabled="disabled" v-model="form.holiday_day" @change="hanldeHolidayDay" controls-position="right" :max="30" :min="1" size="small" />
天内外呼完成
<span class="tips ml20">由于外呼线路有限,为保证外呼触达率,建议外呼时间周期不小于5</span>
</el-form-item>
......@@ -131,6 +131,10 @@ export default {
data: {
type: Object,
default: () => {}
},
disabled: {
type: Boolean,
default: false
}
},
mounted() {
......@@ -142,6 +146,8 @@ export default {
this.form = JSON.parse(JSON.stringify(val));
this.form[`holiday_date${this.form.holiday_type}`] = this.form.holiday_date;
this.form[`holiday_name${this.form.holiday_type}`] = this.form.holiday_name;
console.log(this.form);
this.handleHolidayDay();
}
},
......@@ -213,7 +219,8 @@ export default {
handleChangeType() {
this.form = Object.assign({}, this.form);
},
handleDateChange() {
handleDateChange(val) {
console.log('change', val);
this.form = Object.assign({}, this.form);
},
close() {
......
......@@ -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%" />
......@@ -47,7 +55,7 @@
<dm-sub-title type="line">外呼规则配置</dm-sub-title>
<div class="section">
<!--根据客户意向打标标签-->
<div class="card">
<div class="card" v-if="form.scene != 5">
<div class="title">根据客户意向打标标签:{{ form.labelFlag ? '开启' : '未开启' }}</div>
<div class="content" v-show="form.labelFlag">
<table>
......@@ -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, aiDictList } from '@/service/api/aiApi.js';
import { page, rechargeCenter, stopActivityPlan, startActivityPlan, pageStatistics, aiAccountCheck, getAiCalcSingle, continueActivityPlan, suspendActivityPlan, aiDictList } from '@/service/api/aiApi.js';
import { formatDateTimeByType } from '@/utils/index.js';
import filterAvater from '@/mixins/filterAvater.js';
......@@ -128,12 +128,22 @@ export default {
handler: row => this.$router.push('/ai/info/' + row.activityId)
},
{
text: '暂停',
props: {
limitCode: this.$buttonCode.marketingAiStart
},
visible: row => {
return row.activityPlanStatus == 2 && this.$getButtonLimit(this.$buttonCode.marketingAiStart);
},
handler: row => this.handleSuspend(row)
},
{
text: '编辑',
props: {
limitCode: this.$buttonCode.marketingAiEdit
},
visible: row => {
return row.activityPlanStatus === 1 && this.$getButtonLimit(this.$buttonCode.marketingAiEdit);
return (row.activityPlanStatus === 1 || row.activityPlanStatus === 6) && this.$getButtonLimit(this.$buttonCode.marketingAiEdit);
},
handler: row => this.editPlan(row)
},
......@@ -153,7 +163,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 +209,8 @@ export default {
this.$router.push({
path: '/ai/ai-data-report/' + row.activityId,
query: {
planId: row.planId
planId: row.planId,
scene: row.scene
}
});
}
......@@ -231,6 +242,12 @@ export default {
content: '针对消费过的客户进行营销,提升核心客户数量'
},
{
title: '开卡场景',
scene: '5',
iconName: 'icon-kaika',
content: '针对非会员营销,提升开卡率'
},
{
title: '其它场景',
scene: '0',
iconName: 'icon-qitachangjing',
......@@ -257,6 +274,10 @@ export default {
{
value: 0,
label: '其它场景'
},
{
value: 5,
label: '开卡场景'
}
],
optionActive: [
......@@ -279,6 +300,10 @@ export default {
{
value: 5,
label: '欠费暂停'
},
{
value: 6,
label: '手动暂停'
}
],
money: 0,
......@@ -288,8 +313,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,
cardContent: []
};
},
......@@ -303,6 +330,7 @@ export default {
this.getTableData();
this.getRechargeCenter();
this.getAiAccountCheck();
this.getAiCalcSingle();
},
activated() {
if (this.$route.meta.refresh) {
......@@ -351,6 +379,9 @@ export default {
case 5:
str = '欠费暂停';
break;
case 6:
str = '手动暂停';
break;
}
return str;
},
......@@ -382,6 +413,11 @@ export default {
this.cardContent = this.originCardContent.filter(item => codeArr.includes(item.scene));
});
},
async getAiCalcSingle() {
const { result } = await getAiCalcSingle();
if (!result) return;
this.isWhite = result.white;
},
create(scene, id) {
if (!this.canCreate) {
this.$confirm(`当前账户已无可用余额,请充值后再${id ? '复制' : '创建'}外呼任务`, '提示', {
......@@ -402,7 +438,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;
......@@ -479,15 +515,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();
})
......@@ -496,8 +532,73 @@ 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);
if (row.activityPlanStatus === 6) {
this.$router.push('/ai/edit/' + row.activityId + '?status=6');
} else {
this.$router.push('/ai/edit/' + row.activityId);
}
}
}
};
......@@ -508,17 +609,16 @@ export default {
margin: 0 20px;
.cardList {
display: flex;
flex-wrap: wrap;
gap: 12px;
.card {
width: 20%;
min-width: 224px;
width: 16%;
height: 140px;
background: #f0f3fd;
border-radius: 4px;
padding: 12px 16px;
box-sizing: border-box;
margin-right: 12px;
&:last-child {
margin-right: 0;
}
}
.cardTitle {
i {
......@@ -538,6 +638,7 @@ export default {
font-size: 14px;
line-height: 20px;
height: 40px;
color: #606266;
}
}
......
......@@ -73,7 +73,7 @@
</el-form>
<vue-gic-card appendToBody :showCardDialog.sync="showCardDialog" @selectCard="selectCard" :cardLimit="-1" :cardType="null"></vue-gic-card>
<vue-gic-export-excel :dialogVisible.sync="dialogVisible" :dataArr="[1, 2, 3]" :type="2" :excelUrl="excelUrl" :params="params" :projectName="projectName"></vue-gic-export-excel>
<!-- <form action="http://gicdev.demogic.com/api-marketing/cdkey-fail-export" target="_blank" enctype="multipart/form-data">
<!-- <form action="http://www.gicdev.com/api-marketing/cdkey-fail-export" target="_blank" enctype="multipart/form-data">
<input type="text" name="requestProject" value="gic-web" />
<input type="file"/>
<button type="submit">submit</button>
......
......@@ -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' },
......
......@@ -12,7 +12,7 @@ const MINI_TIME = 300;
let TIME_OUT_MAX = 20000;
// 环境value
// 请求接口host
let _apiHost = host.indexOf('localhost') !== -1 ? 'http://gicdev.demogic.com' : host;
let _apiHost = host.indexOf('localhost') !== -1 ? 'http://www.gicdev.com' : host;
// 请求组(判断当前请求数)
let _requests = [];
......
......@@ -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;
}
}
};
......@@ -133,6 +142,17 @@ export default {
setResponse(res, 1);
});
break;
case 'GAME_LINK_XYMH':
const para = {
gameName: this.query.searchParam,
pageNum: this.query.currentPage,
pageSize: this.query.pageSize,
status: 1
};
this.axios.post(`/api-marketing/game-pro/page?requestProject=marketing`, para).then(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;
......
......@@ -461,7 +461,6 @@ export default {
delete gameExt.mpUrlView;
}
data.gameExt = gameExt;
resolve(true);
this.$emit('nextStep', data, noNext);
} else {
......
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