table展开行

通过设置type="expand"Scoped slot 可以开启展开行功能,el-table-column的模板会被渲染成为展开行的内容,展开行可访问的属性与使用自定义列模板时的 Scoped slot相同。

重点:

1.表格绑定的数据 :data="showPolicyListDate"
2.展开列表的方法@expand-change="expandPolicyList"
3.必须要写的:type="expand"slot-scope="scope"
<el-table :data="showPolicyListDate"  @expand-change="expandPolicyList" style="width: 100%" :header-cell-style="{background:'#fafafa'}">
                <!-- 详情 -->
                <el-table-column type="expand">
                  <template slot-scope="scope">
                      <el-form label-position="left" inline style="background: rgba(238, 241, 246, 0.35);">
                          <div class="ml20" style="padding: 40px 0;">
                              <div class="tableInfoBox" v-for=" (item,index) in scope.row.expandData.policyHolderInfo" :key="index">
                                  <div style="font-weight:600;margin-bottom:16px;">投保人信息</div>
                                  <el-row>
                                      <el-col :span="6">
                                          <el-form-item label="投保人姓名:">
                                          <span>{{item.applyName?item.applyName:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="性别:">
                                          <span>{{item.applyGender?item.applyGender:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="证件类型:">
                                          <span>{{item.applyIdType?item.applyIdType:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="证件号:">
                                          <span>{{item.applyIdNo?item.applyIdNo:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                  </el-row>
                                  <el-row>
                                      <el-col :span="6">
                                          <el-form-item label="出生日期:">
                                          <span>{{item.applyBirthDate}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="证件有效期:">
                                          <span>{{item.applyIdTerm?item.applyIdTerm:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="职业:">
                                          <span>{{item.profession?item.profession:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="联系电话:">
                                          <span>{{item.applyMobile?item.applyMobile:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                  </el-row>
                                  <el-row>
                                      <el-col :span="12">
                                          <el-form-item label="联系地址:">
                                          <span>{{item.applyAddres?item.applyAddres:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                  </el-row>
                              </div>
                              <div
                                  class="tableInfoBox"
                                  v-for="item in scope.row.expandData.insurHolderInfo"
                                  style="padding-top:20px;"
                                  :key="item.insurIdNo">
                                  <div style="font-weight:600;margin-bottom:16px;">被保人信息</div>
                                  <el-row>
                                      <el-col :span="6">
                                          <el-form-item label="被投保人姓名:">
                                          <span>{{item.insurName?item.insurName:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="性别:">
                                          <span>{{item.insurGender?item.insurGender:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="证件类型:">
                                          <span>{{item.insurIdType?item.insurIdType:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="证件号:">
                                          <span>{{item.insurIdNo?item.insurIdNo:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                  </el-row>
                                  <el-row>
                                      <el-col :span="6">
                                          <el-form-item label="出生日期:">
                                          <span>{{item.insurBirthDate}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="证件有效期:">
                                          <span>{{item.insurIdTerm?item.insurIdTerm:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="职业:">
                                          <span>{{item.insurprofession?item.insurprofession:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="6">
                                          <el-form-item label="联系电话:">
                                          <span>{{item.insurMobile?item.insurMobile:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                  </el-row>
                                  <el-row>
                                      <el-col :span="12">
                                          <el-form-item label="联系地址:">
                                          <span>{{item.insurAddres?item.insurAddres:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                      <el-col :span="12">
                                          <el-form-item label="与投保人关系:">
                                          <span>{{item.insurRelationToAppnt?item.insurRelationToAppnt:''}}</span>
                                          </el-form-item>
                                      </el-col>
                                  </el-row>
                              </div>
                              <div style="padding-top:20px;">
                                  <div style="font-weight:600;margin-bottom:30px;">险种信息</div>
                                  <RiskInfo class="mt10" :riskInfoList="scope.row.expandData.riskInfoList"></RiskInfo>
                              </div>
                          </div>
                      
                      </el-form>
                  </template>
                </el-table-column>
                <el-table-column align="center" prop="contNo"  label="保单号" width="150"></el-table-column>
                <el-table-column align="center" prop="productName" label="险种名称" min-width="180" show-overflow-tooltip></el-table-column>
                <el-table-column align="center" prop="appntName" label="投保人" width="150"></el-table-column>
                <el-table-column align="center" prop="insuredName" label="被保险人" width="150"></el-table-column>
                <el-table-column align="center" prop="amnt" label="保险金额(元)" width="150">
                  <template slot-scope="{row}">{{row.amnt|formatSemicolon|formatAddWorld}}</template>
                </el-table-column>
                <el-table-column align="center" prop="sumPrem" label="期缴保费合计(元)" width="150">
                  <template slot-scope="{row}">{{row.sumPrem|formatSemicolon|formatAddWorld}}</template>
                </el-table-column>
                <el-table-column align="center" prop="cvalidate" label="生效日期" width="150">
                  <template slot-scope="{row}">{{row.cvalidate|formatCreateTime}}</template>
                </el-table-column>
              </el-table>

调用后台接口获取数据:给每一条数据添加一个可展开列表的数据,防止数据为空报错

//联系方式变更详情
    async getbussMsgInfor(){
      const res = await ContactChanged.getbussMsgInfo({bussNo:this.bussNo})
      if(res.result==='0'){
        // 已选保单
        this.showPolicyListDate = res.campContactInfo.policyList.map(item=>{
          return {
            ...item,
            flag:true,
            expandData:{
              policyHolderInfo:{},
              insurHolderInfo:{},
              riskInfoList:[]
            }
          }
        })
       }else{
        this.$message.error(res.resultMessage)
        return 
      }

点击展开调用方法:给每一条数据里面的展开列表赋值

// 展开列表保单基本信息
    async expandPolicyList(row){
      const res = await ContactChanged.getPolicyDetails({policyNo:row.contNo})
      row.expandData.policyHolderInfo = res.applyInfo
      row.expandData.insurHolderInfo = res.insurInfo
      row.expandData.riskInfoList = res.riskInfo
    },

效果:


image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。