Commit bfea7941 by caoyanzhi

Merge branch 'feature/7月迭代' into test

parents 10abb11f 8e195bc7
......@@ -8,8 +8,9 @@
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.BASE_URL %>static/css/common.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_688955_2dxzdzrb3a7.css"> <!--GIC后台3.0-->
<script src="//at.alicdn.com/t/font_688955_2dxzdzrb3a7.js"></script> <!--GIC后台3.0-->
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_3229694_yzk6z4765g.css"> <!--GIC3.0营销-->
<script src="//at.alicdn.com/t/c/font_3229694_yzk6z4765g.js"></script> <!--GIC3.0营销-->
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_3380872_b9qubgdi1ic.css"><!--3.0新版商户后台-->
<!-- <link rel="stylesheet" href="//at.alicdn.com/t/c/font_3229694_yzk6z4765g.css"> GIC3.0营销 -->
<!-- <script src="//at.alicdn.com/t/c/font_3229694_yzk6z4765g.js"></script> GIC3.0营销 -->
<link src="//at.alicdn.com/t/font_2859043_udehp133w1.css"><!--3.0组件库-->
<script src="//at.alicdn.com/t/font_2859043_udehp133w1.js"></script><!--3.0组件库-->
<link rel="stylesheet" href="//at.alicdn.com/t/font_2996579_dv9vctk5vdt.css"> <!-- 3.0企业 -->
......
......@@ -38,6 +38,8 @@ export default {
localStorage.setItem('enableAccessControl', enableAccessControl);
if (this.userId !== uId) {
this.userId = uId;
// 切换账号后,不缓存权限数据、菜单数据、面包屑数据
window.notCache = true;
// 串号
this.$confirm('当前登录账号已经发生变化,如果您在其他页面已经登录另一个账号,请重新登录!', '登录账号变更提示', {
confirmButtonText: '重新登录',
......
......@@ -21,18 +21,24 @@
{{ scope.row.activityStatus === 0 ? '未开始' : '已结束' }}
</div>
</template>
<template v-else-if="'status' in scope.row">
<div v-if="scope.row.status === 1"><span class="dm-status--primary--flash"></span>进行中</div>
<div v-else :class="scope.row.status === 0 ? 'dm-status--warning' : 'dm-status--info'">
{{ scope.row.status === 0 ? '未开始' : '已结束' }}
</div>
</template>
</template>
</el-table-column>
<el-table-column label="开始时间">
<template slot-scope="scope">
<p style="line-height: 18px;">{{ formatDateTimeByType(scope.row.gameStartTime, 'yyyy-MM-dd') }}</p>
<p style="line-height: 18px;">{{ formatDateTimeByType(scope.row.gameStartTime, 'HH:mm:ss') }}</p>
<template slot-scope="{ row }">
<p style="line-height: 18px;">{{ formatDateTimeByType(row.gameStartTime || row.startDate, 'yyyy-MM-dd') }}</p>
<p style="line-height: 18px;">{{ formatDateTimeByType(row.gameStartTime || row.startDate, 'HH:mm:ss') }}</p>
</template>
</el-table-column>
<el-table-column label="结束时间">
<template slot-scope="scope">
<p style="line-height: 18px;">{{ formatDateTimeByType(scope.row.gameEndTime, 'yyyy-MM-dd') }}</p>
<p style="line-height: 18px;">{{ formatDateTimeByType(scope.row.gameEndTime, 'HH:mm:ss') }}</p>
<template slot-scope="{ row }">
<p style="line-height: 18px;">{{ formatDateTimeByType(row.gameEndTime || row.endDate, 'yyyy-MM-dd') }}</p>
<p style="line-height: 18px;">{{ formatDateTimeByType(row.gameEndTime || row.endDate, 'HH:mm:ss') }}</p>
</template>
</el-table-column>
</el-table>
......@@ -94,21 +100,23 @@ export default {
getList(gameType) {
const setResponse = (res, type) => {
//type 0 大转盘/刮刮卡 ----- 1 其他游戏
const { errorCode, message, result } = res.data || {};
if (errorCode != 0) {
const { errorCode, message, result, code } = res.data || {};
if (errorCode != 0 && code != 0) {
return this.$message.error(message);
} else {
if (type === 0) {
this.list = result.page.result || [];
this.total = result.page.totalCount || 0;
} else {
} else if (type === 1) {
this.list = (result.result || []).map(item => ({ ...item, gameId: item.gameActivityId }));
this.total = result.totalCount || 0;
} else if (type === 2) {
this.list = result.list || [];
this.total = result.total || 0;
}
}
};
console.log(this.gameType);
console.log(this.gameId);
switch (gameType) {
case 'GAME_LINK_DZP':
this.axios.post(`/api-marketing/page-lottery-game`, qs.stringify({ ...this.query, gameType: 1 })).then(res => {
......@@ -136,13 +144,14 @@ export default {
});
break;
case 'GAME_LINK_XYMH':
const para = { ...this.query };
para.status = 1;
console.log(para);
// delete para.gameStatus
this.axios.post(`/api-marketing/game-pro/page`, qs.stringify(para)).then(res => {
console.log(res);
setResponse(res, 1);
const para = {
gameName: this.query.searchParam,
pageNum: this.query.currentPage,
pageSize: this.query.pageSize,
status: 1
};
this.axios.post(`/api-marketing/game-pro/page?requestProject=marketing`, para).then(res => {
setResponse(res, 2);
});
break;
}
......
......@@ -129,7 +129,7 @@
<el-dialog title="游戏列表" :close-on-click-modal="false" :visible.sync="gameProps.gameListVisible">
<game-list v-if="gameProps.gameListVisible" ref="gameList" :game-type="gameProps.gameType"></game-list>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="onSelectGame">确 定</el-button>
<el-button type="primary" @click="onSelectGame" :loading="btnLoading">确 定</el-button>
</span>
</el-dialog>
</div>
......@@ -149,23 +149,6 @@ import GameList from './game-list.vue';
import { generateMiniProgramLink } from '@/service/api/gameApi.js';
const getgameStatus = val => {
console.log(val);
let text = '已结束';
switch (val) {
case 1:
text = '进行中';
break;
case 0:
text = '未开始';
break;
default:
text = '已结束';
break;
}
return text;
};
export default {
name: 'links',
props: ['linkToolsVisible', 'showType', 'projectName', 'activeName'],
......@@ -178,6 +161,7 @@ export default {
threeLevelVisible: false, // 三级整个
// 链接类型
linksType: '',
btnLoading: false,
linksTypeOptions: [
// {
// id: '1',
......@@ -400,25 +384,29 @@ export default {
onSelectGame() {
if (this.$refs.gameList && this.$refs.gameList.seletedItem) {
const gameItem = this.$refs.gameList.seletedItem;
generateMiniProgramLink({ id: gameItem.gameId || gameItem.gameActivityId, linkId: this.gameProps.gameType }).then(res => {
this.gameProps.showGameInfo = true;
this.gameProps.gameListVisible = false;
this.gameInfo = {
title: gameItem.gameName,
id: gameItem.gameId || gameItem.gameActivityId,
gameStartTime: gameItem.gameStartTime,
gameEndTime: gameItem.gameEndTime,
gameStatus: 'gameStatusName' in gameItem ? gameItem.gameStatusName : getgameStatus(gameItem.activityStatus)
};
this.selectLinkObj.id = this.gameProps.gameType;
this.selectLinkObj.url = res.result.link;
this.selectLinkObj.name = gameItem.gameName;
console.log(this.selectLinkObj);
this.$emit('linkSelect', this.selectLinkObj);
});
this.btnLoading = true;
generateMiniProgramLink({ id: gameItem.gameId || gameItem.gameActivityId, linkId: this.gameProps.gameType })
.then(res => {
this.gameProps.showGameInfo = true;
this.gameProps.gameListVisible = false;
this.gameInfo = {
title: gameItem.gameName,
id: gameItem.gameId || gameItem.gameActivityId,
gameStartTime: gameItem.gameStartTime || gameItem.startDate,
gameEndTime: gameItem.gameEndTime || gameItem.endDate,
gameStatus: '进行中'
};
this.selectLinkObj.id = this.gameProps.gameType;
this.selectLinkObj.url = res.result.link;
this.selectLinkObj.name = gameItem.gameName;
console.log(this.selectLinkObj);
this.$emit('linkSelect', this.selectLinkObj);
})
.finally(() => {
this.btnLoading = false;
});
} else {
this.$message.warning('请添加游戏');
}
......
......@@ -58,7 +58,7 @@
<p>{{ formatDateTimeByType(row.smsSendTime, 'HH:mm:ss') || '--' }}</p>
</div>
</el-table-column>
<el-table-column min-width="100px">
<el-table-column min-width="100px" fixed="right">
<template #header>
通话记录
<el-tooltip placement="top">
......@@ -69,21 +69,29 @@
</el-tooltip>
</template>
<template slot-scope="{ row }">
<el-tooltip placement="top">
<div slot="content">
查看记录
<div class="flex">
<div class="btnBg">
<el-tooltip placement="top">
<div slot="content">
查看记录
</div>
<el-button size="small" type="text" @click="handleRecord(row)" :disabled="!row.aiTelRecordText">
<i class="iconfont fz16 icon-chakanxiangqing-copy "></i>
</el-button>
</el-tooltip>
</div>
<el-button size="small" type="text" @click="handleRecord(row)" :disabled="!row.aiTelRecordText"><i class="iconfont fz14 icon-chakanxiangqing-copy"></i> </el-button>
</el-tooltip>
<div class="btnBg" style="margin-left:12px">
<el-tooltip placement="top" :disabled="!row.aiTelRecordText">
<div slot="content">
{{ row.isPlay ? '暂停播放' : '播放录音' }}
</div>
<el-tooltip placement="top" :disabled="!row.aiTelRecordText">
<div slot="content">
{{ row.aiTelRecordText && !row.aiTelRecordUrl ? '录音已过期' : '播放录音' }}
<el-button size="small" type="text" @click="handleListen(row)" :disabled="!row.aiTelRecordText || (row.aiTelRecordText && !row.aiTelRecordUrl)">
<i :class="['iconfont fz16', row.isPlay ? 'icon-tingzhi' : 'icon-bofang']"></i>
</el-button>
</el-tooltip>
</div>
<el-button size="small" type="text" @click="handleListen(row)" :disabled="!row.aiTelRecordText || (row.aiTelRecordText && !row.aiTelRecordUrl)">
<i :class="['iconfont fz14', row.isPlay ? 'icon-zanting' : 'icon-kaiqi']"></i>
</el-button>
</el-tooltip>
</div>
</template>
</el-table-column>
</el-table>
......@@ -299,5 +307,17 @@ export default {
}
}
}
.btnBg {
display: flex;
justify-content: center;
align-content: center;
width: 24px;
height: 24px;
&:hover {
background: RGBA(233, 234, 255, 1);
border-radius: 2px;
font-size: 16px;
}
}
}
</style>
......@@ -30,7 +30,7 @@
</el-table>
<div class="chart-box">
<div class="chart-member-count" v-if="funnelData.hasData">
<img :src="scene == 5 ? img2 : img1" class="funnelImg" />
<img :src="img1" class="funnelImg" />
<div class="funnel">
<!-- <div class="funnel-item plan-count">
<p class="item-label">营销人数</p>
......@@ -122,6 +122,7 @@ export default {
type: 'rate'
}
],
[
{
label: '活动费用',
......@@ -196,15 +197,21 @@ export default {
this.planId = this.$route.query.planId;
this.scene = this.$route.query.scene;
if (this.scene == 5) {
this.transeData[2].height = '56px';
let obj = {
prop: 'openCardNumber',
label: '开卡人数',
height: '69px',
rateLable: '开卡转换率',
rateProp: 'openCardConversionRate'
};
this.transeData.splice(2, 0, obj);
let arr = [
{
label: '开卡人数',
value: '',
key: 'openCardNumber',
type: 'number'
},
{
label: '开卡转化率',
value: '',
key: 'openCardConversionRate',
type: 'rate'
}
];
this.targetList.splice(1, 0, arr);
}
this.getPlanStatistics();
this.getMemberCrowd();
......@@ -248,11 +255,11 @@ export default {
// 转化人数
conversionNumber: targetData.conversionNumber,
// 转化率
conversionRate: targetData.conversionRate,
// 开卡人数
openCardNumber: targetData.openCardNumber,
// 开卡转化率
openCardConversionRate: targetData.openCardConversionRate
conversionRate: targetData.conversionRate
// // 开卡人数
// openCardNumber: targetData.openCardNumber,
// // 开卡转化率
// openCardConversionRate: targetData.openCardConversionRate
};
});
},
......
......@@ -66,7 +66,7 @@
</div>
</el-form-item>
<el-form-item label="号码导入" prop="phoneList" v-else>
<dm-import-file ref="importFile" :againUploadDisabled="disabled" :options="importFileOption" @change="handleFileChange" :echo="fileEcho"></dm-import-file>
<dm-import-file ref="importFile" style="width:680px" :againUploadDisabled="disabled" :options="importFileOption" @change="handleFileChange" :echo="fileEcho"></dm-import-file>
</el-form-item>
<el-form-item label="预计覆盖人数">
<span class="bold">{{ planMemberCountShow }}</span>
......
......@@ -242,16 +242,16 @@ export default {
content: '针对消费过的客户进行营销,提升核心客户数量'
},
{
title: '其它场景',
scene: '0',
iconName: 'icon-qitachangjing',
content: '自定义营销场景'
},
{
title: '开卡场景',
scene: '5',
iconName: 'icon-kaika',
content: '针对非会员营销,提升开卡率'
},
{
title: '其它场景',
scene: '0',
iconName: 'icon-qitachangjing',
content: '自定义营销场景'
}
],
optionScenes: [
......@@ -613,6 +613,7 @@ export default {
gap: 12px;
.card {
min-width: 224px;
width: 16%;
height: 140px;
background: #f0f3fd;
border-radius: 4px;
......@@ -637,7 +638,7 @@ export default {
font-size: 14px;
line-height: 20px;
height: 40px;
width: 192px;
color: #606266;
}
}
......
......@@ -139,18 +139,17 @@ export default {
break;
case 'GAME_LINK_KLFL':
this.axios.post(`/api-marketing/page-klfl-game`, qs.stringify({ ...this.query })).then(res => {
setResponse(res, 2);
setResponse(res, 1);
});
break;
case 'GAME_LINK_XYMH':
const para = {
gameName: this.query.searchParam,
pageNum: this.query.currentPage,
pageSize: 6,
pageSize: this.query.pageSize,
status: 1
};
this.axios.post(`/api-marketing/game-pro/page?requestProject=marketing`, para).then(res => {
console.log(res);
setResponse(res, 2);
});
break;
......
......@@ -18,8 +18,8 @@
<el-button class="check-detail" @click="toDetailPage(1)" v-if="$getButtonLimit($buttonCode.marketingCmhActivityDetail)" :limit-code="$buttonCode.marketingCmhActivityDetail">查看详情</el-button>
</div>
</dm-sub-title>
<el-row :gutter="20">
<el-col :span="6" v-for="(el, index) in activityData" :key="index">
<el-row :gutter="24">
<el-col :span="8" v-for="(el, index) in activityData" :key="index">
<target-group :data-list="el"></target-group>
</el-col>
</el-row>
......
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