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
d46f7d80
Commit
d46f7d80
authored
Nov 22, 2021
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
01693467
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
183 additions
and
77 deletions
+183
-77
request-group.vue
src/components/customer/request-group.vue
+8
-2
clueRule.vue
src/pages/customer/components/clueRule.vue
+164
-66
editRule.vue
src/pages/editor/editRule.vue
+11
-9
No files found.
src/components/customer/request-group.vue
View file @
d46f7d80
...
@@ -70,7 +70,7 @@
...
@@ -70,7 +70,7 @@
<!-- name -->
<!-- name -->
<q-select
<q-select
outlined
outlined
v-model=
"x.
Name
"
v-model=
"x.
Id
"
:options=
"filedList"
:options=
"filedList"
dense
dense
class=
"my-special-class"
class=
"my-special-class"
...
@@ -387,6 +387,7 @@ export default defineComponent({
...
@@ -387,6 +387,7 @@ export default defineComponent({
}
}
filedList
.
value
.
unshift
(
obj2
)
filedList
.
value
.
unshift
(
obj2
)
addMsg
.
value
.
push
({
addMsg
.
value
.
push
({
Id
:
'标签'
,
Name
:
'标签'
,
Name
:
'标签'
,
Type
:
1
,
Type
:
1
,
Direction
:
''
,
Direction
:
''
,
...
@@ -403,6 +404,7 @@ export default defineComponent({
...
@@ -403,6 +404,7 @@ export default defineComponent({
}
}
const
addsList
=
()
=>
{
const
addsList
=
()
=>
{
let
obj
:
params
=
{
let
obj
:
params
=
{
Id
:
0
,
Name
:
''
,
Name
:
''
,
Type
:
''
,
Type
:
''
,
Direction
:
''
,
Direction
:
''
,
...
@@ -415,7 +417,6 @@ export default defineComponent({
...
@@ -415,7 +417,6 @@ export default defineComponent({
}
}
const
showlabel
=
(
y
)
=>
{
const
showlabel
=
(
y
)
=>
{
selectindex
.
value
=
y
;
selectindex
.
value
=
y
;
if
(
addMsg
.
value
[
y
].
StartValue
==
''
)
{
//为空赋值为数组
if
(
addMsg
.
value
[
y
].
StartValue
==
''
)
{
//为空赋值为数组
LableList
.
value
=
[]
LableList
.
value
=
[]
...
@@ -471,6 +472,7 @@ export default defineComponent({
...
@@ -471,6 +472,7 @@ export default defineComponent({
let
changeName
=
(
val
:
any
,
y
:
number
)
=>
{
let
changeName
=
(
val
:
any
,
y
:
number
)
=>
{
addMsg
.
value
[
y
].
StartValue
=
''
addMsg
.
value
[
y
].
StartValue
=
''
addMsg
.
value
[
y
].
EndValue
=
''
addMsg
.
value
[
y
].
EndValue
=
''
switch
(
val
)
{
switch
(
val
)
{
case
"标签"
:
{
case
"标签"
:
{
addMsg
.
value
[
y
].
IsCustom
=
2
addMsg
.
value
[
y
].
IsCustom
=
2
...
@@ -487,6 +489,10 @@ export default defineComponent({
...
@@ -487,6 +489,10 @@ export default defineComponent({
let
find
:
any
=
filedList
.
value
.
find
((
e
)
=>
{
let
find
:
any
=
filedList
.
value
.
find
((
e
)
=>
{
return
e
.
Id
==
val
return
e
.
Id
==
val
})
})
if
(
find
){
addMsg
.
value
[
y
].
Name
=
find
.
Name
}
console
.
log
(
500
,
find
)
switch
(
find
.
Type
)
{
switch
(
find
.
Type
)
{
case
1
:
{
case
1
:
{
addMsg
.
value
[
y
].
directionList
=
directionList2
addMsg
.
value
[
y
].
directionList
=
directionList2
...
...
src/pages/customer/components/clueRule.vue
View file @
d46f7d80
<
template
>
<
template
>
<div
class=
"q-pa-md"
>
<div
class=
"q-pa-md"
>
<requestGroup/>
<div
class=
"q-gutter-lg"
>
<div
class=
"q-gutter-lg"
>
<q-radio
v-model=
"
ClueType"
:val=
"1"
label=
"自动分配"
></q-radio>
<q-radio
v-model=
"
configMsg.ClueType"
:val=
"1"
label=
"自动分配"
@
update:model-value=
'configChange'
></q-radio>
<q-radio
v-model=
"
ClueType"
:val=
"2"
label=
"手动分配"
></q-radio>
<q-radio
v-model=
"
configMsg.ClueType"
:val=
"2"
label=
"手动分配"
@
update:model-value=
'configChange'
></q-radio>
</div>
</div>
<div
class=
"q-pa-md"
v-if=
"ClueType === 1"
>
<div
class=
"q-pa-md"
v-if=
"
configMsg.
ClueType === 1"
>
<div
class=
"aoto-matic-header"
>
<div
class=
"aoto-matic-header"
>
若客户满足多条规则,会优先按照编号顺序执行规则
若客户满足多条规则,会优先按照编号顺序执行规则
<q-btn
color=
"primary"
label=
"+新增规则"
style=
"margin-left: 10px;"
@
click=
"jumpPage('/editor/editRule')"
/>
<q-btn
color=
"primary"
label=
"+新增规则"
style=
"margin-left: 10px;"
@
click=
"jumpPage('/editor/editRule')"
/>
</div>
</div>
<table
class=
"payTable"
>
<table
class=
"payTable"
>
<thead>
<thead>
...
@@ -24,51 +28,56 @@
...
@@ -24,51 +28,56 @@
<th
width=
"5%"
></th>
<th
width=
"5%"
></th>
</tr>
</tr>
</thead>
</thead>
<tr
v-if=
"data.length == 0
&&
defaultData.length == 0"
>
<tr
v-if=
"data.length == 0
&&
defaultData.length == 0"
>
<td
:colspan=
"9"
align=
"center"
>
暂无数据
</td>
<td
:colspan=
"9"
align=
"center"
>
暂无数据
</td>
</tr>
</tr>
<template
v-if=
"defaultData.length > 0"
>
<template
v-if=
"defaultData.length > 0"
>
<tr
v-for=
"(item,index) in defaultData"
:key=
"index"
>
<tr
v-for=
"(item,index) in defaultData"
:key=
"index"
>
<td>
<td>
<span
v-if=
"item.RuleSelectType === 1"
>
并且
</span>
<span
v-if=
"item.RuleSelectType === 1"
>
并且
</span>
<span
v-if=
"item.RuleSelectType === 2"
>
或者
</span>
<span
v-if=
"item.RuleSelectType === 2"
>
或者
</span>
</td>
</td>
<td>
<td>
<span
v-if=
"item.IsDefault == 1"
>
是
</span>
<span
v-if=
"item.IsDefault == 1"
>
是
</span>
<span
v-else
>
否
</span>
<span
v-else
>
否
</span>
</td>
</td>
<td>
<td>
<span>
{{
item
.
DeptList
.
join
(
','
)
}}
</span>
<span>
{{
item
.
DeptList
.
join
(
','
)
}}
</span>
</td>
</td>
<td>
<td>
<span>
{{
item
.
EmpList
.
join
(
','
)
}}
</span>
<span>
{{
item
.
EmpList
.
join
(
','
)
}}
</span>
</td>
</td>
<td>
<td>
<span
v-if=
"item.RuleAllotWay === 1"
>
依次轮流
</span>
<span
v-if=
"item.RuleAllotWay === 1"
>
依次轮流
</span>
<span
v-if=
"item.RuleAllotWay === 2"
>
随机分配
</span>
<span
v-if=
"item.RuleAllotWay === 2"
>
随机分配
</span>
</td>
</td>
<td>
<td>
<span>
未匹配设定规则的客户
</span>
<span>
未匹配设定规则的客户
</span>
</td>
</td>
<td>
<td>
<span>
{{
item
.
Sort
}}
</span>
<span>
{{
item
.
Sort
}}
</span>
</td>
</td>
<td>
<td>
<q-btn
<q-btn
flat
flat
size=
"xs"
size=
"xs"
icon=
"edit"
icon=
"edit"
style=
"font-weight:400;color: #3FC4FF"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
class=
"q-mr-xs"
label=
"编辑"
label=
"编辑"
@
click=
"jumpPage('/editor/editRule',item.Id)"
@
click=
"jumpPage('/editor/editRule', item.Id)"
/>
/>
</td>
</td>
<td>
<td></td>
</td>
</tr>
</tr>
</
template
>
</
template
>
<draggable
v-model=
"data"
tag=
"tbody"
item-key=
"Id"
@
update=
"datadragEnd"
v-if=
"data.length > 0"
>
<draggable
v-model=
"data"
tag=
"tbody"
item-key=
"Id"
@
update=
"datadragEnd"
v-if=
"data.length > 0"
>
<
template
#
item=
"{ element }"
>
<
template
#
item=
"{ element }"
>
<tr>
<tr>
<td>
<td>
...
@@ -103,7 +112,7 @@
...
@@ -103,7 +112,7 @@
style=
"font-weight:400;color: #3FC4FF"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
class=
"q-mr-xs"
label=
"编辑"
label=
"编辑"
@
click=
"jumpPage('/editor/editRule',
element.Id)"
@
click=
"jumpPage('/editor/editRule',
element.Id)"
/>
/>
<q-btn
<q-btn
v-if=
"element.IsDefault != 1"
v-if=
"element.IsDefault != 1"
...
@@ -124,15 +133,34 @@
...
@@ -124,15 +133,34 @@
</draggable>
</draggable>
</table>
</table>
</div>
</div>
<div
class=
"q-pa-md manual"
v-if=
"configMsg.ClueType === 2"
>
<div
class=
"box-manual "
:class=
"{'checked-border':configMsg.ClueAllotWay==1}"
@
click=
"configMsg.ClueAllotWay=1;configChange()"
>
<q-icon
name=
"autorenew"
size=
"lg"
/>
<div>
按已选员工顺序依次轮流分配
</div>
<div
class=
"right"
v-if=
"configMsg.ClueAllotWay==1"
>
<q-icon
name=
"check"
class=
"check-icon"
/>
</div>
</div>
<div
class=
"box-manual"
:class=
"{'checked-border':configMsg.ClueAllotWay==2}"
@
click=
"configMsg.ClueAllotWay=2;configChange()"
>
<q-icon
name=
"shuffle"
size=
"lg"
/>
<div>
按已选员工随机分配
</div>
<div
class=
"right"
v-if=
"configMsg.ClueAllotWay==2"
>
<q-icon
name=
"check"
class=
"check-icon"
/>
</div>
</div>
</div>
</div>
</div>
</template>
</template>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
,
ref
,
reactive
,
onMounted
}
from
'vue'
import
{
defineComponent
,
reactive
,
onMounted
}
from
'vue'
import
draggable
from
"vuedraggable"
;
import
draggable
from
"vuedraggable"
;
import
customerService
from
'@/api/customer'
;
import
customerService
from
'@/api/customer'
;
import
requestGroup
from
'@/components/customer/request-group.vue'
import
router
from
'@/router/index'
import
router
from
'@/router/index'
// import { url } from 'inspector';
interface
dataType
{
interface
dataType
{
Id
:
number
,
Id
:
number
,
RuleSelectType
:
number
,
RuleSelectType
:
number
,
...
@@ -144,51 +172,71 @@ interface dataType {
...
@@ -144,51 +172,71 @@ interface dataType {
ConditionStrList
:
Array
<
string
>
,
ConditionStrList
:
Array
<
string
>
,
Sort
:
number
Sort
:
number
}
}
interface
dataConfigType
{
Id
?:
number
,
ClueType
:
number
,
ClueAllotWay
:
number
}
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
components
:
{
draggable
,
draggable
,
requestGroup
},
},
setup
()
{
setup
()
{
let
defaultData
:
Array
<
dataType
>
=
reactive
([])
let
defaultData
:
Array
<
dataType
>
=
reactive
([])
let
data
:
Array
<
dataType
>
=
reactive
([])
let
data
:
Array
<
dataType
>
=
reactive
([])
const
datadragEnd
=
(
e
:
any
)
=>
{
const
datadragEnd
=
(
e
:
any
)
=>
{
console
.
log
(
'拖动结束'
,
e
)
console
.
log
(
'拖动结束'
,
e
)
}
}
const
getClueList
=
()
=>
{
const
getClueList
=
()
=>
{
customerService
.
getCustomerClueRuleList
({}).
then
(
res
=>
{
customerService
.
getCustomerClueRuleList
({}).
then
(
res
=>
{
res
.
data
.
Data
.
map
((
item
:
dataType
)
=>
{
res
.
data
.
Data
.
map
((
item
:
dataType
)
=>
{
if
(
item
.
IsDefault
===
1
)
{
if
(
item
.
IsDefault
===
1
)
{
defaultData
.
push
(
item
)
defaultData
.
push
(
item
)
}
else
{
}
else
{
data
.
push
(
item
)
data
.
push
(
item
)
}
}
})
})
console
.
log
(
69
,
defaultData
)
console
.
log
(
123
,
data
)
})
})
}
}
const
jumpPage
=
(
url
:
string
,
Id
=
0
)
=>
{
let
configMsg
=
reactive
<
dataConfigType
>
(
{
ClueType
:
1
,
// 1手动分配 2自动分配
ClueAllotWay
:
1
,
// 1依次轮流 2随机分配
})
const
getCustomerClueRuleConfig
=
()
=>
{
customerService
.
getCustomerClueRuleConfig
({}).
then
(
res
=>
{
let
data
=
res
.
data
.
Data
configMsg
.
ClueType
=
data
.
ClueType
configMsg
.
ClueAllotWay
=
data
.
ClueAllotWay
})
}
const
jumpPage
=
(
url
:
string
,
Id
=
0
)
=>
{
router
.
push
({
router
.
push
({
path
:
url
,
path
:
url
,
query
:{
query
:
{
Id
Id
}
}
})
})
}
}
const
configChange
=
()
=>
{
customerService
.
setCustomerClueRuleConfig
(
configMsg
).
then
(
res
=>
{
console
.
log
(
228
,
res
.
data
)
})
}
onMounted
(()
=>
{
onMounted
(()
=>
{
getClueList
();
getClueList
();
getCustomerClueRuleConfig
();
})
})
return
{
return
{
ClueType
:
ref
(
1
)
,
configChange
,
defaultData
,
defaultData
,
data
,
data
,
datadragEnd
,
datadragEnd
,
jumpPage
jumpPage
,
configMsg
}
}
}
}
})
})
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.payTable
{
.payTable
{
...
@@ -219,6 +267,7 @@ export default defineComponent({
...
@@ -219,6 +267,7 @@ export default defineComponent({
font-weight
:
bold
;
font-weight
:
bold
;
border-bottom
:
1px
solid
#e5e5e5
;
border-bottom
:
1px
solid
#e5e5e5
;
}
}
.aoto-matic-header
{
.aoto-matic-header
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
...
@@ -228,4 +277,53 @@ export default defineComponent({
...
@@ -228,4 +277,53 @@ export default defineComponent({
color
:
#858598
;
color
:
#858598
;
font-size
:
14px
;
font-size
:
14px
;
}
}
</
style
>
\ No newline at end of file
.manual
{
height
:
100%
;
display
:
flex
;
margin
:
0
auto
;
width
:
800px
;
justify-content
:
space-around
;
margin-top
:
191px
;
.box-manual
{
cursor
:
pointer
;
width
:
311px
;
height
:
198px
;
background
:
#f9f9f9
;
border-radius
:
5px
;
display
:
flex
;
justify-content
:
center
;
flex-direction
:
column
;
align-items
:
center
;
position
:
relative
;
.right
{
position
:
absolute
;
right
:
-20px
;
bottom
:
-20px
;
display
:
block
;
width
:
0
;
height
:
0
;
transform
:
rotate
(
45deg
);
border
:
20px
solid
transparent
;
border-left
:
20px
solid
#3470ff
;
.check-icon
{
position
:
absolute
;
top
:
-8px
;
left
:
-19px
;
transform
:
rotate
(
-45deg
);
font-size
:
14px
;
font-weight
:
700
;
color
:
#fff
;
}
}
}
}
.checked-border
{
background-color
:
#edf2fd
!
important
;
border
:
2px
solid
#3470ff
!
important
;
color
:
#3470ff
;
}
</
style
>
src/pages/editor/editRule.vue
View file @
d46f7d80
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<q-breadcrumbs-el
label=
"返回"
icon=
"navigate_before"
@
click=
"jumpBeforePage"
/>
<q-breadcrumbs-el
label=
"返回"
icon=
"navigate_before"
@
click=
"jumpBeforePage"
/>
<q-breadcrumbs-el
label=
"编辑"
/>
<q-breadcrumbs-el
label=
"编辑"
/>
</q-breadcrumbs>
</q-breadcrumbs>
<q-btn
color=
"primary"
label=
"完成"
/>
<q-btn
color=
"primary"
label=
"完成"
@
click=
"setCustomerClueRuleInfo"
/>
</div>
</div>
<div
class=
"container"
>
<div
class=
"container"
>
<div
class=
"content-block"
>
<div
class=
"content-block"
>
...
@@ -34,26 +34,27 @@
...
@@ -34,26 +34,27 @@
<div
class=
"fission-subtitle flex align-center"
>
<div
class=
"fission-subtitle flex align-center"
>
选择分配规则:
选择分配规则:
<div
class=
"q-gutter-sm"
>
<div
class=
"q-gutter-sm"
>
<q-radio
v-model=
"
data.
editMsg.RuleAllotWay"
:val=
"1"
label=
"顺序分配"
/>
<q-radio
v-model=
"editMsg.RuleAllotWay"
:val=
"1"
label=
"顺序分配"
/>
<q-radio
v-model=
"
data.
editMsg.RuleAllotWay"
:val=
"2"
label=
"随机分配"
/>
<q-radio
v-model=
"editMsg.RuleAllotWay"
:val=
"2"
label=
"随机分配"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<departmentStaff
<departmentStaff
v-model=
"
data.
showDialog"
v-model=
"showDialog"
v-model:defaultArray=
"d
ata.d
efaultArray"
v-model:defaultArray=
"defaultArray"
nodeKey=
"newId"
nodeKey=
"newId"
labelKey=
"DeptName"
labelKey=
"DeptName"
childrenKey=
"ChildList"
childrenKey=
"ChildList"
strategy=
'leaf'
strategy=
'leaf'
:treeData=
"data
.data
Tree"
:treeData=
"dataTree"
/>
/>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
import
{
defineComponent
,
defineComponent
,
toRefs
,
onMounted
onMounted
}
from
'vue'
}
from
'vue'
import
requestGroup
from
'@/components/customer/request-group.vue'
import
requestGroup
from
'@/components/customer/request-group.vue'
...
@@ -71,10 +72,10 @@ export default defineComponent({
...
@@ -71,10 +72,10 @@ export default defineComponent({
msg
,
msg
,
data
,
data
,
getDetail
,
getDetail
,
getEmployeeData
getEmployeeData
,
setCustomerClueRuleInfo
,
}
=
editRuleModule
();
}
=
editRuleModule
();
onMounted
(()
=>
{
onMounted
(()
=>
{
if
(
msg
().
RuleId
>
0
)
{
if
(
msg
().
RuleId
>
0
)
{
console
.
log
(
'getDetail'
,
msg
())
console
.
log
(
'getDetail'
,
msg
())
getDetail
()
getDetail
()
...
@@ -84,7 +85,8 @@ export default defineComponent({
...
@@ -84,7 +85,8 @@ export default defineComponent({
return
{
return
{
jumpBeforePage
,
jumpBeforePage
,
changeDialog
,
changeDialog
,
data
,
...
toRefs
(
data
),
setCustomerClueRuleInfo
}
}
}
}
...
...
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