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

Vue3+Element Plus實(shí)現(xiàn)el-table跨行顯示(非腳手架)

這篇具有很好參考價(jià)值的文章主要介紹了Vue3+Element Plus實(shí)現(xiàn)el-table跨行顯示(非腳手架)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

app組件內(nèi)容

 <div id="app">
        <!-- 遠(yuǎn)程搜索 -->
        <el-form :inline="true" :model="formInline" class="demo-form-inline">
            <el-form-item label="任務(wù)名稱:" style="margin-left:30px;">
                <el-select v-model="value" filterable remote clearable reserve-keyword placeholder="Please enter a keyword" :remote-method="remoteMethod" :loading="loading">
                    <el-option v-for="item in options" :key="item.CODE" :label="item.NAME" :value="item.CODE" />
                </el-select>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="onSubmit">查詢</el-button>
            </el-form-item>
        </el-form>
        <!-- 表格數(shù)據(jù) -->
        <el-table :data="tableData" stripe border style="width: 98%;" :span-method="objectSpanMethod" max-height="650">
            <el-table-column fixed prop="CODE" label="編碼" width="60"></el-table-column>
            <el-table-column prop="NAME" label="名稱"></el-table-column>
            <el-table-column prop="FREQUENCY" label="頻次" width="80"></el-table-column>
            <el-table-column prop="FNAME" label="執(zhí)行科室" width="150"></el-table-column>
            <el-table-column prop="FILENAME" label="文件名稱"></el-table-column>
            <el-table-column prop="STATUS" label="狀態(tài)" width="80"></el-table-column>
            <el-table-column prop="CREATEID" label="上傳人" width="80"></el-table-column>
            <el-table-column prop="CREATEDATE" label="上傳時(shí)間"></el-table-column>
        </el-table>
    </div>

使用:span-method="objectSpanMethod"自定義方法實(shí)現(xiàn)跨行顯示

const objectSpanMethod = ({
                    row,
                    column,
                    rowIndex,
                    columnIndex
                }) => {
                    const columnsToSpan = ['CODE', 'NAME', 'FNAME', 'FREQUENCY']; // 列名數(shù)組
                    if (columnsToSpan.includes(column.property)) {
                        if (rowIndex === 0 || row[column.property] !== tableData.value[rowIndex - 1][column.property]) {
                            // 如果是相同 "NAME" 的第一行,則返回正確的 rowspan 和 colspan
                            let rowspan = 1;
                            for (let i = rowIndex + 1; i < tableData.value.length; i++) {
                                if (tableData.value[i][column.property] === row[column.property]) {
                                    rowspan++;
                                    tableData.value[i]._rowspan = 0; // 隱藏后續(xù)行的 "NAME"
                                } else {
                                    break;
                                }
                            }
                            return {
                                rowspan,
                                colspan: 1
                            };
                        }
                        return {
                            rowspan: 0,
                            colspan: 0
                        }; // 隱藏相同 "NAME" 的后續(xù)行
                    }
                    return {
                        rowspan: 1,
                        colspan: 1
                    };
                }

