基于Vue2實(shí)現(xiàn)動(dòng)態(tài)折扣表格
效果圖

實(shí)現(xiàn)代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<!-- <link
rel="stylesheet"
rel="external nofollow"
/>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.13/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script> -->
<link rel="stylesheet" href="./vue/element_ui.css" rel="external nofollow" />
<script src="./vue/vue.js"></script>
<script src="./vue/unocss.js"></script>
<script src="./vue/element_ui.js"></script>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
</style>
</head>
<body>
<div id="app" class="h-100vh">
<div class="h-full flex items-center justify-center">
<div>
<div class="flex items-center gap-10px">
<div
class="cursor-pointer bg-blue-500 text-white p-[2px_10px] w-max rounded-[4px] text-[12px]"
@click="addRow"
>
+ 行
</div>
<div
class="cursor-pointer bg-blue-500 text-white p-[2px_10px] w-max rounded-[4px] text-[12px]"
@click="addCol"
>
+ 列
</div>
</div>
<span> 打折: </span>
<input
type="text"
class="bg-[unset] rounded-5px w-100px mt-[10px] outline-none border-solid border-[1px] border-blue-500 text-center"
v-model="rate"
@blur="handle()"
/>
<table class="mt-[10px]">
<tbody>
<tr
class="bg-violet-500/20 text-violet-500"
v-for="(item, index) in list"
:key="index"
>
<td class="text-center" v-for="(j, i) in item.child">
<input
type="text"
class="bg-[unset] outline-none h-full border-none text-center"
v-model="j.value"
@blur="handle(index,i)"
/>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
list: [
{
child: [
{
value: 800,
},
{
value: 200,
},
],
},
],
rate: 20,
};
},
methods: {
addRow() {
const row = {
child: [],
};
this.list[0].child.forEach((item) => {
row.child.push({
value: 0,
});
});
this.list.push(row);
this.handle();
},
addCol() {
this.list.forEach((item) => {
item.child.push({
value: 0,
});
});
this.handle();
},
handle(oneIndex, childIndex) {
if (oneIndex == 0) {
let newArr = this.list.filter((item, i) => i == 0);
this.list
.filter((item, index) => index > 0)
.forEach((item, index) => {
item.child.forEach((j, i) => {
if (childIndex == i) {
j.value = (
newArr[0].child[i].value -
newArr[0].child[i].value *
(this.rate / 100) *
(index + 1)
).toFixed(2);
}
});
});
}
if (!oneIndex) {
let newArr = this.list.filter((item, i) => i == 0);
this.list
.filter((item, index) => index > 0)
.forEach((item, index) => {
item.child.forEach((j, i) => {
j.value = (
newArr[0].child[i].value -
newArr[0].child[i].value * (this.rate / 100) * (index + 1)
).toFixed(2);
});
});
}
},
},
});
</script>
</body>
</html>
以上就是基于Vue2實(shí)現(xiàn)動(dòng)態(tài)折扣表格的詳細(xì)內(nèi)容,更多關(guān)于Vue2動(dòng)態(tài)表格的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用vite創(chuàng)建vue3項(xiàng)目的詳細(xì)圖文教程
創(chuàng)建Vue3項(xiàng)目有兩種常見(jiàn)的方式,一種是想vue2版本一樣使用腳手架工具創(chuàng)建,創(chuàng)建vue3項(xiàng)目的腳手架必須是4版本以上的,另一種方法就是使用vite創(chuàng)建,這篇文章主要給大家介紹了關(guān)于如何使用vite創(chuàng)建vue3項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-11-11
Vue項(xiàng)目中接口調(diào)用的詳細(xì)講解
應(yīng)公司需求,接口需要對(duì)接vue,記錄一下碰到的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中接口調(diào)用的詳細(xì)講解,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
vue npm install 安裝某個(gè)指定的版本操作
這篇文章主要介紹了vue npm install 安裝某個(gè)指定的版本操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
vuex頁(yè)面刷新導(dǎo)致數(shù)據(jù)丟失的解決方案
這篇文章主要介紹了vuex頁(yè)面刷新導(dǎo)致數(shù)據(jù)丟失的解決方案,幫助大家更好的使用vue框架,感興趣的朋友可以了解下2020-12-12
vue3項(xiàng)目typescript如何export引入(imported)的interface問(wèn)題
這篇文章主要介紹了vue3項(xiàng)目typescript如何export引入(imported)的interface問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
vue2.0 獲取從http接口中獲取數(shù)據(jù),組件開(kāi)發(fā),路由配置方式
今天小編就為大家分享一篇vue2.0 獲取從http接口中獲取數(shù)據(jù),組件開(kāi)發(fā),路由配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11

