Commit 8a33b5a2 by crushh

update: dist

parent ec4ddc04
......@@ -13,7 +13,7 @@
<script src="//at.alicdn.com/t/font_3229694_vfjtu9hqyrc.js"></script> <!--GIC3.0营销-->
<link rel="stylesheet" href="//at.alicdn.com/t/font_2996579_875h3lycepk.css"> <!-- 3.0企业 -->
<script src="//at.alicdn.com/t/font_2996579_875h3lycepk.js"></script><!-- 3.0企业 -->
<script src="//at.alicdn.com/t/font_2859043_i7b45sfe90d.js"></script><!--3.0组件库-->
<script src="//at.alicdn.com/t/font_2859043_udehp133w1.css"></script><!--3.0组件库-->
<!-- <link rel="stylesheet" href="//web-1251519181.file.myqcloud.com/components/element.2.12.0.css"> -->
<!-- element 皮肤 -->
<!-- <link rel="stylesheet" type="text/css" href="http://web-1251519181.file.myqcloud.com/lib/elementUI/theme.1.0.1/index.css"> -->
......
......@@ -130,7 +130,6 @@ export default {
this.form.timeRangeList.forEach(item => {
let end = new Date(new Date().toLocaleDateString() + ' ' + item.endTime).getTime();
let start = new Date(new Date().toLocaleDateString() + ' ' + item.startTime).getTime();
console.log(start, end);
minutes = (end - start) / 60000 + minutes;
});
if (minutes < 240) {
......@@ -140,18 +139,7 @@ export default {
},
submit() {
return new Promise(resolve => {
let minutes = 0;
this.form.timeRangeList.forEach(item => {
let end = new Date(new Date().toLocaleDateString() + ' ' + item.endTime).getTime();
let start = new Date(new Date().toLocaleDateString() + ' ' + item.startTime).getTime();
console.log(start, end);
minutes = (end - start) / 60000 + minutes;
});
if (minutes < 240) {
this.$message.error('自定义时段不少于4个小时');
resolve(false);
return;
}
this.handleCallTime();
this.$refs.defineTime.validate(val => {
if (val) {
resolve(this.form);
......
......@@ -46,7 +46,7 @@
仅支持选择节日日期为最近1-60天内的节日
</div>
<div class="holiday" v-for="item in holidayData" :key="item.id">
<dm-sub-title>{{ item.name }} </dm-sub-title>
<dm-sub-title>{{ item.name }} </dm-sub-title>
<div class="radioLine">
<el-radio v-model="selectedData" :disabled="val.disabled" :label="val" v-for="val in item.holidaysList" :key="val.id">{{ val.name }}</el-radio>
</div>
......@@ -94,7 +94,7 @@ export default {
holiday_date1: '', //节日活动场景特有值 节日日期
holiday_name2: '', // 节日活动场景特有值 节日名称
holiday_date2: '', //节日活动场景特有值 节日日期
holiday_day: ' ', // 外呼时间
holiday_day: 5, // 外呼时间
callFlag: 0, //外呼时段 0 默认 1 自定义
callTime: [{}] // 自定义时段
},
......@@ -169,8 +169,9 @@ export default {
},
methods: {
handleHolidayDay() {
console.log(getTimesByReq(this.form.holiday_date));
// 回显时 根据外呼周期和节日日期 算出外呼时间
this.form.holiday_day = ((getTimesByReq(this.form.holiday_date) - this.form.startDate) / 24) * 60 * 60 * 1000;
this.form.holiday_day = (getTimesByReq(this.form.holiday_date) - this.form.startDate) / (24 * 60 * 60 * 1000);
},
hanldeHolidayDay(val) {
const { holiday_type, holiday_date1, holiday_date2 } = this.form;
......
......@@ -25,7 +25,13 @@
</div>
<dm-sub-title type="line">人群规则<span class="tips ml20">针对选择的客户仅会执行一次外呼任务。</span></dm-sub-title>
<div class="section">
<el-form-item label="参与人群" prop="memberType" required>
<el-form-item prop="memberType" required>
<template slot="label">
<span>参与人群</span>
<el-tooltip width="400" placement="top-start" content="系统每天凌晨根据此处配置来查询当天需要进行外呼的客户数据并固化下来。因此,若是在当天凌晨系统固化完外呼客户之后人群发生变化则不会已经固化的客户;">
<i style="cursor:pointer;color:#c0c4cc;font-size:14px;" class="el-icon-question"></i>
</el-tooltip>
</template>
<el-radio-group v-model="form.memberType" @change="getMemberCount">
<el-radio :label="0">客户筛选</el-radio>
<el-radio :label="1">客户分组</el-radio>
......@@ -44,37 +50,23 @@
<el-form-item v-if="form.scene == 4 && form.memberType == 0">
<div class="consumeLine">
<el-checkbox v-model="form.consume_days_flag" :true-label="1" :false-label="0" :disabled="disabledCheck" @change="handleLastconsume">最近消费间隔 ≥</el-checkbox>
<el-input-number v-model="form.consume_days" @change="handleChangeNum(form.consume_days_flag)" controls-position="right" :max="730" :min="30" :precision="0" size="small" style="margin:0 10px;" />
<el-input-number v-model="form.consume_days" @change="handleChangeNum(form.consume_days_flag)" controls-position="right" :max="730" :min="30" placeholder="30-730" :precision="0" size="small" style="margin:0 10px;" />
<span class="tips ml16">输入30则查询30天以上未消费的客户</span>
</div>
<div class="consumeLine">
<el-checkbox v-model="form.consume_times_flag" :true-label="1" :false-label="0" :disabled="disabledCheck" @change="handleLastconsume">有效消费次数 ≥</el-checkbox>
<el-input-number v-model="form.consume_times" @change="handleChangeNum(form.consume_times_flag)" controls-position="right" :max="100" :min="1" :precision="0" size="small" style="margin:0 10px;" />
<el-input-number v-model="form.consume_times" @change="handleChangeNum(form.consume_times_flag)" controls-position="right" :max="100" :min="1" placeholder="请输入1-100" :precision="0" size="small" style="margin:0 10px;" />
<span class="tips ml16">输入1则查询有效消费次数大于等于 1 的客户</span>
</div>
<div class="consumeLine">
<el-checkbox v-model="form.consume_amount_flag" :true-label="1" :false-label="0" :disabled="disabledCheck" @change="handleLastconsume">累计消费金额 ≥</el-checkbox>
<el-input-number v-model="form.consume_amount" @change="handleChangeNum(form.consume_amount_flag)" controls-position="right" :precision="0" :max="100000" :min="1" size="small" style="margin:0 10px;" />
<el-input-number v-model="form.consume_amount" @change="handleChangeNum(form.consume_amount_flag)" controls-position="right" placeholder="请输入1-100000" :precision="0" :max="100000" :min="1" size="small" style="margin:0 10px;" />
<span class="tips ml16">输入100则查询有效消费次数大于等于 100 的客户</span>
</div>
<el-button size="small" @click="ruleVisible2 = true" v-if="!memberCrowdWidgetId">添加其它条件</el-button>
<ruleFilter :visiable.sync="ruleVisible2" @save="handleRuleFilterSave" :memberCrowdWidgetId="memberCrowdWidgetId" :hideId="hideId" />
<span class="tips ml10">勾选消费条件后,添加规则不支持选择【金字塔分层】</span>
</el-form-item>
<!-- <el-form-item label="消费条件" v-if="form.scene == 4 && form.memberType == 1">
<div class="consumeLine">
<el-checkbox v-model="form.consume_days_flag1" @change="getMemberCount" :true-label="1" :false-label="0" :disabled="disabledCheck">最近消费间隔</el-checkbox>
<el-input-number v-model="form.consume_days1" @change="handleChangeNum(form.consume_days_flag1)" controls-position="right" :max="730" :precision="0" :min="30" size="small" style="margin:0 10px;" />
</div>
<div class="consumeLine">
<el-checkbox v-model="form.consume_times_flag1" @change="getMemberCount" :true-label="1" :false-label="0" :disabled="disabledCheck">有效消费次数</el-checkbox>
<el-input-number v-model="form.consume_times1" @change="handleChangeNum(form.consume_times_flag1)" controls-position="right" :max="100" :precision="0" :min="1" size="small" style="margin:0 10px;" />
</div>
<div class="consumeLine">
<el-checkbox v-model="form.consume_amount_flag1" @change="getMemberCount" :true-label="1" :false-label="0" :disabled="disabledCheck">累计消费金额</el-checkbox>
<el-input-number v-model="form.consume_amount1" @change="handleChangeNum(form.consume_amount1)" controls-position="right" :max="100000" :precision="0" :min="1" size="small" style="margin:0 10px;" />
</div>
</el-form-item> -->
<el-form-item label="预计覆盖人数">
<span class="bold">{{ form.planMemberCount }}</span>
<span class="tips ml20">不包含无手机号的客户,以最终活动覆盖人数为准</span>
......@@ -310,7 +302,6 @@ export default {
const validateOption = (item, bool) => ({
required: true,
validator: (rule, _, cb) => {
console.log(item);
if (bool && item && !item.length) {
cb(new Error('请选择'));
}
......@@ -320,7 +311,6 @@ export default {
const validateVal = (item, bool) => ({
required: true,
validator: (rule, _, cb) => {
console.log(item);
if (bool && !item) {
cb(new Error('请选择'));
}
......@@ -586,7 +576,12 @@ export default {
const { startDate, endDate, callFlag, callTime, birth_type, birth_days, holiday_date, holiday_type, holiday_name } = activeTimeData;
if (new Date(startDate).getFullYear() == new Date().getFullYear() && new Date(startDate).getMonth() + 1 == new Date().getMonth() + 1 && new Date(startDate).getDate() == new Date().getDate()) {
if (callFlag == 1) {
if (callFlag == 0) {
if (new Date(new Date().toLocaleDateString() + ' ' + '20:00').getTime() < new Date().getTime()) {
this.$message.error('外呼时段的结束时间早于当前时间,今日营销人群无法执行外呼任务,请修改外呼时段');
return;
}
} else if (callFlag == 1) {
let arr = callTime.map(item => item.split('-')[1]);
let endTime = arr.reduce((p, v) => (p < v ? v : p));
if (new Date(new Date().toLocaleDateString() + ' ' + endTime).getTime() < new Date().getTime()) {
......@@ -903,7 +898,7 @@ export default {
padding: 20px 0 18px 0;
}
.card {
width: 730px;
width: 65%;
background: #f7f8fa;
border-radius: 4px;
box-sizing: border-box;
......
......@@ -12,7 +12,7 @@
<div class="radioContainer">
<div v-for="item in valueList" :key="item.tagId" class="radioLine">
<div class="lineTitle">{{ item.tagName }}</div>
<el-radio v-for="value in item.itemList" :key="value.tagItemId" :label="value" v-model="selectedTag">{{ value.tagItemName }}</el-radio>
<el-radio v-for="value in item.itemList" :key="value.tagItemId" :label="value" v-model="selectVal" @change="val => handleChange(item.tagName, val)">{{ value.tagItemName }}</el-radio>
</div>
</div>
<dm-pagination class="fr" layout="prev, pager, next" v-if="totalCount" :total="totalCount" :page-size="pageSize" :current-page.sync="currentPage" @current-change="getPageMemberTagDetail"> </dm-pagination>
......@@ -53,6 +53,7 @@ export default {
tagTwoLevelGroupId: '',
isSync: false
},
selectVal: '',
selectedTag: ''
};
},
......@@ -69,6 +70,10 @@ export default {
ManualTagEdit
},
methods: {
handleChange(val, label) {
this.selectedTag = JSON.parse(JSON.stringify(label));
this.selectedTag.tagItemName = val + '-' + this.selectedTag.tagItemName;
},
confirm() {
if (!this.selectedTag) {
this.$message.waring('请选择标签');
......
......@@ -34,7 +34,7 @@
</el-select>
</el-form-item>
<el-form-item>
<el-date-picker v-model="form.time" value-format="yyyy-MM-dd" @change="search" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" clearable> </el-date-picker>
<el-date-picker v-model="form.time" :picker-options="pickerOptions" value-format="yyyy-MM-dd" @change="search" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" clearable> </el-date-picker>
</el-form-item>
</el-form>
</div>
......@@ -94,6 +94,8 @@ import { page, rechargeCenter, stopActivityPlan, startActivityPlan, pageStatisti
import { formatDateTimeByType } from '@/utils/index.js';
import filterAvater from '@/mixins/filterAvater.js';
import dmDropdown from '@/components/dm-drop-down/dm-drop-down';
let maxTime = null;
let minTime = null;
export default {
mixins: [filterAvater],
data() {
......@@ -110,6 +112,12 @@ export default {
pageSize: 20
},
total: 0,
pickerOptions: {
disabledDate: time => {
const maxTimeRange = 180 * 24 * 60 * 60 * 1000; // 6个月
return time.getTime() < new Date().getTime() - maxTimeRange || time.getTime() > new Date().getTime() + maxTimeRange;
}
},
btnArr: [
{
text: '查看',
......@@ -405,43 +413,43 @@ export default {
params.endTime = params.time[1];
}
delete params.time;
const { result } = await page(params);
if (!result) return;
this.tableData = result.list || [];
const ids = this.tableData.map(item => item.activityId).join(',');
this.total = result.total;
this.pageStatistics(ids);
},
async pageStatistics(ids) {
try {
const { result } = await page(params);
const { result } = await pageStatistics({ ids });
if (!result) return;
this.tableData = result.list || [];
const ids = this.tableData.map(item => item.activityId).join(',');
this.total = result.total;
this.pageStatistics(ids);
let obj = {};
result.forEach(element => {
obj[element.activityId] = element;
});
this.tableData.forEach(item => {
if (obj[item.activityId]) {
const { marketingNumber, outboundNumber, totalConnectionNumber, telephoneConnectionRate, connectionIntentionRate } = obj[item.activityId];
item.marketingNumber = marketingNumber;
item.outboundNumber = outboundNumber;
item.totalConnectionNumber = totalConnectionNumber;
item.telephoneConnectionRate = telephoneConnectionRate;
item.connectionIntentionRate = connectionIntentionRate;
} else {
item.marketingNumber = '- -';
item.outboundNumber = '- -';
item.totalConnectionNumber = '- -';
item.telephoneConnectionRate = '- -';
item.connectionIntentionRate = '- -';
}
});
this.tableData = this.tableData.splice(0);
} finally {
this.loading = false;
}
},
async pageStatistics(ids) {
const { result } = await pageStatistics({ ids });
if (!result) return;
let obj = {};
result.forEach(element => {
obj[element.activityId] = element;
});
this.tableData.forEach(item => {
if (obj[item.activityId]) {
const { marketingNumber, outboundNumber, totalConnectionNumber, telephoneConnectionRate, connectionIntentionRate } = obj[item.activityId];
item.marketingNumber = marketingNumber;
item.outboundNumber = outboundNumber;
item.totalConnectionNumber = totalConnectionNumber;
item.telephoneConnectionRate = telephoneConnectionRate;
item.connectionIntentionRate = connectionIntentionRate;
} else {
item.marketingNumber = '- -';
item.outboundNumber = '- -';
item.totalConnectionNumber = '- -';
item.telephoneConnectionRate = '- -';
item.connectionIntentionRate = '- -';
}
});
this.tableData = this.tableData.splice(0);
},
stopTask(row) {
this.$confirm('任务终止后未外呼的客户将停止外呼任务,终止后不可重新启用任务,是否继续终止任务?', '提示', {
confirmButtonText: '终止',
......
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