最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

element-plus table合并列、合計(jì)行、表格填報(bào)添加驗(yàn)證的示例

 更新時(shí)間:2025年06月28日 10:43:59   作者:小云小白  
這篇文章主要介紹了element-plus table合并列、合計(jì)行、表格填報(bào)添加驗(yàn)證的示例,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

1 說明

1、table 合并列:el-table 添加 span-method 方法,方法(mergeCells )內(nèi)可以寫死指定的合并列

2、table 添加合計(jì)行:el-table 添加 :summary-method 方法,方法(getSummaries )內(nèi)可以寫死求和列
,這里更推薦修改方法:使用  "decimal.js" 計(jì)算,因?yàn)閖s 小數(shù)計(jì)算不精準(zhǔn)

3、表格填報(bào)添加驗(yàn)證:
1)添加el-from 包裹表格,并且添加model、rules,注意 el-from、table 綁定的數(shù)據(jù)要有關(guān)系;
2)el-form-item 綁定 :prop="`itemList.${scope.$index}.planAmount`" :rules="rulesTab.planAmount">
3)添加 style 美化樣式,見模板 ,美化后的樣式如下圖

2 方法模板

<template>
<el-row>
	<el-col :span="24" class="blocker contenter">
	  <div class="d-flex" style="margin-bottom: 10px;">
		<div style="font-weight: bold;">列表</div>
		<div style="margin-left: auto;">
		  <el-button class="tool-btn" type="primary" icon="Edit" @click="submitForm">保存</el-button>
		</div>
	  </div>
	  <el-form ref="tableDataFromRef" :model="formData" :rules="rulesTab" class="tableDataFrom">
		<el-table
			:data="formData.itemList"
			:span-method="mergeCells"
			:summary-method="getSummaries"
			border
			height="66vh"
			style="width: 100%; margin-top: 20px"
			:row-style="{'height':'40px','font-size':'14px'}"
			:cell-style="{'padding':'0 5px'}"
		>
		  <el-table-column type="index" label="序號" width="70" align="center"/>
		  <el-table-column prop="feeLv2Name" label="費(fèi)用項(xiàng)目" width="170" align="center"/>
		  <el-table-column :label="`${queryParamFormData.planMonth?.substring(5,8)}月`" align="center">
			<el-table-column prop="planAmount" label="計(jì)劃金額" width="130" align="right">
			  <template #default="scope">
				<el-form-item :prop="`itemList.${scope.$index}.planAmount`" :rules="rulesTab.planAmount">
				  <el-input-number v-model="scope.row.planAmount" precision="2" :controls="false"
								   :disabled="!isEditing"
								   style="width: 115px"/>
				</el-form-item>
			  </template>
			</el-table-column>
		  </el-table-column>
		</el-table>
	  </el-form>
	</el-col>
</el-row>
</template>
<script setup>
import {ref, onMounted, watch} from 'vue'
import {ElMessage, ElMessageBox} from "element-plus";
......
const tableDataFromRef = ref()
const loading = ref(false)
// 是否正在編輯
const isEditing = ref(false)
// 表單信息
const formData = ref({id: null, itemList: [], status: null})
// 表單的驗(yàn)證規(guī)則
const rulesTab = ref({
  planAmount: [
    {required: true, message: "計(jì)劃金額不能為空", trigger: "blur"}
  ]
})
// 合并單元格
const mergeCells = ({row, column, rowIndex}) => {
  const mergeKeys = ['feeLv1Name', 'feeLv2Name', 'feeLv3Name']
  const prop = column.property
  const data = formData.value.itemList
  if (!mergeKeys.includes(prop)) {
    return {rowspan: 1, colspan: 1}
  }
  // 不是第0行且和上一行值一樣,則隱藏
  if (rowIndex > 0 && data[rowIndex][prop] === data[rowIndex - 1][prop]) {
    return {rowspan: 0, colspan: 0}
  }
  // 統(tǒng)計(jì)與當(dāng)前行值相同的后續(xù)行數(shù)(僅限相鄰)
  let rowspan = 1
  for (let i = rowIndex + 1; i < data.length; i++) {
    if (data[i][prop] === row[prop]) {
      rowspan++
    } else {
      break
    }
  }
  return {rowspan, colspan: 1}
}
// 添加合計(jì)行
const getSummaries = ({columns, data}) => {
  const sums = []
  const sumKeys = ['planAmount']  // 指定需要求和的字段
  columns.forEach((column, index) => {
    if (index === 0) {
      sums[index] = h('div', {}, ['合計(jì)'])
      return
    }
    const property = column.property
    if (!sumKeys.includes(property)) {
      sums[index] = ''  // 非指定列不顯示或?qū)?'N/A'
      return
    }
    const values = data.map(item => Number(item[property]))
    if (!values.every(value => Number.isNaN(value))) {
      const total = values.reduce((sum, val) => {
        return Number.isNaN(val) ? sum : sum + val
      }, 0)
      sums[index] = `${total.toFixed(2)}`
    } else {
      sums[index] = 'N/A'
    }
  })
  return sums
}
// 保存行信息
const submitForm = async () => {
  await tableDataFromRef.value.validate().then(() => {
    ...保存方法
  }).catch(error => {
    ElMessage.warning("請不要填寫空值!");
  })
}
</script>
<style lang="scss" scoped>
// 調(diào)整表格中的樣式,讓提示美觀
.tableDataFrom {
  .el-form-item {
    margin-bottom: 0;
    :deep(.el-input__wrapper) {
      background: transparent;
      padding: 0 5px;
    }
    :deep(.el-form-item__error) {
      z-index: -1;
      top: 0;
    }
  }
}
</style>

