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

Vue3+ts+element ui plus/antdesgin 實(shí)現(xiàn)可編輯單元格/可編輯功能

這篇具有很好參考價(jià)值的文章主要介紹了Vue3+ts+element ui plus/antdesgin 實(shí)現(xiàn)可編輯單元格/可編輯功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

此功能是基于antdesgin表格組件可編輯單元格功能修改來(lái)實(shí)現(xiàn),可查看原文檔:帶單元格編輯功能的表格

具體思路就是在element ui plus 或者 antdesgin 表格組件的單元格插槽中進(jìn)行修改,放入“editable-cell”這個(gè)div就行;

此方法不僅適用于表格,相關(guān)需要自定義編輯的功能都可用此方法,核心就是自行調(diào)整“editable-cell”下的內(nèi)容。

代碼以及注釋如下:


/*插槽內(nèi)修改*/
<Table :columns="tableHeader" :data-source="tableData">
  <template #bodyCell="{ column: {dataIndex},index, text, record }">
      /*編輯主體*/
      <div class="editable-cell">
         /*如果editableData中存在這個(gè)要編輯的屬性,則顯示input編輯彈框*/
         <div v-if="editableData[record[dataIndex as string]+''+index]" class="editable-cell-input-wrapper">
            /*input綁定的值為editableData要編輯的屬性(key)對(duì)應(yīng)的值,以此來(lái)編輯*/
            <Input v-model:value="editableData[record[dataIndex as string]+''+index]"
                   @pressEnter="save(record[dataIndex as string]+''+index,dataIndex as string)"/>
            <icon class="editable-cell-icon-check"
                     @click="save(record[dataIndex as string]+''+index,dataIndex as string)">
                <Check/>
            </icon>
         </div>
         /*否則,顯示edit圖標(biāo)*/
         <div v-else class="editable-cell-text-wrapper">
             /*通過(guò)checkCanBeEdit方法來(lái)判斷這個(gè)單元格是否可編輯(顯示編輯圖標(biāo))*/
             <icon class="editable-cell-icon"
                      v-if="checkCanBeEdit(dataIndex as string)"
                      @click="edit(record,record[dataIndex as string]+''+index,dataIndex as string)">
                <Edit/>
             </icon>
         </div>
      </div>
  </template>
</Table>

ts:

tableData:表格數(shù)據(jù)  
tableHeader:表格頭

/**
 * 將正在編輯的數(shù)據(jù)以key-value形式保存到editableData對(duì)象中,每個(gè)數(shù)據(jù)都賦予唯一的key(根據(jù)實(shí)際調(diào)整)
 * 編輯完成后(保存后都會(huì)更新最新的table數(shù)據(jù)) 將保存的key刪除
 * 通過(guò)editableData中的正在編輯的屬性有多少來(lái)顯示input組件,否則顯示編輯圖標(biāo)
 */
const editableData: UnwrapRef<Record<string, any>> = reactive({});

/**
 * 編輯框顯示 (傳入的參數(shù)可自行調(diào)整,只要能找到當(dāng)前要修改的數(shù)據(jù)就行)
 * @param data 選中當(dāng)前行的數(shù)據(jù)
 * @param col 當(dāng)前列的表頭名
 * @param key 修改的屬性名
 */
const edit = (data: any, col: string, key: string,) => {
  /*將要修改的數(shù)據(jù)原本值賦給editableData中的唯一key*/
  editableData[key] = data[col];
};

/**
 * 保存修改的參數(shù)(傳入的參數(shù)可自行調(diào)整,只要能找到當(dāng)前要保存的數(shù)據(jù)就行)
 * @param col 當(dāng)前列的表頭名
 * @param key 修改的屬性名
 */
const save = (key: string, col: string) => {
  /*以下方法并不重要,總之就是實(shí)現(xiàn)將editableData中修改的數(shù)據(jù)賦給tableData中對(duì)應(yīng)的數(shù)據(jù)*/  
  tableData.value.filter((item, index) => {
    return key === item[col] + '' + index
  }).forEach((item) => {
    item[col] = editableData[key]
  });
  /*最后刪除editableData中的數(shù)據(jù)*/
  delete editableData[key];
};
/**
 * 判斷當(dāng)前表頭下對(duì)應(yīng)的單元格是否可編輯
 * @param value 當(dāng)前列的表頭名
 */
