国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue+element ui生成以當(dāng)月日期時間為表頭的table表格

這篇具有很好參考價值的文章主要介紹了vue+element ui生成以當(dāng)月日期時間為表頭的table表格。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景

最近在寫項目的時候遇到了一個新的需求,就是需要生成一個以當(dāng)前月份日期時間為表頭的表格,用來展示這個月的值班情況

表格上方有切換月份的按鈕,切換對應(yīng)的月份,表頭要顯示對應(yīng)的月份的日期以及對應(yīng)月份下面的數(shù)據(jù),沒有安排值班的日期,用/表示,屬于當(dāng)天的日期時間,將單元格的背景加深

大致的展示效果如下(數(shù)據(jù)為假數(shù)據(jù),只是展示效果使用,具體的以實際為準):
vue+element ui生成以當(dāng)月日期時間為表頭的table表格,vue.js,javascript,前端

實現(xiàn)思路

1.最開始的時候想到的是使用日歷插件fullCalendar去實現(xiàn),但是實現(xiàn)出來的效果不是想要的效果,所以就pass掉了
2.然后就在網(wǎng)上看了一系列大家分享的文章,基本的實現(xiàn)思路有了,那么就是解決實現(xiàn)這一塊的問題了
3.時間日期為表頭這些數(shù)據(jù)是很好得到的,難點就在于我要怎么實現(xiàn)將后端傳過來的對應(yīng)的日期數(shù)據(jù)渲染至表格中,還有就是怎么實現(xiàn)對應(yīng)日期下面的表格操作

實現(xiàn)步驟

  • 先計算出可供切換的年份和月份
  //先得到當(dāng)前時間的年份和月份
  //在data中定義
    data() {
        return {
            time: {
                year: new Date().getFullYear(),
                month: new Date().getMonth()
            },
        }
    },
    //methods中寫上增加年份與月份的方法
    methods:{
        reduceMonth() {
            if (this.time.month > 0) {
                this.time.month = this.time.month - 1
            } else {
                this.time.month = 11
                this.time.year = this.time.year - 1
            }
        },
        addMonth() {
            if (this.time.month < 11) {
                this.time.month = this.time.month + 1
            } else {
                this.time.month = 0
                this.time.year = this.time.year + 1
            }
        },
}
  • 將得到數(shù)據(jù)與方法寫入對應(yīng)的樣式結(jié)構(gòu)中去
            <!-- 月份 -->
            <div class="month-con">
                <i class="el-icon-arrow-left" @click="reduceMonth()" />
                &nbsp;
                <i class="el-icon-arrow-right" @click="addMonth()" />
                <span class="month">{{ month(time.month + 1) }}</span>
                <span>{{ time.year }}</span>
            </div>
  • 切換月份與年份的就完成了,效果如圖
    vue+element ui生成以當(dāng)月日期時間為表頭的table表格,vue.js,javascript,前端

  • 在計算得到當(dāng)月的日期數(shù)據(jù)作為表頭數(shù)據(jù)

