Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
R
remarketing-yunying
Project
Project
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
yaobeibei
remarketing-yunying
Commits
9e255061
Commit
9e255061
authored
Jul 24, 2018
by
yaobeibei
Browse files
Options
Browse Files
Download
Plain Diff
merge reset
parents
75a437f6
592dfa2a
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
512 additions
and
281 deletions
+512
-281
api.js
api/api.js
+78
-35
server.js
server.js
+1
-1
account.vue
src/components/account.vue
+75
-2
checkCall.vue
src/components/checkCall.vue
+16
-12
checkNote.vue
src/components/checkNote.vue
+4
-7
checkUrl.vue
src/components/checkUrl.vue
+2
-5
consume.vue
src/components/consume.vue
+3
-9
dataList.vue
src/components/dataList.vue
+5
-13
distributor.vue
src/components/distributor.vue
+4
-13
exportPoolTask.vue
src/components/exportPoolTask.vue
+2
-5
finance.vue
src/components/finance.vue
+3
-11
home.vue
src/components/home.vue
+36
-46
info.vue
src/components/info.vue
+14
-62
leadPoolTask.vue
src/components/leadPoolTask.vue
+2
-5
releaseInfo.vue
src/components/releaseInfo.vue
+54
-32
slot.vue
src/components/slot.vue
+5
-7
surplus.vue
src/components/surplus.vue
+3
-11
tableTemplate.vue
src/components/tableTemplate.vue
+203
-0
userPool.vue
src/components/userPool.vue
+2
-5
No files found.
api/api.js
View file @
9e255061
...
...
@@ -107,7 +107,7 @@ app.post('/dataList', async function (req, res) {
console
.
log
(
body
)
console
.
log
(
startTime
,
endTime
)
console
.
log
(
db
)
let
dateQs
=
getTimeRange
({
start
:
startTime
,
end
:
endTime
,
key
:
'date'
})
let
results
=
await
db
.
collection
(
'dailyStats'
).
aggregate
([
...
...
@@ -211,19 +211,19 @@ app.post('/dataList', async function (req, res) {
item
.
callCount
=
o
.
callCount
}
})
// if (item.pv || item.touchCount || item.getCount || item.msgCount || item.callCount) {
// dataArr.push(item)
// }
// if (!reg.test(item.email)) {
// dataArr.push(item)
// }
dataArr
.
push
(
item
)
})
let
arrTotal
=
dataArr
.
length
// dataArr = dataArr.slice((currentPage - 1) * pageSize, pageSize * currentPage)
// console.log(dataArr)
res
.
send
({
status
:
200
,
total
:
arrTotal
,
data
:
dataArr
})
if
(
currentPage
&&
pageSize
)
{
dataArr
=
dataArr
.
slice
((
currentPage
-
1
)
*
pageSize
,
pageSize
*
currentPage
)
}
else
{
dataArr
=
dataArr
}
res
.
send
({
status
:
200
,
total
:
arrTotal
,
datas
:
dataArr
})
})
// 获取渠道数据
...
...
@@ -336,20 +336,18 @@ app.post('/distributor', async function (req, res) {
item
.
callCount
=
o
.
callCount
}
})
// if (item.pv || item.touchCount || item.getCount || item.msgCount || item.callCount) {
// dataArr.push(item)
// }
// if (!reg.test(item.email)) {
// dataArr.push(item)
// }
dataArr
.
push
(
item
)
})
let
arrTotal
=
dataArr
.
length
// dataArr = dataArr.slice((currentPage - 1) * pageSize, pageSize * currentPage)
// console.log(dataArr)
res
.
send
({
status
:
200
,
total
:
arrTotal
,
data
:
dataArr
})
if
(
currentPage
&&
pageSize
)
{
dataArr
=
dataArr
.
slice
((
currentPage
-
1
)
*
pageSize
,
pageSize
*
currentPage
)
}
else
{
dataArr
=
dataArr
}
res
.
send
({
status
:
200
,
total
:
arrTotal
,
datas
:
dataArr
})
})
...
...
@@ -431,10 +429,14 @@ app.post('/consume', async function (req, res) {
preTotalNumber
+=
x
.
preNumber
}
})
console
.
log
(
consumeTotalNumber
)
console
.
log
(
preTotalNumber
)
// dataArr = dataArr.slice((currentPage - 1) * pageSize, pageSize * currentPage)
res
.
send
({
status
:
200
,
consumeTotalNumber
:
consumeTotalNumber
,
preTotalNumber
:
preTotalNumber
,
total
:
dataTotal
,
data
:
dataArr
})
if
(
currentPage
&&
pageSize
)
{
dataArr
=
dataArr
.
slice
((
currentPage
-
1
)
*
pageSize
,
pageSize
*
currentPage
)
}
else
{
dataArr
=
dataArr
}
res
.
send
({
status
:
200
,
consumeTotalNumber
:
consumeTotalNumber
,
preTotalNumber
:
preTotalNumber
,
total
:
dataTotal
,
datas
:
dataArr
})
})
// 充值数据
...
...
@@ -497,9 +499,15 @@ app.post('/finance', async function (req, res) {
}
}
financeNumber
=
financeNumber
.
toFixed
(
2
)
// dataArr = dataArr.slice((currentPage - 1) * pageSize, pageSize * currentPage)
if
(
currentPage
&&
pageSize
)
{
dataArr
=
dataArr
.
slice
((
currentPage
-
1
)
*
pageSize
,
pageSize
*
currentPage
)
}
else
{
dataArr
=
dataArr
}
res
.
send
({
status
:
200
,
financeNumber
:
financeNumber
,
total
:
dataTolal
,
data
:
dataArr
})
res
.
send
({
status
:
200
,
financeNumber
:
financeNumber
,
total
:
dataTolal
,
data
s
:
dataArr
})
})
...
...
@@ -578,9 +586,14 @@ app.post('/surplus', async function (req, res) {
})
surPlusTotal
=
surPlusTotal
.
toFixed
(
2
)
let
dataTotal
=
dataArr
.
length
// console.log(dataArr)
// dataArr = dataArr.slice((currentPage - 1) * pageSize, pageSize * currentPage)
res
.
send
({
status
:
200
,
total
:
dataTotal
,
data
:
dataArr
,
surplusTotal
:
surPlusTotal
})
if
(
currentPage
&&
pageSize
)
{
dataArr
=
dataArr
.
slice
((
currentPage
-
1
)
*
pageSize
,
pageSize
*
currentPage
)
}
else
{
dataArr
=
dataArr
}
res
.
send
({
status
:
200
,
total
:
dataTotal
,
datas
:
dataArr
,
surplusTotal
:
surPlusTotal
})
})
function
getTimeRange
({
start
,
end
,
key
})
{
...
...
@@ -615,7 +628,7 @@ app.post('/releaseInfo', async function (req, res) {
db
.
collection
(
'account'
).
update
({},
{
$set
:
{
inform
:
true
}
},
{
multi
:
true
})
res
.
send
({
status
:
200
,
message
:
'更新成功'
})
}
else
{
res
.
send
({
status
:
500
,
message
:
'更新失败'
})
res
.
send
({
status
:
204
,
message
:
'更新失败'
})
}
})
})
...
...
@@ -625,11 +638,12 @@ app.post('/releaseInfo', async function (req, res) {
app
.
post
(
'/getInfo'
,
async
function
(
req
,
res
)
{
console
.
log
(
'进入公告'
)
console
.
log
(
req
.
body
)
let
{
currentPage
,
pageSize
,
sessionID
}
=
req
.
body
let
{
startTime
,
endTime
,
total
,
currentPage
,
pageSize
}
=
req
.
body
console
.
log
(
db
)
startTime
=
moment
(
startTime
).
startOf
(
'day'
).
toDate
()
endTime
=
moment
(
endTime
).
endOf
(
'day'
).
toDate
()
let
info
=
await
db
.
collection
(
'inform'
).
find
().
sort
({
'createdAt'
:
-
1
}).
toArray
()
let
info
=
await
db
.
collection
(
'inform'
).
find
(
{
time
:
{
$gt
:
startTime
,
$lte
:
endTime
}}
).
sort
({
'createdAt'
:
-
1
}).
toArray
()
let
dataArr
=
[]
info
.
forEach
(
x
=>
{
...
...
@@ -642,8 +656,14 @@ app.post('/getInfo', async function (req, res) {
})
let
dataArrTotal
=
dataArr
.
length
dataArr
=
dataArr
.
slice
((
currentPage
-
1
)
*
pageSize
,
pageSize
*
currentPage
)
res
.
send
({
status
:
200
,
data
:
dataArr
,
dataTotal
:
dataArrTotal
})
if
(
currentPage
&&
pageSize
)
{
dataArr
=
dataArr
.
slice
((
currentPage
-
1
)
*
pageSize
,
pageSize
*
currentPage
)
}
else
{
dataArr
=
dataArr
}
res
.
send
({
status
:
200
,
datas
:
dataArr
,
total
:
dataArrTotal
})
})
// 云呼审核数据
...
...
@@ -1553,6 +1573,7 @@ app.post('/getAccount', async function (req, res) {
item
.
company
=
x
.
company
item
.
phone
=
x
.
phone
item
.
email
=
x
.
email
item
.
site
=
x
.
site
item
.
onelevelTag
=
x
.
onelevelTag
||
''
item
.
twolevelTag
=
x
.
twolevelTag
||
''
item
.
tag
=
{
onelvtag
:
[],
twolvtag
:
[]
}
...
...
@@ -1571,6 +1592,21 @@ app.post('/getAccount', async function (req, res) {
res
.
send
({
status
:
200
,
data
:
dataArr
,
dataTotal
:
dataArrTotal
,
emailArr
:
emailArr
})
})
// 修改公司信息
app
.
post
(
'/changeAccountInfo'
,
async
function
(
req
,
res
)
{
console
.
log
(
req
.
body
)
let
{
accountID
,
name
,
phone
,
site
}
=
req
.
body
await
db
.
collection
(
'account'
).
update
({
_id
:
mongodb
.
ObjectId
(
accountID
)},
{
$set
:
{
company
:
name
,
phone
:
phone
,
site
:
site
}},
(
err
,
response
)
=>
{
if
(
err
)
{
return
console
.
log
(
err
)
}
res
.
send
({
status
:
200
,
message
:
'公司信息修改成功'
})
})
})
// 向公司打标签
app
.
post
(
'/makeAccountTag'
,
async
function
(
req
,
res
){
console
.
log
(
'进入打标签'
)
...
...
@@ -2074,12 +2110,17 @@ app.post('/entry', function(req, res) {
console
.
log
(
req
.
body
)
let
{
billID
}
=
req
.
body
let
url
=
'http://remarketing-job-yh.yoo.yunpro.cn/fileStatusDSP?billID='
+
billID
// let url = 'http://remarketing-job-yh.yoo.yunpro.cn/fileStatusDSP?billID=5b0b93b16100bb0007384677'
request
(
url
,
(
err
,
response
)
=>
{
if
(
err
)
{
return
console
.
log
(
err
)
}
console
.
log
(
response
.
statusCode
,
response
.
message
)
if
(
response
.
statusCode
===
200
)
{
<<<<<<<
HEAD
=======
console
.
log
(
response
.
body
)
>>>>>>>
reset
res
.
send
({
status
:
200
,
datas
:
response
.
body
})
}
if
(
response
.
statusCode
===
204
)
{
...
...
@@ -2108,4 +2149,6 @@ app.post('/entryIn', function(req, res) {
})
module
.
exports
=
app
server.js
View file @
9e255061
...
...
@@ -38,5 +38,5 @@ app.get('/file/:fileName', function(req, res, next) {
});
server
.
listen
(
8082
,
function
()
{
console
.
log
(
'server started'
);
console
.
log
(
'server started
at 8082
'
);
});
src/components/account.vue
View file @
9e255061
...
...
@@ -29,6 +29,11 @@
<el-button
type=
'text'
@
click=
'openForm(scope.row, scope.$index)'
>
公司标签
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
"修改公司信息"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
@
click=
"changeAccountInfo(scope)"
>
修改信息
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
'自动备案'
>
<
template
slot-scope=
'scope'
>
<el-switch
...
...
@@ -67,6 +72,26 @@
style=
"float: right;margin-top: 15px"
>
</el-pagination>
</el-main>
<el-dialog
title=
"修改公司信息"
:visible
.
sync=
'changeAccountInfoDialog'
width=
"40%"
>
<el-form
:label-position=
"left"
label-width=
"80px"
:model=
"companyInfo"
style=
"margin: 0 auto; width: 80%"
>
<el-form-item
label=
"公司姓名"
>
<el-input
v-model=
'companyInfo.name'
></el-input>
</el-form-item>
<el-form-item
label=
"公司电话"
>
<el-input
v-model=
'companyInfo.phone'
></el-input>
</el-form-item>
<el-form-item
label=
"公司网站"
>
<el-input
v-model=
'companyInfo.site'
></el-input>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"changeAccountInfoDialog = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"sureChangeInfo"
>
确 定
</el-button>
</div>
</el-dialog>
<el-dialog
title=
'行业标签'
:visible
.
sync=
'dialogVisiable'
width=
60%
>
<el-select
v-model=
"oneChoose"
filterable
clearable
placeholder=
"请选择一级标签"
@
change=
'chooseOne'
>
<el-option
...
...
@@ -93,7 +118,7 @@
</template>
<
script
>
import
{
mapGetters
}
from
'vuex'
import
{
mapGetters
,
mapActions
}
from
'vuex'
export
default
{
name
:
'account'
,
data
()
{
...
...
@@ -113,7 +138,14 @@
oneChoose
:
null
,
twoChoose
:
null
,
currentdata
:
null
,
currentIndex
:
null
currentIndex
:
null
,
changeAccountInfoDialog
:
false
,
companyInfo
:
{
accountID
:
null
,
name
:
null
,
phone
:
null
,
site
:
null
}
}
},
mounted
()
{
...
...
@@ -127,6 +159,47 @@
})
},
methods
:
{
...
mapActions
({
send
:
'SEND'
}),
changeAccountInfo
(
scope
)
{
this
.
currentdata
=
scope
.
row
this
.
currentIndex
=
scope
.
$index
this
.
companyInfo
.
accountID
=
this
.
currentdata
.
_id
this
.
companyInfo
.
name
=
this
.
currentdata
.
company
this
.
companyInfo
.
phone
=
this
.
currentdata
.
phone
this
.
companyInfo
.
site
=
this
.
currentdata
.
site
this
.
changeAccountInfoDialog
=
true
},
sureChangeInfo
()
{
let
self
=
this
console
.
log
(
this
.
companyInfo
)
this
.
send
({
url
:
'/api/changeAccountInfo'
,
choose
:
{
accountID
:
self
.
companyInfo
.
accountID
,
name
:
self
.
companyInfo
.
name
,
phone
:
self
.
companyInfo
.
phone
,
site
:
self
.
companyInfo
.
site
},
callback
:
(
err
,
data
)
=>
{
this
.
$message
({
type
:
'success'
,
message
:
data
.
message
})
self
.
changeAccountInfoDialog
=
false
self
.
currentdata
.
name
=
self
.
companyInfo
.
name
self
.
currentdata
.
phone
=
self
.
companyInfo
.
phone
self
.
currentdata
.
site
=
self
.
companyInfo
.
site
this
.
$set
(
self
.
datas
,
self
.
currentIndex
,
self
.
currentdata
)
self
.
companyInfo
.
accountID
=
null
self
.
companyInfo
.
name
=
null
self
.
companyInfo
.
phone
=
null
self
.
companyInfo
.
site
=
null
}
})
},
makeAccountTag
()
{
this
.
dialogVisiable
=
false
let
onelevelTag
=
this
.
onelevel
[
this
.
oneChoose
]
...
...
src/components/checkCall.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
<h4>
云呼审核
</h4>
</el-header>
<el-main>
<el-row>
<el-date-picker
...
...
@@ -224,7 +220,6 @@
</span>
</el-dialog>
</el-main>
</el-container>
</template>
<
script
>
...
...
@@ -522,6 +517,7 @@
}).
then
(
data
=>
{
console
.
dir
(
data
)
this
.
entryBillID
=
billID
<<<<<<<
HEAD
let
datas
=
JSON
.
parse
(
data
.
datas
)
console
.
log
(
datas
)
...
...
@@ -533,6 +529,10 @@
message
:
'该订单已经被录入'
})
}
=======
let
datas
=
JSON
.
parse
(
data
.
datas
)
if
(
data
.
status
===
200
)
{
>>>>>>>
reset
this
.
formatEntry
(
datas
)
}
else
{
this
.
$alert
(
data
.
message
,
'无法录入'
,
{
...
...
@@ -552,22 +552,22 @@
},
formatEntry
(
datas
)
{
let
self
=
this
if
(
datas
)
{
self
.
entryData
.
billCheck
=
datas
.
billCheck
.
result
self
.
entryData
.
billCheckTime
=
moment
(
datas
.
billCheck
.
at
).
format
(
'YYYY-MM-DD HH:mm:
SS
'
)
self
.
entryData
.
billCheck
=
datas
.
billCheck
.
result
self
.
entryData
.
billCheckTime
=
moment
(
datas
.
billCheck
.
at
).
format
(
'YYYY-MM-DD HH:mm:
ss
'
)
self
.
entryData
.
fileCheck
=
datas
.
fileCheck
.
result
self
.
entryData
.
fileCheckTime
=
moment
(
datas
.
fileCheck
.
at
).
format
(
'YYYY-MM-DD HH:mm:
SS
'
)
self
.
entryData
.
fileCheckTime
=
moment
(
datas
.
fileCheck
.
at
).
format
(
'YYYY-MM-DD HH:mm:
ss
'
)
self
.
entryData
.
countCheck
=
datas
.
countCheck
.
result
self
.
entryData
.
countCheckTime
=
moment
(
datas
.
countCheck
.
at
).
format
(
'YYYY-MM-DD HH:mm:
SS
'
)
self
.
entryData
.
countCheckTime
=
moment
(
datas
.
countCheck
.
at
).
format
(
'YYYY-MM-DD HH:mm:
ss
'
)
self
.
entryData
.
countCheckNow
=
datas
.
countCheck
.
now
self
.
entryData
.
countCheckExpect
=
datas
.
countCheck
.
expect
self
.
entryData
.
tagCheck
=
datas
.
tagCheck
.
result
self
.
entryData
.
tagCheckTime
=
moment
(
datas
.
tagCheck
.
at
).
format
(
'YYYY-MM-DD HH:mm:
SS
'
)
self
.
entryData
.
tagCheckTime
=
moment
(
datas
.
tagCheck
.
at
).
format
(
'YYYY-MM-DD HH:mm:
ss
'
)
self
.
entryData
.
tagCheckLose
=
datas
.
tagCheck
.
lose
self
.
entryData
.
tagCheckTotal
=
datas
.
tagCheck
.
total
self
.
entryData
.
randomCall
=
datas
.
randomCall
.
result
self
.
entryData
.
randomTime
=
moment
(
datas
.
randomCall
.
at
).
format
(
'YYYY-MM-DD HH:mm:
SS
'
)
self
.
entryData
.
randomTime
=
moment
(
datas
.
randomCall
.
at
).
format
(
'YYYY-MM-DD HH:mm:
ss
'
)
self
.
statusDialog
=
true
}
else
{
self
.
statusDialog
=
true
...
...
@@ -589,9 +589,13 @@
}).
then
(
res
=>
{
return
res
.
json
()
}).
then
(
data
=>
{
<<<<<<<
HEAD
console
.
log
(
data
)
let
datas
=
JSON
.
parse
(
data
.
datas
)
console
.
log
(
datas
)
=======
let
datas
=
JSON
.
parse
(
data
.
datas
)
>>>>>>>
reset
if
(
data
.
status
===
200
)
{
if
(
datas
.
ok
===
1
)
{
this
.
message
({
...
...
src/components/checkNote.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
<h4>
短信审核
</h4>
</el-header>
<el-main
style=
"font-size: 12px"
>
<el-row>
<el-date-picker
...
...
@@ -134,8 +131,7 @@
:total=
"total"
style=
"float: right;margin-top: 15px"
>
</el-pagination>
</el-main>
<el-dialog
:visible
.
sync=
"dialogFormVisible"
>
<el-dialog
:visible
.
sync=
"dialogFormVisible"
>
<p
style=
"font-size: 16px;font-weight: 800"
>
请添加筛选条件
</p>
<p
style=
'margin-left:10p'
>
备注: {{meta}}
</p>
<div>
...
...
@@ -208,7 +204,8 @@
<el-button
type=
"primary"
@
click=
"creatNoteTag()"
>
确 定
</el-button>
</div>
</el-dialog>
</el-container>
</el-main>
</template>
<
script
>
...
...
src/components/checkUrl.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
<h4>
url审核
</h4>
</el-header>
<el-main>
<el-row
type=
"flex"
justify=
"space-between"
style=
"margin-bottom: 10px"
>
<el-col
:span=
"8"
>
...
...
@@ -23,7 +20,7 @@
</el-table>
<Pagination
:currentPage=
'currentPage'
:pageSize=
'pageSize'
:total=
'total'
@
sizeChange=
'sizeChange'
@
currentChange=
'currentChange'
></Pagination>
</el-main>
</el-container>
</template>
<
script
>
import
DatePicker
from
'./DatePicker'
...
...
src/components/consume.vue
View file @
9e255061
<
template
>
<el-container>
<el-header><h2>
消费记录
</h2></el-header>
<el-main>
<TableT
mp
:header=
"dataHeader"
ref=
'TableTmp'
consume=
'ok'
:url=
'url'
></TableTmp
>
<TableT
emplate
:header=
"dataHeader"
ref=
'TableTmp'
:url=
'url'
:sum=
'true'
:downBtn=
'true'
:preSum=
'true'
></TableTemplate
>
</el-main>
</el-container>
</
template
>
<
script
>
import
TableT
mp
from
'./tableTmp
'
import
TableT
emplate
from
'./tableTemplate
'
export
default
{
name
:
'consume'
,
components
:
{
TableT
mp
},
components
:
{
TableT
emplate
},
data
()
{
return
{
url
:
'/api/consume'
,
...
...
@@ -23,9 +20,6 @@
preNumber
:
'预扣金额'
}
}
},
mounted
()
{
this
.
$refs
.
TableTmp
.
change
()
}
}
</
script
>
...
...
src/components/dataList.vue
View file @
9e255061
<
template
>
<el-container>
<el-header><h2>
直客统计
</h2></el-header>
<el-main>
<TableTmp
:header=
"dataHeader"
ref=
'TableTmp'
:url=
'url'
:datalist=
'datalist'
>
</TableTmp>
<TableTemplate
:header=
"dataHeader"
:url=
'url'
:datalist=
'datalist'
:downBtn=
'downBtn'
></TableTemplate>
</el-main>
</el-container>
</
template
>
<
script
>
import
TableT
mp
from
'./tableTmp
'
import
TableT
emplate
from
'./tableTemplate
'
export
default
{
name
:
'dataList'
,
components
:
{
TableT
mp
},
components
:
{
TableT
emplate
},
data
()
{
return
{
url
:
'/api/dataList'
,
...
...
@@ -27,13 +23,9 @@
msgCount
:
'短信营销'
,
callCount
:
'云呼营销'
},
datalist
:
'ok'
datalist
:
'ok'
,
downBtn
:
true
}
},
mounted
()
{
this
.
$refs
.
TableTmp
.
change
()
},
methods
:
{
}
}
</
script
>
...
...
src/components/distributor.vue
View file @
9e255061
<
template
>
<el-container>
<el-header><h2>
渠道统计
</h2></el-header>
<el-main>
<TableTmp
:header=
"dataHeader"
ref=
'TableTmp'
:url=
'url'
:datalist=
'datalist'
:distributor=
'distributor'
>
</TableTmp>
</el-main>
</el-container>
<TableTemplate
:header=
"dataHeader"
ref=
'TableTmp'
:url=
'url'
:datalist=
'datalist'
:downBtn=
'true'
></TableTemplate>
</el-main>
</
template
>
<
script
>
import
TableT
mp
from
'./tableTmp
'
import
TableT
emplate
from
'./tableTemplate
'
export
default
{
name
:
'distributor'
,
components
:
{
TableT
mp
},
components
:
{
TableT
emplate
},
data
()
{
return
{
url
:
'/api/distributor'
,
...
...
@@ -30,11 +26,6 @@
},
datalist
:
'ok'
}
},
mounted
()
{
this
.
$refs
.
TableTmp
.
change
()
},
methods
:
{
}
}
</
script
>
...
...
src/components/exportPoolTask.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
<h4>
导出任务
</h4>
</el-header>
<el-main>
<el-table
border
:data=
'datas'
>
<el-table-column
label=
'任务编码'
prop=
'taskID'
></el-table-column>
...
...
@@ -25,7 +22,7 @@
</span>
</el-dialog>
</el-main>
</el-container>
</template>
<
script
>
...
...
src/components/finance.vue
View file @
9e255061
<
template
>
<el-container>
<el-header><h2>
充值记录
</h2></el-header>
<el-main>
<TableTmp
:header=
"dataHeader"
ref=
'TableTmp'
:url=
'url'
finance=
'ok'
>
</TableTmp>
<TableTemplate
:header=
"dataHeader"
ref=
'TableTmp'
:url=
'url'
:sum=
'true'
:downBtn=
'true'
></TableTemplate>
</el-main>
</el-container>
</
template
>
...
...
@@ -15,10 +10,10 @@
</
style
>
<
script
>
import
TableT
mp
from
'./tableTmp
'
import
TableT
emplate
from
'./tableTemplate
'
export
default
{
name
:
'finance'
,
components
:
{
TableT
mp
},
components
:
{
TableT
emplate
},
data
()
{
return
{
url
:
'/api/finance'
,
...
...
@@ -29,9 +24,6 @@
number
:
'金额'
}
}
},
mounted
()
{
this
.
$refs
.
TableTmp
.
change
()
}
}
</
script
>
src/components/home.vue
View file @
9e255061
<
template
>
<el-container
style=
"height: 100%;"
>
<el-header
style=
"background-color: #000000c5"
>
<div
style=
'float: right;margin: 16px 20px'
>
<div
style=
'float: right;margin: 20px;width:10%;text-aling:right'
>
<el-dropdown
@
command=
"handleCommand"
>
<span
class=
"el-dropdown-link"
style=
'color: white'
>
{{
email
}}
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<!--
<el-dropdown-item
command=
"mine"
>
个人中心
</el-dropdown-item>
-->
<el-dropdown-item
command=
"exit"
>
退出登陆
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<img
src=
"../assets/logo.png"
style=
"width: 105px;height: 25px;margin: 16px 0;float: left"
>
style=
"width:8%;height: 25px;margin: 16px 0;float: left"
>
<p
class=
"title"
>
{{
title
}}
</p>
</el-header>
<el-container
style=
"height: 100%"
>
<el-aside
:style=
"
{width: isCollapse ? '66px' : '160px'}">
...
...
@@ -32,12 +33,10 @@
<span>
数据统计
</span>
</
template
>
<el-menu-item-group>
<el-menu-item
index=
"/dataList"
@
click=
"routeTo"
>
直客统计
</el-menu-item>
<el-menu-item
index=
"/dataList"
@
click=
"routeTo"
>
直客统计
</el-menu-item>
</el-menu-item-group>
<el-menu-item-group>
<el-menu-item
index=
"/distributor"
@
click=
"routeTo"
>
渠道统计
</el-menu-item>
<el-menu-item
index=
"/distributor"
@
click=
"routeTo"
>
渠道统计
</el-menu-item>
</el-menu-item-group>
</el-submenu>
...
...
@@ -47,12 +46,9 @@
<span>
财务中心
</span>
</
template
>
<el-menu-item-group>
<el-menu-item
index=
"/finance"
@
click=
"routeTo"
>
充值记录
</el-menu-item>
<el-menu-item
index=
"/consume"
@
click=
"routeTo"
>
消费记录
</el-menu-item>
<el-menu-item
index=
"/surplus"
@
click=
"routeTo"
>
余额记录
</el-menu-item>
<el-menu-item
index=
"/finance"
@
click=
"routeTo"
>
充值记录
</el-menu-item>
<el-menu-item
index=
"/consume"
@
click=
"routeTo"
>
消费记录
</el-menu-item>
<el-menu-item
index=
"/surplus"
@
click=
"routeTo"
>
余额记录
</el-menu-item>
</el-menu-item-group>
</el-submenu>
...
...
@@ -61,12 +57,8 @@
<i
class=
'el-icon-info'
></i>
<span>
公告信息
</span>
</
template
>
<el-menu-item
index=
'/releaseInfo'
@
click=
"routeTo"
>
发布信息
</el-menu-item>
<el-menu-item
index=
'/info'
@
click=
"routeTo"
>
过往信息
</el-menu-item>
<el-menu-item
index=
'/releaseInfo'
@
click=
"routeTo"
>
发布信息
</el-menu-item>
<el-menu-item
index=
'/info'
@
click=
"routeTo"
>
过往信息
</el-menu-item>
</el-submenu>
<el-submenu
index=
4
>
...
...
@@ -74,15 +66,9 @@
<i
class=
'el-icon-success'
></i>
<span>
业务审核
</span>
</
template
>
<el-menu-item
index=
'/checkCall'
@
click=
"routeTo"
>
云呼审核
</el-menu-item>
<el-menu-item
index=
'/checkNote'
@
click=
"routeTo"
>
短信审核
</el-menu-item>
<el-menu-item
index=
'/checkUrl'
@
click=
"routeTo"
>
Url审核
</el-menu-item>
<el-menu-item
index=
'/checkCall'
@
click=
"routeTo"
>
云呼审核
</el-menu-item>
<el-menu-item
index=
'/checkNote'
@
click=
"routeTo"
>
短信审核
</el-menu-item>
<el-menu-item
index=
'/checkUrl'
@
click=
"routeTo"
>
Url审核
</el-menu-item>
</el-submenu>
<el-submenu
index=
5
>
...
...
@@ -90,12 +76,8 @@
<i
class=
'el-icon-setting'
></i>
<span>
权限控制
</span>
</
template
>
<el-menu-item
index=
'/account'
@
click=
"routeTo"
>
账户控制
</el-menu-item>
<el-menu-item
index=
'/slot'
@
click=
"routeTo"
>
代码位控制
</el-menu-item>
<el-menu-item
index=
'/account'
@
click=
"routeTo"
>
账户控制
</el-menu-item>
<el-menu-item
index=
'/slot'
@
click=
"routeTo"
>
代码位控制
</el-menu-item>
</el-submenu>
<el-submenu
index=
6
v-if=
' sessionID === "admin" '
>
...
...
@@ -106,12 +88,8 @@
<el-menu-item
index=
'/userPool'
@
click=
"routeTo"
>
用户营销池
</el-menu-item>
<el-menu-item
index=
'/leadPoolTask'
@
click=
"routeTo"
>
导入任务
</el-menu-item>
<el-menu-item
index=
'/exportPoolTask'
@
click=
"routeTo"
>
导出任务
</el-menu-item>
<el-menu-item
index=
'/leadPoolTask'
@
click=
"routeTo"
>
导入任务
</el-menu-item>
<el-menu-item
index=
'/exportPoolTask'
@
click=
"routeTo"
>
导出任务
</el-menu-item>
</el-submenu>
<el-submenu
index=
7
v-if=
' sessionID === "admin" '
>
...
...
@@ -119,9 +97,7 @@
<i
class=
'el-icon-setting'
></i>
<span>
代理商运营账号
</span>
</
template
>
<el-menu-item
index=
'/agent'
@
click=
"routeTo"
>
创建代理商运营账号
</el-menu-item>
<el-menu-item
index=
'/agent'
@
click=
"routeTo"
>
创建代理商运营账号
</el-menu-item>
</el-submenu>
<a
class=
"btn-toggle"
@
click=
"toggle"
><i
...
...
@@ -142,13 +118,15 @@
return
{
isCollapse
:
false
,
sessionID
:
null
,
email
:
null
email
:
null
,
title
:
null
}
},
mounted
()
{
this
.
sessionID
=
sessionStorage
.
getItem
(
'sessionID'
)
this
.
email
=
sessionStorage
.
getItem
(
'email'
)
this
.
getAccount
(
this
.
sessionID
)
this
.
title
=
sessionStorage
.
getItem
(
'title'
)
},
methods
:
{
toggle
()
{
...
...
@@ -156,10 +134,10 @@
},
routeTo
(
item
)
{
this
.
$router
.
push
(
item
.
index
)
this
.
header
=
item
.
TextNode
this
.
title
=
item
.
$slots
.
default
[
0
].
text
sessionStorage
.
setItem
(
'title'
,
this
.
title
)
},
handleCommand
(
command
)
{
console
.
log
(
command
)
if
(
command
===
'exit'
)
{
console
.
log
(
'退出登陆'
)
sessionStorage
.
setItem
(
'sessionID'
,
null
)
...
...
@@ -236,4 +214,16 @@
.content
{
box-sizing
:
content-box
;
}
.title
{
width
:
75%
;
height
:
100%
;
line-height
:
63px
;
text-align
:
center
;
margin
:
0
auto
;
color
:
white
;
font-weight
:
800
;
float
:
left
;
font-size
:
23px
;
letter-spacing
:
1px
;
}
</
style
>
src/components/info.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
公告历史
</el-header>
<div
style=
'margin: 10px 50px'
>
<el-table
:data=
'datas'
border
>
<el-table-column
label=
'发布时间'
prop=
'time'
width=
260
></el-table-column>
<el-table-column
label=
'标题'
prop=
'title'
width=
260
></el-table-column>
<el-table-column
label=
'发布者'
prop=
'releaseMen'
width=
120
></el-table-column>
<el-table-column
label=
'内容'
prop=
'content'
min-width=
800
></el-table-column>
</el-table>
<el-pagination
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"currentPage"
:page-sizes=
"[10, 20, 50, 100, 1000]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
style=
"float: right;margin-top: 15px"
>
</el-pagination>
</div>
</el-container>
<el-main>
<TableTemplate
:url=
'url'
:header=
'dataHeader'
></TableTemplate>
</el-main>
</
template
>
<
script
>
import
{
mapGetters
}
from
'vuex
'
import
TableTemplate
from
'./tableTemplate
'
export
default
{
name
:
'info'
,
components
:
{
TableTemplate
},
data
()
{
return
{
sessionID
:
null
,
datas
:
[],
currentPage
:
1
,
pageSize
:
10
,
total
:
100
}
},
computed
:
{
...
mapGetters
({
sessionID
:
'getSessionID'
})
},
mounted
()
{
this
.
sessionID
=
sessionStorage
.
getItem
(
'sessionID'
)
this
.
getData
(
this
.
currentPage
,
this
.
pageSize
)
},
methods
:
{
handleSizeChange
(
val
)
{
this
.
pageSize
=
val
this
.
getData
(
this
.
currentPage
,
this
.
pageSize
)
},
handleCurrentChange
(
val
)
{
this
.
currentPage
=
val
this
.
getData
(
this
.
currentPage
,
this
.
pageSize
)
},
getData
(
currentPage
,
pageSize
)
{
let
self
=
this
fetch
(
'/api/getInfo'
,
{
method
:
'POST'
,
headers
:
{
'Content-Type'
:
'application/json;charset=UTF-8'
},
body
:
JSON
.
stringify
({
currentPage
:
currentPage
,
pageSize
:
pageSize
,
sessionID
:
this
.
sessionID
})
}).
then
(
res
=>
{
return
res
.
json
()
}).
then
(
data
=>
{
console
.
log
(
data
)
self
.
datas
=
data
.
data
self
.
total
=
data
.
dataTotal
})
url
:
'/api/getInfo'
,
dataHeader
:
{
time
:
'发布时间'
,
title
:
'标题'
,
releaseMen
:
'发布者'
,
content
:
'内容'
},
}
}
}
...
...
src/components/leadPoolTask.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
<h4>
导入任务
</h4>
</el-header>
<el-main>
<el-table
border
:data=
'datas'
>
<el-table-column
label=
'任务编码'
prop=
'taskID'
></el-table-column>
...
...
@@ -13,7 +10,7 @@
<el-table-column
label=
'导入来源公司'
prop=
'fromCompany'
></el-table-column>
</el-table>
</el-main>
</el-container>
</
template
>
<
script
>
...
...
src/components/releaseInfo.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
<h3>
信息发布
</h3>
</el-header>
<el-main
style=
'width: 80%; margin: 20px auto'
>
<el-card
shadow=
'always'
style=
"padding: 20px 40px"
>
<div
class=
'input'
>
<p>
标题:
</p>
<el-input
label=
'标题'
placeholder=
'请输入标题名称'
v-model=
'title'
></el-input>
...
...
@@ -14,19 +12,21 @@
</div>
<div
class=
'input'
>
<p>
内容:
</p>
<el-input
label=
'内容'
placeholder=
'请输入要发布的信息内容'
type=
'textarea'
v-model=
'content'
:autosize=
"
{ minRows:
4, maxRows: 8
}" style='vertical-align: top'>
</el-input>
<el-input
label=
'内容'
placeholder=
'请输入要发布的信息内容'
type=
'textarea'
v-model=
'content'
:autosize=
"
{ minRows:
5, maxRows: 10
}" style='vertical-align: top'>
</el-input>
</div>
<el-button
type=
'primary'
@
click=
'sure()'
style=
'width: 100px;margin: 10px auto'
>
确认发布
</el-button>
</el-card>
</el-main>
</el-container>
</
template
>
<
script
>
import
{
mapGetters
}
from
'vuex'
import
{
mapGetters
,
mapActions
}
from
'vuex'
export
default
{
name
:
'releaseInfo'
,
data
()
{
return
{
url
:
'/api/releaseInfo'
,
sessionID
:
null
,
centerDialogVisible
:
false
,
title
:
''
,
...
...
@@ -43,33 +43,40 @@
})
},
methods
:
{
...
mapActions
({
send
:
'SEND'
}),
sure
()
{
let
self
=
this
let
data
=
{
title
:
this
.
title
,
content
:
this
.
content
,
releaseMen
:
this
.
releaseMen
,
sessionID
:
this
.
sessionID
}
console
.
log
(
data
)
if
(
this
.
title
&&
this
.
content
&&
this
.
releaseMen
)
{
fetch
(
'/api/releaseInfo'
,
{
method
:
'POST'
,
headers
:
{
'Content-Type'
:
'application/json;charset=UTF-8'
},
body
:
JSON
.
stringify
(
data
)
}).
then
(
res
=>
{
return
res
.
json
()
}).
then
(
data
=>
{
console
.
log
(
data
)
if
(
data
.
status
===
200
)
{
self
.
title
=
''
self
.
content
=
''
self
.
releaseMen
=
''
this
.
$alert
(
'消息发送成功'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
callback
:
action
=>
{
this
.
$message
({
showClose
:
true
,
message
:
'信息发布成功'
,
type
:
'success'
})
}
})
}
this
.
send
({
url
:
self
.
url
,
chooes
:
{
title
:
self
.
title
,
content
:
self
.
content
,
releaseMen
:
self
.
releaseMen
,
sessionID
:
self
.
sessionID
},
callback
:
self
.
message
})
// fetch('/api/releaseInfo', {
// method: 'POST',
// headers: {'Content-Type': 'application/json;charset=UTF-8'},
// body: JSON.stringify(data)
// }).then(res => { return res.json() }).then(data => {
// console.log(data)
// if (data.status === 200) {
// self.title = ''
// self.content = ''
// self.releaseMen = ''
// this.$alert('消息发送成功', '提示', {
// confirmButtonText: '确定',
// callback: action => {
// this.$message({
// showClose: true,
// message: '信息发布成功',
// type: 'success'
// })
// }
// })
// }
// })
}
else
{
this
.
$message
({
showClose
:
true
,
...
...
@@ -77,6 +84,21 @@
type
:
'warning'
})
}
},
message
(
err
,
data
)
{
if
(
data
.
status
===
200
)
{
this
.
$message
({
showClose
:
true
,
message
:
data
.
message
,
type
:
'success'
})
}
else
{
this
.
$message
({
showClose
:
true
,
message
:
data
.
message
,
type
:
'error'
})
}
}
}
}
...
...
@@ -87,9 +109,9 @@
margin
:
15px
0
;
}
.input
:nth-child
(
1
)
,
.input
:nth-child
(
2
)
{
width
:
4
0%
;
width
:
5
0%
;
}
.input
:nth-child
(
3
)
{
width
:
6
0%
;
width
:
8
0%
;
}
</
style
>
src/components/slot.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
<h4>
代码位控制
</h4>
</el-header>
<el-main>
<el-row>
<el-select
v-model=
"inputValue"
filterable
placeholder=
"请选择账户名称"
@
change=
'change'
clearable
@
clear=
'clear'
style=
'width: 300px;margin-bottom: 10px'
>
...
...
@@ -55,8 +52,7 @@
:total=
"total"
style=
"float: right;margin-top: 15px"
>
</el-pagination>
</el-main>
<el-dialog
title=
'备案规则'
:visible
.
sync=
'dialogVisiable'
width=
60%
>
<el-dialog
title=
'备案规则'
:visible
.
sync=
'dialogVisiable'
width=
60%
>
<el-radio-group
v-model=
"autoRule.strategy"
@
change=
'getChoose2'
:disabled=
'currentdata.disable'
>
<el-radio
:label=
"'all'"
>
全量备案
</el-radio>
<el-radio
:label=
"'repeat'"
>
重复用户备案
</el-radio>
...
...
@@ -68,7 +64,9 @@
<el-button
type=
"primary"
@
click=
"suerSend()"
:disabled=
'currentdata.disable'
>
确 定
</el-button>
</div>
</el-dialog>
</el-container>
</el-main>
</template>
<
script
>
...
...
src/components/surplus.vue
View file @
9e255061
<
template
>
<el-container>
<el-header><h2>
余额记录
</h2></el-header>
<el-main>
<TableTmp
:header=
"dataHeader"
ref=
'TableTmp'
:url=
'url'
surplus=
'ok'
>
</TableTmp>
<TableTemplate
:header=
"dataHeader"
ref=
'TableTmp'
:url=
'url'
:downBtn=
'true'
:sum=
'true'
></TableTemplate>
</el-main>
</el-container>
</
template
>
...
...
@@ -15,10 +10,10 @@
</
style
>
<
script
>
import
TableT
mp
from
'./tableTmp
'
import
TableT
emplate
from
'./tableTemplate
'
export
default
{
name
:
'surplus'
,
components
:
{
TableT
mp
},
components
:
{
TableT
emplate
},
data
()
{
return
{
url
:
'/api/surplus'
,
...
...
@@ -30,9 +25,6 @@
surplus
:
'余额'
}
}
},
mounted
()
{
this
.
$refs
.
TableTmp
.
change
()
}
}
</
script
>
src/components/tableTemplate.vue
0 → 100644
View file @
9e255061
<
template
>
<div>
<el-row
style=
"margin-bottom:20px"
type=
"flex"
justify=
"end"
:gutter=
"20"
>
<el-col
:span=
"4"
v-if=
"downBtn"
><el-button
type=
"primary"
@
click=
"download"
>
下载当前统计文件
</el-button></el-col>
<el-col
:span=
"4"
v-if=
'sum'
class=
"sum"
>
总计:
{{
sumNumber
}}
</el-col>
<el-col
:span=
"4"
v-if=
"preSum"
class=
"sum"
>
预扣总计:
{{
preSumNumber
}}
</el-col>
<el-col
:span=
"10"
>
<DatePicker
@
timeChange=
'timeChange'
:startTime=
'startTime'
:endTime=
'endTime'
style=
'width:100%'
></DatePicker>
</el-col>
</el-row>
<el-table
:data=
"datas"
border
style=
"width: 100%"
v-loading=
'loading'
>
<el-table-column
label=
'序号'
type=
'index'
width=
50
style=
"text-align: center"
></el-table-column>
<el-table-column
v-for=
"(value, key) in header"
:label=
"value"
:prop=
"key"
></el-table-column>
</el-table>
<el-row>
<Pagination
:pageSize=
'pageSize'
:currentPage=
'currentPage'
:total=
'total'
@
sizeChange=
'sizeChange'
@
currentChange=
'currentChange'
>
</Pagination>
</el-row>
</div>
</
template
>
<
script
>
import
DatePicker
from
'./DatePicker'
import
Pagination
from
'./Pagination'
import
moment
from
'moment'
import
{
mapActions
,
mapGetters
}
from
'vuex'
const
json2xlsx
=
require
(
'../csv/csv'
)
export
default
{
name
:
'tableTemplate'
,
components
:
{
DatePicker
,
Pagination
,},
props
:
[
'header'
,
'url'
,
'downBtn'
,
'sum'
,
'preSum'
],
data
()
{
return
{
datas
:
[],
startTime
:
''
,
endTime
:
''
,
currentPage
:
1
,
pageSize
:
10
,
total
:
1000
,
sumNumber
:
0
,
preSumNumber
:
0
,
loading
:
true
}
},
mounted
()
{
this
.
getTime
()
this
.
getData
({
url
:
this
.
url
,
choose
:
{
startTime
:
this
.
startTime
,
endTime
:
this
.
endTime
,
currentPage
:
this
.
currentPage
,
pageSize
:
this
.
pageSize
,
total
:
this
.
total
},
callback
:
this
.
formatData
})
},
methods
:
{
// 获取数据
...
mapActions
({
getData
:
'GET_DATA'
}),
// 当前页选择
currentChange
(
value
)
{
this
.
currentPage
=
value
this
.
getData
({
url
:
this
.
url
,
choose
:
{
startTime
:
this
.
startTime
,
endTime
:
this
.
endTime
,
currentPage
:
this
.
currentPage
,
pageSize
:
this
.
pageSize
,
total
:
this
.
total
},
callback
:
this
.
formatData
})
},
// 当前页容量选择
sizeChange
(
value
)
{
this
.
pageSize
=
value
this
.
getData
({
url
:
this
.
url
,
choose
:
{
startTime
:
this
.
startTime
,
endTime
:
this
.
endTime
,
currentPage
:
this
.
currentPage
,
pageSize
:
this
.
pageSize
,
total
:
this
.
total
},
callback
:
this
.
formatData
})
},
// 时间选择
timeChange
(
data
)
{
this
.
startTime
=
data
[
0
]
this
.
endTime
=
data
[
1
]
this
.
getData
({
url
:
this
.
url
,
choose
:
{
startTime
:
this
.
startTime
,
endTime
:
this
.
endTime
,
currentPage
:
this
.
currentPage
,
pageSize
:
this
.
pageSize
,
total
:
this
.
total
},
callback
:
this
.
formatData
})
},
// 获取默认时间
getTime
()
{
this
.
endTime
=
moment
()
.
format
(
"YYYY-MM-DD"
)
this
.
startTime
=
moment
()
.
subtract
(
1
,
"days"
)
.
format
(
"YYYY-MM-DD"
)
},
// 数据整理
formatData
(
err
,
data
)
{
this
.
loading
=
false
this
.
datas
=
data
.
datas
this
.
total
=
data
.
total
this
.
sumNumber
=
data
.
financeNumber
||
data
.
consumeTotalNumber
||
data
.
surplusTotal
||
0
this
.
preSumNumber
=
data
.
preTotalNumber
||
0
},
// 下载当前统计
download
()
{
this
.
getData
({
url
:
this
.
url
,
choose
:
{
startTime
:
this
.
startTime
,
endTime
:
this
.
endTime
,
},
callback
:
this
.
downloadData
})
},
// 下载文档整理
downloadData
(
err
,
data
)
{
let
self
=
this
let
[
datas
,
list
,
tHeader
,
tBody
]
=
[
data
.
datas
,
[],
[],
[]]
for
(
let
x
in
self
.
header
)
{
tBody
.
push
(
x
)
tHeader
.
push
(
self
.
header
[
x
])
}
list
.
push
(
tHeader
)
datas
.
forEach
(
x
=>
{
let
row
=
[]
tBody
.
forEach
(
m
=>
{
let
col
=
x
[
m
]
row
.
push
(
col
)
})
list
.
push
(
row
)
})
json2xlsx
.
default
(
list
,
{
sheetName
:
'test'
,
filename
:
'数据下载.xlsx'
})
}
}
}
</
script
>
<
style
>
.sum
{
width
:
100%
;
height
:
100%
;
background-color
:
#409EFF
;
border-radius
:
4px
;
padding
:
8px
10px
;
font-weight
:
700
;
text-align
:
center
;
color
:
white
;
margin-right
:
20px
;
}
</
style
>
src/components/userPool.vue
View file @
9e255061
<
template
>
<el-container>
<el-header>
<h4>
用户营销池
</h4>
</el-header>
<el-main>
<el-row
style=
'margin-bottom: 10px'
>
<el-button
type=
'primary'
style=
'float: left'
@
click=
' inDialogVisible = true'
>
导入任务
</el-button>
...
...
@@ -159,7 +156,7 @@
</span>
</el-dialog>
</el-main>
</el-container>
</template>
<
script
>
...
...
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