Ant Design Vue 表格實(shí)現(xiàn)可拖動的伸縮列

步驟一:安裝集成的 vue-draggable-resizable 插件,npm下載報錯,有安裝了cnpm也可以
npm install --save vue-draggable-resizable
步驟二:在src文件夾內(nèi)創(chuàng)建mixins文件夾谢鹊,在mixins文件夾內(nèi)創(chuàng)建tableDragResize.js
import Vue from "vue";
import VueDraggableResizable from "vue-draggable-resizable";

Vue.component("vue-draggable-resizable", VueDraggableResizable);
function initDrag(columns) {
  const draggingMap = {};
  columns.forEach((col) => {
    draggingMap[col.key] = col.width;
  });
  const draggingState = Vue.observable(draggingMap);
  return (h, props, children) => {
    let thDom = null;

    const { key, ...restProps } = props;
    let col;
    if (key === "selection-column") {
      //表格加了復(fù)選框瞳遍,不加這個判斷col會是undefided
      col = {};
    } else {
      col = columns.find((col) => {
        const k = col.dataIndex || col.key;
        return k === key;
      });
    }
    if (!col || !col.width) {
      return <th {...restProps}>{children}</th>;
    }
    const onDrag = (x) => {
      draggingState[key] = 0;
      col.width = Math.max(x, 1);
    };

    const onDragstop = () => {
      draggingState[key] = thDom.getBoundingClientRect().width;
    };
    return (
      <th
        {...restProps}
        v-ant-ref={(r) => (thDom = r)}
        width={col.width}
        class="resize-table-th"
      >
        {children}
        <vue-draggable-resizable
          key={col.key}
          class="table-draggable-handle"
          w={10}
          x={draggingState[key] || col.width}
          z={1}
          axis="x"
          draggable={true}
          resizable={false}
          onDragging={onDrag}
          onDragstop={onDragstop}
        ></vue-draggable-resizable>
      </th>
    );
  };
}
export default {
  methods: {
    drag(columns) {
      return {
        header: {
          cell: initDrag(columns),
        },
      };
    },
  },
};
步驟三:在使用頁面中引入tableDragResize.js, 同時添加 mixins: [tableDragResize]
<script >
  import tableDragResize from '@/mixins/tableDragResize'

  export default {
    name: 'HeaderNotice',
    mixins: [tableDragResize],  // 此處不要忘記
    data() {
      return {}
    }
  }
</script>
步驟四:table 組件中添加components屬性,drag(columns)方法的參數(shù)是當(dāng)前表頭集合數(shù)據(jù)
<a-table 
        :pagination="false" 
        bordered 
        :columns="columns" 
        :data-source="dataSource" 
        :rowKey="(record) => record.id"
        :row-selection="{ selectedRows: selectedRows, onChange: onSelectCheckChange }"
        :components="drag(columns)"
        >
</a-table>
步驟五:添加以下樣式
/deep/.table-draggable-handle {
  border:1px solid red;
  height: 100% !important;
  left: auto !important;
  right: -5px;
  cursor: col-resize;
  touch-action: none;
  border: none;
  position: absolute;
  transform: none !important;
  bottom: 0;
}
/deep/.resize-table-th {
  position: relative;
}

注意點(diǎn):

1,表頭columns中双谆,每列都要設(shè)置width,width的值必須Number席揽,如果不設(shè)置width屬性顽馋,拖動時不生效;
2幌羞,style一定要記得添加.table-draggable-handle 和 .resize-table-th 兩個class寸谜。并且style標(biāo)簽不能添加scoped屬性。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末属桦,一起剝皮案震驚了整個濱河市熊痴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌聂宾,老刑警劉巖果善,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異系谐,居然都是意外死亡巾陕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鄙煤,“玉大人晾匠,你說我怎么就攤上這事√莞眨” “怎么了混聊?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乾巧。 經(jīng)常有香客問我句喜,道長,這世上最難降的妖魔是什么沟于? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任咳胃,我火速辦了婚禮,結(jié)果婚禮上旷太,老公的妹妹穿的比我還像新娘展懈。我一直安慰自己,他們只是感情好供璧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布存崖。 她就那樣靜靜地躺著,像睡著了一般睡毒。 火紅的嫁衣襯著肌膚如雪来惧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天演顾,我揣著相機(jī)與錄音供搀,去河邊找鬼。 笑死钠至,一個胖子當(dāng)著我的面吹牛葛虐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棉钧,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屿脐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宪卿?” 一聲冷哼從身側(cè)響起的诵,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愧捕,沒想到半個月后奢驯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體申钩,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡次绘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邮偎。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡管跺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出禾进,到底是詐尸還是另有隱情豁跑,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布泻云,位于F島的核電站艇拍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宠纯。R本人自食惡果不足惜卸夕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望婆瓜。 院中可真熱鬧快集,春花似錦、人聲如沸廉白。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猴蹂。三九已至院溺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磅轻,已是汗流浹背覆获。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓢省,地道東北人弄息。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像勤婚,于是被迫代替她去往敵國和親摹量。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容