Commit 57ee6710 by shaojiawen

Merge branch 'feature/act-code' of http://git.gicdev.com/office/haoban-3 into feature/act-code

parents 5162a5aa bd9b8976
......@@ -9,7 +9,7 @@
module.exports = {
proxyList: {
'/haoban-manage3-web/': {
target: 'https://www.gicdev.com/haoban-manage3-web/',
target: 'https://www.gicdev.com/haoban-manage3-web',
changeOrigin: true,
pathRewrite: {
'^/haoban-manage3-web': ''
......
import { postRequest } from '@/api/api';
import { postRequest, getRequest } from '@/api/api';
// 活码分组查询
export const findActCodeGroupListApi = params => postRequest('/hm/group/list', params);
// 新增活码分组
export const addActCodeGroupApi = params => postRequest('/hm/group/save', params);
export const addActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/save', params);
// 编辑活码分组
export const editActCodeGroupApi = params => postRequest('/hm/group/edit', params);
export const editActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/edit', params);
// 删除分组
export const delActCodeGroupApi = params => postRequest('/hm/group/delete', params);
export const delActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/delete', params);
// 活码列表
export const actCodeListApi = params => postRequest('', params);
export const actCodeListApi = params => postRequest('/haoban-manage3-web/hm/qrcode/list', params);
// 落地页模板列表
export const guidePageList = params => getRequest('/hm/guide/page/list', params);
// 落地页模板删除
export const guidePageDel = params => postRequest('/hm/guide/page/delete', params);
// 落地页模板关联详情
export const guidePageRelation = params => getRequest('/hm/guide/page/relation', params);
// 落地页模板详情
export const guidePageDetail = params => getRequest('/hm/guide/page/detail', params);
// 落地页 获取当前企业电话、logo
export const wxEnterpriseList = params => getRequest('/wx-enterprise-list?filteRight=1&requestProject=haoban-manage-web', params);
// 落地页模板编辑详情
export const guidePageEdit = params => postRequest('/hm/guide/page/edit', params);
// 落地页模板新增详情
export const guidePageSave = params => postRequest('/hm/guide/page/save', params);
// 【活码链接】 -- 列表
export const linkPage = params => postRequest('/haoban-manage3-web/hm/link/page', params);
//【活码】详情-查看明细列表
export const detailClerkList = params => postRequest('/haoban-manage3-web/hm/qrcode/detail-clerk-list', params);
......@@ -67,30 +67,30 @@ Vue.axios.interceptors.request.use(
Vue.axios.interceptors.response.use(
data => {
removePending(data.config); //在一个ajax响应后再执行一下取消操作,把已经完成的请求从pending中移除
if (data.status && data.status == 200 && data.data.errorCode != 1) {
if (data.data.errorCode == 4) {
if (window.location.href.indexOf('gic-error') != -1) {
return false;
}
window.location.href = gicHost + '/gic-web/#/login?ishb=1';
}
// if (data.status && data.status == 200 && data.data.errorCode != 1) {
// if (data.data.errorCode == 4) {
// if (window.location.href.indexOf('gic-error') != -1) {
// return false;
// }
// window.location.href = gicHost + '/gic-web/#/login?ishb=1';
// }
if (data.data.errorCode == 10 || data.data.errorCode == 7) {
window.location.href = gicHost + '/haoban-3/#/index';
}
return data;
}
// if (data.data.errorCode == 10 || data.data.errorCode == 7) {
// window.location.href = gicHost + '/haoban-3/#/index';
// }
// return data;
// }
return data;
},
err => {
if (err.response.status == 502) {
window.location.href = gicHost + '/gic-web/#/login?ishb=1';
Message.error({ message: '服务异常⊙﹏⊙∥' });
}
if (err.response.status != 403) {
window.location.href = gicHost + '/gic-web/#/login?ishb=1';
Message.error({ message: '登录失效!' });
}
// if (err.response.status == 502) {
// window.location.href = gicHost + '/gic-web/#/login?ishb=1';
// Message.error({ message: '服务异常⊙﹏⊙∥' });
// }
// if (err.response.status != 403) {
// window.location.href = gicHost + '/gic-web/#/login?ishb=1';
// Message.error({ message: '登录失效!' });
// }
return Promise.resolve(err);
}
);
......
/* 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;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
@font-face {
font-family: "iconfont-hb3"; /* Project id 1628375 */
src: url('iconfont.woff2?t=1657093480813') format('woff2'),
url('iconfont.woff?t=1657093480813') format('woff'),
url('iconfont.ttf?t=1657093480813') format('truetype');
src: url('iconfont.woff2?t=1657521279508') format('woff2'),
url('iconfont.woff?t=1657521279508') format('woff'),
url('iconfont.ttf?t=1657521279508') format('truetype');
}
.iconfont-hb3 {
......@@ -13,6 +13,10 @@
-moz-osx-font-smoothing: grayscale;
}
.icondianhua:before {
content: "\ebeb";
}
.iconzhibiaoshuoming:before {
content: "\eb57";
}
......@@ -25,10 +29,6 @@
content: "\e62c";
}
.icontianjia:before {
content: "\e686";
}
.iconliushihuiyuan:before {
content: "\e6ca";
}
......@@ -37,6 +37,10 @@
content: "\e636";
}
.iconPlusOutlined:before {
content: "\e61f";
}
.iconbiaoge-erweima:before {
content: "\e614";
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,6 +6,13 @@
"description": "",
"glyphs": [
{
"icon_id": "25538381",
"name": "电话",
"font_class": "dianhua",
"unicode": "ebeb",
"unicode_decimal": 60395
},
{
"icon_id": "18049658",
"name": "指标说明",
"font_class": "zhibiaoshuoming",
......@@ -27,13 +34,6 @@
"unicode_decimal": 58924
},
{
"icon_id": "3978428",
"name": "添加",
"font_class": "tianjia",
"unicode": "e686",
"unicode_decimal": 59014
},
{
"icon_id": "6134651",
"name": "流失会员",
"font_class": "liushihuiyuan",
......@@ -48,6 +48,13 @@
"unicode_decimal": 58934
},
{
"icon_id": "20415179",
"name": "PlusOutlined",
"font_class": "PlusOutlined",
"unicode": "e61f",
"unicode_decimal": 58911
},
{
"icon_id": "21009399",
"name": "表格-二维码",
"font_class": "biaoge-erweima",
......
......@@ -48,7 +48,7 @@
<div class="upload-content">
<el-upload class="avatar-uploader" action="123" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
<i v-else class="iconfont-hb3 iconPlusOutlined avatar-uploader-icon"></i>
</el-upload>
<p>请上传长宽比为5:4的图片</p>
</div>
......@@ -695,8 +695,8 @@ export default {
}
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
font-size: 24px;
color: #303133;
width: 150px;
height: 150px;
line-height: 150px;
......
......@@ -22,8 +22,7 @@
<div class="imageList">
<el-upload class="avatar-uploader" v-show="!disabled" :multiple="limit > 1 ? true : false" :file-list="imgList" :show-file-list="false" :http-request="handleRequest" :before-upload="beforeUpload">
<div v-if="!videoSrc" class="flex-column">
<i class="el-icon-plus vatar-uploader-icon"></i>
<p class="font-12 color-606266" style="line-height: 22px;">上传图片</p>
<i class="iconfont-hb3 iconPlusOutlined avatar-uploader-icon"></i>
</div>
</el-upload>
<p class="upload-tip color-909399 font-12 pos-bottom">
......@@ -150,6 +149,7 @@ export default {
position: relative;
overflow: hidden;
margin-top: 5px;
border-radius: 2px;
}
}
......
......@@ -2,10 +2,10 @@
<div class="iphone">
<span class="pageTitle">{{ card.pageTitle }}</span>
<div class="content">
<img :src="card.pageBackgroudImg" class="bgImg" />
<img :src="card.pageBackgroundImg" class="bgImg" v-if="card.pageBackgroundImg" />
<div class="enterpriseInfo">
<div class="logo">
<img :src="card.merchantLogo" />
<img :src="card.merchantLogo" v-if="card.merchantLogo" />
</div>
<div class="name">{{ card.merchantName }}</div>
</div>
......@@ -24,12 +24,12 @@ export default {
data() {
return {
card: {
pageTitle: '页面标题1',
merchantName: '商户名称',
merchantPhoneNumber: '0571-1234567',
merchantLogo: 'https://pic01-10001430.image.myqcloud.com/d4b383df-8eb1-49d6-9c84-8e3e36958464',
pageBackgroudImg: 'https://pic01-10001430.image.myqcloud.com/b91f73af-43e4-4733-a4d3-0ab0bcb4ce7f',
guideComment: '长按识别二维码添加您的专属导购'
pageTitle: '',
merchantName: '',
merchantPhoneNumber: '',
merchantLogo: '',
pageBackgroundImg: '',
guideComment: ''
}
};
},
......@@ -40,11 +40,14 @@ export default {
}
},
watch: {
data(val) {
if (val) {
const { pageTitle, merchantName, merchantPhoneNumber, merchantLogo, pageBackgroudImg, guideComment } = val;
this.card = { pageTitle, merchantName, merchantPhoneNumber, merchantLogo, pageBackgroudImg, guideComment };
}
data: {
handler(val) {
if (val) {
const { pageTitle, merchantName, merchantPhoneNumber, merchantLogo, pageBackgroundImg, guideComment } = val;
this.card = { pageTitle, merchantName, merchantPhoneNumber, merchantLogo, pageBackgroundImg, guideComment };
}
},
deep: true
}
}
};
......@@ -66,7 +69,7 @@ export default {
position: sticky;
color: #000000;
font-weight: 500;
top: 46px;
top: 105px;
width: 125px;
margin-left: 78px;
line-height: 20px;
......
......@@ -19,7 +19,7 @@
</el-form-item>
<el-form-item label="文件" prop="link">
<el-upload class="upload-demo" :action="uploadUrl()" :before-upload="beforeFileUpload" :on-success="handleFileSuccess" :on-change="handleFileChange" :on-remove="handleRemove" :limit="1" :on-exceed="handleExceed" :file-list="fileDatas">
<el-button type="primary"><i class="el-icon-upload el-icon--right" style="font-size: 16px;padding-right:5px;"></i>上传</el-button>
<el-button type="primary"><i class="iconfont-hb3 iconPlusOutlined avatar-uploader-icon el-icon--right" style="font-size: 16px;padding-right:5px;"></i>上传</el-button>
<div slot="tip" class="font-12 color-909399">普通文件,不大于20MB。支持word及excel,pdf,ppt,zip,rar格式</div>
</el-upload>
</el-form-item>
......@@ -254,4 +254,7 @@ export default {
}
}
}
.avatar-uploader-icon{
color: #303133;
}
</style>
......@@ -19,22 +19,22 @@
<img v-if="imgSrc" :src="imgSrc" class="avatar" @mouseover="showImage(imgSrc)" />
<video v-if="videoSrc != '' && videoFlag == false" :src="videoSrc" class="avatar">您的浏览器不支持视频播放</video>
<div v-if="!imgSrc && !videoSrc">
<i class="el-icon-plus avatar-uploader-icon"></i>
<p class="font-12 color-606266">{{ uploadType == 1 || uploadType == 2 || uploadType == 4 ? '上传图片' : '上传视频' }}</p>
<i class="iconfont-hb3 iconPlusOutlined avatar-uploader-icon"></i>
<p class="font-12 color-606266" style="line-height:6px;">{{ uploadType == 1 || uploadType == 2 || uploadType == 4 ? '上传图片' : '上传视频' }}</p>
</div>
<!-- <el-progress v-if="videoFlag == true" type="circle" :percentage="videoUploadPercent" style="margin-top:30px;"></el-progress> -->
</el-upload>
<p v-if="uploadType == 1" class="upload-tip color-909399 font-12">
<p v-if="uploadType == 1 && showTips" class="upload-tip color-909399 font-12">
图片支持png、jpg、jpeg格式,大小不超过2M,可上传1张
</p>
<p v-if="uploadType == 2" class="upload-tip color-909399 font-12">
<p v-if="uploadType == 2 && showTips" class="upload-tip color-909399 font-12">
建议尺寸:160×160;支持jpg、jpeg、png格式,图片大小不超过1MB
</p>
<p v-if="uploadType == 3" class="upload-tip color-909399 font-12">
<p v-if="uploadType == 3 && showTips" class="upload-tip color-909399 font-12">
视频支持MP4格式,大小不超过10M,上传企业微信后3天内有效
</p>
<p v-if="uploadType == 4" class="upload-tip color-909399 font-12">
<p v-if="uploadType == 4 && showTips" class="upload-tip color-909399 font-12">
建议尺寸:520×416,支持png、jpg、jpeg格式,大小不超过1M
</p>
<!-- 图片预览 -->
......@@ -64,6 +64,14 @@ export default {
type: String,
default: ''
},
imgType: {
type: Array,
default: () => ['image/jpeg', 'image/jpg', 'image/png']
},
showTips: {
type: Boolean,
default: true
},
uploadLimit: {
type: [Number, String],
default: 2
......@@ -98,14 +106,8 @@ export default {
*/
uploadUrl() {
const that = this;
let host = window.location.origin;
let baseUrl;
if (host.indexOf('localhost') != '-1') {
baseUrl = 'https://www.gicdev.com';
} else {
baseUrl = host;
}
that.upUrl = baseUrl + `/haoban-manage3-web/upload-file?fileType=${that.fileType}`;
that.upUrl = `/haoban-manage3-web/upload-file?fileType=${that.fileType}`;
return that.upUrl;
},
......@@ -128,13 +130,14 @@ export default {
/* eslint-disable */
beforeAvatarUpload(file) {
const that = this;
// console.log(file);
that.fileType = file.type === 'image/jpeg' ? 'jpeg' : file.type === 'image/jpg' ? 'jpg' : file.type === 'image/png' ? 'png' : file.type == 'video/mp4' ? 'mp4' : '';
const isJPG = file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png';
// console.log(file);
that.fileType = file.type === 'image/jpeg'|| file.type === 'image/gif' ? 'jpeg' : file.type === 'image/jpg' ? 'jpg' : file.type === 'image/png' ? 'png' : file.type == 'video/mp4' ? 'mp4' : '';
const isJPG = this.imgType.includes(file.type);
const isMP4 = file.type == 'video/mp4';
const isLt2M = file.size / 1024 / 1024 < that.uploadLimit;
if ((that.uploadType == 1 || that.uploadType == 2 || that.uploadType == 4) && !isJPG) {
that.$message.error('上传图片支持png、jpg、jpeg格式!');
that.$message.error(`上传图片支持${ this.imgType.map(item=>item.split('/')[1]).join('、')}格式!`);
}
if ((that.uploadType == 1 || that.uploadType == 2 || that.uploadType == 4) && !isLt2M) {
that.$message.error(`上传图片大小不能超过 ${that.uploadLimit}MB!`);
......@@ -210,10 +213,10 @@ export default {
width: 100px;
height: 100px;
border: 1px dashed #c4c6cf;
border-radius: 0px;
cursor: pointer;
position: relative;
overflow: hidden;
border-radius: 2px;
}
}
......@@ -263,12 +266,8 @@ export default {
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 100px;
// height: 100px;
// line-height: 100px;
text-align: center;
font-size: 24px;
color:#303133;
}
.avatar {
max-width: 100px;
......
......@@ -12,8 +12,19 @@ const attractFlowLinkRouter = [
component: _import('salesleads/actCodeManage/attractFlowLink/landingPage', 'list')
},
{
path: '/ladingPageInfo',
name: '落地页详情',
path: '/ladingPageAdd',
name: '新建落地页',
meta: {
type: 'add'
},
component: _import('salesleads/actCodeManage/attractFlowLink/landingPage', 'detail')
},
{
path: '/ladingPageEdit',
name: '编辑落地页',
meta: {
type: 'edit'
},
component: _import('salesleads/actCodeManage/attractFlowLink/landingPage', 'detail')
}
];
......
......@@ -15,6 +15,21 @@ const staffActCodeRouter = [
path: '/actCodeDetail',
name: '活码详情',
component: _import('salesleads/actCodeManage/staffActCode', 'actCodeDetail')
},
{
path: '/actCodeAdd',
name: '新增活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'setActCode')
},
{
path: '/actCodeEdit',
name: '编辑活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'setActCode')
},
{
path: '/actCodeBatch',
name: '批量创建活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'batchAddCode')
}
];
export default staffActCodeRouter;
......@@ -68,7 +68,7 @@
</div>
</template>
</el-table-column>
<el-table-column label="操作" width="180" v-if="$getButtonLimit($buttonCode.editSalutatory) || $getButtonLimit($buttonCode.delSalutatory)">
<el-table-column label="操作" width="180" fixed="right" v-if="$getButtonLimit($buttonCode.editSalutatory) || $getButtonLimit($buttonCode.delSalutatory)">
<template slot-scope="{ row }">
<el-button v-if="$getButtonLimit($buttonCode.editSalutatory)" :limit-code="$buttonCode.editSalutatory" type="text" @click="changeRoute(row)">编辑</el-button>
<el-button v-if="$getButtonLimit($buttonCode.delSalutatory)" :limit-code="$buttonCode.delSalutatory" type="text" @click="remove(row)">删除</el-button>
......
<template>
<div>待开发</div>
<div class="attractFlowLink">
<div class="iconFlex">
<i class="iconfont-hb3 iconzhibiaoshuoming color-1890ff"></i>
<div class="color-1890ff font-14 p-l-6" @click="explain('http://baidu.com')">指标说明</div>
</div>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="引流加人" name="first">
<div class="p-l-20 p-r-20">
<div class="flex flex-space-between m-b-16">
<div class="flex flex-align-center">
<el-input placeholder="请输入模板ID/名称、创建人" class="w-260" v-model="form.searchParams" @keyup.native="value => toInput(value, searchInput)" clearable @clear="getList"> <i slot="prefix" class="el-input__icon el-icon-search"></i> </el-input>
<span style="font-size:14px;" class="m-l-10">模板创建时间:</span>
<el-date-picker class="m-l-10 w-256" v-model="form.dateRange" @change="getList" type="daterange" :value-format="'yyyy-MM-dd'" clearable @clear="getList" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
</div>
<div>
<el-button>落地页模板</el-button>
<el-button type="primary">新增链接</el-button>
</div>
</div>
<el-table :data="tableData" style="width:100%" v-loading="loading" @sort-change="handleSortChange">
<el-table-column :min-width="164" prop="linkId" label="链接ID" />
<el-table-column :min-width="167" prop="memberId" label="链接信息">
<template slot-scope="{ row }">
<span>{{ row.name }}</span>
<span>{{ row.linkCode }}</span>
</template>
</el-table-column>
<el-table-column :min-width="110" prop="linkType" label="链接类型">
<template slot-scope="{ row }">
<span>{{ row.linkType }}</span>
</template>
</el-table-column>
<el-table-column v-for="v in tableHeader" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="v.prop" :prop="v.prop" :label="v.label" :formatter="v.formatter" :sortable="v.sortable" :fixed="v.fixed">
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
<span v-else>{{ scope.row[v.prop] }}</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right">
<template slot-scope="scope">
<el-button type="text">刷新</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-tab-pane>
<el-tab-pane label="引流入群" name="second">引流入群</el-tab-pane>
</el-tabs>
</div>
</template>
<script></script>
<style></style>
<script>
import { _debounce } from '@/common/js/public';
import { linkPage } from '@/api/actCode';
const tableHead = [
{
label: '添加好友人数',
prop: 'addNumT',
width: '130',
sortable: 'custom',
formatter: function(row) {
return `<span>${row.addNumT ? row.addNumT : '- -'}</span>`;
}
},
{
label: '今日新增人数',
prop: 'addNum',
width: '130',
sortable: 'custom',
formatter: function(row) {
return `<span>${row.addNum ? row.addNum : '- -'}</span>`;
}
},
{
label: '点击总人次',
prop: 'clickTimesT',
width: '120',
sortable: 'custom',
formatter: function(row) {
return `<span>${row.clickTimesT ? row.clickTimesT : '- -'}</span>`;
}
},
{
label: '今日点击人次',
prop: 'clickNum',
width: '130',
sortable: 'custom',
formatter: function(row) {
return `<span>${row.clickNum ? row.clickNum : '- -'}</span>`;
}
},
{
label: '点击总人数',
prop: 'clickNumT',
width: '120',
sortable: 'custom',
formatter: function(row) {
return `<span>${row.clickNumT ? row.clickNumT : '- -'}</span>`;
}
},
{
label: '今日点击人数',
prop: 'clickNum',
width: '130',
sortable: 'custom',
formatter: function(row) {
return `<span>${row.clickNum ? row.clickNum : '- -'}</span>`;
}
},
{
label: '创建人',
minWidth: '100',
prop: 'creatorName',
formatter: function(row) {
return `<span>${row.creatorName ? row.creatorName : '- -'}</span>`;
}
},
{
label: '创建时间',
minWidth: '100',
prop: 'createTime',
formatter: function(row) {
return `<span>${row.createTime ? row.createTime : '- -'}</span>`;
}
}
];
export default {
data() {
return {
activeName: 'first',
loading: false,
form: {
filteRight: 1,
linkType: '',
searchParams: '',
dateRange: []
},
tableData: [],
tableHeader: tableHead
};
},
mounted() {
this.getList();
},
methods: {
handleClick(item) {
console.log(item);
},
toInput: _debounce(function(e, value) {
this.getList();
}, 500),
getList() {
const param = { ...this.form };
if (this.form.dateRange && this.form.dateRange.length) {
param.startDate = this.form.dateRange[0] + ' 00:00:00';
param.endDate = this.form.dateRange[1] + ' 23:59:59';
}
delete param.dateRange;
console.log(param);
linkPage(param).then(res => {
console.log(res);
});
},
handleSortChange(data) {
const { prop, order } = data;
console.log(order);
if (order == 'descending') {
this.form.orderBy = prop + ' desc';
} else if (order === 'ascending') {
this.form.orderBy = prop + ' asc';
} else {
this.form.orderBy = undefined;
}
this.form.pageNum = 1;
this.getList();
}
}
};
</script>
<style>
.attractFlowLink {
position: relative;
}
.iconFlex {
position: absolute;
display: flex;
top: 13px;
right: 20px;
}
</style>
......@@ -4,16 +4,16 @@
<div class="operation">
<div class="idNum">ID:{{ card.templateCode }}</div>
<div class="btns">
<el-button type="text">关联详情</el-button>
<el-button type="text">删除</el-button>
<el-button type="text">编辑</el-button>
<el-button type="text" @click="$emit('relationDetail')">关联详情</el-button>
<el-button type="text" @click="$emit('deleteTemp')">删除</el-button>
<el-button type="text" @click="$emit('editTemp')">编辑</el-button>
</div>
</div>
<div class="tempName">{{ card.templateName }}</div>
<div class="cardName">
<div class="createName">达摩管理员</div>
<div class="createName">{{ card.createorName }}</div>
<div class="createTime">2022-05-19 12:03:12</div>
<div class="createTime">{{ card.createTime | formatTimeStamp }}</div>
</div>
</div>
<div class="iphone-content">
......@@ -67,8 +67,8 @@ export default {
content: {
handler(val) {
if (val) {
const { templateName, templateCode, templateId, pageTitle, merchantName, merchantPhoneNumber, merchantLogo, pageBackgroudImg, guideComment } = val;
this.card = { templateName, templateCode, templateId, pageTitle, merchantName, merchantPhoneNumber, merchantLogo, pageBackgroudImg, guideComment };
const { templateName, templateCode, templateId, pageTitle, merchantName, merchantPhoneNumber, merchantLogo, pageBackgroudImg, guideComment, createorName, createTime } = val;
this.card = { templateName, templateCode, templateId, pageTitle, merchantName, merchantPhoneNumber, merchantLogo, pageBackgroudImg, guideComment, createorName, createTime };
}
},
immediate: true
......
<template>
<div>
<previewPage />
<div class="daily-set-content">
<el-form label-width="100px" ref="form" :model="form" :rules="rules" refs="form" class="form">
<el-form-item label="模板名称" prop="templateName" required>
<el-input show-word-limit placeholder="请输入模板名称" type="text" v-model="form.templateName" maxlength="20" class="w-340"></el-input>
</el-form-item>
<el-form-item label="页面标题" prop="pageTitle">
<el-input show-word-limit placeholder="请输入页面标题" type="text" v-model="form.pageTitle" maxlength="10" class="w-340"></el-input>
</el-form-item>
<el-form-item label="商户名称" prop="merchantName">
<el-input show-word-limit placeholder="请输入商户名称" type="text" v-model="form.merchantName" maxlength="20" class="w-340"></el-input>
</el-form-item>
<el-form-item label="商户电话" prop="merchantPhoneNumber">
<el-input show-word-limit placeholder="请输入商户电话" type="text" v-model="form.merchantPhoneNumber" maxlength="20" class="w-340"></el-input>
</el-form-item>
<el-form-item label="商户LOGO">
<single-upload uploadType="1" :showTips="false" :imgSrc.sync="form.merchantLogo" :field="''" class="app-set" :uploadLimit="2" :imgType="['image/jpeg', 'image/jpg', 'image/png', 'image/gif']"> </single-upload>
<p style="margin-top: 6px;font-size: 12px;color: #909399;line-height: 17px;">图片建议尺寸 240*240px,格式 jpg/jpep/png/gif,大小 200KB 以内。</p>
</el-form-item>
<el-form-item label="页面背景">
<single-upload uploadType="1" :showTips="false" :imgSrc.sync="form.pageBackgroundImg" :field="''" class="app-set" :uploadLimit="2" :imgType="['image/jpeg', 'image/jpg', 'image/png', 'image/gif']"> </single-upload>
<p style="margin-top: 6px;font-size: 12px;color: #909399;line-height: 17px;">图片建议尺寸 750*1334px,格式 jpg/png/gif,大小 200KB 以内。</p>
</el-form-item>
<el-form-item label="引导语" prop="guideComment">
<el-input show-word-limit placeholder="请输入引导语" type="textarea" v-model="form.guideComment" maxlength="50" class="w-340" :autosize="{ minRows: 4, maxRows: 6 }"></el-input>
</el-form-item>
</el-form>
<div class="rightContent">
<p class="previewTitle">落地页预览</p>
<previewPage :data="form" class="preview" />
<p class="previewBottom">此二维码只是样式预览效果,请勿直接使用</p>
</div>
</div>
<div class="footBtn">
<el-button type="primary" @click="save">保存</el-button>
</div>
</div>
</template>
<script>
import singleUpload from '@/components/single-upload.vue';
import previewPage from '@/components/preview-page.vue';
import { guidePageDetail, guidePageEdit, guidePageSave, wxEnterpriseList } from '@/api/actCode';
export default {
components: {
previewPage
previewPage,
singleUpload
},
data() {
const merchantPhoneNumberVal = (rules, value, callback) => {
const reg = /^[0-9 \+\-]{0,20}$/;
const reg1 = /^\s*$/;
const reg2 = /^\+*$/;
const reg3 = /^\-*$/;
if (reg1.test(value) || reg2.test(value) || reg3.test(value)) {
callback('请输入手机号');
}
if (!reg.test(value)) {
callback('仅支持输入数字,空格,-,+');
}
callback();
};
return {
form: {
templateName: '',
pageTitle: '',
merchantName: '',
merchantPhoneNumber: '',
merchantLogo: '',
//https://pic01-10001430.image.myqcloud.com/b91f73af-43e4-4733-a4d3-0ab0bcb4ce7f
pageBackgroundImg: '',
guideComment: '长按保存图片并识别二维码添加您的专属导购'
},
logoImageList: [],
isEdit: this.$route.meta.type == 'edit',
isAdd: this.$route.meta.type == 'add',
loading: false,
rules: {
merchantPhoneNumber: [{ validator: merchantPhoneNumberVal }]
}
};
},
mounted() {
if (this.isEdit) {
// this.getDetail();
} else {
// this.getEchoEnterpriseInfo();
}
},
methods: {
getDetail() {
guidePageDetail({ templateId: this.$route.query.id }).then(res => {
if (res.data.result) {
const result = res.data.result;
this.form = result;
}
});
},
getEchoEnterpriseInfo() {
wxEnterpriseList().then(res => {
let resData = res.data;
if (!!resData.result && !!resData.result.length) {
const { conactsPhone, enterpriseLogo, enterpriseName } = resData.result;
this.form.merchantLogo = enterpriseLogo;
this.form.merchantPhoneNumber = conactsPhone;
this.form.merchantName = enterpriseName;
}
});
},
guidePageEdit() {
this.loading = true;
guidePageEdit(this.form)
.then(_ => {
this.$router.go(-1);
this.$message.success('保存成功');
})
.finally(_ => {
this.loading = false;
});
},
guidePageSave() {
this.loading = true;
guidePageSave(this.form)
.then(_ => {
this.$router.go(-1);
this.$message.success('保存成功');
})
.finally(_ => {
this.loading = false;
});
},
save() {
if (this.isEdit) {
this.guidePageEdit();
} else {
this.guidePageSave();
}
}
}
};
</script>
<style type="text/scss" lang="scss" scoped>
.daily-set-content {
padding: 20px;
}
.form {
float: left;
}
.rightContent {
margin-left: 734px;
width: 280px;
display: flex;
flex-direction: column;
align-items: center;
}
.previewTitle {
font-weight: 500;
color: #303133;
line-height: 20px;
font-size: 14px;
width: 70px;
text-align: center;
margin-bottom: 20px;
}
.footBtn {
width: 100%;
height: 56px;
background: #ffffff;
box-shadow: 1px -2px 8px 0px rgba(220, 223, 230, 0.6);
position: fixed;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
}
.previewBottom {
font-size: 12px;
text-align: center;
width: 228px;
color: #909399;
line-height: 17px;
}
</style>
<template>
<div class="daily-set-content boder-box">
<div class="table-condition flex flex-space-between m-b-23">
<div class="table-condition-left flex flex-align-center">
<el-input placeholder="请输入模板ID/名称、创建人" class="w-260"> <i slot="prefix" class="el-input__icon el-icon-search"></i> </el-input>
<div class="daily-set-content">
<div class="flex flex-space-between m-b-16">
<div class="flex flex-align-center">
<el-input placeholder="请输入模板ID/名称、创建人" class="w-260" v-model="form.pageSearchText" @keyup.native="value => toInput(value, searchInput)" clearable @clear="getList"> <i slot="prefix" class="el-input__icon el-icon-search"></i> </el-input>
<span style="font-size:14px;" class="m-l-10">模板创建时间:</span>
<el-date-picker class="m-l-10 w-256" v-model="form.dateRange" @change="getList" type="daterange" :value-format="'yyyy-MM-dd'" clearable @clear="getList" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
</div>
<el-button type="primary" @click="addTemp">新增模板</el-button>
</div>
<div class="tip-text">
<div class="tips">
二维码只是样式预览效果,请勿直接使用
</div>
<div class="card-content">
<card-view :content="item" v-for="item in list" :key="item.templateId" />
<div class="card-content" v-loading="loading">
<card-view :content="item" v-for="item in list" :key="item.templateId" @relationDetail="relationDetail(item)" @deleteTemp="deleteTemp(item)" @editTemp="editTemp(item)" />
</div>
<relation-dialog :dialogVisible.sync="dialogVisible" :templateId="templateId" />
<div class="text-right" v-if="list.length != 0">
<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size.sync="form.pageSize" :current-page.sync="form.pageNum" layout="total, sizes, prev, pager, next, jumper" :page-sizes="[20, 40, 60, 80]" :total="total"> </el-pagination>
</div>
</div>
</template>
<script>
import cardView from './cardView';
import relationDialog from './relationDialog';
// import { guidePageList, guidePageDel, guidePageRelation } from '@/api/actCode';
import { _debounce } from '@/common/js/public';
export default {
data() {
return {
form: {
pageSearchText: '',
dateRange: [],
pageSize: 20,
pageNum: 1
},
loading: false,
total: 100,
templateId: '',
list: [
{
templateName: '模板名称模板名称模板名称模板名称模板',
......@@ -28,7 +47,9 @@ export default {
merchantPhoneNumber: '0571-1234567',
merchantLogo: 'https://pic01-10001430.image.myqcloud.com/d4b383df-8eb1-49d6-9c84-8e3e36958464',
pageBackgroudImg: 'https://pic01-10001430.image.myqcloud.com/b91f73af-43e4-4733-a4d3-0ab0bcb4ce7f',
guideComment: '长按保存图片并识别二长按保存图片并识别二长按保存图片并识别二长按保存图片并识别二长按保存图片并识别二'
guideComment: '长按保存图片并识别二长按保存图片并识别二长按保存图片并识别二长按保存图片并识别二长按保存图片并识别二',
createorName: '艾蜜雪管理员',
createTime: 1657257986000
},
{
templateName: '模板名称模板名称模板名称模板名称模板',
......@@ -39,7 +60,9 @@ export default {
merchantPhoneNumber: '0571-1234567',
merchantLogo: 'https://pic01-10001430.image.myqcloud.com/d4b383df-8eb1-49d6-9c84-8e3e36958464',
pageBackgroudImg: '',
guideComment: '长按识别二维码添加您的专属导购'
guideComment: '长按识别二维码添加您的专属导购',
createorName: '艾蜜雪管理员',
createTime: 1657257986000
},
{
templateName: '模板名称模板名称模板名称模板名称模板',
......@@ -50,7 +73,9 @@ export default {
merchantPhoneNumber: '0571-1234567',
merchantLogo: 'https://pic01-10001430.image.myqcloud.com/d4b383df-8eb1-49d6-9c84-8e3e36958464',
pageBackgroudImg: 'https://pic01-10001430.image.myqcloud.com/b91f73af-43e4-4733-a4d3-0ab0bcb4ce7f',
guideComment: '长按识别二维码添加您的专属导购'
guideComment: '长按识别二维码添加您的专属导购',
createorName: '艾蜜雪管理员',
createTime: 1657257986000
},
{
templateName: '模板名称模板名称模板名称模板名称模板',
......@@ -61,7 +86,9 @@ export default {
merchantPhoneNumber: '0571-1234567',
merchantLogo: 'https://pic01-10001430.image.myqcloud.com/d4b383df-8eb1-49d6-9c84-8e3e36958464',
pageBackgroudImg: 'https://pic01-10001430.image.myqcloud.com/b91f73af-43e4-4733-a4d3-0ab0bcb4ce7f',
guideComment: '长按识别二维码添加您的专属导购'
guideComment: '长按识别二维码添加您的专属导购',
createorName: '艾蜜雪管理员',
createTime: 1657257986000
},
{
templateName: '模板名称模板名称模板名称模板名称模板',
......@@ -72,15 +99,87 @@ export default {
merchantPhoneNumber: '0571-1234567',
merchantLogo: 'https://pic01-10001430.image.myqcloud.com/d4b383df-8eb1-49d6-9c84-8e3e36958464',
pageBackgroudImg: 'https://pic01-10001430.image.myqcloud.com/b91f73af-43e4-4733-a4d3-0ab0bcb4ce7f',
guideComment: '长按识别二维码添加您的专属导购'
guideComment: '长按识别二维码添加您的专属导购',
createorName: '艾蜜雪管理员',
createTime: 1657257986000
}
]
};
},
components: {
cardView
cardView,
relationDialog
},
methods: {}
methods: {
toInput: _debounce(function(e, value) {
this.getList();
}, 500),
getList() {
const param = { ...this.form };
if (this.form.dateRange && this.form.dateRange.length) {
param.startTime = this.form.dateRange[0] + ' 00:00:00';
param.endTime = this.form.dateRange[1] + ' 23:59:59';
}
delete param.dateRange;
console.log(param);
// this.loading=true;
// guidePageList(param).then(res => {
// console.log(res);
// const { result } = res;
// if (result) {
// this.total = result.pageInfo.total;
// this.list = result.list;
// }
// }).finally(_=>{this.loading=false})
},
handleSizeChange(val) {
this.form.pageNum = 1;
this.form.pageSize = val;
this.getList();
},
handleCurrentChange(val) {
this.form.pageNum = val;
this.getList();
},
addTemp() {
this.$router.push('/ladingPageAdd');
},
relationDetail(item) {
this.dialogVisible = true;
this.templateId = item.templateId;
},
deleteTemp(item) {
// guidePageRelation({ templateId: item.templateId }).then(res => {
// const { result } = res;
// if (result.list) {
// this.$confirm(`当前模板已关联链接(${result.pageInfo.total}),请确认投放链接已投放结束,取消关联后才可删除该模板`, '无法删除该模板', {
// confirmButtonText: '关联详情',
// cancelButtonText: '取消',
// type: 'warning'
// }).then(_ => {
// this.relationDetail(item);
// });
// } else {
// this.$confirm('模板删除后将无法恢复', '确认要删除该模板吗?', {
// confirmButtonText: '删除',
// cancelButtonText: '取消',
// type: 'warning'
// }).then(_ => {
// this.deleteRequest(item);
// });
// }
// });
},
deleteRequest(item) {
// guidePageDel({ templateId: item.templateId }).then(res => {
// this.$message.success('删除成功');
// });
},
editTemp(item) {
console.log(item);
this.$router.push({ path: '/ladingPageEdit', query: { id: item.templateId } });
}
}
};
</script>
......@@ -94,4 +193,11 @@ export default {
flex-wrap: wrap;
gap: 20px;
}
.tips {
font-size: 12px;
font-weight: 400;
color: #606266;
line-height: 17px;
margin-bottom: 16px;
}
</style>
<template>
<el-dialog title="关联详情" width="600px" :visible.sync="dialogVisible" @close="$emit('update:dialogVisible', false)">
<div class="daily-set-content boder-box">
<div class="flex flex-space-between m-b-16">
<el-input placeholder="请输入链接名称/ID" class="w-260" v-model="form.searchContent" @keyup.native="value => toInput(value, searchInput)" clearable @clear="getList"> <i slot="prefix" class="el-input__icon el-icon-search"></i> </el-input>
</div>
</div>
<el-table class="select-table" ref="multipleTable" v-loading="loading" :data="tableData" height="450" tooltip-effect="dark">
<el-table-column prop="releationId" label="链接ID" show-overflow-tooltip></el-table-column>
<el-table-column prop="referName" label="链接名称" show-overflow-tooltip></el-table-column>
<el-table-column prop="" label="操作" width="80">
<template slot-scope="{ row }">
<el-button type="text" @click="$emit('goLinkDetail', row.referId)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination class="text-right margin-pg" @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size.sync="form.pageSize" :current-page.sync="form.pageNum" layout="prev, pager, next" :total="total"> </el-pagination>
</el-dialog>
</template>
<script>
// import { guidePageRelation } from '@/api/actCode';
import { _debounce } from '@/common/js/public';
export default {
data() {
return {
form: {
searchContent: '',
templateId: '',
pageNum: 1,
pageSize: 20
},
loading: false,
total: 50,
tableData: []
};
},
props: {
templateId: {
type: String,
default: ''
},
dialogVisible: {
type: Boolean,
default: false
}
},
watch: {
templateId(val) {
if (val) {
this.form = { searchContent: '', templateId: val, pageNum: 1, pageSize: 20 };
this.getList();
}
}
},
methods: {
toInput: _debounce(function(e, value) {
this.getList();
}, 500),
getList() {
console.log(this.form);
const obj = {
releationId: 'HM01123456789123000001',
referName: '名称名称名称名名称名称名',
referId: 1
};
for (let i = 0; i < 50; i++) {
this.tableData.push(obj);
}
// this.loading=true;
// guidePageRelation(this.form).then(res => {
// console.log(res);
// const { result } = res;
// if (result) {
// this.total = result.pageInfo.total;
// this.list = result.list;
// }
// }).finally(_=>{this.loading=false;})
},
handleSizeChange(val) {
this.form.pageNum = 1;
this.form.pageSize = val;
this.getList();
},
handleCurrentChange(val) {
this.form.pageNum = val;
this.getList();
}
}
};
</script>
<style type="text/scss" lang="scss" scoped>
.margin-pg {
margin: 20px 0 0 0;
}
</style>
<template>
<div>
<setActCode>
<template #typeCode>
<el-form-item label="活码类型" prop="hmType">
<el-radio-group v-model="form.hmType">
<el-radio :label="1">单人活码</el-radio>
</el-radio-group>
</el-form-item>
</template>
<template #member>
<el-form-item label="使用成员" prop="memberType">
<el-radio-group v-model="form.memberType">
<el-radio :label="1">全部成员</el-radio>
<el-radio :label="2">部分成员</el-radio>
</el-radio-group>
<br />
<el-button plain class="ylbtn" v-if="form.memberType == 2"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button>
</el-form-item>
</template>
</setActCode>
</div>
</template>
<script>
import setActCode from '../../../components/actCodeSet.vue';
export default {
components: { setActCode },
data() {
return {
form: {
hmType: 1,
memberType: 1
}
};
},
methods: {}
};
</script>
<style lang="less" scoped>
.ylbtn {
margin-top: 10px;
border: 1px solid #2f54eb;
color: #2f54eb;
}
</style>
......@@ -10,11 +10,11 @@
<li v-for="listItem in groupList" :key="listItem.groupId" :class="['list-item', 'member-list', { 'active-li': listItem.groupId == currentListItemUuid }]" @click="clickGroupListItem(listItem)">
<div class="wrap">
<span :title="listItem.groupName" class="listItemName overflow-ellipsis">{{ listItem.groupName }}</span>
<span>{{ `(${listItem.releationNum})` }}</span>
<span>{{ `(${listItem.referNum})` }}</span>
</div>
<el-popover placement="bottom" trigger="hover" v-if="isShowGroupListItemMore(listItem)">
<p class="more" @click="editGroupListItem(listItem)">编辑</p>
<p class="more" @click="delGroupListItem(listItem)" v-if="!listItem.releationNum">删除</p>
<p class="more" @click="delGroupListItem(listItem)" v-if="!listItem.referNum">删除</p>
<i slot="reference" class="iconfont-hb3 icongengduo icon"></i>
</el-popover>
</li>
......@@ -40,32 +40,23 @@
</template>
<script>
import { findActCodeGroupListApi, addActCodeGroupApi, editActCodeGroupApi, delActCodeGroupApi } from '@/api/actCode.js';
import { addActCodeGroupApi, editActCodeGroupApi, delActCodeGroupApi } from '@/api/actCode.js';
import { getRequest } from '@/api/api';
export default {
name: 'staffActCodeGroupList',
data() {
const groupList = [
{
groupName: '全部分组',
releationNum: 11,
referNum: 11,
groupId: 1
},
{
groupName: '默认分组',
releationNum: 10,
groupId: 2
}
// {
// groupName: '默认分组',
// referNum: 10,
// groupId: 2
// }
];
let i = 3;
while (i <= 15) {
groupList.push({
groupName: '单人分组',
releationNum: i,
groupId: i
});
i++;
}
return {
currentListItemUuid: 1,
searchGroupInput: '',
......@@ -88,7 +79,7 @@ export default {
};
},
created() {
// this.searchGroup();
this.searchGroup();
},
methods: {
load() {
......@@ -145,18 +136,19 @@ export default {
})
.then(() => {
// 删除操作
const listItemIndex = this.groupList.findIndex(item => item.groupId === listItem.groupId);
if (listItemIndex < 0) return;
// const listItemIndex = this.groupList.findIndex(item => item.groupId === listItem.groupId);
// if (listItemIndex < 0) return;
let params = {
groupId: listItem.groupId
};
delActCodeGroupApi(params).then(res => {
if (res.errorCode == 0) {
if (res.data.code == 0) {
this.$message({
type: 'success',
message: '删除成功!'
});
this.groupList.splice(listItemIndex, 1);
// this.groupList.splice(listItemIndex, 1);
this.searchGroup();
}
});
})
......@@ -170,14 +162,19 @@ export default {
let resSucTip = `${this.isEditGroup ? '修改' : '新增'}成功`;
let resErTip = `${this.isEditGroup ? '修改' : '新增'}失败`;
if (this.isEditGroup) {
res = await editActCodeGroupApi(this.groupListForm);
let obj = {
groupId: this.groupListForm.groupId,
groupName: this.groupListForm.groupName
};
res = await editActCodeGroupApi(obj);
} else {
let params = {
groupName: this.groupListForm.groupName
};
res = await addActCodeGroupApi(params);
}
if (res.errorCode == 0) {
// return console.log(res, 'res');
if (res.data.code == 0) {
this.$message({
type: 'success',
message: resSucTip,
......@@ -200,7 +197,9 @@ export default {
}
});
},
searchGroup(val) {
async searchGroup(val) {
const countNum = await getRequest('/haoban-manage3-web/hm/group/refer/count', {});
// this.groupList[0].referNum = countNum.data.result;
if (this.pageNum == 1) {
this.groupList = [];
}
......@@ -212,12 +211,20 @@ export default {
if (String(this.searchGroupInput)) {
params.groupName = this.searchGroupInput;
}
findActCodeGroupListApi(params).then(res => {
if (res.errorCode == 0) {
const { list, pageInfo } = res.result || {};
if (Array.isArray(list)) {
list.reduce((pre, cur) => pre.push(cur), this.groupList);
}
await getRequest('/haoban-manage3-web/hm/group/list', params).then(res => {
if (res.data.code == 0) {
const { list, pageInfo } = res.data.result || {};
// if (Array.isArray(list)) {
// list.reduce((pre, cur) => pre.push(cur), this.groupList);
// }
this.groupList = list;
this.groupList.unshift({
groupName: '全部分组',
referNum: 11,
groupId: null
});
this.groupList[0].referNum = countNum.data.result;
console.log(this.groupList, '444');
this.allPageNum = pageInfo.pages || 1;
}
});
......
<template>
<div>
<setActCode>
<template #typeCode>
<el-form-item label="活码类型" prop="hmType">
<el-radio-group v-model="form.hmType">
<el-radio :label="1">单人活码</el-radio>
<el-radio :label="2">多人活码</el-radio>
</el-radio-group>
</el-form-item>
</template>
<template #codeName>
<el-form-item label="活码名称" prop="name">
<el-input class="w340" v-model="form.name" placeholder="请输入活码名称,默认使用成员名称" maxlength="20" show-word-limit></el-input>
</el-form-item>
</template>
<template #member>
<el-form-item label="使用成员" prop="memberList">
<p class="tabs" v-if="form.hmType == 1">单人活码仅可选择一名成员</p>
<p class="tabs" v-if="form.hmType == 2">若选择多名成员,则随机分配企微员工</p>
<el-button plain class="ylbtn"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button>
</el-form-item>
</template>
</setActCode>
</div>
</template>
<script>
import setActCode from '../../../components/actCodeSet.vue';
// import { getRequest } from '@/api/api';
import errMsg from '@/common/js/error';
export default {
components: { setActCode },
created() {
console.log(this.$route.query, 7878);
},
data() {
return {
loading: false,
form: {
hmType: 1,
name: '',
memberList: []
}
};
},
methods: {
async getActCodeInfo() {
const that = this;
that.actCode = '999';
if (that.actCode.length <= 0) return;
that.loading = true;
// getRequest('/hm/qrcode/detail', { hmId: that.actCode })
// .then(res => {
let res = {
data: {
errorCode: 1,
result: {
name: '测试活码好的可以',
hmId: '727363646474849483332',
statusFlag: 1,
overFlag: 1,
hmType: 2,
creatorName: '少见多怪',
createTime: 182736347383,
passFlag: 0,
welcomeId: 'b680a2cf18b742cc9f4560f6195c9ec6',
enterpriseId: '5bd929fd3b2c49deaa1184bcb0d669b3'
}
}
};
let resData = res.data;
that.loading = false;
if (resData.errorCode == 1) {
that.statusIndex = resData.result.statusFlag == 1 && resData.result.overFlag == 1 ? 4 : resData.result.statusFlag;
that.codeInfo = resData.result;
return;
}
errMsg.errorMsg(resData);
// })
// .catch(function(error) {
// that.$message.error({
// duration: 1000,
// message: error.message
// });
// });
}
}
};
</script>
<style lang="less" scoped>
.ylbtn {
border: 1px solid #2f54eb;
color: #2f54eb;
}
.w340 {
width: 340px;
}
</style>
......@@ -3,30 +3,21 @@
<div class="m20 formBox">
<dm-sub-title text="基础信息" type="line" />
<el-form class="mt20" ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="活码类型" prop="hmType">
<el-radio-group v-model="form.hmType">
<el-radio :label="1">单人活码</el-radio>
<el-radio :label="2">多人活码</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="活码名称" prop="name">
<el-input class="w340" v-model="form.name" placeholder="请输入活码名称,默认使用成员名称" maxlength="20" show-word-limit></el-input>
</el-form-item>
<el-form-item label="活动分组" prop="actGroup">
<el-select class="w340" filterable v-model="form.actGroup"></el-select>
</el-form-item>
<el-form-item label="使用成员" prop="memberList">
<p class="tabs" v-if="form.hmType == 1">单人活码仅可选择一名成员</p>
<p class="tabs" v-if="form.hmType == 2">若选择多名成员,则随机分配企微员工</p>
<el-button plain class="ylbtn"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button>
<slot name="typeCode"></slot>
<slot name="codeName"></slot>
<el-form-item label="活码分组" prop="actGroup">
<el-select class="w340" filterable v-model="form.actGroup">
<el-options v-for="(item, index) in groupList" :key="index"></el-options>
</el-select>
</el-form-item>
<slot name="member"></slot>
<el-form-item label="自动通过好友">
<el-switch v-model="form.passFlag" class="mr15"></el-switch>
<span class="tabs">开启后,客户添加该企业微信时,无需好友验证,将会自动添加成功</span>
</el-form-item>
<el-form-item label="活码标签">
<el-button plain class="ylbtn" @click="tagsDialogVisible = true"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加标签</el-button>
<dm-memberTag-group :visiable.sync="tagsDialogVisible" @save="saveTagPop" :projectName="haobao - 3"></dm-memberTag-group>
<dm-memberTag-group :visiable.sync="tagsDialogVisible" :projectName="haobao - 3"></dm-memberTag-group>
</el-form-item>
<dm-sub-title text="欢迎语设置" type="line" class="mt40b20" />
<el-row>
......@@ -49,11 +40,15 @@
<el-form-item label="选择欢迎语" v-if="form.welcomes == 1">
<div class="welcomeTable">
<div class="wtabTop">
<el-input class="w260" placeholder="请输入标题"></el-input>
<el-input class="w260" placeholder="请输入标题" v-model="pageParam.search"></el-input>
<el-button plain class="ylbtn" @click="changeRoute">新建欢迎语</el-button>
</div>
<el-table :data="welcomeTableData" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"> </el-table-column>
<el-table :data="welcomeTableData">
<el-table-column width="55">
<template slot-scope="scope">
<el-radio :label="scope.$index" @change.native="getCurrentRow(scope.row)" v-model="welcome">&nbsp;</el-radio>
</template>
</el-table-column>
<el-table-column prop="welcomeTitle" label="标题" width="158px"></el-table-column>
<el-table-column prop="welcomeContent" label="内容" show-overflow-tooltip></el-table-column>
<el-table-column prop="welcomeEnclosure" label="附件" width="212px" show-overflow-tooltip>
......@@ -69,14 +64,13 @@
</template>
</el-table-column>
</el-table>
<!-- <dm-pagination background @current-change="handleCurrentChange" :current-page="pageParam.currentPage" layout=" prev, pager, next " :total="totalCount"> </dm-pagination> -->
<dm-pagination class="paginationBox" background layout=" prev, pager, next " :total="100"> </dm-pagination>
<dm-pagination class="paginationBox" background @current-change="handleCurrentChange" :current-page="pageParam.currentPage" layout=" prev, pager, next " :page-size="4" :total="100"> </dm-pagination>
</div>
</el-form-item>
</el-col>
<el-col :span="7" v-if="form.welcomes == 1">
<el-col :span="7" v-if="form.welcomes == 1 && welcomeContent != ''">
<p class="welcomeTitle">欢迎语预览</p>
<previewWelcome :welcomeContent="welcomeTableData.welcomeContent"></previewWelcome>
<previewWelcome :welcomeContent="welcomeContent"></previewWelcome>
</el-col>
</el-row>
</el-form>
......@@ -89,8 +83,9 @@
<script>
import previewWelcome from '../../../components/preview-welcome.vue';
// import { findActCodeGroupListApi } from '@/api/actCode.js';
export default {
name: 'addActCode',
name: 'setActCode',
components: { previewWelcome },
props: {
actCodeData: {
......@@ -119,21 +114,44 @@ export default {
welcomeTableData: [],
tagsDialogVisible: false,
data: '',
multipleSelection: []
welcome: '',
templateSelection: {},
welcomeContent: '',
pageParam: {
search: '',
currentPage: 1
},
groupList: []
};
},
created() {
this.getWelcomeTable();
// this.searchGroup();
},
methods: {
handleSelectionChange(val) {
console.log(val, 'val');
this.multipleSelection = val;
searchGroup(val) {
// const params = {
// pageNum: 1,
// pageSize: 4
// };
// if (String(this.searchGroupInput)) {
// params.groupName = this.searchGroupInput;
// }
// findActCodeGroupListApi(params).then(res => {
// console.log(res);
// });
},
// 当前页变化
handleCurrentChange(val) {
console.log(val);
this.pageParam.currentPage = val;
// this.getAjaxMembers();
},
// 选择欢迎语列表数据
getWelcomeTable() {
this.welcomeTableData = [
{
welcomeId: 1,
welcomeTitle: '标题标题标题',
welcomeContent: '欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容',
welcomeEnclosure: {
......@@ -142,6 +160,7 @@ export default {
}
},
{
welcomeId: 2,
welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: {
......@@ -150,6 +169,7 @@ export default {
}
},
{
welcomeId: 3,
welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: {
......@@ -158,6 +178,7 @@ export default {
}
},
{
welcomeId: 4,
welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: {
......@@ -171,6 +192,11 @@ export default {
changeRoute() {
this.$router.push({ path: '/salutatorySet' });
},
getCurrentRow(row) {
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
this.templateSelection = row;
this.welcomeContent = this.templateSelection.welcomeContent;
},
saveTagPop(data) {
console.log(data);
this.data = data;
......@@ -183,16 +209,10 @@ export default {
};
</script>
<style lang="less" scoped>
// /deep/ .el-table__body-wrapper .el-checkbox .el-checkbox__input .el-checkbox__inner {
// border-radius: 100%;
// }
/deep/ .el-table__body-wrapper .el-table__row .cell {
padding-left: 10px !important;
line-height: 14px;
}
/deep/ .el-table__header-wrapper .el-checkbox {
display: none;
}
.m20 {
margin: 20px;
}
......
......@@ -2,28 +2,28 @@
<div>
<el-row>
<div class="leftBox">
<el-input class="w260 mr10" placeholder="请输入门店名称/code" v-model="pageParam.search1" prefix-icon="el-icon-search"></el-input>
<el-input class="w260 mr10" placeholder="请输入导购名称/code" v-model="pageParam.search2" prefix-icon="el-icon-search"></el-input>
<el-input class="w260 mr10" placeholder="请输入门店名称/code" v-model="pageParam.storeSearch" prefix-icon="el-icon-search"></el-input>
<el-input class="w260 mr10" placeholder="请输入导购名称/code" v-model="pageParam.clerkSearch" prefix-icon="el-icon-search"></el-input>
</div>
<div class="rightBox">
<ul class="datebox" v-for="(lis, index) in dateLis" :key="lis.key">
<li :class="active == index ? 'activeClass' : 'noActive'" class="dateLisBox" @click="btnChange(index)">{{ lis.value }}</li>
</ul>
<el-date-picker class="w256" v-model="pageParam.dateDefault" type="daterange" range-separator="~" start-placeholder="创建开始日期" end-placeholder="创建结束日期" :default-time="['00:00:00', '23:59:59']" :picker-options="pickerOptions()" @change="onDateChange"> </el-date-picker>
<el-date-picker class="w256" v-model="dateDefault" type="daterange" range-separator="~" start-placeholder="创建开始日期" end-placeholder="创建结束日期" :default-time="['00:00:00', '23:59:59']" :picker-options="pickerOptions()" @change="onDateChange"> </el-date-picker>
</div>
</el-row>
<el-table class="mt18" :data="tableData" @sort-change="sortChange">
<el-table-column label="导购信息">
<template slot-scope="{ row }">
<p class="overflow-ellipsis" :title="row.guideMsg">{{ row.guideMsg }}</p>
<p>{{ row.guideMsgs }}</p>
<p class="overflow-ellipsis" :title="row.clerkName">{{ row.clerkName }}</p>
<p>{{ row.clerkCode }}</p>
</template>
</el-table-column>
<el-table-column label="导购所属门店">
<template slot-scope="{ row }">
<p class="overflow-ellipsis" :title="row.guideStore">{{ row.guideStore }}</p>
<p>{{ row.guideStoreCode }}</p>
<p class="overflow-ellipsis" :title="row.storeName">{{ row.storeName }}</p>
<p>{{ row.storeCode }}</p>
</template>
</el-table-column>
<el-table-column label="企微号">
......@@ -32,26 +32,27 @@
<p>{{ row.qwCode }}</p>
</template>
</el-table-column>
<el-table-column label="新增总人数" prop="addTotal" sortable></el-table-column>
<el-table-column label="今日新增总人数" prop="todayAddTotal" sortable></el-table-column>
<el-table-column label="新增总人数" prop="addFriendNumTd" sortable></el-table-column>
<el-table-column label="今日新增总人数" prop="addFriendNumD" sortable></el-table-column>
<el-table-column label="今日流失人数" prop="toadyLess" sortable></el-table-column>
<el-table-column label="流失总人数" prop="lessTotal" sortable></el-table-column>
<el-table-column label="今日已达上限" prop="status">
<el-table-column label="今日已达上限" prop="overFlag">
<template slot-scope="{ row }">
<p>{{ row.status == 1 ? '是' : '否' }}</p>
<p>{{ row.overFlag == 1 ? '是' : '否' }}</p>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="{ row }">
<el-button type="text" @click="lookRecords(row.actId)">查看记录</el-button>
<el-button type="text" @click="lookRecords(row.hmId)">查看记录</el-button>
</template>
</el-table-column>
</el-table>
<dm-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageParam.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="pageParam.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </dm-pagination>
<dm-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageParam.pageNum" :page-sizes="[20, 40, 60, 80]" :page-size="pageParam.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </dm-pagination>
</div>
</template>
<script>
import { detailClerkList } from '@/api/actCode.js';
export default {
name: 'DateDetail',
props: {
......@@ -71,12 +72,12 @@ export default {
],
tableData: [],
pageParam: {
search1: '',
search2: '',
dateDefault: [],
currentPage: 1,
storeSearch: '',
clerkSearch: '',
pageNum: 1,
pageSize: 20
},
dateDefault: [],
totalCount: 0,
sortColumn: '',
sortType: '',
......@@ -142,7 +143,7 @@ export default {
btnChange(index) {
//把index值赋给active,点击改变样式
this.active = index;
this.pageParam.dateDefault = [];
this.dateDefault = [];
let setDate;
if (index == 0) {
// 近7天
......@@ -170,20 +171,20 @@ export default {
};
}
const [start, end] = this.getDateRange(setDate);
this.pageParam.dateDefault.push(end);
this.pageParam.dateDefault.push(start);
this.dateDefault.push(end);
this.dateDefault.push(start);
},
onDateChange() {
this.active = -1;
},
// 当前页变化
handleCurrentChange(val) {
this.pageParam.currentPage = val;
sessionStorage.setItem('currentPage', val);
this.pageParam.pageNum = val;
sessionStorage.setItem('pageNum', val);
},
// 页码
handleSizeChange(val) {
this.pageParam.currentPage = 1;
this.pageParam.pageNum = 1;
this.pageParam.pageSize = val;
this.getTableList();
},
......@@ -195,39 +196,46 @@ export default {
that.getTableList();
},
// 列表数据
getTableList() {
this.tableData = [
{
guideMsg: '导购信息1索尼大法根据历史的快乐风格问题',
guideMsgs: '2364756qre',
guideStore: '门店名称1哈金斯的看法和大家说法可接受的垡健康是的发送到',
guideStoreCode: '4564564',
qw: '趣味',
qwCode: '23674726',
addTotal: 1,
todayAddTotal: 2,
toadyLess: 89,
lessTotal: 23,
staus: 1
},
{
guideMsg: '导购信息1索尼大法根据历史的快乐风格问题',
guideMsgs: '2364756qre',
guideStore: '门店名称1哈金斯的看法和大家说法可接受的垡健康是的发送到',
guideStoreCode: '4564564',
qw: '趣味',
qwCode: '23674726',
addTotal: 9,
todayAddTotal: 5,
toadyLess: 77,
lessTotal: 66,
staus: 0
}
];
async getTableList() {
// this.tableData = [
// {
// clerkName: '导购信息1索尼大法根据历史的快乐风格问题',
// clerkCode: '2364756qre',
// storeName: '门店名称1哈金斯的看法和大家说法可接受的垡健康是的发送到',
// storeCode: '4564564',
// qw: '趣味',
// qwCode: '23674726',
// addFriendNumTd: 1,
// addFriendNumD: 2,
// toadyLess: 89,
// lessTotal: 23,
// staus: 1
// },
// {
// clerkName: '导购信息1索尼大法根据历史的快乐风格问题',
// clerkCode: '2364756qre',
// storeName: '门店名称1哈金斯的看法和大家说法可接受的垡健康是的发送到',
// storeCode: '4564564',
// qw: '趣味',
// qwCode: '23674726',
// addFriendNumTd: 9,
// addFriendNumD: 5,
// toadyLess: 77,
// lessTotal: 66,
// staus: 0
// }
// ];
const obj = {
...this.pageParam,
startTime: this.dateDefault ? Date.parse(new Date(this.dateDefault[0]).toString()) : '',
endTime: this.dateDefault ? Date.parse(new Date(this.dateDefault[1]).toString()) : ''
};
const a = await detailClerkList(obj);
console.log(a, 'a');
},
lookRecords(actId) {
lookRecords(hmId) {
const that = this;
that.$router.push(`/actCodeRecord?actId=${actId}`);
that.$router.push(`/actCodeRecord?hmId=${hmId}`);
}
}
};
......
......@@ -474,6 +474,7 @@ input:focus {
.p-t-185 {
padding-top: 185px;
}
.m-l-10 {
margin-left: 10px;
}
......@@ -595,12 +596,18 @@ input:focus {
.w-157 {
width: 157px;
}
.w-256 {
width: 256px !important;
}
.w-260 {
width: 260px;
width: 260px !important;
}
.w-264 {
width: 264px;
}
.w-340 {
width: 340px !important;
}
.w-250 {
width: 250px;
}
......@@ -627,6 +634,7 @@ input:focus {
text-overflow: ellipsis;
}
/* flex */
.flex {
display: -webkit-box;
......
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