Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
marketing
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
marketing-web
marketing
Commits
763ce6bd
Commit
763ce6bd
authored
May 31, 2022
by
crushh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: dist
parent
1f40cd3a
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
70 additions
and
48 deletions
+70
-48
index.html
index.html
+2
-2
main.js
src/main.js
+1
-1
base-config.vue
src/views/game/cmh/base-config.vue
+1
-1
form.vue
src/views/game/cmh/form.vue
+3
-1
prize-config.vue
src/views/game/cmh/prize-config.vue
+2
-2
rule-config.vue
src/views/game/cmh/rule-config.vue
+4
-5
board.vue
src/views/recharge/board.vue
+5
-5
set-rule-dialog.vue
src/views/recharge/components/set-rule-dialog.vue
+5
-4
consume.vue
src/views/recharge/consume.vue
+47
-27
No files found.
index.html
View file @
763ce6bd
...
...
@@ -11,8 +11,8 @@
<!-- <link rel="stylesheet" href="//at.alicdn.com/t/font_2996579_93aeeozj35q.css"> -->
<link
rel=
"stylesheet"
href=
"//at.alicdn.com/t/font_3229694_f4zx0uhc8y.css"
>
<!--GIC3.0营销-->
<script
src=
"//at.alicdn.com/t/font_3229694_f4zx0uhc8y.js"
></script>
<!--GIC3.0营销-->
<link
rel=
"stylesheet"
href=
"//at.alicdn.com/t/font_2996579_
1d7th3zc6i
t.css"
>
<!-- 3.0企业 -->
<script
src=
"//at.alicdn.com/t/font_2996579_
1d7th3zc6i
t.js"
></script>
<!-- 3.0企业 -->
<link
rel=
"stylesheet"
href=
"//at.alicdn.com/t/font_2996579_
dv9vctk5vd
t.css"
>
<!-- 3.0企业 -->
<script
src=
"//at.alicdn.com/t/font_2996579_
dv9vctk5vd
t.js"
></script>
<!-- 3.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="//web-1251519181.file.myqcloud.com/components/element.2.12.0.css"> -->
...
...
src/main.js
View file @
763ce6bd
...
...
@@ -18,7 +18,7 @@ Vue.prototype.scrollToError = scrollToError;
Vue
.
prototype
.
axios
=
axios
;
Vue
.
prototype
.
axios
.
withCredentials
=
true
;
Vue
.
prototype
.
axios
.
defaults
.
timeout
=
50000
;
window
.
ELEMENT
.
Dialog
.
props
.
closeOnClickModal
.
default
=
false
;
Object
.
keys
(
directives
).
map
(
item
=>
Vue
.
directive
(
item
,
directives
[
item
]));
window
.
$bus
=
new
Vue
();
let
flag
=
false
;
...
...
src/views/game/cmh/base-config.vue
View file @
763ce6bd
...
...
@@ -4,7 +4,7 @@
<div
class=
"mt20"
>
<el-form-item
label=
"游戏名称"
prop=
"gameName"
>
<el-input
maxlength=
"10"
class=
"w382"
@
change=
"handleNameChange"
v-model
.
trim=
"baseForm.gameName"
show-word-limit
:disabled=
"isDisabled"
placeholder=
"请输入游戏名称"
/>
</el-form-item>
<el-form-item
label=
"游戏时间"
prop=
"gameTime"
><el-date-picker
class=
"w382"
v-model=
"baseForm.gameTime"
:disabled=
"isDisabled"
:picker-options=
"pickerOptions"
value-format=
"timestamp"
@
change=
"handleDateChange"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker></el-form-item>
<el-form-item
label=
"游戏说明"
prop=
"gameRule"
>
<el-input
maxlength=
"500"
class=
"w382"
v-model
.
trim
=
"baseForm.gameRule"
show-word-limit
:autosize=
"
{ minRows: 4 }" type="textarea" />
</el-form-item>
<el-form-item
label=
"游戏说明"
prop=
"gameRule"
>
<el-input
maxlength=
"500"
class=
"w382"
v-model=
"baseForm.gameRule"
show-word-limit
:autosize=
"
{ minRows: 4 }" type="textarea" />
</el-form-item>
</div>
<dm-sub-title
type=
"line"
>
展示信息配置
</dm-sub-title>
<div
class=
"mt20"
>
...
...
src/views/game/cmh/form.vue
View file @
763ce6bd
...
...
@@ -482,7 +482,9 @@ export default {
font-weight
:
600
;
z-index
:
100
;
top
:
56px
;
left
:
154px
;
width
:
100%
;
display
:
flex
;
justify-content
:
center
;
}
.rightForm
{
padding
:
30px
20px
0
30px
;
...
...
src/views/game/cmh/prize-config.vue
View file @
763ce6bd
...
...
@@ -60,7 +60,7 @@
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
min-width=
"1
0
5px"
prop=
"prizeImageUrl"
>
<el-table-column
min-width=
"1
1
5px"
prop=
"prizeImageUrl"
>
<
template
slot=
"header"
>
<span
class=
"needCell"
>
奖品图片
...
...
@@ -103,7 +103,7 @@
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"中奖率"
min-width=
"
7
4px"
prop=
"prizeRate"
>
<el-table-column
label=
"中奖率"
min-width=
"
8
4px"
prop=
"prizeRate"
>
<
template
slot=
"header"
>
中奖率
<el-tooltip
placement=
"top"
>
...
...
src/views/game/cmh/rule-config.vue
View file @
763ce6bd
...
...
@@ -23,7 +23,7 @@
</el-form-item>
<el-form-item
label=
"适用人群说明"
prop=
"memberDesc"
>
<el-input
maxlength=
"100"
class=
"w382"
placeholder=
"请输入适用人群说明"
v-model
.
trim=
"ruleForm.memberDesc"
show-word-limit
:autosize=
"
{ minRows: 4 }" type="textarea
" />
<el-input
maxlength=
"100"
type=
"textarea"
class=
"w382"
placeholder=
"请输入适用人群说明"
v-model=
"ruleForm.memberDesc"
show-word-limit
:autosize=
"
{ minRows: 4 }
" />
</el-form-item>
<el-form-item
label=
"参与门槛"
prop=
"playConditionFlag"
>
<el-radio-group
v-model=
"ruleForm.playConditionFlag"
:disabled=
"isDisabled"
>
...
...
@@ -41,7 +41,7 @@
<el-option
:value=
"21"
label=
"总赠送"
></el-option>
<el-option
:value=
"22"
label=
"每日赠送"
></el-option>
</el-select>
<el-input-number
class=
"w140"
:disabled=
"isDisabled"
placeholder=
"请输入次数"
v-model=
"item.conditionJson.value"
:min=
"1"
controls-position=
"right"
/>
<el-input-number
class=
"w140"
:disabled=
"isDisabled"
placeholder=
"请输入次数"
v-model=
"item.conditionJson.value"
:min=
"1"
:max=
"1000000"
controls-position=
"right"
/>
<span
class=
"ml10"
>
次游戏次数
</span>
</el-form-item>
</div>
...
...
@@ -49,11 +49,10 @@
<div
class=
"flex mb10"
><el-checkbox
v-model=
"item.conditionType"
:true-label=
"0"
:false-label=
"-1"
:disabled=
"isDisabled"
@
change=
"$emit('change',
{ val: item.conditionJson.value, type: item.conditionType })" />
<span
class=
"ml10"
>
消耗积分获得游戏次数
</span></div>
<div
v-show=
"item.conditionType == 0"
>
<el-form-item
label=
"参与游戏每次消耗积分"
:prop=
"'gameRuleConditionList.' + index + '.conditionJson.' + 'value'"
>
<el-input
placeholder=
"请输入积分"
:disabled=
"isDisabled"
v-model=
"item.conditionJson.value"
@
change=
"$emit('change',
{ val: item.conditionJson.value, type: item.conditionType })" class="w140
" />
<el-input
-number
class=
"w140"
:disabled=
"isDisabled"
placeholder=
"请输入积分"
v-model=
"item.conditionJson.value"
:min=
"1"
:max=
"1000000"
controls-position=
"right"
@
change=
"$emit('change',
{ val: item.conditionJson.value, type: item.conditionType })
" />
<span
class=
"ml10"
>
积分
</span>
</el-form-item>
<el-form-item
label=
"提示客户积分获取路径"
:prop=
"'gameRuleConditionList.' + index + '.conditionJson.' + 'mpUrlView'"
:rules=
"rules.mpUrlView"
>
<div></div>
<div
class=
"wxapp mr16"
v-if=
"item.conditionJson.mpUrlView && item.conditionJson.mpUrlView.name"
>
{{
item
.
conditionJson
.
mpUrlView
.
name
}}
</div>
...
...
@@ -64,7 +63,7 @@
<div
v-if=
"index == 2"
>
<div
class=
"flex mb10"
><el-checkbox
v-model=
"item.conditionType"
:true-label=
"1"
:false-label=
"-1"
:disabled=
"isDisabled"
/><span
class=
"ml10"
>
邀请好友助力获得游戏次数
</span></div>
<div
v-show=
"item.conditionType == 1"
>
<el-form-item
label=
"邀请机制"
label-width=
"80px"
>
每成功邀请
<el-input-number
v-model=
"item.conditionJson.inviteNum"
:min=
"1"
class=
"w110 ml10 mr10"
controls-position=
"right"
:disabled=
"isDisabled"
/>
人可获得
<el-input-number
v-model=
"item.conditionJson.value"
:min=
"1
"
class=
"w110 ml10 mr10"
controls-position=
"right"
:disabled=
"isDisabled"
/>
次游戏
</el-form-item>
<el-form-item
label=
"邀请机制"
label-width=
"80px"
>
每成功邀请
<el-input-number
v-model=
"item.conditionJson.inviteNum"
:min=
"1"
:max=
"1000000"
class=
"w110 ml10 mr10"
controls-position=
"right"
:disabled=
"isDisabled"
/>
人可获得
<el-input-number
v-model=
"item.conditionJson.value"
:min=
"1"
:max=
"1000000
"
class=
"w110 ml10 mr10"
controls-position=
"right"
:disabled=
"isDisabled"
/>
次游戏
</el-form-item>
<el-form-item
label=
"成功邀请条件"
label-width=
"108px"
>
<el-radio-group
v-model=
"item.conditionJson.type"
:disabled=
"isDisabled"
>
<el-radio
:label=
"11"
>
注册新会员
</el-radio>
...
...
src/views/recharge/board.vue
View file @
763ce6bd
...
...
@@ -137,21 +137,21 @@
<el-col
:span=
"6"
style=
"padding: 0 2px"
>
<div
class=
"recharge-today-item border2"
>
<div
class=
"text-center"
>
<div
class=
"icon-box color
4
"
>
<i
class=
"iconfont icon-
AIdianhua
fz36"
></i>
<div
class=
"icon-box color
3
"
>
<i
class=
"iconfont icon-
xitongtongzhi
fz36"
></i>
</div>
</div>
<div
class=
"consume-info"
>
<div
class=
"consume-item"
>
<p
class=
"consume-item-label"
>
系统通知
</p>
<p
class=
"consume-item-value"
>
<span
class=
"value-content"
>
{{
recharge
.
ai
Count
||
0
}}
</span>
条
<span
class=
"value-content"
>
{{
recharge
.
sysSms
Count
||
0
}}
</span>
条
</p>
</div>
<div
class=
"consume-item"
>
<p
class=
"consume-item-label"
>
合计费用
</p>
<p
class=
"consume-item-value"
>
<span
class=
"value-content"
>
{{
(
recharge
.
ai
Fee
/
1000
)
|
amount
}}
</span>
元
<span
class=
"value-content"
>
{{
(
recharge
.
sysSms
Fee
/
1000
)
|
amount
}}
</span>
元
</p>
</div>
</div>
...
...
@@ -349,7 +349,7 @@ export default {
{
name
:
'短信验证码'
,
type
:
'sms'
,
fee
:
result
.
smsFee
,
count
:
result
.
smsCount
},
{
name
:
'双向呼叫'
,
type
:
'call'
,
fee
:
result
.
callFee
,
count
:
result
.
callTime
},
{
name
:
'AI电话'
,
type
:
'ai-call'
,
fee
:
result
.
aiFee
,
count
:
result
.
aiCount
},
{
name
:
'系统通知'
,
type
:
'
ai-voiceFee'
,
fee
:
result
.
aiFee
,
count
:
result
.
ai
Count
}
{
name
:
'系统通知'
,
type
:
'
sys-sms'
,
fee
:
result
.
smsFee
,
count
:
result
.
sysSms
Count
}
];
}
else
{
this
.
recharge
=
res
.
result
;
...
...
src/views/recharge/components/set-rule-dialog.vue
View file @
763ce6bd
...
...
@@ -87,15 +87,15 @@
<el-radio
:label=
"3"
>
活动创建人
</el-radio>
</el-radio-group>
</el-form-item>
<
!-- <
h2 class="icon-type-title mb20">
<h2
class=
"icon-type-title mb20"
>
<div
class=
"mark"
/>
系统通知
</h2>
<el-form-item label="系统通知
" prop="aiRule
" class="mb20">
<el-radio-group v-model="
form.jifei
">
<el-form-item
label=
"系统通知
:
"
class=
"mb20"
>
<el-radio-group
v-model=
"
num
"
>
<el-radio
:label=
"1"
>
活动创建人
</el-radio>
</el-radio-group>
</el-form-item>
-->
</el-form-item>
</template>
</el-form>
<div
class=
"footer"
>
...
...
@@ -132,6 +132,7 @@ export default {
aiRule
:
3
// AI营销
},
isMoreAccount
:
false
,
num
:
1
,
rules
:
{
smsPlanRule
:
[{
required
:
true
,
validator
:
(
rule
,
val
,
cb
)
=>
validate
(
val
,
cb
,
[
2
,
3
])
}],
smsEcmRule
:
[{
required
:
true
,
validator
:
(
rule
,
val
,
cb
)
=>
validate
(
val
,
cb
,
[
2
,
3
])
}],
...
...
src/views/recharge/consume.vue
View file @
763ce6bd
...
...
@@ -118,29 +118,6 @@
</
template
>
</el-table-column>
</el-table>
<!-- 语音验证码 -->
<!-- <el-table tooltipEffect="light" :data="tableList" style="width:100%" v-if="$route.params.type === 'voice'">
<el-table-column align="left" prop="createTime" label="发送时间" width="170px">
<template slot-scope="scope">
<p class="cell-time">
{{ formatDateTimeByType(scope.row.createTime, 'yyyy-MM-dd-HH-mm-ss', true).y }}<br />
<span>{{ formatDateTimeByType(scope.row.createTime, 'yyyy-MM-dd-HH-mm-ss', true).h }}</span>
</p>
</template>
</el-table-column>
<el-table-column align="left" prop="receivePhone" label="接收号码"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" width="320" prop="storeName" label="门店">
<template slot-scope="scope">
<p>{{ scope.row.storeName }}</p>
<p class="fz13 gray">{{ scope.row.storeGroupName }}</p>
</template>
</el-table-column>
<el-table-column label="状态" align="left" prop="status">
<template slot-scope="scope">
{{ scope.row.status === 1 ? '成功' : '失败' }}
</template>
</el-table-column>
</el-table> -->
<!-- 双向呼叫 -->
<el-table
tooltipEffect=
"light"
:data=
"tableList"
style=
"width:100%"
v-if=
"$route.params.type === 'call'"
>
<el-table-column
align=
"left"
min-width=
"110"
prop=
"createTime"
label=
"呼叫时间"
>
...
...
@@ -286,6 +263,34 @@
<el-table-column
label=
"时间(秒)"
prop=
"aiDurationSec"
min-width=
"90"
:formatter=
"(row, col, val) => val || '--'"
></el-table-column>
<el-table-column
label=
"消费金额(元)"
prop=
"aiFeeYuan"
min-width=
"90"
:formatter=
"(row, col, val) => val || '--'"
></el-table-column>
</el-table>
<!-- 系统通知 -->
<el-table
tooltipEffect=
"light"
:data=
"tableList"
style=
"width:100%"
v-if=
"$route.params.type === 'sys-sms'"
>
<el-table-column
align=
"left"
min-width=
"90"
prop=
"sendTime"
label=
"发送时间"
>
<
template
slot-scope=
"scope"
>
<p
class=
"cell-time"
>
{{
formatDateTimeByType
(
scope
.
row
.
sendTime
,
'yyyy-MM-dd-HH-mm-ss'
,
true
).
y
}}
<br
/>
<span>
{{
formatDateTimeByType
(
scope
.
row
.
sendTime
,
'yyyy-MM-dd-HH-mm-ss'
,
true
).
h
}}
</span>
</p>
</
template
>
</el-table-column>
<el-table-column
align=
"left"
min-width=
"100"
prop=
"telephone"
label=
"接收号码"
></el-table-column>
<el-table-column
align=
"left"
min-width=
"100"
label=
"通知方式"
>
<
template
>
短信
</
template
>
</el-table-column>
<el-table-column
align=
"left"
min-width=
"100"
prop=
"telephone"
label=
"通知类型"
>
<
template
>
游戏
</
template
>
</el-table-column>
<el-table-column
align=
"left"
min-width=
"100"
prop=
"sourceName"
label=
"活动名称"
></el-table-column>
<el-table-column
align=
"left"
min-width=
"100"
prop=
"sourceCreatorName"
label=
"活动创建人"
></el-table-column>
<el-table-column
align=
"left"
min-width=
"100"
prop=
"countNum"
label=
"计费条数"
></el-table-column>
<el-table-column
align=
"left"
min-width=
"100"
prop=
"fee"
label=
"消费金额(元)"
>
<
template
slot-scope=
"scope"
>
{{
Number
(
scope
.
row
.
fee
/
1000
).
toFixed
(
2
)
}}
元
</
template
>
</el-table-column>
</el-table>
<!-- 视频资费 -->
<!-- <el-table tooltipEffect="light" :data="tableList" style="width:100%" v-if="$route.params.type === 'video'">
<el-table-column align="left" prop="createTime" label="时间">
...
...
@@ -524,27 +529,38 @@ export default {
this
.
placeholder
=
'请输入手机号/活动名称/活动创建人'
;
this
.
aiCallData
();
}
if
(
this
.
$route
.
params
.
type
==
'sys-sms'
)
{
this
.
placeholder
=
'请输入手机号/活动名称/活动创建人'
;
if
(
!
onlyList
)
{
this
.
marketingCharts
(
102
);
}
this
.
marketingList
(
102
);
}
},
onSearch
()
{
this
.
listParams
.
currentPage
=
1
;
this
.
loadAll
();
},
async
marketingList
()
{
async
marketingList
(
source
)
{
this
.
loading
=
true
;
try
{
let
resList
=
await
messageMarketingPage
(
this
.
listParams
);
const
data
=
source
?
Object
.
assign
(
this
.
listParams
,
{
source
})
:
this
.
listParams
;
let
resList
=
await
messageMarketingPage
(
data
);
if
(
resList
.
errorCode
===
0
&&
resList
.
result
.
result
)
{
this
.
tableList
=
resList
.
result
.
result
||
[];
this
.
total
=
resList
.
result
.
totalCount
;
}
else
{
this
.
tableList
=
[];
}
console
.
log
(
this
.
tableList
);
}
catch
(
err
)
{}
this
.
loading
=
false
;
},
async
marketingCharts
()
{
async
marketingCharts
(
source
)
{
try
{
let
res
=
await
messageMarketingChart
(
this
.
listParams
);
console
.
log
(
source
);
const
data
=
source
?
Object
.
assign
(
this
.
listParams
,
{
source
})
:
this
.
listParams
;
let
res
=
await
messageMarketingChart
(
data
);
this
.
sumCount
=
res
.
result
.
sumCount
;
this
.
sumFee
=
res
.
result
.
sumFee
;
this
.
sumInternational
=
res
.
result
.
sumInternational
;
...
...
@@ -764,6 +780,9 @@ export default {
case
'ai-call'
:
meth
=
'/api-marketing/excel/recharge-ai-excel'
;
break
;
case
'sys-sms'
:
meth
=
'/api-marketing/excel/recharge-sms-marketing-excel'
;
break
;
}
const
params
=
{
requestProject
:
'marketing'
,
...
...
@@ -774,6 +793,7 @@ export default {
accountDepartId
:
this
.
deparment
.
departId
};
if
(
type
==
'sms'
)
params
.
channelType
=
this
.
listParams
.
channelType
;
if
(
type
==
'sys-sms'
)
params
.
source
=
102
;
exportData
.
excelUrl
=
meth
;
exportData
.
params
=
params
;
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment