Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
corporateCulture-qd
Overview
Overview
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
王立鹏
corporateCulture-qd
Commits
a30d8a85
Commit
a30d8a85
authored
Mar 11, 2026
by
lijiabin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【需求 20331】 feat: 推送人员新增推送全员
parent
ca761014
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
159 additions
and
71 deletions
+159
-71
index.vue
src/views/publishLongArticle/index.vue
+95
-33
index.vue
src/views/publishVideo/index.vue
+64
-38
No files found.
src/views/publishLongArticle/index.vue
View file @
a30d8a85
...
...
@@ -169,10 +169,18 @@
<!-- 如果是官方账号的话还有推送相关的配置 以及能上传视频-->
<template
v-if=
"userInfo.isOfficialAccount"
>
<el-form-item
label=
"推送给"
>
<el-button
class=
"button-new-tag"
size=
"small"
@
click=
"handleSelectUserAndDept"
>
+ 添加部门
</el-button>
<span
class=
"ml-2 text-sm text-gray-600"
>
{{
selectedText
}}
已选择下属部门
</span>
<div
class=
"w-full flex items-center gap-2"
>
<el-radio-group
v-model=
"form.isPushAll"
>
<el-radio
:value=
"BooleanFlag.YES"
>
全员
</el-radio>
<el-radio
:value=
"BooleanFlag.NO"
>
指定部门/人员
</el-radio>
</el-radio-group>
</div>
<div
v-show=
"form.isPushAll === BooleanFlag.NO"
class=
"flex items-center gap-2"
>
<el-button
class=
"button-new-tag"
size=
"small"
@
click=
"handleSelectUserAndDept"
>
+ 添加部门/人员
</el-button>
<span
class=
"ml-2 text-sm text-gray-600"
>
{{
selectedText
}}
</span>
</div>
</el-form-item>
<el-form-item
label=
"推送类型"
prop=
"pushType"
>
<el-radio-group
v-model=
"form.pushType"
>
...
...
@@ -204,7 +212,38 @@
</
template
>
</div>
</template>
<!-- 如果是官方账号的话还有推送相关的配置 帖子也要加推送-->
<
template
v-if=
"userInfo.isOfficialAccount && form.type === ArticleTypeEnum.POST"
>
<el-form-item
label=
"推送给"
>
<div
class=
"w-full flex items-center gap-2"
>
<el-radio-group
v-model=
"form.isPushAll"
>
<el-radio
:value=
"BooleanFlag.YES"
>
全员
</el-radio>
<el-radio
:value=
"BooleanFlag.NO"
>
指定部门/人员
</el-radio>
</el-radio-group>
</div>
<div
v-show=
"form.isPushAll === BooleanFlag.NO"
class=
"flex items-center gap-2"
>
<el-button
class=
"button-new-tag"
size=
"small"
@
click=
"handleSelectUserAndDept"
>
+ 添加部门/人员
</el-button>
<span
class=
"ml-2 text-sm text-gray-600"
>
{{
selectedText
}}
</span>
</div>
</el-form-item>
<el-form-item
label=
"推送类型"
prop=
"pushType"
>
<el-radio-group
v-model=
"form.pushType"
>
<el-radio
:value=
"SendTypeEnum.IMMEDIATE"
>
立即推送
</el-radio>
<el-radio
:value=
"SendTypeEnum.SCHEDULED"
>
定时推送
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
v-if=
"form.pushType === SendTypeEnum.SCHEDULED"
prop=
"pushTime"
>
<el-date-picker
v-model=
"form.pushTime"
type=
"datetime"
placeholder=
"选择推送时间"
:disabled-date=
"(time: Date) => time.getTime()
<
Date
.
now
()
-
1000
*
60
*
60
*
24
"
value-format=
"X"
/>
</el-form-item>
</
template
>
<!-- 发布设置 -->
<div>
<el-form-item
label=
"发布时间"
prop=
"sendType"
>
...
...
@@ -311,6 +350,7 @@ const [form, resetForm] = useResetData({
sendTime
:
''
,
releaseStatus
:
ReleaseStatusTypeEnum
.
PUBLISH
,
isPushAll
:
BooleanFlag
.
YES
,
// 推送设置
pushType
:
SendTypeEnum
.
IMMEDIATE
,
pushTime
:
''
,
...
...
@@ -404,21 +444,33 @@ const transFormData = (releaseStatus: ReleaseStatusTypeEnum) => {
}
if
(
(
data
.
type
===
ArticleTypeEnum
.
COLUMN
||
data
.
type
===
ArticleTypeEnum
.
INTERVIEW
)
&&
(
data
.
type
===
ArticleTypeEnum
.
COLUMN
||
data
.
type
===
ArticleTypeEnum
.
INTERVIEW
||
data
.
type
===
ArticleTypeEnum
.
POST
)
&&
userInfo
.
value
.
isOfficialAccount
)
{
data
.
pushList
=
[
...
selectedDepts
.
value
.
map
((
item
)
=>
({
valueId
:
item
.
id
,
valueType
:
1
,
valueName
:
item
.
name
,
})),
...
selectedUsers
.
value
.
map
((
item
)
=>
({
valueId
:
item
.
id
,
valueType
:
2
,
valueName
:
item
.
name
,
})),
]
if
(
data
.
isPushAll
===
BooleanFlag
.
YES
)
{
data
.
pushList
=
[
{
valueId
:
'1'
,
valueType
:
1
,
valueName
:
'亚声威格'
,
},
]
}
else
{
data
.
pushList
=
[
...
selectedDepts
.
value
.
map
((
item
)
=>
({
valueId
:
item
.
id
,
valueType
:
1
,
valueName
:
item
.
name
,
})),
...
selectedUsers
.
value
.
map
((
item
)
=>
({
valueId
:
item
.
id
,
valueType
:
2
,
valueName
:
item
.
name
,
})),
]
}
}
return
data
...
...
@@ -468,6 +520,8 @@ const isEdit = computed(() => !!route.query.id)
onActivated
(
async
()
=>
{
key
.
value
++
resetForm
()
selectedDepts
.
value
=
[]
selectedUsers
.
value
=
[]
await
nextTick
()
if
(
isEdit
.
value
)
{
...
...
@@ -519,23 +573,31 @@ onActivated(async () => {
}
// 4回显推送人员设置
if
(
(
type
===
ArticleTypeEnum
.
COLUMN
||
type
===
ArticleTypeEnum
.
INTERVIEW
)
&&
(
type
===
ArticleTypeEnum
.
COLUMN
||
type
===
ArticleTypeEnum
.
INTERVIEW
||
type
===
ArticleTypeEnum
.
POST
)
&&
userInfo
.
value
.
isOfficialAccount
)
{
selectedDepts
.
value
=
data
.
pushList
?.
filter
((
item
)
=>
item
.
valueType
===
1
)
.
map
((
item
)
=>
({
id
:
item
.
valueId
,
name
:
item
.
valueName
,
}))
||
[]
selectedUsers
.
value
=
data
.
pushList
?.
filter
((
item
)
=>
item
.
valueType
===
2
)
.
map
((
item
)
=>
({
id
:
item
.
valueId
,
name
:
item
.
valueName
,
}))
||
[]
if
(
data
.
pushList
?.
find
((
item
)
=>
item
.
valueId
==
'1'
))
{
form
.
value
.
isPushAll
=
BooleanFlag
.
YES
selectedDepts
.
value
=
[]
selectedUsers
.
value
=
[]
}
else
{
selectedDepts
.
value
=
data
.
pushList
?.
filter
((
item
)
=>
item
.
valueType
===
1
)
.
map
((
item
)
=>
({
id
:
item
.
valueId
,
name
:
item
.
valueName
,
}))
||
[]
selectedUsers
.
value
=
data
.
pushList
?.
filter
((
item
)
=>
item
.
valueType
===
2
)
.
map
((
item
)
=>
({
id
:
item
.
valueId
,
name
:
item
.
valueName
,
}))
||
[]
}
}
}
})
...
...
src/views/publishVideo/index.vue
View file @
a30d8a85
...
...
@@ -139,17 +139,24 @@
<div
class=
"mb-8"
>
<el-form-item>
<label
class=
"block text-sm font-semibold text-gray-700 mb-3"
>
推送对象
</label>
<div
class=
"w-full"
>
<el-button
class=
"button-new-tag"
size=
"small"
@
click=
"handleSelectUserAndDept"
>
+ 添加部门
</el-button>
<span
class=
"ml-2 text-sm text-gray-600"
>
{{
selectedText
}}
已选择下属部门
</span
<div
class=
"w-full flex items-center gap-2"
>
<el-radio-group
v-model=
"form.isPushAll"
>
<el-radio
:value=
"BooleanFlag.YES"
>
全员
</el-radio>
<el-radio
:value=
"BooleanFlag.NO"
>
指定部门/人员
</el-radio>
</el-radio-group>
<div
v-show=
"form.isPushAll === BooleanFlag.NO"
class=
"flex items-center gap-2"
>
<el-button
class=
"button-new-tag"
size=
"small"
@
click=
"handleSelectUserAndDept"
>
+ 添加部门
</el-button>
<span
class=
"ml-2 text-sm text-gray-600"
>
{{
selectedText
}}
</span>
</div>
</div>
</el-form-item>
</div>
...
...
@@ -347,7 +354,7 @@
<
script
setup
lang=
"ts"
>
import
UploadVideo
from
'@/components/common/UploadVideo/index.vue'
import
{
useResetData
}
from
'@/hooks'
import
{
ArticleTypeEnum
,
ReleaseStatusTypeEnum
,
SendTypeEnum
}
from
'@/constants'
import
{
ArticleTypeEnum
,
ReleaseStatusTypeEnum
,
SendTypeEnum
,
BooleanFlag
}
from
'@/constants'
import
{
addOrUpdateArticle
,
uploadFile
,
getArticleDetail
}
from
'@/api'
import
SelectTags
from
'@/components/common/SelectTags/index.vue'
import
type
{
TagItemDto
,
AddOrUpdateVideoDto
}
from
'@/api'
...
...
@@ -386,6 +393,7 @@ const [form, resetData] = useResetData({
videoDuration
:
''
,
relateColumnId
:
''
as
string
|
number
,
isPushAll
:
BooleanFlag
.
YES
,
// 推送设置
pushType
:
SendTypeEnum
.
IMMEDIATE
,
pushTime
:
''
,
...
...
@@ -534,24 +542,36 @@ const tansformData = (releaseStatus: ReleaseStatusTypeEnum): AddOrUpdateVideoDto
releaseStatus
,
}
if
(
userInfo
.
value
.
isOfficialAccount
)
{
data
.
pushList
=
[
...
selectedDepts
.
value
.
map
((
item
)
=>
({
valueId
:
item
.
id
,
valueType
:
1
,
valueName
:
item
.
name
,
})),
...
selectedUsers
.
value
.
map
((
item
)
=>
({
valueId
:
item
.
id
,
valueType
:
2
,
valueName
:
item
.
name
,
})),
]
if
(
form
.
value
.
isPushAll
===
BooleanFlag
.
YES
)
{
data
.
pushList
=
[
{
valueId
:
'1'
,
valueType
:
1
,
valueName
:
'亚声威格'
,
},
]
}
else
{
data
.
pushList
=
[
...
selectedDepts
.
value
.
map
((
item
)
=>
({
valueId
:
item
.
id
,
valueType
:
1
,
valueName
:
item
.
name
,
})),
...
selectedUsers
.
value
.
map
((
item
)
=>
({
valueId
:
item
.
id
,
valueType
:
2
,
valueName
:
item
.
name
,
})),
]
}
}
return
data
as
AddOrUpdateVideoDto
}
const
loading
=
ref
(
false
)
const
resetPageData
=
()
=>
{
selectedDepts
.
value
=
[]
selectedUsers
.
value
=
[]
resetData
()
locationVideoBlolUrl
.
value
=
''
}
...
...
@@ -616,21 +636,27 @@ onActivated(async () => {
tagList
:
data
.
tagIdList
?.
slice
(
1
),
}
// 回显推送的部门 这个后端没有返回相关数据 需要返回
console
.
log
(
data
.
pushList
,
'data.pushList'
)
selectedDepts
.
value
=
data
.
pushList
?.
filter
((
item
)
=>
item
.
valueType
===
1
)
.
map
((
item
)
=>
({
id
:
item
.
valueId
,
name
:
item
.
valueName
,
}))
||
[]
selectedUsers
.
value
=
data
.
pushList
?.
filter
((
item
)
=>
item
.
valueType
===
2
)
.
map
((
item
)
=>
({
id
:
item
.
valueId
,
name
:
item
.
valueName
,
}))
||
[]
if
(
data
.
pushList
?.
find
((
item
)
=>
item
.
valueId
==
'1'
))
{
form
.
value
.
isPushAll
=
BooleanFlag
.
YES
selectedDepts
.
value
=
[]
selectedUsers
.
value
=
[]
}
else
{
form
.
value
.
isPushAll
=
BooleanFlag
.
NO
selectedDepts
.
value
=
data
.
pushList
?.
filter
((
item
)
=>
item
.
valueType
===
1
)
.
map
((
item
)
=>
({
id
:
item
.
valueId
,
name
:
item
.
valueName
,
}))
||
[]
selectedUsers
.
value
=
data
.
pushList
?.
filter
((
item
)
=>
item
.
valueType
===
2
)
.
map
((
item
)
=>
({
id
:
item
.
valueId
,
name
:
item
.
valueName
,
}))
||
[]
}
}
})
</
script
>
...
...
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