Commit 55606532 by chenxin

fix: build

parents 8b89ec8b 81ae7de1
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.12587ce16d65d66288d37ae5458b95b2.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.38.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.12.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.2.24.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.42.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.2.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script src=//web-1251519181.file.myqcloud.com/components/track.1.0.1.js></script><script type=text/javascript src=/marketing/static/js/manifest.85e6498efb584253f173.js></script><script type=text/javascript src=/marketing/static/js/vendor.b30a466c3b2d11195801.js></script><script type=text/javascript src=/marketing/static/js/main.da43878e175cef3d17fe.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.d58b574248f43861b85bd7fa321f54ef.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.38.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.2.24.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.46.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.42.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.2.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script src=//web-1251519181.file.myqcloud.com/components/track.1.0.3.js></script><script type=text/javascript src=/marketing/static/js/manifest.6d87f323659bbaebeba2.js></script><script type=text/javascript src=/marketing/static/js/vendor.b30a466c3b2d11195801.js></script><script type=text/javascript src=/marketing/static/js/main.da43878e175cef3d17fe.js></script></body></html>
\ No newline at end of file
......@@ -23,11 +23,12 @@
<!-- 组件引用cdn -->
<script src="//web-1251519181.file.myqcloud.com/components/header.2.0.38.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/card.2.0.12.js"></script><!-- 卡券选择器 -->
<script src="//web-1251519181.file.myqcloud.com/components/card.2.0.13.js"></script><!-- 卡券选择器 -->
<script src="//web-1251519181.file.myqcloud.com/components/store.2.0.01.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/member-group.2.2.24.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.js"></script><!-- 门店选择器 -->
<script src="//web-1251519181.file.myqcloud.com/components/store-new.2.0.46.js"></script><!-- 新版门店选择器 -->
<script src="//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/people.2.0.42.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js"></script><!-- 数据导出 -->
......@@ -35,6 +36,6 @@
<script src="//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/selector.1.2.13.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js"></script><!-- 分页器 -->
<script src="//web-1251519181.file.myqcloud.com/components/track.1.0.1.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/track.1.0.3.js"></script>
</body>
</html>
<template>
<div style="display:inline-block;">
<el-popover class="store__popover" placement="bottom" width="200" trigger="click" v-model="popoverShow">
<el-popover class="store__popover" placement="bottom" width="200" trigger="click" v-model="popoverShow" @hide="hide">
<el-input slot="reference" suffix-icon="el-icon-arrow-down" :value="newModel.label" :placeholder="newModel.label ? '' : placeholder"></el-input>
<el-tree style="height: 260px;overflow-y: auto;" ref="tree" node-key="id" :data="treeData" :highlight-current="true" @node-click="handleNodeClick"> </el-tree>
<div class="store-btn-wrap">
......@@ -36,6 +36,10 @@ export default {
this.storeGroupList();
},
methods: {
hide() {
// 关闭弹窗时
this.newModel = { ...this.model };
},
async storeGroupList() {
let res = await storeGroupList();
const result = res.result;
......@@ -64,7 +68,6 @@ export default {
},
submit() {
this.popoverShow = false;
console.log(this.newModel);
this.$emit('commit-store', this.newModel);
},
close() {
......
<template>
<div class="dm-wrap" v-loading="loading">
<el-form ref="form" :model="ruleForm" label-width="140px" :rules="rules">
<el-form-item prop="name" label="数据对话名称">
<dm-input v-model="ruleForm.name" class="w300" placeholder="请输入数据对话名称" :byteType="1" :maxlength="10"></dm-input>
</el-form-item>
<el-form-item prop="dateTime" label="数据对话时间">
<el-date-picker :disabled="disabled" :picker-options="pickerOptions" v-model="ruleForm.beginDate" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="开始日期"></el-date-picker>
<span style="color:#909299;margin-left:5px;margin-right:5px;">~</span>
<el-date-picker :disabled="disabled" :picker-options="pickerOptions" v-model="ruleForm.endDate" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item>
<el-tooltip slot="label" open-delay="200" placement="top">
<!-- <div slot="content">可选内容,详细使用内容详见<a target="_blank" style="color:#1890ff" href="https://demogic.udesk.cn/hc/articles/226671">《数据对话运营复盘流程》</a></div> -->
<div slot="content">可选内容,详细使用内容详见《数据对话运营复盘流程》</div>
<span class="tooltip-icon">会员分组</span>
</el-tooltip>
<div style="width:600px">
<vue-gic-member-group onlyFixedType v-if="initMemberGroup" :defaltSelected="defaltSelected" :height="500" projectName="marketing" @handleDataTransferred="handleDataTransferred" @handleDataLeft="handleDataLeft"></vue-gic-member-group>
</div>
</el-form-item>
<el-form-item label="门店范围">
<vue-gic-store-new :options="options" :isAdd="isAdd" :creatorId="creatorId" :scenesVal="scenes" scenes="auth" :uuid.sync="ruleForm.storeGroup" ref="storeNew" @store-change="storeChange"></vue-gic-store-new>
<div v-if="disabled && info.storeGroup != ruleForm.storeGroup" class="gray fz12"><i class="el-icon-warning mr5 red fz12"></i>数据对话已生效,门店修改无效</div>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submit">确认{{ isAdd ? '新建' : '保存' }}</el-button>
</el-form-item>
</el-form>
<ul style="padding-bottom:40px;margin-left:140px;color:#909399;font-size:14px;line-height:22px;">
<li>* 应用中新建计划时可以使用数据对话:微信营销、短信营销、卡券营销、智能营销、游戏营销</li>
<li>* 营销数据统计分析维度为:营销人次、活动覆盖人数、活动相关订单、活动销售额</li>
</ul>
</div>
</template>
<script>
import { _debounce } from '@/utils/index';
import { formatDateTimeByType } from '@/utils/index.js';
import { saveActivity, getActivityInfo } from '@/service/api/activityApi';
export default {
name: 'activity-form',
data() {
const validateDateLessYear = (rule, value, callback) => {
if (this.isEdit) {
callback();
}
const date1 = this.ruleForm.beginDate;
const date2 = this.ruleForm.endDate;
if (!date1 || !date2) {
callback(new Error('活动时间不能为空'));
}
if (new Date(date2).getTime() < new Date()) {
callback(new Error('结束时间不能小于当前时间'));
}
if (new Date(date2).getTime() - new Date(date1).getTime() > 60 * 60 * 24 * 365 * 1000) {
callback(new Error(rule.message || '时间跨度不能超过一年'));
}
callback();
};
return {
loading: false,
marketingActivityId: this.$route.params.id,
ruleForm: {
name: '',
beginDate: '',
endDate: '',
memberGroup: '',
storeGroup: ''
},
rules: {
name: [{ required: true, message: '请输入活动名称', trigger: 'change' }],
dateTime: [{ required: true, validator: validateDateLessYear, trigger: 'change' }]
},
pickerOptions: {
disabledDate(val) {
return Date.now() >= val.getTime() + 24 * 60 * 60 * 1000;
}
},
// 门店选择器
// 参数
uuid: '',
options: [0, 1, 2, 3, 4, 5],
data: '',
scenes: 'marketing',
creatorId: '',
info: {},
// 会员分组
defaltSelected: [],
initMemberGroup: false,
isAdd: this.$route.meta.type === 'add',
isEdit: this.$route.meta.type === 'edit'
};
},
// watch: {
// 'ruleForm.storeGroup'(newV, oldV) {
// if (this.disabled && oldV) {
// this.$tips({ type: 'warning', message: '数据对话已生效,门店修改无效' });
// }
// }
// },
computed: {
disabled() {
return this.isEdit && new Date() > new Date(this.ruleForm.beginDate);
}
},
methods: {
submit: _debounce(function() {
this.$refs.form.validate(valid => {
if (!valid) {
return;
}
let params = { ...this.ruleForm };
if (this.isEdit) {
params.marketingActivityId = this.marketingActivityId;
}
if (this.disabled) {
// 不能改的时候不传活动时间
delete params.beginDate;
delete params.endDate;
}
if (this.isEdit && this.disabled) {
params.storeGroup = this.info.storeGroup; // 编辑且生效时,门店id只保存历史info的id
}
this.loading = true;
saveActivity(params)
.then(res => {
this.loading = false;
this.$tips({ type: 'success', message: '操作成功' });
this.$router.push('/activity/list');
})
.catch(() => {
this.loading = false;
});
});
}),
getInfo() {
this.loading = true;
getActivityInfo({ marketingActivityId: this.marketingActivityId })
.then(res => {
const result = res.result || {};
const { activityInfo, tagGroupList } = result;
const { name, beginDate, endDate, memberGroup, storeGroup } = activityInfo;
this.info = activityInfo; // 备份详情
this.ruleForm.name = name;
this.ruleForm.beginDate = formatDateTimeByType(beginDate, 'yyyy-MM-dd-HH-mm-ss');
this.ruleForm.endDate = formatDateTimeByType(endDate, 'yyyy-MM-dd-HH-mm-ss');
this.ruleForm.memberGroup = memberGroup;
this.defaltSelected = tagGroupList;
this.ruleForm.name = name;
this.ruleForm.storeGroup = storeGroup;
this.loading = false;
this.$nextTick(() => {
this.initMemberGroup = true;
});
})
.catch(() => {
this.loading = false;
});
},
// *********门店选择器********
storeChange() {
return;
// if (this.disabled) {
// }
},
// *********会员分组**********
handleDataTransferred(data) {
// 会员分组 情况下 memberSearchDTO 传数组字符串
this.ruleForm.memberGroup = data
.map(v => v.memberTagGroupId)
.filter(v => v)
.join(',');
},
handleDataLeft(selectedData, selectionToRemove) {
// 不可编辑
if (!this.disabled) {
this.ruleForm.memberGroup = selectedData
.map(v => v.memberTagGroupId)
.filter(v => v)
.join(',');
} else {
this.$message.warning('数据对话已生效,分组数据编辑无效');
}
}
},
mounted() {
if (this.isAdd) {
this.initMemberGroup = true;
}
if (this.isEdit) {
this.getInfo();
}
},
created() {
// 设置面包屑
let breadcrumbName = '数据对话编辑';
if (this.isAdd) {
breadcrumbName = '数据对话新增';
}
this.$store.commit('aside_handler', false);
this.$store.commit('mutations_breadcrumb', [{ name: '数据对话厅', path: '/activity/list' }, { name: breadcrumbName, path: '' }]); // eslint-disable-line
}
};
</script>
<style lang="scss" scoped>
/deep/ .group-set-transfer {
margin: 0;
padding: 0;
}
</style>
......@@ -60,7 +60,7 @@
<el-button type="primary" @click="saveForm">{{ isAdd ? '新增' : '保存' }}</el-button>
</el-form-item>
</el-form>
<vue-gic-card :showCardDialog="showCardDialog" @selectCard="selectCard" :cardLimit="-1" :cardType="null"></vue-gic-card>
<vue-gic-card :showCardDialog.sync="showCardDialog" @selectCard="selectCard" :cardLimit="-1" :cardType="null"></vue-gic-card>
</div>
</template>
......
......@@ -33,7 +33,7 @@
<el-button v-if="type === 'add'" type="primary" @click="submit">确认销毁</el-button>
</span>
<!-- 只有卡券销毁处传这个参数 -->
<vue-gic-card getCardListUrl="/api-marketing/list-coupon-destroy" appendToBody :showCardDialog="showCardDialog" @selectCard="selectCard" :cardLimit="-1" :cardType="null"></vue-gic-card>
<vue-gic-card getCardListUrl="/api-marketing/list-coupon-destroy" appendToBody :showCardDialog.sync="showCardDialog" @selectCard="selectCard" :cardLimit="-1" :cardType="null"></vue-gic-card>
</el-dialog>
</template>
......
......@@ -62,7 +62,7 @@ export default {
//门店回调
storeChange(val) {
console.log(val);
this.currentData = val;
this.currentData = { ...val };
if (val.id) {
this.listParams.storeGroupId = val.id;
this.refresh();
......
......@@ -46,6 +46,7 @@ export default {
describe: '',
lateDays: '',
brithday_day: '',
brithday_type: 1,
attention_day: '',
lastCost_day: '',
memberSearchDTO: '',
......@@ -140,7 +141,7 @@ export default {
switch (val[0]) {
case 'brithday_day':
if (!this.form.brithday_day) {
this.form.brithday_day = 1;
this.form.brithday_type = 1;
}
this.form.attention_day = 0;
this.form.lastCost_day = 0;
......@@ -266,6 +267,7 @@ export default {
}
if (this.form.effectType === 1) {
this.form.brithday_day = commonScene.brithday_day;
this.form.brithday_type = commonScene.brithday_type || 1;
this.form.attention_day = commonScene.attention_day;
this.form.lastCost_day = commonScene.lastCost_day;
if (this.form.brithday_day) {
......@@ -441,6 +443,10 @@ export default {
// 保存 校验
submit: _debounce(async function(formName) {
if (this.$refs.marketingEvent.list.length < 1) {
this.$tips({ type: 'warning', message: '请至少保存一条营销事件' });
return;
}
// // 这里强制获取人群筛选器的配置项
// await this.$refs.peopleFilter.confirmSet();
// 判断时间
......@@ -534,6 +540,7 @@ export default {
beginDate: this.form.expireType ? formatDateTimeByType(this.form.beginDate, 'yyyy-MM-dd-HH-mm-ss') : '',
endDate: this.form.expireType ? formatDateTimeByType(this.form.endDate, 'yyyy-MM-dd-HH-mm-ss') : '',
brithday_day: this.form.brithday_day,
brithday_type: this.form.brithday_type,
attention_day: this.form.attention_day,
lastCost_day: this.form.lastCost_day,
cardNoticeType: this.form.cardNoticeType,
......
......@@ -95,6 +95,7 @@ export default {
methods: {
getStoreGroup(val) {
this.listParams.currentStoreGroupId = val.storeGroupId;
this.storeGroupData = { ...val };
this.storeEvaluateDetail();
},
close() {
......
......@@ -85,6 +85,7 @@ export default {
methods: {
getStoreGroup(val) {
this.listParams.currentStoreGroupId = val.storeGroupId || '';
this.storeGroupData = { ...val };
this.storeScoreDetail();
},
close() {
......
......@@ -134,7 +134,7 @@ export default {
'mutations_layoutTips',
`<div class="layout--tips">
<i class="el-icon-info"></i>
每隔3小时对所有游戏统计一次,上次统计时间为:${date}
每隔3小时对所有数据收集一次,然后统计到下面列表中(耗费一段时间)。上次收集时间为:${date}
</div>
`
);
......
......@@ -133,7 +133,7 @@ export default {
'mutations_layoutTips',
`<div class="layout--tips">
<i class="el-icon-info"></i>
每隔3小时对所有游戏统计一次,上次统计时间为:${date}
每隔3小时对所有数据收集一次,然后统计到下面列表中(耗费一段时间)。上次收集时间为:${date}
</div>
`
);
......
......@@ -117,7 +117,7 @@ export default {
'mutations_layoutTips',
`<div class="layout--tips">
<i class="el-icon-info"></i>
每隔3小时对所有游戏统计一次,上次统计时间为:${date}
每隔3小时对所有数据收集一次,然后统计到下面列表中(耗费一段时间)。上次收集时间为:${date}
</div>
`
);
......
......@@ -116,7 +116,7 @@ export default {
'mutations_layoutTips',
`<div class="layout--tips">
<i class="el-icon-info"></i>
每隔3小时对所有游戏统计一次,上次统计时间为:${date}
每隔3小时对所有数据收集一次,然后统计到下面列表中(耗费一段时间)。上次收集时间为:${date}
</div>
`
);
......
......@@ -108,7 +108,7 @@ export default {
'mutations_layoutTips',
`<div class="layout--tips">
<i class="el-icon-info"></i>
每隔3小时对所有游戏统计一次,上次统计时间为:${date}
每隔3小时对所有数据收集一次,然后统计到下面列表中(耗费一段时间)。上次收集时间为:${date}
</div>
`
);
......
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