vue表格多選、vue動態(tài)顯示隱藏表格列送讲、vue動態(tài)多列排序

寫在前面

需求:表格列動態(tài)加載奸笤、動態(tài)控制列顯示隱藏、行多選/動態(tài)排序哼鬓、列與數(shù)據(jù)都是后端返回(文章末尾附上后端數(shù)據(jù)返回格式监右,列前端寫靜態(tài)也行)。

一异希、效果:

image.png

二健盒、代碼

 <el-button plain class="filter-item" slot="reference" type="primary" icon="el-icon-setting">列過濾</el-button>
    <el-table
      :key="tableKey"
      v-loading="listLoading"
      :data="list"
      border
      fit
      highlight-current-row
      style="width: 100%;"
      @sort-change="sortChange" @selection-change="selectNu"
    >
      <el-table-column
        type="selection" @selection-change="selectNu"
        width="55">
      </el-table-column>
      <el-table-column
        type="index"
        width="50">
      </el-table-column>
      <el-table-column align="center"
                       v-for="(item,index) in colData"
                       v-if="colData[index].showHeader"
                       sortable="custom" :prop="item.eng"
                       :key="item.eng"
                       show-overflow-tooltip
                       :label="item.chn">
        <template slot-scope="scope">
          <span>{{ scope.row[item.eng]}} </span>
        </template>
      </el-table-column>
