element-ui中的表格嵌套表格


element-ui中有詳細的各種表格及表格方法。也有表格展開出現二級的樣式,但是卻沒有表格嵌套二級表格的方案,於是就自己寫了一個,樣式圖如下:

 

 

 

展開后如下

 

 

 這就是一個普通的二級表格嵌套,用的是el-table中的type="expand";

HTML代碼如下:

<div class="service-center">
      <el-table
        border
        :data="tableData"
        @expand-change="expandChange"
        v-loading="loading"
        style="width: 100%"
      >
        <el-table-column type="expand">
          <template slot-scope="scope">
            <el-table :data="scope.row.children" style="width: calc(100% - 47px)" class="two-list">
              <el-table-column type="selection" width="55"></el-table-column>
              <el-table-column prop="city_name" label="城市"></el-table-column>
              <el-table-column prop="price" label="成本價"></el-table-column>
              <el-table-column prop="sale_price" label="售出價"></el-table-column>
              <el-table-column prop="discount_price" label="折扣價"></el-table-column>
              <el-table-column prop="product_online_time" label="上架時間"></el-table-column>
              <el-table-column prop="product_off_time" label="下架時間"></el-table-column>
              <el-table-column></el-table-column>
              <el-table-column></el-table-column>
              <el-table-column prop="cat_id" label="狀態">
                <template slot-scope="scope">
                  <span v-if="scope.row.is_online ==1">
                    <span style="color:#00B46D">上架</span>
                  </span>
                  <span v-else>
                    <span style="color:#D75C89">下架</span>
                  </span>
                </template>
              </el-table-column>
              <el-table-column prop="cat_id" label="新增">
                <template slot-scope="scope">
                  <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">修改</el-button>
                  <el-button
                    @click="lowershelf(scope.row)"
                    type="text"
                    size="small"
                    v-if="scope.row.is_online ==1"
                  >下架</el-button>
                  <el-button @click="upshelf(scope.row)" type="text" size="small" v-else>上架</el-button>
                </template>
              </el-table-column>
            </el-table>
            <div class="newpushcity">
              <span>
                <el-cascader
                  :options="optionsZone"
                  :props="propsArea"
                  placeholder="請選擇注冊地區"
                  v-model="seartharea"
                  class="threearea"
                  @change="changearea"
                ></el-cascader>
              </span>
              <span>
                <el-input v-model="search" placeholder="請輸入成本價"></el-input>
              </span>
              <span>
                <el-input v-model="search" placeholder="請輸入售出價"></el-input>
              </span>
              <span>
                <el-input v-model="search" placeholder="請輸入折扣價"></el-input>
              </span>
              <span>
                <el-date-picker v-model="updata" type="date" placeholder="選擇上架時間"></el-date-picker>
              </span>
              <span>
                <el-date-picker v-model="lowdata" type="date" placeholder="選擇下架時間"></el-date-picker>
              </span>
              <span>保存</span>
            </div>
          </template>
        </el-table-column>

        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="product_id" label="ID"></el-table-column>
        <el-table-column label="商品名稱" prop="name"></el-table-column>
        <el-table-column label="商品構成" prop="name">
          <template slot-scope="scope">
            <span v-if="scope.row.sku.length==1">
              <span>{{scope.row.sku[0].sku_name}}</span>
            </span>
            <span v-if="scope.row.sku.length==2">
              <span>{{scope.row.sku[0].sku_name}}+{{scope.row.sku[1].sku_name}}</span>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="商品描述" prop="spu_desc"></el-table-column>
        <el-table-column label="支付方式" prop="pay_type">
          <template slot-scope="scope">
            <span v-if="scope.row.pay_type==1">
              <span>全款</span>
            </span>
            <span v-if="scope.row.pay_type==2">
              <span>預付款支付</span>
            </span>
            <span v-else>
              <span></span>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="渠道" prop="from_type">
          <template slot-scope="scope">
            <span v-if="scope.row.from_type ==1">
              <span>共道</span>
            </span>
            <span v-if="scope.row.from_type ==2">
              <span>個人代賬</span>
            </span>
            <span v-if="scope.row.from_type ==3">
              <span>電商園區</span>
            </span>
            <span v-if="scope.row.from_type ==4">
              <span>釘釘</span>
            </span>
            <span v-if="scope.row.from_type ==5">
              <span>app</span>
            </span>
            <span v-if="scope.row.from_type ==6">
              <span>官網</span>
            </span>
            <span v-if="scope.row.from_type ==7">
              <span>阿里雲</span>
            </span>
            <span v-if="scope.row.from_type ==8">
              <span>阿里雲市場</span>
            </span>
            <span v-else>
              <span></span>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="商品類目" prop="product_type">
          <template slot-scope="scope">
            <span v-if="scope.row.product_type==1">
              <span>代賬</span>
            </span>
            <span v-if="scope.row.product_type==2">
              <span>工商</span>
            </span>
            <span v-if="scope.row.product_type==3">
              <span>套餐</span>
            </span>
            <span v-if="scope.row.product_type==4">
              <span>其他</span>
            </span>
            <span v-else>
              <span></span>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="商品標簽" prop="product_sign"></el-table-column>
        <el-table-column label="狀態" prop="is_online">
          <template slot-scope="scope">
            <span v-if="scope.row.is_online ==1">
              <span style="color:#00B46D">上架</span>
            </span>
            <span v-else>
              <span style="color:#D75C89">下架</span>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="操作" prop="pay">
          <template slot-scope="scope">
            <el-button @click="handleClick(scope.row)" type="text" size="small">修改</el-button>
            <el-button
              @click="lowershelf(scope.row)"
              type="text"
              size="small"
              v-if="scope.row.is_online ==1"
            >下架</el-button>
            <el-button @click="upshelf(scope.row)" type="text" size="small" v-else>上架</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>

即在

<el-table
border
:data="tableData"
@expand-change="expandChange"
v-loading="loading"
style="width: 100%"
>
的下一行插入
<el-table-column type="expand"></el-table-column>。將子表格的要求樣式寫在其中。而子表格的取值是隨上一級的數據一起傳的,這樣是同步加載,會造成數據量較大。但是寫的時候回簡單一些,也可以用異步加載的方法。在展開一級表格的時候執行一個函數,調取后台數據后將后台數據放在上一級數據的children中,或者為上一級加一個children屬性,將數據放入其中。上面的代碼就是用這種方法。
js與之相對應,就不再發一遍了,根據自己的具體要求來寫就行了。有需要源碼的可以在評論區@我。

希望能對你有幫助。


免責聲明!

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



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