Commit a30d8a85 by lijiabin

【需求 20331】 feat: 推送人员新增推送全员

parent ca761014
......@@ -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,
})) || []
}
}
}
})
......
......@@ -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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment