Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
horse
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
向伟
horse
Commits
5a14069d
Commit
5a14069d
authored
Dec 01, 2021
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改文件名
parent
2d0b6e60
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
757 additions
and
668 deletions
+757
-668
customer.ts
src/api/customer.ts
+55
-166
customer2.ts
src/api/customer2.ts
+0
-126
customerSet.ts
src/api/customerSet.ts
+237
-0
customRight.vue
src/components/common/customRight.vue
+8
-8
departmentStaff.vue
src/components/common/departmentStaff.vue
+252
-268
fileUpload.vue
src/components/common/fileUpload.vue
+2
-2
addfield.vue
src/components/customer/addfield.vue
+2
-2
label-group.vue
src/components/customer/label-group.vue
+2
-2
request-group.vue
src/components/customer/request-group.vue
+3
-3
clueModule.ts
src/module/customer/clueModule.ts
+2
-2
customerModule.ts
src/module/customer/customerModule.ts
+5
-5
editRuleModule.ts
src/module/editor/editRuleModule.ts
+4
-4
CustomerOperation.vue
...stomerManage/customerSet/components/CustomerOperation.vue
+149
-43
clueRule.vue
src/pages/customerManage/customerSet/components/clueRule.vue
+5
-5
customerField.vue
...s/customerManage/customerSet/components/customerField.vue
+8
-8
customerPhase.vue
...s/customerManage/customerSet/components/customerPhase.vue
+3
-3
customerlabel.vue
...s/customerManage/customerSet/components/customerlabel.vue
+4
-4
customerSetup.vue
src/pages/customerManage/customerSet/customerSetup.vue
+0
-0
createStageRange.vue
src/pages/editor/createStageRange.vue
+6
-6
manageStageRange.vue
src/pages/editor/manageStageRange.vue
+5
-5
routes.ts
src/router/routes.ts
+5
-6
No files found.
src/api/customer.ts
View file @
5a14069d
...
...
@@ -4,18 +4,35 @@
import
{
HttpResponse
}
from
'@/@types'
import
Axios
from
'./axios'
/**
* @interface loginParams -登录参数
* @property {string} grant_type -授权类型
* @property {string} email -邮箱
* @property {string} password -用户密码
*/
interface
msg
{
Enable
:
number
}
interface
IdName
{
Id
:
number
Name
:
string
interface
CutomerParams
{
PageIndex
:
number
,
PageSize
:
number
,
pageCount
:
number
,
CorpName
:
string
,
//企业名称
CustomerName
:
string
,
//备注名
WeChatName
:
string
,
//昵称
CustomerMobile
:
string
,
//手机号码
CreateSTime
:
string
,
//创建开始时间
CreateETime
:
string
,
//创建结束时间
FriendSTime
:
string
,
//好友开始时间
FriendETime
:
string
,
//好友结束时间
Q_NotFollowUpDay
:
number
,
//几天未跟进
Q_Friends
:
string
,
//好友关系 多选逗号分隔、
Q_AddWay
:
string
,
//获取来源 多选英文逗号分隔
EmpId
:
number
,
//员工id
CustomerType
:
number
,
//类型1微信用户 2企业微信用户
SelectList
:
Array
<
any
>
,
//自定义查询
OrderBy
:
number
,
//排序
AddCondition
:
number
//查询条件
}
/**
...
...
@@ -23,215 +40,87 @@ interface IdName {
* @todo Get the exchange rate of the current currency
*/
class
customerService
{
// 获取客户字段列表
static
async
getCustomerFiledList
(
data
:
msg
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerFiledList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户标签
static
async
getLabelList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYWeChat/GetWeChatLableList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 客户标签移动
static
async
setCustomerFiledState
(
data
:
{
Type
:
number
;
SortFiledId
:
number
;
FiledId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerFiledState'
,
{
class
CustomerService
{
// 获取用户列表数据
static
async
getCustomerList
(
data
:
CutomerParams
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerInfoPageList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//
获取客户线索配置
static
async
get
CustomerClueRuleConfig
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomer
ClueRuleConfig
'
,
{
//
获取途径下拉数据
static
async
get
WayList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomer
AddWayEnumList
'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//
设置客户线索配置
static
async
setCustomerClueRuleConfig
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/
QYCustomer/SetCustomerClueRuleConfig
'
,
{
//
获取部门-员工下拉数据
static
async
getEmployeeData
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/
User/GetEmployeeAddrBook
'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//
获取客户线索规则列表
static
async
getCustom
erClueRuleList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomer
ClueRuleList
'
,
{
//
获取员工详情数据
static
async
getCustom
Info
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomer
Info
'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户线索规则详情
static
async
getCustomerClueRuleDetail
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerClueRuleInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 新增修改线索规则
static
async
setCustomerClueRuleInfo
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerClueRuleInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 设置线索规则状态
static
async
setCustomerClueRuleState
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerClueRuleState'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户阶段列表
static
async
getCustomerStageList
(
data
:
any
):
Promise
<
HttpResponse
>
{
//获取客户阶段下拉数据
static
async
getCustomStageList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerStageList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//
获取客户子段类型枚举
static
async
getCustomerFieldTypeEnumList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/
GetCustomerFieldTypeEnumList
'
,
{
//
保存客户资料
static
async
saveCustomInfo
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/
SetCustomerInfo
'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//
获取部门树形列表
static
async
getDeptTree
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/
User/GetDeptTree
'
,
{
//
保存客户标签
static
async
saveCustomLabel
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/
QYCustomer/SetCustomerLabelBatch
'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//
获取部门树形
列表
static
async
getCustomer
FieldInputTypeEnumList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomer
FieldInput
TypeEnumList'
,
{
//
获取客户旅程类型枚举
列表
static
async
getCustomer
TripType
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomer
Trip
TypeEnumList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//
新增修改客户字段
static
async
setCustomerFiledInfo
(
data
:
{
Id
:
number
;
Type
:
number
;
Name
:
string
;
Required
:
number
;
DeptId
:
number
;
WordNum
:
number
;
InputType
:
string
;
OptionsList
:
Array
<
IdName
>
;
Digits
:
number
;
Enable
:
number
;
[
propName
:
string
]:
any
}
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/
SetCustomerFiledInfo
'
,
{
//
获取客户旅程分页列表
static
async
getCustomerTripPage
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/
GetCustomerTripPageList
'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//获取客户阶段流程列表
static
async
getCustomerStageFlowList
(
data
:
msg
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerStageFlowList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//设置客户阶段流程状态
static
async
setCustomerStageFlowState
(
data
:
{
Type
:
number
;
FlowId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerStageFlowState'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//验证该阶段是否可以删除
static
async
validataCustomerStageDel
(
data
:
{
StageId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/ValidataCustomerStageDel'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 验证阶段输单/无效的 原因选项是否可以删除
static
async
validataCustomerCauseDel
(
data
:
{
CauseId
:
number
;
Type
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/ValidataCustomerCauseDel'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 验证阶段输单/无效的 原因选项是否可以删除
static
async
setCustomerStageInfo
(
data
:
{
Id
:
number
;
Type
:
number
;
Name
:
string
;
Sort
:
number
;
OptionsList
:
Array
<
IdName
>
;
IsDefault
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerStageInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户标签/分组 列表
static
async
getWeChatLableList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYWeChat/GetWeChatLableList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 新增修改分组/标签
static
async
setWeChatLable
(
data
:
{
Id
:
number
;
ParentId
:
number
;
Name
:
string
;
Sort
:
string
;
ChildList
:
Array
<
{
Name
:
string
;
Sort
:
string
}
>
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYWeChat/SetWeChatLable'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 新增修改分组/标签
static
async
delWeChatLable
(
data
:
{
LableId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYWeChat/DelWeChatLable'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 保存客户阶段流程
static
async
setCustomerStageFlowInfo
(
data
:
{
Id
:
number
;
FlowName
:
string
;
DeptEmpList
:
Array
<
{
Id
:
number
;
Name
:
string
;
Type
:
number
}
>
;
UseStage
:
string
;
LoseCause
:
string
;
InvalidCause
:
string
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerStageFlowInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户阶段流程详情
static
async
getCustomerStageFlowInfo
(
data
:
{
FlowId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerStageFlowInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取获取客户操作配置
static
async
getCustomerConfig
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerConfig'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 保存客户操作
static
async
setCustomerConfig
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerConfig'
,
{
//新增客户跟进记录
static
async
setCustomerTripFollowUpInfo
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerTripFollowUpInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
}
export
default
c
ustomerService
export
{
CutomerParams
}
export
default
C
ustomerService
src/api/customer2.ts
deleted
100644 → 0
View file @
2d0b6e60
/**
* 所有跟用户相关的接口(TODO:DEMO USER)
*/
import
{
HttpResponse
}
from
'@/@types'
import
Axios
from
'./axios'
/**
* @interface loginParams -登录参数
* @property {string} grant_type -授权类型
* @property {string} email -邮箱
* @property {string} password -用户密码
*/
interface
CutomerParams
{
PageIndex
:
number
,
PageSize
:
number
,
pageCount
:
number
,
CorpName
:
string
,
//企业名称
CustomerName
:
string
,
//备注名
WeChatName
:
string
,
//昵称
CustomerMobile
:
string
,
//手机号码
CreateSTime
:
string
,
//创建开始时间
CreateETime
:
string
,
//创建结束时间
FriendSTime
:
string
,
//好友开始时间
FriendETime
:
string
,
//好友结束时间
Q_NotFollowUpDay
:
number
,
//几天未跟进
Q_Friends
:
string
,
//好友关系 多选逗号分隔、
Q_AddWay
:
string
,
//获取来源 多选英文逗号分隔
EmpId
:
number
,
//员工id
CustomerType
:
number
,
//类型1微信用户 2企业微信用户
SelectList
:
Array
<
any
>
,
//自定义查询
OrderBy
:
number
,
//排序
AddCondition
:
number
//查询条件
}
/**
* @example Axios.get(`https://xxx.com}`)
* @todo Get the exchange rate of the current currency
*/
class
CustomerService
{
// 获取用户列表数据
static
async
getCustomerList
(
data
:
CutomerParams
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerInfoPageList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//获取途径下拉数据
static
async
getWayList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerAddWayEnumList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//获取部门-员工下拉数据
static
async
getEmployeeData
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/User/GetEmployeeAddrBook'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//获取员工详情数据
static
async
getCustomInfo
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//获取客户阶段下拉数据
static
async
getCustomStageList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerStageList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//保存客户资料
static
async
saveCustomInfo
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//保存客户标签
static
async
saveCustomLabel
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerLabelBatch'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//获取客户旅程类型枚举列表
static
async
getCustomerTripType
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerTripTypeEnumList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//获取客户旅程分页列表
static
async
getCustomerTripPage
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerTripPageList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//新增客户跟进记录
static
async
setCustomerTripFollowUpInfo
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerTripFollowUpInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
}
export
{
CutomerParams
}
export
default
CustomerService
src/api/customerSet.ts
0 → 100644
View file @
5a14069d
/**
* 所有跟用户相关的接口(TODO:DEMO USER)
*/
import
{
HttpResponse
}
from
'@/@types'
import
Axios
from
'./axios'
/**
* @interface loginParams -登录参数
* @property {string} grant_type -授权类型
* @property {string} email -邮箱
* @property {string} password -用户密码
*/
interface
msg
{
Enable
:
number
}
interface
IdName
{
Id
:
number
Name
:
string
}
/**
* @example Axios.get(`https://xxx.com}`)
* @todo Get the exchange rate of the current currency
*/
class
customerSetService
{
// 获取客户字段列表
static
async
getCustomerFiledList
(
data
:
msg
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerFiledList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户标签
static
async
getLabelList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYWeChat/GetWeChatLableList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 客户标签移动
static
async
setCustomerFiledState
(
data
:
{
Type
:
number
;
SortFiledId
:
number
;
FiledId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerFiledState'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户线索配置
static
async
getCustomerClueRuleConfig
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerClueRuleConfig'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 设置客户线索配置
static
async
setCustomerClueRuleConfig
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerClueRuleConfig'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户线索规则列表
static
async
getCustomerClueRuleList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerClueRuleList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户线索规则详情
static
async
getCustomerClueRuleDetail
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerClueRuleInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 新增修改线索规则
static
async
setCustomerClueRuleInfo
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerClueRuleInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 设置线索规则状态
static
async
setCustomerClueRuleState
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerClueRuleState'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户阶段列表
static
async
getCustomerStageList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerStageList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户子段类型枚举
static
async
getCustomerFieldTypeEnumList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerFieldTypeEnumList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取部门树形列表
static
async
getDeptTree
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/User/GetDeptTree'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取部门树形列表
static
async
getCustomerFieldInputTypeEnumList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerFieldInputTypeEnumList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//新增修改客户字段
static
async
setCustomerFiledInfo
(
data
:
{
Id
:
number
;
Type
:
number
;
Name
:
string
;
Required
:
number
;
DeptId
:
number
;
WordNum
:
number
;
InputType
:
string
;
OptionsList
:
Array
<
IdName
>
;
Digits
:
number
;
Enable
:
number
;
[
propName
:
string
]:
any
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerFiledInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//获取客户阶段流程列表
static
async
getCustomerStageFlowList
(
data
:
msg
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerStageFlowList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//设置客户阶段流程状态
static
async
setCustomerStageFlowState
(
data
:
{
Type
:
number
;
FlowId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerStageFlowState'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
//验证该阶段是否可以删除
static
async
validataCustomerStageDel
(
data
:
{
StageId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/ValidataCustomerStageDel'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 验证阶段输单/无效的 原因选项是否可以删除
static
async
validataCustomerCauseDel
(
data
:
{
CauseId
:
number
;
Type
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/ValidataCustomerCauseDel'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 验证阶段输单/无效的 原因选项是否可以删除
static
async
setCustomerStageInfo
(
data
:
{
Id
:
number
;
Type
:
number
;
Name
:
string
;
Sort
:
number
;
OptionsList
:
Array
<
IdName
>
;
IsDefault
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerStageInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户标签/分组 列表
static
async
getWeChatLableList
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYWeChat/GetWeChatLableList'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 新增修改分组/标签
static
async
setWeChatLable
(
data
:
{
Id
:
number
;
ParentId
:
number
;
Name
:
string
;
Sort
:
string
;
ChildList
:
Array
<
{
Name
:
string
;
Sort
:
string
}
>
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYWeChat/SetWeChatLable'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 新增修改分组/标签
static
async
delWeChatLable
(
data
:
{
LableId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYWeChat/DelWeChatLable'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 保存客户阶段流程
static
async
setCustomerStageFlowInfo
(
data
:
{
Id
:
number
;
FlowName
:
string
;
DeptEmpList
:
Array
<
{
Id
:
number
;
Name
:
string
;
Type
:
number
}
>
;
UseStage
:
string
;
LoseCause
:
string
;
InvalidCause
:
string
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerStageFlowInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取客户阶段流程详情
static
async
getCustomerStageFlowInfo
(
data
:
{
FlowId
:
number
}):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerStageFlowInfo'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 获取获取客户操作配置
static
async
getCustomerConfig
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/GetCustomerConfig'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
// 保存客户操作
static
async
setCustomerConfig
(
data
:
any
):
Promise
<
HttpResponse
>
{
return
Axios
(
'/QYCustomer/SetCustomerConfig'
,
{
method
:
'post'
,
responseType
:
'json'
,
data
})
}
}
export
default
customerSetService
src/components/common/customRight.vue
View file @
5a14069d
...
...
@@ -514,7 +514,7 @@ import {
}
from
'vue'
import
{
DownLoadFileByUrl
}
from
'@/utils/upload'
import
message
from
'@/utils/message'
import
customer
2
from
'@/api/customer2
'
import
customer
from
'@/api/customer
'
import
labelgroup
from
'@/components/customer/label-group.vue'
import
fileUpload
from
'@/components/common/fileUpload.vue'
...
...
@@ -576,7 +576,7 @@ export default {
})
//获取详情数据
const
getCustomInfo
=
(
param
:
msgParam
)
=>
{
customer
2
.
getCustomInfo
(
param
).
then
(
res
=>
{
customer
.
getCustomInfo
(
param
).
then
(
res
=>
{
data
.
dataList
=
res
.
data
.
Data
;
data
.
FiledDetailList
=
res
.
data
.
Data
.
FiledDetailList
;
data
.
FiledDetailList
.
forEach
(
x
=>
{
...
...
@@ -596,7 +596,7 @@ export default {
}
//获取客户阶段下拉
const
getCustomStage
=
(
param
)
=>
{
customer
2
.
getCustomStageList
(
param
).
then
(
res
=>
{
customer
.
getCustomStageList
(
param
).
then
(
res
=>
{
data
.
customData
=
res
.
data
.
Data
;
})
}
...
...
@@ -623,7 +623,7 @@ export default {
}
else
{
cutomMsg
.
Value
=
e
.
Value
;
}
customer
2
.
saveCustomInfo
(
cutomMsg
).
then
(
res
=>
{
customer
.
saveCustomInfo
(
cutomMsg
).
then
(
res
=>
{
getCustomInfo
(
msg
);
message
.
successMsg
(
res
.
data
.
Message
);
})
...
...
@@ -635,7 +635,7 @@ export default {
cutomMsg
.
CustomerId
=
msg
.
CustomerId
;
cutomMsg
.
Type
=
1
;
cutomMsg
.
CustomId
=
0
;
customer
2
.
saveCustomInfo
(
cutomMsg
).
then
(
res
=>
{
customer
.
saveCustomInfo
(
cutomMsg
).
then
(
res
=>
{
getCustomInfo
(
msg
);
data
.
isShowEdit
=
false
;
message
.
successMsg
(
res
.
data
.
Message
);
...
...
@@ -680,14 +680,14 @@ export default {
ckedArr
.
push
(
x
.
Id
);
})
labelMsg
.
LableIds
=
ckedArr
.
toString
();
customer
2
.
saveCustomLabel
(
labelMsg
).
then
(
res
=>
{
customer
.
saveCustomLabel
(
labelMsg
).
then
(
res
=>
{
getCustomInfo
(
msg
);
message
.
successMsg
(
res
.
data
.
Message
);
})
}
//获取客户旅程类型
const
getCustomerTripType
=
(
param
:
any
)
=>
{
customer
2
.
getCustomerTripType
(
param
).
then
(
res
=>
{
customer
.
getCustomerTripType
(
param
).
then
(
res
=>
{
console
.
log
(
res
,
'trip数据'
);
data
.
tripTypeArr
=
res
.
data
.
Data
;
let
Obj
=
{
...
...
@@ -706,7 +706,7 @@ export default {
}
//获取客户旅程分页列表
const
getCustomerPage
=
()
=>
{
customer
2
.
getCustomerTripPage
(
customTripMsg
).
then
(
res
=>
{
customer
.
getCustomerTripPage
(
customTripMsg
).
then
(
res
=>
{
console
.
log
(
res
,
'旅程分页数据'
);
data
.
tripDataList
=
res
.
data
.
Data
.
PageData
;
data
.
TripPageCount
=
res
.
data
.
Data
.
PageCount
;
...
...
src/components/common/departmentStaff.vue
View file @
5a14069d
<
template
>
<q-dialog
v-model=
"show"
class=
"col-6"
persistent
transition-show=
"scale"
transition-hide=
"scale"
@
show=
"showDialog"
@
hide=
"hideDialog"
>
<q-card
style=
"width: 600px;height:600px; max-width: 80vw;"
>
<q-dialog
v-model=
"show"
class=
"col-6"
persistent
transition-show=
"scale"
transition-hide=
"scale"
@
show=
"showDialog"
@
hide=
"hideDialog"
>
<q-card
style=
"width: 600px; height: 600px; max-width: 80vw"
>
<q-card-section
class=
"row items-center q-pb-none"
>
<div
class=
"text-h6"
>
选择部门
<span
v-if=
"showType===
0"
>
/员工
</span></div>
<div
class=
"text-h6"
>
选择部门
<span
v-if=
"showType ===
0"
>
/员工
</span></div>
<q-space
/>
<q-btn
icon=
"close"
flat
round
dense
v-close-popup
/>
</q-card-section>
<q-card-section
class=
"q-pt-none"
style=
"height:480px;"
>
<div
class=
"row"
style=
"height:100%;"
>
<div
class=
"col-6 q-px-sm"
style=
"border-right:1px solid #999;height:100%;"
>
<q-input
color=
"teal"
dense
outlined
placeholder=
"请输入"
v-model=
"filter"
style=
"margin-bottom:10px"
clearable
@
clear=
"clearInput"
>
<q-card-section
class=
"q-pt-none"
style=
"height: 480px"
>
<div
class=
"row"
style=
"height: 100%"
>
<div
class=
"col-6 q-px-sm"
style=
"border-right: 1px solid #999; height: 100%"
>
<q-input
color=
"teal"
dense
outlined
placeholder=
"请输入"
v-model=
"filter"
style=
"margin-bottom: 10px"
clearable
@
clear=
"clearInput"
>
<template
v-slot:append
>
<q-icon
name=
"search"
/>
</
template
>
</q-input>
<q-tree
style=
"height:calc(100% - 50px);overflow-y:scroll"
ref=
"tree"
class=
"col-12"
:nodes=
"treeData"
:node-key=
"nodeKey"
:label-key=
"labelKey"
:children-key=
"childrenKey"
:tick-strategy=
"strategy"
:default-expand-all=
"defaultExpandAll"
no-connectors
v-model:ticked=
"ticketArr"
@
update:ticked=
"tickedTree"
:filter=
"filter"
:filter-method=
"myFilterMethod"
/>
<q-tree
style=
"height: calc(100% - 50px); overflow-y: scroll"
ref=
"tree"
class=
"col-12"
:nodes=
"treeData"
:node-key=
"nodeKey"
:label-key=
"labelKey"
:children-key=
"childrenKey"
:tick-strategy=
"strategy"
:default-expand-all=
"defaultExpandAll"
no-connectors
v-model:ticked=
"ticketArr"
@
update:ticked=
"tickedTree"
:filter=
"filter"
:filter-method=
"myFilterMethod"
/>
</div>
<div
class=
"col-6 q-px-sm"
>
<div
class=
"list-title"
>
已选择的部门
<span
v-if=
"showType===
0"
>
或成员
</span></div>
<div
class=
"list-title"
>
已选择的部门
<span
v-if=
"showType ===
0"
>
或成员
</span></div>
<div
class=
"q-pb-none col-12 list-box"
>
<div
v-for=
"(item,
index) in selectArray"
:key=
"index"
class=
"list-item"
>
<div
v-for=
"(item,
index) in selectArray"
:key=
"index"
class=
"list-item"
>
<div
class=
"flex-center"
>
<q-icon
name=
"work"
color=
"primary"
v-if=
"item.Id.slice(0, 1) == '1'"
/>
<q-icon
name=
"person"
color=
"accent"
v-if=
"item.Id.slice(0, 1) == '2'"
/>
<q-icon
name=
"work"
color=
"primary"
v-if=
"item.Type == '1'"
/>
<q-icon
name=
"person"
color=
"accent"
v-if=
"item.Type == '2'"
/>
<span
class=
"q-ml-sm"
>
{{ item.Name }}
</span>
</div>
<q-icon
name=
"cancel"
@
click=
"delItem(item.Id, index)"
></q-icon>
...
...
@@ -81,17 +46,20 @@
</q-dialog>
</template>
<
script
lang=
"ts"
>
import
{
ref
,
watch
}
from
'vue'
import
{
ref
,
watch
}
from
'vue'
interface
parmas
{
interface
parmas
{
[
key
:
string
]:
any
}
interface
SelectParams
{
Id
:
string
,
Name
:
string
,
}
interface
SelectParams
{
Id
:
string
Name
:
string
Type
:
number
}
export
default
{
}
export
default
{
props
:
{
modelValue
:
{
type
:
Boolean
,
...
...
@@ -104,7 +72,7 @@ export default {
required
:
true
},
showType
:
{
type
:
Number
,
//0:显示部门和员工,1:只显示部门
type
:
Number
,
//0:显示部门和员工,1:只显示部门
default
:
0
},
//是否默认展开
...
...
@@ -116,11 +84,11 @@ export default {
defaultArray
:
{
type
:
Array
,
default
:
()
=>
[],
required
:
true
,
required
:
true
},
//节点Key
nodeKey
:
{
type
:
String
,
//格式需拼成 '类型-名字-id'的形式
type
:
String
,
//格式需拼成 '类型-名字-id'的形式
default
:
'id'
},
//节点名称
...
...
@@ -136,23 +104,26 @@ export default {
strategy
:
{
type
:
String
,
default
:
'strict'
},
}
},
setup
(
props
,
ctx
)
{
let
show
=
ref
(
false
)
let
tree
=
ref
<
any
>
(
null
);
let
keys
=
ref
<
Array
<
string
>>
([])
let
selectArray
=
ref
<
Array
<
SelectParams
>>
([])
let
ticketArr
=
ref
<
Array
<
any
>>
([])
watch
(()
=>
props
.
modelValue
,(
val
)
=>
{
show
.
value
=
val
})
let
show
=
ref
(
false
)
let
tree
=
ref
<
any
>
(
null
)
let
keys
=
ref
<
Array
<
string
>>
([])
let
selectArray
=
ref
<
Array
<
SelectParams
>>
([])
let
ticketArr
=
ref
<
Array
<
any
>>
([])
watch
(
()
=>
props
.
modelValue
,
val
=>
{
show
.
value
=
val
}
)
let
hideDialog
=
()
=>
{
ctx
.
emit
(
"update:modelValue"
,
false
)
ctx
.
emit
(
'update:modelValue'
,
false
)
}
let
filter
=
ref
(
''
)
const
filterRef
=
ref
<
any
>
(
null
)
const
filterRef
=
ref
<
any
>
(
null
)
// 过滤树形列表
const
myFilterMethod
=
(
node
,
filter
)
=>
{
const
filt
=
filter
.
toLowerCase
()
...
...
@@ -162,11 +133,12 @@ export default {
filter
.
value
=
''
}
// 有默认值-----start-------
let
flag
=
true
let
flag
=
true
let
initDefault
=
()
=>
{
selectArray
.
value
=
[]
if
(
props
.
defaultArray
&&
props
.
defaultArray
.
length
>
0
&&
flag
)
{
props
.
defaultArray
.
map
((
e
)
=>
{
if
(
props
.
defaultArray
&&
props
.
defaultArray
.
length
>
0
&&
flag
)
{
if
(
props
.
showType
==
0
)
{
props
.
defaultArray
.
map
(
e
=>
{
if
(
e
.
slice
(
0
,
1
)
==
1
)
{
const
node
=
tree
.
value
.
getNodeByKey
(
e
)
if
(
node
[
props
.
childrenKey
]
&&
node
[
props
.
childrenKey
].
length
>
0
)
{
...
...
@@ -177,13 +149,16 @@ export default {
}
else
{
ticketArr
.
value
.
push
(
e
)
}
})
flag
=
false
flag
=
false
}
else
{
ticketArr
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
props
.
defaultArray
))
console
.
log
(
'默认值'
,
ticketArr
.
value
)
}
}
}
let
findChild
=
(
arr
:
Array
<
parmas
>
)
=>
{
let
findChild
=
(
arr
:
Array
<
parmas
>
)
=>
{
arr
.
map
(
e
=>
{
if
(
e
[
props
.
childrenKey
]
&&
e
[
props
.
childrenKey
].
length
>
0
)
{
findChild
(
e
[
props
.
childrenKey
])
...
...
@@ -191,7 +166,6 @@ export default {
ticketArr
.
value
.
push
(
e
.
DataType
+
'-'
+
e
.
DeptId
)
}
})
}
// 有默认值----end--------
...
...
@@ -205,7 +179,11 @@ export default {
let
j
=
arr
[
i
]
let
flag
=
tree
.
value
.
isTicked
(
j
[
props
.
nodeKey
])
if
(
flag
==
true
)
{
selectArray
.
value
.
push
({
Id
:
j
[
props
.
nodeKey
],
Name
:
j
.
DeptName
,
Type
:
j
.
DataType
})
selectArray
.
value
.
push
({
Id
:
j
[
props
.
nodeKey
],
Name
:
j
.
DeptName
,
Type
:
j
.
DataType
})
}
else
{
if
(
j
[
props
.
childrenKey
]
&&
j
[
props
.
childrenKey
].
length
>
0
)
{
getselectArray
(
j
[
props
.
childrenKey
])
...
...
@@ -213,14 +191,15 @@ export default {
}
}
}
let
tickedTree
=
(
val
)
=>
{
let
tickedTree
=
val
=>
{
if
(
props
.
showType
===
0
)
{
let
filt
=
val
.
filter
(
e
=>
e
.
slice
(
0
,
1
)
==
2
).
length
ctx
.
emit
(
'getNum'
,
filt
)
}
setTimeout
(()
=>
{
selectArray
.
value
=
[]
getselectArray
(
props
.
treeData
)
},
100
)
}
let
delItemitem
=
(
arr
:
parmas
)
=>
{
arr
.
map
(
x
=>
{
...
...
@@ -240,7 +219,6 @@ export default {
}
else
{
keys
.
value
.
push
(
Id
)
}
}
else
{
if
(
j
[
props
.
childrenKey
]
&&
j
[
props
.
childrenKey
].
length
>
0
)
{
delItemArray
(
j
[
props
.
childrenKey
],
Id
)
...
...
@@ -274,26 +252,29 @@ export default {
delItemitem
,
showDialog
,
goback
}
}
}
}
</
script
>
<
style
scoped
>
::-webkit-scrollbar
{
::-webkit-scrollbar
{
height
:
7px
;
width
:
7px
;
}
::-webkit-scrollbar-thumb
{
}
::-webkit-scrollbar-thumb
{
/*滚动条里面小方块*/
border-radius
:
3px
;
background-color
:
#ddd
;
}
::-webkit-scrollbar-track-piece
{
}
::-webkit-scrollbar-track-piece
{
background-color
:
#fff
;
-webkit-border-radius
:
12px
;
}
.list-title
{
}
.list-title
{
height
:
50px
;
padding-bottom
:
10px
;
color
:
#606266
;
...
...
@@ -301,17 +282,20 @@ export default {
box-sizing
:
border-box
;
display
:
flex
;
align-items
:
center
;
}
.list-box
{
}
.list-box
{
height
:
420px
;
overflow-y
:
scroll
;
}
.list-item
{
}
.list-item
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
3px
0
0
10px
;
border-radius
:
5px
;
height
:
30px
;
}
}
</
style
>
src/components/common/fileUpload.vue
View file @
5a14069d
...
...
@@ -53,7 +53,7 @@
reactive
,
inject
}
from
'vue'
import
customer
2
from
'@/api/customer2
'
import
customer
from
'@/api/customer
'
import
massage
from
'@/utils/message'
import
{
UploadSelfFile
...
...
@@ -96,7 +96,7 @@
msg
.
FileList
.
splice
(
i
,
1
)
}
const
save
=
()
=>
{
customer
2
.
setCustomerTripFollowUpInfo
(
msg
).
then
(
res
=>
{
customer
.
setCustomerTripFollowUpInfo
(
msg
).
then
(
res
=>
{
massage
.
successMsg
(
res
.
data
.
Message
)
msg
.
Remark
=
''
msg
.
ImageList
=
[]
...
...
src/components/customer/addfield.vue
View file @
5a14069d
...
...
@@ -127,7 +127,7 @@
import
draggable
from
"vuedraggable"
;
import
selectTree
from
'@/components/common/selectTree.vue'
import
{
useQuasar
}
from
'quasar'
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
// import { customerFieldtabsType } from '@/@types/customer'
export
default
defineComponent
({
components
:
{
draggable
,
selectTree
},
...
...
@@ -242,7 +242,7 @@
submitobj
.
InputType
=
'1'
}
loading
.
value
=
true
customerService
.
setCustomerFiledInfo
(
submitobj
).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
setCustomerFiledInfo
(
submitobj
).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
console
.
log
(
res
)
$q
.
notify
({
...
...
src/components/customer/label-group.vue
View file @
5a14069d
...
...
@@ -54,7 +54,7 @@
</
template
>
<
script
>
import
{
defineComponent
,
ref
,
onMounted
}
from
'vue'
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
export
default
defineComponent
({
props
:
{
...
...
@@ -103,7 +103,7 @@
})
}
const
getLabelList
=
()
=>
{
customerService
.
getLabelList
({}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getLabelList
({}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
LableList
.
value
=
res
.
data
.
Data
LableList
.
value
.
forEach
(
x
=>
{
...
...
src/components/customer/request-group.vue
View file @
5a14069d
...
...
@@ -148,7 +148,7 @@
watch
,
onMounted
}
from
'vue'
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
import
labelgroup
from
'./label-group.vue'
import
dayjs
from
'dayjs'
import
{
...
...
@@ -379,7 +379,7 @@
ctx
.
emit
(
'update:addCondition'
,
val
)
}
const
getCustomerFiledList
=
()
=>
{
customerService
customerSe
tSe
rvice
.
getCustomerFiledList
({
Enable
:
1
})
...
...
@@ -394,7 +394,7 @@
})
}
const
getCustomerStageList
=
()
=>
{
customerService
.
getCustomerStageList
({}).
then
(
res
=>
{
customerSe
tSe
rvice
.
getCustomerStageList
({}).
then
(
res
=>
{
let
obj
:
params
=
{
Id
:
'客户阶段'
,
Name
:
'客户阶段'
,
...
...
src/module/customer/clueModule.ts
View file @
5a14069d
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
import
{
ref
,
reactive
}
from
'vue'
import
clueService
,
{
ClueParams
}
from
'@/api/clue'
import
{
ColumnDefaultState
}
from
'@/@types/enumHelper'
...
...
@@ -80,7 +80,7 @@ const ClueModule = () => {
colLoadingFinish
:
false
})
customerService
customerSe
tSe
rvice
.
getCustomerFiledList
({
Enable
:
1
})
...
...
src/module/customer/customerModule.ts
View file @
5a14069d
...
...
@@ -12,9 +12,9 @@ import {
ref
,
reactive
}
from
'vue'
import
customer
2
,
{
import
customer
,
{
CutomerParams
}
from
'@/api/customer
2
'
}
from
'@/api/customer'
interface
Params
{
selectVal
:
string
selectWay
:
number
...
...
@@ -47,7 +47,7 @@ interface dataParams {
const
CustomerModule
=
()
=>
{
//调用方法
const
getCustomerList
=
(
param
:
CutomerParams
)
=>
{
customer
2
.
getCustomerList
(
param
).
then
(
res
=>
{
customer
.
getCustomerList
(
param
).
then
(
res
=>
{
console
.
log
(
res
,
'数据'
)
if
(
res
.
data
.
Code
==
1
)
{
data
.
dataList
=
res
.
data
.
Data
.
PageData
...
...
@@ -57,7 +57,7 @@ const CustomerModule = () => {
}
//调用获取下拉
const
getWayList
=
(
param
:
any
)
=>
{
customer
2
.
getWayList
(
param
).
then
(
res
=>
{
customer
.
getWayList
(
param
).
then
(
res
=>
{
if
(
res
.
data
.
Code
==
1
)
{
data
.
WayList
=
res
.
data
.
Data
}
...
...
@@ -65,7 +65,7 @@ const CustomerModule = () => {
}
//获取员工数据
const
getEmployeeData
=
(
param
:
any
)
=>
{
customer
2
.
getEmployeeData
(
param
).
then
(
res
=>
{
customer
.
getEmployeeData
(
param
).
then
(
res
=>
{
data
.
EmployeeList
=
res
.
data
.
Data
console
.
log
(
data
,
'员工数据'
)
// 重组唯一id
...
...
src/module/editor/editRuleModule.ts
View file @
5a14069d
import
{
ref
,
reactive
}
from
'vue'
import
customerSetService
from
'@/api/customerSet'
import
customerService
from
'@/api/customer'
import
customerService2
from
'@/api/customer2'
import
router
from
'@/router/index'
import
message
from
'@/utils/message'
interface
dataParams
{
...
...
@@ -81,7 +81,7 @@ const editRuleModule = () => {
}
//获取线索详情
const
getDetail
=
()
=>
{
customerService
.
getCustomerClueRuleDetail
(
msg
()).
then
(
res
=>
{
customerSe
tSe
rvice
.
getCustomerClueRuleDetail
(
msg
()).
then
(
res
=>
{
const
d
=
res
.
data
.
Data
data
.
editMsg
.
DeptList
=
d
.
DeptList
data
.
editMsg
.
EmpList
=
d
.
EmpList
...
...
@@ -101,7 +101,7 @@ const editRuleModule = () => {
}
//获取部门数据
const
getEmployeeData
=
()
=>
{
customerService
2
.
getEmployeeData
({}).
then
(
res
=>
{
customerService
.
getEmployeeData
({}).
then
(
res
=>
{
console
.
log
(
res
.
data
.
Data
,
'部门'
)
data
.
dataTree
=
res
.
data
.
Data
// 重组唯一id
...
...
@@ -128,7 +128,7 @@ const editRuleModule = () => {
// const flag = condition.value.checkRule(data.editMsg.ConditionList)
// console.log(94, flag)
// if (!flag) return
customerService
.
setCustomerClueRuleInfo
(
data
.
editMsg
).
then
(
res
=>
{
customerSe
tSe
rvice
.
setCustomerClueRuleInfo
(
data
.
editMsg
).
then
(
res
=>
{
message
.
successMsg
(
res
.
data
.
Message
)
setTimeout
(()
=>
{
router
.
push
({
...
...
src/pages/customer/components/CustomerOperation.vue
→
src/pages/customer
Manage/customerSet
/components/CustomerOperation.vue
View file @
5a14069d
...
...
@@ -13,11 +13,17 @@
开启后,员工领取公海客户时需要企微端设置的部门上级审批,审批同意后才可领取
</div>
<div
class=
"flex items-center"
>
<q-toggle
v-model=
"data.PublicGetDept"
false-value=
"-1"
/>
以下部门允许领取公海客户
<q-btn
color=
"primary"
unelevated
label=
"修改"
size=
"xs"
class=
"q-ml-lg"
@
click=
"checkedPublicGetDept"
/>
<q-toggle
v-model=
"PublicGetDeptState"
@
update:model-value=
"ChangePublicGetDeptState"
/>
以下部门允许领取公海客户
<q-btn
color=
"primary"
:disable=
"!PublicGetDeptState"
unelevated
label=
"修改"
size=
"xs"
class=
"q-ml-lg"
@
click=
"checkedPublicGetDept"
/>
</div>
<div>
<div
v-for=
"item in items"
:key=
"item.id"
>
{{
item
}}
</div>
<div
v-for=
"(item,index) in data.PublicGetDeptList"
:key=
"index"
class=
"dept-item"
>
<div
class=
"flex justify-center items-center"
>
<q-icon
name=
"work"
color=
"primary"
/>
<span
class=
"q-ml-sm"
>
{{
item
.
Name
}}
</span>
</div>
</div>
</div>
</div>
</div>
...
...
@@ -38,8 +44,17 @@
<div
class=
"collaborator-title"
>
可操作员工:
</div>
<div
class=
"col-10"
>
<div
class=
"flex items-center"
>
<q-toggle
v-model=
"data.AbandonDept"
false-value=
"-1"
/>
以下部门允许将客户放弃到公海
<q-btn
color=
"primary"
label=
"修改"
unelevated
size=
"xs"
class=
"q-ml-lg"
@
click=
"checkedPublicGetDept"
/>
<q-toggle
v-model=
"AbandonDeptState"
@
update:model-value=
"ChangeAbandonDeptState"
/>
以下部门允许将客户放弃到公海
<q-btn
color=
"primary"
:disable=
"!AbandonDeptState"
label=
"修改"
unelevated
size=
"xs"
class=
"q-ml-lg"
@
click=
"checkedPublicGetDept"
/>
</div>
<div>
<div
v-for=
"(item,index) in data.AbandonDeptList"
:key=
"index"
class=
"dept-item"
>
<div
class=
"flex justify-center items-center"
>
<q-icon
name=
"work"
color=
"primary"
/>
<span
class=
"q-ml-sm"
>
{{
item
.
Name
}}
</span>
</div>
</div>
</div>
</div>
</div>
...
...
@@ -60,37 +75,41 @@
<div
class=
"AbandonReasonItem flex items-center"
>
{{
element
}}
</div>
<n-popover
trigger=
"hover"
>
<template
#
trigger
>
<i
class=
"iconfont icon-edit_light"
style=
"font-size: 20px; color: #111"
@
click=
"editAbandonReason(element,index)"
></i>
<i
class=
"iconfont icon-edit_light"
style=
"font-size: 20px; color: #111"
@
click=
"editAbandonReason(element,index)"
></i>
</
template
>
<span>
编辑
</span>
</n-popover>
<n-popover
trigger=
"hover"
>
<
template
#
trigger
>
<i
class=
"iconfont icon-delete_light q-ml-md"
style=
"font-size: 20px; color: #111"
></i>
<i
class=
"iconfont icon-delete_light q-ml-md"
style=
"font-size: 20px; color: #111"
@
click=
"delAbandonReaso(index)"
></i>
</
template
>
<span>
删除
</span>
</n-popover>
</div>
</template>
</draggable>
<div
class=
"flex items-center q-pl-sm"
>
<q-btn
color=
"primary"
label=
"添加"
unelevated
class=
"q-ml-lg q-mr-md"
@
click=
"
AbandonReasonDialog=true
"
/>
<div
class=
"flex items-center q-pl-sm
q-mt-md
"
>
<q-btn
color=
"primary"
label=
"添加"
unelevated
class=
"q-ml-lg q-mr-md"
@
click=
"
addAbandonReason
"
/>
已设/可设上限:{{data.AbandonReasonList.length}}/10
</div>
<q-dialog
v-model=
"AbandonReasonDialog"
>
<q-card>
<q-card-section
class=
"row items-center q-pb-none"
>
<div
class=
"text-h6"
>
添加
</div>
<div
class=
"text-h6"
v-if=
"AbandonReasonType==0"
>
添加
</div>
<div
class=
"text-h6"
v-if=
"AbandonReasonType==1"
>
编辑
</div>
<q-space
/>
<q-btn
icon=
"close"
flat
round
dense
v-close-popup
/>
</q-card-section>
<q-card-section
class=
"q-py-lg"
style=
"width: 460px;max-width: 600px;"
>
<n-input
maxlength=
"10"
size=
"large"
v-model:value=
"AbandonReasonText"
show-count
clearable
placeholder=
"请输入放弃原因"
/>
<n-input
maxlength=
"10"
size=
"large"
v-model:value=
"AbandonReasonText"
show-count
clearable
placeholder=
"请输入放弃原因"
/>
</q-card-section>
<q-card-actions
align=
"right"
>
<q-btn
flat
label=
"取消"
color=
"primary"
v-close-popup
/>
<q-btn
unelevated
label=
"确定"
color=
"primary"
v-close-popup
/>
<q-btn
unelevated
label=
"确定"
color=
"primary"
@
click=
"saveAbandonReason"
/>
</q-card-actions>
</q-card>
</q-dialog>
...
...
@@ -207,7 +226,7 @@
</div>
</div>
</div>
<departmentStaff
v-model=
"showDptDialog"
:defaultArray=
"
defaultDpt"
nodeKey=
"newId"
:showType=
"1"
<departmentStaff
v-model=
"showDptDialog"
:defaultArray=
"
DptDataTreeDefault"
nodeKey=
"DeptId"
labelKey=
"DeptName"
childrenKey=
"ChildList"
strategy=
"leaf"
:treeData=
"DptDataTree"
@
select=
"getdpt"
/>
</div>
</template>
...
...
@@ -219,11 +238,19 @@
defineComponent
,
onMounted
}
from
'vue'
import
customerSetService
from
'@/api/customerSet'
import
customerService
from
'@/api/customer'
// import customerService2 from '@/api/customer2'
import
departmentStaff
from
'@/components/common/departmentStaff.vue'
import
requestGroup
from
'@/components/customer/request-group.vue'
import
draggable
from
'vuedraggable'
import
message
from
'@/utils/message'
interface
dataParams
{
data
:
{
AbandonReasonList
:
string
[]
[
key
:
string
]:
any
}
[
key
:
string
]:
any
}
export
default
defineComponent
({
components
:
{
departmentStaff
,
...
...
@@ -269,36 +296,44 @@
}
])
let
curItem
=
ref
(
1
)
let
data
=
reactive
({
let
data
=
reactive
<
dataParams
>
({
data
:
{
IsPublicAudit
:
1
,
PublicGetDept
:
-
1
,
AbandonType
:
1
AbandonType
:
1
,
AbandonAudit
:
0
,
AbandonReasonList
:
[],
},
PublicGetDeptState
:
false
,
//以下部门允许领取公海客户
AbandonDeptState
:
false
,
//以下部门允许将客户放弃到公海
showDptDialog
:
false
,
AbandonReasonDialog
:
false
,
//放弃原因弹窗
AbandonReasonText
:
""
,
//放弃原因
AbandonReasonIndex
:
0
,
//放弃原因index
AbandonReasonType
:
0
,
// 修改类型 0:新增,1:编辑
defaultDpt
:
[],
DptDataTree
:
[]
AbandonReasonText
:
""
,
//放弃原因
AbandonReasonIndex
:
0
,
//放弃原因index
AbandonReasonType
:
0
,
// 修改类型 0:新增,1:编辑
DptDataTree
:
[],
DptDataTree
Default
:
[],
//部门默认值
})
const
changeActive
=
item
=>
{
curItem
.
value
=
item
.
Id
}
//获取客户操作配置
const
getConfig
=
()
=>
{
customerService
.
getCustomerConfig
({}).
then
(
res
=>
{
customerSe
tSe
rvice
.
getCustomerConfig
({}).
then
(
res
=>
{
console
.
log
(
'CONFIG'
,
res
.
data
.
Data
)
data
.
data
=
res
.
data
.
Data
if
(
data
.
data
.
PublicGetDept
==
-
1
)
{
data
.
PublicGetDeptState
=
false
}
else
{
data
.
PublicGetDeptState
=
true
}
})
}
const
getDptTree
=
()
=>
{
customerService
.
getDeptTree
({}).
then
(
res
=>
{
console
.
log
(
'DptDataTree'
,
res
.
data
.
Data
)
customerService
.
getEmployeeData
({}).
then
(
res
=>
{
data
.
DptDataTree
=
res
.
data
.
Data
// 重组唯一id
if
(
data
.
DptDataTree
.
length
==
0
)
return
data
.
DptDataTree
.
forEach
((
x
:
any
)
=>
{
if
(
data
.
dataTree
.
length
==
0
)
return
data
.
DptDataTree
.
forEach
(
x
=>
{
x
.
newId
=
x
.
DataType
+
'-'
+
x
.
DeptId
if
(
x
.
ChildList
&&
x
.
ChildList
.
length
>
0
)
{
getChildList
(
x
.
ChildList
)
...
...
@@ -314,27 +349,79 @@
}
})
}
const
getdpt
=
val
=>
{
console
.
log
(
'dpt'
,
val
)
//保存客户操作配置
const
setCustomerConfig
=
()
=>
{
customerSetService
.
setCustomerConfig
(
data
.
data
).
then
(
res
=>
{
console
.
log
(
'set'
,
res
.
data
.
Data
)
})
}
//
领取公海客户
//
部门弹窗
const
checkedPublicGetDept
=
()
=>
{
data
.
showDptDialog
=
true
if
(
curItem
.
value
===
1
)
{
data
.
DptDataTreeDefault
=
data
.
data
.
PublicGetDept
.
split
(
','
)
}
else
if
(
curItem
.
value
===
2
)
{
data
.
DptDataTreeDefault
=
data
.
data
.
AbandonDept
.
split
(
','
)
}
const
setCustomerConfig
=
()
=>
{
customerService
.
setCustomerConfig
(
data
.
data
).
then
(
res
=>
{
console
.
log
(
'set'
,
res
.
data
.
Data
)
})
}
const
getdpt
=
val
=>
{
data
.
showDptDialog
=
false
const
ids
=
val
.
map
(
e
=>
e
.
Id
).
toString
()
const
dept
=
JSON
.
parse
(
JSON
.
stringify
(
val
))
if
(
curItem
.
value
===
1
)
{
data
.
data
.
PublicGetDept
=
ids
data
.
data
.
PublicGetDeptList
=
dept
}
if
(
curItem
.
value
===
2
)
{
data
.
data
.
AbandonDept
=
ids
data
.
data
.
AbandonDeptList
=
dept
}
console
.
log
(
'dpt'
,
ids
)
}
//以下部门允许领取公海客户
const
ChangePublicGetDeptState
=
(
val
)
=>
{
if
(
!
val
)
{
data
.
data
.
PublicGetDept
=
'-1'
}
}
//以下部门允许将客户放弃到公海
const
ChangeAbandonDeptState
=
(
val
)
=>
{
if
(
!
val
)
{
data
.
data
.
AbandonDept
=
'-1'
}
const
editAbandonReason
=
(
val
,
index
)
=>
{
data
.
AbandonReasonDialog
=
true
data
.
AbandonReasonText
=
val
,
data
.
AbandonReasonIndex
=
index
console
.
log
(
332
,
val
,
index
)
}
const
changeAbandonReason
=
()
=>
{
// data.data.AbandonReasonList[data.]
// console.log(332,val,index)
//新增放弃原因
const
addAbandonReason
=
()
=>
{
data
.
AbandonReasonDialog
=
true
data
.
AbandonReasonText
=
''
,
data
.
AbandonReasonIndex
=
0
data
.
AbandonReasonType
=
0
}
//修改放弃原因
const
editAbandonReason
=
(
val
,
index
)
=>
{
data
.
AbandonReasonDialog
=
true
data
.
AbandonReasonText
=
val
,
data
.
AbandonReasonIndex
=
index
data
.
AbandonReasonType
=
1
}
//保存放弃原因
const
saveAbandonReason
=
()
=>
{
if
(
!
data
.
AbandonReasonText
)
{
message
.
warnMsg
(
'不能为空'
)
return
}
if
(
data
.
AbandonReasonType
===
0
)
{
data
.
data
.
AbandonReasonList
.
push
(
data
.
AbandonReasonText
)
}
else
{
data
.
data
.
AbandonReasonList
[
data
.
AbandonReasonIndex
]
=
data
.
AbandonReasonText
}
data
.
AbandonReasonDialog
=
false
data
.
AbandonReasonText
=
''
}
// 删除放弃原因
const
delAbandonReaso
=
(
index
)
=>
{
data
.
data
.
AbandonReasonList
.
splice
(
index
,
1
)
}
onMounted
(()
=>
{
getDptTree
()
...
...
@@ -348,8 +435,12 @@
getdpt
,
checkedPublicGetDept
,
setCustomerConfig
,
addAbandonReason
,
editAbandonReason
,
changeAbandonReason
saveAbandonReason
,
delAbandonReaso
,
ChangePublicGetDeptState
,
ChangeAbandonDeptState
,
}
}
})
...
...
@@ -412,4 +503,19 @@
white-space
:
nowrap
;
}
.dept-item
{
border
:
1px
solid
#e1f3d8
;
background-color
:
#f0f9eb
;
color
:
#67c23a
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
display
:
inline-block
;
height
:
32px
;
line-height
:
32px
;
border-radius
:
3px
;
padding
:
0
14px
;
margin
:
6px
;
}
</
style
>
src/pages/customer/components/clueRule.vue
→
src/pages/customer
Manage/customerSet
/components/clueRule.vue
View file @
5a14069d
...
...
@@ -195,7 +195,7 @@ import {
import
draggable
from
"vuedraggable"
;
import
{
Dialog
}
from
'quasar'
import
message
from
'@/utils/message'
import
customerSe
rvice
from
'@/api/customer
'
;
import
customerSe
tService
from
'@/api/customerSet
'
;
import
router
from
'@/router/index'
interface
dataType
{
...
...
@@ -242,7 +242,7 @@ export default defineComponent({
const
getClueList
=
()
=>
{
defaultData
.
value
=
[]
data
.
value
=
[]
customerService
.
getCustomerClueRuleList
({}).
then
(
res
=>
{
customerSe
tSe
rvice
.
getCustomerClueRuleList
({}).
then
(
res
=>
{
res
.
data
.
Data
.
map
((
item
:
dataType
)
=>
{
if
(
item
.
IsDefault
===
1
)
{
defaultData
.
value
.
push
(
item
)
...
...
@@ -257,7 +257,7 @@ export default defineComponent({
ClueAllotWay
:
1
,
// 1依次轮流 2随机分配
})
const
getCustomerClueRuleConfig
=
()
=>
{
customerService
.
getCustomerClueRuleConfig
({}).
then
(
res
=>
{
customerSe
tSe
rvice
.
getCustomerClueRuleConfig
({}).
then
(
res
=>
{
let
data
=
res
.
data
.
Data
configMsg
.
ClueType
=
data
.
ClueType
configMsg
.
ClueAllotWay
=
data
.
ClueAllotWay
...
...
@@ -287,13 +287,13 @@ export default defineComponent({
})
}
const
configChange
=
()
=>
{
customerService
.
setCustomerClueRuleConfig
(
configMsg
).
then
(
res
=>
{
customerSe
tSe
rvice
.
setCustomerClueRuleConfig
(
configMsg
).
then
(
res
=>
{
console
.
log
(
228
,
res
.
data
)
})
}
const
setState
=
(
msg
)
=>
{
customerService
.
setCustomerClueRuleState
(
msg
).
then
(
res
=>
{
customerSe
tSe
rvice
.
setCustomerClueRuleState
(
msg
).
then
(
res
=>
{
message
.
successMsg
(
res
.
data
.
Message
)
if
(
msg
.
Type
==
2
)
{
getClueList
()
...
...
src/pages/customer/components/customerField.vue
→
src/pages/customer
Manage/customerSet
/components/customerField.vue
View file @
5a14069d
...
...
@@ -66,11 +66,11 @@
</template>
<
script
lang=
"ts"
>
import
{
defineComponent
,
ref
,
onMounted
,
}
from
'vue'
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
import
draggable
from
"vuedraggable"
;
import
{
useQuasar
}
from
'quasar'
import
{
customerFieldlistType
,
customerFieldaddMsgType
,
customerFieldtabsType
}
from
'@/@types/customer'
import
addfield
from
'
../../..
/components/customer/addfield.vue'
import
addfield
from
'
@
/components/customer/addfield.vue'
export
default
defineComponent
({
components
:
{
draggable
,
addfield
},
setup
()
{
...
...
@@ -99,7 +99,7 @@
}
)
const
changePage
=
()
=>
{
customerService
.
getCustomerFiledList
({
Enable
:
-
1
}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getCustomerFiledList
({
Enable
:
-
1
}).
then
((
res
)
=>
{
data
.
value
=
res
.
data
.
Data
})
}
...
...
@@ -116,7 +116,7 @@
FiledId
:
dragId
.
value
,
SortFiledId
:
olddragId
,
}
customerService
.
setCustomerFiledState
(
msg
).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
setCustomerFiledState
(
msg
).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
console
.
log
(
res
)
}
else
{
//如果移动失败 重新获取列表
...
...
@@ -134,7 +134,7 @@
FiledId
:
item
.
Id
,
SortFiledId
:
0
,
}
customerService
.
setCustomerFiledState
(
msg
).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
setCustomerFiledState
(
msg
).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
...
...
@@ -183,7 +183,7 @@
});
}
const
getCustomerFieldType
=
()
=>
{
customerService
.
getCustomerFieldTypeEnumList
({}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getCustomerFieldTypeEnumList
({}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
tabsList
.
value
=
res
.
data
.
Data
tabsList
.
value
.
forEach
(
x
=>
{
...
...
@@ -224,14 +224,14 @@
}
}
const
getDepartList
=
()
=>
{
customerService
.
getDeptTree
({
School_Id
:
0
}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getDeptTree
({
School_Id
:
0
}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
deptl
.
value
=
res
.
data
.
Data
}
})
}
const
getFieldInputType
=
()
=>
{
customerService
.
getCustomerFieldInputTypeEnumList
({}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getCustomerFieldInputTypeEnumList
({}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
checkboxList
.
value
=
res
.
data
.
Data
}
...
...
src/pages/customer/components/customerPhase.vue
→
src/pages/customer
Manage/customerSet
/components/customerPhase.vue
View file @
5a14069d
...
...
@@ -120,7 +120,7 @@
</
template
>
<
script
lang=
"ts"
>
import
{
defineComponent
,
onMounted
,
reactive
}
from
'vue'
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
import
{
useQuasar
}
from
'quasar'
import
router
from
'@/router/index'
...
...
@@ -131,7 +131,7 @@ export default defineComponent({
data
:
[],
})
const
getList
=
()
=>
{
customerService
.
getCustomerStageFlowList
({
Enable
:
0
}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getCustomerStageFlowList
({
Enable
:
0
}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
state
.
data
=
res
.
data
.
Data
}
else
{
//如果移动失败 重新获取列表
...
...
@@ -161,7 +161,7 @@ export default defineComponent({
Type
:
Type
,
FlowId
:
Id
,
}
customerService
.
setCustomerStageFlowState
(
msg
).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
setCustomerStageFlowState
(
msg
).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
...
...
src/pages/customer/components/customerlabel.vue
→
src/pages/customer
Manage/customerSet
/components/customerlabel.vue
View file @
5a14069d
...
...
@@ -253,7 +253,7 @@
</
template
>
<
script
lang=
"ts"
>
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
import
{
useQuasar
}
from
'quasar'
...
...
@@ -282,7 +282,7 @@ export default defineComponent({
selectindex
:
0
,
})
const
getList
=
()
=>
{
customerService
.
getWeChatLableList
({}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getWeChatLableList
({}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
data
.
dataList
=
res
.
data
.
Data
;
data
.
SelectID
=
data
.
dataList
[
data
.
selectindex
].
Id
...
...
@@ -369,7 +369,7 @@ export default defineComponent({
}
}
const
setlable
=
(
msg
:
any
)
=>
{
customerService
.
setWeChatLable
(
msg
).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
setWeChatLable
(
msg
).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
...
...
@@ -406,7 +406,7 @@ export default defineComponent({
flat
:
true
,
}
}).
onOk
(()
=>
{
customerService
.
delWeChatLable
({
LableId
:
Id
}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
delWeChatLable
({
LableId
:
Id
}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
...
...
src/pages/customer/customerSetup.vue
→
src/pages/customer
Manage/customerSet
/customerSetup.vue
View file @
5a14069d
File moved
src/pages/editor/createStageRange.vue
View file @
5a14069d
...
...
@@ -160,9 +160,9 @@
<
script
lang=
"ts"
>
import
{
defineComponent
,
onMounted
,
reactive
,
}
from
'vue'
import
router
from
'@/router/index'
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
import
departmentStaff
from
'@/components/common/departmentStaff.vue'
import
customerService
2
from
'@/api/customer2
'
import
customerService
from
'@/api/customer
'
import
{
useQuasar
}
from
'quasar'
...
...
@@ -202,7 +202,7 @@ export default defineComponent({
}
const
getList
=
()
=>
{
customerService
.
getCustomerStageList
({}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getCustomerStageList
({}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
state
.
StageList
=
res
.
data
.
Data
;
state
.
gettypeoneList
=
[]
...
...
@@ -300,7 +300,7 @@ export default defineComponent({
}
else
{
data
.
InvalidCause
=
''
}
customerService
.
setCustomerStageFlowInfo
(
data
).
then
(
res
=>
{
customerSe
tSe
rvice
.
setCustomerStageFlowInfo
(
data
).
then
(
res
=>
{
if
(
res
.
data
.
Code
==
1
)
{
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
...
...
@@ -321,7 +321,7 @@ export default defineComponent({
}
let
getEmployeeData
=
()
=>
{
customerService
2
.
getEmployeeData
({}).
then
(
res
=>
{
customerService
.
getEmployeeData
({}).
then
(
res
=>
{
state
.
dataTree
=
res
.
data
.
Data
// 重组唯一id
if
(
state
.
dataTree
.
length
==
0
)
return
...
...
@@ -346,7 +346,7 @@ export default defineComponent({
state
.
showDialog
=
false
}
let
getdetails
=
(
Id
:
number
)
=>
{
customerService
.
getCustomerStageFlowInfo
({
FlowId
:
Id
}).
then
(
res
=>
{
customerSe
tSe
rvice
.
getCustomerStageFlowInfo
({
FlowId
:
Id
}).
then
(
res
=>
{
if
(
res
.
data
.
Code
==
1
)
{
state
.
addMsg
=
res
.
data
.
Data
if
(
state
.
addMsg
.
UseStage
.
length
!=
''
)
{
...
...
src/pages/editor/manageStageRange.vue
View file @
5a14069d
...
...
@@ -149,7 +149,7 @@
<
script
lang=
"ts"
>
import
{
defineComponent
,
onMounted
,
reactive
,
ref
}
from
'vue'
import
router
from
'@/router/index'
import
customerSe
rvice
from
'@/api/customer
'
import
customerSe
tService
from
'@/api/customerSet
'
import
draggable
from
"vuedraggable"
;
import
{
useQuasar
}
from
'quasar'
...
...
@@ -178,7 +178,7 @@ export default defineComponent({
}
const
getList
=
()
=>
{
customerService
.
getCustomerStageList
({}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
getCustomerStageList
({}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
state
.
addMsg
=
res
.
data
.
Data
state
.
followupStage
=
[];
...
...
@@ -235,7 +235,7 @@ export default defineComponent({
}
const
getStageDel
=
(
Id
:
number
,
index
:
number
)
=>
{
if
(
Id
>
0
)
{
//判断是否是新加
customerService
.
validataCustomerStageDel
({
StageId
:
Id
}).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
validataCustomerStageDel
({
StageId
:
Id
}).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
if
(
res
.
data
.
Data
.
UseState
==
false
)
{
//可以删除
state
.
followupStage
.
splice
(
index
,
1
)
...
...
@@ -264,7 +264,7 @@ export default defineComponent({
}
if
(
Id
>
0
)
{
customerService
.
validataCustomerCauseDel
(
data
).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
validataCustomerCauseDel
(
data
).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
if
(
res
.
data
.
Data
.
UseState
==
false
)
{
//可以删除
state
.
reasonList
[
y
].
OptionsList
.
splice
(
index
,
1
)
...
...
@@ -330,7 +330,7 @@ export default defineComponent({
x
.
Sort
=
i
+
1
})
state
.
loading
=
true
customerService
.
setCustomerStageInfo
(
state
.
addMsg
).
then
((
res
)
=>
{
customerSe
tSe
rvice
.
setCustomerStageInfo
(
state
.
addMsg
).
then
((
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
state
.
loading
=
false
$q
.
notify
({
...
...
src/router/routes.ts
View file @
5a14069d
...
...
@@ -20,7 +20,7 @@ const routes: RouteRecordRaw[] = [
// 客户设置
{
path
:
'/customerSetup'
,
component
:
()
=>
import
(
'@/pages/customer/customerSetup.vue'
)
component
:
()
=>
import
(
'@/pages/customer
Manage/customerSet
/customerSetup.vue'
)
},
//客户
{
...
...
@@ -50,7 +50,6 @@ const routes: RouteRecordRaw[] = [
component
:
()
=>
import
(
'@/pages/editor/createStageRange.vue'
)
},
{
path
:
'/auth/login'
,
component
:
()
=>
import
(
'@/pages/auth/login.vue'
)
...
...
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