vue el-tree 同時向后台傳遞選中和半選節點數據 (回顯數據勾選問題已解決)


<template>
	<el-card>
		<div class="invoice-list clearfix">
			<ul class="invoice-header clearfix">
				<li class="invoice-item clearfix">
					<div class="left">計划代碼</div>
				</li>
				<li class="invoice-item clearfix">
					<div class="left">計划科目</div>
				</li>
			</ul>
			<el-col>
				<el-tree
					:props="defaultProps"
					:data="tableListFir"
					show-checkbox
					default-expand-all
					ref="treeData"
					node-key="id"
					@check-change="handleSelectionChange"
					:default-checked-keys="resourceCheckedKey"
				>
					<div class="custom-tree-node clearfix" slot-scope="{node, data}">
						<span class="table_info_node clearfix">
							<span class="table_info_item">({{data.code}})  </span>
							<span class="table_info_item">{{data.name}}</span>
						</span>
					</div>
				</el-tree>
			</el-col>
		</div>
	</el-card>
</template>
<script>
	export default {
		data() {
			return {
				// 該數組是存儲 要渲染的樹形結構數據
				tableListFir:[],
				// 該數組是選中的節點(半選的節點和全選的節點全都存儲在這個數組)
				multipleSelection: [],
				// 該數組回顯數據根據所對應的ID  進行默認勾選 (:default-checked-keys 這個) 和 (node-key="id") 這個兩個並存
				resourceCheckedKey: [],
                   // el-tree :props 調用
                   defaultProps: {
                     children: "children",
                     label: 'name'
                   } } }, methods: { // 渲染樹形數據 tableDataFir() { var res = this.$http.request({ url: `/gsfjdsjfnjnnfg`, method: 'post', data: { // data: data; } }).then(res => { var data = res.data; if(data.status === "200") { // this.tableListFir 這個變量是el-tree data數據 (其中包含后台傳的判斷節點是否選中字段) this.tableListFir = data.body.LIST; // 接下來是 el-tree 回顯默認勾選☑️重點✨ (如果不知道this.resourceCheckedKey做什么 可以看定義變量的介紹) this.findAllChildren(this.tableListFir, this.resourceCheckedKey); }else { this.$message.error(data.error) } }) }, // el-tree 復選框默認選中事件 handleSelectionChange(val) { // this.multipleSelection 這個數組用來存儲所有半選的節點和全選的節點 用於保存的時候將數據傳給后台 // 將半選和全選的節點全都存儲在一個數組里面 concat 方法是合並(全選和半選)兩個數組 this.multipleSelection = this.$refs.treeData.getHalfCheckedNodes().concat(this.$refs.treeData.getCheckedNodes()); }, // 遍歷找出所有子節點 findAllChildren(data, arr) { data.forEach((item, index) => { if(item.children.length !== 0) { this.findAllChildren(item.children, arr); }else if(item.validSign == '1'){ // validSign 這個字段是后台用來判斷前台是否默認選中的字段 validSign == 1 是選中 等於 0 是非選中 (根據你們后台實際參數進行修改) // 然后我們將 validSign == '1' 的所有子節點全部存儲在arr 里面 arr.push(item.id); } }) } } } </script> <style> .invoice-list { color: #333; border: 1px solid #ebeef5; margin-top: 10px; } .invoice-list .invoice-header { height: 40px; background-color: #f8f8f9; display: flex; padding-left: 45px; text-align: center; border-bottom: 1px solid #ebeef5; } .invoice-list .invoice-header .invoice-item { background-color: #f8f8f9; padding: 10px; padding-right: 0; flex: 1; float: left; border-left: 1px solid #ebeef5; padding-left: 10px; } .invoice-list .el-tree-node__content { background: #f2f2f2; height: 30px; } .invoice-list .el-tree-node__children .el-tree-node__content { background: #fff; border-bottom: 1px solid #ebeef5; } .invoice-list .custom-tree-node { width: 100%; height: 100%; } .invoice-list .custom-tree-node .total_info_box { background: #f2f2f2; line-heght: 30px; } .invoice-list .custom-tree-node .total_info_box > span { float: left; font-size: 12px; margin: 0 15px; } .invoice-list .custom-tree-node .total_info_box > span > i { display: inline-block; margin-right: 3px; } .invoice-list .custom-tree-node .table_info_node { display: flex; height: 100%; text-align: center; } .invoice-list .custom-tree-node table_info_node .table_info_item { flex: 1; height: 100%; float: left; boeder-left: 1px solid #ebeef5; padding-left: 10px; line-height: 30px; } .el-table--border th:first-child .cell,.el-table--border td:first-child .cell { padding-left: 40%; } .corpProject { color: #333; font-size: 16px; font-weight: 400; text-align: center; } .clearfix:before .clearfix:after { content: ""; display: table; } .clearfix:after { clear: both; } .clearfix { *zoom: 1; } .left { float: left; background: #f8f8f9; } </style>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM