Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
Y
ybf
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xulili
ybf
Commits
5949cb0b
Commit
5949cb0b
authored
Mar 14, 2020
by
wengjianling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pc通讯录管理
parent
a9758cfa
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
546 additions
and
458 deletions
+546
-458
mail.js
ybf_admin/src/api/in/mail.js
+34
-8
layout.vue
ybf_admin/src/layout/header-aside/layout.vue
+10
-10
addGroup.vue
ybf_admin/src/pages/in/contact/components/addGroup.vue
+242
-0
deleteGroup.vue
ybf_admin/src/pages/in/contact/components/deleteGroup.vue
+116
-0
history.vue
ybf_admin/src/pages/in/contact/components/history.vue
+4
-4
move.vue
ybf_admin/src/pages/in/contact/components/move.vue
+7
-17
mail.vue
ybf_admin/src/pages/in/contact/mail.vue
+133
-419
No files found.
ybf_admin/src/api/in/mail.js
View file @
5949cb0b
...
...
@@ -5,7 +5,7 @@ import request from '@/utils/request'
//通讯录管理---表格---获取全部人员
export
function
getAllMemberList
(
data
)
{
return
request
({
url
:
'/admin/auth/addressbook/
getUser
All'
,
url
:
'/admin/auth/addressbook/
clerk/get
All'
,
method
:
'get'
,
params
:
data
})
...
...
@@ -13,7 +13,7 @@ export function getAllMemberList(data) {
// 获取未分组人员
export
function
getNoGroupMember
(
data
)
{
return
request
({
url
:
'/admin/auth/addressbook/
getUserUnselected
'
,
url
:
'/admin/auth/addressbook/
clerk/getArrangeNot
'
,
method
:
'get'
,
params
:
data
})
...
...
@@ -21,7 +21,7 @@ export function getNoGroupMember(data) {
// 获取柜组用户
export
function
getGroupById
(
data
)
{
return
request
({
url
:
'/admin/auth/addressbook/
getUserByShop
Id'
,
url
:
'/admin/auth/addressbook/
orgnization/getClerkBy
Id'
,
method
:
'get'
,
params
:
data
})
...
...
@@ -37,13 +37,13 @@ export function getMemberById(data) {
//通讯录管理---组织架构
export
function
getOrgTree
()
{
return
request
({
url
:
'/admin/auth/addressbook/
addressBookPage
'
,
url
:
'/admin/auth/addressbook/
orgnization/getAll
'
,
method
:
'get'
,
})
}
export
function
getHistoryList
(
data
)
{
return
request
({
url
:
'admin/auth/addressbook/synchronization'
,
url
:
'admin/auth/addressbook/
clerk/
synchronization'
,
method
:
'get'
,
params
:
data
})
...
...
@@ -57,7 +57,6 @@ export function getHistoryList(data) {
}
// 获取移动分组
// /admin/auth/addressbook/synchronization
export
function
getGroup
()
{
return
request
({
url
:
'/admin/auth/addressbook/selectGroupPage'
,
...
...
@@ -77,7 +76,16 @@ export function getHistoryList(data) {
// 移动人员
export
function
moveMember
(
data
)
{
return
request
({
url
:
'admin/auth/addressbook/updateStallClerkByUserId'
,
url
:
'admin/auth/addressbook/clerk/moveTo'
,
method
:
'put'
,
params
:
data
})
}
// 设置管理员||取消管理员
export
function
changeRole
(
data
)
{
return
request
({
url
:
'admin/auth/addressbook/clerk/configManagerById'
,
method
:
'put'
,
params
:
data
})
...
...
@@ -86,8 +94,26 @@ export function getHistoryList(data) {
// 模糊查询
export
function
search
(
data
)
{
return
request
({
url
:
'/admin/auth/addressbook/
getUserByKeyWords
'
,
url
:
'/admin/auth/addressbook/
clerk/getByUserIdOrUserName
'
,
method
:
'get'
,
params
:
data
})
}
// 添加子部门
export
function
addGroup
(
data
)
{
return
request
({
url
:
'/admin/auth/addressbook/orgnization/save'
,
method
:
'post'
,
params
:
data
})
}
// 删除子部门
export
function
deleteGroup
(
data
)
{
return
request
({
url
:
'/admin/auth/addressbook/orgnization/deleteById'
,
method
:
'delete'
,
params
:
data
})
}
\ No newline at end of file
ybf_admin/src/layout/header-aside/layout.vue
View file @
5949cb0b
...
...
@@ -11,7 +11,7 @@
<!-- 顶栏 -->
<div
class=
"d2-theme-header"
:style=
"
{
opacity: this.searchActive ? 0.5 : 1 }"
:style=
"
{ opacity: this.searchActive ? 0.5 : 1 }"
flex-box="0"
flex
>
...
...
@@ -33,7 +33,7 @@
</div>
</div>
<!-- 下面 主体 -->
<div
class=
"d2-theme-container"
flex-box=
"1"
flex
flex
=
"dir:top"
>
<div
class=
"d2-theme-container"
flex-box=
"1"
flex=
"dir:top"
>
<!-- 主体 侧边栏 -->
<!--
<div
flex-box=
"0"
...
...
@@ -101,17 +101,17 @@ export default {
name
:
'd2-layout-header-aside'
,
mixins
:
[
mixinSearch
],
components
:
{
d2MenuSide
,
//
d2MenuSide,
d2MenuHeader
,
d2Tabs
,
//
d2Tabs,
d2HeaderFullscreen
,
d2HeaderLocales
,
d2HeaderSearch
,
d2HeaderSize
,
d2HeaderTheme
,
//
d2HeaderLocales,
//
d2HeaderSearch,
//
d2HeaderSize,
//
d2HeaderTheme,
d2HeaderUser
,
d2HeaderLog
,
d2HeaderColor
,
//
d2HeaderLog,
//
d2HeaderColor,
d2HeaderAlarmNotify
},
data
()
{
...
...
ybf_admin/src/pages/in/contact/components/addGroup.vue
0 → 100644
View file @
5949cb0b
<
template
>
<div
class=
"ct"
>
<el-dialog
title=
"创建子部门"
:visible
.
sync=
"addDialog"
width=
"30%"
:show-close=
"false"
:close-on-click-modal=
"false"
>
<div
class=
"config_item"
>
<label
class=
"config_name"
>
部门名称
</label>
<el-input
class=
"config_value"
v-model=
"params.d_name"
placeholder=
"请输入部门名称"
/>
</div>
<div
class=
"config_item"
>
<span
class=
"config_name"
>
上级部门
</span>
<div>
<div
@
click=
"showTreeData"
class=
"config_value father_group"
>
<span
class=
"father_name_text"
>
{{
paramsForShow
.
father_name
}}
</span>
<span
:class=
"showTree ? 'arrow_up' : 'arrow_down'"
></span>
</div>
</div>
</div>
<div
class=
"tree_data"
v-if=
"showTree"
>
<el-tree
ref=
"tree"
class=
"tree"
:check-strictly=
"true"
:data=
"treeData"
node-key=
"id"
@
node-click=
"handleNodeClick"
@
check-change=
"checkChange"
>
</el-tree>
</div>
<div
class=
"config_item"
>
<label
class=
"config_name"
>
店铺编号
</label>
<el-input
class=
"config_value"
v-model=
"params.code"
placeholder=
"请输入店铺编号"
/>
</div>
<div
class=
"tips"
v-if=
"checked"
>
请将表单填写完整
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"handleAddCancel"
size=
"small"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleAddFinish"
size=
"small"
>
确 定
</el-button
>
</span>
</el-dialog>
<div></div>
</div>
</
template
>
<
script
>
import
{
addGroup
,
getOrgTree
}
from
"@/api/in/mail"
;
import
{
log
}
from
"util"
;
export
default
{
props
:
{
addDialog
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
treeData
:
[],
group_name
:
''
,
shop_code
:
''
,
showTree
:
false
,
paramsForShow
:
{
name
:
''
,
father_name
:
''
,
code
:
''
},
params
:
{
d_name
:
''
,
d_parentId
:
''
,
code
:
''
},
checked
:
false
};
},
created
()
{
this
.
getList
()
},
methods
:
{
handleAddCancel
()
{
this
.
$emit
(
"handleAddCancel"
);
},
handleAddFinish
()
{
if
(
!
this
.
params
.
d_name
||
!
this
.
params
.
d_parentId
||
!
this
.
params
.
code
)
{
this
.
checked
=
true
return
}
addGroup
(
this
.
params
).
then
(
res
=>
{
// console.log(res)
})
// console.log(addGroup)
this
.
$emit
(
"handleAddFinish"
);
},
handleNodeClick
(
item
,
node
,
self
)
{
// console.log(item,node,self)
this
.
params
.
d_parentId
=
item
.
id
;
this
.
paramsForShow
.
father_name
=
item
.
label
},
checkChange
(
item
,
node
,
self
)
{
},
showTreeData
()
{
this
.
showTree
=
!
this
.
showTree
},
getList
()
{
getOrgTree
().
then
(
res
=>
{
console
.
log
(
res
.
data
.
organizations
)
this
.
treeData
=
[
res
.
data
.
organizations
];
}).
catch
(
err
=>
{
console
.
log
(
err
)
});
}
}
};
</
script
>
<
style
scoped
>
.tree
>>>
.is-leaf
+
.el-checkbox
.el-checkbox__inner
{
display
:
inline-block
;
}
.tree
>>>
.el-checkbox
.el-checkbox__inner
{
display
:
none
;
}
.choose
{
padding
:
16px
;
font-size
:
16px
;
font-weight
:
bold
;
color
:
rgba
(
56
,
56
,
56
,
1
);
box-sizing
:
border-box
;
}
.title
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
/* border-bottom: 1px solid #f8f8f8; */
padding-bottom
:
10px
;
}
.transfer-footer
{
margin-left
:
20px
;
padding
:
6px
5px
;
}
.ct
>>>
.el-dialog__header
{
border-bottom
:
1px
solid
#f8f8f8
;
}
.ct
>>>
.el-dialog__body
{
padding
:
20px
40px
;
}
.ct
>>>
.el-transfer-panel
{
width
:
250px
;
}
.circle
{
width
:
30px
;
height
:
30px
;
line-height
:
30px
;
border-radius
:
50%
;
border
:
1px
solid
rgba
(
208
,
2
,
27
,
1
);
position
:
relative
;
}
.circle
>>>
.icon
{
width
:
28px
;
height
:
28px
;
position
:
absolute
;
left
:
50%
;
top
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
}
.br
{
border-top
:
1px
solid
#f8f8f8
;
border-bottom
:
1px
solid
#f8f8f8
;
padding
:
24px
0
;
}
.config_item
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
.config_name
:before
{
content
:
'* '
;
color
:
red
;
}
.config_name
{
width
:
80px
;
text-align
:
center
;
margin-right
:
10px
;
}
.config_value
{
width
:
230px
;
}
.father_group
{
margin
:
10px
0
;
width
:
228px
;
height
:
38px
;
border-radius
:
4px
;
border
:
1px
solid
#DCDFE6
;
position
:
relative
;
}
.arrow_down
{
width
:
0
;
height
:
0
;
border-width
:
5px
;
border-style
:
solid
;
border-color
:
#ccc
transparent
transparent
transparent
;
position
:
absolute
;
right
:
10px
;
top
:
20px
;
}
.arrow_up
{
width
:
0
;
height
:
0
;
border-width
:
5px
;
border-style
:
solid
;
border-color
:
transparent
transparent
#ccc
transparent
;
position
:
absolute
;
right
:
10px
;
top
:
15px
;
}
.tree_data
{
margin-left
:
90px
;
}
.father_name_text
{
line-height
:
38px
;
padding-left
:
15px
;
}
.tips
{
width
:
100%
;
text-align
:
center
;
color
:
red
;
margin
:
5px
0
;
}
</
style
>
ybf_admin/src/pages/in/contact/components/deleteGroup.vue
0 → 100644
View file @
5949cb0b
<
template
>
<div
class=
"ct"
>
<el-dialog
title=
"删除子部门"
:visible
.
sync=
"deleteDialog"
width=
"30%"
:show-close=
"false"
:close-on-click-modal=
"false"
>
<div
v-if=
"nowNode.children.length > 0 ? true : false"
>
删除"
{{
nowNode
.
label
}}
"请先删除其下所有子部门
</div>
<div
v-else
>
部门"
{{
nowNode
.
label
}}
"删除后,该部门下的用户会被分配至“未分组列表”,是否删除?
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"handleDeleteCancel"
size=
"small"
>
取 消
</el-button>
<el-button
v-if=
"nowNode.children.length > 0 ? false : true"
type=
"primary"
@
click=
"handleDeleteFinish"
size=
"small"
>
确 定
</el-button
>
</span>
</el-dialog>
<div></div>
</div>
</
template
>
<
script
>
import
{
deleteGroup
}
from
"@/api/in/mail"
;
import
{
log
}
from
"util"
;
export
default
{
props
:
{
deleteDialog
:
{
type
:
Boolean
,
default
:
true
},
nowNode
:
{
type
:
Object
,
default
:
{}
}
},
data
()
{
return
{
};
},
created
()
{
console
.
log
(
this
.
nowNode
)
},
methods
:
{
handleDeleteCancel
()
{
this
.
$emit
(
'handleDeleteCancel'
)
},
handleDeleteFinish
()
{
deleteGroup
({
id
:
this
.
nowNode
.
id
}).
then
(
res
=>
{
console
.
log
(
res
)
})
this
.
$emit
(
'handleDeleteFinish'
)
}
}
};
</
script
>
<
style
scoped
>
.tree
>>>
.is-leaf
+
.el-checkbox
.el-checkbox__inner
{
display
:
inline-block
;
}
.tree
>>>
.el-checkbox
.el-checkbox__inner
{
display
:
none
;
}
.choose
{
padding
:
16px
;
font-size
:
16px
;
font-weight
:
bold
;
color
:
rgba
(
56
,
56
,
56
,
1
);
box-sizing
:
border-box
;
}
.title
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
/* border-bottom: 1px solid #f8f8f8; */
padding-bottom
:
10px
;
}
.transfer-footer
{
margin-left
:
20px
;
padding
:
6px
5px
;
}
.ct
>>>
.el-dialog__header
{
border-bottom
:
1px
solid
#f8f8f8
;
}
.ct
>>>
.el-dialog__body
{
padding
:
20px
40px
;
}
.ct
>>>
.el-transfer-panel
{
width
:
250px
;
}
.circle
{
width
:
30px
;
height
:
30px
;
line-height
:
30px
;
border-radius
:
50%
;
border
:
1px
solid
rgba
(
208
,
2
,
27
,
1
);
position
:
relative
;
}
.circle
>>>
.icon
{
width
:
28px
;
height
:
28px
;
position
:
absolute
;
left
:
50%
;
top
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
}
.br
{
border-top
:
1px
solid
#f8f8f8
;
border-bottom
:
1px
solid
#f8f8f8
;
padding
:
24px
0
;
}
</
style
>
ybf_admin/src/pages/in/contact/components/history.vue
View file @
5949cb0b
...
...
@@ -102,7 +102,7 @@ export default {
page
:
{
currentPage
:
1
,
size
:
20
,
total
:
10
0
total
:
0
},
};
},
...
...
@@ -115,9 +115,9 @@ export default {
pageNum
:
1
}
getHistoryList
(
params
).
then
(
res
=>
{
console
.
log
(
res
,
"res"
);
this
.
main
=
res
.
data
.
list
this
.
page
.
total
=
Number
(
res
.
data
.
total
)
//
console.log(res,"res");
this
.
main
=
res
.
data
.
pageInfo
.
list
this
.
page
.
total
=
Number
(
res
.
data
.
pageInfo
.
total
)
})
},
setListsHeadStyle
({
row
,
column
,
rowIndex
,
columnIndex
})
{
...
...
ybf_admin/src/pages/in/contact/components/move.vue
View file @
5949cb0b
...
...
@@ -59,7 +59,6 @@
show-checkbox
:check-strictly=
"true"
:data=
"treeData"
:props=
"orgData"
node-key=
"id"
@
node-click=
"handleNodeClick"
@
check-change=
"checkChange"
...
...
@@ -78,7 +77,7 @@
</
template
>
<
script
>
import
{
get
Group
,
moveMember
}
from
"@/api/in/mail"
;
import
{
get
OrgTree
,
moveMember
}
from
"@/api/in/mail"
;
import
{
log
}
from
"util"
;
export
default
{
...
...
@@ -94,11 +93,6 @@ export default {
},
data
()
{
return
{
orgData
:
{
label
:
"name"
,
children
:
"adminStallList"
,
id
:
"id"
},
treeData
:
[]
};
},
...
...
@@ -110,10 +104,11 @@ export default {
this
.
$emit
(
"handleCancel"
);
},
handleFinish
()
{
console
.
log
(
this
.
idList
)
let
groupId
=
this
.
$refs
.
tree
.
getCheckedKeys
()[
0
]
let
data
=
{
stallIds
:
groupId
,
userIds
:
this
.
idList
+
','
departmentId
:
groupId
,
id
:
this
.
idList
[
0
]
}
moveMember
(
data
).
then
(
res
=>
{
this
.
$emit
(
"handleFinish"
,
false
);
...
...
@@ -162,14 +157,9 @@ export default {
},
getList
()
{
getGroup
().
then
(
res
=>
{
console
.
log
(
res
,
"移动的数据获取"
);
let
obj
=
{
name
:
"未分组"
,
id
:
0
};
res
.
data
=
[
obj
,
...
res
.
data
];
this
.
treeData
=
res
.
data
;
getOrgTree
().
then
(
res
=>
{
console
.
log
(
res
.
data
.
organizations
)
this
.
treeData
=
[
res
.
data
.
organizations
];
});
}
}
...
...
ybf_admin/src/pages/in/contact/mail.vue
View file @
5949cb0b
This diff is collapsed.
Click to expand it.
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