Browse Source

Merge branch 'eta1.7.8'

cxmo 9 months ago
parent
commit
cae029adeb

+ 5 - 0
package.json

@@ -10,6 +10,11 @@
   },
   "dependencies": {
     "@element-plus/icons-vue": "^2.0.0-beta.0",
+    "@fullcalendar/core": "5.11.0",
+    "@fullcalendar/daygrid": "5.11.0",
+    "@fullcalendar/timegrid": "5.11.0",
+    "@fullcalendar/interaction": "5.11.0",
+    "@fullcalendar/vue3": "5.11.0",
     "@vueuse/core": "^9.0.0",
     "axios": "^0.26.0",
     "element-plus": "^2.0.2",

+ 43 - 0
src/api/forexCalendar.js

@@ -0,0 +1,43 @@
+import {get,post} from './http'
+
+/**
+ * 获取品种列表
+ * @param {*} params 
+ * @returns 
+ */
+export const apiGetPermissionList = (params)=>{
+    return get('/fe_calendar/permission/list',params)
+}
+/**
+     * 获取日期范围内事项列表
+     * @param {Object} params 
+     * @param {Number} params.chart_permission_id 品种ID
+     * @param {String} params.start_date 起始时间
+     * @param {String} params.end_date 终止时间
+     * @returns [{
+     *      Date:"2024-03-28",//事项日期
+     *      Matters:[],//事项详情
+     * }]
+     */
+export const apiGetCalendarEventList = (params)=>{
+    return get('/fe_calendar/matter/list',params)
+}
+/**
+     * 获取指定日期事项列表
+     * @param {Object} params 
+     * @param {Number} params.chart_permission_id 品种ID
+     * @param {String} params.matter_date "2024-03-29" 指定日期
+     * @returns
+     */
+export const apiGetDailyEventList = (params)=>{
+    return get('/fe_calendar/matter/detail',params)
+}
+/**
+ * 获取品种最新日历月份
+ * @param {Object} params 
+ * @param {Number} params.chart_permission_id 品种ID
+ * @returns 
+ */
+export const apiGetPermissionNewestDate = (params)=>{
+    return get('/fe_calendar/permission/latest_month',params)
+}

+ 1 - 1
src/api/user.js

@@ -16,7 +16,7 @@ export const apiUserInfo=()=>{
  * @param company_name 公司名
  * @param permission 选择的权限
  * @param real_name 姓名
- * @param source 来源:我的1、活动2、图库3、研报4、问答社区5、价格驱动6、沙盘推演7、语音播报8、视频社区9、线上路演10
+ * @param source 来源:我的1、活动2、图库3、研报4、问答社区5、价格驱动6、沙盘推演7、语音播报8、视频社区9、线上路演10、事件日历11
  * @param source_agent 来源平台:1:小程序、2:小程序(pc)、3:公众号、4:官网web(pc)
  * @param from_page 来源页面: '活动列表'、'活动详情'等
  */

+ 8 - 1
src/layout/component/Aside.vue

@@ -73,12 +73,19 @@ let menuList = reactive([
     icon_path: new URL('../../assets/leftNav/positionAnalysis-s.png', import.meta.url).href,
     children: null,
   },
-  {
+  /* {
     MenuId: 3,
     name: "活动",
     path: "/activity/list",
     icon_path: new URL('../../assets/leftNav/activity-s.png', import.meta.url).href,
     children: null,
+  }, */
+  {
+    MenuId: 3,
+    name: "事件日历",
+    path: "/forexCalendar/index",
+    icon_path: new URL('../../assets/calendar.png', import.meta.url).href,
+    children: null,
   },
   {
     MenuId: 4,

+ 7 - 7
src/layout/component/Header.vue

@@ -202,18 +202,18 @@ const goYBPCEN=()=>{
     <div class="flex-col-center userinfo-wrap">
       <img src="@/assets/icon-yben.png" class="yben-icon" @click="goYBPCEN" v-if="!isInMini"/>
       <!-- 我的收藏 -->
-      <el-popover trigger="click" @show="showCollect=true" @hide="showCollect=false" :width="460" popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 20px;">
+      <el-popover v-if="userInfo" trigger="click" @show="showCollect=true" @hide="showCollect=false" :width="460" popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 20px;">
         <template #reference>
-          <img v-if="userInfo" style="width:26px;height:25px;margin-right:21px;position: relative;top:-2px" src="@/assets/icon-start.png" alt="">
+          <img style="width:26px;height:25px;margin-right:21px;position: relative;top:-2px" src="@/assets/icon-start.png" alt="">
         </template>
         <template #default>
           <MyCollect :show="showCollect"/>
         </template>
       </el-popover>
       <!-- 消息 -->
-      <el-popover trigger="click" :width="439" popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 20px;">
+      <el-popover v-if="userInfo" trigger="click" :width="439" popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 20px;">
         <template #reference>
-          <el-badge v-if="userInfo" :value="$store.state.userInfo.un_read" :hidden="$store.state.userInfo.un_read==0">
+          <el-badge :value="$store.state.userInfo.un_read" :hidden="$store.state.userInfo.un_read==0">
             <img style="width:28px;height:28px" src="@/assets/icon-notice.png" alt="">
           </el-badge>
         </template>
@@ -240,12 +240,12 @@ const goYBPCEN=()=>{
         </template>
       </el-popover>
       <!-- 个人信息 -->
-      <el-popover :width="400" popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 20px;">
+      <el-popover v-if="userInfo" :width="400" popper-style="box-shadow: rgb(14 18 22 / 35%) 0px 10px 38px -10px, rgb(14 18 22 / 20%) 0px 10px 20px -15px; padding: 20px;">
         <template #reference>
-          <el-avatar shape="square" :size="40" v-if="userInfo" :src="$store.state.userInfo.head_img_url||$store.state.globalImgUrls.defaultAvatar"></el-avatar>
+          <el-avatar shape="square" :size="40" :src="$store.state.userInfo.head_img_url||$store.state.globalImgUrls.defaultAvatar"></el-avatar>
         </template>
         <template #default>
-          <div class="userinfo-box" v-if="userInfo">
+          <div class="userinfo-box">
             <div class="top" @click="handleSetUserInfo">
               <el-avatar shape="square" :size="50" :src="$store.state.userInfo.head_img_url||$store.state.globalImgUrls.defaultAvatar"></el-avatar>
               <p style="font-size: 20px">{{ userInfo.real_name || "--" }}</p>

+ 36 - 0
src/router/index.js

@@ -525,6 +525,38 @@ const routes=[
       },
     ]
   },
+  //外汇日历表模块
+  {
+    path:"/forexCalendar",
+    name:"ForexCalendar",
+    component: () => import("@/layout/Index.vue"),
+    meta: {
+      title:"事件日历"
+    },
+    children:[
+      {
+        path:"index",
+        name:"ForexCalendarIndex",
+        component:()=>import('@/views/forexCalendar/Index.vue'),
+        meta: {
+          title: "事件日历",
+          keepAlive:true,
+          isRoot:true
+        }
+      },
+      {
+        path:"detail",
+        name:"ForexCalendarDetail",
+        component:()=>import('@/views/forexCalendar/EdbDetail.vue'),
+        meta: {
+          title: "事项详情",
+          keepAlive:false,
+          isRoot:false,
+          hasBack:true
+        }
+      },
+    ]
+  },
 
   {
     path: '/:pathMatch(.*)',
@@ -552,6 +584,10 @@ const router=createRouter({
 })
 
 router.beforeEach((to, from, next) => {
+    if(to.path==='/forexCalendar/detail'){
+        to.meta.title = to.query.startDate.slice(0,-3)+to.query.permissionName+'事项详情'
+        store.commit('modifyBreadCrumb',to.meta.title)
+    }
 	if (to.query.token) {
 		store.commit('getToken', to.query.token)
     store.dispatch('getUserInfo')

+ 49 - 0
src/views/forexCalendar/EdbDetail.vue

@@ -0,0 +1,49 @@
+<script setup>
+import { ref, reactive, onMounted } from 'vue'
+import { useRoute } from "vue-router"
+
+const route = useRoute()
+
+let url = ref('')
+function init(){
+    const {startDate,endDate,edbInfoId,matterType,permissionId,permissionName} = route.query
+    const queryObj={
+        startDate,//当前月起始日
+        endDate,//当前月终止日
+        edbInfoId,//选中的指标id
+        matterType,//指标类型
+        permissionId,//品种id
+        token:localStorage.getItem('token'),
+        timestamp:new Date().getTime(),//防止缓存
+    }
+    let queryObjStr=''
+    for (const key in queryObj) {
+        if(!queryObjStr){
+                queryObjStr=`${key}=${queryObj[key]}`
+        }else{
+            queryObjStr=`${queryObjStr}&${key}=${queryObj[key]}`
+        }
+    }
+    const h5BaseUrl = import.meta.env.MODE==='production'?'https://details.hzinsights.com':'https://xcxh5test.hzinsights.com/xcx_h5'
+    const baseUrl = h5BaseUrl+'/hzyb/forex/detail?'
+    url.value = baseUrl+queryObjStr
+    //document.title = startDate+permissionName+'事项详情'
+}
+init()
+</script>
+
+<template>
+    <div class="edb-detail-pc-wrap">
+        <iframe id='iframe' :src="url"></iframe>
+    </div>
+</template>
+
+<style scoped lang="scss">
+.edb-detail-pc-wrap{
+    iframe{
+        width: 100%;
+        height: 800px;
+        border: none;
+    }
+}
+</style>

+ 323 - 0
src/views/forexCalendar/Index.vue

@@ -0,0 +1,323 @@
+<script setup>
+import { useStore } from "vuex";
+import { ref, reactive, onMounted } from 'vue'
+import { useRouter } from "vue-router";
+import { ElMessage,ElMessageBox } from 'element-plus'
+import moment from 'moment'
+import BaseCalendar from './components/BaseCalendar.vue'
+import {apiGetPermissionList,apiGetCalendarEventList,apiGetDailyEventList,apiGetPermissionNewestDate} from '@/api/forexCalendar.js'
+
+//权限控制
+const store = useStore();
+let hasAuth = ref(true)
+let noAuth = ref({
+    type:'',
+    name:'',
+    mobile:'',
+    customer_info:{}
+})
+
+//日历点击
+let showEventList = ref(false) //控制事项列表弹窗
+let currentDay = ref('') //选择的日期
+//日历点击事件
+function dateClick(info){
+    setEventInfo(info.dateStr)
+}
+function eventClick(info){
+    //直接打开弹窗
+    setEventInfo(info.event.startStr)
+}
+async function setEventInfo(date){
+    if(!permissionValue.value) return ElMessage.warning("请选择品种")
+    currentDay.value = date||''
+    //获取当天的日历信息,若有事项,则打开弹窗
+    await getEventsByDay()
+    if(eventList.value.length) showEventList.value = true
+}
+//事项列表
+let eventList = ref([
+    {
+        title:'我是自定义事项', //事件名称
+        start:'2024-03-26',//日期,默认是全天事件
+        textColor:'#000',//字体颜色
+        backgroundColor:'#ffc0cb',//背景色
+        borderColor:'#ffc0cb',//边框色
+        
+        isTextBold:false,
+        matter_type:1,
+
+    },
+    {
+        title:'我是某个关联指标', //事件名称
+        start:'2024-03-26',//日期,默认是全天事件
+        textColor:'#000',//字体颜色
+        backgroundColor:'#ffc0cb',//背景色
+        borderColor:'#ffc0cb',//边框色
+        
+        isTextBold:false,
+        matter_type:2,
+    }
+])
+async function getEventsByDay(){
+    await apiGetDailyEventList({
+        chart_permission_id:Number(permissionValue.value),
+        matter_date:currentDay.value
+    }).then(res=>{
+        if(res.code!==200){
+            eventList.value=[]
+            return 
+        }
+        eventList.value = res.data||[]
+    })
+}
+const router = useRouter()
+//跳转事项详情
+function handleClickEvent(event){
+    if(event.matter_type===1) return ElMessage("该事项未关联指标")
+    const {activeStart,activeEnd} = baseCalendarRef.value?.calendarApi.view||{}
+
+    router.push({
+        path:'/forexCalendar/detail',
+        query:{
+            startDate:moment(activeStart).format('YYYY-MM-DD'),
+            endDate:moment(activeEnd).subtract(1, 'days').format('YYYY-MM-DD'),
+            edbInfoId:event.edb_info_id,
+            permissionId:permissionValue.value,
+            permissionName:permissionName.value
+        }
+    })
+    showEventList.value = false
+}
+
+let baseCalendarRef  = ref(null) //日历api
+let monthValue = ref('') //选中的月份
+function changeMonth(month){
+    const Month = month||new Date()
+    baseCalendarRef.value?.calendarApi.gotoDate(Month)
+    renderCalendar()
+}
+let permissionValue = ref('') //选中的品种ID
+let permissonList = ref([]) //品种列表
+let cascaderRef = ref(null) //品种cascader
+let permissionName = ref('') //品种名称
+function getPermissionList(){
+    apiGetPermissionList().then(res=>{
+        if(res.code===200){
+            hasAuth.value = true
+            permissonList.value = res.data
+            /* permissionValue.value = permissonList.value[0]?.children[0]?.chart_permission_id
+            changePermission() */
+        }else{
+            hasAuth.value = false
+            noAuth.value = res.data
+        }
+    })
+}
+async function changePermission(){
+    if(!hasAuth.value) return 
+    if(!permissionValue.value) return 
+    getPermissionName()
+    await getPermissionNewestMonth()
+    //renderCalendar()
+}
+async function getPermissionNewestMonth(){
+    //获取最新月份的接口
+    await apiGetPermissionNewestDate({
+        chart_permission_id:Number(permissionValue.value)
+    }).then(res=>{
+        if(res.code!==200) return 
+        monthValue.value = res.data||moment(new Date()).format('YYYY-MM')
+        changeMonth(monthValue.value)
+    })
+}
+function getPermissionName(){
+    const node = cascaderRef.value?.getCheckedNodes(true)[0]
+    permissionName.value = node.label
+}
+//加载日历表
+async function renderCalendar(){
+    //获取当前日历的起始日期+终止日期,可能会跨月
+    const {activeStart,activeEnd} = baseCalendarRef.value?.calendarApi.view||{}
+    const res = await apiGetCalendarEventList({
+        chart_permission_id:Number(permissionValue.value),
+        start_date:moment(activeStart).format('YYYY-MM-DD'),
+        end_date:moment(activeEnd).subtract(1, 'days').format('YYYY-MM-DD'), //activeEnd到最后一天的24:00会被认为是第二天,所以取前一天
+    })
+    if(res.code!==200) return 
+    const allEventSource = baseCalendarRef.value?.calendarApi.getEventSources()||[]
+    //先清空所有eventSource,再添加
+    allEventSource.forEach(es=>es.remove())
+    //将日历表每天的事件作为一个eventSource
+    const eventList = (res.data?res.data:[]).map(dailyEvents=>{
+        const eventSource = { id:dailyEvents.Date,events:[]}
+        eventSource.events = dailyEvents.matters.map(e=>{
+            return {
+                ...e,
+                start:e.matter_date,
+                title:e.title,
+                textColor:e.font_color||'#000',
+                backgroundColor:e.filling_color||'#fff',
+                borderColor:e.filling_color||'#fff',
+            }
+        })
+        return eventSource
+    })
+    eventList.forEach(es=>{
+        baseCalendarRef.value?.calendarApi.addEventSource(es)
+    })
+}
+const handleApply=()=>{
+    if(store.state.userInfo.is_bind===0){
+        ElMessageBox({
+            title:`温馨提示`,
+            message:'为了优化您的用户体验,<br>请登录后查看更多信息!',
+            dangerouslyUseHTMLString: true,
+            center: true,
+            confirmButtonText:'去登录',
+            confirmButtonClass:'self-elmessage-confirm-btn',
+            showCancelButton:true,
+            cancelButtonText:'取消',
+            cancelButtonClass:'self-elmessage-cancel-btn'
+        }).then(res=>{
+            wx.miniProgram.reLaunch({url:'/pages/login'})
+        }).catch(()=>{})
+        return
+    }
+    if(noAuth.value.customer_info.has_apply){
+        const htmlStr=`<p>您已提交过申请,请耐心等待</p>`
+        ElMessageBox({
+            title:`事件日历`,
+            message:htmlStr,
+            center: true,
+            dangerouslyUseHTMLString: true,
+            confirmButtonText:'知道了',
+            confirmButtonClass:'self-elmessage-confirm-btn'
+        })
+    }else{
+        if (!noAuth.value.customer_info.status || noAuth.value.customer_info.status != '流失'|| noAuth.value.customer_info.status != '关闭') {
+            console.log('跳转申请页');
+            router.push({
+                path:'/apply/permission',
+                query:{
+                    source:11,
+                    fromPage:'事件日历'
+                }
+            })
+        }else{
+            apiApplyPermission({
+                company_name:noAuth.value.customer_info.company_name,
+                real_name:noAuth.value.customer_info.name,
+                source:11,
+                from_page:'事件日历'
+            }).then(res=>{
+                console.log('主动申请成功');
+                const htmlStr=`<p>申请已提交</p><p>请等待销售人员与您联系</p>`
+                ElMessageBox({
+                    title:`事件日历`,
+                    message:htmlStr,
+                    center: true,
+                    dangerouslyUseHTMLString: true,
+                    confirmButtonText:'知道了',
+                    confirmButtonClass:'self-elmessage-confirm-btn'
+                })
+            })
+        }
+    }
+}
+onMounted(()=>{
+    monthValue.value = moment(new Date()).format('YYYY-MM')
+    getPermissionList()
+})
+</script>
+
+<template>
+    <div class="forex-calendar-wrap" v-if="hasAuth">
+        <div class="calendar-header">
+            <el-cascader :options="permissonList" 
+                ref="cascaderRef"
+                placeholder="请选择品种"
+                v-model="permissionValue"
+                :props="{
+                    expandTrigger:'hover',
+                    emitPath:false,
+                    value:'chart_permission_id',
+                    label:'chart_permission_name'
+                }"
+                style="min-width:210px;"
+                @change="changePermission"
+            ></el-cascader>
+            <el-date-picker v-model="monthValue" type="month" value-format="YYYY-MM" @change="changeMonth" :clearable="false" ></el-date-picker>
+        </div>
+        <BaseCalendar
+            ref="baseCalendarRef"
+            :markText="{date:monthValue,type:permissionName||'请选择品种'}"
+            @dateClick="dateClick"
+            @eventClick="eventClick"
+        ></BaseCalendar>
+    </div>
+    <div class="no-auth" v-else>
+        <img :src="$store.state.globalImgUrls.activityNoAuth" alt="">
+        <p style="font-size:16px;margin-bottom: 0;">您暂无权限查看事件日历</p>
+        <template v-if="noAuth.type=='contact'">
+            <p style="font-size:16px;margin-top: 5px;margin-bottom: 62px;">若想查看,可以联系对口销售--{{noAuth.name}}:<span style="color:#F3A52F">{{noAuth.mobile}}</span></p>
+        </template>
+        <template v-else>
+            <p style="font-size:16px;margin-top: 5px;margin-bottom: 62px;">若想参加可以申请开通</p>
+            <div class="global-main-btn btn" @click="handleApply" style="margin-bottom: 20px;">立即申请</div>
+        </template>
+    </div>
+    <!-- 事项详情弹窗 -->
+    <el-dialog
+        v-model="showEventList"
+        :title="`${currentDay}${permissionName}事项`"
+        :width="550"
+        :close-on-click-modal="false"
+        append-to-body
+        class="event-list-dialog"
+    >
+        <div class="event-list-wrap">
+           <ul class="event-list">
+            <li class="event-item" v-for="(item,index) in eventList" :key="index" @click="handleClickEvent(item)">
+                {{item.title}}
+            </li>
+           </ul>
+        </div>
+    </el-dialog>
+</template>
+
+<style scoped lang="scss">
+.forex-calendar-wrap{
+    min-height: 700px;
+    display: flex;
+    flex-direction: column;
+    .calendar-header{
+        display: flex;
+        justify-content: space-between;
+        margin-bottom: 20px;
+    }
+}
+.no-auth{
+    text-align: center;
+    img{
+        width: 400px;
+    }
+    .btn{
+        width: 218px;
+        margin-left: auto;
+        margin-right: auto;
+    }
+}
+.event-list-dialog{
+    .event-list-wrap{
+        min-height: 300px;
+        .event-list{
+            padding:0 15px;
+            .event-item{
+                margin-bottom: 35px;
+                cursor: pointer;
+            }
+        }
+    }
+}
+</style>

+ 140 - 0
src/views/forexCalendar/components/BaseCalendar.vue

@@ -0,0 +1,140 @@
+<script setup>
+import { ref, reactive, onMounted } from 'vue'
+
+import '@fullcalendar/core/vdom'; // solve problem with Vite
+import FullCalendar from "@fullcalendar/vue3";
+import dayGridPlugin from '@fullcalendar/daygrid'
+import interactionPlugin from '@fullcalendar/interaction'
+import moment from 'moment';
+
+const props = defineProps({
+    showMark:{
+        type:Boolean,
+        default:true
+    },
+    markText:{
+        type:Object,
+        default:{
+            date:'2024-04-16',
+            type:'当前品种'
+        }
+    },
+
+})
+const emit = defineEmits(["dateClick","eventClick"])
+let FullCalendarRef = ref(null)
+let calendarApi = ref(null)
+let calendarOptions = ref({
+    height:'100%',
+    locale: "zh-cn",
+    plugins: [ dayGridPlugin, interactionPlugin ],
+    initialView:'dayGridMonth',
+    headerToolbar:false,//不显示头部信息
+    weekNumberCalculation:'ISO',//从周一开始
+    dayHeaderFormat:{ //https://fullcalendar.io/docs/v5/date-formatting
+        weekday:'narrow', //头部星期显示为一 二 三...
+    },
+    fixedWeekCount:false,
+    eventOrder:'sort', //指定事项排序字段
+    /* dayMaxEventRows:6,//一天最多展示6条
+    moreLinkClick:(info)=>{handleDateClick({dateStr:moment(info.date).format('YYYY-MM-DD')})},//点击more时触发 */
+    dayCellContent:function(arg){ //单元格日期显示为 1 2 3...
+        return arg.date.getDate()
+    },
+    dateClick:handleDateClick,
+    eventClick:handleEventClick
+})
+function handleDateClick(info){
+    emit("dateClick",info)
+}
+function handleEventClick(info){
+    emit("eventClick",info)
+}
+onMounted(()=>{
+    calendarApi.value = FullCalendarRef.value.getApi()
+
+})
+defineExpose({ calendarApi });
+</script>
+
+<template>
+    <div class="base-calendar-wrap">
+        <FullCalendar :options="calendarOptions" ref="FullCalendarRef" class="full-calendar-wrap">
+            <template #eventContent="arg">
+                <div class="popper-content"
+                    :style="{fontWeight:arg.event.extendedProps.font_bold?'bold':'normal'}"
+                >
+                   {{arg.event.title||''}}
+                </div>
+            </template>
+        </FullCalendar>
+        <div class="water-mark" v-if="showMark">
+            <p>{{ markText.date }}</p>
+            <p>{{ markText.type }}</p>
+        </div>
+    </div>
+    
+</template>
+
+<style scoped lang="scss">
+.base-calendar-wrap{
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    position:relative;
+    .full-calendar-wrap{
+        z-index: 2;
+        flex:1;
+        .popper-content{
+            cursor: pointer;
+            overflow: hidden;
+            text-overflow: ellipsis;
+        }
+        :deep(.fc-daygrid-day-top){ //日期偏左显示
+            flex-direction: row;
+        }
+        :deep(.fc-daygrid-event){
+            border-radius: 0;
+            margin:0 !important;
+        }
+        :deep(.fc-scrollgrid){
+            border:none;
+            .fc-scrollgrid-section-header{
+                th{
+                    border:none !important;
+                }
+                .fc-col-header-cell{
+                    text-align: left;
+                }
+            }
+            .fc-scrollgrid-section-body{
+                td{
+                    border: none !important;
+                    border-left:2px solid #E3B377 !important;
+                }
+            }
+        }
+        :deep(.fc-more-popover){
+            display:none !important;
+        }
+    }
+    .water-mark{
+        z-index: 1;
+        position: absolute;
+        top:0;
+        bottom: 0;
+        left: 0;
+        right: 0;
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+        font-size: 64px;
+        opacity: 0.3;
+        p{
+            margin:0;
+            padding:0;
+        }
+    }
+}
+</style>