|
|
@ -1,12 +1,9 @@ |
|
|
|
<template> |
|
|
|
<template> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<!-- <el-affix postion="top" :offset="95" v-if="!isDetail"> --> |
|
|
|
<!-- <el-affix postion="top" :offset="95" target="#app" v-if="!isDetail"> --> |
|
|
|
<div class="flex justify-between mb-4 bg-white" v-if="!isDetail"> |
|
|
|
<div class="flex justify-between mb-4 bg-white" v-if="!isDetail"> |
|
|
|
<b class="text-20px">{{ form.meetingId ? '修改会议' : '新增会议' }}</b> |
|
|
|
<b class="text-20px">{{ form.meetingId ? '修改会议' : '新增会议' }}</b> |
|
|
|
<div> |
|
|
|
<el-button type="success" @click="submit()">保存</el-button> |
|
|
|
<el-button @click="submit(true)">保存至草稿</el-button> |
|
|
|
|
|
|
|
<el-button type="success" @click="submit(false)">保存</el-button> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<!-- </el-affix> --> |
|
|
|
<!-- </el-affix> --> |
|
|
|
<el-form |
|
|
|
<el-form |
|
|
@ -79,6 +76,7 @@ |
|
|
|
<el-select |
|
|
|
<el-select |
|
|
|
v-model="form.expectUsers" |
|
|
|
v-model="form.expectUsers" |
|
|
|
placeholder="选择参会人员" |
|
|
|
placeholder="选择参会人员" |
|
|
|
|
|
|
|
clearable |
|
|
|
filterable |
|
|
|
filterable |
|
|
|
style="width: 100%" |
|
|
|
style="width: 100%" |
|
|
|
multiple |
|
|
|
multiple |
|
|
@ -89,7 +87,7 @@ |
|
|
|
:key="item.id" |
|
|
|
:key="item.id" |
|
|
|
:label="item.name" |
|
|
|
:label="item.name" |
|
|
|
:value="item.id" |
|
|
|
:value="item.id" |
|
|
|
:disabled="item.status == 1 || item.id == userStore.getUser.id" |
|
|
|
:disabled="item.status == 1" |
|
|
|
/> |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
@ -108,7 +106,7 @@ |
|
|
|
</el-checkbox-group> |
|
|
|
</el-checkbox-group> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="24" :offset="0" v-if="form.meetingId && !isAllActived"> |
|
|
|
<el-col :span="24" :offset="0" v-if="!isAllActived"> |
|
|
|
<el-form-item label="缺席原因" prop="absentReason"> |
|
|
|
<el-form-item label="缺席原因" prop="absentReason"> |
|
|
|
<el-input v-model="form.absentReason" placeholder="请输入缺席原因" /> |
|
|
|
<el-input v-model="form.absentReason" placeholder="请输入缺席原因" /> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
@ -116,106 +114,26 @@ |
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-row :gutter="20"> |
|
|
|
<el-col :xl="16" :lg="16" :md="24" :sm="24" :xs="24"> |
|
|
|
<el-col :xl="16" :lg="16" :md="24" :sm="24" :xs="24"> |
|
|
|
<el-tabs v-model="currentUserId" tab-position="top" @tab-click="userTabChange"> |
|
|
|
<el-form-item label="会议内容" prop="meetingContent"> |
|
|
|
<el-tab-pane |
|
|
|
<div v-if="!!isDetail" v-dompurify-html="form.meetingContent" class="w-full"></div> |
|
|
|
v-for="item in form.meetingContentList" |
|
|
|
<Editor v-else v-model="form.meetingContent" height="500px" style="width: 100%" /> |
|
|
|
:key="item.userId" |
|
|
|
</el-form-item> |
|
|
|
:label="item.userName" |
|
|
|
|
|
|
|
:name="item.userId + ''" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</el-tabs> |
|
|
|
|
|
|
|
<el-tabs v-model="currentContentId" tab-position="left" addable @edit="handleTabsEdit"> |
|
|
|
|
|
|
|
<el-tab-pane |
|
|
|
|
|
|
|
v-for="(item, index) in form.meetingContentList.find( |
|
|
|
|
|
|
|
(it) => it.userId == currentUserId |
|
|
|
|
|
|
|
)?.userMeetingContentList" |
|
|
|
|
|
|
|
:key="index" |
|
|
|
|
|
|
|
:label="'内容' + (index + 1)" |
|
|
|
|
|
|
|
:name="index" |
|
|
|
|
|
|
|
:closable="index > 0" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<div v-if="!!isDetail" v-dompurify-html="item.content" class="w-full"></div> |
|
|
|
|
|
|
|
<Editor v-else v-model="item.content" height="500px" style="width: 100%" /> |
|
|
|
|
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
</el-tabs> |
|
|
|
|
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :xl="8" :lg="8" :md="24" :sm="24" :xs="24" v-if="!!form.meetingId"> |
|
|
|
<el-col :xl="8" :lg="8" :md="24" :sm="24" :xs="24" v-if="!!form.meetingId"> |
|
|
|
<div v-if="!!isDetail" v-dompurify-html="form.meetingSummary" class="w-full"></div> |
|
|
|
<el-form-item label="会议纪要" prop="meetingSummary" label-width="80px"> |
|
|
|
<div v-else> |
|
|
|
<!-- <div v-if="!!isDetail" v-dompurify-html="form.meetingSummary" class="w-full"></div> |
|
|
|
<el-tabs v-model="summaryIdx" addable @edit="meetingSummaryEdit"> |
|
|
|
<Editor v-else v-model="form.meetingSummary" height="500px" /> --> |
|
|
|
<el-tab-pane |
|
|
|
<div v-if="!!isDetail" class="w-full">{{ form.meetingSummary }}</div> |
|
|
|
v-for="(item, index) in form.meetingSummaryList" |
|
|
|
<el-input |
|
|
|
:key="index" |
|
|
|
v-else |
|
|
|
:label="`会议纪要${index || ''}`" |
|
|
|
v-model="form.meetingSummary" |
|
|
|
:name="index" |
|
|
|
type="textarea" |
|
|
|
:closable="index > 0" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<Editor |
|
|
|
|
|
|
|
v-model="item.summary" |
|
|
|
|
|
|
|
:toolbarConfig="toolbarConfig" |
|
|
|
|
|
|
|
height="350px" |
|
|
|
|
|
|
|
placeholder="请输入会议纪要" |
|
|
|
placeholder="请输入会议纪要" |
|
|
|
style="width: 100%" |
|
|
|
:maxlength="-1" |
|
|
|
/> |
|
|
|
:show-word-limit="false" |
|
|
|
<div class="mt-10px"> |
|
|
|
:autosize="{ minRows: 20 }" |
|
|
|
<el-form-item label="是否创建待办" label-width="auto"> |
|
|
|
|
|
|
|
<el-radio-group v-model="item.isCreateAgentWork"> |
|
|
|
|
|
|
|
<el-radio :label="true" :value="true"> 创建待办 </el-radio> |
|
|
|
|
|
|
|
<el-radio :label="false" :value="false"> 不创建待办 </el-radio> |
|
|
|
|
|
|
|
</el-radio-group> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="flex items-center" v-if="item.isCreateAgentWork"> |
|
|
|
|
|
|
|
<el-select |
|
|
|
|
|
|
|
class="flex-1" |
|
|
|
|
|
|
|
v-model="item.agentUserList" |
|
|
|
|
|
|
|
placeholder="选择执行人" |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
filterable |
|
|
|
|
|
|
|
multiple |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-option |
|
|
|
|
|
|
|
v-for="it in userOptions" |
|
|
|
|
|
|
|
:key="it.id" |
|
|
|
|
|
|
|
:label="it.name" |
|
|
|
|
|
|
|
:value="it.id" |
|
|
|
|
|
|
|
:disabled="it.status == 1" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</el-select> |
|
|
|
|
|
|
|
<el-date-picker |
|
|
|
|
|
|
|
class="flex-1 ml-10px" |
|
|
|
|
|
|
|
v-model="item.endDate" |
|
|
|
|
|
|
|
type="date" |
|
|
|
|
|
|
|
format="YYYY-MM-DD" |
|
|
|
|
|
|
|
value-format="YYYY-MM-DD" |
|
|
|
|
|
|
|
placeholder="选择截止时间" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
</el-tabs> |
|
|
|
|
|
|
|
<el-divider /> |
|
|
|
|
|
|
|
<div class="text-black text-12px"> |
|
|
|
|
|
|
|
注:如果选择创建待办,请选择执行人及截止日期,默认每天9:00循环提醒,可于待办中修改 |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="mt-10px"> |
|
|
|
|
|
|
|
<el-form-item label="会议纪要发送至群聊:" label-width="auto"> |
|
|
|
|
|
|
|
<el-select |
|
|
|
|
|
|
|
filterable |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
v-model="form.wxId" |
|
|
|
|
|
|
|
placeholder="请输入群聊名称" |
|
|
|
|
|
|
|
style="width: 100%" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-option |
|
|
|
|
|
|
|
v-for="item in groupOptions" |
|
|
|
|
|
|
|
:key="item.wxGroupId" |
|
|
|
|
|
|
|
:label="item.wxGroupName" |
|
|
|
|
|
|
|
:value="item.wxGroupId" |
|
|
|
|
|
|
|
/> |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
</el-form> |
|
|
|
</el-form> |
|
|
@ -225,17 +143,14 @@ |
|
|
|
<script setup name="MeetingInfo"> |
|
|
|
<script setup name="MeetingInfo"> |
|
|
|
import { listToTree } from '@/utils/tree' |
|
|
|
import { listToTree } from '@/utils/tree' |
|
|
|
import { getAllNodeTree } from '@/api/okr/okr' |
|
|
|
import { getAllNodeTree } from '@/api/okr/okr' |
|
|
|
import { getWaitPage } from '@/api/okr/wait' |
|
|
|
|
|
|
|
import * as MeetingApi from '@/api/okr/meeting' |
|
|
|
import * as MeetingApi from '@/api/okr/meeting' |
|
|
|
import { formatDate } from '@/utils/formatTime' |
|
|
|
import { formatDate } from '@/utils/formatTime' |
|
|
|
import { getEmployeeSimpleList } from '@/api/pers/employee' |
|
|
|
import { getEmployeeSimpleList } from '@/api/pers/employee' |
|
|
|
import { useTagsViewStore } from '@/store/modules/tagsView' |
|
|
|
import { useTagsViewStore } from '@/store/modules/tagsView' |
|
|
|
import { useUserStore } from '@/store/modules/user' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const route = useRoute() |
|
|
|
const route = useRoute() |
|
|
|
const message = useMessage() |
|
|
|
const message = useMessage() |
|
|
|
const tagsViewStore = useTagsViewStore() |
|
|
|
const tagsViewStore = useTagsViewStore() |
|
|
|
const userStore = useUserStore() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const defaultProps = { |
|
|
|
const defaultProps = { |
|
|
|
value: 'nodeId', |
|
|
|
value: 'nodeId', |
|
|
@ -244,34 +159,14 @@ const defaultProps = { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const isDetail = route.query.isDetail |
|
|
|
const isDetail = route.query.isDetail |
|
|
|
const currentUserId = ref(undefined) |
|
|
|
|
|
|
|
const currentContentId = ref(0) // 默认选中第一个标签页 |
|
|
|
|
|
|
|
const summaryIdx = ref(0) // 会议纪要的索引 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const toolbarConfig = { |
|
|
|
|
|
|
|
toolbarKeys: [] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(async () => { |
|
|
|
onMounted(async () => { |
|
|
|
getWxGroupOptions() |
|
|
|
|
|
|
|
await getOptions() |
|
|
|
await getOptions() |
|
|
|
if (route.params.id && route.params.id != 0) { |
|
|
|
if (route.params.id && route.params.id != 0) { |
|
|
|
// 这里可以调用API获取会议详情数据 |
|
|
|
// 这里可以调用API获取会议详情数据 |
|
|
|
getMeetingInfo(route.params.id) |
|
|
|
getMeetingInfo(route.params.id) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
form.value.meetingContentList = [ |
|
|
|
console.error('会议不存在') |
|
|
|
{ |
|
|
|
|
|
|
|
userId: userStore.getUser.id + '', |
|
|
|
|
|
|
|
userName: userStore.getUser.nickname, |
|
|
|
|
|
|
|
userMeetingContentList: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
content: '' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
currentContentId.value = 0 |
|
|
|
|
|
|
|
searchUserWait([userStore.getUser.id]) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
@ -285,13 +180,23 @@ function getOptions() { |
|
|
|
children: 'children' |
|
|
|
children: 'children' |
|
|
|
}) |
|
|
|
}) |
|
|
|
userOptions.value = employeeResp.map((it) => ({ ...it, id: it.id + '' })) |
|
|
|
userOptions.value = employeeResp.map((it) => ({ ...it, id: it.id + '' })) |
|
|
|
form.value.expectUsers = [userStore.getUser.id + ''] // 默认添加当前用户为预约参会人员 |
|
|
|
// handleUserChange() |
|
|
|
// form.value.actualUsers = [userStore.getUser.id + ''] |
|
|
|
|
|
|
|
currentUserId.value = userStore.getUser.id + '' // 默认选中当前用户 |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
.catch((error) => { |
|
|
|
.catch((error) => { |
|
|
|
console.error('获取数据失败:', error) |
|
|
|
console.error('获取数据失败:', error) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
// // 获取OKR节点数据 |
|
|
|
|
|
|
|
// getAllNodeTree().then((resp) => { |
|
|
|
|
|
|
|
// peroidList.value = listToTree(resp?.tree || [], { |
|
|
|
|
|
|
|
// id: 'nodeId', |
|
|
|
|
|
|
|
// pid: 'parentId', |
|
|
|
|
|
|
|
// children: 'children' |
|
|
|
|
|
|
|
// }) |
|
|
|
|
|
|
|
// }) |
|
|
|
|
|
|
|
// // 获取人员数据 |
|
|
|
|
|
|
|
// getEmployeeSimpleList().then((data) => { |
|
|
|
|
|
|
|
// userOptions.value = data.map((it) => ({ ...it, id: it.id + '' })) |
|
|
|
|
|
|
|
// }) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const form = ref({ |
|
|
|
const form = ref({ |
|
|
@ -306,9 +211,7 @@ const form = ref({ |
|
|
|
status: '1', |
|
|
|
status: '1', |
|
|
|
meetingContent: '', |
|
|
|
meetingContent: '', |
|
|
|
meetingSummary: '', |
|
|
|
meetingSummary: '', |
|
|
|
absentReason: '', |
|
|
|
absentReason: '' |
|
|
|
meetingContentList: [], |
|
|
|
|
|
|
|
meetingSummaryList: [] |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
const rules = { |
|
|
|
const rules = { |
|
|
|
meetingSubject: [{ required: true, message: '请输入会议主题', trigger: 'blur' }], |
|
|
|
meetingSubject: [{ required: true, message: '请输入会议主题', trigger: 'blur' }], |
|
|
@ -336,37 +239,15 @@ const getMeetingInfo = async (meetingId) => { |
|
|
|
const resp = await MeetingApi.getMeetingDetail({ meetingId }) |
|
|
|
const resp = await MeetingApi.getMeetingDetail({ meetingId }) |
|
|
|
loading.value = false |
|
|
|
loading.value = false |
|
|
|
if (resp) { |
|
|
|
if (resp) { |
|
|
|
let summaryList = [] |
|
|
|
|
|
|
|
if (resp.meetingSummaryList && resp.meetingSummaryList.length > 0) { |
|
|
|
|
|
|
|
summaryList = resp.meetingSummaryList.map((item) => ({ |
|
|
|
|
|
|
|
...item, |
|
|
|
|
|
|
|
isCreateAgentWork: !!item.isCreateAgentWork, |
|
|
|
|
|
|
|
agentUserList: item.agentUserList ? item.agentUserList.map((it) => it + '') : [] |
|
|
|
|
|
|
|
})) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
summaryList = [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
summary: resp.meetingSummary || '', |
|
|
|
|
|
|
|
agentUserList: [], |
|
|
|
|
|
|
|
endDate: '', |
|
|
|
|
|
|
|
isCreateAgentWork: true |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
form.value = { |
|
|
|
form.value = { |
|
|
|
...form.value, |
|
|
|
...form.value, |
|
|
|
...resp, |
|
|
|
...resp, |
|
|
|
startTime: formatDate(resp.startTime, 'YYYY-MM-DD HH:mm'), |
|
|
|
startTime: formatDate(resp.startTime, 'YYYY-MM-DD HH:mm'), |
|
|
|
expectEndTime: formatDate(resp.expectEndTime, 'YYYY-MM-DD HH:mm'), |
|
|
|
expectEndTime: formatDate(resp.expectEndTime, 'YYYY-MM-DD HH:mm'), |
|
|
|
expectUsers: resp.expectUsers || [], |
|
|
|
expectUsers: resp.expectUsers || [], |
|
|
|
actualUsers: resp.actualUsers || [], |
|
|
|
actualUsers: resp.actualUsers || [] |
|
|
|
meetingSummaryList: summaryList |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
currentContentId.value = 0 |
|
|
|
handleUserChange() |
|
|
|
expectUserOptions.value = userOptions.value.filter((user) => |
|
|
|
|
|
|
|
form.value.expectUsers.some((it) => it == user.id) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
} catch (error) { |
|
|
|
loading.value = false |
|
|
|
loading.value = false |
|
|
@ -374,62 +255,7 @@ const getMeetingInfo = async (meetingId) => { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const groupOptions = ref([]) |
|
|
|
function handleUserChange() { |
|
|
|
|
|
|
|
|
|
|
|
function getWxGroupOptions() { |
|
|
|
|
|
|
|
MeetingApi.refreshWxGroupList().then(() => { |
|
|
|
|
|
|
|
MeetingApi.getWxGroupList() |
|
|
|
|
|
|
|
.then((resp) => { |
|
|
|
|
|
|
|
groupOptions.value = resp || [] |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.catch((error) => { |
|
|
|
|
|
|
|
console.error('获取微信群列表失败:', error) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function userTabChange() { |
|
|
|
|
|
|
|
currentContentId.value = 0 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function handleTabsEdit(targetName, action) { |
|
|
|
|
|
|
|
if (action === 'add') { |
|
|
|
|
|
|
|
form.value.meetingContentList.forEach((item) => { |
|
|
|
|
|
|
|
if (item.userId == currentUserId.value) { |
|
|
|
|
|
|
|
item.userMeetingContentList.push({ |
|
|
|
|
|
|
|
content: '' |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} else if (action === 'remove') { |
|
|
|
|
|
|
|
form.value.meetingContentList.forEach((item) => { |
|
|
|
|
|
|
|
if (item.userId == currentUserId.value) { |
|
|
|
|
|
|
|
item.userMeetingContentList.splice(targetName, 1) |
|
|
|
|
|
|
|
// 如果删除的是当前选中的标签页,则切换到下一个标签页 |
|
|
|
|
|
|
|
if (currentContentId.value == targetName) { |
|
|
|
|
|
|
|
currentContentId.value = targetName - 1 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function meetingSummaryEdit(targetName, action) { |
|
|
|
|
|
|
|
if (action === 'add') { |
|
|
|
|
|
|
|
form.value.meetingSummaryList.push({ |
|
|
|
|
|
|
|
summary: '', |
|
|
|
|
|
|
|
agentUserList: [], |
|
|
|
|
|
|
|
endDate: '', |
|
|
|
|
|
|
|
isCreateAgentWork: true |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} else if (action === 'remove') { |
|
|
|
|
|
|
|
form.value.meetingSummaryList.splice(targetName, 1) |
|
|
|
|
|
|
|
summaryIdx.value = targetName - 1 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const checkedUsers = ref([]) |
|
|
|
|
|
|
|
function handleUserChange(val) { |
|
|
|
|
|
|
|
// 当预约参会人员变化时,更新实际参会人员选项 |
|
|
|
// 当预约参会人员变化时,更新实际参会人员选项 |
|
|
|
expectUserOptions.value = userOptions.value.filter((user) => |
|
|
|
expectUserOptions.value = userOptions.value.filter((user) => |
|
|
|
form.value.expectUsers.some((it) => it == user.id) |
|
|
|
form.value.expectUsers.some((it) => it == user.id) |
|
|
@ -437,101 +263,30 @@ function handleUserChange(val) { |
|
|
|
if (!isDetail) { |
|
|
|
if (!isDetail) { |
|
|
|
form.value.actualUsers = [...form.value.expectUsers] |
|
|
|
form.value.actualUsers = [...form.value.expectUsers] |
|
|
|
} |
|
|
|
} |
|
|
|
// 先过滤掉不存在的参会人员 |
|
|
|
|
|
|
|
form.value.meetingContentList = form.value.meetingContentList.filter((item) => { |
|
|
|
|
|
|
|
return val.some((it) => it == item.userId) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
// 再补充新增的 |
|
|
|
|
|
|
|
val.map((item) => { |
|
|
|
|
|
|
|
if (!form.value.meetingContentList.some((it) => it.userId == item)) { |
|
|
|
|
|
|
|
form.value.meetingContentList.push({ |
|
|
|
|
|
|
|
userId: item, |
|
|
|
|
|
|
|
userName: userOptions.value.find((it) => it.id == item).name, |
|
|
|
|
|
|
|
userMeetingContentList: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
content: '' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
if (!form.value.meetingId) { |
|
|
|
|
|
|
|
searchUserWait(val) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function searchUserWait(val) { |
|
|
|
|
|
|
|
val.map((item) => { |
|
|
|
|
|
|
|
if (!checkedUsers.value.includes(item)) { |
|
|
|
|
|
|
|
checkedUsers.value.push(item) |
|
|
|
|
|
|
|
// 新增会议时,根据参会人员拉取代办事项 |
|
|
|
|
|
|
|
getWaitPage({ |
|
|
|
|
|
|
|
pageNo: 1, |
|
|
|
|
|
|
|
pageSize: -1, |
|
|
|
|
|
|
|
workUserId: item, |
|
|
|
|
|
|
|
creator: userStore.getUser.id, |
|
|
|
|
|
|
|
completeStatus: 1 |
|
|
|
|
|
|
|
}).then((resp) => { |
|
|
|
|
|
|
|
joinContent(resp.list) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function joinContent(arr) { |
|
|
|
|
|
|
|
arr.map((wait) => { |
|
|
|
|
|
|
|
let text = '<p>未完成事项:' + wait.title + '</p>' |
|
|
|
|
|
|
|
text += wait.content |
|
|
|
|
|
|
|
text += `<p>执行人:${wait.userNameStr}</p>` |
|
|
|
|
|
|
|
text += `<p>截止日期:${formatDate(wait.endDate, 'YYYY-MM-DD')}</p>` |
|
|
|
|
|
|
|
text += '<p><br></p>' |
|
|
|
|
|
|
|
form.value.meetingContentList[0].userMeetingContentList[0].content = |
|
|
|
|
|
|
|
text + form.value.meetingContentList[0].userMeetingContentList[0].content |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const router = useRouter() |
|
|
|
const router = useRouter() |
|
|
|
async function submit(isDraft = false) { |
|
|
|
async function submit() { |
|
|
|
// 校验表单 |
|
|
|
// 校验表单 |
|
|
|
if (!formRef.value) return |
|
|
|
if (!formRef.value) return |
|
|
|
const valid = await formRef.value.validate() |
|
|
|
const valid = await formRef.value.validate() |
|
|
|
if (!valid) return |
|
|
|
if (!valid) return |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
try { |
|
|
|
form.value.isDraft = isDraft |
|
|
|
|
|
|
|
// 提交表单数据 |
|
|
|
// 提交表单数据 |
|
|
|
if (form.value.meetingId) { |
|
|
|
if (form.value.meetingId) { |
|
|
|
if ( |
|
|
|
if (form.value.status == 2 && !form.value.meetingSummary) { |
|
|
|
form.value.status == 2 && |
|
|
|
|
|
|
|
form.value.meetingSummaryList.some((it) => it.summary.trim() == '') |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
message.error('会议结束时,会议纪要不能为空') |
|
|
|
message.error('会议结束时,会议纪要不能为空') |
|
|
|
return |
|
|
|
return |
|
|
|
} else { |
|
|
|
|
|
|
|
let text = '' |
|
|
|
|
|
|
|
form.value.meetingSummaryList.map((item, index) => { |
|
|
|
|
|
|
|
if (form.value.meetingSummaryList.length > 1) { |
|
|
|
|
|
|
|
text += '<p>会议纪要' + (index + 1) + ':</p>' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
text += item.summary |
|
|
|
|
|
|
|
if (item.isCreateAgentWork) { |
|
|
|
|
|
|
|
text += `<p>执行人:` |
|
|
|
|
|
|
|
item.agentUserList.map((it) => { |
|
|
|
|
|
|
|
if (it) { |
|
|
|
|
|
|
|
text += `${userOptions.value.find((user) => user.id == it).name} ` |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
text += '</p>' |
|
|
|
|
|
|
|
text += `<p>截止日期:${item.endDate}</p>` |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
text += '<p><br></p>' |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
form.value.meetingSummary = text |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
// 更新会议 |
|
|
|
// 更新会议 |
|
|
|
await MeetingApi.updateMeeting(form.value) |
|
|
|
await MeetingApi.updateMeeting(form.value) |
|
|
|
message.success('会议更新成功') |
|
|
|
message.success('会议更新成功') |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
|
|
|
|
if (form.value.status == 1 && !form.value.meetingContent) { |
|
|
|
|
|
|
|
message.error('预约会议时,会议内容不能为空') |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
form.value.actualUsers = [] |
|
|
|
form.value.actualUsers = [] |
|
|
|
// 新增会议 |
|
|
|
// 新增会议 |
|
|
|
await MeetingApi.createMeeting(form.value) |
|
|
|
await MeetingApi.createMeeting(form.value) |
|
|
|