{"id":28286,"date":"2024-11-24T08:29:18","date_gmt":"2024-11-24T00:29:18","guid":{"rendered":"https:\/\/fwq.ai\/blog\/28286\/"},"modified":"2024-11-24T08:29:18","modified_gmt":"2024-11-24T00:29:18","slug":"el-table-%e5%90%88%e5%b9%b6%e5%8d%95%e5%85%83%e6%a0%bc%ef%bc%9a%e5%a6%82%e4%bd%95%e5%ae%9e%e7%8e%b0%e9%83%a8%e5%88%86%e6%88%90%e5%8a%9f%e9%83%a8%e5%88%86%e5%a4%b1%e8%b4%a5%e7%9a%84%e6%95%88%e6%9e%9c","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/28286\/","title":{"rendered":"el-table \u5408\u5e76\u5355\u5143\u683c\uff1a\u5982\u4f55\u5b9e\u73b0\u90e8\u5206\u6210\u529f\u90e8\u5206\u5931\u8d25\u7684\u6548\u679c\uff1f"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/001\/246\/273\/173148212036757.jpg\" class=\"aligncenter\" title=\"el-table \u5408\u5e76\u5355\u5143\u683c\uff1a\u5982\u4f55\u5b9e\u73b0\u90e8\u5206\u6210\u529f\u90e8\u5206\u5931\u8d25\u7684\u6548\u679c\uff1f\u63d2\u56fe\" alt=\"el-table \u5408\u5e76\u5355\u5143\u683c\uff1a\u5982\u4f55\u5b9e\u73b0\u90e8\u5206\u6210\u529f\u90e8\u5206\u5931\u8d25\u7684\u6548\u679c\uff1f\u63d2\u56fe\" \/><\/p>\n<h2>el-table\u5408\u5e76\u90e8\u5206\u6210\u529f\u90e8\u5206\u4e0d\u6210\u529f<\/h2>\n<p>\u6211\u4eec\u5e0c\u671b\u53ef\u4ee5\u5b9e\u73b0\u4ee5\u4e0b\u6548\u679c\uff1a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.php.cn\/faq\/%E6%95%88%E6%9E%9C%E5%9B%BE.png\" class=\"aligncenter\" title=\"el-table \u5408\u5e76\u5355\u5143\u683c\uff1a\u5982\u4f55\u5b9e\u73b0\u90e8\u5206\u6210\u529f\u90e8\u5206\u5931\u8d25\u7684\u6548\u679c\uff1f\u63d2\u56fe1\" alt=\"el-table \u5408\u5e76\u5355\u5143\u683c\uff1a\u5982\u4f55\u5b9e\u73b0\u90e8\u5206\u6210\u529f\u90e8\u5206\u5931\u8d25\u7684\u6548\u679c\uff1f\u63d2\u56fe1\" \/><\/p>\n<p>\u4ee3\u7801\u5b9e\u73b0\uff1a<\/p>\n<pre>&lt;el-table :data=\"waterData\" border :span-method=\"handleSpanM\"&gt;\n  &lt;el-table-column align=\"center\" width=\"65\"&gt;\n    &lt;template slot-scope=\"scope\"&gt;{{scope.row.name }}&lt;\/template&gt;\n  &lt;\/el-table-column&gt;\n  &lt;el-table-column align=\"center\" width=\"70\" label=\"\u7cfb\u6570\"&gt;\n    &lt;template slot-scope=\"scope\"&gt;&lt;el-input size=\"mini\" class=\"\" v-model=\"scope.row.factor\"&gt;&lt;\/el-input&gt;&lt;\/template&gt;\n  &lt;\/el-table-column&gt;\n  &lt;el-table-column align=\"center\" width=\"120\" label=\"\u7b49\u7ea7\u5206\u6570\"&gt;\n    &lt;template slot-scope=\"scope\"&gt;&lt;el-input size=\"mini\" v-model=\"scope.row.grade\"&gt;&lt;\/el-input&gt;&lt;\/template&gt;\n  &lt;\/el-table-column&gt;\n  &lt;el-table-column align=\"center\" width=\"180\" label=\"\u7b26\u53f7\u9009\u62e9\"&gt;\n    &lt;template slot-scope=\"scope\"&gt;\n      &lt;div class=\"symbol\"&gt;\n        &lt;span style=\"display: none;\"&gt;{{ scope.row.symbol }}&lt;\/span&gt;\n        &lt;span class=\"symbol_range\"&gt;&lt;\/span&gt;\n      &lt;\/div&gt;\n    &lt;\/template&gt;\n  &lt;\/el-table-column&gt;\n  &lt;el-table-column\n    width=\"120\"\n    v-for=\"(column,index) in 6\"\n    :key=\"`column-${index}`\"\n  &gt;\n    &lt;template slot=\"header\" slot-scope=\"scope\"&gt;\n      &lt;div&gt;\n        &lt;el-input size=\"small\" v-model=\"waterForm[`water${index + 1}_label`]\" &gt;&lt;\/el-input&gt;\n      &lt;\/div&gt;\n    &lt;\/template&gt;\n    &lt;template slot-scope=\"scope\"&gt;\n      &lt;div&gt;\n        &lt;el-input size=\"small\" v-model=\"waterForm[`water${index + 1}_factor`]\" &gt;&lt;\/el-input&gt;\n      &lt;\/div&gt;\n    &lt;\/template&gt;\n  &lt;\/el-table-column&gt;\n&lt;\/el-table&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236    <\/p>\n<pre>export default {\n  data() {\n    return {\n      tableData:[\n        {name:'\u964d\u6c34(mm)',factor:'0.7',grade:'',symbol: '1','':'','':'','':'','':'','':'','':''},\n        {name:'\u964d\u6c34(mm)',factor:'0.7',grade:'',symbol: '1','':'','':'','':'','':'','':'','':''},\n        {name:'\u964d\u6c34(mm)',factor:'0.7',grade:'',symbol: '1','':'','':'','':'','':'','':'','':''},\n        {name:'\u964d\u6c34(mm)',factor:'0.7',grade:'',symbol: '1','':'','':'','':'','':'','':'','':''},\n        {name:'\u98ce\u901f(m\/s)',factor:'0.5',grade:'',symbol: '0','':'','':'','':'','':'','':'','':''},\n        {name:'\u98ce\u901f(m\/s)',factor:'0.5',grade:'',symbol: '0','':'','':'','':'','':'','':'','':''},\n        {name:'\u98ce\u901f(m\/s)',factor:'0.5',grade:'',symbol: '0','':'','':'','':'','':'','':'','':''},\n        {name:'\u98ce\u901f(m\/s)',factor:'0.5',grade:'',symbol: '0','':'','':'','':'','':'','':'','':''},\n      ],\n      colFields:['name','factor','grade','symbol','','','','','',''],\n      spanArr:[],\n      waterForm:{},\n    };\n  },\n  methods: {\n    getSpanArr() {\n      for (let i = 0; i &lt; this.tableData.length; i++) {\n        let row = i;\n        \/\/ let col = i % this.colCount;\n        if (row === 0) {\n          \/\/ i \u8868\u793a\u884c j\u8868\u793a\u5217\n          for (let j = 0; j &lt; this.colFields.length; j++) {\n            this.spanArr[i * this.colFields.length + j] = {\n              rowspan: 1,\n              colspan: 1,\n            };\n          }\n        } else {\n          for (let j = 0; j &lt; this.colFields.length; j++) {\n            if (\n              this.colFields[j] == \"name\" ||\n              this.colFields[j] == \"factor\" ||\n              this.colFields[j] == \"symbol\"\n            ) { \/\/ \u6307\u5b9a\u5408\u5e76\u54ea\u4e9b\u5217\n            \/*this.tableData[row][\"School\"] !==\n                  this.tableData[row - 1][\"School\"]*\/\n              if (\n                this.tableData[row][this.colFields[j]] !==\n                  this.tableData[row - 1][this.colFields[j]]\n              ) { \/\/ \u54ea\u4e9b\u4e0d\u5408\u5e76:School\u4e0d\u4e00\u6837\u7684,\u4e0d\u5408\u5e76\n                this.spanArr[row * this.colFields.length + j] = {\n                  rowspan: 1,\n                  colspan: 1,\n                };\n              } else if (\n                this.tableData[row][this.colFields[j]] ===\n                this.tableData[row - 1][this.colFields[j]]\n              ) {\n                let beforeItem =\n                  this.spanArr[(row - 1) * this.colFields.length + j];\n                this.spanArr[row * this.colFields.length + j] = {\n                  rowspan: 1 + beforeItem.rowspan,\/\/ \u5408\u5e76\u51e0\u5217\n                  colspan: 1,\/\/ \u5408\u5e76\u51e0\u884c\n                };\n                beforeItem.rowspan = 0;\n                beforeItem.colspan = 0;\n              } else {\n                \/\/ rowspan \u548c colspan \u90fd\u4e3a1\u8868\u683c\u6b64\u5355\u5143\u683c\u4e0d\u5408\u5e76\n                this.spanArr[row * this.colFields.length + j] = {\n                  rowspan: 1,\n                  colspan: 1,\n                };\n              }\n            }\n          }\n        }\n      }\n      \/\/ \u5bf9\u6570\u636e\u8fdb\u884c\u5012\u5e8f\n      let stack = [];\n      for (let i = 0; i &lt; this.colFields.length; i++) {\n        for (let j = 0; j &lt; this.tableData.length; j++) {\n          \/\/ console.log(\"i=\" + i + \" j=\" + j);\n          \/\/ i \u8868\u793a\u5217 j\u8868\u793a\u884c\n          if (j === 0) {\n            if (this.spanArr[j * this.colFields.length + i].rowspan === 0) {\n              stack.push(this.spanArr[j * this.colFields.length + i]);\n            }\n          } else {\n            if (this.spanArr[j * this.colFields.length + i].rowspan === 0) {\n              stack.push(this.spanArr[j * this.colFields.length + i]);\n            } else {\n              stack.push(this.spanArr[j * this.colFields.length + i]);\n              while (stack.length &gt; 0) {\n                let pop = stack.pop();\n                let len = stack.length;\n                this.spanArr[(j - len) * this.colFields.length + i] = pop;\n              }\n            }\n          }\n        }\n      }\n      \/\/ console.log(this.spanArr);\n    },\n    objectSpanMethod({ row, column, rowIndex, columnIndex }) {\n        return this.spanArr[rowIndex * this.colFields.length + columnIndex];\n    },\n  },\n  mounted() {\n    this.getSpanArr();\n  },\n};<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u6ce8\u610f\uff0c\u4ee5\u4e0a\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u5b9a\u4e49\u4e86 handleSpanM \u65b9\u6cd5\u6765\u5904\u7406\u8868\u683c\u5408\u5e76\u3002\u4f46\u662f\uff0c\u4ee3\u7801\u4e2d\u5e76\u6ca1\u6709\u4f7f\u7528\u8fd9\u4e2a\u65b9\u6cd5\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u8981\u4fee\u6539\u4ee3\u7801\u6765\u4f7f\u7528\u8fd9\u4e2a\u65b9\u6cd5\u3002<\/p>\n<p>\u6b64\u5916\uff0c\u5982\u679c\u4f60\u5e0c\u671b\u540e\u51e0\u5217\u8868\u5934\u4e0d\u53ef\u7f16\u8f91\uff0c\u53ef\u4ee5\u4fee\u6539\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre>&lt;el-input size=\"small\" v-model=\"waterForm[`water${index + 1}_label`]\" &gt;&lt;\/el-input&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u6539\u6210\uff1a<\/p>\n<pre>&lt;el-input size=\"small\" disabled v-model=\"waterForm[`water${index + 1}_label`]\" &gt;&lt;\/el-input&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662fel-table \u5408\u5e76\u5355\u5143\u683c\uff1a\u5982\u4f55\u5b9e\u73b0\u90e8\u5206\u6210\u529f\u90e8\u5206\u5931\u8d25\u7684\u6548\u679c\uff1f\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>el-table\u5408\u5e76\u90e8\u5206\u6210\u529f\u90e8\u5206\u4e0d\u6210\u529f \u6211\u4eec\u5e0c\u671b\u53ef\u4ee5\u5b9e\u73b0\u4ee5\u4e0b\u6548\u679c\uff1a \u4ee3\u7801\u5b9e\u73b0\uff1a &lt;el-table :data=&#8221;waterData&#8221; border :span-method=&#8221;handleSpanM&#8221;&gt; &lt;el-table-column align=&#8221;center&#8221; width=&#8221;65&#8243;&gt; &lt;template slot-scope=&#8221;scope&#8221;&gt;{{scope.row.name }}&lt;\/template&gt; &lt;\/el-table-column&gt; &lt;el-table-column align=&#8221;center&#8221; width=&#8221;70&#8243; label=&#8221;\u7cfb\u6570&#8221;&gt; &lt;template slot-scope=&#8221;scope&#8221;&gt;&lt;el-input size=&#8221;mini&#8221; class=&#8221;&#8221; v-model=&#8221;scope.row.factor&#8221;&gt;&lt;\/el-input&gt;&lt;\/template&gt; &lt;\/el-table-column&gt; &lt;el-table-column align=&#8221;center&#8221; width=&#8221;120&#8243; label=&#8221;\u7b49\u7ea7\u5206\u6570&#8221;&gt; &lt;template slot-scope=&#8221;scope&#8221;&gt;&lt;el-input size=&#8221;mini&#8221; v-model=&#8221;scope.row.grade&#8221;&gt;&lt;\/el-input&gt;&lt;\/template&gt; &lt;\/el-table-column&gt; &lt;el-table-column align=&#8221;center&#8221; width=&#8221;180&#8243; label=&#8221;\u7b26\u53f7\u9009\u62e9&#8221;&gt; &lt;template slot-scope=&#8221;scope&#8221;&gt; &lt;div class=&#8221;symbol&#8221;&gt; &lt;span style=&#8221;display: none;&#8221;&gt;{{ scope.row.symbol }}&lt;\/span&gt; &lt;span class=&#8221;symbol_range&#8221;&gt;&lt;\/span&gt; &lt;\/div&gt; &lt;\/template&gt; &lt;\/el-table-column&gt; &lt;el-table-column width=&#8221;120&#8243; v-for=&#8221;(column,index) in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-28286","post","type-post","status-publish","format-standard","hentry","category-16"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=28286"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28286\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=28286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=28286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=28286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}