用vue和element-ui实现 展示一个table数据的页面,列表实现一列,label为打分,默认为10分,可以输入,且最大不能超过10,最小不能小于0,在相应位置加个分数,汇总输入的总和,用具体代码实现
时间: 2023-08-02 18:09:03 浏览: 86
vue+element-ui实现表格编辑的三种实现方式
好的,首先需要安装Vue和Element UI,可以使用以下命令:
```
npm install vue element-ui --save
```
接着在Vue组件中引入Element UI:
```javascript
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
```
然后在组件中定义数据和方法:
```javascript
export default {
data() {
return {
tableData: [
{
name: '张三',
score: 10
},
{
name: '李四',
score: 10
},
{
name: '王五',
score: 10
}
]
}
},
methods: {
handleScoreChange(row, value) {
if (value > 10) {
value = 10
}
if (value < 0) {
value = 0
}
row.score = value
},
getTotalScore() {
let total = 0
for (let row of this.tableData) {
total += row.score
}
return total
}
}
}
```
在模板中使用Element UI的`el-table`和`el-input-number`组件展示表格和输入框,并绑定数据和方法:
```html
<template>
<div>
<el-table :data="tableData">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column label="得分">
<template slot-scope="scope">
<el-input-number v-model="scope.row.score" :min="0" :max="10" @change="handleScoreChange(scope.row, $event)"></el-input-number>
</template>
</el-table-column>
</el-table>
<div>总分:{{ getTotalScore() }}</div>
</div>
</template>
```
这样就完成了展示一个table数据的页面,列表实现一列,label为打分,默认为10分,可以输入,且最大不能超过10,最小不能小于0,在相应位置加个分数,汇总输入的总和的功能。完整代码如下:
```javascript
<template>
<div>
<el-table :data="tableData">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column label="得分">
<template slot-scope="scope">
<el-input-number v-model="scope.row.score" :min="0" :max="10" @change="handleScoreChange(scope.row, $event)"></el-input-number>
</template>
</el-table-column>
</el-table>
<div>总分:{{ getTotalScore() }}</div>
</div>
</template>
<script>
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
export default {
data() {
return {
tableData: [
{
name: '张三',
score: 10
},
{
name: '李四',
score: 10
},
{
name: '王五',
score: 10
}
]
}
},
methods: {
handleScoreChange(row, value) {
if (value > 10) {
value = 10
}
if (value < 0) {
value = 0
}
row.score = value
},
getTotalScore() {
let total = 0
for (let row of this.tableData) {
total += row.score
}
return total
}
}
}
</script>
```
阅读全文