an-design-vue动态表格的跨行

动态表格1的效果图

获取表格的数据

1.html


表格的渲染

2.js处理

setList(){

// this.allList=this.list;

  this.renderDetailList.forEach((item,index)=>{

item.key = index;

item.name=item.title;

let Allenergy=0,allprotein=0,allfat=0,allcarbohydrates=0,allamountPayable=0;

var tableitem =Object.assign({},item);

item.goodsList.forEach((i,iindex) => {

i.radioIndex=item.key;

i.key = iindex;

// i.name=`营养方案-${index+1}`;

      i.name=item.title;

i.serialNum=index;

i.goodsId=i.id;

i.goodsUnit=i.uname;

i.goodsUnitId=i.unitId;

i.price=i.unitPrice;

i.quantity=i.quantityUsed;

//遍历prodAllPrice这个字段,并累加

      // toFixed(1)

// Math.round(t*100)/100;

      Allenergy+= i.unitEnergy*i.quantityUsed;

allprotein+=i.unitProtein*i.quantityUsed;

allfat+=i.unitFat*i.quantityUsed;

allcarbohydrates+=i.unitCarbohydrate*i.quantityUsed;

allamountPayable+=i.subtotal;

});

Object.assign(tableitem,{energy:Allenergy.toFixed(1)},{protein:allprotein.toFixed(1)},

{fat:allfat.toFixed(1)},{carbohydrates:allcarbohydrates.toFixed(1)},{amountPayable:allamountPayable.toFixed(2)})

this.$set(this.allList,index,tableitem);

})

// console.log("allList");

// console.log(this.allList);

},


表格的js渲染处理

3.后台返回的数据格式


返回数据

4.表格的columns(直接写在data里面)

columns: [

{

title:'序号',

scopedSlots: {customRender:'serialNum' },

width:50,

align:'center',

customRender: (value, row, index,record) => {

const obj = {

children: ,

            attrs: {},

};

const rowSpanNum =this.allList[value.radioIndex].goodsList.length;

if (index ===0) {

obj.attrs.rowSpan =rowSpanNum;

}else {

obj.attrs.rowSpan =0;

}

return obj;

}

},

{

title:'名称',

width:100,

align:'center',

scopedSlots: {customRender:'name' },

customRender: (value, row, index,record) => {

const obj = {

children:`${value.name}`,

attrs: {},

};

// console.log(value,"value");

// console.log(row,"row");

// console.log(index,"index");

// console.log(record,"record");

      // console.log(value.radioIndex,"sindex",this.allList[value.radioIndex].goodsList.length,"跨行数");

        const rowSpanNum=this.allList[value.radioIndex].goodsList.length;

if (index ===0) {

obj.attrs.rowSpan =rowSpanNum;

}else{

obj.attrs.rowSpan =0;

}

return obj;

},

},

{

title:'商品名称',

width:100,

ellipsis:true,

// dataIndex:'goodsName',

    scopedSlots: {customRender:'goodsName' },

align:'center',

rowSpan:0,

},

{

title:'品牌',

width:80,

dataIndex:'brandName',

align:'center',

rowSpan:0,

},

{

width:100,

title:'规格',

// dataIndex:'',

  scopedSlots: {customRender:'goodsSpecifications' },

ellipsis:true,

align:'center',

rowSpan:0,

},

{

width:50,

title:'单位',

dataIndex:'uname',

align:'center',

rowSpan:0,

},

{

title:'数量',

scopedSlots: {customRender:'quantityUsed' },

width:80,

align:'center',

rowSpan:0,

},

{

title:'单价',

width:80,

scopedSlots: {customRender:'unitPrice' },

// dataIndex:'unitPrice',

    align:'center',

rowSpan:0,

},

// {

  //  title: '小计',

//  dataIndex:'subtotal',

//  align:'center',

//  rowSpan:0,

// },

  {

title:'操作',

scopedSlots: {customRender:'operation' },

align:'center',

rowSpan:0,

}

],

5.跨行处理细节


radioIndex、对应渲染的表格的index

components--》userlist--》intervition--》prescriptionelementsBox.vue文件

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

推荐阅读更多精彩内容