Vue實(shí)現(xiàn)下拉表格組件
本文實(shí)例為大家分享了Vue實(shí)現(xiàn)下拉表格組件的具體代碼,供大家參考,具體內(nèi)容如下
<template>
? <div>
? ? <div class="select-table">
? ? ? <el-form ref="verification" label-width="80px" :model="selectData" :rules="rules">
? ? ? ? <el-form-item label="姓名" prop="userName">
? ? ? ? ? <el-input @change="changeTab" v-model="selectData.userName" placeholder="選擇用戶" :suffix-icon="showTree?'el-icon-arrow-up':'el-icon-arrow-down'" @click.native="deptogglePanel($event)"></el-input>
? ? ? ? </el-form-item>
? ? ? </el-form>
? ? </div>
? ? <div v-if="showTree" class="treeDiv" ref="tableList">
? ? ? <div style="display: flex;align-items: center;margin-bottom: 10px">
? ? ? ? <span style="font-size: 14px;color: #606266;margin: 0 10px">姓名</span>
? ? ? ? <el-input style="width: 200px" clearable v-model="formData.userName" ?size="small" placeholder="請(qǐng)輸入姓名"></el-input>
? ? ? ? <span style="font-size: 14px;color: #606266;margin: 0 10px">職務(wù)</span>
? ? ? ? <el-input style="width: 200px" clearable v-model="formData.position" size="small" placeholder="請(qǐng)輸入職務(wù)"></el-input>
? ? ? ? <el-button style="margin-left: 10px" size="small" type="primary" plain @click="getTableData">查詢</el-button>
? ? ? </div>
? ? ? <el-table @row-click="handleRegionNodeClick" :data="tableData" border stripe ref="tableView" size="small" height='200px' highlight-current-row :header-cell-style="{background:'#ECF5FF',color:'#606266',fontWeight:'bold'}">
? ? ? ? <el-table-column prop="userName" label="姓名" header-align="center" show-overflow-tooltip></el-table-column>
? ? ? ? <el-table-column prop="position" label="職位" align="center"></el-table-column>
? ? ? ? <el-table-column prop="orgName" label="標(biāo)段" align="center"></el-table-column>
? ? ? </el-table>
? ? ? <el-pagination
? ? ? ? ? style="width: calc(100% - 10px); bottom: 10px;background: rgb(236, 245, 255);"
? ? ? ? ? @size-change="dolNandleSizeChange"
? ? ? ? ? @current-change="dolHandleCurrentChange"
? ? ? ? ? :current-page="formData.page"
? ? ? ? ? :page-sizes="[15, 30, 50, 100]"
? ? ? ? ? :page-size="formData.rows"
? ? ? ? ? layout="total, sizes, prev, pager, next, jumper"
? ? ? ? ? :total="total">
? ? ? </el-pagination>
? ? </div>
? </div>
</template>JS
export default {
? name: "selectTable",
? data() {
? ? return {
? ? ? total: 0,
? ? ? //表單驗(yàn)證
? ? ? rules: {
? ? ? ? userName: [{ required: true, message: "姓名不能為空", trigger: "blur" }]
? ? ? },
? ? ? tableData:[],
? ? ? formData:{
? ? ? ? userName:"",
? ? ? ? position:"",
? ? ? ? rows: 15,
? ? ? ? page: 1,
? ? ? },
? ? ? queryInfo:{},
? ? ? showTree: false,
? ? ? selectData:{
? ? ? ? userName:''
? ? ? }
? ? }
? },
? mounted() {
? ? this.getTableData()
? },
? methods: {
? ? // 獲取查詢數(shù)據(jù)
? ? getTableData() {
? ? ? this.$axios.get('/api/smartbs/userPower/selectPersonList',{params:this.formData}).then((res) => {
? ? ? ? if (res.data.success) {
? ? ? ? ? this.tableData = res.data.data.rows
? ? ? ? ? this.total = res.data.data.total
? ? ? ? }
? ? ? })
? ? },
? ? // 點(diǎn)擊input 阻止冒泡 控制table顯示隱藏
? ? deptogglePanel (event) {
? ? ? event || (event = window.event)
? ? ? event.stopPropagation ? event.stopPropagation() : (event.cancelBubble = true)
? ? ? this.showTree ? this.tableHide() : this.tableShow()
? ? },
? ? tableShow() {
? ? ? this.showTree = true
? ? ? document.addEventListener('click', this.tableHideList, false)
? ? },
? ? tableHide() {
? ? ? this.showTree = false
? ? ? document.addEventListener('click', this.tableHideList, false)
? ? },
? ? tableHideList(e) {
? ? ? if (this.$refs.tableList&& !this.$refs.tableList.contains(e.target)) {
? ? ? ? this.tableHide()
? ? ? }
? ? },
? ? // 點(diǎn)擊table節(jié)點(diǎn)
? ? handleRegionNodeClick (data) {
? ? ? this.selectTableId = data.id
? ? ? this.showTree = false
? ? ? this.$refs.verification.resetFields();
? ? ? this.selectData.userName = data.userName // 用戶名字
? ? ? this.$emit('getUserName',this.selectData.userName)
? ? },
? ? dolNandleSizeChange(val) {
? ? ? this.formData.rows = val;
? ? ? this.formData.page = 1;
? ? ? this.getTableData()
? ? },
? ? dolHandleCurrentChange(val) {
? ? ? this.formData.page = val;
? ? ? this.getTableData()
? ? },
? ? // 手動(dòng)輸入
? ? changeTab(val) {
? ? ? this.$emit('getUserName',val)
? ? },
? ? // 表單驗(yàn)證
? ? submitForm() {
? ? ? this.$refs.verification.validate((valid) => {
? ? ? ? if (valid) {
? ? ? ? ? return valid
? ? ? ? } else {
? ? ? ? ? return false;
? ? ? ? }
? ? ? });
? ? },
? }
}CSS
<style scoped lang="less">
.select-table {
? position: relative;
}
.treeDiv{
? width: 100%;
? margin-left: 80px;
? position:absolute;
? top: 50px;
? z-index: 999;
? background-color: #FFFFFF;
? border: 1px solid #e5e5e5;
? border-radius: 4px;
? padding: 10px;
? .el-table{
? ? border: 1px solid #ccc;
? ? border-radius: 6px;
? }
? .el-table /deep/ td{
? ? padding: 4px 0;
? }
}
</style>
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue將el-table導(dǎo)出為excel文件的實(shí)現(xiàn)方法
在 Vue + Element UI 中,el-table 數(shù)據(jù)導(dǎo)出 Excel 文件,可以使用 xlsx(SheetJS)庫進(jìn)行處理,以下是詳細(xì)的實(shí)現(xiàn)方法,包括安裝依賴、代碼示例和優(yōu)化建議,需要的朋友可以參考下2025-02-02
vue項(xiàng)目中axios如何捕捉http狀態(tài)碼為401錯(cuò)誤問題
這篇文章主要介紹了vue項(xiàng)目中axios如何捕捉http狀態(tài)碼為401錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
vue.js中關(guān)于點(diǎn)擊事件方法的使用(click)
這篇文章主要介紹了vue.js中關(guān)于點(diǎn)擊事件方法的使用(click),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue項(xiàng)目的屏幕自適應(yīng)多個(gè)方案總結(jié)
最近在用VUE寫大屏頁面,遇到屏幕自適應(yīng)問題,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目的屏幕自適應(yīng)多個(gè)方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
element vue validate驗(yàn)證名稱重復(fù) 輸入框與后臺(tái)重復(fù)驗(yàn)證 特殊字符 字符長度 及注意事項(xiàng)小結(jié)【實(shí)例代碼
這篇文章主要介紹了element vue validate驗(yàn)證名稱重復(fù) 輸入框與后臺(tái)重復(fù)驗(yàn)證 特殊字符 字符長度 及注意事項(xiàng)小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11
Vue中使用計(jì)算屬性的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于Vue中使用計(jì)算屬性的知識(shí)點(diǎn)總結(jié)內(nèi)容,對(duì)此有興趣的朋友們可以跟著學(xué)習(xí)參考下。2021-12-12
vue中遇到的坑之變化檢測(cè)問題(數(shù)組相關(guān))
這篇文章主要介紹了vue中遇到的坑之變化檢測(cè)問題(數(shù)組相關(guān)) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10

