Commit 0e590bf2 by zhangmeng

营销事件组件

parent 06248750
......@@ -3979,6 +3979,7 @@
color: #606266;
font-size: 14px; }
.el-dialog__footer {
border-top:1px solid #DCDFE6;
padding: 20px;
padding-top: 10px;
text-align: right;
......@@ -25,7 +25,7 @@
</template>
<script>
import imgItemRadio from './imgItemRadio'
import {loadImgList,updateGroupName,addGroupService,deleteGroupService,deleteImageService,changeGroupService} from '@/service/api/wechatApi.js';
import {loadImgList,addGroupService} from '@/service/api/wechatApi.js';
export default {
name:'dm-ilib',
props:{
......
......@@ -5,8 +5,9 @@
<a @click="addLinkDialogShow" class="iconfont icon-lianjie" title="添加链接"></a>
<a @click="removeLink" class="iconfont icon-duankailianjie" :class="{'no-link':!cancelLink}" title="取消链接"></a>
</div>
<div class="text-content">
<div @click="selectLeft" v-html="textarea" class="my-textarea" @blur="getAllMytext" ref="myTextarea" contentEditable=true></div>
<div class="text-content"> <!-- @keyup="textInput(textarea,$event)" -->
<div @click="selectLeft" @keyup="textInput(textarea,$event)" v-html="textarea" class="my-textarea" @blur="getAllMytext" ref="myTextarea" contentEditable=true></div>
<!-- <p class="text-tip">{{textNum}}/{{textLength}}</p> -->
</div>
</div>
<!-- 添加回复链接的dialog -->
......@@ -19,10 +20,10 @@
<div class="add-replay-content">
<el-form label-position="right" ref="form" :model="form" label-width="100px">
<el-form-item class="text-content" label="文本内容">
<dm-input v-model="form.text" @keyup.native="toInput(form.text,$event)" :maxlength="20"></dm-input>
<!-- <span class="text-num">{{inputNum}}/{{inputLength}}</span> -->
<el-input v-model="form.text" @keyup.native="toInput(form.text,$event)"></el-input>
<span class="text-num">{{inputNum}}/{{inputLength}}</span>
</el-form-item>
<el-form-item label="文本链接" v-show="false">
<el-form-item label="文本链接" v-show="false">
<el-radio-group v-model="form.linkStyle">
<el-radio label="0">网址</el-radio>
<el-radio label="1">小程序</el-radio>
......@@ -53,8 +54,8 @@
</div>
</el-form-item>
<el-form-item label="链接类型" style="margin-bottom: 0">
<el-select @change="changePreValue" class="w200" v-model="preValue" placeholder="请选择" style="margin-right: 6px;">
<el-form-item label="链接类型" class="url-link-wrap" style="margin-bottom: 0">
<el-select @change="changePreValue" v-model="preValue" placeholder="请选择" style="margin-right: 6px;">
<el-option
v-for="item in options1"
:key="item.value"
......@@ -62,7 +63,7 @@
:value="item.value">
</el-option>
</el-select>
<el-select v-if="preValue" class="w200" @change="changeNextValue" v-model="nextValue" placeholder="请选择">
<el-select v-if="preValue" @change="changeNextValue" v-model="nextValue" placeholder="请选择">
<el-option
v-for="item in options2"
:key="item.linkId"
......@@ -135,6 +136,9 @@
preValue: '',
nextValue:'',
textNum:0,
textLength:10
}
},
watch:{
......@@ -176,20 +180,28 @@
if(reg.exec(this.textarea)!=null){
this.cancelLink=true;
}
},
},
textInput(v,e){ // 控制微信文本的文字
var textContent = this.$refs.myTextarea.innerText;
textContent = strLength.getByteVal2(e.target.innerText);
this.textNum = strLength.getZhLen(textContent);
if(this.textNum>=300){
this.$message.error('最多300个字符哦');
}
},
toInput(value,e) { // 控制字符数量
var that = this;
that.form.text = strLength.getByteVal(e.target.value,that.inputLength);
that.inputNum = strLength.getZhLen(that.form.text);
},
beforeAvatarUpload(file) {
console.log(file)
// console.log(file)
let fd = new FormData();
fd.append('file', file);
fd.append('requestProject', 'gic-web');
this.axios.post('/api-admin/marketing-wechat-image-save', fd).then((res)=> {//成功后回调
var data = res.data;
console.log(data);
// console.log(data);
if(data.errorCode==0){
this.imageUrl = data.result.qcloudImageUrl;
this.imageMediaId = data.result.imageMediaId;
......@@ -239,6 +251,11 @@
this.cancelLink=false;
this.textarea = this.$refs.myTextarea.innerText;
this.xcxUrlObj.textarea = this.textarea;
var textContent = strLength.getByteVal2(this.textarea);
this.textNum = strLength.getZhLen(textContent);
this.xcxUrlObj.textNum = this.textNum;
if(this.form.linkStyle==0){ // 文本链接
this.xcxUrlObj.imageMediaId = ''
} else if(this.form.linkStyle==1){ // 小程序链接
......@@ -246,11 +263,17 @@
}
this.$emit('listenWxText',this.xcxUrlObj)
},
getAllMytext(){ // 文本框输入失去焦点时获得输入框的内容
console.log(this.$refs.myTextarea.innerHTML);
this.xcxUrlObj.textarea = this.$refs.myTextarea.innerHTML.replace(/<\/div>|&nbsp;/g,'').replace(/<div>/g,'<br>').split('<br>').filter(v => v).join('<br>').replace(/<br>/g,'\n').replace('undefined','');
getAllMytext(){ // 文本框输入失去焦点时获得输入框的内容
this.textarea = this.$refs.myTextarea.innerHTML;
this.xcxUrlObj.textarea = this.textarea;
var textContent = strLength.getByteVal2(this.$refs.myTextarea.innerText);
this.textNum = strLength.getZhLen(textContent);
this.xcxUrlObj.textNum = this.textNum;
if(this.textNum>=300){
this.$message.error('最多300个字符哦');
// return;
}
var reg = /<a\s+href=['"]([^"]*)['"].*?[^>]*>(.*?)<\/a>/g;
if(reg.exec(this.textarea)!=null){
this.cancelLink=true;
......@@ -274,6 +297,10 @@
this.textarea = this.textarea + '<a href="'+this.form.url+'">'+this.form.text+'</a>';
this.xcxUrlObj.textarea = this.textarea;
var textContent = strLength.getByteVal2(this.$refs.myTextarea.innerText);
this.textNum = strLength.getZhLen(textContent);
this.xcxUrlObj.textNum = this.textNum;
var xcxObj = {};
xcxObj.type=val.id;
xcxObj.title=val.name;
......@@ -360,9 +387,17 @@
self.form.url='http://' + self.form.url;
}
self.textarea = self.textarea + '<a href="'+self.form.url+'">'+self.form.text+'</a>';
self.xcxUrlObj.textarea = self.textarea.replace('undefined','');
self.xcxUrlObj.textarea = self.textarea;
self.xcxUrlObj.imageMediaId = '';
var textContent = strLength.getByteVal2(self.$refs.myTextarea.innerText);
self.textNum = strLength.getZhLen(textContent);
self.xcxUrlObj.textNum = self.textNum;
// self.xcxUrlObj.wechatContent = null;
self.xcxUrlObj.textarea = self.xcxUrlObj.textarea.replace(/undefined/g,'')
self.$emit('listenWxText',self.xcxUrlObj)
}
} else if (self.form.linkStyle==1){ // 小程序链接
......@@ -382,9 +417,14 @@
}
self.addReplayDialog = false;
self.textarea = self.textarea + '<a href="" >'+ self.form.text +'</a>';
self.xcxToolObj.textarea = self.textarea.replace('undefined','');
self.xcxToolObj.textarea = self.textarea;
self.xcxToolObj.imageMediaId = self.imageMediaId;
self.xcxToolObj.wechatContent = self.wechatContent;
var textContent = strLength.getByteVal2(self.$refs.myTextarea.innerText);
self.textNum = strLength.getZhLen(textContent);
self.xcxUrlObj.textNum = self.textNum;
self.$emit('listenWxText',self.xcxToolObj)
// self.$refs.childlinktoolspage.confirmLinkSelect();
}
......@@ -400,14 +440,14 @@
.attention-text-wrap{
.attention-text-content{
width: 100%;
border: 1px solid #e7e7eb;
/* border: 1px solid #e7e7eb; */
.text-title{
width: 100%;
height: 40px;
line-height: 44px;
position: relative;
z-index: 1;
border-bottom: 1px solid #e7e7eb;
border: 1px solid #e7e7eb;
padding-left: 10px;
box-sizing: border-box;
a{
......@@ -428,10 +468,18 @@
}
}
.text-content{
.text-tip{
color: #c0c4cc;
font-size: 12px;
height: 30px;
line-height: 32px;
text-align:right;
}
.my-textarea{
border: 1px solid #e7e7eb;
border-top: none;
width: 100%;
min-height: 110px;
border: none;
outline: none;
resize: none;
padding: 15px;
......@@ -439,10 +487,10 @@
box-sizing: border-box;
line-height: 1.3;
a{
color: #409EFF
color: #1890ff
}
.selectLinkText{
color: #409EFF
color: #1890ff
}
}
}
......@@ -467,8 +515,8 @@
color: #c0c4cc;
font-size: 12px;
background: #fff;
height: 34px;
line-height: 34px;
height: 30px;
line-height: 32px;
padding-left: 10px;
}
}
......@@ -506,7 +554,7 @@
position: relative;
overflow: hidden;
&:hover {
border-color: #409EFF;
border-color: #1890ff;
}
}
.avatar-uploader-icon {
......@@ -530,7 +578,7 @@
overflow: hidden;
}
.upload-content /deep/ .avatar-uploader .el-upload:hover{
border-color: #409EFF;
border-color: #1890ff;
}
/*.add-replay-link /deep/ .replay-link-dialog > .el-dialog{
max-height: 600px;
......@@ -542,4 +590,7 @@
/*.add-replay-content::-webkit-scrollbar-track-piece{
background-color:transparent;
}*/
.url-link-wrap /deep/ .el-select{
width: 217px;
}
</style>
......@@ -11,7 +11,7 @@ const _vm = new Vue();
//获取营销场景
export const sceneSettingList = (params) => requests(MARKET_PREFIX + 'scene-setting-list', params);
//获取营销场景
//获取卡券列表
export const getCardList = (params) => requests(PLUG_PREFIX + 'get-coupon-list', params);
//所有门店分组
......
......@@ -3,6 +3,9 @@ import qs from 'qs';
import axios from 'axios';
const host = window.location.origin;
const PREFIX = '/api-marketing/'
const PLUG_PREFIX = '/api-plug/'
// 加载最小时间
const MINI_TIME = 300
// 超时时间
......@@ -127,30 +130,25 @@ const requests = (url, data = {},contentTypeIsJSON = false, isSilence = false, m
})
})
}
// 获取营销事件配置信息(类型, 最大条数)
export const getMarketingEvent = (params) => requests( PREFIX + 'get-marketing-event', params);
//素材库 图文 图文分页列表
export const loadImgTextList = (params) => requests( PREFIX + 'page-marketing-wechat-image-text', params);
//获取卡券列表
export const getCardList = (params) => requests(PLUG_PREFIX + 'get-coupon-list', params);
//素材库--图片--图片分页列表
export const loadImgList = (params) => requests( PREFIX + 'page-marketing-wechat-image', params);
//素材库--图片--编辑图片名称
export const updateImgName = (params) => requests( PREFIX + 'update-marketing-wechat-image-titlename', params);
//素材库--图片--修改图片分组
export const updateGroupName = (params) => requests( PREFIX + 'update-marketing-wechat-image-group', params);
//素材库--图片--新建图片分组
export const addGroupService = (params) => requests( PREFIX + 'save-marketing-wechat-image-group', params);
//素材库--图片--删除图片分组
export const deleteGroupService = (params) => requests( PREFIX + 'delete-marketing-wechat-image-group', params);
//素材库--图片--批量删除图片
export const deleteImageService = (params) => requests( PREFIX + 'delete-batch-marketing-wechat-image', params);
//素材库--图片--移动分组
export const changeGroupService = (params) => requests( PREFIX + 'marketing-wechat-image-changeGroup', params);
......
......@@ -86,6 +86,10 @@
color: #1890ff;
cursor: pointer;
}
.label-hidden .el-checkbox__label, .label-hidden .el-radio__label {
opacity: 0;
position: absolute;
}
/* reset样式end */
.dm-marketing__opt{
......@@ -115,7 +119,7 @@
border:1px solid #1890ff;
}
.dm-marketing__opt--icon--bottom{
margin:20px 0 0 70px;
margin:20px 0 0 60px;
}
.dm-marketing__opt__item {
display:inline-block;
......@@ -151,6 +155,7 @@
}
.dm-marketing__content__item{
padding: 20px 0 0 0;
min-width: 950px;
}
.dm-marketing__content__item::after {
......@@ -183,7 +188,7 @@
display: inline-block;
position: relative;
width: 320px;
height: 290px;
/* height: 290px; */
margin:0 10px;
vertical-align: middle;
background: #fff;
......@@ -210,6 +215,20 @@
height: 163px;
margin: 20px 0 20px;
}
.dm-imgText__item__other{
border-top: 1px solid #E4E7ED;
padding:15px;
}
.dm-imgText__item__other > img{
float: left;
width: 60px;
height: 60px;
margin-right: 10px;
}
.dm-imgText__item__other > p{
float: left;
width: 210px;
}
.dm-text__wrap{
......@@ -222,7 +241,7 @@
margin-left: 10px;
vertical-align: middle;
text-align: center;
width: 180px;
/* width: 180px; */
height: 122px;
border: 1px solid rgba(228,231,237,1);
border-radius: 2px;
......@@ -343,7 +362,7 @@
/* tel msg */
.dm-msg__item__wrap,.dm-tel__item__wrap{
width: 860px;
width: 760px;
height: 94px;
margin:0 10px;
border: 1px solid rgba(228,231,237,1);
......
File mode changed from 100644 to 100755
......@@ -146,7 +146,9 @@
display: block;
margin: 10px auto;
}
.dm-store__reference {
position: relative;
}
.dm-store__inputtag{
white-space: nowrap;
overflow: hidden;
......@@ -171,6 +173,9 @@
font-size: 12px;
padding: 0 6px;
}
.dm-store__total--tag{
margin:5px;
}
/* 公共样式END */
......
File mode changed from 100644 to 100755
......@@ -20,13 +20,29 @@ import optionArea from './options/option-area';
import optionTags from './options/option-tags';
import optionGroup from './options/option-group';
import optionPart from './options/option-part';
const leftList = [{label:'所有门店',value:0},
{label:'门店类型',value:1},
{label:'门店标签',value:2},
{label:'门店区域',value:3},
{label:'门店分组',value:4},
{label:'部分门店',value:5}
];
export default {
name:'vue-gic-store-new',
props:{
uuid:{
type:String,
default:''
},
options: {
type:Array,
default() {
return [0,1,2,3,4,5]
}
},
isAdd:{
type:Boolean,
default:true
}
},
components:{
......@@ -36,22 +52,38 @@ export default {
'option-group':optionGroup,
'option-part':optionPart
},
watch:{
storeType(val) {
if (!val) {
this.saveInit();
}
},
uuid(val) {
// 不是新增 编辑或者详情
if (val && !this.isAdd) {
this.init();
}
}
},
data() {
return {
storeType:0, // 一级选择值
leftList:[ // 一级列表
{label:'所有门店',value:0},
{label:'门店类型',value:1},
{label:'门店标签',value:2},
{label:'门店区域',value:3},
{label:'门店分组',value:4},
{label:'部分门店',value:5}
],
leftList:[],
newUuid:uuidv1().replace(/-/g,'') // 生成uuid
}
},
created() {
this.init();
if (this.options instanceof Array) {
leftList.map( v => {
if (this.options.indexOf(v.value) >= 0) {
this.leftList.push(v);
}
})
}
// 新增init
if (this.isAdd) {
this.init();
}
},
methods:{
// 获取配置项
......@@ -59,6 +91,7 @@ export default {
this.newUuid = this.uuid || this.newUuid;
if (!this.uuid) {
this.$emit('update:uuid',this.newUuid);
this.saveInit();
} else {
let params = {
key:this.newUuid,
......@@ -67,12 +100,28 @@ export default {
}
this.axios.post(baseUrl + '/api-plug/get-store-widget-config?requestProject=gic-web',qs.stringify(params)).then(res => {
this.comList = res.data.result.config.result || [];
this.leftValue = res.data.result.selectType || 0;
this.storeType = res.data.result.selectType || 0;
}).catch(err => {
console.log(err)
})
}
}
},
// 保存
saveInit() {
let params = {
selectType:0,
key:'',
isAll:0,
value:'',
removeItems:'',
};
params.key = this.uuid;
this.axios.post(baseUrl + '/api-plug/save-store-widget?requestProject=gic-web',qs.stringify(params)).then(res => {
}).catch(err => {
console.log(err)
})
},
}
}
</script>
......
......@@ -39,20 +39,28 @@
import qs from 'qs';
import { baseUrl } from '../config';
export default {
name:'options-area',
props:{
uuid:{
name: 'options-area',
props: {
uuid: {
type:String,
default:''
}
},
watch: {
areaList:{
/* indeterminate isCheck
* true true 半勾选
* false false 不选
* false true 全选
*/
handler(val) {
this.totalProvince = this.areaList.filter(v => (!v.isIndeterminate && v.isCheck)).length;
// 全选计算省数量
this.totalProvince = this.areaList.filter(v => (!v.indeterminate && v.isCheck)).length;
console.log(this.totalProvince)
this.totalCity = 0;
this.areaList.map(v => {
if (v.children.length) {
// 半勾选计算市数量
if (v.indeterminate && v.isCheck && v.children.length) {
v.children.map(w => {
if (w.isCheck) {
this.totalCity ++
......@@ -122,16 +130,23 @@ export default {
let list = (res.data.result && res.data.result.result) || [];
list.map(u => u.id).map(u => {
this.areaList.map(v => {
// 全选 市一起勾选
if (u === v.provinceId) {
v.isIndeterminate = false;
v.indeterminate = false;
v.isCheck = true;
} else {
v.children.map(w => {
if (u === w.cityId) {
w.isCheck = true;
}
w.isCheck = true;
})
}
// 半勾选
v.children.map(w => {
if (u === w.cityId) {
w.isCheck = true;
v.indeterminate = true;
v.isCheck = true;
}
})
})
})
}).catch(err => {
......@@ -156,7 +171,7 @@ export default {
item.indeterminate = !isAllCheck && isSomeCheck;
}
},
/* isIndeterminate isCheck
/* indeterminate isCheck
* true true 半勾选
* false false 不选
* false true 全选
......@@ -174,18 +189,26 @@ export default {
let valueList = [];
this.areaList.map(v => {
// 全选 只传省ID
if(!v.isIndeterminate && v.isCheck) {
if(!v.indeterminate && v.isCheck) {
valueList.push(v.provinceId)
} else if(v.isIndeterminate && v.isCheck && v.children.length) {
}
if(v.indeterminate && v.isCheck && v.children.length) {
// 半选 传市id
v.children.map(w => {
if (w.isCheck) {
valueList.push(v.cityId)
valueList.push(w.cityId)
}
})
}
});
this.params.value = valueList.filter(v => v).join(',');
if (!this.params.value) {
this.$message({type:"warning",message:"门店选择不能为空"});
return;
}
this.axios.post(baseUrl + '/api-plug/save-store-widget?requestProject=gic-web',qs.stringify(this.params)).then(res => {
if (res.data.errorCode === 0) {
this.popoverShow = false;
......
......@@ -42,7 +42,7 @@
<span class="gray-color dm-store__inputtag--tips" v-show="rightList.length === 0">请选择门店</span>
</div>
<el-popover placement="top-start" popper-class="select-shop__popper" width="300" trigger="hover">
<el-tag class="select-shop__popper--tag" v-for="v in rightList" :key="v.id" @close="deleteRightItems(v.id)" closable>
<el-tag class="dm-store__total--tag" v-for="v in rightList" :key="v.id" @close="deleteRightItems(v.id)" closable>
{{v.name}}
</el-tag>
<span slot="reference" class="dm-store__inputtag--total" v-show="rightList.length">{{params.isAll?rightTotal:rightList.length}}</span>
......@@ -125,7 +125,11 @@ export default {
return this.leftCheckList.indexOf(v.tagId) < 0;
}).map(v => v.tagId).join(',');
} else {
this.params.value = this.$refs.tree.getCheckedKeys(true).join(',');
this.params.value = this.$refs.tree.getCheckedKeys().join(',');
if (!this.params.value) {
this.$message({type:"warning",message:"门店选择不能为空"});
return;
}
}
this.axios.post(baseUrl + '/api-plug/save-store-widget?requestProject=gic-web',qs.stringify(this.params)).then(res => {
this.getRightList();
......
......@@ -46,7 +46,7 @@
<span class="gray-color dm-store__inputtag--tips" v-show="rightList.length === 0">请选择门店</span>
</div>
<el-popover placement="top-start" popper-class="select-shop__popper" width="300" trigger="hover">
<el-tag class="select-shop__popper--tag" v-for="v in rightList" :key="v.id" @close="deleteRightItems(v.id)" closable>
<el-tag class="dm-store__total--tag" v-for="v in rightList" :key="v.id" @close="deleteRightItems(v.id)" closable>
{{v.name}}
</el-tag>
<span slot="reference" class="dm-store__inputtag--total" v-show="rightList.length">{{params.isAll?rightTotal:rightList.length}}</span>
......@@ -125,6 +125,10 @@ export default {
}).map(v => v.storeId).join(',');
} else {
this.params.value = this.leftCheckList.join(',');
if (!this.params.value) {
this.$message({type:"warning",message:"门店选择不能为空"});
return;
}
}
this.axios.post(baseUrl + '/api-plug/save-store-widget?requestProject=gic-web',qs.stringify(this.params)).then(res => {
this.getRightList();
......
......@@ -43,7 +43,7 @@
<span class="gray-color dm-store__inputtag--tips" v-show="rightList.length === 0">请选择门店</span>
</div>
<el-popover placement="top-start" popper-class="select-shop__popper" width="300" trigger="hover">
<el-tag class="select-shop__popper--tag" v-for="v in rightList" :key="v.id" @close="deleteRightItems(v.id)" closable>
<el-tag class="dm-store__total--tag" v-for="v in rightList" :key="v.id" @close="deleteRightItems(v.id)" closable>
{{v.name}}
</el-tag>
<span slot="reference" class="dm-store__inputtag--total" v-show="rightList.length">{{params.isAll?rightTotal:rightList.length}}</span>
......@@ -124,6 +124,10 @@ export default {
}).map(v => v.tagId).join(',');
} else {
this.params.value = this.leftCheckList.join(',');
if (!this.params.value) {
this.$message({type:"warning",message:"门店选择不能为空"});
return;
}
}
this.axios.post(baseUrl + '/api-plug/save-store-widget?requestProject=gic-web',qs.stringify(this.params)).then(res => {
this.getRightList();
......
......@@ -15,7 +15,7 @@
<span class="gray-color dm-store__inputtag--tips" v-show="checkedList.length === 0">请选择门店</span>
</div>
<el-popover placement="top-start" popper-class="select-shop__popper" width="300" trigger="hover">
<el-tag v-for="(v,i) in checkedList" class="select-shop__popper--tag" size="small" :key="i" closable @close="delItem(i)">{{filterLabel(v)}}</el-tag>
<el-tag v-for="(v,i) in checkedList" class="dm-store__total--tag" size="small" :key="i" closable @close="delItem(i)">{{filterLabel(v)}}</el-tag>
<span slot="reference" class="dm-store__inputtag--total" v-show="checkedList.length">{{checkedList.length}}</span>
</el-popover>
</div>
......@@ -88,6 +88,10 @@ export default {
this.params.key = this.uuid;
let valueList = [];
this.params.value = this.checkedList.join(',');
if (!this.params.value) {
this.$message({type:"warning",message:"门店选择不能为空"});
return;
}
this.axios.post(baseUrl + '/api-plug/save-store-widget?requestProject=gic-web',qs.stringify(this.params)).then(res => {
this.popoverShow = false;
}).catch(err => {
......
File mode changed from 100644 to 100755
<template>
<div style="background:#fff;">
<div>
<!-- <div>
<p>新版门店</p>
<vue-gic-store-new style="padding:20px;" :uuid="uuid"></vue-gic-store-new>
</div>
<div>
<vue-gic-store-new style="padding:20px;" :uuid="uuid" :isAdd="false"></vue-gic-store-new>
</div> -->
<!-- <div>
<p>新版卡券门店</p>
<vue-gic-store-card style="padding:20px;" :uuid="uuid"></vue-gic-store-card>
</div>
<div>
<p>老版门店</p>
<vue-gic-store-linkage style="padding:20px;" :msg="sendChildData"></vue-gic-store-linkage>
</div>
</div> -->
<div style="padding:20px;">
<p>营销事件组件</p>
<dm-marketing></dm-marketing>
......@@ -44,6 +44,11 @@ export default {
storeIds:[],
},
}
},
created() {
setTimeout(_ => {
this.uuid = 'asdfghjkasdfghjkasdfghjkasdfghjk'
},3000)
}
}
</script>
......
......@@ -55,6 +55,22 @@ export default {
}
}
},
/*
* 一个汉字算一个字,两个英文/字母算一个字
*/
getByteVal2: function(val) {
var returnValue = '';
var byteValLen = 0;
for (var i = 0; i < val.length; i++) {
if (val[i].match(/[^\x00-\xff]/ig) != null)
byteValLen += 1;
else
byteValLen += 0.5;
returnValue += val[i];
}
return returnValue;
},
/*
* 限制字数用, 一个汉字算一个字,两个英文/字母算一个字
......
......@@ -140,6 +140,7 @@ export default {
wechatTextId:'',
wechatTeletextId:'',
content:'',
textNum:0,
mediaId:'',
},
memberList:[],
......@@ -169,12 +170,7 @@ export default {
this.$store.commit('mutations_layoutTips','');
},
methods:{
// 微信文本
getWxText(data){
this.info.content = data.textarea;
console.log(data)
this.info.imageMediaId = data.imageMediaId;
},
async getWechatMarketingDetail() {
let res = await getWechatMarketingDetail({wechatTeletextId:this.$route.params.id});
if (res.errorCode === 0 && res.result.wechatDTO) {
......@@ -264,6 +260,13 @@ export default {
getImgData(val) {
this.info.mediaId = val
},
// 微信文本
getWxText(data){
console.log(data)
this.info.textNum = data.textNum;
this.info.content = data.textarea;
this.info.imageMediaId = data.imageMediaId;
},
submit() {
if (!this.info.memberType && this.toggleTag && !this.getSaveData ) {
......@@ -286,6 +289,16 @@ export default {
return;
}
}
if (this.info.contentType === 1 ) {
console.log(this.info.textNum)
if(this.info.textNum >= 300){
this.$tips({type:'warning',message:'最多300个字符哦'});
return
}
var reg = /<(?!(a|\/a|div|\/div)).*?>/img ; // 只保留a 和 div 标签
this.info.content = this.info.content.replace(reg,"").replace(/<\/div>|&nbsp;/g,"").replace(/<((div)).*?>/g,"<br>").split('<br>').filter(v=>v).join('<br>');
}
// } else {
// if (!this.info.memberSearchDTO) {
// this.$tips({type:'warning',message:'会员筛选不能为空'});
......
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