效果图:
代码
<template> <div> <div style="padding: 20px 0;"> <div style="margin-left: 10px; border-left: 5px solid #0079fe; font-size: 22px; font-weight: 600; padding-left: 10px">工作计划</div> <div style="margin-left: 50px; padding-right: 50px; margin-right: 50px"> <div style="display:flex; justify-content: center; margin-top: 5vh; margin-bottom: 5vh; align-items: center"> <div style="cursor: pointer; background-color: #39b54a; padding: 10px 50px 11px; border-radius: 20px; color: #fff; margin-right: 15px" @click="getPreviousWeekDates">上一周</div> <div style=" cursor: pointer; background-color: #0081ff; padding: 11px 50px 10px; border-radius: 20px; color: #fff" @click="getNextWeekDates">下一周</div> </div> <div> <table id="myTable"> <tr> <th style="width: 70px; position: relative"> <div class="ss"></div> </th> <th v-for="item in nowDate" :key="item.nyr"> <div style="font-size: 18px">{{ item.nyr }}</div> <div style="font-size: 16px">{{item.xq }}</div> </th> </tr> <tbody> <tr> <td rowspan="8" style="background-color: #d7d7d7; width: 50px;">账号姓名</td> <td rowspan="8" v-for="item in nowDate" :key="item.nyr"> <el-input type="textarea" :rows="17" @blur="fsqq" placeholder="请输入内容" v-model="item.content"> </el-input> </td> </tr> </tbody> </table> </div> </div> </div> </div> </template> <script> export default { name: 'index', data() { return { nowDate: [], i: 0, y: 0, syz: [], xyz: [] } }, mounted() { this.getWeekDates(); let width= window.innerWidth; console.log(width) }, methods: { fsqq() { }, getWeekDates() { let date = new Date() let day = date.getDay() let diff = date.getDate() - day + (day === 0 ? -6 : 1) // 获取所在周的第一天 let weekStart = new Date(date.setDate(diff)) let weekDates = [] for (let i = 0; i < 7; i++) { let currentDate = new Date(weekStart) currentDate.setDate(weekStart.getDate() + i) weekDates.push(currentDate) } weekDates.forEach((date) => { let year = date.getFullYear() let month = (date.getMonth() + 1).toString().padStart(2, '0') let day = date.getDate().toString().padStart(2, '0') let dayOfWeek = new Intl.DateTimeFormat('zh-CN', { weekday: 'long' }).format(date) console.log(year + '-' + month + '-' + day + ' (' + dayOfWeek + ')') this.nowDate.push({ nyr: year + '-' + month + '-' + day, xq: dayOfWeek }) }) }, getPreviousWeekDates() { this.nowDate = []; this.syz = [] if (this.y > 0) { this.y = this.y - 1 } this.i = this.i + 1 let weeksAgo = this.i let today = new Date() if (this.xyz.length > 0) { today = new Date(this.xyz[0].nyr) } let firstDayOfWeek = today.getDate() - today.getDay() + (today.getDay() === 0 ? -6 : 1) // 获取本周的第一天 let startingDate = new Date(today.setDate(firstDayOfWeek)) let weekDates = [] for (let i = 0; i < weeksAgo; i++) { startingDate.setDate(startingDate.getDate() - 7) // 递减起始日期 for (let j = 0; j < 7; j++) { let currentDate = new Date(startingDate) currentDate.setDate(startingDate.getDate() + j) weekDates.push(currentDate) } } let remaining = [] if (this.i > 1) { remaining = weekDates.slice((this.i - 1) * 7) } else { remaining = weekDates } remaining.forEach((date) => { let year = date.getFullYear() let month = (date.getMonth() + 1).toString().padStart(2, '0') let day = date.getDate().toString().padStart(2, '0') let dayOfWeek = new Intl.DateTimeFormat('zh-CN', { weekday: 'long' }).format(date) this.syz.push({ nyr: year + '-' + month + '-' + day, xq: dayOfWeek }) this.nowDate.push({ nyr: year + '-' + month + '-' + day, xq: dayOfWeek }) console.log(year + '-' + month + '-' + day + ' (' + dayOfWeek + ')') // console.log(this.syz) }) return weekDates }, getNextWeekDates() { this.xyz = []; this.nowDate = []; if (this.i > 0) { this.i = this.i - 1 } this.y = this.y + 1 // 将 this.i 的值加 1 let weeksAgo = this.y let today = new Date() if (this.syz.length > 0) { today = new Date(this.syz[6].nyr) } let firstDayOfWeek = today.getDate() - today.getDay() + (today.getDay() === 0 ? -6 : 1) // 获取本周的第一天 let startingDate = new Date(today.setDate(firstDayOfWeek)) let weekDates = [] for (let i = 0; i < weeksAgo; i++) { startingDate.setDate(startingDate.getDate() + 7) // 递增起始日期 for (let j = 0; j < 7; j++) { let currentDate = new Date(startingDate) currentDate.setDate(startingDate.getDate() + j) weekDates.push(currentDate) } } let remaining = [] if (this.y > 1) { remaining = weekDates.slice((this.y - 1) * 7) // 获取下一周的日期 } else { remaining = weekDates } remaining.forEach((date) => { let year = date.getFullYear() let month = (date.getMonth() + 1).toString().padStart(2, '0') let day = date.getDate().toString().padStart(2, '0') let dayOfWeek = new Intl.DateTimeFormat('zh-CN', { weekday: 'long' }).format(date) this.xyz.push({ nyr: year + '-' + month + '-' + day, xq: dayOfWeek }) // console.log(this.xyz) this.nowDate.push({ nyr: year + '-' + month + '-' + day, xq: dayOfWeek }) console.log(year + '-' + month + '-' + day + ' (' + dayOfWeek + ')') }) return weekDates } } } </script> <style scoped> .ss { content: ""; position: absolute; width: 1px; height:164px; 需要手调 ,线的长度 top: 1px; 需要手调 ,线的位置 left: -5px; background-color: white; display: block; transform: rotate(-57deg); transform-origin: top; } table { width: 80vw; border-collapse: collapse; border: 2px #797979 solid; } th, td { padding: 10px; width: 100px; border: 2px #797979 solid; text-align: center; } th { height: 10vh; background-color: #d7d7d7; } td { height: 40vh; } #operButton { position: absolute; left: 600px; top: 100px; } #operButton button { width: 100px; height: 50px; } </style>