<!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" href="./vue/element_ui.css" /><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"><divclass="cursor-pointer bg-blue-500 text-white p-[2px_10px] w-max rounded-[4px] text-[12px]"@click="addRow">+ 行</div><divclass="cursor-pointer bg-blue-500 text-white p-[2px_10px] w-max rounded-[4px] text-[12px]"@click="addCol">+ 列</div></div><span> 打折: </span><inputtype="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><trclass="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"><inputtype="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>