Commit 611fdbc1 by liuchenxi

update: 营销记录

parent 13171bc3
......@@ -37,7 +37,7 @@
multiple
ref="select"
@change="selectChange"
style="width: 300px"
style="width: 220px;margin-left:8px"
>
<el-option :value="customerType" style="height: auto;padding:0">
<el-tree
......@@ -45,6 +45,7 @@
show-checkbox
node-key="id"
ref="tree"
class="customer-tree"
highlight-current
default-expand-all
:props="defaultProps"
......@@ -316,4 +317,11 @@ export default { ...action };
.pointer {
cursor: pointer;
}
.customer-tree .el-tree-node__content {
height: 32px;
line-height: 32px;
&:hover {
background: #F7F8FA;
}
}
</style>
......@@ -633,7 +633,6 @@
flex-direction: column;
justify-content: center;
align-items: center;
min-height: 80px;
img {
width: 60px;
height: 60px;
......
<template>
<div class="marketing-card mt5">
<div class="search">
投放时间:<el-date-picker :clearable="false" class="w256" value-format="yyyy-MM-dd" :pickerOptions="pickerOptions" v-model="launchTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="change"></el-date-picker>
领取时间:<el-date-picker class="ml10 w256" value-format="yyyy-MM-dd" :pickerOptions="pickerOptions" v-model="collectionTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="change"></el-date-picker>
<div class="search mb10">
投放时间:<el-date-picker :clearable="false" class="w256 mb10" value-format="yyyy-MM-dd" :pickerOptions="pickerOptions" v-model="launchTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="change"></el-date-picker>
领取时间:<el-date-picker class="ml10 w256 mb10" value-format="yyyy-MM-dd" :pickerOptions="pickerOptions" v-model="collectionTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="change"></el-date-picker>
<el-input
v-model="search.search"
placeholder="请输入卡券券码"
class="w260 ml10"
class="w260 ml10 mb10"
prefix-icon="el-icon-search"
@change="change"
clearable
/>
<el-select class="ml10 w160" v-model="search.cardType" placeholder="所有卡券类型" clearable @change="change">
<el-select class="ml10 w160 mb10 mr10" v-model="search.cardType" placeholder="所有卡券类型" clearable @change="change">
<el-option v-for="item in cardTypeList" :key="item.id" :value="item.value" :label="item.label" />
</el-select>
<el-select class="ml10 w160" v-model="search.receiveCode" placeholder="所有投放渠道" clearable @change="change">
<el-select class="w160 mb10" v-model="search.receiveCode" placeholder="所有投放渠道" clearable @change="change">
<el-option v-for="item in tableData.dictList" :key="item.dictCode" :value="item.dictCode" :label="item.dictName" />
</el-select>
</div>
<div class="table">
<el-table
v-loading="load"
v-loading="tableData.loading"
:data="tableData.data"
tooltip-effect="dark"
style="width: 100%"
>
<el-table-column
v-for="(v, i) in tableDatatableHeader"
v-for="(v, i) in tableData.tableHeader"
:key="i"
:prop="v.prop"
:min-width="v.minWidth"
......@@ -59,13 +59,14 @@
</template>
<script>
import dickerPickMixin from './datePickRule';
import dickerPickMixin from './mixins/datePickRuleMixin';
import paginationMixins from './mixins/paginationMixins';
export default {
name: 'card',
props: {
tableData: Object
},
mixins: [ dickerPickMixin ],
mixins: [ dickerPickMixin, paginationMixins ],
data() {
return {
launchTime: [new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), new Date()],
......@@ -101,5 +102,5 @@ export default {
</script>
<style scoped>
@import './all.scss';
@import './css/all.scss';
</style>
......@@ -19,6 +19,12 @@
.ml10 {
margin-left: 10px;
}
.mr10 {
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px !important;
}
.mb25 {
margin-bottom: 25px;
}
......
......@@ -16,7 +16,7 @@
</div>
<div class="table">
<el-table
v-loading="load"
v-loading="tableData.loading"
:data="tableData.data"
tooltip-effect="dark"
style="width: 100%"
......@@ -55,13 +55,14 @@
</template>
<script>
import dickerPickMixin from './datePickRule';
import dickerPickMixin from './mixins/datePickRuleMixin';
import paginationMixins from './mixins/paginationMixins';
export default {
name: "ecm",
props: {
tableData: Object
},
mixins: [ dickerPickMixin ],
mixins: [ dickerPickMixin, paginationMixins ],
data() {
return {
time: [new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), new Date()],
......@@ -91,11 +92,11 @@ export default {
this.search.endTime = this.time ? ( typeof this.time[0] == 'string ' ? this.time[1] : this.dateformat(new Date(this.time[1]), 'yyyy-MM-dd')) : null;
const commonObj = { currentPage, pageSize };
this.$emit("changeSearch", Object.assign({}, this.search, commonObj));
}
},
}
};
</script>
<style scoped>
@import "./all.scss";
@import './css/all.scss';
</style>
......@@ -8,7 +8,7 @@
</div>
<div class="table">
<el-table
v-loading="load"
v-loading="tableData.loading"
:data="tableData.data"
tooltip-effect="dark"
style="width: 100%"
......@@ -47,13 +47,14 @@
</template>
<script>
import dickerPickMixin from './datePickRule';
import dickerPickMixin from './mixins/datePickRuleMixin';
import paginationMixins from './mixins/paginationMixins';
export default {
name: 'message',
props: {
tableData: Object
},
mixins: [ dickerPickMixin ],
mixins: [ dickerPickMixin, paginationMixins ],
data() {
return {
time: [new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), new Date()],
......@@ -81,5 +82,5 @@ export default {
</script>
<style scoped>
@import './all.scss';
@import './css/all.scss';
</style>
export default {
methods: {
handleCurrentChange(val) {
this.tableData.currentPage = val;
this.change();
},
handleSizeChange(val) {
this.tableData.pageSize = val;
this.tableData.currentPage = 1;
this.change();
}
}
};
......@@ -8,7 +8,7 @@
</div>
<div class="table">
<el-table
v-loading="load"
v-loading="tableData.loading"
:data="tableData.data"
tooltip-effect="dark"
style="width: 100%"
......@@ -47,13 +47,14 @@
</template>
<script>
import dickerPickMixin from './datePickRule';
import dickerPickMixin from './mixins/datePickRuleMixin';
import paginationMixins from './mixins/paginationMixins';
export default {
name: 'wechat',
props: {
tableData: Object
},
mixins: [ dickerPickMixin ],
mixins: [ dickerPickMixin, paginationMixins ],
data() {
return {
time: [new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), new Date()],
......@@ -76,11 +77,11 @@ export default {
this.search.endTime = this.time ? ( typeof this.time[0] == 'string ' ? this.time[1] : this.dateformat(new Date(this.time[1]), 'yyyy-MM-dd')) : null;
const commonObj = { currentPage, pageSize };
this.$emit("changeSearch", Object.assign({}, this.search, commonObj));
}
},
}
};
</script>
<style scoped>
@import './all.scss';
@import './css/all.scss';
</style>
......@@ -3,7 +3,7 @@
<div class="min20">
<nav-path :navpath="navpath"></nav-path>
<div class="marketing-container">
<div class="tabs" v-loading="load">
<div class="tabs">
<el-tabs v-model="tabsIndex" @tab-click="handleClick">
<el-tab-pane label="智能营销" name="1">
<ecm-record ref="ecmRecord" :tableData="ecmTableData" @changeSearch="onChange" />
......@@ -61,7 +61,8 @@ export default {
pageSizeList: [20, 40, 60, 80],
pageSize: 20,
total: 0,
tableHeader: []
tableHeader: [],
loading: false
},
wechatTableData: {
data: [],
......@@ -69,7 +70,8 @@ export default {
pageSizeList: [20, 40, 60, 80],
pageSize: 20,
total: 0,
tableHeader: []
tableHeader: [],
loading: false
},
messageTableData: {
data: [],
......@@ -77,7 +79,8 @@ export default {
pageSizeList: [20, 40, 60, 80],
pageSize: 20,
total: 0,
tableHeader: []
tableHeader: [],
loading: false
},
cardTableData: {
data: [],
......@@ -86,9 +89,9 @@ export default {
pageSize: 20,
total: 0,
tableHeader: [],
dictList: []
dictList: [],
loading: false
},
load: false
};
},
created() {
......@@ -99,28 +102,31 @@ export default {
},
methods: {
async getTableData(tab, params) {
this.loading = true;
let res, name;
switch(tab) {
case "1":
res = await doFetchqs(ecmLogPage, params);
name = 'ecmTableData';
this[name].loading = true;
res = await doFetchqs(ecmLogPage, params);
break;
case "2":
res = await doFetchqs(cardLogPage, params);
name = 'cardTableData';
this[name].loading = true;
res = await doFetchqs(cardLogPage, params);
break;
case "3":
res = await doFetchqs(messageLogPage, params);
name = 'messageTableData';
this[name].loading = true;
res = await doFetchqs(messageLogPage, params);
break;
case "4":
res = await doFetchqs(wechatLogPage, params);
name = 'wechatTableData';
this[name].loading = true;
res = await doFetchqs(wechatLogPage, params);
break;
}
this.extendTable(this[name], res.data.result); // 赋值对应表格数据
this.loading = false;
this[name].loading = false;
},
getTableHeader() {
this.ecmTableData.tableHeader = [
......@@ -163,7 +169,7 @@ export default {
{
label: "投放时间",
prop: "createDate",
minWidth: 80,
minWidth: 100,
formatter(row) {
return `${dateformat(new Date(row.createDate), 'yyyy-MM-dd hh:mm:ss')}`;
}
......@@ -171,7 +177,7 @@ export default {
{
label: "领取时间",
prop: "receiveTime",
minWidth: 80,
minWidth: 100,
formatter(row) {
return `${dateformat(new Date(row.receiveTime), 'yyyy-MM-dd hh:mm:ss')}`;
}
......@@ -187,6 +193,8 @@ export default {
return '折扣券';
case 3:
return '兑换券';
default:
return '--';
}
}
},
......@@ -214,7 +222,7 @@ export default {
prop: "createDate",
minWidth: 80,
formatter(row) {
return `${dateformat(row.createDate, 'yyyy-MM-dd hh-mm-ss')}`;
return `${dateformat(new Date(row.createDate), 'yyyy-MM-dd hh-mm-ss')}`;
}
},
{ label: "素材类型", prop: "contentType",minWidth: 60, formatter(row) {
......@@ -230,7 +238,7 @@ export default {
}
},
{ label: "素材标题/文本内容", prop: "title",minWidth: 220,formatter(row) {
return row.title;
return row.title || '--';
}
}
];
......@@ -244,7 +252,7 @@ export default {
handleClick(tab) {
// 获取切换的组件实例重置数据, 注意不要改变el-tab-pane里的组件层级关系
const vm = tab.$children[0];
Object.assign(vm.$data, vm.$options.data());
Object.assign(vm.$data, vm.$options.data.call(vm));
vm.change();
},
// 获取卡券营销所有投放渠道
......
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