Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
aic_duty_strategy
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
yinxiaoling
aic_duty_strategy
Commits
747e9889
Commit
747e9889
authored
May 18, 2020
by
yinxiaoling
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of gitlab.ciopaas.com:yinxiaoling/aic_duty_strategy
parents
45321bf2
53686870
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
657 additions
and
442 deletions
+657
-442
article.js
public/zjtlj/src/api/article.js
+58
-11
AppMain.vue
public/zjtlj/src/layout/components/AppMain.vue
+3
-2
Navbar.vue
public/zjtlj/src/layout/components/Navbar.vue
+2
-2
Logo.vue
public/zjtlj/src/layout/components/Sidebar/Logo.vue
+5
-3
index.vue
public/zjtlj/src/layout/components/TagsView/index.vue
+41
-29
user.js
public/zjtlj/src/store/modules/user.js
+3
-3
index.scss
public/zjtlj/src/styles/index.scss
+40
-1
request.js
public/zjtlj/src/utils/request.js
+1
-1
add.vue
public/zjtlj/src/views/dashboard/add.vue
+241
-153
import-data.vue
public/zjtlj/src/views/dashboard/import-data.vue
+93
-52
index.vue
public/zjtlj/src/views/dashboard/index.vue
+72
-89
index.vue
public/zjtlj/src/views/login/index.vue
+9
-7
add.vue
public/zjtlj/src/views/task-data/add.vue
+37
-36
index.vue
public/zjtlj/src/views/task-data/index.vue
+52
-53
No files found.
public/zjtlj/src/api/article.js
View file @
747e9889
import
request
from
'
@/utils/request
'
//
codes
export
function
fetchCodesList
(
query
)
{
//
策略新建
export
function
addStrategySet
(
data
)
{
return
request
({
url
:
'
/api/codes
'
,
url
:
'
/api/strategySet
'
,
method
:
'
post
'
,
data
})
}
// 策略列表获取
export
function
getStrategySet
(
data
)
{
return
request
({
url
:
'
/api/strategySet
'
,
method
:
'
get
'
,
params
:
query
params
:
data
})
}
export
function
addCodes
(
data
)
{
// 话术流程项目列表
export
function
getProjectsList
(
data
)
{
return
request
({
url
:
'
/api/
codes
'
,
url
:
'
/api/
strategy/getProjectsList
'
,
method
:
'
post
'
,
data
})
}
export
function
editCodes
(
data
)
{
// 主叫号码列表
export
function
getCallNumberList
(
data
)
{
return
request
({
url
:
'
/api/codes/
'
+
data
.
id
,
method
:
'
patch
'
,
url
:
'
/api/strategy/getCallNumberList
'
,
method
:
'
post
'
,
data
})
}
// 子账号列表
export
function
getUsersList
(
data
)
{
return
request
({
url
:
'
/api/strategy/getUsersList
'
,
method
:
'
post
'
,
data
})
}
// 导出模板
export
function
downloadModel
(
query
)
{
window
.
open
(
process
.
env
.
VUE_APP_BASE_API
+
'
/api/strategy/downloadModel?user_sn=
'
+
query
.
user_sn
)
}
// 导入数据excel文件
export
function
importExcelData
(
data
)
{
return
request
({
url
:
'
/api/strategy/importExcelData
'
,
method
:
'
post
'
,
data
})
}
// 任务数据列表
export
function
getStrategyTask
(
query
)
{
return
request
({
url
:
'
/api/strategyTask
'
,
method
:
'
get
'
,
params
:
query
})
}
// 任务数据编辑
export
function
editStrategyTask
(
data
)
{
return
request
({
url
:
`/api/strategyTask/
${
data
.
id
}
`
,
method
:
'
PUT
'
,
data
})
}
export
function
deleteCodes
(
id
)
{
// 策略删除
export
function
deleteStrategySet
(
data
)
{
return
request
({
url
:
'
/api/
codes/
'
+
id
,
url
:
'
/api/
strategySet/
'
+
data
.
strategy_sn
+
'
?user_sn=
'
+
data
.
user_sn
,
method
:
'
delete
'
})
}
...
...
public/zjtlj/src/layout/components/AppMain.vue
View file @
747e9889
...
...
@@ -30,6 +30,7 @@ export default {
width
:
100%
;
position
:
relative
;
overflow
:
hidden
;
background
:
#fff
;
}
.fixed-header
+
.app-main
{
...
...
@@ -41,13 +42,13 @@ export default {
/* 84 = navbar + tags-view = 50 + 34 */
// 84 + pagination
// min-height: calc(100vh - 84px);
height
:
calc
(
100vh
-
8
4px
);
height
:
calc
(
100vh
-
3
4px
);
}
.fixed-header
+
.app-main
{
// padding-top: 84px;
padding-top
:
0
;
margin-top
:
8
4px
;
margin-top
:
9
4px
;
}
}
</
style
>
...
...
public/zjtlj/src/layout/components/Navbar.vue
View file @
747e9889
...
...
@@ -7,7 +7,7 @@
@
toggleClick=
"toggleSideBar"
/>
<
breadcrumb
id=
"breadcrumb-container"
class=
"breadcrumb-container"
/
>
<
!--
<breadcrumb
id=
"breadcrumb-container"
class=
"breadcrumb-container"
/>
--
>
<div
class=
"right-menu"
>
<template
v-if=
"device!=='mobile'"
>
...
...
@@ -75,7 +75,7 @@ export default {
...
mapGetters
([
'
sidebar
'
,
'
avatar
'
,
'
device
'
])
},
created
()
{
let
un
=
session
Storage
.
getItem
(
'
user_name
'
)
let
un
=
local
Storage
.
getItem
(
'
user_name
'
)
this
.
user_name
=
un
?
this
.
$publicTools
.
decrypt
(
un
)
:
''
},
methods
:
{
...
...
public/zjtlj/src/layout/components/Sidebar/Logo.vue
View file @
747e9889
...
...
@@ -2,11 +2,13 @@
<div
class=
"sidebar-logo-container"
:class=
"
{'collapse':collapse}">
<transition
name=
"sidebarLogoFade"
>
<router-link
v-if=
"collapse"
key=
"collapse"
class=
"sidebar-logo-link"
to=
"/"
>
<img
v-if=
"logo"
:src=
"logo"
class=
"sidebar-logo"
/>
<h1
v-else
class=
"sidebar-title"
>
{{
title
}}
</h1>
<!--
<img
v-if=
"logo"
:src=
"logo"
class=
"sidebar-logo"
/>
<h1
v-else
class=
"sidebar-title"
>
{{
title
}}
</h1>
-->
<h1
class=
"sidebar-title"
>
{{
title
}}
</h1>
</router-link>
<router-link
v-else
key=
"expand"
class=
"sidebar-logo-link"
to=
"/"
>
<img
v-if=
"logo"
:src=
"logo"
class=
"sidebar-logo"
/>
<!--
<img
v-if=
"logo"
:src=
"logo"
class=
"sidebar-logo"
/>
<h1
class=
"sidebar-title"
>
{{
title
}}
</h1>
-->
<h1
class=
"sidebar-title"
>
{{
title
}}
</h1>
</router-link>
</transition>
...
...
public/zjtlj/src/layout/components/TagsView/index.vue
View file @
747e9889
...
...
@@ -13,7 +13,11 @@
@contextmenu.prevent.native="openMenu(tag,$event)"
>
{{
tag
.
title
}}
<span
v-if=
"!isAffix(tag)"
class=
"el-icon-close"
@
click.prevent.stop=
"closeSelectedTag(tag)"
/>
<span
v-if=
"!isAffix(tag)"
class=
"el-icon-circle-close"
@
click.prevent.stop=
"closeSelectedTag(tag)"
/>
</router-link>
</scroll-pane>
<ul
v-show=
"visible"
:style=
"
{left:left+'px',top:top+'px'}" class="contextmenu">
...
...
@@ -94,7 +98,7 @@ export default {
return
tags
},
initTags
()
{
const
affixTags
=
this
.
affixTags
=
this
.
filterAffixTags
(
this
.
routes
)
const
affixTags
=
(
this
.
affixTags
=
this
.
filterAffixTags
(
this
.
routes
)
)
for
(
const
tag
of
affixTags
)
{
// Must have tag name
if
(
tag
.
name
)
{
...
...
@@ -135,17 +139,21 @@ export default {
})
},
closeSelectedTag
(
view
)
{
this
.
$store
.
dispatch
(
'
tagsView/delView
'
,
view
).
then
(({
visitedViews
})
=>
{
if
(
this
.
isActive
(
view
))
{
this
.
toLastView
(
visitedViews
,
view
)
}
})
this
.
$store
.
dispatch
(
'
tagsView/delView
'
,
view
)
.
then
(({
visitedViews
})
=>
{
if
(
this
.
isActive
(
view
))
{
this
.
toLastView
(
visitedViews
,
view
)
}
})
},
closeOthersTags
()
{
this
.
$router
.
push
(
this
.
selectedTag
)
this
.
$store
.
dispatch
(
'
tagsView/delOthersViews
'
,
this
.
selectedTag
).
then
(()
=>
{
this
.
moveToCurrentTag
()
})
this
.
$store
.
dispatch
(
'
tagsView/delOthersViews
'
,
this
.
selectedTag
)
.
then
(()
=>
{
this
.
moveToCurrentTag
()
})
},
closeAllTags
(
view
)
{
this
.
$store
.
dispatch
(
'
tagsView/delAllViews
'
).
then
(({
visitedViews
})
=>
{
...
...
@@ -200,7 +208,7 @@ export default {
width
:
100%
;
background
:
#fff
;
border-bottom
:
1px
solid
#d8dce5
;
box-shadow
:
0
1px
3px
0
rgba
(
0
,
0
,
0
,
.12
)
,
0
0
3px
0
rgba
(
0
,
0
,
0
,
.04
);
box-shadow
:
0
1px
3px
0
rgba
(
0
,
0
,
0
,
0
.12
)
,
0
0
3px
0
rgba
(
0
,
0
,
0
,
0
.04
);
.tags-view-wrapper
{
.tags-view-item
{
display
:
inline-block
;
...
...
@@ -208,12 +216,12 @@ export default {
cursor
:
pointer
;
height
:
26px
;
line-height
:
26px
;
border
:
1px
solid
#d8dce5
;
// border: 1px solid #d8dce5;
border-right
:
1px
solid
rgba
(
238
,
238
,
238
,
1
);
color
:
#495060
;
background
:
#fff
;
padding
:
0
8px
;
font-size
:
12px
;
margin-left
:
5px
;
margin-top
:
4px
;
&
:first-of-type
{
margin-left
:
15px
;
...
...
@@ -222,19 +230,23 @@ export default {
margin-right
:
15px
;
}
&
.active
{
background-color
:
#42b983
;
color
:
#fff
;
border-color
:
#42b983
;
&
:
:
before
{
content
:
''
;
background
:
#fff
;
display
:
inline-block
;
width
:
8px
;
height
:
8px
;
border-radius
:
50%
;
position
:
relative
;
margin-right
:
2px
;
}
// background-color: #42b983;
color
:
#3791ff
;
// border-color: #42b983;
border-bottom
:
1px
solid
rgba
(
54
,
148
,
255
,
1
);
// &::before {
// content: '';
// background: #fff;
// display: inline-block;
// width: 8px;
// height: 8px;
// border-radius: 50%;
// position: relative;
// margin-right: 2px;
// }
}
.el-icon-circle-close
{
padding
:
0
5px
;
}
}
}
...
...
@@ -249,7 +261,7 @@ export default {
font-size
:
12px
;
font-weight
:
400
;
color
:
#333
;
box-shadow
:
2px
2px
3px
0
rgba
(
0
,
0
,
0
,
.3
);
box-shadow
:
2px
2px
3px
0
rgba
(
0
,
0
,
0
,
0
.3
);
li
{
margin
:
0
;
padding
:
7px
16px
;
...
...
@@ -272,10 +284,10 @@ export default {
vertical-align
:
2px
;
border-radius
:
50%
;
text-align
:
center
;
transition
:
all
.3s
cubic-bezier
(
.645
,
.045
,
.355
,
1
);
transition
:
all
0
.3s
cubic-bezier
(
0
.645
,
0
.045
,
0
.355
,
1
);
transform-origin
:
100%
50%
;
&
:before
{
transform
:
scale
(
.6
);
transform
:
scale
(
0
.6
);
display
:
inline-block
;
vertical-align
:
-3px
;
}
...
...
public/zjtlj/src/store/modules/user.js
View file @
747e9889
...
...
@@ -66,9 +66,9 @@ const actions = {
username
:
username
.
trim
(),
password
:
password
}).
then
(
data
=>
{
if
(
Object
.
prototype
.
toString
.
call
(
data
.
info
)
===
'
[object Object]
'
&&
Object
.
prototype
.
toString
.
call
(
data
.
info
.
data
)
===
'
[object Object]
'
)
{
commit
(
'
SET_TOKEN
'
,
data
.
info
.
data
.
api_key
)
setToken
(
data
.
info
.
data
.
api_key
)
if
(
Object
.
prototype
.
toString
.
call
(
data
.
info
)
===
'
[object Object]
'
)
{
commit
(
'
SET_TOKEN
'
,
data
.
info
.
api_key
)
setToken
(
data
.
info
.
api_key
)
}
else
{
commit
(
'
SET_TOKEN
'
,
''
)
setToken
(
''
)
...
...
public/zjtlj/src/styles/index.scss
View file @
747e9889
...
...
@@ -221,7 +221,7 @@ aside {
}
.el-drawer__body
{
height
:
calc
(
100%
-
4
0px
);
height
:
calc
(
100%
-
10
0px
);
overflow
:
auto
;
position
:
absolute
;
top
:
40px
;
...
...
@@ -246,3 +246,42 @@ aside {
}
// 抽屉公共样式end
.el-table
thead
{
color
:
#161616
;
tr
{
th
{
background
:
#F5F7FA
;
}
}
}
.el-drawer__header
{
color
:
#161616
;
}
.el-dialog
{
margin-top
:
5%
!
important
;
max-height
:
85%
;
overflow-y
:
scroll
;
}
.el-dialog__header
{
border-bottom
:
1px
solid
rgba
(
228
,
233
,
239
,
1
);
}
.el-dialog__body
{
padding
:
10px
20px
20px
;
}
.el-dialog__title
{
font-size
:
16px
;
color
:
#161616
;
font-weight
:
800
;
}
.el-form-item__label
{
font-weight
:
normal
;
color
:
#6D6F72
;
padding
:
0
!
important
;
}
public/zjtlj/src/utils/request.js
View file @
747e9889
...
...
@@ -49,7 +49,7 @@ service.interceptors.response.use(
duration
:
5000
})
// 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
if
(
res
.
status_code
===
50008
||
res
.
status_code
===
50012
||
res
.
status_code
===
50014
)
{
if
(
res
.
status_code
===
50008
||
res
.
status_code
===
50012
||
res
.
status_code
===
50014
||
(
res
.
status_code
===
401
&&
res
.
info
===
'
登录失效
'
)
)
{
MessageBox
.
confirm
(
'
你已被登出,可以取消继续留在该页面,或者重新登录
'
,
'
确定登出
'
,
{
confirmButtonText
:
'
重新登录
'
,
cancelButtonText
:
'
取消
'
,
...
...
public/zjtlj/src/views/dashboard/add.vue
View file @
747e9889
This diff is collapsed.
Click to expand it.
public/zjtlj/src/views/dashboard/import-data.vue
View file @
747e9889
<
template
>
<div>
<div
class=
"drawer_body_box"
>
<el-form
ref=
"importForm"
:rules=
"rules"
:model=
"temp"
label-position=
"left"
label-width=
"90px"
>
<el-form-item
label=
"文件模板"
prop=
"name"
>
<el-button
size=
"small"
@
click=
"downloadTemplate"
>
下载模板
</el-button>
<span>
请按照模板格式填写数据
</span>
<div>
<el-form
ref=
"importForm"
:model=
"temp"
label-position=
"top"
label-width=
"90px"
>
<el-form-item
label=
"文件模板(请按照模板格式填写数据)"
>
<el-button
size=
"small"
icon=
"el-icon-download"
class=
"down-btn"
@
click=
"downloadTemplate"
>
点击下载模板
</el-button>
</el-form-item>
<el-form-item
label=
"导入文件
"
prop=
"files
"
>
<el-form-item
label=
"导入文件
(文件大小不可超过8MB)"
class=
"import-box
"
>
<!-- “文件大小不可超过8MB”、“请上传格式为以.xlsx或.xls结尾的excel文件” -->
<el-upload
action=
"#"
...
...
@@ -23,10 +21,10 @@
:on-remove=
"handleRemove"
:file-list=
"fileList"
:auto-upload=
"false"
accept=
"
image/jpeg, image/gif, image/png
"
accept=
"
.xls, .xlsx
"
>
<
i
class=
"el-icon-upload"
slot=
"trigger"
></i
>
<
!--
<el-button
slot=
"trigger"
size=
"small"
type=
"primary"
>
选取文件
</el-button>
--
>
<
!--
<i
class=
"el-icon-upload"
slot=
"trigger"
></i>
--
>
<
el-button
slot=
"trigger"
icon=
"el-icon-upload"
class=
"upload-btn"
size=
"small"
>
点击导入文件
</el-button
>
<el-button
v-show=
"0"
style=
"margin-left: 10px;"
...
...
@@ -38,51 +36,54 @@
</el-form-item>
</el-form>
</div>
<div
class=
"drawer__footer text-rt"
>
<el-button
type=
"primary"
@
click=
"saveData(1)"
>
确定
</el-button>
<div
slot=
"footer"
class=
"dialog-footer text-center"
>
<el-button
@
click=
"saveData(0)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"saveData(1)"
>
确定
</el-button>
</div>
<el-dialog
title=
"导入数据结果"
:visible.sync=
"dialogResultVisible"
:append-to-body=
"true"
:destroy-on-close=
"true"
:close-on-click-modal=
"false"
width=
"30%"
:before-close=
"handleResultClose"
>
<div
class=
"result-box"
>
<div>
<i
v-if=
"
num_f
>0"
v-if=
"
failTotal
>0"
class=
"el-icon-warning"
:class=
"[
num_s===0&&num_f
>0?'fail-all-bgc':'fail-bgc']"
:class=
"[
successTotal===0&&failTotal
>0?'fail-all-bgc':'fail-bgc']"
></i>
<i
v-else
class=
"el-icon-success"
></i>
</div>
<div>
成功导入
{{
num_s
}}
个号码,
{{
num_f
}}
个号码导入失败
</div>
<div
v-if=
"
num_f
>0"
>
<div>
成功导入
{{
successTotal
}}
个号码,
{{
failTotal
}}
个号码导入失败
</div>
<div
v-if=
"
failTotal
>0"
>
<span>
失败数据文件:
</span>
<a
class=
"down-txt"
@
click=
"downloadFail"
>
点击下载
</a>
</div>
</div>
<div
slot=
"footer"
class=
"dialog-footer text-center"
>
<el-button
type=
"primary"
@
click=
"handleResultClose"
>
确定
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
// import { fetchCodesList
} from '@/api/article'
import
{
importExcelData
,
downloadModel
}
from
'
@/api/article
'
export
default
{
name
:
'
ImprtData
'
,
props
:
[
'
temp
'
],
data
()
{
return
{
num_s
:
10
,
num_f
:
11
,
failDataFile
:
''
,
successTotal
:
0
,
failTotal
:
0
,
dialogResultVisible
:
false
,
temp
:
{},
fileList
:
[],
dialogFormVisible
:
false
,
rules
:
{}
dialogFormVisible
:
false
}
},
created
()
{},
...
...
@@ -101,12 +102,29 @@ export default {
}
},
downloadFail
()
{
// failDataFile
console
.
log
(
this
)
},
handleResultClose
()
{
handleResultClose
(
va
)
{
this
.
dialogResultVisible
=
false
debugger
if
(
this
.
temp
.
isAddGo
)
{
if
(
va
)
{
this
.
$emit
(
'
addSave
'
,
this
.
fileList
[
0
].
raw
)
}
else
{
this
.
$emit
(
'
addSave
'
)
}
}
else
{
if
(
va
)
{
this
.
$emit
(
'
indexSave
'
,
va
)
}
}
},
downloadTemplate
()
{
downloadModel
({
user_sn
:
this
.
$publicTools
.
decrypt
(
localStorage
.
getItem
(
'
user_sn
'
))
})
},
downloadTemplate
()
{},
addCallback
(
status
)
{},
handleRemove
(
file
,
fileList
)
{
console
.
log
(
file
,
fileList
)
...
...
@@ -121,31 +139,39 @@ export default {
this
.
validateFiles
()
},
submitUpload
()
{
var
form
=
new
FormData
()
form
.
append
(
'
photo
'
,
this
.
fileList
[
0
].
raw
)
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'
Loading
'
,
spinner
:
'
el-icon-loading
'
,
background
:
'
rgba(0, 0, 0, 0.9)
'
})
this
.
$store
.
dispatch
(
'
user/uploadAvatar
'
,
form
)
.
then
(
res
=>
{
console
.
log
(
res
)
loading
.
close
()
this
.
$emit
(
'
save
'
,
1
)
this
.
dialogResultVisible
=
true
})
.
catch
(
err
=>
{
loading
.
close
()
this
.
$message
.
warning
(
err
.
status
)
if
(
this
.
temp
.
isAddGo
)
{
this
.
$emit
(
'
addSave
'
,
this
.
fileList
[
0
].
raw
)
}
else
{
var
form
=
new
FormData
()
form
.
append
(
'
user_sn
'
,
this
.
$publicTools
.
decrypt
(
localStorage
.
getItem
(
'
user_sn
'
))
)
form
.
append
(
'
strategy_sn
'
,
this
.
temp
.
strategy_sn
)
form
.
append
(
'
upload
'
,
this
.
fileList
[
0
].
raw
)
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'
Loading
'
,
spinner
:
'
el-icon-loading
'
,
background
:
'
rgba(0, 0, 0, 0.9)
'
})
importExcelData
(
form
)
.
then
(
res
=>
{
loading
.
close
()
this
.
dialogResultVisible
=
true
this
.
failDataFile
=
res
.
info
.
failDataFile
||
''
this
.
failTotal
=
res
.
info
.
failTotal
||
0
this
.
successTotal
=
res
.
info
.
successTotal
||
0
})
.
catch
(
err
=>
{
loading
.
close
()
this
.
$message
.
warning
(
err
)
})
}
},
handleDownload
()
{},
saveData
(
status
)
{
// console.log(this.fileList)
// 0 cancel/close 1 save dialogStatus/create/update
// 0 cancel/close 1 addSave dialogStatus/create/update
if
(
status
)
{
this
.
$refs
[
'
importForm
'
].
validate
(
valid
=>
{
if
(
!
this
.
fileList
.
length
)
{
...
...
@@ -157,7 +183,8 @@ export default {
}
})
}
else
{
this
.
$emit
(
'
save
'
)
this
.
$emit
(
'
addSave
'
,
0
)
this
.
$emit
(
'
indexSave
'
,
0
)
}
}
}
...
...
@@ -189,4 +216,18 @@ export default {
color
:
#f59a23
;
}
}
.down-btn
,
.upload-btn
{
color
:
#3691ff
;
}
label
{
font-weight
:
normal
;
}
.
import-box
:
:
before
{
content
:
'*'
;
color
:
#ff4949
;
margin-right
:
4px
;
display
:
inline-block
;
}
</
style
>
public/zjtlj/src/views/dashboard/index.vue
View file @
747e9889
<
template
>
<div
class=
"app-container"
>
<div
class=
"filter-container text-rt"
>
<!--
<el-input
clearable
v-model=
"listQuery.name"
placeholder=
"源码名称"
style=
"width: 200px;"
class=
"filter-item"
/>
<el-button
v-waves
class=
"filter-item"
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleFilter"
>
查询
</el-button>
-->
<el-button
class=
"filter-item"
style=
"margin-left: 10px;"
type=
"primary"
icon=
"el-icon-plus"
style=
"margin-left:10px;padding:10px;"
icon=
"el-icon-circle-plus-outline"
@
click=
"handleCreate"
>
新建
</el-button>
></el-button>
</div>
<div
class=
"body-container"
>
<el-table
...
...
@@ -36,37 +20,37 @@
>
<el-table-column
label=
"策略名称"
align=
"center"
>
<template
slot-scope=
"
{row}">
<span>
{{
row
.
name
}}
</span>
<span>
{{
row
.
strategy_
name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"话术流程"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
typeCN
}}
</span>
<span>
{{
row
.
project_name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"导入数据量"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
lang
}}
</span>
<span>
{{
row
.
total
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"外呼日期"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
$moment
(
row
.
created_at
.
date
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
}}
</span>
<span>
{{
row
.
day_type_name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"外呼频率"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
sourc
e
}}
</span>
<span>
{{
row
.
frequency_type_nam
e
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"状态"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
url
}}
</span>
<span>
{{
row
.
disabled_name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
$moment
(
row
.
created_at
.
date
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
}}
</span>
<span>
{{
row
.
created_at
}}
</span>
</
template
>
</el-table-column>
<el-table-column
...
...
@@ -76,30 +60,28 @@
width=
"180"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"{row,$index}"
>
<el-button
type=
"text"
size=
"small"
@
click=
"importData(row)"
>
导入数据
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"goTaskData(row)"
>
任务数据
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"handleDelete(row,$index)"
>
删除
</el-button>
<
template
slot-scope=
"{row}"
>
<el-tooltip
content=
"导入数据"
>
<el-button
size=
"small"
plain
icon=
"el-icon-edit-outline"
@
click=
"importData(row)"
></el-button>
</el-tooltip>
<el-tooltip
content=
"任务数据"
>
<el-button
size=
"small"
plain
icon=
"el-icon-document"
@
click=
"goTaskData(row)"
></el-button>
</el-tooltip>
<el-tooltip
content=
"删除"
>
<el-button
size=
"small"
plain
icon=
"el-icon-delete"
@
click=
"handleDelete(row)"
></el-button>
</el-tooltip>
</
template
>
</el-table-column>
</el-table>
</div>
<pagination
v-show=
"total>0"
:total=
"total"
:page.sync=
"listQuery.page"
:limit.sync=
"listQuery.pageSize"
@
pagination=
"getList"
/>
<el-drawer
<el-dialog
:title=
"textMap[dialogStatus]+'外呼策略'"
:visible.sync=
"dialogFormVisible"
:append-to-body=
"true"
width=
"30%"
:destroy-on-close=
"true"
:wrapperClosable=
"false"
@
close=
"addCallback(0)"
direction=
"rtl"
:close-on-click-modal=
"false"
>
<AddOrEdit
v-if=
"dialogFormVisible"
...
...
@@ -107,65 +89,60 @@
:dialogStatus=
"dialogStatus"
@
save=
"addCallback"
></AddOrEdit>
</el-d
rawer
>
<el-d
rawer
</el-d
ialog
>
<el-d
ialog
title=
"导入数据"
width=
"30%"
:visible.sync=
"importVisible"
:append-to-body=
"true"
:destroy-on-close=
"true"
:wrapperClosable=
"false"
@
close=
"importCallback(0)"
direction=
"rtl"
:close-on-click-modal=
"false"
>
<ImprtData
v-if=
"importVisible"
:temp=
"temp"
:dialogStatus=
"dialogStatus"
@
save=
"importCallback
"
@
indexSave=
"importCallbackIndex
"
></ImprtData>
</el-d
rawer
>
</el-d
ialog
>
</div>
</template>
<
script
>
import
{
fetchCodesList
,
deleteCodes
}
from
'
@/api/article
'
import
{
getStrategySet
,
deleteStrategySet
}
from
'
@/api/article
'
import
waves
from
'
@/directive/waves
'
import
Pagination
from
'
@/components/Pagination
'
import
AddOrEdit
from
'
./add
'
import
ImprtData
from
'
./import-data
'
export
default
{
name
:
'
Dashboard
'
,
components
:
{
Pagination
,
AddOrEdit
,
ImprtData
},
components
:
{
AddOrEdit
,
ImprtData
},
directives
:
{
waves
},
filters
:
{},
data
()
{
return
{
textMap
:
{
update
:
'
编辑
'
,
create
:
'
新
增
'
create
:
'
新
建
'
},
fileList
:
[],
multipleSelection
:
[],
tableKey
:
0
,
list
:
null
,
total
:
0
,
list
:
[],
listLoading
:
true
,
listQuery
:
{
page
:
1
,
pageSize
:
10
},
temp
:
{
name
:
''
,
files
:
''
,
account
:
''
,
phone
:
''
,
dates
:
''
,
rate
:
''
,
strategy_name
:
''
,
call_number
:
''
,
day_type
:
'
0
'
,
frequency_type
:
'
2
'
,
call_time_set
:
''
,
setdate1
:
''
,
setdate2
:
''
,
process
:
''
,
status
:
''
project_sn
:
''
,
disabled
:
''
,
upload
:
''
},
dialogFormVisible
:
false
,
importVisible
:
false
,
...
...
@@ -176,49 +153,44 @@ export default {
this
.
getList
()
},
methods
:
{
addCallback
(
status
)
{
addCallback
()
{
this
.
dialogFormVisible
=
false
if
(
status
)
{
this
.
getList
()
}
this
.
getList
()
},
importCallback
(
status
)
{
importCallbackIndex
()
{
debugger
this
.
importVisible
=
false
if
(
status
)
{
this
.
getList
()
}
this
.
getList
()
},
getList
()
{
this
.
listLoading
=
true
fetchCodesList
(
this
.
listQuery
)
getStrategySet
({
user_sn
:
this
.
$publicTools
.
decrypt
(
localStorage
.
getItem
(
'
user_sn
'
))
})
.
then
(
response
=>
{
this
.
listLoading
=
false
this
.
list
=
Array
.
from
(
response
.
data
)
this
.
total
=
Object
.
prototype
.
toString
.
call
(
response
.
meta
)
===
'
[object Object]
'
?
response
.
meta
.
total
:
this
.
list
.
length
this
.
list
=
Array
.
from
(
response
.
info
)
})
.
catch
(()
=>
{
this
.
listLoading
=
false
})
},
handleFilter
()
{
this
.
listQuery
.
page
=
1
this
.
getList
()
},
resetTemp
()
{
this
.
temp
=
{
name
:
''
,
files
:
''
,
account
:
''
,
phone
:
''
,
dates
:
''
,
rate
:
''
,
strategy_name
:
''
,
call_number
:
''
,
day_type
:
'
0
'
,
frequency_type
:
'
2
'
,
call_time_set
:
''
,
setdate1
:
''
,
setdate2
:
''
,
process
:
''
,
status
:
''
project_sn
:
''
,
disabled
:
''
,
upload
:
''
}
},
handleCreate
()
{
...
...
@@ -244,7 +216,7 @@ export default {
this
.
temp
=
this
.
$publicTools
.
deepClone
(
row
)
// copy obj
this
.
importVisible
=
true
},
handleDelete
(
row
,
index
)
{
handleDelete
(
row
)
{
this
.
$confirm
(
'
确定要删除此条数据吗?
'
,
'
删除提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
...
...
@@ -258,7 +230,10 @@ export default {
spinner
:
'
el-icon-loading
'
,
background
:
'
rgba(0, 0, 0, 0.7)
'
})
deleteCodes
(
row
.
id
)
deleteStrategySet
({
user_sn
:
this
.
$publicTools
.
decrypt
(
localStorage
.
getItem
(
'
user_sn
'
)),
strategy_sn
:
row
.
strategy_sn
||
''
})
.
then
(
res
=>
{
loading
.
close
()
this
.
getList
()
...
...
@@ -280,3 +255,11 @@ export default {
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
table
{
button
{
border
:
none
;
background
:
transparent
;
}
}
</
style
>
public/zjtlj/src/views/login/index.vue
View file @
747e9889
...
...
@@ -448,17 +448,19 @@ export default {
.
dispatch
(
'
user/login
'
,
{
username
,
password
})
.
then
(
data
=>
{
if
(
Object
.
prototype
.
toString
.
call
(
data
.
info
)
===
'
[object Object]
'
&&
Object
.
prototype
.
toString
.
call
(
data
.
info
.
data
)
===
'
[object Object]
'
Object
.
prototype
.
toString
.
call
(
data
.
info
)
===
'
[object Object]
'
)
{
session
Storage
.
setItem
(
local
Storage
.
setItem
(
'
user_name
'
,
this
.
$publicTools
.
encrypt
(
data
.
info
.
data
.
user_name
)
this
.
$publicTools
.
encrypt
(
data
.
info
.
user_name
)
)
localStorage
.
setItem
(
'
user_sn
'
,
this
.
$publicTools
.
encrypt
(
data
.
info
.
user_sn
)
)
}
else
{
sessionStorage
.
setItem
(
'
user_name
'
,
''
)
localStorage
.
setItem
(
'
user_name
'
,
''
)
localStorage
.
setItem
(
'
user_sn
'
,
''
)
}
this
.
$router
.
push
({
path
:
this
.
redirect
||
'
/
'
,
...
...
public/zjtlj/src/views/task-data/add.vue
View file @
747e9889
<
template
>
<div>
<div
class=
"drawer_body_box"
>
<el-form
ref=
"dataForm"
:rules=
"rules"
:model=
"temp"
label-position=
"
left
"
label-width=
"80px"
>
<div>
<el-form
ref=
"dataForm"
:rules=
"rules"
:model=
"temp"
label-position=
"
top
"
label-width=
"80px"
>
<el-form-item
label=
"手机号码"
prop=
"phone"
>
<el-input
type=
"number"
v-model=
"temp.phone"
:disabled=
"dialogStatus==='detail' || temp.
phoneData
"
:disabled=
"dialogStatus==='detail' || temp.
is_created===1
"
clearable
/>
</el-form-item>
<el-form-item
label=
"客户姓名"
prop=
"
user_
name"
>
<el-form-item
label=
"客户姓名"
prop=
"name"
>
<el-input
v-model=
"temp.
user_
name"
v-model=
"temp.name"
maxlength=
"20"
:disabled=
"dialogStatus==='detail' || temp.
phoneData
"
:disabled=
"dialogStatus==='detail' || temp.
is_created===1
"
clearable
/>
</el-form-item>
<el-form-item
label=
"值班日期"
prop=
"d
ate1
"
>
<el-input
v-model=
"temp.d
ate1
"
disabled
clearable
/>
<el-form-item
label=
"值班日期"
prop=
"d
uty_date
"
>
<el-input
v-model=
"temp.d
uty_date
"
disabled
clearable
/>
</el-form-item>
<el-form-item
label=
"外呼
时间"
prop=
"date2
"
>
<el-input
v-model=
"temp.
date2
"
disabled
clearable
/>
<el-form-item
label=
"外呼
日期"
prop=
"call_date
"
>
<el-input
v-model=
"temp.
call_date
"
disabled
clearable
/>
</el-form-item>
<el-form-item
label=
"话术流程"
prop=
"pro
cess
"
>
<el-input
v-model=
"temp.pro
cess
"
disabled
clearable
/>
<el-form-item
label=
"话术流程"
prop=
"pro
ject_name
"
>
<el-input
v-model=
"temp.pro
ject_name
"
disabled
clearable
/>
</el-form-item>
<el-form-item
label=
"
呼叫设置"
prop=
"sets
"
>
<el-form-item
label=
"
外呼时间"
prop=
"call_time
"
>
<el-time-picker
:
disabled=
"dialogStatus==='detail' || temp.phoneData
"
v-model=
"temp.sets
"
:picker-options=
"
{
selectableRange: '00:00:00 - 23:59:59'
}"
:
editable=
"false
"
:disabled=
"dialogStatus==='detail' || temp.is_created===1
"
v-model=
"temp.call_time"
value-format=
"HH:mm:ss"
:picker-options=
"
{selectableRange: '00:00:00 - 23:59:59'
}"
placeholder="请选择呼叫时间点"
>
</el-time-picker>
</el-form-item>
</el-form>
</div>
<div
class=
"drawer__footer text-rt"
>
<el-button
type=
"primary"
@
click=
"saveData(1)"
>
确定
</el-button>
<div
slot=
"footer"
class=
"dialog-footer text-rt"
>
<el-button
@
click=
"saveData(0)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"saveData(1)"
>
确定
</el-button>
</div>
</div>
</
template
>
<
script
>
import
{
edit
Codes
}
from
'
@/api/article
'
import
{
edit
StrategyTask
}
from
'
@/api/article
'
export
default
{
name
:
'
AddOrEdit
'
,
props
:
[
'
dialogStatus
'
,
'
temp
'
],
data
()
{
return
{
sourceOptions
:
[
{
value
:
'
Git
'
,
key
:
'
Git
'
},
{
value
:
'
SVN
'
,
key
:
'
SVN
'
}
],
typeOptions
:
[
{
value
:
1
,
key
:
'
Web端
'
},
{
value
:
2
,
key
:
'
后台代码
'
}
...
...
@@ -66,11 +63,10 @@ export default {
{
required
:
true
,
message
:
'
手机号码必填且不能超过11位字符
'
,
trigger
:
'
blur
'
,
max
:
11
trigger
:
'
blur
'
}
],
sets
:
[
call_time
:
[
{
required
:
true
,
message
:
'
呼叫设置时间必选
'
,
...
...
@@ -80,11 +76,7 @@ export default {
}
}
},
created
()
{
if
(
this
.
dialogStatus
===
'
update
'
)
{
// test
this
.
temp
.
phoneData
=
true
}
},
created
()
{},
methods
:
{
saveData
(
status
)
{
// 0 cancel/close 1 save dialogStatus/create/update
...
...
@@ -92,17 +84,26 @@ export default {
if
(
status
)
{
this
.
$refs
[
'
dataForm
'
].
validate
(
valid
=>
{
if
(
valid
)
{
const
tempData
=
this
.
$publicTools
.
deepClone
(
this
.
temp
)
const
{
name
,
phone
,
call_time
}
=
this
.
temp
const
tempData
=
{
id
:
this
.
temp
.
id
,
user_sn
:
this
.
$publicTools
.
decrypt
(
localStorage
.
getItem
(
'
user_sn
'
)
),
name
:
name
,
phone
:
phone
,
call_time
:
call_time
}
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'
Loading
'
,
spinner
:
'
el-icon-loading
'
,
background
:
'
rgba(0, 0, 0, 0.7)
'
})
edit
Codes
(
tempData
)
edit
StrategyTask
(
tempData
)
.
then
(
res
=>
{
loading
.
close
()
this
.
$emit
(
'
save
'
,
status
)
this
.
$emit
(
'
save
'
)
this
.
$message
({
message
:
Object
.
prototype
.
toString
.
call
(
res
)
===
...
...
public/zjtlj/src/views/task-data/index.vue
View file @
747e9889
<
template
>
<div
class=
"app-container"
>
<div
class=
"filter-container"
>
<el-row
class=
"txt-rt"
>
<el-row>
<div
class=
"dis-ib"
>
<el-input
clearable
...
...
@@ -13,13 +13,8 @@
</div>
<div
class=
"dis-ib"
>
<el-select
v-model=
"listQuery.status"
placeholder=
"请选择处理状态"
clearable
>
<el-option
v-for=
"(item, key) in pushResultData"
:label=
"item"
:key=
"key"
:value=
"key"
>
{{
item
}}
</el-option>
<el-select
v-model=
"listQuery.is_created"
placeholder=
"请选择处理状态"
clearable
>
<el-option
v-for=
"item in createdData"
:label=
"item.k"
:key=
"item.v"
:value=
"item.v"
></el-option>
</el-select>
</div>
...
...
@@ -27,10 +22,10 @@
v-model=
"dates"
type=
"datetimerange"
range-separator=
"至"
start-placeholder=
"
推送
开始日期"
end-placeholder=
"
推送
结束日期"
start-placeholder=
"
选择外呼
开始日期"
end-placeholder=
"
选择外呼
结束日期"
></el-date-picker>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleFilter"
></el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleFilter"
style=
"padding:10px"
></el-button>
</el-row>
</div>
...
...
@@ -44,44 +39,44 @@
highlight-current-row
style=
"width: 100%;"
>
<el-table-column
label=
"客户姓名"
prop=
"id"
align=
"center"
>
<el-table-column
label=
"客户姓名"
align=
"center"
>
<template
slot-scope=
"
{row}">
<span>
{{
row
.
id
}}
</span>
<span>
{{
row
.
name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"手机号码"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
p
roject_nam
e
}}
</span>
<span>
{{
row
.
p
hon
e
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"值班日期"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
version
}}
</span>
<span>
{{
row
.
duty_date
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"外呼日期"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
notes
}}
</span>
<span>
{{
row
.
call_date
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"呼叫时间"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
c
ode_statusCN
}}
</span>
<span>
{{
row
.
c
all_time
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"话术流程"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
sql_statusCN
}}
</span>
<span>
{{
row
.
project_name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"处理状态"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
sql_upload_statusCN
}}
</span>
<span>
{{
row
.
is_created_name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"导入时间"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
$moment
(
row
.
created_at
.
date
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
}}
</span>
<span>
{{
row
.
import_date
}}
</span>
</
template
>
</el-table-column>
<el-table-column
...
...
@@ -92,8 +87,12 @@
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"{row}"
>
<el-button
type=
"text"
size=
"small"
@
click=
"handleDetail(row)"
>
查看
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"handleEdit(row)"
>
编辑
</el-button>
<el-tooltip
content=
"查看"
>
<el-button
size=
"small"
plain
icon=
"el-icon-tickets"
@
click=
"handleDetail(row)"
></el-button>
</el-tooltip>
<el-tooltip
content=
"编辑"
>
<el-button
size=
"small"
plain
icon=
"el-icon-edit-outline"
@
click=
"handleEdit(row)"
></el-button>
</el-tooltip>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -107,14 +106,13 @@
@
pagination=
"getList"
/>
<el-d
rawer
<el-d
ialog
:title=
"textMap[dialogStatus]"
:append-to-body=
"true"
width=
"30%"
:visible.sync=
"dialogFormVisible"
:destroy-on-close=
"true"
:wrapperClosable=
"false"
@
close=
"addCallback(0)"
direction=
"rtl"
:close-on-click-modal=
"false"
>
<AddOrEdit
v-if=
"dialogFormVisible"
...
...
@@ -122,12 +120,12 @@
:temp=
"temp"
@
save=
"addCallback"
></AddOrEdit>
</el-d
rawer
>
</el-d
ialog
>
</div>
</template>
<
script
>
import
{
fetchProjectsList
}
from
'
@/api/article
'
import
{
getStrategyTask
}
from
'
@/api/article
'
import
waves
from
'
@/directive/waves
'
import
Pagination
from
'
@/components/Pagination
'
import
AddOrEdit
from
'
./add
'
...
...
@@ -144,17 +142,21 @@ export default {
detail
:
'
外呼详情
'
,
update
:
'
编辑详情
'
},
pushResultData
:
{
0
:
'
部署中
'
,
1
:
'
部署失败
'
,
2
:
'
部署成功
'
},
createdData
:
[
{
v
:
0
,
k
:
'
未新建
'
},
{
v
:
1
,
k
:
'
已新建
'
}
],
list
:
[],
total
:
0
,
listLoading
:
true
,
listQuery
:
{
user_sn
:
this
.
$publicTools
.
decrypt
(
localStorage
.
getItem
(
'
user_sn
'
)),
page
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
phone
:
''
,
start
Date
:
''
,
endDate
:
''
,
status
:
''
start
ed_at
:
''
,
stoped_at
:
''
,
is_created
:
''
},
temp
:
{},
dialogFormVisible
:
false
,
...
...
@@ -166,33 +168,35 @@ export default {
},
watch
:
{
dates
:
function
(
val
)
{
if
(
Array
.
isArray
(
val
)
&&
val
.
length
===
2
)
{
this
.
listQuery
.
startDate
=
this
.
$moment
(
val
[
0
]).
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
this
.
listQuery
.
endDate
=
this
.
$moment
(
val
[
1
]).
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
if
(
Array
.
isArray
(
val
))
{
if
(
val
.
length
>
0
)
{
this
.
listQuery
.
started_at
=
this
.
$moment
(
val
[
0
]).
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
}
if
(
val
.
length
>
1
)
{
this
.
listQuery
.
stoped_at
=
this
.
$moment
(
val
[
1
]).
format
(
'
YYYY-MM-DD HH:mm:ss
'
)
}
}
else
{
this
.
listQuery
.
start
Date
=
''
this
.
listQuery
.
endDate
=
''
this
.
listQuery
.
start
ed_at
=
''
this
.
listQuery
.
stoped_at
=
''
}
}
},
methods
:
{
addCallback
(
status
)
{
addCallback
()
{
this
.
dialogFormVisible
=
false
if
(
status
)
{
this
.
getList
()
}
this
.
getList
()
},
getList
()
{
// this.$route.query
this
.
listLoading
=
true
fetchProjectsList
(
this
.
listQuery
)
getStrategyTask
(
this
.
listQuery
)
.
then
(
response
=>
{
this
.
listLoading
=
false
this
.
list
=
Array
.
from
(
response
.
data
)
this
.
list
=
Array
.
from
(
response
.
info
)
this
.
total
=
Object
.
prototype
.
toString
.
call
(
response
.
meta
)
===
'
[object Object]
'
?
response
.
meta
.
total
...
...
@@ -227,9 +231,4 @@ export default {
.txt-rt
{
text-align
:
right
;
}
.drawer_body_box
{
.el-form-item
{
margin-bottom
:
0
;
}
}
</
style
>
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