Commit acfb7d04 by 黑潮

update: 交互优化

parent 420f65e8
......@@ -9,7 +9,7 @@ export const ecmTypes = [
{ value: 'integral', label: '积分', visible: true },
{ value: 'grade', label: '会员卡升级', visible: false },
{ value: 'qywx', label: '企微任务', visible: false },
{ value: 'qfxx', label: '群发消息', visible: false },
{ value: 'qfxx', label: '群发任务', visible: false },
{ value: 'teltask-fail', label: '群发失败-话务', visible: false },
{ value: 'message-fail', label: '群发失败-短信', visible: false }
];
......@@ -57,7 +57,7 @@
<el-form-item label="通知方式" class="is-required" prop="noticeType">
<el-radio v-model="form.noticeType" :label="0" :disabled="!isEditTemplate || isInfo"
>不通知
<el-tooltip class="item" effect="dark" content="不通知用户,但用户可以在GIC卡券包查看到该卡券。建议线下发券使用,或使用其他通知方式代替(如小程序、短信等)" placement="top-start">
<el-tooltip class="item" effect="dark" content="不会通知用户,但是卡券会放入用户账户" placement="top-start">
<i class="iconfont icon-xinxixianshi pl5 gray"></i>
</el-tooltip>
</el-radio>
......
......@@ -64,7 +64,7 @@
import { ecmCurrentSendInfos, ecmCurrentSendDetails, exportCurrentSendDetails } from '@/service/api/ecmApi.js';
import { formatDateTimeByType } from '@/utils/index.js';
import memberInfo from '@/components/member-info/index.vue';
const typeOptions = [{ value: '', label: '所有类型' }, { value: 'teletext', label: '图文' }, { value: 'text', label: '文本' }, { value: 'image', label: '图片' }, { value: 'card', label: '卡券' }, { value: 'wxa', label: '小程序' }, { value: 'message', label: '短信' }, { value: 'teltask', label: '话务' }, { value: 'integral', label: '积分' }, { value: 'qywx', label: '企微任务' }, { value: 'qfxx', label: '群发消息' }, { value: 'grade', label: '会员卡升级' }, { value: 'teltask-fail', label: '群发失败-话务' }, { value: 'message-fail', label: '群发失败-短信' }]; // eslint-disable-line
const typeOptions = [{ value: '', label: '所有类型' }, { value: 'teletext', label: '图文' }, { value: 'text', label: '文本' }, { value: 'image', label: '图片' }, { value: 'card', label: '卡券' }, { value: 'wxa', label: '小程序' }, { value: 'message', label: '短信' }, { value: 'teltask', label: '话务' }, { value: 'integral', label: '积分' }, { value: 'qywx', label: '企微任务' }, { value: 'qfxx', label: '群发任务' }, { value: 'grade', label: '会员卡升级' }, { value: 'teltask-fail', label: '群发失败-话务' }, { value: 'message-fail', label: '群发失败-短信' }]; // eslint-disable-line
export default {
name: 'ecm-current-list',
components: {
......
......@@ -799,7 +799,7 @@ export default {
return this.$tips({ type: 'warning', message: '所选的营销事件中,存在已失效或被删除模板的营销事件,请先将失效的营销事件删除后再保存!' });
}
if (this.$refs.marketingEvent.hasMaterialDeleted) {
return this.$tips({ type: 'warning', message: '所选的群发消息中,存在已失效或被删除的营销素材,请先将失效的营销素材删除后再保存!' });
return this.$tips({ type: 'warning', message: '所选的群发任务中,存在已失效或被删除的营销素材,请先将失效的营销素材删除后再保存!' });
}
}
this.$refs[formName].validate(valid => {
......
......@@ -335,7 +335,7 @@
<el-form-item label="通知方式" class="is-required" prop="cardNoticeType">
<el-radio v-model="form.cardNoticeType" :label="0"
>不通知
<el-tooltip open-delay="200" placement="top-start" content="不通知用户,但用户可以在GIC卡券包查看到该卡券。建议线下发券使用,或使用其他通知方式代替(如小程序、短信等)">
<el-tooltip open-delay="200" placement="top-start" content="不会通知用户,但是卡券会放入用户账户">
<i class="iconfont icon-xinxixianshi pl5 gray"></i>
</el-tooltip>
</el-radio>
......@@ -431,13 +431,14 @@
<div class="mt20">
<div class="w150 text-right inline-block mr10">
<label class="cursor required">
<span>设置营销效果时长</span>
<span>分析天数</span>
<el-tooltip slot="label" open-delay="200" placement="top">
<i style="cursor:pointer;color:#909399;font-size:14px;" class="iconfont icon-xinxixianshi"></i>
<div slot="content" style="width:376px;line-height: 22px;">设置线索在被营销触达之后的{{ analyseConfig.marke_days || '--' }}天内,客户所产生的消费纳入到该线索收益统计</div>
<div slot="content" style="width:340px;line-height: 22px;">设置从触达到客户的那天起,多少天以内会被纳入到数据分析</div>
</el-tooltip>
</label>
</div>
<span class="mr10">触达日期起</span>
<el-input-number :disabled="!isAdd" controls-position="right" class="w150" :min="1" :max="31" step-strictly v-model="analyseConfig.marke_days"></el-input-number>
<span class="ml10">天之内</span>
</div>
......
......@@ -90,18 +90,20 @@
<!-- <dm-delete v-if="scope.row.effectType !== 2 && scope.row.onlineStatus === 1 && scope.row.canEdit !== false" @confirm="offlineEcmPlan(scope.row)" tips="是否下线该计划?">
<el-button type="text">下线</el-button>
</dm-delete> -->
<template v-if="scope.row.putonStatus !== 2 && scope.row.canEdit !== false">
<el-dropdown-item @click="toRecord(row)">记录</el-dropdown-item>
<!-- <template v-if="scope.row.putonStatus !== 2 && scope.row.canEdit !== false">
<el-button v-if="xsxsFlag && isOpenFlag(scope.row.analyseJson)" type="text" @click="onDelete(scope.row)">删除</el-button>
<dm-delete v-else @confirm="delData(scope.row)" tips="是否删除该计划?">
<el-button type="text">删除</el-button>
</dm-delete>
</template>
</template> -->
<!-- <el-button type="text" @click="toRecord(scope.row)">记录</el-button>
<el-button type="text" @click="toTouch(scope.row)" v-if="xsxsFlag && isOpenFlag(scope.row.analyseJson)">触达效果</el-button> -->
<el-dropdown style="margin-left:8px" trigger="click" @command="onCommand($event, scope.row)">
<el-button type="text">更多<i class="el-icon-arrow-down el-icon--right"></i></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="1">记录</el-dropdown-item>
<!-- <el-dropdown-item :command="1">记录</el-dropdown-item> -->
<el-dropdown-item v-if="scope.row.putonStatus !== 2 && scope.row.canEdit !== false" :command="1">删除</el-dropdown-item>
<el-dropdown-item v-if="scope.row.effectType !== 2 && scope.row.onlineStatus === 1 && scope.row.canEdit !== false" @confirm="offlineEcmPlan(scope.row)" :command="2">下线</el-dropdown-item>
<el-dropdown-item v-if="xsxsFlag && isOpenFlag(scope.row.analyseJson)" :command="3">触达效果</el-dropdown-item>
<!-- <el-dropdown-item :command="4">复制新建</el-dropdown-item> -->
......@@ -248,7 +250,7 @@ export default {
}
},
{
label: '线索转化收益',
label: '转化收益',
prop: 'ecmTranIncome',
minWidth: '120',
align: 'left',
......@@ -395,7 +397,21 @@ export default {
},
async onCommand(command, row) {
if (command == 1) {
this.toRecord(row);
// this.toRecord(row);
if (this.xsxsFlag && this.isOpenFlag(row.analyseJson)) {
await this.$confirm('是否删除该计划?删除后触达效果数据会一起被删除', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
});
} else {
await this.$confirm('是否删除该计划?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
});
}
this.delData(row);
} else if (command == 2) {
await this.$confirm('是否下线该计划?', '提示', {
confirmButtonText: '确定',
......
<template>
<div>
<el-dialog custom-class="dialogClass" :title="isEdit && !readOnly ? '编辑群发消息' : '群发消息'" :visible.sync="show" width="680px" @closed="close">
<el-dialog custom-class="dialogClass" :title="isEdit && !readOnly ? '编辑群发任务' : '群发任务'" :visible.sync="show" width="680px" @closed="close">
<el-form ref="form" :model="form" :rules="rules" label-width="130px">
<el-form-item label="选择企业" prop="qfxxEnterpriseId">
<el-select v-model="form.qfxxEnterpriseId" @change="onChangeEnterprise" :disabled="isEdit || readOnly">
......@@ -39,7 +39,7 @@
<div slot="content" style="width:376px;line-height: 22px;">计划创建保存后,若修改群发内容,该计划历史已下发任务的群发内容不变,仅影响后续新下发的任务</div>
</el-tooltip>
</template>
<div style="font-size:12px;color:#6B6D71;margin-bottom:10px">建议以文本+其他类型组合创建群发内容;文本内容最多只能添加 1 个</div>
<div style="font-size:12px;color:#6B6D71;margin-bottom:10px">须添加 1 条文本内容,建议以文本+其他类型的组合创建群发内容</div>
<div style="margin-bottom:16px;display:flex;flex-wrap:wrap;margin-top:12px">
<material-item class="card-item" v-for="item in materials" :key="item.relation_id" :item="item" @delete="onDeleteMaterial" :read-only="readOnly"></material-item>
<div v-show="materials.length < 3 && !readOnly" class="chat-item card-item" @click="openMaterialDialog">
......@@ -69,16 +69,20 @@
<div style="margin-top:12px;color:#606266">{{ form.teltask.content }}</div>
</div>
</div>
<div class="task-wrapper" style="margin-top:16px;padding-top:14px;">
<div class="task-wrapper" :style="{ 'border-color': showWarning ? '#F5222D' : '' }" style="margin-top:16px;padding-top:14px;">
<el-row style="margin-bottom:12px" type="flex" align="middle" justify="space-between">
<el-checkbox label="短信" style="margin-bottom:0" :value="form.smsFlag" :true-label="1" :false-label="0" :disabled="readOnly" @change="onChangeSms"></el-checkbox>
<el-button v-if="form.gicSmsTemplateId && !readOnly" type="text" @click="messageDialogShow = true">重新选择</el-button>
</el-row>
<div style="margin-bottom:14px" v-if="form.gicSmsTemplateId">
<div class="teltask-title" style="font-size:16px;color:#303133">{{ sms.title }}<template v-if="form.gicSmsTemplateId == -1">( 短信模板已删除 )</template></div>
<el-tag v-if="form.gicSmsTemplateId == -1" class="delete-tag" type="danger" style="float:right">短信模板已删除</el-tag>
<div class="teltask-title" style="font-size:16px;color:#303133">{{ sms.title }}</div>
<div v-if="form.gicSmsTemplateId != -1" style="margin-top:12px;color:#606266">{{ sms.content }}</div>
</div>
</div>
<transition name="el-zoom-in-top">
<div v-if="showWarning" style="font-size:12px;color:#F5222D;line-height:1.5;margin-top:8px;position:absolute">您选中的短信模板已被删除,请重新选择</div>
</transition>
</div>
</el-form-item>
</el-form>
......@@ -151,7 +155,8 @@ export default {
telTaskItem: {},
teltaskDialogShow: false,
sms: {},
messageDialogShow: false
messageDialogShow: false,
showWarning: false
};
},
created() {
......@@ -201,6 +206,7 @@ export default {
this.materials = [];
this.sms = {};
this.telTaskItem = {};
this.showWarning = false;
this.$refs.form.resetFields();
this.$emit('update:show', false);
},
......@@ -216,11 +222,15 @@ export default {
return;
}
if (this.form.failSetting === '') {
return this.$message.warning('请选择是否开启群发消息失败设置');
return this.$message.warning('请选择是否开启群发任务失败设置');
}
if (this.form.failSetting == 1 && this.form.smsFlag == 0 && this.form.telFlag == 0) {
return this.$message.warning('请至少设置一种群发失败方式');
}
if (qfxx.gicSmsTemplateId == -1) {
this.showWarning = true;
return;
}
if (qfxx.failSetting == 0) {
qfxx.telFlag = 0;
qfxx.smsFlag = 0;
......@@ -235,6 +245,7 @@ export default {
qfxx.chatContent = JSON.stringify(this.materials.map(el => ({ relation_id: el.relation_id })));
this.$emit('sendItem', { title: this.form.title, qfxx, comName: 'qfxx', ecmMarketingTypeRelationId: this.ecmMarketingTypeRelationId });
this.close();
this.showWarning = false;
},
getEntepriseList() {
getEntepriseList()
......@@ -351,6 +362,17 @@ export default {
</style>
<style lang="scss" scoped>
.delete-tag {
float: right;
font-size: 12px;
line-height: 22px;
height: 22px;
border-radius: 2px;
padding: 0 7px;
color: #f5222d;
border-color: 1px solid #ffa393;
background-color: #fff1f0;
}
.chat-item {
width: 240px;
height: 100px;
......
......@@ -71,7 +71,7 @@ import libQfxx from './components/lib-qfxx';
// 全部的操作项
// eslint-disable-next-line
let allOptions = [{ name: '企微任务', value: 'qywx', key: 10, img: require('./assets/img/qywx.svg'), hoverImg: require('./assets/img/qywx-1.svg'), show: true }, { name: '群发消息', value: 'qfxx', key: 11, img: require('./assets/img/qfxx.svg'), hoverImg: require('./assets/img/qfxx-1.svg'), disabledImg: require('./assets/img/qfxx-2.svg'), show: false, disabled: false }, { name: '图文', value: 'teletext', key: 1, img: require('./assets/img/teletext.svg'), hoverImg: require('./assets/img/teletext-1.svg'), show: true }, { name: '文本', value: 'text', key: 2, img: require('./assets/img/text.svg'), hoverImg: require('./assets/img/text-1.svg'), show: true }, { name: '小程序', value: 'wxa', key: 3, img: require('./assets/img/wxa.svg'), hoverImg: require('./assets/img/wxa-1.svg'), show: true }, { name: '图片', value: 'image', key: 4, img: require('./assets/img/image.svg'), hoverImg: require('./assets/img/image-1.svg'), show: true }, { name: '卡券', value: 'card', key: 5, img: require('./assets/img/card.svg'), hoverImg: require('./assets/img/card-1.svg'), show: true }, { name: '短信', value: 'message', key: 6, img: require('./assets/img/message.svg'), hoverImg: require('./assets/img/message-1.svg'), show: true }, { name: '话务', value: 'teltask', key: 7, img: require('./assets/img/teltask.svg'), hoverImg: require('./assets/img/teltask-1.svg'), show: true }, { name: '积分', value: 'integral', key: 8, img: require('./assets/img/integral.svg'), hoverImg: require('./assets/img/integral-1.svg'), show: true },{ name: '会员卡升级', value: 'grade', key: 9, img: require('./assets/img/grade.svg'), hoverImg: require('./assets/img/grade-1.svg'), disabledImg: require('./assets/img/grade-2.svg'), show: false, disabled: false }];
let allOptions = [{ name: '企微任务', value: 'qywx', key: 10, img: require('./assets/img/qywx.svg'), hoverImg: require('./assets/img/qywx-1.svg'), show: true }, { name: '群发任务', value: 'qfxx', key: 11, img: require('./assets/img/qfxx.svg'), hoverImg: require('./assets/img/qfxx-1.svg'), disabledImg: require('./assets/img/qfxx-2.svg'), show: false, disabled: false }, { name: '图文', value: 'teletext', key: 1, img: require('./assets/img/teletext.svg'), hoverImg: require('./assets/img/teletext-1.svg'), show: true }, { name: '文本', value: 'text', key: 2, img: require('./assets/img/text.svg'), hoverImg: require('./assets/img/text-1.svg'), show: true }, { name: '小程序', value: 'wxa', key: 3, img: require('./assets/img/wxa.svg'), hoverImg: require('./assets/img/wxa-1.svg'), show: true }, { name: '图片', value: 'image', key: 4, img: require('./assets/img/image.svg'), hoverImg: require('./assets/img/image-1.svg'), show: true }, { name: '卡券', value: 'card', key: 5, img: require('./assets/img/card.svg'), hoverImg: require('./assets/img/card-1.svg'), show: true }, { name: '短信', value: 'message', key: 6, img: require('./assets/img/message.svg'), hoverImg: require('./assets/img/message-1.svg'), show: true }, { name: '话务', value: 'teltask', key: 7, img: require('./assets/img/teltask.svg'), hoverImg: require('./assets/img/teltask-1.svg'), show: true }, { name: '积分', value: 'integral', key: 8, img: require('./assets/img/integral.svg'), hoverImg: require('./assets/img/integral-1.svg'), show: true },{ name: '会员卡升级', value: 'grade', key: 9, img: require('./assets/img/grade.svg'), hoverImg: require('./assets/img/grade-1.svg'), disabledImg: require('./assets/img/grade-2.svg'), show: false, disabled: false }];
export default {
name: 'vue-gic-marketing-event',
components: {
......@@ -359,8 +359,8 @@ export default {
case 'qywx': // 10 企微任务
this.list.push({ name: '企微任务', comName: 'item-qywx', item: { title: v.title, qywx: v.qywx, ecmMarketingTypeRelationId: v.ecmMarketingTypeRelationId, relationId: v.relationId, ecmPlanId: v.ecmPlanId } });
break;
case 'qfxx': // 11 群发消息
this.list.push({ name: '群发消息', comName: 'item-qfxx', item: { title: v.title, qfxx: v.qfxx, ecmMarketingTypeRelationId: v.ecmMarketingTypeRelationId, relationId: v.relationId, ecmPlanId: v.ecmPlanId } });
case 'qfxx': // 11 群发任务
this.list.push({ name: '群发任务', comName: 'item-qfxx', item: { title: v.title, qfxx: v.qfxx, ecmMarketingTypeRelationId: v.ecmMarketingTypeRelationId, relationId: v.relationId, ecmPlanId: v.ecmPlanId } });
break;
}
});
......
......@@ -70,7 +70,7 @@
<el-form-item label="通知方式" class="is-required" prop="cardNoticeType">
<el-radio v-model="form.cardNoticeType" :label="0"
>不通知
<el-tooltip open-delay="200" placement="top-start" content="不通知用户,但用户可以在GIC卡券包查看到该卡券。建议线下发券使用,或使用其他通知方式代替(如小程序、短信等)">
<el-tooltip open-delay="200" placement="top-start" content="不会通知用户,但是卡券会放入用户账户">
<i class="iconfont icon-xinxixianshi pl5 gray"></i>
</el-tooltip>
</el-radio>
......
......@@ -49,7 +49,7 @@
<el-form-item label="通知方式" class="is-required" prop="noticeType">
<el-radio v-model="form.noticeType" :label="0" :disabled="!isEditTemplate || isInfo"
>不通知
<el-tooltip class="item" effect="dark" content="不通知用户,但用户可以在GIC卡券包查看到该卡券。建议线下发券使用,或使用其他通知方式代替(如小程序、短信等)" placement="top-start">
<el-tooltip class="item" effect="dark" content="不会通知用户,但是卡券会放入用户账户" placement="top-start">
<i class="iconfont icon-xinxixianshi pl5 gray"></i>
</el-tooltip>
</el-radio>
......
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