export default {
    name: 'controlsTable',
    components: { Pagination },
    directives: { waves },
    data() {
      let checkPhones = (rule, value, callback) => {
        if (value == '') {
          callback(new Error('請輸入聯(lián)系電話'));
        } else {
          let phone = this.temp.phone;
          if (phone != '') {
            if (!/^1[3456789]\d{9}$/.test(phone)) {
              callback(new Error('請輸入正確的手機號'));
            }else{
              callback();
            }
          }
        }
      };
      return {
        filterVisible: false,//過濾列操作隱藏
        colOptions:[],//列過濾options
        colSelect:[],//列過濾已選
        colData:[], //列全部
        multipleSelection:[],
        tableKey: 0,
        list: null,
        LoginName:name,
        name:'',
        people:'',
        total: 0
      }
    },
    created() {
      this.getListHeader();
      this.getList();
      
    },
    methods: {
          getListHeader(){ //獲取表頭
        patrolTableListHeader().then(response => {
          const {data} = response;
        this.colData=data;
        for(let j = 0,len = data.length; j < len; j++){
          this.colOptions.push(data[j].chn);
          if(data[j].showHeader==true){
            this.colSelect.push(data[j].chn);
          }
        }
      });
      },
      getList() {   //獲取表數(shù)據(jù)
        patrolTableList(this.listQuery,this.LoginName).then(response => {
          this.list = response.data.items;
        this.total = response.data.total;
        setTimeout(() => {
          this.listLoading = false
      }, 1.0 * 1000)
      });
      },
     sortChange(data) {  //排序
        const { prop, order } = data;
        order == 'descending' ? this.listQuery.sort = '-' + prop : this.listQuery.sort = '+' + prop;
        patrolTableList(this.listQuery,this.LoginName).then(response => {
          this.list = response.data.items;
        this.total = response.data.total;
        setTimeout(() => {
          this.listLoading = false
      }, 1.0 * 1000)
      });
      },
      selectNu(val) {  //表格多選
        this.multipleSelection=[];
        this.rows=val;
        val.forEach(({id})=>{
          if(id){
            this.multipleSelection.push(id);
          }
        });
        return val;
      }
    },
    watch: {
      colSelect(newVal, oldVal) {
        if (newVal) {    //如果有值發(fā)生變化,即多選框的已選項變化
          let arr = this.colOptions.filter(i => newVal.indexOf(i) < 0)  // 未選中
          this.colData.filter(i => {
            if(arr.indexOf(i.chn) !== -1) {
              i.showHeader = false
            } else {
              i.showHeader = true
            }
          })
        }
      }
    }

三称簿、后端返回數(shù)據(jù)格式

{ //列返回格式
    "messageCode": "000000",
    "message": "獲取成功!",
    "data": [
        {
            "eng": "id",
            "chn": "序號",
            "showHeader": "true",
            "isSort": "true",
            "id": "1"
        },
        {
            "eng": "name",
            "chn": "站點名稱",
            "showHeader": "true",
            "isSort": "true",
            "id": "2"
        }]
}
{ //表格數(shù)據(jù)格式
    "messageCode": "000000",
    "message": "獲取成功!",
    "data": {
        "total": 1,
        "items": [
            {
                "id": 1,
                "conditions": {},
                "page": 0,
                "limit": null,
                "sortField": null,
                "tokenName": null,
                "createBy": 1,
                "createDate": "2019-11-05 07:01:58",
                "updateBy": 1,
                "updateDate": "2019-11-05 07:01:59",
                "remarks": null,
                "version": 3,
                "delFlag": "0",
                "name": "11",
                "foundTime": "2019-11-16 14:47:06",
                "people": " 王",
                "phone": "",
                "describes": "這是一個問題",
                "new": false,
                "loginName": null
            }
        ]
    }
}

備注:有問題可聯(lián)系扣癣,看到會回復

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市憨降,隨后出現(xiàn)的幾起案子父虑,更是在濱河造成了極大的恐慌,老刑警劉巖授药,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件频轿,死亡現(xiàn)場離奇詭異垂涯,居然都是意外死亡烁焙,警方通過查閱死者的電腦和手機航邢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骄蝇,“玉大人膳殷,你說我怎么就攤上這事【呕穑” “怎么了赚窃?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岔激。 經(jīng)常有香客問我勒极,道長,這世上最難降的妖魔是什么虑鼎? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任辱匿,我火速辦了婚禮,結果婚禮上炫彩,老公的妹妹穿的比我還像新娘匾七。我一直安慰自己,他們只是感情好江兢,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布昨忆。 她就那樣靜靜地躺著,像睡著了一般杉允。 火紅的嫁衣襯著肌膚如雪邑贴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天叔磷,我揣著相機與錄音拢驾,去河邊找鬼。 笑死世澜,一個胖子當著我的面吹牛独旷,可吹牛的內容都是我干的。 我是一名探鬼主播寥裂,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼嵌洼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了封恰?” 一聲冷哼從身側響起麻养,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诺舔,沒想到半個月后鳖昌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體备畦,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年许昨,在試婚紗的時候發(fā)現(xiàn)自己被綠了懂盐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡糕档,死狀恐怖莉恼,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情速那,我是刑警寧澤俐银,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站端仰,受9級特大地震影響捶惜,放射性物質發(fā)生泄漏。R本人自食惡果不足惜荔烧,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一吱七、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茴晋,春花似錦陪捷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烁涌,卻和暖如春苍碟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撮执。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工微峰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抒钱。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓蜓肆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谋币。 傳聞我的和親對象是個殘疾皇子仗扬,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內容

  • feisky云計算、虛擬化與Linux技術筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,855評論 0 5
  • 氣大誤事 誤事蕾额!
    匕禾頁1998閱讀 124評論 0 0
  • 早上悄悄地起床早芭,給大寶做飯去。臥室里傳來 ‘咿咿呀呀’的聲音诅蝶,一看退个,小家伙正坐在床上揉眼睛呢募壕!看見我來了,咿咿呀呀...
    愿陪你一起長大閱讀 142評論 0 0
  • 成事不說语盈,遂事不諫舱馅,既往不咎,自尊對一個人最重要
    三人成隊閱讀 108評論 0 0
  • 不知道說什么黎烈,無感無心情习柠,想早點睡覺,7點起我都覺得困的不行照棋。 今天公司新來一個妹子,沒有交流武翎。 下了班匆匆關掉電...
    我的小可愛也閱讀 261評論 0 1