//在這里主要使用的是計算屬性,利用計算屬性得到一個日期時間數(shù)組
//還是利用上面步驟中定義好的data數(shù)據(jù),這里就不重復(fù)了
    computed: {
        // 獲取當(dāng)前月份時間日期
        visibleCalendar: function () {
            // 獲取今天的年月日
            const today = new Date()
            today.setHours(0)
            today.setMinutes(0)
            today.setSeconds(0)
            today.setMilliseconds(0)

            const calendarArr = []
            // 獲取當(dāng)前月份第一天
            const currentFirstDay = new Date(this.time.year, this.time.month, 1)
            const d = new Date(this.time.year, this.time.month + 1, 0);
            const currentMonthDay = d.getDate()
            // 獲取第一天是周幾,注意周日的時候getDay()返回的是0,要做特殊處理
            const weekDay = currentFirstDay.getDay() === 0 ? 7 : currentFirstDay.getDay()
            // 以當(dāng)前月份的第一天作為第一天
            const startDay = currentFirstDay.getTime()

            // 利用當(dāng)前月份一共有多少天來顯示日歷表頭
            for (let i = 0; i < currentMonthDay; i++) {
                const date = new Date(startDay + i * 24 * 3600 * 1000)
                // console.log(date,'date');
                let Y = date.getFullYear() + "-";//年
                let M = (date.getMonth() + 1 < 10  ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";//月
                let D =  (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + "";//日
                let nowDate = Y + M + D
                calendarArr.push({
                    date: new Date(startDay + i * 24 * 3600 * 1000),
                    year: date.getFullYear(),
                    month: date.getMonth(),
                    week: this.getweekday(date),
                    day: date.getDate(),
                    keyDate: nowDate,
                })
            }
            return calendarArr
        }
    },
  • 得到表頭數(shù)據(jù)之后生成動態(tài)表頭
        //在table中生成表頭
                <el-table size="mini" border>
                    <el-table-column label="技術(shù)員" fixed="left" width="200px">
                        <template slot-scope="{row}">
                            <div>{{ row.name }}</div>
                            <div>手機號: {{ row.tel }}</div>
                            <div>郵箱: {{ row.email }}</div>
                        </template>
                    </el-table-column>
                    <el-table-column :label="item.day + '日' + ',' + item.week" v-for="item in visibleCalendar"
                        :key="item.keyDate" width="100">
                        <template slot-scope="{row}">
                            {{ row.dayData[item.keyDate].event }}
                        </template>
                    </el-table-column>
                </el-table>
  • 渲染完成之后的結(jié)構(gòu)如下,頁面多出的部分以滾動條的格式展現(xiàn)
    vue+element ui生成以當(dāng)月日期時間為表頭的table表格,vue.js,javascript,前端

  • 到這里,頁面的基本樣式結(jié)構(gòu)已經(jīng)差不多得到了,下面就是要進行表格數(shù)據(jù)的處理,在這里與后端商量好你需要什么樣的數(shù)據(jù)格式,我這邊是直接說了我需要這種數(shù)據(jù)格式

        {
            "name": "zhangsan",
            "tel": "133300008888",
            "email": "zhangsan@163.com",
            "dayData": {
                "2023-05-25": {
                    "startTime": "2023-05-25 09:00:00",
                    "endTime": "2023-05-25 17:59:59",
                    "event": '值班'
                },
                "2023-05-22": {
                    "startTime": "2023-05-22 09:00:00",
                    "endTime": "2023-05-22 17:59:59",
                    "event": '值班'
                },
                "2023-05-21": {
                    "startTime": "2023-05-21 09:00:00",
                    "endTime": "2023-05-21 17:59:59",
                    "event": '值班'
                }
            }
        },
  • 得到數(shù)據(jù)之后在轉(zhuǎn)換成自己想要的數(shù)據(jù)格式,在這里我也是在computed計算屬性里面進行轉(zhuǎn)換的,方法如下
        //tableData就是得到的接口返回的數(shù)據(jù)
        //tableOldData就是通過計算屬性得到的最終的渲染表格的數(shù)據(jù)集合
        //visibleCalendar是在上一步驟中得到的日期時間集合
        //keyDate是日期時間集合里面的一個字段,用來作為判斷依據(jù)的
        tableOldData() {
            const oldData = []
            this.tableData.forEach(item => {
                const newItem = { ...item }
                const dayData = newItem.dayData
                newItem.dayData = {}
                this.visibleCalendar.forEach(date => {
                    let oldDate = date.keyDate
                    if (dayData[oldDate]) {
                        newItem.dayData[oldDate] = dayData[oldDate]
                    } else {
                        newItem.dayData[oldDate] = {}
                    }
                })
                oldData.push(newItem)
            })
            return oldData
        },
  • 再將得到的日期數(shù)據(jù)渲染至表格中,就可以得到一張以日期時間為表頭的動態(tài)表格了

總結(jié)

在這里主要是介紹如何生成以日期和時間為表頭的動態(tài)表格,并且能夠?qū)?shù)據(jù)渲染到表格中去,涉及到表格里面的一些操作,下篇文章進行介紹~

日期時間方法參考博文 教你從零寫vue日歷組件文章來源地址http://www.zghlxwxcb.cn/news/detail-719455.html