function checkCanBeEdit(value: string): boolean {
  return !(['是否可編輯'].includes(value as string))
}

樣式:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-845249.html

/*編輯主體樣式(根據(jù)實(shí)際調(diào)整)*/
.editable-cell {
  position: relative;

  .editable-cell-input-wrapper,
  .editable-cell-text-wrapper {
    padding-right: 24px;
  }

  .editable-cell-text-wrapper {
    padding: 5px 24px 5px 5px;
  }

  .editable-cell-icon,
  .editable-cell-icon-check {
    position: absolute;
    right: 0;
    width: 20px;
    cursor: pointer;
  }

  .editable-cell-icon {
    margin-top: 4px;
    display: none;
  }

  .editable-cell-icon-check {
    line-height: 28px;
  }

  .editable-cell-icon:hover,
  .editable-cell-icon-check:hover {
    color: #108ee9;
  }
}
.editable-cell:hover .editable-cell-icon {
  display: inline-block;
}

到了這里,關(guān)于Vue3+ts+element ui plus/antdesgin 實(shí)現(xiàn)可編輯單元格/可編輯功能的文章就介紹完了。如果您還想了解更多內(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)文章

  • vue3+ts - element-plus封裝上傳文件圖片組件

    vue3+ts - element-plus封裝上傳文件圖片組件

    ??近期做到的項(xiàng)目中有涉及到上傳圖片上傳文件的需求,因?yàn)槭莗c管理后臺(tái),用到了element-plus框架,所以我也一起使用element-plus中的上傳圖片上傳圖片功能,并對(duì)它進(jìn)行封裝成一個(gè)組件,方便在多個(gè)地方使用。 1、上傳文件、視頻 2、上傳圖片 ??在這里上傳圖片和文件是分

    2024年02月12日
    瀏覽(37)
  • vue3-ts- element-plus新增組件-過(guò)濾

    vue3-ts- element-plus新增組件-過(guò)濾

    ?新增組件-所有值為空時(shí)過(guò)濾 ? 提交:?

    2024年02月11日
    瀏覽(23)
  • Vue3+Element-Plus 實(shí)現(xiàn)用戶列表頁(yè)面的UI結(jié)構(gòu)及動(dòng)態(tài)加載表單功能 三一

    Vue3+Element-Plus 實(shí)現(xiàn)用戶列表頁(yè)面的UI結(jié)構(gòu)及動(dòng)態(tài)加載表單功能 三一

    1.1 頭部是一個(gè)面包屑?(Breadcrumb)導(dǎo)航區(qū)域 1.2 白色區(qū)域是一個(gè)卡片(Card)視圖 1.3 卡片 (Card)視圖中嵌套了 ? 輸入框(Input )、 按鈕(Button)、 表單(Form)、分頁(yè)(Pagination ) Breadcrumb 面包屑 | Element Plus (gitee.io) https://element-plus.gitee.io/zh-CN/component/breadcrumb.html ?2.1.1 復(fù)制

    2023年04月09日
    瀏覽(32)
  • Vue3+TS+Vite創(chuàng)建項(xiàng)目,并導(dǎo)入Element-plus和Sass

    Vue3+TS+Vite創(chuàng)建項(xiàng)目,并導(dǎo)入Element-plus和Sass

    1.桌面新建一個(gè)文件夾Vue3-app 打開(kāi)編輯器導(dǎo)入文件夾,編輯器打開(kāi)終端輸入或者命令行工具cd到項(xiàng)目目錄下輸入 npm init vue@latest 回車(chē)運(yùn)行 這里我選擇了TS+Vite來(lái)開(kāi)發(fā),并選擇安裝路由 2.cd到 vue-project目錄下 輸入 npm install 回車(chē)運(yùn)行 3.安裝完成后 輸入 npm run dev 回車(chē)運(yùn)行 瀏覽器打開(kāi)

    2024年02月16日
    瀏覽(24)
  • vue3+element Plus+ts 自定義主題色,以及生成主題色各種透明度

    vue3+element Plus+ts 自定義主題色,以及生成主題色各種透明度

    目錄 思路? 安裝css-color-function【接收一個(gè)顏色值,生成不同的透明度】 獲取后臺(tái)配置的主題色或者使用ColorPicker修改主題色 ?最終結(jié)果如下 本篇文章的主體思路是從element Plus官網(wǎng)引申而來(lái)。結(jié)合了我以前用vue2+element-ui配置主題色生成透明度(light-1至linght-9)的方法。 utils/

    2024年02月21日
    瀏覽(17)
  • 詳解Vite創(chuàng)建Vue3項(xiàng)目+vue-router+ts+vite+element-plus

    詳解Vite創(chuàng)建Vue3項(xiàng)目+vue-router+ts+vite+element-plus

    前言 在之前的文章中寫(xiě)過(guò)“Vue3+TS+ElementPlus的安裝和使用教程【詳細(xì)講解】”,但那篇文章寫(xiě)的是創(chuàng)建vue3的項(xiàng)目沒(méi)有使用到Vite構(gòu)建工具進(jìn)行創(chuàng)建還是使用的常規(guī)webpacket構(gòu)建工具進(jìn)行創(chuàng)建的。提到Vite和webpacket的時(shí)候我們可以簡(jiǎn)單說(shuō)一下。 Vite 和 Webpack 都是現(xiàn)代化的前端構(gòu)建工

    2024年01月18日
    瀏覽(24)
  • vite + vue3 + vue-router4 + ts + element plus + pinia + axios構(gòu)建項(xiàng)目

    最后是完整的vite.config.ts、main.ts配置 1、先用vite創(chuàng)建一個(gè)項(xiàng)目 2、安裝element plus vite.config.ts配置組件按需導(dǎo)入,圖標(biāo)自動(dòng)導(dǎo)入 ? main.ts配置 頁(yè)面文件使用 3、安裝axios main.ts 4、安裝pinia /stores/index.ts /stores/counter.ts main.ts 頁(yè)面使用 5、安裝router4 /router/index main.ts ? 6、vite.config.ts常

    2023年04月25日
    瀏覽(28)
  • vue3+ts+element-plus實(shí)際開(kāi)發(fā)之導(dǎo)出表格和不同類型之間相互賦值

    vue3+ts+element-plus實(shí)際開(kāi)發(fā)之導(dǎo)出表格和不同類型之間相互賦值

    1. 安裝依賴 npm run xlsx 2. 引入,import * as XLSX from “xlsx”; 3. 報(bào)錯(cuò)找不到模塊“xlsx”或其相應(yīng)的類型聲明 修改成大寫(xiě)就好了 import * as XLSX from \\\'XLSX\\\' ,如果沒(méi)有報(bào)提示就直接用 4. 使用導(dǎo)出文件 //---- 導(dǎo)出表 1. 直接用a標(biāo)簽下載 鼠標(biāo)移入樣式,點(diǎn)擊自動(dòng)下載 2. 有特殊數(shù)據(jù)需要解析

    2024年02月15日
    瀏覽(30)
  • 從0開(kāi)始搭建一個(gè)vue3+vite+ts+pinia+element-plus的項(xiàng)目

    從0開(kāi)始搭建一個(gè)vue3+vite+ts+pinia+element-plus的項(xiàng)目

    前言:vue3+ts+vite大家已經(jīng)都開(kāi)始用了,最近也在學(xué)習(xí),基本上是零基礎(chǔ)開(kāi)始ts的學(xué)習(xí),很多語(yǔ)法知識(shí)是邊寫(xiě)邊查,沒(méi)有系統(tǒng)的學(xué)習(xí)ts。此處展示從零開(kāi)始,搭建的一個(gè)框架,方便拿來(lái)即用! 其中框架選擇vue,語(yǔ)言選擇typeScript 項(xiàng)目啟動(dòng)成功以后如下所示: 為了方便日常工作中

    2024年02月06日
    瀏覽(28)
  • vue3+ts+element-plus 之使用node.js對(duì)接mysql進(jìn)行表格數(shù)據(jù)展示

    vue3+ts+element-plus 之使用node.js對(duì)接mysql進(jìn)行表格數(shù)據(jù)展示

    * 初始化node 查看node是否安裝 node -v 初始化命令 npm init 初始化配置解釋如下: 完成后會(huì)有一個(gè)package.json文件 * 安裝可能用到的依賴 根據(jù)需求安裝,我這里需要對(duì)接mysql,安裝依賴 ,我是一次性安裝完,后邊會(huì)直接使用,也可以邊安裝邊使用。如下 安裝成功如下: * 配置文件

    2024年02月15日
    瀏覽(54)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包