|
@@ -18,6 +18,10 @@ const props = defineProps({
|
|
|
eventList: {
|
|
|
type: Array,
|
|
|
required: true
|
|
|
+ },
|
|
|
+ selectUserValue:{
|
|
|
+ type:Number,
|
|
|
+ default:0
|
|
|
}
|
|
|
})
|
|
|
|
|
@@ -37,6 +41,7 @@ const handleDateClick = ({date}) => {
|
|
|
emits('cellClick',date)
|
|
|
};
|
|
|
|
|
|
+let popContentArr = ref([])
|
|
|
/* 点击日程 */
|
|
|
const handleEventClick = (_) => {
|
|
|
let id = _.event.id; // 获取当前点击日程的ID
|
|
@@ -47,8 +52,100 @@ const handleEventClick = (_) => {
|
|
|
let title = setDynamicTitle(event_item);
|
|
|
|
|
|
selectEventInfo.value = {...event_item,title};
|
|
|
+ getPopoverContent()
|
|
|
isShowPopup.value = true;
|
|
|
};
|
|
|
+function getPopoverContent(){
|
|
|
+ const {StartDate,StartTime,StartWeek,EndDate,EndTime,EndWeek} = selectEventInfo.value
|
|
|
+ //前两项默认是开始时间和结束时间
|
|
|
+ const popContent = [{
|
|
|
+ key:'StartDate',
|
|
|
+ label:'开始时间:',
|
|
|
+ content:`${StartDate} ${StartTime} (${StartWeek})`,
|
|
|
+ },{
|
|
|
+ key:'EndDate',
|
|
|
+ label:'结束时间:',
|
|
|
+ content:`${EndDate} ${EndTime} (${EndWeek})`,
|
|
|
+ }]
|
|
|
+ //根据ActivityType判断是什么类型,根据RoadshowType展示对应信息
|
|
|
+ const {ActivityType,RoadshowType} = selectEventInfo.value
|
|
|
+ const {Province,City} = selectEventInfo.value
|
|
|
+ //ActivityType为路演时,需要显示的内容
|
|
|
+ const {RoadshowPlatform,CompanyName} = selectEventInfo.value
|
|
|
+ const RoadshowContent = [{
|
|
|
+ key:'RoadshowPlatform',
|
|
|
+ label:'路演平台:',
|
|
|
+ content:`${RoadshowPlatform}`,
|
|
|
+ RoadshowType:'线上'
|
|
|
+ },{
|
|
|
+ key:'RoadshowCity',
|
|
|
+ label:'路演城市:',
|
|
|
+ content:`${Province}${City}`,
|
|
|
+ RoadshowType:'线下'
|
|
|
+ },{
|
|
|
+ key:'CompanyName',
|
|
|
+ label:'客户名称:',
|
|
|
+ content:`${CompanyName}`,
|
|
|
+ RoadshowType:RoadshowType,
|
|
|
+ }].filter(item=>item.RoadshowType===RoadshowType)
|
|
|
+ //ActivityType为公开会议时,需要显示的内容
|
|
|
+ const {Theme,CooperationName} = selectEventInfo.value
|
|
|
+ const MeetingContent = [
|
|
|
+ {
|
|
|
+ key:'RoadshowPlatform',
|
|
|
+ label:'会议平台:',
|
|
|
+ content:`${RoadshowPlatform}`,
|
|
|
+ RoadshowType:'线上'
|
|
|
+ },{
|
|
|
+ key:'RoadshowCity',
|
|
|
+ label:'会议城市:',
|
|
|
+ content:`${Province}${City}`,
|
|
|
+ RoadshowType:'线下'
|
|
|
+ },{
|
|
|
+ key:'Theme',
|
|
|
+ label:'会议主题:',
|
|
|
+ content:`${Theme}`,
|
|
|
+ RoadshowType:RoadshowType
|
|
|
+ },{
|
|
|
+ key:'CooperationName',
|
|
|
+ label:'合作方名称:',
|
|
|
+ content:`${CooperationName}`,
|
|
|
+ RoadshowType:RoadshowType
|
|
|
+ }].filter(item=>item.RoadshowType===RoadshowType)
|
|
|
+ ////ActivityType不为空时,需要显示的内容
|
|
|
+ const {ResearcherName,SysUserRealName} = selectEventInfo.value
|
|
|
+ const SuppleContent=[{
|
|
|
+ key:'ResearcherName',
|
|
|
+ label:'研究员:',
|
|
|
+ content:`${ResearcherName}`,
|
|
|
+ },{
|
|
|
+ key:'SysUserRealName',
|
|
|
+ label:'发起人:',
|
|
|
+ content:`${SysUserRealName}`,
|
|
|
+ }]
|
|
|
+ //ActivityType为空时,需要显示的内容
|
|
|
+ const {MatterContent,EditReason,ModifyTime} = selectEventInfo.value
|
|
|
+ const MattersContent=[{
|
|
|
+ key:'MatterContent',
|
|
|
+ label:'事项内容:',
|
|
|
+ content:`${MatterContent}`,
|
|
|
+ },{
|
|
|
+ key:'EditReason',
|
|
|
+ label:'最近修改记录:',
|
|
|
+ content:`${EditReason}`,
|
|
|
+ otherContent:`${moment(ModifyTime).format('YYYY-MM-DD HH:mm:ss')}`
|
|
|
+ }].filter(item=>{return item.content.length})
|
|
|
+
|
|
|
+ const contentMap = {
|
|
|
+ '路演':RoadshowContent,
|
|
|
+ '公开会议':MeetingContent,
|
|
|
+ }
|
|
|
+ if(ActivityType){
|
|
|
+ popContentArr.value = [...popContent,...contentMap[ActivityType]||[],...SuppleContent]
|
|
|
+ }else{
|
|
|
+ popContentArr.value = [...popContent,...MattersContent]
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
let calendarOptions = ref({
|
|
|
height: 'auto',
|
|
@@ -172,7 +269,7 @@ defineExpose({ toogeCurrentWeek,calendarApi });
|
|
|
<template>
|
|
|
<Sticky>
|
|
|
<div class="header">
|
|
|
- <swiperCalendar @dateChange="datechangeHandle" ref="swiperCalendarRef"/>
|
|
|
+ <swiperCalendar @dateChange="datechangeHandle" ref="swiperCalendarRef" :selectUserValue="selectUserValue"/>
|
|
|
</div>
|
|
|
</Sticky>
|
|
|
<FullCalendar :options="calendarOptions" ref="FullCalendarRef">
|
|
@@ -184,8 +281,8 @@ defineExpose({ toogeCurrentWeek,calendarApi });
|
|
|
</template>
|
|
|
</FullCalendar>
|
|
|
|
|
|
-<!-- 弹窗层 -->
|
|
|
- <Popup
|
|
|
+<!-- 弹窗层 旧版-->
|
|
|
+<!-- <Popup
|
|
|
v-model:show="isShowPopup"
|
|
|
closeable
|
|
|
>
|
|
@@ -219,6 +316,28 @@ defineExpose({ toogeCurrentWeek,calendarApi });
|
|
|
<p v-if="selectEventInfo.CooperationName">{{ selectEventInfo.CooperationName }}</p>
|
|
|
<p v-if="['公开会议','内部会议','路演'].includes(selectEventInfo.ActivityType)">发起人:{{selectEventInfo.SysUserRealName}}</p>
|
|
|
</div>
|
|
|
+ </Popup> -->
|
|
|
+ <!-- 新版 -->
|
|
|
+ <Popup
|
|
|
+ v-model:show="isShowPopup"
|
|
|
+ round closeable
|
|
|
+ style="width:90%;"
|
|
|
+ >
|
|
|
+ <div class="pop-dialog-wrap">
|
|
|
+ <div class="pop-header">
|
|
|
+ <p>{{selectEventInfo.ActivityType?`${selectEventInfo.RoadshowType}${selectEventInfo.ActivityType}`:'事项'}}</p>
|
|
|
+ </div>
|
|
|
+ <div class="popover-body">
|
|
|
+ <!-- 换行的内容需要对齐,所以dom结构设置成了下面这样 -->
|
|
|
+ <div class="content-item" v-for="item in popContentArr" :key="item.key">
|
|
|
+ <span class="label">{{item.label}}</span>
|
|
|
+ <div class="content">
|
|
|
+ <p>{{item.content}}</p>
|
|
|
+ <p v-if="item.otherContent" class="other-text">{{item.otherContent}}</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</Popup>
|
|
|
</template>
|
|
|
|
|
@@ -226,7 +345,7 @@ defineExpose({ toogeCurrentWeek,calendarApi });
|
|
|
|
|
|
.header {
|
|
|
background: #fff;
|
|
|
- padding-bottom: 20px;
|
|
|
+ /* padding-bottom: 20px; */
|
|
|
box-shadow: 0px 3px 6px rgba(172, 172, 172, 0.16);
|
|
|
.tab-cont {
|
|
|
padding: 30px;
|
|
@@ -265,7 +384,9 @@ defineExpose({ toogeCurrentWeek,calendarApi });
|
|
|
}
|
|
|
::v-deep(.fc-timegrid-event ) {
|
|
|
border-left: 8px solid #3385FF !important;
|
|
|
-
|
|
|
+ }
|
|
|
+ ::v-deep(.fc-timegrid-col-events){
|
|
|
+ margin:0 !important;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -276,4 +397,30 @@ defineExpose({ toogeCurrentWeek,calendarApi });
|
|
|
color: #333;
|
|
|
}
|
|
|
}
|
|
|
+.pop-dialog-wrap{
|
|
|
+ padding: 40px 20px;
|
|
|
+ .pop-header{
|
|
|
+ text-align: center;
|
|
|
+ font-size: 32px;
|
|
|
+ font-weight: bold;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ }
|
|
|
+ .popover-body{
|
|
|
+ font-size: 30px;
|
|
|
+ .content-item{
|
|
|
+ display: flex;
|
|
|
+ margin-top: 20px;
|
|
|
+ .label{
|
|
|
+ display: inline-block;
|
|
|
+ width:220px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ .content{
|
|
|
+ .other-text{
|
|
|
+ color: #999;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|