Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
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
罗超
confucius
Commits
11103e1f
Commit
11103e1f
authored
Aug 18, 2021
by
黄奎
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
parents
31dc42c0
e6f555f0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1961 additions
and
4 deletions
+1961
-4
wechat.js
src/api/system/wechat.js
+26
-1
chaneelcode-form.vue
src/components/enterprise/chaneelcode-form.vue
+522
-0
choiceapproval.vue
src/components/enterprise/choiceapproval.vue
+210
-0
addchannelcode.vue
src/pages/enterprise/addchannelcode.vue
+867
-0
channelcodeList.vue
src/pages/enterprise/channelcodeList.vue
+324
-0
routes.js
src/router/routes.js
+10
-1
erpindex.js
src/utils/erpindex.js
+2
-2
No files found.
src/api/system/wechat.js
View file @
11103e1f
...
...
@@ -272,4 +272,29 @@ export function SetSynvEduEmployee(data) {
method
:
'post'
,
data
})
}
\ No newline at end of file
}
/**
* 删除分组/标签
*
*/
export
function
getWeChatChannelGroupList
(
data
)
{
return
request
({
url
:
'/QYWeChat/GetWeChatChannelGroupList'
,
method
:
'post'
,
data
})
}
/**
* 删除分组/标签
*
*/
export
function
getWeChatChannelPageList
(
data
)
{
return
request
({
url
:
'/QYWeChat/GetWeChatChannelPageList'
,
method
:
'post'
,
data
})
}
src/components/enterprise/chaneelcode-form.vue
0 → 100644
View file @
11103e1f
This diff is collapsed.
Click to expand it.
src/components/enterprise/choiceapproval.vue
0 → 100644
View file @
11103e1f
<
style
>
.choiceappoval
.ApprovalProcessBg
{
background
:
#f8f8f8
;
max-height
:
400px
;
overflow-y
:
auto
;
}
.choiceappoval
.Approval_yxList
{
width
:
300px
;
background
:
#f8f8f8
;
min-height
:
400px
;
max-height
:
400px
;
overflow-y
:
auto
;
}
.choiceappoval
.Approval_yxList
li
{
display
:
inline-block
;
width
:
100%
;
line-height
:
40px
;
text-indent
:
15px
;
border-bottom
:
1px
dotted
#eee
;
}
</
style
>
<
template
>
<div>
<q-dialog
v-model=
"IsShow"
persistent
>
<q-card
style=
"width: 700px; max-width: 80vw;"
class=
"choiceappoval"
>
<q-card-section
class=
"row items-center q-pb-none "
>
<div
class=
"text-h6"
>
选择企业成员
</div>
<q-space
/>
<q-btn
icon=
"close"
flat
round
dense
v-close-popup
/>
</q-card-section>
<q-separator
/>
<q-card-section
class=
"q-pt-none"
style=
"padding: 20px 0;"
>
<div
style=
"display: flex;align-items: flex-start;justify-content: space-between;"
>
<div
style=
"width: 300px; margin: 0 20px;"
>
<p
style=
"margin: 0 0 10px 0;display: flex;align-items: center;"
>
选择:
<el-input
style=
"width: 200px;"
placeholder=
"输入关键字进行过滤"
v-model=
"filterText"
>
</el-input>
</p>
<el-tree
class=
'ApprovalProcessBg'
:filter-node-method=
"filterNode"
:data=
"memberList"
show-checkbox
ref=
"treeUser"
:props=
"defaultProps"
:render-after-expand=
"false"
node-key=
"DeptId"
@
check-change=
"handleNodeChange"
>
</el-tree>
</div>
<div
style=
"width: 300px; margin: 0 20px;"
>
<p
style=
"margin: 0 0 20px 0;"
>
已选:
</p>
<div
class=
"Approval_yxList"
>
<li
v-for=
"item in showMember"
>
{{
item
.
DeptName
}}
<i
@
click=
"mySetCheckedKeys(item.DeptId)"
class=
"el-icon-circle-close showMemberIcon"
></i>
</li>
</div>
</div>
</div>
</q-card-section>
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
class=
"q-mr-md"
label=
"取消"
@
click=
"closeEditOrder"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"确定"
@
click=
"saveOrderInfo()"
/>
</q-card-actions>
</q-card>
</q-dialog>
</div>
</
template
>
<
script
>
import
{
getEmployeeAddrBook
}
from
'../../api/users/user'
import
selectMaterial
from
"./selectMaterial"
export
default
{
props
:
{
outerindex
:
{
type
:
String
,
default
:
''
,
},
byval
:{
type
:
Array
,
default
:
[],
},
cptype
:{
//1是列表上使用2 新增使用
type
:
String
,
default
:
'1'
,
}
},
data
()
{
return
{
IsShow
:
true
,
memberList
:
[],
filterText
:
""
,
defaultProps
:
{
children
:
'ChildList'
,
label
:
'DeptName'
,
},
userList
:
[],
showMember
:
[],
memberSetCheckedKeys
:
[],
sysUserKeys
:
[],
}
},
created
()
{
if
(
this
.
byval
.
length
>
0
){
this
.
memberSetCheckedKeys
=
[];
this
.
showMember
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
byval
))
this
.
byval
.
forEach
(
x
=>
{
this
.
memberSetCheckedKeys
.
push
(
x
.
DeptId
)
})
}
this
.
getMember
()
//部门下面选择员工
},
mounted
()
{
},
watch
:
{
filterText
(
val
)
{
this
.
$refs
.
treeUser
.
filter
(
val
);
},
},
methods
:
{
getMember
()
{
let
_arr
=
this
.
sysUserKeys
.
concat
(
this
.
memberSetCheckedKeys
)
getEmployeeAddrBook
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
memberList
=
res
.
Data
let
_this
=
this
;
console
.
log
(
_arr
)
_this
.
$refs
.
treeUser
.
setCheckedKeys
(
_arr
);
}
}).
catch
(()
=>
{
})
},
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
;
return
data
.
DeptName
.
indexOf
(
value
)
!==
-
1
;
},
handleNodeChange
(
data
,
checked
)
{
data
.
IsCheck
=
checked
;
if
(
data
.
DataType
==
2
&&
data
.
IsCheck
)
{
//是员工且选中
let
isExsit
=
false
this
.
showMember
.
forEach
(
x
=>
{
if
(
x
.
DeptId
==
data
.
DeptId
)
{
isExsit
=
true
return
false
}
})
if
(
!
isExsit
)
{
this
.
showMember
.
push
({
DeptName
:
data
.
DeptName
,
DeptId
:
data
.
DeptId
})
this
.
memberSetCheckedKeys
.
push
(
data
.
DeptId
)
}
}
else
if
(
data
.
DataType
==
2
&&
!
data
.
IsCheck
)
{
if
(
this
.
showMember
.
findIndex
(
item
=>
item
.
DeptId
===
data
.
DeptId
)
!=
-
1
)
{
this
.
showMember
.
splice
(
this
.
showMember
.
findIndex
(
item
=>
item
.
DeptId
===
data
.
DeptId
),
1
)
this
.
memberSetCheckedKeys
.
splice
(
this
.
memberSetCheckedKeys
.
findIndex
(
item
=>
item
===
data
.
DeptId
),
1
)
if
(
this
.
showMember
.
findIndex
(
item
=>
item
.
DeptId
===
data
.
ParentId
)
!=
-
1
)
{
this
.
memberSetCheckedKeys
.
splice
(
this
.
memberSetCheckedKeys
.
findIndex
(
item
=>
item
===
data
.
ParentId
),
1
)
}
}
}
if
(
data
.
DataType
!=
2
&&
data
.
IsCheck
)
{
if
(
this
.
memberSetCheckedKeys
.
findIndex
(
item
=>
item
===
data
.
DeptId
)
==
-
1
)
{
this
.
memberSetCheckedKeys
.
push
(
data
.
DeptId
)
}
}
else
if
(
data
.
DataType
==
2
&&
!
data
.
IsCheck
)
{
if
(
this
.
memberSetCheckedKeys
.
findIndex
(
item
=>
item
===
data
.
DeptId
)
!=
-
1
)
{
this
.
memberSetCheckedKeys
.
splice
(
this
.
memberSetCheckedKeys
.
findIndex
(
item
=>
item
===
data
.
DeptId
),
1
)
if
(
this
.
showMember
.
findIndex
(
item
=>
item
.
DeptId
===
data
.
ParentId
)
!=
-
1
)
{
this
.
memberSetCheckedKeys
.
splice
(
this
.
memberSetCheckedKeys
.
findIndex
(
item
=>
item
===
data
.
ParentId
),
1
)
}
}
}
},
mySetCheckedKeys
(
id
)
{
if
(
this
.
memberSetCheckedKeys
.
length
==
0
)
return
if
(
id
==
-
1
)
{
this
.
$refs
.
treeUser
.
setCheckedKeys
(
this
.
memberSetCheckedKeys
)
return
}
this
.
showMember
.
splice
(
this
.
showMember
.
findIndex
(
item
=>
item
.
DeptId
===
id
),
1
)
this
.
memberSetCheckedKeys
.
splice
(
this
.
memberSetCheckedKeys
.
findIndex
(
item
=>
item
===
id
),
1
)
this
.
$refs
.
treeUser
.
setCheckedKeys
(
this
.
memberSetCheckedKeys
);
},
//关闭弹窗
closeEditOrder
()
{
this
.
$emit
(
'close'
)
},
saveOrderInfo
()
{
this
.
$emit
(
'success'
,
this
.
showMember
,
this
.
cptype
)
}
}
}
</
script
>
\ No newline at end of file
src/pages/enterprise/addchannelcode.vue
0 → 100644
View file @
11103e1f
This diff is collapsed.
Click to expand it.
src/pages/enterprise/channelcodeList.vue
0 → 100644
View file @
11103e1f
<
template
>
<div
class=
"channelcodeList page-body"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-input
@
input=
"changePage(1)"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.Name"
label=
"渠道码名称"
@
clear=
"changePage(1)"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"changePage(1)"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.Type"
ref=
"Id"
:options=
"typeList"
label=
"类型"
:dense=
"false"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"changePage(1)"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.Type"
ref=
"Id"
:options=
"GroupList"
label=
"分组"
:dense=
"false"
emit-value
map-options
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table"
separator=
"none"
title=
""
:data=
"data"
:columns=
"columns"
row-key=
"name"
>
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
渠道码
</div>
<q-space
/>
<q-btn
color=
"accent"
style=
"float:right;margin-right:0;"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"新建"
@
click=
"goadd()"
></q-btn>
</
template
>
<
template
v-slot:body-cell-WXQRCode=
"props"
>
<q-td
:props=
"props"
>
<q-img
v-if=
"props.row.WXQRCode && props.row.WXQRCode!=''"
:src=
"props.row.WXQRCode"
style=
"width: 90px;height: 90px;display: flex;"
>
</q-img>
<div>
{{
props
.
row
.
Type
==
1
?
'单人'
:
'多人'
}}
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-LabelList=
"props"
>
<q-td
:props=
"props"
>
<div
style=
"max-width: 300px;"
v-if=
"props.row.LabelList.length>0"
>
<span
v-for=
"(x,y) in props.row.LabelList"
:key=
'y'
>
{{
x
}}{{
props
.
row
.
LabelList
.
length
!=
y
+
1
?
'、'
:
''
}}
</span>
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-SkipVerify=
"props"
>
<q-td
:props=
"props"
>
<div>
{{
props
.
row
.
SkipVerify
==
1
?
'需要验证'
:
'自动通过'
}}
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-UpdateByName=
"props"
>
<q-td
:props=
"props"
>
<div>
{{
props
.
row
.
UpdateByName
}}
</div>
<div>
{{
props
.
row
.
UpdateTime
}}
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
label=
"编辑"
@
click=
"goedit(props.row)"
/>
<q-btn
flat
size=
"xs"
icon=
"delete"
color=
"negative"
class=
"q-mr-xs"
label=
"删除"
@
click=
"goDetailed(props.row)"
/>
</q-td>
</
template
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
</q-table>
</div>
<q-dialog
v-model=
"isDetails"
>
<q-card
style=
"width: 560px;"
>
<q-card-section
class=
"row items-center q-pb-none"
>
<div
class=
"text-h6"
>
欢迎语详情
</div>
<q-space
/>
<q-btn
icon=
"close"
flat
round
dense
v-close-popup
/>
</q-card-section>
<q-card-section
v-if=
'Detailsobj'
class=
"channelcodeList"
>
</q-card-section>
</q-card>
</q-dialog>
</div>
</template>
<
script
>
import
{
getWeChatChannelPageList
,
getWeChatChannelGroupList
}
from
'../../api/system/wechat'
;
import
{
queryEmployee
}
from
'../../api/users/user'
export
default
{
meta
:
{
title
:
"渠道码"
},
name
:
"channelcodeList"
,
data
()
{
return
{
loading
:
false
,
ISsystem
:
false
,
data
:
[],
pageCount
:
0
,
msg
:
{
pageIndex
:
1
,
pageSize
:
15
,
rowsPerPage
:
15
,
ChannelGroupId
:
0
,
Name
:
''
,
Type
:
0
,
},
typeList
:
[
{
Id
:
0
,
Name
:
'不限'
},
{
Id
:
1
,
Name
:
'单人'
},
{
Id
:
2
,
Name
:
'多人'
},
],
//公告column
columns
:
[{
name
:
'二维码'
,
label
:
'二维码'
,
field
:
'二维码'
,
align
:
'left'
},
{
name
:
'Name'
,
field
:
'Name'
,
label
:
'名称'
,
align
:
'left'
,
},
{
name
:
'ChannelGroupName'
,
field
:
'ChannelGroupName'
,
label
:
'分组'
,
align
:
'left'
},
{
name
:
'CustomerNum'
,
field
:
'CustomerNum'
,
label
:
'客户数'
,
align
:
'left'
},
{
name
:
'LabelList'
,
field
:
'LabelList'
,
label
:
'标签'
,
align
:
'left'
},
{
name
:
'SkipVerify'
,
field
:
'SkipVerify'
,
label
:
'自动添加好友'
,
align
:
'left'
},
{
name
:
'UpdateByName'
,
field
:
'UpdateByName'
,
label
:
'操作人'
,
align
:
'left'
},
{
name
:
'optioned'
,
label
:
'操作'
,
field
:
'DeptId'
}
],
GroupList
:
[],
isDetails
:
false
,
Detailsobj
:
null
}
},
created
()
{
this
.
getChannelGroupList
()
//分租列表
this
.
getList
()
},
methods
:
{
getChannelGroupList
()
{
getWeChatChannelGroupList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
GroupList
=
res
.
Data
;
let
obj
=
{
Id
:
0
,
Name
:
'不限'
}
this
.
GroupList
.
unshift
(
obj
)
}
}).
catch
(()
=>
{
})
},
changePage
(
e
)
{
this
.
msg
.
pageIndex
=
1
this
.
getList
()
},
getList
()
{
this
.
loading
=
true
getWeChatChannelPageList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
this
.
data
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
})
},
goadd
()
{
this
.
$router
.
push
({
path
:
'/enterprise/addchannelcode'
,
});
},
goedit
(
row
)
{
//编辑
this
.
$router
.
push
({
path
:
'/enterprise/addWelcome'
,
query
:
{
Id
:
row
.
Id
}
});
},
goDetailed
(
row
)
{
//删除
this
.
$q
.
dialog
({
title
:
'提示信息'
,
message
:
'是否确定删除所此欢迎语?'
,
cancel
:
true
,
persistent
:
true
,
ok
:
"确定"
,
cancel
:
"取消"
,
}).
onOk
(()
=>
{
delWechatWelcomesInfo
({
WelcomesId
:
row
.
Id
}).
then
(
res
=>
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
res
.
Message
,
position
:
'top'
})
this
.
getList
()
})
}).
onCancel
(()
=>
{
});
},
viewDetails
(
row
)
{
this
.
Detailsobj
=
row
this
.
isDetails
=
true
}
}
}
</
script
>
<
style
>
.channelcodeList
.Sysuser_Date
.el-input--prefix
.el-input__inner
{
background-color
:
red
;
border
:
0
;
}
.channelcodeList
.state-item
{
padding
:
2px
5px
;
border-radius
:
3px
;
text-align
:
center
;
font-size
:
10px
;
}
.channelcodeList
.frIdlist
{
padding
:
3px
10px
;
border-radius
:
3px
;
background
:
#EEEEEF
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
5px
;
margin-bottom
:
5px
;
cursor
:
pointer
;
}
.class-popover
.q-pr-lg
{
padding-right
:
0
;
margin-top
:
20px
;
}
.channelcodeList
.el-date-editor.el-input
{
width
:
100%
;
}
.channelcodeList
.el-date-editor.el-input
input
{
background-color
:
transparent
!important
;
}
.channelcodeList
.el-range-editor
.el-range-input
{
background
:
none
;
}
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
.channelcodeList
.el-drawer.rtl
{
overflow
:
inherit
;
}
.channelcodeList
.box_l
{
width
:
400px
;
border-radius
:
6px
;
margin-right
:
15px
;
background
:
#fff
;
margin-top
:
20px
;
margin-left
:
10px
;
box-shadow
:
0px
0px
10px
rgba
(
191
,
191
,
191
,
0.7
);
}
.channelcodeList
.boxl_title
{
width
:
100%
;
height
:
56px
;
display
:
flex
;
align-items
:
center
;
border-bottom
:
1px
solid
#e8e8e8
;
}
</
style
>
\ No newline at end of file
src/router/routes.js
View file @
11103e1f
...
...
@@ -1190,7 +1190,16 @@ const routes = [{
component
:
()
=>
import
(
"pages/enterprise/customerLabel"
)
},
{
path
:
"/enterprise/channelcodeList"
,
//企微 渠道活码
component
:
()
=>
import
(
"pages/enterprise/channelcodeList"
)
},
{
path
:
"/enterprise/addchannelcode"
,
//企微 新增修改渠道活码
component
:
()
=>
import
(
"pages/enterprise/addchannelcode"
)
},
...
...
src/utils/erpindex.js
View file @
11103e1f
...
...
@@ -81,9 +81,9 @@ export default {
//域名管理对象
Vue
.
prototype
.
domainManager
=
function
()
{
// let domainUrl = 'http://192.168.20.24';
let
domainUrl
=
'http://192.168.20.
51:8082
'
;
let
domainUrl
=
'http://192.168.20.
6:8083
'
;
let
viewFileUrl
=
'http://192.168.20.214:8120'
;
let
mallUrl
=
"http://192.168.20.
17:8014
"
;
let
mallUrl
=
"http://192.168.20.
6:8088
"
;
// let vtUploadUrl = "http://192.168.20.214:8120";
let
vtUploadUrl
=
"http://upload.oytour.com"
;
let
vtViewUrl
=
"http://192.168.20.214:8130"
;
...
...
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