Commit 8bd7d49a by huaying

Merge branch 'feature/act-code' into dev

parents 9a08132a 9d2f2513
......@@ -63,7 +63,6 @@ export default {
downloadImg() {
const qrcode = document.getElementById('qrImg');
console.log(qrcode);
let img = qrcode.getElementsByTagName('img')[0];
let link = document.createElement('a');
let url = img.getAttribute('src');
......
......@@ -4,7 +4,7 @@
<dm-sub-title type="line">基础信息</dm-sub-title>
<div class="section">
<el-form-item label="链接类型" required>
<el-radio-group v-model="form.linkType">
<el-radio-group v-model="form.linkType" :disabled="isEdit">
<el-radio :label="1">专用链接</el-radio>
<el-radio :label="2">通用链接</el-radio>
</el-radio-group>
......@@ -20,8 +20,8 @@
<el-form-item label="链接标签" required prop="memberLabelId">
<el-button plain v-if="!form.memberLabelId" @click="tagsDialogVisible = true"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加标签</el-button>
<el-tag v-else closable @close="handleTagCloseTag">{{ form.memberLabelName }}</el-tag>
<dm-memberTag-group :visiable.sync="tagsDialogVisible" projectName="haobao-3" @save="saveTagPop"></dm-memberTag-group>
</el-form-item>
<dm-memberTag-group :visiable.sync="tagsDialogVisible" projectName="haobao-3" @save="saveTagPop"></dm-memberTag-group>
</div>
<dm-sub-title type="line">分配规则</dm-sub-title>
<p class="tips-info">
......@@ -150,9 +150,6 @@ export default {
if (this.form.customRuleJson.open == 1 && !this.form.storeList.length) {
return cb(new Error('请选择门店'));
}
if (this.form.customRuleJson.open == 1 && !this.form.storeList.length) {
return cb(new Error('请选择门店'));
}
cb();
};
return {
......@@ -173,13 +170,13 @@ export default {
rules: {
name: { required: true, message: '请输入链接名称' },
memberLabelId: { required: true, message: '请选择链接标签' },
storeList: { validator: validateStoreList }
storeList: { required: true, validator: validateStoreList }
},
storeData: [],
form: {
linkType: 1,
memberLabelName: '',
memberLabelId: '',
memberLabelName: '测试标签值名称重复- 温州青童时代店',
memberLabelId: 'edd3901afd1e418d93fdc3b50bb24784',
storeList: [],
name: '',
pageId: '',
......@@ -232,6 +229,11 @@ export default {
console.log(this.form);
document.addEventListener('visibilitychange', () => {
if (document.visibilityState == 'visible') {
this.landingPage = {
pageSearchText: '',
pageNum: 1,
pageSize: 20
};
this.getList();
}
});
......@@ -338,17 +340,23 @@ export default {
if (this.isAdd) {
linkAdd(data)
.then(res => {
this.$router.go(-1);
setTimeout(() => {
this.btnLoading = false;
this.$router.go(-1);
}, 1000);
})
.finally(_ => {
.catch(_ => {
this.btnLoading = false;
});
} else {
linkUpdate(data)
.then(res => {
this.$router.go(-1);
setTimeout(() => {
this.btnLoading = false;
this.$router.go(-1);
}, 1000);
})
.finally(_ => {
.catch(_ => {
this.btnLoading = false;
});
}
......
......@@ -17,9 +17,9 @@
<el-descriptions-item label="链接描述">{{ link.remark }}</el-descriptions-item>
</el-descriptions>
<div class="m-t-10">
<el-button icon="el-icon-download" plain @click="downloadQR">下载二维码</el-button>
<el-button v-if="link.linkType == 2" icon="el-icon-download" plain @click="downloadQR">下载二维码</el-button>
<el-button v-if="link.linkType == 2" v-clipboard:text="link.linkUrl" plain>复制链接</el-button>
<el-button v-if="link.linkType == 2" plain @click="goEdit">修改</el-button>
<el-button plain @click="goEdit">修改</el-button>
</div>
</div>
</div>
......
......@@ -33,7 +33,7 @@
<div v-if="codeInfo.statusFlag != 2" class="flex" style="padding-top:20px;">
<el-button v-if="codeInfo.hmType == 2 && codeInfo.statusFlag == 1" icon="el-icon-download" type="primary" style="width:120px;margin-right: 12px;" @click="downloadQR">下载二维码</el-button>
<el-button type="primary" plain style="width:98px;" @click="modifyCode">编辑</el-button>
<el-button type="danger" plain style="width:98px;margin-left: 20px; border-color: #F5222D;" @click="discardCode">作废</el-button>
<el-button class="button-discard" type="danger" plain :style="codeInfo.hmType == 2 && useMemberList.length > 0 ? '' : 'border-color: #F5222D;'" @click="discardCode" :disabled="codeInfo.hmType == 2 && useMemberList.length > 0">作废</el-button>
</div>
</div>
</div>
......@@ -47,7 +47,7 @@
</div>
<el-tabs v-model="activeName" type="card">
<el-tab-pane label="详情信息" name="first">
<act-code-detail-info :enterprise-id="codeInfo.enterpriseId" :welcome-id="codeInfo.welcomeId" :hm-id="$route.query.hmId"></act-code-detail-info>
<act-code-detail-info :enterprise-id="codeInfo.enterpriseId" :welcome-id="codeInfo.welcomeId" :hm-id="$route.query.hmId" @useMemberList="useMemberData"></act-code-detail-info>
</el-tab-pane>
<el-tab-pane label="数据统计" name="second">
<act-code-detail-statistics :hm-id="$route.query.hmId"></act-code-detail-statistics>
......@@ -84,13 +84,28 @@ export default {
{ value: '正常-今日已达上限', style: 'warning' }
],
statusIndex: 1,
scrollTop: 0
// scrollStyle: 'position:fixed;top:110px;z-index:1;padding-bottom:0;height:40px;background:yellow;'
scrollTop: 0,
useMemberList: []
};
},
methods: {
downloadQR() {
window.open(this.codeInfo.wxQrcode);
const downloadFile = (fileName, content) => {
const url = content;
const x = new XMLHttpRequest();
x.open('GET', url, true);
x.responseType = 'blob';
x.onload = function(e) {
const blob = new Blob([x.response]);
let url = window.URL.createObjectURL(blob);
let a = document.createElement('a');
a.href = url;
a.download = fileName + '.png';
a.click();
};
x.send();
};
downloadFile(this.codeInfo.hmId + '_' + this.codeInfo.name, this.codeInfo.wxQrcode);
},
modifyCode() {
this.$router.push(`/actCodeEdit?hmId=${this.$route.query.hmId}`);
......@@ -119,26 +134,6 @@ export default {
that.loading = true;
getRequest('/haoban-manage3-web/hm/qrcode/detail', { hmId: that.$route.query.hmId })
.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',
// wxQrcode: '',
// memberLabelName: '稍加稳得',
// hmGroupName: '测试分组'
// }
// }
// };
let resData = res.data;
that.loading = false;
if (resData.code == 0) {
......@@ -159,8 +154,10 @@ export default {
scrollMethod: _throttle(function() {
// 节流会不自然 左右不滑动
this.scrollTop = document.getElementById('hb-layout-pager-one').scrollTop;
// console.log(this.scrollTop);
}, 100)
}, 100),
useMemberData(data) {
this.useMemberList = data;
}
},
mounted() {
let that = this;
......@@ -205,4 +202,8 @@ export default {
width: 100%;
// left: 50px;
}
.button-discard {
width: 98px;
margin-left: 20px;
}
</style>
......@@ -81,7 +81,6 @@ export default {
data() {
return {
loading: false,
// dateList: [],
dateList: [
// { bizDate: '2018/8/1', 新增人数: 4623 }
// { bizDate: '2018/8/2', 新增人数: 6145 },
......@@ -130,9 +129,6 @@ export default {
let resData = res.data;
that.loading = false;
if (resData.code == 0) {
((resData.result || {}).dateList || []).map(function(date) {
date['新增人数'] = date.addNum;
});
that.overViewData = resData.result || {};
return;
}
......
......@@ -115,7 +115,6 @@ export default {
*/
sortChange(column, prop, order) {
const that = this;
console.log(column.order);
that.currentPage = 1;
that.sortType = column.order == 'ascending' ? 'asc' : 'desc'; // 默认倒序
that.getTableList();
......@@ -155,7 +154,7 @@ export default {
clerkId,
startTime,
endTime,
addChannel: linkId ? 1 : hmId ? 2 : 0,
addChannel: linkId ? 1 : hmId ? 2 : 0, // 不具备传0
createTimeOrder: that.sortType || ''
};
postJsonRequest('/haoban-manage3-web/hm/qrcode/wxUserAddLog/list', para)
......
......@@ -71,7 +71,7 @@ export default {
bizDate: {
alias: '日期' //别名
},
新增人数: {
addNum: {
alias: '新增人数'
}
});
......@@ -95,7 +95,7 @@ export default {
}
}
});
this.chart.axis('新增人数', {
this.chart.axis('addNum', {
grid: {
line: {
type: 'line',
......@@ -115,22 +115,42 @@ export default {
}
}
});
this.chart.tooltip({
showCrosshairs: true,
shared: true,
itemTpl: `<div style="margin-bottom: 10px;list-style:none;">
<span style="background-color:{color};" class="g2-tooltip-marker"></span>
{name}: {value}
</div>`
});
// 图例
this.chart.legend({
custom: true,
position: 'top-left',
items: [{ name: '新增人数', value: '新增人数', marker: { symbol: 'line', style: { stroke: '#4B74E8', lineWidth: 12, lineHeight: 8 } } }]
items: [{ name: '新增人数', value: 'addNum', marker: { symbol: 'line', style: { stroke: '#4B74E8', lineWidth: 12, lineHeight: 8 } } }]
});
if (this.charData.length > 1) {
this.chart
.line()
.position('bizDate*新增人数')
.color('#4B74E8');
.position('bizDate*addNum')
.color('#4B74E8')
.tooltip('addNum', addNum => {
return {
name: '新增人数',
value: addNum
};
});
} else {
this.chart
.point()
.position('bizDate*新增人数')
.color('#4B74E8');
.position('bizDate*addNum')
.color('#4B74E8')
.tooltip('addNum', addNum => {
return {
name: '新增人数',
value: addNum
};
});
}
this.chart.removeInteraction('legend-filter'); // 自定义图例,移除默认的分类图例筛选交互
......
......@@ -230,7 +230,7 @@ export default {
{
text: '编辑',
visible: row => {
if (row.hmType == 1 && row.statusFlag != 2) {
if (row.hmType == 2 || row.statusFlag != 2) {
return true;
} else {
return false;
......
......@@ -83,7 +83,9 @@ export default {
clerkIdList: [],
hmUserNum: null //多人活码人数
};
this.$router.go(-1);
setTimeout(() => {
this.$router.go(-1);
}, 1000);
} else {
return this.$message.error(res.data.message);
}
......
......@@ -88,6 +88,10 @@ export default {
this.data = this.detailCode.clerkList;
if (this.form.hmType == 1) {
this.clerkDisabled = true;
this.multiple = false;
} else if (this.form.hmType == 2) {
this.multiple = true;
this.clerkDisabled = false;
}
that.loading = false;
});
......@@ -112,7 +116,9 @@ export default {
clerkIdList: [],
hmUserNum: null //多人活码人数
};
this.$router.go(-1);
setTimeout(() => {
this.$router.go(-1);
}, 1000);
} else {
return this.$message.error(res.data.message);
}
......@@ -127,7 +133,9 @@ export default {
clerkIdList: [],
hmUserNum: null //多人活码人数
};
this.$router.go(-1);
setTimeout(() => {
this.$router.go(-1);
}, 1000);
} else {
return this.$message.error(res.data.message);
}
......
......@@ -173,7 +173,6 @@ export default {
if (resData.code == 0) {
that.total = resData.result.totalCount || 0;
that.useMemberData = resData.result.result || [];
// that.total = resData.result.pageInfo ? resData.result.pageInfo.total : 0;
return;
}
errMsg.errorMsg(resData);
......@@ -199,6 +198,9 @@ export default {
if (!newData || newData.length <= 0) return;
that.welcomeId = newData || '';
that.getwelcomeInfo();
},
useMemberData: function(newData, oldData) {
this.$emit('useMemberList', newData);
}
}
};
......
......@@ -40,6 +40,19 @@
<el-table-column prop="welcomeContent" label="内容" show-overflow-tooltip></el-table-column>
<el-table-column label="附件" width="212px" show-overflow-tooltip>
<template slot-scope="{ row }">
<el-popover placement="top-start" trigger="hover" v-if="row.welcomeMediaList && row.welcomeMediaList.length">
<div class="flexBox" v-for="item in row.welcomeMediaList" :key="item.welcomeMediaId">
<svg-icon :iconname="iconType[item.mediaType]" size="16" style="margin-right: 13px;"> </svg-icon>
<span class="popverText">{{ item.mediaTitle }}</span>
</div>
<div slot="reference" class="flexBox" v-if="row.welcomeMediaList && row.welcomeMediaList.length">
<svg-icon :iconname="iconType[row.welcomeMediaList[0].mediaType]" size="40" style="margin-right: 10px;"> </svg-icon>
<span class="wrapText"> {{ row.welcomeMediaList[0].mediaTitle }}</span>
</div>
</el-popover>
<div v-else>--</div>
</template>
<!-- <template slot-scope="{ row }">
<div class="enclosureBox" v-for="item in row.welcomeMediaList" :key="item.welcomeId">
<el-image class="img" :src="item.mediaUrl">
<div slot="error" class="image-slot img">
......@@ -48,7 +61,7 @@
</el-image>
<p>{{ item.mediaTitle ? item.mediaTitle : '--' }}</p>
</div>
</template>
</template> -->
</el-table-column>
</el-table>
<el-pagination class="paginationBox" background @current-change="handleCurrentChange" :current-page="welcomePage.pageNum" layout=" prev, pager, next " :page-size="welcomePage.pageSize" :total="totalNum"></el-pagination>
......@@ -82,6 +95,15 @@ export default {
},
data() {
return {
iconType: {
1: 'iconwenjianleixingtupian',
2: 'iconwenjianleixingshipin',
3: 'iconwenjianleixing-wenjian',
4: 'iconwenjianleixing-lianjie',
5: 'iconwenjianleixing-xiaochengxu', // 小程序
6: 'iconwenjianleixing-xiaochengxu', // 带参小程序
7: 'icongongzhonghao1' // 带参公众号
},
welcomTypeFlag: true,
welcomesType: 1,
welcomeTableData: [],
......@@ -93,7 +115,7 @@ export default {
title: '',
type: 2,
pageNum: 1,
pageSize: 4
pageSize: 20
},
totalNum: 1,
welcomeId: '',
......@@ -105,15 +127,21 @@ export default {
activated() {
this.onSearch();
},
// mounted() {
// this.getWelcomeTable();
// document.addEventListener('visibilitychange', () => {
// console.log(document.visibilityState, 99999);
// if (document.visibilityState == 'visible') {
// this.getWelcomeTable();
// }
// });
// },
mounted() {
this.getWelcomeTable();
document.addEventListener('visibilitychange', () => {
if (document.visibilityState == 'visible') {
this.welcomePage = {
wxEnterpriseId: sessionStorage.getItem('userInfos') ? JSON.parse(sessionStorage.getItem('userInfos')).wxEnterpriseId : '',
title: '',
type: 2,
pageNum: 1,
pageSize: 20
};
this.getWelcomeTable();
}
});
},
methods: {
onSearch() {
this.welcomePage.pageNum = 1;
......@@ -163,8 +191,8 @@ export default {
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
this.templateSelection = row;
this.welcomeContent = row.welcomeContent;
this.welcomeId = row.welcomeId;
this.$emit('getWelcomeId', this.welcomeId);
// this.welcomeId = row.welcomeId;
// this.$emit('getWelcomeId', this.welcomeId);
},
// 单选框点击事件
radioChange(e) {
......@@ -175,8 +203,10 @@ export default {
}
},
submit() {
if (this.welcomesType == 2) return true;
if (!this.welcomeId) {
if (this.welcomesType == 2) this.welcomeId = '';
// if (this.welcomeType == 2) ;
this.$emit('getWelcomeId', this.welcomeId);
if (this.welcomesType == 1 && !this.welcomeId) {
this.$message.error('请选择欢迎语');
return false;
} else {
......@@ -202,6 +232,16 @@ export default {
},
immediate: true,
deep: true
},
welcomesType: {
handler: function(val) {
console.log(val, '909090hjhj');
if (val == 2) {
this.welcomeId = '';
}
},
immediate: true,
deep: true
}
}
};
......@@ -280,5 +320,27 @@ export default {
text-overflow: ellipsis;
}
}
.flexBox {
display: flex;
justify-content: flex-start;
align-items: center;
.popverText {
font-size: 12px;
width: 90%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.flexBox + .flexBox {
margin-top: 10px;
}
.popoverBox {
max-height: 300px;
overflow-y: auto;
max-width: 500px;
line-height: 28px;
}
}
</style>
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