到了這里,關(guān)于vue+element ui生成以當(dāng)月日期時間為表頭的table表格的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Element UI 之table表格表頭過長使用點點…顯示,并添加鼠標移入懸浮顯示

    Element UI 之table表格表頭過長使用點點…顯示,并添加鼠標移入懸浮顯示

    需求 鼠標移入表頭 關(guān)鍵點: 1.樣式中添加:(如果在scope中會不起作用) 2.在需要懸浮顯示的表頭文字過長處添加 3.methods中添加: 實現(xiàn) 轉(zhuǎn)載處:https://blog.csdn.net/qq_43519782/article/details/116647539

    2024年02月12日
    瀏覽(32)
  • element-ui table-自定義表格某列的表頭樣式或者功能

    element-ui table-自定義表格某列的表頭樣式或者功能

    自帶表格 自定義表格某列的表頭樣式或者功能

    2024年02月03日
    瀏覽(24)
  • element-ui table表格滾動條拉到最右側(cè) 表頭與內(nèi)容不能對齊

    1.問題概述 當(dāng)表格數(shù)據(jù)太多,會出現(xiàn)縱向滾動條和橫向滾動條,把橫向滾動條拉到最右側(cè)時,會出現(xiàn)表頭與內(nèi)容不能對齊的現(xiàn)象。 2.解決方法 1.當(dāng)頁面數(shù)據(jù)加載完畢后,在后面加上 2.別忘了給表格加上ref屬性

    2024年02月10日
    瀏覽(27)
  • 【JSON渲染工具】Element UI動態(tài)生成表格,多行表頭,自定義表頭合并

    【JSON渲染工具】Element UI動態(tài)生成表格,多行表頭,自定義表頭合并

    table :中每個對象代表一張表格; table_header :表示表格表頭數(shù)據(jù); headerColor :表示表格表頭背景顏色; headerData :表示表格表頭內(nèi)容數(shù)據(jù); prop :值為與 table_content 中對象屬性對應(yīng),data_list中的avgMen對應(yīng)的prop需為\\\"first.avgMen\\\"(這里跟獲取對象的點語法相似),如以下例子 label

    2024年04月10日
    瀏覽(33)
  • element-ui 表格el-table高度不是一個固定值時固定表頭

    element-ui 表格el-table高度不是一個固定值時固定表頭

    elementui中為表格組件提供了height屬性實現(xiàn)固定表頭 height可以為數(shù)字或者字符串,當(dāng)為一個數(shù)字時表示固定的高度,也可以為百分比等字符串。 當(dāng)height不是一個固定值時,如期望表格可以填充完頁面剩余空間,并且固定表頭時,可以通過給height屬性賦值字符串形式實現(xiàn)。以頁

    2024年01月25日
    瀏覽(108)
  • Vue+Element-ui實現(xiàn)表格嵌套表格(表頭不同)

    Vue+Element-ui實現(xiàn)表格嵌套表格(表頭不同)

    data中integrateList根據(jù)后端返回的json數(shù)據(jù)確定,其格式為:

    2024年02月14日
    瀏覽(37)
  • vue+Element UI實現(xiàn)表格表頭縱向顯示

    vue+Element UI實現(xiàn)表格表頭縱向顯示

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 element框架的teble表格的數(shù)據(jù)展示由橫向轉(zhuǎn)向豎向,主要包括element框架的teble表格的數(shù)據(jù)展示由橫向轉(zhuǎn)向豎向使用實例、應(yīng)用技巧、基本知識點總結(jié)和需要注意事項,具有一定的參考價值,需要的朋友可以

    2024年02月06日
    瀏覽(28)
  • Vue+Element ui動態(tài)表格 實現(xiàn)表頭自適應(yīng)寬度

    Vue+Element ui動態(tài)表格 實現(xiàn)表頭自適應(yīng)寬度

    根據(jù)業(yè)務(wù)需求,工作中會出現(xiàn)表頭信息不固定,根據(jù)后臺返回數(shù)據(jù),我們要實現(xiàn)動態(tài)表格的實現(xiàn) 1. tableData為表格數(shù)據(jù),tableHeader為表頭數(shù)據(jù)。 2. 實現(xiàn)表頭自適應(yīng)寬度(二種方法) ? ? ① 第一種通過動態(tài)width來定義,通過表頭數(shù)據(jù)的遍歷,將label的表頭信息傳入方法中 ????

    2024年02月15日
    瀏覽(31)
  • vue element-ui表格組件動態(tài)多級表頭

    vue element-ui表格組件動態(tài)多級表頭

    實際項目的需求,需要根據(jù)后端動態(tài)獲取的方式來初始化表格的表頭包含哪些信息,且有很多信息是有規(guī)律的,所以我們需要Element UI動態(tài)生成多級表頭。需要的效果圖如下: 由于統(tǒng)計維度是可變化的(它可以是省市也可以是區(qū)縣),所以需要專門設(shè)置一個表格的數(shù)據(jù)來保存

    2024年02月10日
    瀏覽(32)
  • Vue+Element Ui實現(xiàn)el-table自定義表頭下拉選擇表頭篩選

    Vue+Element Ui實現(xiàn)el-table自定義表頭下拉選擇表頭篩選

    用vue+element ui開發(fā)管理系統(tǒng)時,使用el-table做表格,當(dāng)表格列過多的時候,想要做成可選表頭的,實現(xiàn)表格列的篩選顯示,效果如下: 代碼文件結(jié)構(gòu): 廢話不多說,直接上代碼: 第一步:新建名為 TableHeaderRender.vue?的文件 template ??el-popover ????placement=\\\"bottom\\\" ????width=\\\"2

    2024年02月02日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包