查詢方法


                const onSubmit = (boolen) => {
                    // 在這里獲取輸入的值
                    const inputValue = value.value;
                    if ((inputValue !== null && inputValue !== undefined && inputValue !== '') || boolen) {
                        // console.log("Input Value:", inputValue);
                        // axios.get(UJCAjaxBaseUrl + "/請(qǐng)求地址", {
                        //     params: {
                        //         TaskId: inputValue
                        //     }
                        // }).then((response) => {
                        //     console.log("response:" + response.data.data);
                        //     tableData.value = response.data.data;
                        //     return true;
                        // }).catch((error) => {
                        //     console.error('發(fā)生錯(cuò)誤:', error);
                        //     return false;
                        // });
                    } else {
                        showErrorMessage('請(qǐng)搜索并選擇您要查詢的細(xì)則編碼或細(xì)則名稱!');
                        return false;
                    }

初始化掛載

  //初始化掛載
                onMounted(() => {
                    list.value = states.map((item) => {
                        return {
                            value: item
                        };
                    });
                    onSubmit(true);
                });

新建一個(gè)html即可進(jìn)行測(cè)試,完整代碼如下

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue 3 回車鍵示例</title>
    <!-- 引入 Vue 3 和 Element Plus -->
    <!-- 包含 Vue 3 庫(kù) -->
    <script src="https://cdn.jsdelivr.net/npm/vue@3.3.4/dist/vue.global.min.js"></script>
    <!-- 包含 Element Plus 的 CSS 樣式 -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-plus@2.3.9/dist/index.min.css">
    <!-- 包含 Element Plus 的 JavaScript 文件 -->
    <script src="https://cdn.jsdelivr.net/npm/element-plus@2.3.9/dist/index.full.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.5.0/axios.min.js"></script>

</head>

<body>
    <div id="app">
        <!-- 遠(yuǎn)程搜索 -->
        <el-form :inline="true" :model="formInline" class="demo-form-inline">
            <el-form-item label="任務(wù)名稱:" style="margin-left:30px;">
                <el-select v-model="value" filterable remote clearable reserve-keyword placeholder="Please enter a keyword" :remote-method="remoteMethod" :loading="loading">
                    <el-option v-for="item in options" :key="item.CODE" :label="item.NAME" :value="item.CODE" />
                </el-select>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="onSubmit">查詢</el-button>
            </el-form-item>
        </el-form>
        <!-- 表格數(shù)據(jù) -->
        <el-table :data="tableData" stripe border style="width: 98%;" :span-method="objectSpanMethod" max-height="650">
            <el-table-column fixed prop="CODE" label="編碼" width="60"></el-table-column>
            <el-table-column prop="NAME" label="名稱"></el-table-column>
            <el-table-column prop="FREQUENCY" label="頻次" width="80"></el-table-column>
            <el-table-column prop="FNAME" label="執(zhí)行科室" width="150"></el-table-column>
            <el-table-column prop="FILENAME" label="文件名稱"></el-table-column>
            <el-table-column prop="STATUS" label="狀態(tài)" width="80"></el-table-column>
            <el-table-column prop="CREATEID" label="上傳人" width="80"></el-table-column>
            <el-table-column prop="CREATEDATE" label="上傳時(shí)間"></el-table-column>
        </el-table>
    </div>
    <script>
        const {
            createApp,
            reactive,
            ref,
            onMounted,
            onBeforeMount,
            onUpdated,
            ElMessage
        } = Vue;
        const vue3DepartFileStatis = {
            setup() {
                //定義響應(yīng)數(shù)據(jù)
                const list = ref([]);
                const options = ref([]);
                const value = ref([]);
                const loading = ref(false);
                const tableData = ref([]); //表格響應(yīng)式
                let formInline = reactive({
                    keyword: ""
                });
                const isMessageShowing = ref(false);

                //初始化掛載
                onMounted(() => {
                    list.value = states.map((item) => {
                        return {
                            value: item
                        };
                    });
                    onSubmit(true);
                });

                //遠(yuǎn)程搜索
                const remoteMethod = (query) => {
                    //if (query) {
                    //    loading.value = true;
                    //    setTimeout(() => {
                    //        loading.value = false;
                    //        options.value = list.value.filter((item) => {
                    //            return item.value.toLowerCase().includes(query.toLowerCase())
                    //        });
                    //    }, 200);
                    //} else {
                    //    options.value = [];
                    //}
                    if (query) {
                        loading.value = true;
                        console.log(query);
                        // 發(fā)送 Axios 請(qǐng)求
                        axios.get(UJCAjaxBaseUrl + "/請(qǐng)求地址", {
                            params: {
                                TaskName: query
                            }
                        }).then((response) => {
                            loading.value = false;
                            options.value = response.data.data;
                            console.log(response.data.data);
                        }).catch((error) => {
                            console.error('發(fā)生錯(cuò)誤:', error);
                            loading.value = false;
                        });
                    } else {
                        options.value = [];
                    }
                }

                //封裝錯(cuò)誤提示
                const showErrorMessage = (message = 'Oops, this is a error message.') => {
                    if (!isMessageShowing.value) {
                        isMessageShowing.value = true;

                        ElementPlus.ElMessage({
                            showClose: true,
                            message: message,
                            type: 'error',
                            onClose: () => {
                                isMessageShowing.value = false;
                            },
                        });
                    }
                };


                //查詢
                const onSubmit = (boolen) => {
                    // 在這里獲取輸入的值
                    const inputValue = value.value;
                    if ((inputValue !== null && inputValue !== undefined && inputValue !== '') || boolen) {
                        // console.log("Input Value:", inputValue);
                        // axios.get(UJCAjaxBaseUrl + "/請(qǐng)求地址", {
                        //     params: {
                        //         TaskId: inputValue
                        //     }
                        // }).then((response) => {
                        //     console.log("response:" + response.data.data);
                        //     tableData.value = response.data.data;
                        //     return true;
                        // }).catch((error) => {
                        //     console.error('發(fā)生錯(cuò)誤:', error);
                        //     return false;
                        // });
                    } else {
                        showErrorMessage('請(qǐng)搜索并選擇您要查詢的細(xì)則編碼或細(xì)則名稱!');
                        return false;
                    }

                    //模擬數(shù)據(jù)
                    tableData.value = [{
                        CODE: '001',
                        NAME: 'Item A',
                        FREQUENCY: 'Daily',
                        FNAME: 'Department A',
                        FILENAME: 'File A',
                        STATUS: 'Active',
                        CREATEID: 'User 1',
                        CREATEDATE: '2023-09-06'
                    }, {
                        CODE: '002',
                        NAME: 'Item A',
                        FREQUENCY: 'Weekly',
                        FNAME: 'Department B',
                        FILENAME: 'File B',
                        STATUS: 'Inactive',
                        CREATEID: 'User 2',
                        CREATEDATE: '2023-09-07'
                    }, {
                        CODE: '003',
                        NAME: 'Item B',
                        FREQUENCY: 'Monthly',
                        FNAME: 'Department C',
                        FILENAME: 'File C',
                        STATUS: 'Active',
                        CREATEID: 'User 3',
                        CREATEDATE: '2023-09-08'
                    }, {
                        CODE: '004',
                        NAME: 'Item B',
                        FREQUENCY: 'Daily',
                        FNAME: 'Department A',
                        FILENAME: 'File D',
                        STATUS: 'Inactive',
                        CREATEID: 'User 4',
                        CREATEDATE: '2023-09-09'
                    }]
                }

                //模擬數(shù)據(jù)
                const states = [];

                const objectSpanMethod = ({
                    row,
                    column,
                    rowIndex,
                    columnIndex
                }) => {
                    const columnsToSpan = ['CODE', 'NAME', 'FNAME', 'FREQUENCY']; // 列名數(shù)組
                    if (columnsToSpan.includes(column.property)) {
                        if (rowIndex === 0 || row[column.property] !== tableData.value[rowIndex - 1][column.property]) {
                            // 如果是相同 "NAME" 的第一行,則返回正確的 rowspan 和 colspan
                            let rowspan = 1;
                            for (let i = rowIndex + 1; i < tableData.value.length; i++) {
                                if (tableData.value[i][column.property] === row[column.property]) {
                                    rowspan++;
                                    tableData.value[i]._rowspan = 0; // 隱藏后續(xù)行的 "NAME"
                                } else {
                                    break;
                                }
                            }
                            return {
                                rowspan,
                                colspan: 1
                            };
                        }
                        return {
                            rowspan: 0,
                            colspan: 0
                        }; // 隱藏相同 "NAME" 的后續(xù)行
                    }
                    return {
                        rowspan: 1,
                        colspan: 1
                    };
                }


                return {
                    list,
                    options,
                    value,
                    loading,
                    remoteMethod,
                    onSubmit,
                    tableData,
                    formInline,
                    objectSpanMethod
                }
            }
        }

        createApp(vue3DepartFileStatis)
            .use(ElementPlus).mount("#app"); // 掛載應(yīng)用到指定元素上
    </script>

</body>

</html>

效果圖

Vue3+Element Plus實(shí)現(xiàn)el-table跨行顯示(非腳手架),前端,Vue,Element,vue.js,elementui,前端文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-699559.html

到了這里,關(guān)于Vue3+Element Plus實(shí)現(xiàn)el-table跨行顯示(非腳手架)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • vue中數(shù)據(jù)滾動(dòng)顯示 實(shí)現(xiàn)Element-UI中el-table內(nèi)數(shù)據(jù)的懶加載

    工作中我們經(jīng)常會(huì)用到element-ui組件庫(kù)中的le-table組件來(lái)展示數(shù)據(jù),但當(dāng)table的數(shù)據(jù)源數(shù)量過(guò)大的時(shí)候統(tǒng)一展示可能會(huì)出現(xiàn)頁(yè)面卡頓,且會(huì)影響用戶體驗(yàn),為此我們可以嘗試對(duì)el-table中的數(shù)據(jù)做懶加載的效果展示: 1. 掛在階段監(jiān)聽el-table的scroll滾動(dòng)事件 2. 當(dāng)table表格滾動(dòng)條的位置

    2023年04月08日
    瀏覽(17)
  • vue使用element-ui,el-table不顯示

    例如:新增了一個(gè)表格,按官網(wǎng)代碼貼過(guò)來(lái)的,結(jié)果一直不顯示 代碼如下一模一樣,其他數(shù)據(jù)正常顯示,就表格不顯示 其實(shí)版本庫(kù)不一致導(dǎo)致的,賊坑,又不提示 先卸載element-ui安裝一個(gè)低版本的element-ui就可以解決``

    2024年02月11日
    瀏覽(30)
  • 一個(gè)比官網(wǎng)更好的el-table 實(shí)現(xiàn)跨行展示的例子

    一個(gè)比官網(wǎng)更好的el-table 實(shí)現(xiàn)跨行展示的例子

    el-table 實(shí)現(xiàn)跨行展示的例子,好吧,這個(gè)問(wèn)題好像挺容易的,官網(wǎng)文檔就有例子,用的是span-method,不過(guò)官網(wǎng)給的例子其實(shí)實(shí)現(xiàn)起來(lái)有時(shí)候并不容易,而且也不是很靈活,這里給出一種比官網(wǎng)更好的實(shí)現(xiàn)方式。以跨行為例,跨列其實(shí)是類似的。 效果如圖 1、使用的還是官方的

    2024年01月18日
    瀏覽(22)
  • Vue - Element el-table 表頭、行、列合并,底部或頂部顯示匯總行

    Vue - Element el-table 表頭、行、列合并,底部或頂部顯示匯總行

    GitHub Demo 地址 在線預(yù)覽 使用 el-table 的 span-method 方法合并行和列 使用 el-table 的 header-cell-style 方法合并表頭 使用 el-table 的 cell-class-name 方法配合css樣式隱藏Checkbox 使用 el-table 的 show-summary 、 summary-method 方法配合css樣式設(shè)置匯總行和匯總行樣式

    2024年02月14日
    瀏覽(27)
  • #vue3# el-table-horizontal-scroll 讓 el-table 在底部顯示橫向滾動(dòng)條

    一、需求: 當(dāng) el-table 的寬度超出瀏覽器寬度時(shí),盡管 el_table 底部會(huì)出現(xiàn)滾動(dòng)條,但使用起來(lái)不太便捷,因?yàn)槊看涡枰葷L動(dòng)到底部才能使用 el-table 的滾動(dòng)體,這顯得相當(dāng)繁瑣。 為了提升體驗(yàn),希望在 el-table 的 寬度超出屏幕寬度時(shí),即使沒(méi)有滾動(dòng)到底部,也能夠在可視范圍

    2024年01月18日
    瀏覽(30)
  • vue element ui el-table單元格里面顯示多張圖片點(diǎn)擊并放大

    vue element ui el-table單元格里面顯示多張圖片點(diǎn)擊并放大

    效果圖: 一個(gè)單元格里面顯示三張圖片,并且點(diǎn)擊圖片可以放大。 1.將圖片v-for渲染出來(lái),具體上代碼 注:el-popover的屬性? ?2.單元格里能夠展示多張圖片,需要在請(qǐng)求的接口里面做處理 以上兩步,就可以實(shí)現(xiàn)上面的功能。

    2024年02月07日
    瀏覽(30)
  • Vue3 - Element Plus 表格組件 “手動(dòng)“ 取消/選中勾選列,并同步更新表格復(fù)選框 UI 狀態(tài)(el-table 表格組件中,通過(guò)代碼手動(dòng)控制某個(gè)列的選中與取消勾選,并且復(fù)選框跟著變)

    Vue3 - Element Plus 表格組件 “手動(dòng)“ 取消/選中勾選列,并同步更新表格復(fù)選框 UI 狀態(tài)(el-table 表格組件中,通過(guò)代碼手動(dòng)控制某個(gè)列的選中與取消勾選,并且復(fù)選框跟著變)

    網(wǎng)上基本上都是全部取消勾選的教程,沒(méi)有僅對(duì)單獨(dú)列操作的教程。 本文 實(shí)現(xiàn)了在 vue3 + element plus 組件庫(kù)中,對(duì) “某一個(gè)” 或 “幾個(gè)單獨(dú)” 列進(jìn)行勾選/取消(手動(dòng)操作表格復(fù)選框),并且讓表格復(fù)選框自動(dòng)同步選中狀態(tài), 完美解決刪除表格列勾選的數(shù)據(jù)后,選中和取消

    2024年02月03日
    瀏覽(131)
  • 解決vue-electron element-UI中el-table表格不顯示

    解決vue-electron element-UI中el-table表格不顯示

    問(wèn)題:element-UI官網(wǎng)上el-table組件,引入自己項(xiàng)目的時(shí)候表格不顯示。 解決方案: 修改.electron-vuewebpack.renderer.config.js 將 修改為 即可解決。

    2024年02月16日
    瀏覽(36)
  • element plus el-table 添加滾動(dòng)監(jiān)聽

    element plus el-table 添加滾動(dòng)監(jiān)聽

    項(xiàng)目上使用 el-table 加載1000 條數(shù)據(jù),同時(shí)有三個(gè)列的數(shù)據(jù)需要實(shí)時(shí)更新,而數(shù)據(jù)更新時(shí)會(huì)導(dǎo)致頁(yè)面不響應(yīng),表現(xiàn)為拖動(dòng)過(guò)程中突然卡頓。為了解決卡頓問(wèn)題提出了兩個(gè)解決辦法:一個(gè)是滾動(dòng)時(shí)清除定時(shí)器,不再刷新表格,滾動(dòng)結(jié)束后恢復(fù)定時(shí)器;另一個(gè)是只刷新視口數(shù)據(jù),更

    2024年02月06日
    瀏覽(27)
  • Vue+element實(shí)現(xiàn)el-table行內(nèi)編輯并校驗(yàn)

    Vue+element實(shí)現(xiàn)el-table行內(nèi)編輯并校驗(yàn)

    el-table行內(nèi)編輯情況情況概要:之前在開發(fā)過(guò)程中對(duì)于element數(shù)據(jù)的新增,修改,刪除。一般直接結(jié)合el-form使用。也就是新增的時(shí)候點(diǎn)新增然后出來(lái)一個(gè)彈框,里面嵌套一個(gè)表單,然后保存就好了。這次項(xiàng)目中要求所有的新增,修改,刪除功能加在表格中,實(shí)現(xiàn)行內(nèi)編輯功能。

    2024年02月15日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包