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
9b390549
Commit
9b390549
authored
Oct 28, 2021
by
黑潮
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/10月迭代'
parents
18690f7d
359a7907
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
682 additions
and
26 deletions
+682
-26
game-list.vue
src/components/game-list.vue
+156
-0
linktoolspage.vue
src/components/linktools/linktoolspage.vue
+165
-12
recharge.js
src/router/modules/recharge.js
+1
-1
card-item.vue
src/views/card/partials/card-item.vue
+1
-1
record-get.vue
src/views/card/record-get.vue
+1
-1
list.vue
src/views/ecm/list.vue
+1
-1
game-list.vue
src/views/ecm/marketing-event/components/game-list.vue
+156
-0
lib-wxa.vue
src/views/ecm/marketing-event/components/lib-wxa.vue
+82
-3
form.vue
src/views/game/dzp/form.vue
+100
-0
consume.vue
src/views/recharge/consume.vue
+6
-0
record.vue
src/views/recharge/record.vue
+13
-7
No files found.
src/components/game-list.vue
0 → 100644
View file @
9b390549
<
template
>
<div>
<el-input
style=
"width:180px;"
v-model=
"query.searchParam"
prefix-icon=
"el-icon-search"
placeholder=
"请输入游戏名称"
@
change=
"onSearch"
clearable
></el-input>
<el-table
style=
"margin-top:20px"
:data=
"list"
@
row-click=
"onRowClick"
>
<el-table-column
width=
"50px"
>
<template
slot-scope=
"scope"
>
<el-radio
:value=
"seletedId"
:label=
"scope.row.gameId"
>
</el-radio>
</
template
>
</el-table-column>
<el-table-column
show-overflow-tooltip
label=
"游戏名称"
prop=
"gameName"
></el-table-column>
<el-table-column
show-overflow-tooltip
label=
"游戏ID"
prop=
"gameId"
></el-table-column>
<el-table-column
label=
"游戏状态"
>
<
template
slot-scope=
"scope"
>
<template
v-if=
"'gameStatusName' in scope.row"
>
<div
v-if=
"scope.row.gameStatusName === '进行中'"
><span
class=
"dm-status--primary--flash"
></span>
{{
scope
.
row
.
gameStatusName
}}
</div>
<div
v-else
:class=
"scope.row.gameStatusName === '未开始' ? 'dm-status--warning' : 'dm-status--info'"
>
{{
scope
.
row
.
gameStatusName
}}
</div>
</
template
>
<
template
v-else-if=
"'activityStatus' in scope.row"
>
<div
v-if=
"scope.row.activityStatus === 1"
><span
class=
"dm-status--primary--flash"
></span>
进行中
</div>
<div
v-else
:class=
"scope.row.activityStatus === 0 ? 'dm-status--warning' : 'dm-status--info'"
>
{{
scope
.
row
.
activityStatus
===
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
>
</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
>
</el-table-column>
</el-table>
<el-pagination
style=
"margin-top:10px;text-align:right"
small
layout=
"prev, pager, next"
:current-page=
"query.currentPage"
:page-size=
"query.pageSize"
:total=
"total"
@
current-change=
"onPageChange"
>
</el-pagination>
</div>
</template>
<
script
>
import
qs
from
'qs'
;
import
{
formatDateTimeByType
}
from
'@/utils/index.js'
;
export
default
{
name
:
'GamelinkList'
,
props
:
{
gameType
:
{
required
:
true
,
type
:
String
},
gameId
:
{
type
:
String
}
},
data
()
{
return
{
formatDateTimeByType
,
list
:
[],
query
:
{
requestProject
:
'gic-web'
,
searchParam
:
''
,
currentPage
:
1
,
pageSize
:
8
,
gameStatus
:
4
},
seletedItem
:
null
,
seletedId
:
''
,
total
:
0
};
},
created
()
{
this
.
seletedId
=
this
.
gameId
||
''
;
},
methods
:
{
onPageChange
(
val
)
{
this
.
query
.
currentPage
=
val
;
this
.
getList
(
this
.
gameType
);
this
.
seletedItem
=
null
;
this
.
seletedId
=
''
;
},
onRowClick
(
row
)
{
this
.
seletedItem
=
row
;
this
.
seletedId
=
row
.
gameId
;
},
onSearch
()
{
this
.
query
.
currentPage
=
1
;
this
.
seletedItem
=
null
;
this
.
seletedId
=
''
;
this
.
getList
(
this
.
gameType
);
},
getList
(
gameType
)
{
const
setResponse
=
(
res
,
type
)
=>
{
//type 0 大转盘/刮刮卡 ----- 1 其他游戏
const
{
errorCode
,
message
,
result
}
=
res
.
data
||
{};
if
(
errorCode
!=
0
)
{
return
this
.
$message
.
error
(
message
);
}
else
{
if
(
type
===
0
)
{
this
.
list
=
result
.
page
.
result
||
[];
this
.
total
=
result
.
page
.
totalCount
||
0
;
}
else
{
this
.
list
=
(
result
.
result
||
[]).
map
(
item
=>
({
...
item
,
gameId
:
item
.
gameActivityId
}));
this
.
total
=
result
.
totalCount
||
0
;
}
}
};
switch
(
gameType
)
{
case
'GAME_LINK_DZP'
:
this
.
axios
.
post
(
`/api-marketing/page-lottery-game`
,
qs
.
stringify
({
...
this
.
query
,
gameType
:
1
})).
then
(
res
=>
{
setResponse
(
res
,
0
);
});
break
;
case
'GAME_LINK_GGK'
:
this
.
axios
.
post
(
`/api-marketing/page-lottery-game`
,
qs
.
stringify
({
...
this
.
query
,
gameType
:
2
})).
then
(
res
=>
{
setResponse
(
res
,
0
);
});
break
;
case
'GAME_LINK_PTYX'
:
this
.
axios
.
post
(
`/api-marketing/page-puzzle-game`
,
qs
.
stringify
({
...
this
.
query
})).
then
(
res
=>
{
setResponse
(
res
,
1
);
});
break
;
case
'GAME_LINK_ZNM'
:
this
.
axios
.
post
(
`/api-marketing/page-znm-game`
,
qs
.
stringify
({
...
this
.
query
})).
then
(
res
=>
{
setResponse
(
res
,
1
);
});
break
;
case
'GAME_LINK_KLFL'
:
this
.
axios
.
post
(
`/api-marketing/page-klfl-game`
,
qs
.
stringify
({
...
this
.
query
})).
then
(
res
=>
{
setResponse
(
res
,
1
);
});
break
;
}
}
},
watch
:
{
gameType
:
{
handler
()
{
this
.
query
.
currentPage
=
1
;
this
.
query
.
searchParam
=
''
;
this
.
getList
(
this
.
gameType
);
},
immediate
:
true
},
gameId
()
{
this
.
seletedId
=
this
.
gameId
||
''
;
},
seletedItem
(
val
)
{
this
.
$emit
(
'select'
,
val
);
}
}
};
</
script
>
src/components/linktools/linktoolspage.vue
View file @
9b390549
...
...
@@ -2,8 +2,8 @@
<!-- 链接小工具 -->
<div
class=
"link-tools-contain"
>
<div
:class=
"activeName ? 'min-780' : 'min-1028'"
>
<div
class=
"
el
-dialog"
>
<div
class=
"
el
-dialog__body"
>
<div
class=
"
dm
-dialog"
>
<div
class=
"
dm
-dialog__body"
>
<!-- 链接类型 -->
<div
class=
"links-types"
>
<label
class=
"types-title"
>
链接类型
</label>
...
...
@@ -28,6 +28,31 @@
</el-select>
</div>
</div>
<div
style=
"margin: 20px 0 0 10px;"
v-if=
"twoLevelValue == 'GAME_LINK' && threeLevelValue"
>
<div
class=
"game-wrapper"
>
<div
v-if=
"gameProps.showGameInfo"
class=
"game-info"
>
<div
class=
"game-info__title"
>
{{
gameInfo
.
title
}}
<div
style=
"float:right;color:#2B2B2B;font-size:14px"
>
<div
v-if=
"gameInfo.gameStatus === '进行中'"
><span
class=
"dm-status--primary--flash"
></span>
{{
gameInfo
.
gameStatus
}}
</div>
<div
v-else-if=
"gameInfo.gameStatus === '已删除'"
><span
class=
"dm-status--error"
></span>
{{
gameInfo
.
gameStatus
}}
</div>
<div
v-else
:class=
"gameInfo.gameStatus === '未开始' ? 'dm-status--warning' : 'dm-status--info'"
>
{{
gameInfo
.
gameStatus
}}
</div>
</div>
</div>
<div
class=
"game-info__other"
>
{{
gameInfo
.
id
}}
</div>
<div
v-if=
"gameInfo.gameStartTime || gameInfo.gameEndTime"
class=
"game-info__other"
>
{{
formatDateTimeByType
(
gameInfo
.
gameStartTime
,
'yyyy-MM-dd HH:mm:ss'
)
}}
至
{{
formatDateTimeByType
(
gameInfo
.
gameEndTime
,
'yyyy-MM-dd HH:mm:ss'
)
}}
</div>
</div>
<div
v-else
class=
"button-add-game"
@
click=
"gameProps.gameListVisible = true"
>
<i
class=
"el-icon-plus"
></i>
选择游戏-
{{
threeLevelOptions
.
find
(
el
=>
el
.
id
==
threeLevelValue
).
label
}}
</div>
</div>
<el-tooltip
v-if=
"gameProps.showGameInfo"
effect=
"dark"
content=
"删除"
placement=
"top-start"
>
<i
class=
"iconfont icon-shanchu"
style=
"vertical-align:middle;font-size:24px;color:#909399;cursor:pointer"
@
click=
"(gameInfo = null), (gameProps.showGameInfo = false)"
></i>
</el-tooltip>
</div>
<!-- h5 -->
<div
class=
"h5link-contain"
v-if=
"h5linkVisible"
>
...
...
@@ -101,6 +126,12 @@
</div>
</div>
</div>
<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>
</span>
</el-dialog>
</div>
</
template
>
...
...
@@ -112,6 +143,29 @@ import Treeselect from '@riophae/vue-treeselect';
// import axios from 'axios'
import
qs
from
'qs'
;
import
{
formatDateTimeByType
}
from
'@/utils/index.js'
;
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'
],
...
...
@@ -317,7 +371,14 @@ export default {
timeSwitch
:
0
},
// 获取 location origin
baseUrl
:
''
baseUrl
:
''
,
gameProps
:
{
gameListVisible
:
false
,
gameType
:
''
,
showGameInfo
:
false
},
gameInfo
:
null
,
formatDateTimeByType
};
},
beforeMount
()
{
...
...
@@ -331,6 +392,37 @@ export default {
}
},
methods
:
{
changeGame
(
val
)
{
this
.
gameInfo
=
null
;
this
.
gameProps
.
showGameInfo
=
false
;
this
.
gameProps
.
gameType
=
val
;
},
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
);
});
}
else
{
this
.
$message
.
warning
(
'请添加游戏'
);
}
},
// --------------------------------------------------
// 选择类型改变 (一级选择,保存选择类型)
linksTypeChange
:
function
(
e
)
{
...
...
@@ -426,6 +518,7 @@ export default {
return
;
}
let
selectTwoItem
=
''
;
console
.
log
(
this
.
twoLevelOptions
);
that
.
twoLevelOptions
.
forEach
(
function
(
ele
,
index
)
{
if
(
e
==
ele
.
linkId
)
{
selectTwoItem
=
ele
;
...
...
@@ -439,6 +532,7 @@ export default {
console
.
log
(
'二级选择的 obj: '
,
that
.
selectLinkObj
.
id
);
// 判断是否结束, 1:结束;
console
.
log
(
selectTwoItem
);
if
(
selectTwoItem
.
type
==
1
||
selectTwoItem
.
type
==
4
||
selectTwoItem
.
type
==
6
)
{
that
.
threeLevelVisible
=
false
;
// 三级部分隐藏
that
.
threeLevelValue
=
''
;
// 清空三级数据
...
...
@@ -490,7 +584,7 @@ export default {
return
false
;
}
// 获取三级列表数据
that
.
getLinksList
(
selectTwoItem
.
linkId
,
3
,
twoType
);
that
.
getLinksList
(
selectTwoItem
.
linkId
,
3
,
twoType
,
selectTwoItem
.
childList
);
}
},
...
...
@@ -504,6 +598,11 @@ export default {
that
.
threeLevelTreeVisible
=
false
;
// 三级中第二个下拉树形结构
that
.
threeLevelSearchVisible
=
false
;
// 三级中第三个搜索下拉
break
;
case
5
:
// 单选
that
.
threeLeveloneVisible
=
true
;
// 三级中第一个下拉单选
that
.
threeLevelTreeVisible
=
false
;
// 三级中第二个下拉树形结构
that
.
threeLevelSearchVisible
=
false
;
// 三级中第三个搜索下拉
break
;
case
2
:
// 搜索下拉
that
.
threeLeveloneVisible
=
false
;
// 三级中第一个下拉单选
that
.
threeLevelTreeVisible
=
false
;
// 三级中第二个下拉树形结构
...
...
@@ -658,6 +757,12 @@ export default {
// threeSingleValueChange
threeSingleValueChange
(
e
)
{
if
(
this
.
twoLevelValue
==
'GAME_LINK'
)
{
this
.
gameInfo
=
null
;
this
.
gameProps
.
gameType
=
e
;
this
.
gameProps
.
showGameInfo
=
false
;
return
;
}
let
that
=
this
;
console
.
log
(
e
,
that
.
threeLevelValue
);
let
selThreeItem
=
''
;
...
...
@@ -1120,7 +1225,16 @@ export default {
},
// 获取一级列表/二级列表
getLinksList
(
parentId
,
num
,
twoType
)
{
getLinksList
(
parentId
,
num
,
twoType
,
childList
)
{
if
(
childList
&&
childList
.
length
>
0
)
{
childList
.
forEach
(
function
(
ele
,
index
)
{
ele
.
id
=
ele
.
tagid
;
ele
.
label
=
ele
.
tagname
;
ele
.
value
=
ele
.
tagid
;
});
this
.
threeLevelOptions
=
childList
;
return
;
}
let
that
=
this
;
// 如果不传传的显示类型,设置
twoType
=
twoType
?
twoType
:
''
;
...
...
@@ -1297,7 +1411,8 @@ export default {
},
components
:
{
Treeselect
Treeselect
,
GameList
}
};
</
script
>
...
...
@@ -2218,7 +2333,7 @@ export default {
overflow
:
auto
;
}
.
el
-dialog__body
{
.
dm
-dialog__body
{
/*border-bottom: 1px solid #e7e7eb;*/
padding
:
0px
20px
0
20px
;
-webkit-box-sizing
:
border-box
;
...
...
@@ -2226,7 +2341,7 @@ export default {
box-sizing
:
border-box
;
}
.
el
-dialog__footer
{
.
dm
-dialog__footer
{
padding
:
10px
20px
;
}
...
...
@@ -2246,7 +2361,7 @@ export default {
}
}
.
el
-dialog
{
.
dm
-dialog
{
/*min-width: 1051px;*/
margin
:
0
;
//
border
:
1px
solid
#e8e8e8
;
...
...
@@ -2255,19 +2370,19 @@ export default {
-moz-box-sizing
:
border-box
;
box-sizing
:
border-box
;
.
el
-dialog__header
{
.
dm
-dialog__header
{
border-bottom
:
1px
solid
#e7e7eb
;
}
}
.min-780
{
.
el
-dialog
{
.
dm
-dialog
{
min-width
:
780px
;
}
}
.min-1028
{
.
el
-dialog
{
.
dm
-dialog
{
min-width
:
1028px
;
}
}
...
...
@@ -2397,4 +2512,42 @@ export default {
margin-bottom
:
0
;
}
}
.game-wrapper
{
display
:
inline-block
;
vertical-align
:
middle
;
background-color
:
#f7f9fb
;
overflow
:
hidden
;
width
:
680px
;
}
.button-add-game
{
cursor
:
pointer
;
height
:
32px
;
line-height
:
32px
;
text-align
:
center
;
margin
:
20px
50px
;
border
:
1px
dashed
#dcdfe6
;
border-radius
:
4px
;
font-size
:
14px
;
color
:
#606266
;
&:hover
{
border-color
:
#1890ff
;
color
:
#1890ff
;
}
}
.game-info
{
margin
:
14px
28px
16px
20px
;
line-height
:
1.4
;
&__title
{
color
:
#303133
;
font-size
:
16px
;
}
&
__other
{
margin-top
:
5px
;
color
:
#909399
;
font-size
:
12px
;
}
}
.icon-shanchu
:hover
{
color
:
#1890ff
!important
;
}
</
style
>
src/router/modules/recharge.js
View file @
9b390549
...
...
@@ -17,7 +17,7 @@ export default {
},
{
path
:
'record'
,
name
:
'
充值
记录'
,
name
:
'记录'
,
component
:
()
=>
import
(
/* webpackChunkName: "recharge" */
'../../views/recharge/record.vue'
)
},
{
...
...
src/views/card/partials/card-item.vue
View file @
9b390549
...
...
@@ -6,7 +6,7 @@
<div
style=
"max-width: 300px"
slot=
"content"
>
{{
item
.
gicCouponType
|
getTipText
}}
</div>
<span
class=
"card-item_head-tip"
>
外部券
<i
class=
"iconfont icon-xinxixianshi card-item_head-icon"
></i></span>
</el-tooltip>
<h4>
{{
item
.
cardName
}}
</h4>
<h4
style=
"text-overflow: ellipsis;white-space: nowrap;overflow: hidden;padding: 0 20px;"
>
{{
item
.
cardName
}}
</h4>
<p>
{{
item
.
subName
}}
</p>
</div>
<div
class=
"card-item_body"
>
...
...
src/views/card/record-get.vue
View file @
9b390549
...
...
@@ -79,7 +79,7 @@
<span
v-html=
"filterCardStatus(scope.row)"
></span>
</
template
>
</el-table-column>
<el-table-column
min-width=
"80"
align=
"left"
prop=
"receiveName"
label=
"投放
来源
"
></el-table-column>
<el-table-column
min-width=
"80"
align=
"left"
prop=
"receiveName"
label=
"投放
渠道
"
></el-table-column>
<el-table-column
width=
"100"
align=
"left"
prop=
"receiveName"
label=
"来源明细"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
receiveCode
==
'RECEIVE_003'
||
scope
.
row
.
receiveCode
==
'RECEIVE_005'
||
scope
.
row
.
receiveCode
==
'RECEIVE_007'
||
scope
.
row
.
receiveCode
==
'RECEIVE_004'
||
scope
.
row
.
receiveCode
==
'RECEIVE_010'
?
scope
.
row
.
receiveTypeExcel
:
'--'
}}
...
...
src/views/ecm/list.vue
View file @
9b390549
...
...
@@ -88,7 +88,7 @@
<el-table-column
label=
"操作"
align=
"left"
width=
"200"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<!--
<template
v-if=
"scope.row.canEdit !== false"
>
-->
<el-button
type=
"text"
v-if=
"scope.row.canEdit && scope.row.onlineStatus != 2"
@
click=
"editData(scope.row)"
>
编辑
</el-button>
<el-button
type=
"text"
v-if=
"scope.row.canEdit && scope.row.onlineStatus != 2
&& scope.row.effectType != 2
"
@
click=
"editData(scope.row)"
>
编辑
</el-button>
<el-button
type=
"text"
v-else
@
click=
"$router.push(`/ecm/info/$
{scope.row.ecmPlanId}`)">详情
</el-button>
<!--
</
template
>
-->
<!-- <dm-delete v-if="scope.row.effectType !== 2 && scope.row.onlineStatus === 1 && scope.row.canEdit !== false" @confirm="offlineEcmPlan(scope.row)" tips="是否下线该计划?">
...
...
src/views/ecm/marketing-event/components/game-list.vue
0 → 100644
View file @
9b390549
<
template
>
<div>
<el-input
style=
"width:180px;"
v-model=
"query.searchParam"
prefix-icon=
"el-icon-search"
placeholder=
"请输入游戏名称"
@
change=
"onSearch"
clearable
></el-input>
<el-table
style=
"margin-top:20px"
:data=
"list"
@
row-click=
"onRowClick"
>
<el-table-column
width=
"50px"
>
<template
slot-scope=
"scope"
>
<el-radio
:value=
"seletedId"
:label=
"scope.row.gameId"
>
</el-radio>
</
template
>
</el-table-column>
<el-table-column
show-overflow-tooltip
label=
"游戏名称"
prop=
"gameName"
></el-table-column>
<el-table-column
show-overflow-tooltip
label=
"游戏ID"
prop=
"gameId"
></el-table-column>
<el-table-column
label=
"游戏状态"
>
<
template
slot-scope=
"scope"
>
<template
v-if=
"'gameStatusName' in scope.row"
>
<div
v-if=
"scope.row.gameStatusName === '进行中'"
><span
class=
"dm-status--primary--flash"
></span>
{{
scope
.
row
.
gameStatusName
}}
</div>
<div
v-else
:class=
"scope.row.gameStatusName === '未开始' ? 'dm-status--warning' : 'dm-status--info'"
>
{{
scope
.
row
.
gameStatusName
}}
</div>
</
template
>
<
template
v-else-if=
"'activityStatus' in scope.row"
>
<div
v-if=
"scope.row.activityStatus === 1"
><span
class=
"dm-status--primary--flash"
></span>
进行中
</div>
<div
v-else
:class=
"scope.row.activityStatus === 0 ? 'dm-status--warning' : 'dm-status--info'"
>
{{
scope
.
row
.
activityStatus
===
0
?
'未开始'
:
'已结束'
}}
</div>
</
template
>
</template>
</el-table-column>
<el-table-column
label=
"开始时间"
>
<
template
slot-scope=
"scope"
>
<p>
{{
formatDateTimeByType
(
scope
.
row
.
gameStartTime
,
'yyyy-MM-dd'
)
}}
</p>
<p>
{{
formatDateTimeByType
(
scope
.
row
.
gameStartTime
,
'HH:mm:ss'
)
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"结束时间"
>
<
template
slot-scope=
"scope"
>
<p>
{{
formatDateTimeByType
(
scope
.
row
.
gameEndTime
,
'yyyy-MM-dd'
)
}}
</p>
<p>
{{
formatDateTimeByType
(
scope
.
row
.
gameEndTime
,
'HH:mm:ss'
)
}}
</p>
</
template
>
</el-table-column>
</el-table>
<el-pagination
style=
"margin-top:10px;text-align:right"
small
layout=
"prev, pager, next"
:current-page=
"query.currentPage"
:page-size=
"query.pageSize"
:total=
"total"
@
current-change=
"onPageChange"
>
</el-pagination>
</div>
</template>
<
script
>
import
qs
from
'qs'
;
import
{
formatDateTimeByType
}
from
'@/utils/index.js'
;
export
default
{
name
:
'GamelinkList'
,
props
:
{
gameType
:
{
required
:
true
,
type
:
String
},
gameId
:
{
type
:
String
}
},
data
()
{
return
{
formatDateTimeByType
,
list
:
[],
query
:
{
requestProject
:
'gic-web'
,
searchParam
:
''
,
currentPage
:
1
,
pageSize
:
8
,
gameStatus
:
4
},
seletedItem
:
null
,
seletedId
:
''
,
total
:
0
};
},
created
()
{
this
.
seletedId
=
this
.
gameId
||
''
;
},
methods
:
{
onPageChange
(
val
)
{
this
.
query
.
currentPage
=
val
;
this
.
getList
(
this
.
gameType
);
this
.
seletedItem
=
null
;
this
.
seletedId
=
''
;
},
onRowClick
(
row
)
{
this
.
seletedItem
=
row
;
this
.
seletedId
=
row
.
gameId
;
},
onSearch
()
{
this
.
query
.
currentPage
=
1
;
this
.
seletedItem
=
null
;
this
.
seletedId
=
''
;
this
.
getList
(
this
.
gameType
);
},
getList
(
gameType
)
{
const
setResponse
=
(
res
,
type
)
=>
{
//type 0 大转盘/刮刮卡 ----- 1 其他游戏
const
{
errorCode
,
message
,
result
}
=
res
.
data
||
{};
if
(
errorCode
!=
0
)
{
return
this
.
$message
.
error
(
message
);
}
else
{
if
(
type
===
0
)
{
this
.
list
=
result
.
page
.
result
||
[];
this
.
total
=
result
.
page
.
totalCount
||
0
;
}
else
{
this
.
list
=
(
result
.
result
||
[]).
map
(
item
=>
({
...
item
,
gameId
:
item
.
gameActivityId
}));
this
.
total
=
result
.
totalCount
||
0
;
}
}
};
switch
(
gameType
)
{
case
'GAME_LINK_DZP'
:
this
.
axios
.
post
(
`/api-marketing/page-lottery-game`
,
qs
.
stringify
({
...
this
.
query
,
gameType
:
1
})).
then
(
res
=>
{
setResponse
(
res
,
0
);
});
break
;
case
'GAME_LINK_GGK'
:
this
.
axios
.
post
(
`/api-marketing/page-lottery-game`
,
qs
.
stringify
({
...
this
.
query
,
gameType
:
2
})).
then
(
res
=>
{
setResponse
(
res
,
0
);
});
break
;
case
'GAME_LINK_PTYX'
:
this
.
axios
.
post
(
`/api-marketing/page-puzzle-game`
,
qs
.
stringify
({
...
this
.
query
})).
then
(
res
=>
{
setResponse
(
res
,
1
);
});
break
;
case
'GAME_LINK_ZNM'
:
this
.
axios
.
post
(
`/api-marketing/page-znm-game`
,
qs
.
stringify
({
...
this
.
query
})).
then
(
res
=>
{
setResponse
(
res
,
1
);
});
break
;
case
'GAME_LINK_KLFL'
:
this
.
axios
.
post
(
`/api-marketing/page-klfl-game`
,
qs
.
stringify
({
...
this
.
query
})).
then
(
res
=>
{
setResponse
(
res
,
1
);
});
break
;
}
}
},
watch
:
{
gameType
:
{
handler
()
{
this
.
query
.
currentPage
=
1
;
this
.
query
.
searchParam
=
''
;
this
.
getList
(
this
.
gameType
);
},
immediate
:
true
},
gameId
()
{
this
.
seletedId
=
this
.
gameId
||
''
;
},
seletedItem
(
val
)
{
this
.
$emit
(
'select'
,
val
);
}
}
};
</
script
>
src/views/ecm/marketing-event/components/lib-wxa.vue
View file @
9b390549
<
template
>
<el-dialog
title=
"添加小程序链接"
:visible
.
sync=
"show"
width=
"
60
0px"
class=
"add-replay-content"
:before-close=
"close"
>
<el-form
label-position=
"right"
ref=
"form"
:model=
"form"
label-width=
"100px"
v-loading=
"loading"
>
<el-dialog
title=
"添加小程序链接"
:visible
.
sync=
"show"
width=
"
77
0px"
class=
"add-replay-content"
:before-close=
"close"
>
<el-form
style=
"max-height: 550px;overflow: auto;"
label-position=
"right"
ref=
"form"
:model=
"form"
label-width=
"100px"
v-loading=
"loading"
>
<el-form-item
class=
"text-content"
label=
"文本内容"
>
<el-input
v-model=
"form.title"
@
keyup
.
native=
"toInput(form.title, $event)"
></el-input>
<span
class=
"text-num"
>
{{
inputNum
}}
/
{{
inputLength
}}
</span>
...
...
@@ -29,6 +29,10 @@
<el-select
v-show=
"preValue && preValue != 5"
filterable
clearable
@
change=
"changeNextValue"
class=
"w200"
v-model=
"nextValue"
placeholder=
"请选择"
>
<el-option
v-for=
"item in options2"
:key=
"item.linkId"
:label=
"item.name"
:value=
"item.linkId"
>
</el-option>
</el-select>
<el-select
class=
"w200"
v-model=
"threeValue"
placeholder=
"请选择"
v-if=
"options3 && options3.length > 0"
@
change=
"changeThreeValue"
>
<el-option
v-for=
"item in options3"
:key=
"item.tagid"
:label=
"item.tagname"
:value=
"item.tagid"
></el-option>
</el-select>
<game-list
style=
"margin-top:20px;margin-right: 8px;padding: 20px;border: 1px solid #dcdfe6;border-radius:2px"
ref=
"gameList"
v-if=
"gameLinkVisible"
:game-id=
"gameProps.gameId"
:game-type=
"gameProps.gameType"
@
select=
"onSelectGame"
></game-list>
</div>
</el-form-item>
</div>
...
...
@@ -44,8 +48,10 @@
<
script
>
import
{
getByteVal
,
getZhLen
}
from
'../assets/utils.js'
;
import
qs
from
'qs'
;
import
GameList
from
'./game-list.vue'
;
export
default
{
name
:
'lib-wxa'
,
components
:
{
GameList
},
props
:
{
show
:
{
type
:
Boolean
,
...
...
@@ -72,6 +78,7 @@ export default {
inputLength
:
20
,
// 限制最大字数
preValue
:
''
,
nextValue
:
''
,
threeValue
:
''
,
options1
:
[
{
value
:
3
,
...
...
@@ -87,6 +94,10 @@ export default {
}
],
options2
:
[],
gameProps
:
{
gameType
:
''
,
gameId
:
''
},
wechatContent
:
{},
listParams
:
{
pageSize
:
10
,
...
...
@@ -112,7 +123,25 @@ export default {
}
}
},
computed
:
{
options3
()
{
let
obj
=
this
.
options2
.
find
(
el
=>
{
return
el
.
linkId
===
this
.
nextValue
;
});
if
(
obj
&&
obj
.
childList
&&
obj
.
childList
.
length
>
0
)
{
return
obj
.
childList
;
}
else
{
return
[];
}
},
gameLinkVisible
()
{
return
this
.
nextValue
==
'GAME_LINK'
&&
this
.
threeValue
;
}
},
watch
:
{
options3
()
{
this
.
threeValue
=
''
;
},
show
(
val
)
{
this
.
form
=
{
title
:
''
,
...
...
@@ -123,6 +152,8 @@ export default {
};
this
.
preValue
=
''
;
this
.
nextValue
=
''
;
this
.
threeValue
=
''
;
this
.
selectedGame
=
null
;
this
.
wechatContent
=
{};
if
(
val
&&
this
.
item
.
ecmMarketingTypeRelationId
)
{
this
.
form
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
item
));
...
...
@@ -140,7 +171,22 @@ export default {
this
.
getPageName
(
pagePath
.
pageId
);
}
else
{
this
.
getNextList
(
this
.
preValue
).
then
(
res
=>
{
this
.
nextValue
=
pagePath
.
type
;
if
(
pagePath
.
type
.
startsWith
(
'GAME_LINK'
))
{
this
.
nextValue
=
'GAME_LINK'
;
}
else
{
this
.
nextValue
=
pagePath
.
type
;
}
if
(
this
.
nextValue
==
'GAME_LINK'
)
{
this
.
$nextTick
(()
=>
{
this
.
threeValue
=
pagePath
.
gameType
;
this
.
gameProps
.
gameType
=
pagePath
.
gameType
;
this
.
gameProps
.
gameId
=
pagePath
.
tagid
;
});
}
else
{
this
.
$nextTick
(()
=>
{
this
.
threeValue
=
pagePath
.
tagid
;
});
}
});
}
}
...
...
@@ -248,6 +294,30 @@ export default {
this
.
wechatContent
.
pageType
=
this
.
preValue
;
}
},
changeThreeValue
(
val
)
{
if
(
val
.
startsWith
(
'GAME_LINK'
))
{
this
.
selectedGame
=
null
;
this
.
wechatContent
.
type
=
val
;
this
.
$nextTick
(()
=>
{
this
.
gameProps
.
gameType
=
val
;
this
.
gameProps
.
gameId
=
''
;
});
}
else
{
let
option
=
this
.
options3
.
find
(
el
=>
el
.
tagid
===
val
);
this
.
wechatContent
.
tagid
=
option
.
tagid
;
this
.
wechatContent
.
tagname
=
option
.
tagname
;
}
},
onSelectGame
(
val
)
{
if
(
val
)
{
this
.
gameProps
.
gameId
=
val
.
gameId
||
val
.
gameActivityId
;
this
.
wechatContent
.
tagid
=
val
.
gameId
||
val
.
gameActivityId
;
this
.
wechatContent
.
tagname
=
val
.
gameName
;
this
.
wechatContent
.
gameType
=
this
.
threeValue
;
this
.
wechatContent
.
gameName
=
val
.
gameName
;
this
.
selectedGame
=
val
;
}
},
// 获取自定义链接list
getCustonList
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
...
...
@@ -329,6 +399,14 @@ export default {
this
.
$message
({
type
:
'warning'
,
message
:
'链接选择'
});
return
;
}
if
(
this
.
options3
&&
this
.
options3
.
length
>
0
&&
!
this
.
threeValue
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'链接选择'
});
return
;
}
if
(
this
.
nextValue
==
'GAME_LINK'
&&
!
this
.
selectedGame
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'请选择游戏'
});
return
;
}
// 自定义链接
if
(
this
.
preValue
===
5
)
{
...
...
@@ -350,6 +428,7 @@ export default {
this
.
listParams
.
search
=
''
;
this
.
listParams
.
nomore
=
false
;
this
.
options2
=
[];
this
.
options3
=
[];
this
.
$emit
(
'update:show'
,
false
);
}
}
...
...
src/views/game/dzp/form.vue
View file @
9b390549
...
...
@@ -115,6 +115,26 @@
<
/template
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
prop
=
"img"
:
render
-
header
=
"labelImg"
align
=
"left"
:
min
-
width
=
"160"
>
<
template
slot
-
scope
=
"scope"
v
-
if
=
"scope.row.prizeType !== 3"
>
<
template
v
-
if
=
"isAdd || scope.row.inOpt"
>
<
el
-
row
type
=
"flex"
align
=
"middle"
>
<
el
-
upload
:
action
=
"`${getHost()
}
/api-marketing/upload-game-image`"
:
disabled
=
"!!scope.row.prizeImage"
:
data
=
"{ requestProject: 'marketing'
}
"
with
-
credentials
accept
=
"jpg,png"
class
=
"avatar-uploader"
:
show
-
file
-
list
=
"false"
:
before
-
upload
=
"beforeUpload"
:
on
-
success
=
"onUploaded(scope.row)"
:
on
-
error
=
"onUploadError"
>
<
img
v
-
if
=
"scope.row.prizeImage"
:
src
=
"scope.row.prizeImage"
style
=
"width:30px;height:30px;object-fit:contain"
/>
<
i
v
-
else
class
=
"el-icon-plus avatar-uploader-icon"
><
/i
>
<
i
class
=
"el-icon-error"
v
-
if
=
"scope.row.prizeImage"
@
click
=
"scope.row.prizeImage = ''"
><
/i
>
<
/el-upload
>
<
div
style
=
"line-height:17px;font-size:12px;color:#909399;margin-left:10px;margin-top:5px"
>
<
div
>
图片建议尺寸
<
/div
>
<
div
>
320
*
200
px
<
/div
>
<
/div
>
<
/el-row
>
<
/template
>
<
div
v
-
else
-
if
=
"scope.row.prizeImage"
style
=
"line-height:0"
>
<
img
:
src
=
"scope.row.prizeImage"
style
=
"width:32px;height:32px;object-fit:contain;border:1px solid #dcdfe6;border-radius:2px;box-sizing:border-box"
/>
<
/div
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
prop
=
"prizeQuantity"
label
=
"商品数量"
align
=
"left"
:
min
-
width
=
"160"
>
<
template
slot
-
scope
=
"scope"
v
-
if
=
"scope.row.prizeType !== 3"
>
<
template
v
-
if
=
"isAdd || (scope.row.inOpt && scope.row.prizeType != 2)"
>
<
el
-
input
-
number
controls
-
position
=
"right"
v
-
model
=
"scope.row.prizeCount"
type
=
"number"
:
min
=
"0"
:
disabled
=
"isInfo"
class
=
"width50"
size
=
"small"
><
/el-input-number> 件 </
template
>
...
...
@@ -230,6 +250,7 @@ export default {
sortList
:
[{
label
:
'奖品1'
,
value
:
1
}
,
{
label
:
'奖品2'
,
value
:
2
}
,
{
label
:
'奖品3'
,
value
:
3
}
,
{
label
:
'奖品4'
,
value
:
4
}
,
{
label
:
'奖品5'
,
value
:
5
}
,
{
label
:
'奖品6'
,
value
:
6
}
,
{
label
:
'奖品7'
,
value
:
7
}
,
{
label
:
'奖品8'
,
value
:
8
}
,
{
label
:
'随机'
,
value
:
null
}
],
// eslint-disable-line
tableList
:
Array
(
8
)
.
fill
({
prizeImage
:
''
,
prizeId
:
''
,
prizeType
:
3
,
prizeCount
:
null
,
...
...
@@ -311,6 +332,36 @@ export default {
}
}
,
methods
:
{
getHost
()
{
const
host
=
window
.
location
.
origin
;
if
(
host
.
indexOf
(
'localhost'
)
!=
'-1'
)
{
return
'http://gicdev.demogic.com'
;
}
else
{
return
host
;
}
}
,
beforeUpload
(
file
)
{
if
(
!
[
'image/jpeg'
,
'image/png'
].
includes
(
file
.
type
))
{
this
.
$message
.
warning
(
'图片格式错误'
);
return
false
;
}
else
if
(
file
.
size
>
1024
*
1024
)
{
this
.
$message
.
warning
(
'图片大小超过1MB'
);
return
false
;
}
}
,
onUploaded
(
row
)
{
return
function
(
res
,
file
,
fileList
)
{
if
(
res
.
errorCode
===
0
)
{
this
.
$set
(
row
,
'prizeImage'
,
res
.
result
.
qcloudImageUrl
);
// row.prizeImage = res.result.qcloudImageUrl;
}
else
{
this
.
$message
.
warning
(
res
.
message
);
}
}
;
}
,
onUploadError
()
{
this
.
$message
.
error
(
'图片上传失败'
);
}
,
// 更新游戏奖品
updateGamePrize
(
index
)
{
const
current
=
this
.
tableList
[
index
];
...
...
@@ -335,6 +386,7 @@ export default {
}
const
params
=
{
prizeImage
:
current
.
prizeImage
,
gameId
:
this
.
$route
.
params
.
id
,
gamePrizeId
:
current
.
prizeId
,
type
:
current
.
prizeType
,
// 奖品类型,1:积分,2:卡券,3:谢谢参与
...
...
@@ -368,6 +420,7 @@ export default {
this
.
tableList
[
index
].
prizeCount
=
0
;
this
.
tableList
[
index
].
prizeCardId
=
''
;
this
.
tableList
[
index
].
cardName
=
''
;
this
.
tableList
[
index
].
prizeImage
=
''
;
}
,
// 添加规则
addRule
(
i
)
{
...
...
@@ -619,6 +672,7 @@ export default {
this
.
tableList
.
forEach
((
v
,
i
)
=>
{
if
(
v
.
prizeType
===
1
)
{
list
.
push
({
prizeImage
:
v
.
prizeImage
,
prizeIntegral
:
v
.
prizeIntegral
,
prizeCount
:
v
.
prizeCount
,
// 奖品数量
prizeRate
:
0
,
...
...
@@ -630,6 +684,7 @@ export default {
}
);
}
else
if
(
v
.
prizeType
===
2
)
{
list
.
push
({
prizeImage
:
v
.
prizeImage
,
prizeCardId
:
v
.
prizeCardId
,
// 奖项设置: 所选卡券的主键ID coupCardId
prizeCount
:
v
.
prizeCount
,
// 奖品数量
prizeRate
:
0
,
...
...
@@ -711,6 +766,21 @@ export default {
<
/el-tooltip
>
);
}
,
labelImg
(
h
,
{
column
,
$index
}
)
{
return
(
<
span
>
<
span
class
=
"fw500"
>
奖项图片
<
/span
>
<
el
-
tooltip
class
=
"item"
effect
=
"dark"
placement
=
"top-start"
>
<
i
style
=
"margin-left:2px"
class
=
"iconfont icon-xinxixianshi minor-font-color fz14"
/>
<
div
style
=
"line-height:18px"
slot
=
"content"
>
<
div
>
可上传自定义图片,非必传,未上传展示默认图标;
<
/div
>
<
div
>
格式:
jpg
,
png
;
<
/div
>
<
div
>
大小:
1
MB
以内。
<
/div
>
<
/div
>
<
/el-tooltip
>
<
/span
>
);
}
,
downloadWheelSkinPsd
()
{
window
.
location
=
downloadWheelSkinPsd
;
}
...
...
@@ -724,6 +794,36 @@ export default {
<
/script
>
<
style
lang
=
"scss"
scoped
>
.
avatar
-
uploader
/
deep
/
{
font
-
size
:
0
;
line
-
height
:
0
;
margin
-
top
:
5
px
;
.
el
-
upload
{
border
:
1
px
dashed
#
dcdfe6
;
border
-
radius
:
2
px
;
cursor
:
pointer
;
position
:
relative
;
}
.
avatar
-
uploader
-
icon
{
font
-
size
:
16
px
;
color
:
#
303133
;
width
:
30
px
;
height
:
30
px
;
line
-
height
:
30
px
;
text
-
align
:
center
;
}
.
el
-
icon
-
error
{
position
:
absolute
;
right
:
0
;
top
:
0
;
transform
:
translate
(
40
%
,
-
40
%
);
font
-
size
:
12
px
;
color
:
rgba
(
0
,
0
,
0
,
0.4
);
&
:
hover
{
color
:
rgba
(
0
,
0
,
0
,
0.8
);
}
}
}
.
skin
-
box
{
display
:
block
;
width
:
220
px
;
...
...
src/views/recharge/consume.vue
View file @
9b390549
...
...
@@ -382,6 +382,7 @@ export default {
},
async
marketingCharts
()
{
try
{
this
.
list
=
[];
let
res
=
await
messageMarketingChart
(
this
.
listParams
);
this
.
sumCount
=
res
.
result
.
sumCount
;
this
.
sumFee
=
res
.
result
.
sumFee
;
...
...
@@ -404,6 +405,7 @@ export default {
async
smsData
(
type
=
'list'
)
{
this
.
loading
=
true
;
try
{
this
.
list
=
[];
let
res
=
await
smsData
(
Object
.
assign
({
ajaxType
:
type
},
this
.
listParams
));
if
(
type
===
'list'
)
{
if
(
res
.
errorCode
===
0
&&
res
.
result
.
page
.
result
)
{
...
...
@@ -436,6 +438,7 @@ export default {
async
voiceData
(
type
=
'list'
)
{
this
.
loading
=
true
;
try
{
this
.
list
=
[];
let
res
=
await
voiceData
(
Object
.
assign
({
ajaxType
:
type
},
this
.
listParams
));
if
(
type
===
'list'
)
{
if
(
res
.
errorCode
===
0
&&
res
.
result
.
page
.
result
)
{
...
...
@@ -466,6 +469,7 @@ export default {
async
callData
(
type
=
'list'
)
{
this
.
loading
=
true
;
try
{
this
.
list
=
[];
let
res
=
await
callData
(
Object
.
assign
({
ajaxType
:
type
,
taskType
:
type
===
'list'
?
this
.
taskType
:
''
},
this
.
listParams
));
if
(
type
===
'list'
)
{
if
(
res
.
errorCode
===
0
&&
res
.
result
.
page
.
result
)
{
...
...
@@ -498,6 +502,7 @@ export default {
async
videoPage
(
type
=
'list'
)
{
this
.
loading
=
true
;
try
{
this
.
list
=
[];
this
.
videoListParams
.
startTime
=
formatDateTimeByType
(
this
.
dateTimeVideo
[
0
],
'yyyy-MM-dd'
);
this
.
videoListParams
.
endTime
=
formatDateTimeByType
(
this
.
dateTimeVideo
[
1
],
'yyyy-MM-dd'
);
if
(
type
===
'list'
)
{
...
...
@@ -553,6 +558,7 @@ export default {
async
recordData
(
type
=
'list'
)
{
this
.
loading
=
true
;
try
{
this
.
list
=
[];
let
res
=
await
recordData
(
Object
.
assign
({
ajaxType
:
type
,
taskType
:
type
===
'list'
?
this
.
taskType
:
''
},
this
.
listParams
));
if
(
type
===
'list'
)
{
if
(
res
.
errorCode
===
0
&&
res
.
result
.
page
.
result
)
{
...
...
src/views/recharge/record.vue
View file @
9b390549
...
...
@@ -5,22 +5,23 @@
<el-select
style=
"width:180px"
clearable
v-model=
"listParams.feeType"
placeholder=
"全部记录类型"
@
change=
"onChangeFeeType"
>
<el-option
label=
"充值"
:value=
"1"
></el-option>
<el-option
label=
"扣款"
:value=
"2"
></el-option>
<el-option
label=
"退费"
:value=
"3"
></el-option>
</el-select>
<el-select
v-if=
"listParams.feeType == 2"
style=
"width:180px"
clearable
v-model=
"listParams.deductType"
placeholder=
"全部扣款类型"
@
change=
"onSearch"
>
<el-option
v-for=
"(value, key) in deductTypeList"
:key=
"key"
:label=
"value"
:value=
"key"
></el-option>
</el-select>
</div>
<el-table
tooltipEffect=
"dark"
:data=
"tableList"
style=
"width: 100%"
>
<el-table-column
align=
"left"
prop=
"timeEnd"
label=
"
充值
时间"
>
<el-table-column
align=
"left"
prop=
"timeEnd"
label=
"
操作
时间"
>
<template
slot-scope=
"scope"
>
<p
style=
"color:#606266;"
>
{{
formatDateTimeByType
(
scope
.
row
.
timeEnd
,
'yyyy-MM-dd-HH-mm-ss'
,
true
).
y
}}
</p>
<p
style=
"color:#606266;"
>
{{
formatDateTimeByType
(
scope
.
row
.
timeEnd
,
'yyyy-MM-dd-HH-mm-ss'
,
true
).
h
}}
</p>
</
template
>
</el-table-column>
<el-table-column
align=
"left"
prop=
"transactionId"
label=
"
充值
流水号"
></el-table-column>
<el-table-column
align=
"left"
prop=
"transactionId"
label=
"流水号"
></el-table-column>
<el-table-column
label=
"记录类型"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
feeType
==
1
?
'充值'
:
'扣款'
}}
{{
textMap
[
scope
.
row
.
feeType
]
}}
</
template
>
</el-table-column>
<el-table-column
label=
"扣款类型"
>
...
...
@@ -28,15 +29,15 @@
{{
deductTypeList
[
scope
.
row
.
deductType
]
}}
</
template
>
</el-table-column>
<el-table-column
align=
"left"
prop=
"payType"
label=
"充值方式"
>
<
!-- <
el-table-column align="left" prop="payType" label="充值方式">
<template slot-scope="scope">
{{ scope.row.payType | filterPayType }}
</template>
</el-table-column>
</el-table-column>
-->
<el-table-column
label=
"金额"
align=
"left"
prop=
"totalFee"
>
<
template
slot-scope=
"scope"
>
{{
(
scope
.
row
.
totalFee
/
100
).
toFixed
(
2
)
}}
元
</
template
>
</el-table-column>
<el-table-column
align=
"left"
prop=
"reason"
label=
"
充值
原因"
show-overflow-tooltip
></el-table-column>
<el-table-column
align=
"left"
prop=
"reason"
label=
"原因"
show-overflow-tooltip
></el-table-column>
<el-table-column
label=
"图片凭证"
>
<
template
slot-scope=
"scope"
>
<!--
<el-image
v-for=
"(item, index) in getUrls(scope).slice(0, 3)"
:key=
"`$
{currentPage}-${item}`" style="width: 36px; height: 36px" :src="item" :preview-src-list="getUrls(scope, index)" lazy>
...
...
@@ -66,6 +67,11 @@ export default {
components
:
{
Viewer
},
data
()
{
return
{
textMap
:
{
1
:
'充值'
,
2
:
'扣款'
,
3
:
'退费'
},
formatDateTimeByType
,
dateTime
:
[
Date
.
now
()
-
30
*
24
*
60
*
60
*
1000
,
Date
.
now
()],
loading
:
false
,
...
...
@@ -84,7 +90,7 @@ export default {
},
created
()
{
this
.
rechargeRecord
();
this
.
$store
.
commit
(
'mutations_breadcrumb'
,
[{
name
:
'企业管理'
,
path
:
''
},
{
name
:
'计费中心'
,
path
:
'/recharge'
},
{
name
:
'
充值
记录'
,
path
:
''
}]);
// eslint-disable-line
this
.
$store
.
commit
(
'mutations_breadcrumb'
,
[{
name
:
'企业管理'
,
path
:
''
},
{
name
:
'计费中心'
,
path
:
'/recharge'
},
{
name
:
'记录'
,
path
:
''
}]);
// eslint-disable-line
},
methods
:
{
getUrls
(
scope
)
{
...
...
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