到此這篇關(guān)于element-plus table合并列、合計(jì)行、表格填報(bào)添加驗(yàn)證的示例的文章就介紹到這了,更多相關(guān)element-plus table表格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue的狀態(tài)庫管理實(shí)現(xiàn)示例

    vue的狀態(tài)庫管理實(shí)現(xiàn)示例

    Vuex 是 Vue.js 官方推薦的狀態(tài)管理庫之一,本文主要介紹了vue的狀態(tài)庫管理實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • ElementUI表格中添加表頭圖標(biāo)懸浮提示

    ElementUI表格中添加表頭圖標(biāo)懸浮提示

    本文主要介紹了ElementUI表格中添加表頭圖標(biāo)懸浮提示,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 優(yōu)雅的將ElementUI表格變身成樹形表格的方法步驟

    優(yōu)雅的將ElementUI表格變身成樹形表格的方法步驟

    這篇文章主要介紹了優(yōu)雅的將ElementUI表格變身成樹形表格的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue3實(shí)現(xiàn)markdown-it支持chartjs、Echartjs、mermaid的渲染(附實(shí)例代碼)

    Vue3實(shí)現(xiàn)markdown-it支持chartjs、Echartjs、mermaid的渲染(附實(shí)例代碼)

    markdown-it-vue使用markdown-it作為Markdown數(shù)據(jù)解析引擎,整合多種markdown-it插件,并內(nèi)置了一些自己的功能性插件,這篇文章主要介紹了Vue3實(shí)現(xiàn)markdown-it支持chartjs、Echartjs、mermaid渲染的相關(guān)資料,需要的朋友可以參考下
    2025-08-08
  • nuxt+axios解決前后端分離SSR的示例代碼

    nuxt+axios解決前后端分離SSR的示例代碼

    這篇文章主要介紹了nuxt+axios解決前后端分離SSR的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Vue.js實(shí)現(xiàn)簡單動態(tài)數(shù)據(jù)處理

    Vue.js實(shí)現(xiàn)簡單動態(tài)數(shù)據(jù)處理

    本篇文章主要介紹了Vue.js實(shí)現(xiàn)簡單動態(tài)數(shù)據(jù)處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Vscode中開發(fā)VUE項(xiàng)目的調(diào)試實(shí)現(xiàn)方案

    Vscode中開發(fā)VUE項(xiàng)目的調(diào)試實(shí)現(xiàn)方案

    本文詳細(xì)介紹了如何在VSCode中進(jìn)行Vue前端開發(fā)和調(diào)試,包括必備插件安裝、VSCode配置、調(diào)試方案(瀏覽器調(diào)試、VueDevTools、Console調(diào)試)、常用快捷鍵和調(diào)試最佳實(shí)踐,適合Vue3+TypeScript項(xiàng)目的開發(fā)調(diào)試
    2025-10-10
  • vue后臺管理如何配置動態(tài)路由菜單

    vue后臺管理如何配置動態(tài)路由菜單

    這篇文章主要介紹了vue后臺管理如何配置動態(tài)路由菜單,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • JS框架之vue.js(深入三:組件1)

    JS框架之vue.js(深入三:組件1)

    這篇文章主要介紹了JS框架之vue.js component組件的相關(guān)資料,本文通過實(shí)例詳解的方式給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • vue打包部署到springboot的實(shí)現(xiàn)示例

    vue打包部署到springboot的實(shí)現(xiàn)示例

    項(xiàng)目開發(fā)中,一般我們都會使用SpringBoot+Vue進(jìn)行前后端開發(fā),本文主要介紹了vue打包部署到springboot的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07

最新評論

青浦区| 莎车县| 工布江达县| 安宁市| 灵寿县| 太仓市| 历史| 龙岩市| 穆棱市| 东莞市| 九江市| 德钦县| 张家川| 云霄县| 景洪市| 临西县| 晋江市| 高要市| 大化| 和田县| 安溪县| 鄂托克旗| 桑植县| 双峰县| 文昌市| 广元市| 贡嘎县| 广河县| 丰原市| 北川| 广平县| 平安县| 莒南县| 民权县| 鄢陵县| 兖州市| 中江县| 侯马市| 高尔夫| 平凉市| 五指山市|