Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
admin-base
Project
Project
Details
Activity
Releases
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
new-sing
admin-base
Commits
2ad1daf2
Commit
2ad1daf2
authored
Aug 22, 2019
by
chenyishuai@singsingenglish.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev'
parents
2cc08fc6
b64254e1
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
647 additions
and
122 deletions
+647
-122
App.vue
src/App.vue
+1
-1
index.vue
src/components/callBack/index.vue
+424
-0
leftMenu.vue
src/components/framework/leftMenu.vue
+1
-1
teacherDesc.vue
src/components/framework/teacherDesc.vue
+35
-30
task.vue
src/components/teacherDetail/task.vue
+4
-4
task1.vue
src/components/teacherDetail/task1.vue
+1
-1
task2.vue
src/components/teacherDetail/task2.vue
+1
-1
task3.vue
src/components/teacherDetail/task3.vue
+2
-2
index.vue
src/components/user/index.vue
+31
-27
addressdialog.vue
src/components/userDetail/addressdialog.vue
+1
-1
index.vue
src/components/userDetail/index.vue
+72
-49
index.js
src/router/index.js
+2
-2
api.js
src/service/api.js
+22
-1
index.js
src/service/index.js
+2
-2
wordbook.js
src/util/wordbook.js
+48
-0
No files found.
src/App.vue
View file @
2ad1daf2
...
...
@@ -16,7 +16,7 @@
// 权限验证 动态路由
if
(
window
.
location
.
href
.
indexOf
(
"login"
)
<
0
)
{
let
permission
=
this
.
$store
.
state
.
progressList
;
console
.
log
(
this
.
$store
.
state
);
//
console.log(this.$store.state);
let
menuList
=
[];
this
.
$router
.
options
.
routes
[
0
].
children
=
[];
let
routerUserDetail
=
{
...
...
src/components/callBack/index.vue
0 → 100644
View file @
2ad1daf2
This diff is collapsed.
Click to expand it.
src/components/framework/leftMenu.vue
View file @
2ad1daf2
...
...
@@ -38,7 +38,7 @@ export default {
};
},
mounted
()
{
console
.
log
(
this
.
menuList
);
//
console.log(this.menuList);
},
methods
:
{
changeMenuType
:
function
()
{
...
...
src/components/framework/teacherDesc.vue
View file @
2ad1daf2
...
...
@@ -12,35 +12,29 @@
<el-button
size=
"mini"
@
click=
"editComment(row.id)"
>
新增话术记录
</el-button>
<el-dialog
append-to-body
:visible
.
sync=
"descDialog.show"
title=
"沟通情况列表"
width=
"75%"
>
<el-form
label-width=
"90px"
>
<call-back
:callbackAdd=
"true"
:callbackObj=
"callbackObj"
></call-back>
<!--
<el-form
label-width=
"90px"
>
<el-form-item>
<el-button
style=
"float: right"
type=
"primary"
plain
@
click=
"editComment(descDialog.id)"
>
添加沟通情况
</el-button>
</el-form-item>
</el-form>
<el-table
:data=
"descDialog.descList"
style=
"width: 100%"
>
<el-table-column
label=
"用户"
className=
"f-c"
width=
"150"
>
<el-table
:data=
"descDialog.descList"
>
<el-table-column
label=
"用户"
className=
"f-c"
width=
"150"
>
<template
slot-scope=
"scope"
v-if=
"descDialog.user_info"
>
<img
:src=
"descDialog.user_info.avatar"
style=
"width: 40px;height: 40px;border-radius: 50px"
>
{{
descDialog
.
user_info
.
nickname
}}
(ID:
{{
descDialog
.
user_info
.
user_id
}}
)
</
template
>
</el-table-column>
<el-table-column
prop=
"desc"
label=
"沟通情况"
>
</el-table-column>
<el-table-column
prop=
"type"
label=
"类型"
width=
"80px"
>
<el-table-column
prop=
"desc"
label=
"沟通情况"
></el-table-column>
<el-table-column
prop=
"type"
label=
"类型"
width=
"80px"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
type
===
0
?
'备注'
:
scope
.
row
.
type
===
1
?
'沟通话术'
:
'召回话术'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"reply_content"
label=
"用户回复"
>
<el-table-column
prop=
"reply_content"
label=
"用户回复"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.reply_content"
>
{{
scope
.
row
.
reply_content
}}
...
...
@@ -51,17 +45,13 @@
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"operator"
label=
"联系人"
>
</el-table-column>
<el-table-column
prop=
"created_at"
label=
"记录事件"
>
</el-table-column>
</el-table>
<el-table-column
prop=
"operator"
label=
"联系人"
></el-table-column>
<el-table-column
prop=
"created_at"
label=
"记录事件"
></el-table-column>
</el-table>
-->
</el-dialog>
<el-dialog
append-to-body
:visible
.
sync=
"newDialog.show"
center
title=
"添加沟通情况"
>
<!--<el-dialog append-to-body :visible.sync="newDialog.show" center title="添加沟通情况">
<el-form label-width="120px" size="mini">
<el-form-item label="类型" v-if="typeFlag">
<el-select v-model="newDialog.type" placeholder="类型">
...
...
@@ -87,22 +77,29 @@
<el-button @click="newDialog.show = false">取 消</el-button>
<el-button type="primary" @click="submitDesc()">确 定</el-button>
</span>
</el-dialog>
</el-dialog>-->
</div>
</template>
<
script
>
import
{
addPeriodsClassUserDescApi
,
getUserDescListApi
,
editUserReplyApi
}
from
"../../service/api"
;
import
CallBack
from
'@/components/callBack/index'
;
export
default
{
name
:
"teacherDesc"
,
props
:[
'row'
,
'descType'
,
'typeFlag'
'typeFlag'
,
'teacherId'
],
data
(){
return
{
callbackObj
:
{
id
:
''
,
detail
:
{}
},
descDialog
:{
show
:
false
,
id
:
''
,
...
...
@@ -119,6 +116,7 @@
}
}
},
components
:
{
CallBack
},
methods
:{
subReply
(
data
){
let
json
=
{}
...
...
@@ -142,10 +140,17 @@
nickname
:
data
.
nickname
,
user_id
:
data
.
user_id
,
};
this
.
getUserDescList
()
// this.getUserDescList();
this
.
callbackObj
.
id
=
data
.
user_id
;
this
.
callbackObj
.
teacher_id
=
this
.
teacherId
;
this
.
callbackObj
.
detail
.
birthday
=
data
.
birthday
;
this
.
callbackObj
.
detail
.
user_id
=
data
.
user_id
;
this
.
callbackObj
.
detail
.
nickname
=
data
.
nickname
;
this
.
callbackObj
.
detail
.
mobile
=
data
.
mobile
;
this
.
callbackObj
.
detail
.
baby_name
=
data
.
baby_name
;
},
getUserDescList
(){
getUserDescListApi
(
this
.
row
.
id
,{
limit
:
1000
}).
then
(
res
=>
{
getUserDescListApi
(
this
.
row
.
id
,{
limit
:
1000
}).
then
(
res
=>
{
this
.
descDialog
.
descList
=
res
.
list
})
},
...
...
src/components/teacherDetail/task.vue
View file @
2ad1daf2
...
...
@@ -123,7 +123,7 @@
min-width=
"260"
label=
"沟通情况"
>
<
template
slot-scope=
"scope"
>
<teacher-desc
:row=
"scope.row"
:descType=
"2"
@
onSuccess=
"refDesc3"
></teacher-desc>
<teacher-desc
:
teacherId=
"id"
:
row=
"scope.row"
:descType=
"2"
@
onSuccess=
"refDesc3"
></teacher-desc>
</
template
>
</el-table-column>
<el-table-column
...
...
@@ -244,7 +244,7 @@
min
-
width
=
"160"
label
=
"沟通情况"
>
<
template
slot
-
scope
=
"scope"
>
<
teacher
-
desc
:
row
=
"scope.row"
:
descType
=
"1"
@
onSuccess
=
"refDesc2"
><
/teacher-desc
>
<
teacher
-
desc
:
teacherId
=
"id"
:
row
=
"scope.row"
:
descType
=
"1"
@
onSuccess
=
"refDesc2"
><
/teacher-desc
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
...
...
@@ -356,7 +356,7 @@
<
el
-
table
-
column
label
=
"沟通情况"
>
<
template
slot
-
scope
=
"scope"
>
<
teacher
-
desc
:
row
=
"scope.row"
:
descType
=
"1"
@
onSuccess
=
"searchPage"
><
/teacher-desc
>
<
teacher
-
desc
:
teacherId
=
"id"
:
row
=
"scope.row"
:
descType
=
"1"
@
onSuccess
=
"searchPage"
><
/teacher-desc
>
<
/template
>
<
/el-table-column
>
<
/el-table
>
...
...
@@ -387,7 +387,7 @@
<
el
-
table
-
column
label
=
"沟通情况"
>
<
template
slot
-
scope
=
"scope"
>
<
teacher
-
desc
:
row
=
"scope.row"
:
descType
=
"1"
@
onSuccess
=
"getTask5"
><
/teacher-desc
>
<
teacher
-
desc
:
teacherId
=
"id"
:
row
=
"scope.row"
:
descType
=
"1"
@
onSuccess
=
"getTask5"
><
/teacher-desc
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
...
...
src/components/teacherDetail/task1.vue
View file @
2ad1daf2
...
...
@@ -385,7 +385,7 @@
</el-table-column>
<el-table-column
prop=
"desc"
label=
"沟通情况"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<teacher-desc
:row=
"scope.row"
:descType=
"2"
@
onSuccess=
"refDesc1"
></teacher-desc>
<teacher-desc
:
teacherId=
"teacherId"
:
row=
"scope.row"
:descType=
"2"
@
onSuccess=
"refDesc1"
></teacher-desc>
</
template
>
</el-table-column>
<el-table-column
prop=
"created_at"
label=
"入课时间"
min-width=
"140px"
align=
"center"
sortable
></el-table-column>
...
...
src/components/teacherDetail/task2.vue
View file @
2ad1daf2
...
...
@@ -48,7 +48,7 @@
min-width=
"160"
label=
"沟通情况"
>
<
template
slot-scope=
"scope"
>
<teacher-desc
:row=
"scope.row"
:descType=
"1"
@
onSuccess=
"refDesc2"
></teacher-desc>
<teacher-desc
:
teacherId=
"teacherId"
:
row=
"scope.row"
:descType=
"1"
@
onSuccess=
"refDesc2"
></teacher-desc>
</
template
>
</el-table-column>
<el-table-column
...
...
src/components/teacherDetail/task3.vue
View file @
2ad1daf2
...
...
@@ -108,7 +108,7 @@
min-width=
"160"
label=
"沟通情况"
>
<
template
slot-scope=
"scope"
>
<teacher-desc
:row=
"scope.row"
:descType=
"2"
@
onSuccess=
"refDesc3"
></teacher-desc>
<teacher-desc
:
teacherId=
"teacherId"
:
row=
"scope.row"
:descType=
"2"
@
onSuccess=
"refDesc3"
></teacher-desc>
</
template
>
</el-table-column>
<el-table-column
...
...
@@ -165,7 +165,7 @@
min-width=
"160"
label=
"沟通情况"
>
<
template
slot-scope=
"scope"
>
<teacher-desc
:row=
"scope.row"
:descType=
"2"
@
onSuccess=
"refDesc4"
></teacher-desc>
<teacher-desc
:
teacherId=
"teacherId"
:
row=
"scope.row"
:descType=
"2"
@
onSuccess=
"refDesc4"
></teacher-desc>
</
template
>
</el-table-column>
<el-table-column
...
...
src/components/user/index.vue
View file @
2ad1daf2
<
template
>
<div
class=
"user"
v-loading=
"loading"
>
<el-form
ref=
"searchFrom"
:model=
"searchFrom"
label-width=
"80px"
inline
>
<el-form-item
label=
"ID"
>
<el-input
v-model=
"searchFrom.userId"
></el-input>
</el-form-item>
<el-form-item
label=
"昵称"
>
<el-input
v-model=
"searchFrom.nickName"
></el-input>
</el-form-item>
<el-form-item
label=
"电话"
>
<el-input
v-model=
"searchFrom.mobile"
></el-input>
</el-form-item>
<el-form-item
label=
"等级"
>
<el-input
v-model=
"searchFrom.level"
></el-input>
</el-form-item>
<!--
<el-form-item
label=
"标签"
>
<el-cascader
style=
"width: 320px"
placeholder=
"选择标签"
clearable
@
change=
"tagChange"
:options=
"options"
:props=
"
{ multiple: true, checkStrictly: true }">
</el-cascader>
</el-form-item>
-->
<el-form-item>
<div
class=
"flexRow"
>
<el-button
type=
"primary"
plain
@
click=
"getUser"
>
搜索
</el-button>
<!--
<el-button
type=
"success"
plain
@
click=
"syncUser"
>
同步最新数据
</el-button>
-->
</div>
</el-form-item>
</el-form>
<div
class=
"admin-refresh"
v-loading=
"loading"
>
<div
class=
"section-search"
>
<el-form
ref=
"searchFrom"
:model=
"searchFrom"
label-width=
"80px"
inline
>
<el-form-item>
<el-input
v-model=
"searchFrom.userId"
placeholder=
"ID"
clearable
@
change=
"getUser"
></el-input>
</el-form-item>
<el-form-item>
<el-input
v-model=
"searchFrom.nickName"
placeholder=
"昵称"
clearable
@
change=
"getUser"
></el-input>
</el-form-item>
<el-form-item>
<el-input
v-model=
"searchFrom.mobile"
placeholder=
"电话"
clearable
@
change=
"getUser"
></el-input>
</el-form-item>
<el-form-item>
<el-input
v-model=
"searchFrom.level"
placeholder=
"等级"
clearable
@
change=
"getUser"
></el-input>
</el-form-item>
<!--
<el-form-item
label=
"标签"
>
<el-cascader
style=
"width: 320px"
placeholder=
"选择标签"
clearable
@
change=
"tagChange"
:options=
"options"
:props=
"
{ multiple: true, checkStrictly: true }">
</el-cascader>
</el-form-item>
-->
<el-form-item>
<div
class=
"flexRow"
>
<el-button
type=
"primary"
plain
@
click=
"getUser"
>
搜索
</el-button>
<!--
<el-button
type=
"success"
plain
@
click=
"syncUser"
>
同步最新数据
</el-button>
-->
</div>
</el-form-item>
</el-form>
</div>
<el-table
:data=
"userList"
style=
"width: 100%"
>
...
...
@@ -157,7 +160,8 @@
teacherDialog
},
mounted
()
{
this
.
getUser
()
this
.
$route
.
query
.
id
?
this
.
searchFrom
.
userId
=
this
.
$route
.
query
.
id
:
''
;
this
.
getUser
();
},
methods
:
{
userTransfer
(
row
)
{
...
...
src/components/userDetail/addressdialog.vue
View file @
2ad1daf2
...
...
@@ -104,7 +104,7 @@ import AddressArray from '../framework/address-picker/addr'
vueAddress
},
mounted
(){
console
.
log
(
this
.
dialogObj
)
//
console.log(this.dialogObj)
}
}
</
script
>
...
...
src/components/userDetail/index.vue
View file @
2ad1daf2
<
template
>
<div
class=
"user"
>
<div
class=
"box"
>
<el-card
class=
"user-card"
>
<div
class=
"card-content"
>
<div
class=
"text item"
>
<a
:href=
"detail.avatar"
target=
"_blank"
>
<img
:src=
"detail.avatar"
/>
</a>
</div>
<div
class=
"text item"
>
<div>
<label>
用户:
</label>
{{
detail
.
nickname
}}
(ID:
{{
id
}}
)
</div>
<div>
<label>
tel:
</label>
{{
detail
.
mobile
}}
</div>
<div>
<label>
生日:
</label>
{{
detail
.
birthday
}}
</div>
<div>
<label>
注册时间:
</label>
{{
detail
.
created_at
}}
<div>
<el-row
:gutter=
"20"
style=
"margin-bottom: 20px;"
>
<el-col
:span=
"12"
>
<el-card
class=
"user-card"
>
<div
class=
"card-content"
>
<div
class=
"text item"
>
<a
:href=
"detail.avatar"
target=
"_blank"
>
<img
:src=
"detail.avatar"
/>
</a>
</div>
<div>
<label>
最后登录:
</label>
{{
detail
.
last_login_at
}}
<div
class=
"text item"
>
<div>
<label>
用户:
</label>
{{
detail
.
nickname
}}
(ID:
{{
id
}}
)
</div>
<div>
<label>
tel:
</label>
{{
detail
.
mobile
}}
</div>
<div>
<label>
生日:
</label>
{{
detail
.
birthday
}}
</div>
<div>
<label>
注册时间:
</label>
{{
detail
.
created_at
}}
</div>
<div>
<label>
最后登录:
</label>
{{
detail
.
last_login_at
}}
</div>
</div>
</div>
</div>
</el-card>
<el-card
class=
"user-card"
>
<div
class=
"card-content"
v-if=
"subDetail.nickname"
>
<div
class=
"text item"
>
<a
:href=
"subDetail.avatar"
target=
"_blank"
>
<img
:src=
"subDetail.avatar"
/>
</a>
</div>
<div
class=
"text item"
>
<div>
<label>
用户:
</label>
{{
subDetail
.
nickname
}}
(ID:
{{
subDetail
.
user_id
}}
)
</div>
<div>
<label>
tel:
</label>
{{
subDetail
.
mobile
}}
</el-card>
</el-col>
<el-col
:span=
"12"
>
<el-card
class=
"user-card"
>
<div
style=
"min-height: 150px"
>
<div
class=
"card-content"
v-if=
"subDetail.nickname"
>
<div
class=
"text item"
>
<a
:href=
"subDetail.avatar"
target=
"_blank"
>
<img
:src=
"subDetail.avatar"
/>
</a>
</div>
<div
class=
"text item"
>
<div>
<label>
用户:
</label>
{{
subDetail
.
nickname
}}
(ID:
{{
subDetail
.
user_id
}}
)
</div>
<div>
<label>
tel:
</label>
{{
subDetail
.
mobile
}}
</div>
</div>
</div>
<p
class=
"fl"
v-if=
"!subDetail.nickname"
style=
"clear:both;"
>
(暂无子账户)
</p>
<p
class=
"fl"
v-if=
"subDetail.nickname"
style=
"clear:both;"
>
(子账户)
</p>
</div>
</
div
>
<p
class=
"fl"
v-if=
"!subDetail.nickname"
style=
"clear:both;"
>
(暂无子账户)
</p
>
<p
class=
"fl"
v-if=
"subDetail.nickname"
style=
"clear:both;"
>
(子账户)
</p
>
</el-card>
<
/div
>
</
el-card
>
</el-col
>
</el-row
>
<
!--
<el-tabs
type=
"border-card"
v-model=
"tabs"
>
--
>
<el-tabs
type=
"border-card"
v-model=
"tabs"
>
<el-tab-pane
label=
"回访信息"
name=
"callback"
>
<call-back
:callbackObj=
"callbackObj"
></call-back>
</el-tab-pane>
<el-tab-pane
label=
"期数列表"
name=
"periods"
>
<el-table
@
expand-change=
"changeRow"
:data=
"periodList"
>
<el-table-column
type=
"expand"
>
...
...
@@ -513,6 +525,7 @@
import
{
INVITETYPE
,
ORDERSTATUS
,
BUYTYPE
,
USERSTATUSFORMATER
}
from
"../../util/wordbook"
;
import
teacherDialog
from
'./dialog'
import
UserList
from
'../class/userList'
import
CallBack
from
'@/components/callBack/index'
import
sourceByDateDialog
from
'../teacherDetail/sourceByDateDialog'
import
AddressArray
from
"../framework/address-picker/addr"
;
...
...
@@ -520,6 +533,10 @@
name
:
"index"
,
data
()
{
return
{
callbackObj
:
{
id
:
''
,
detail
:
{
}
}
,
userList
:
[],
yunjiList
:
[],
addressList
:
[],
...
...
@@ -532,7 +549,8 @@
show
:
false
,
out_trade_no
:
''
}
,
tabs
:
'periods'
,
//tabs: 'periods',
tabs
:
'callback'
,
couponDetail
:
{
show
:
false
,
order_coupon_id
:
''
...
...
@@ -621,13 +639,17 @@
sourceDialog
,
couponDialog
,
sourceByDateDialog
,
addressDialogC
addressDialogC
,
CallBack
}
,
props
:
[
'parentDetail'
],
moun
ted
()
{
crea
ted
()
{
this
.
id
=
this
.
parentDetail
?
this
.
parentDetail
.
id
:
this
.
$route
.
params
.
id
;
this
.
callbackObj
.
id
=
this
.
id
;
}
,
mounted
()
{
this
.
getDetail
();
}
,
watch
:
{
...
...
@@ -862,6 +884,7 @@
if
(
!
this
.
id
)
return
;
getUserDetailApi
(
this
.
id
).
then
(
res
=>
{
this
.
detail
=
res
;
this
.
callbackObj
.
detail
=
res
;
// 用户的所有数据
if
(
res
.
periods_list
)
{
this
.
periodList
=
res
.
periods_list
}
...
...
@@ -1034,9 +1057,9 @@
}
.
user
-
card
{
margin
:
10
px
;
width
:
600
px
;
padding
:
20
px
;
/*margin: 10px;*/
/*width: 600px;*/
/*padding: 20px;*/
// display: flex;
.
text
.
item
{
line
-
height
:
30
px
;
...
...
src/router/index.js
View file @
2ad1daf2
...
...
@@ -69,7 +69,7 @@ router.beforeEach((to,from,next)=> {
}
}
store
.
state
.
nowTab
=
to
.
name
;
console
.
log
(
to
)
//
console.log(to)
if
(
to
.
matched
.
length
>
1
&&
to
.
name
!==
'first'
){
let
thisMenu
;
for
(
let
i
=
0
;
i
<
store
.
state
.
menuList
.
length
;
i
++
){
...
...
@@ -101,7 +101,7 @@ router.beforeEach((to,from,next)=> {
store
.
dispatch
(
'classManageUnlimited'
,
to
.
meta
.
classManageUnlimited
)
store
.
dispatch
(
'classTakeUnlimited'
,
to
.
meta
.
classTakeUnlimited
)
store
.
dispatch
(
'exportFinish'
,
to
.
meta
.
exportFinish
)
console
.
log
(
to
.
meta
)
//
console.log(to.meta)
if
(
to
.
name
===
'userDetail'
){
let
list
=
JSON
.
parse
(
localStorage
.
getItem
(
'permission'
))
let
readonly
=
list
.
find
(
i
=>
{
...
...
src/service/api.js
View file @
2ad1daf2
...
...
@@ -62,6 +62,27 @@ const postUserTransferUrl = `${_baseUrl}api/admin/user/data/transfer`;
export
const
postUserTransferApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$post
(
postUserTransferUrl
,
json
)
};
// 获取回访信息
export
const
getCallBackApi
=
function
(
json
)
{
console
.
log
(
json
,
9001
)
return
Vue
.
prototype
.
$fetch
(
`
${
_baseUrl
}
api/admin/user/visit/
${
json
.
user_id
}
`
,
json
)
};
// 添加回访信息
export
const
postCallBackApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$post
(
`
${
_baseUrl
}
api/admin/user/visit/
${
json
.
user_id
}
/
${
json
.
teacher_id
}
`
,
json
)
};
// 获取用户标签
export
const
getUserTagApi
=
function
(
id
)
{
return
Vue
.
prototype
.
$fetch
(
`
${
_baseUrl
}
api/admin/user/label/
${
id
}
`
)
};
// 用户添加标签
export
const
postUserTagApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$post
(
`
${
_baseUrl
}
api/admin/user/bind/label`
,
json
)
};
// 删除用户标签
export
const
delUserTagApi
=
function
(
id
)
{
return
Vue
.
prototype
.
$del
(
`
${
_baseUrl
}
api/admin/user/label/
${
id
}
`
)
};
//获取教师列表
const
getTeacherListUrl
=
`
${
_baseUrl
}
api/admin/teacher/list`
;
export
const
getTeacherListApi
=
function
(
json
)
{
...
...
@@ -1064,7 +1085,7 @@ const updateContactUrl = `/api/admin/other/order/user/status`;
export
const
updateContactApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$put
(
`
${
updateContactUrl
}
`
,
json
)
};
// 外部渠道批量指派订单老师
// 外部渠道批量指派订单老师
api/admin/user/label/{id}
const
adsTeacherUrl
=
`/api/admin/ads/teacher/`
;
export
const
adsTeacherApi
=
function
(
id
,
json
)
{
return
Vue
.
prototype
.
$put
(
`
${
adsTeacherUrl
}${
id
}
`
,
json
)
...
...
src/service/index.js
View file @
2ad1daf2
...
...
@@ -79,8 +79,7 @@ axios.interceptors.request.use(
if
(
process
.
env
.
NODE_ENV
===
'development'
){
config
.
data
.
special_token
=
"changchangenglish"
;
}
console
.
log
(
54
)
console
.
log
(
JSON
.
stringify
(
json2
))
// console.log(JSON.stringify(json2))
config
.
data
.
param_token
=
md5
(
JSON
.
stringify
(
json2
));
}
return
config
;
...
...
@@ -240,6 +239,7 @@ export function fetch(url,params={}){
.
catch
(
err
=>
{
// debugger
reject
(
err
);
console
.
log
(
err
);
let
message
=
'请求失败!请检查网络'
;
if
(
err
.
response
)
message
=
err
.
response
.
data
.
message
;
Vue
.
prototype
.
$msgbox
({
...
...
src/util/wordbook.js
View file @
2ad1daf2
...
...
@@ -220,3 +220,51 @@ export const LogisticsStatus = {
2
:
'已签收'
,
3
:
'异常'
};
export
const
CALLBACK_METHOD
=
[{
label
:
'电话接通'
,
value
:
1
},
{
label
:
'电话未接通'
,
value
:
2
},
{
label
:
'微信沟通'
,
value
:
3
},
{
label
:
'微信留言'
,
value
:
4
},
{
label
:
'备注'
,
value
:
5
}];
export
const
CALLBACK_TYPE
=
[{
label
:
'开课回访'
,
value
:
1
},
{
label
:
'常规回访'
,
value
:
2
},
{
label
:
'通知'
,
value
:
3
},
{
label
:
'信息变更'
,
value
:
4
},
{
label
:
'服务评价'
,
value
:
5
}];
export
const
CALLBACK_INTENTION
=
[{
label
:
'低意向'
,
value
:
1
},
{
label
:
'中意向'
,
value
:
2
},
{
label
:
'高意向'
,
value
:
3
},
{
label
:
'不跟踪'
,
value
:
4
}];
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