实现动态表单

业务场景:

绩效考核: 对村庄进行打分,根据考核项表中配置的每一个考核项进行打分

数据结构:

考核项列表:List<AssessmentIndex> list

获取考核项

List<AssessmentIndex> list = assessmentIndexService.list(new LambdaQueryWrapper<AssessmentIndex>()
				.ne(AssessmentIndex::getHasChild, ScoringActionEnum.hasChild1.getType())
				.orderByAsc(AssessmentIndex::getFlage)
		);

打分列表:List<Map<String, String>>

 Map中放村庄名称,每个已打过分数的考核项id和分值(String,String)

      Map<String, String> map = new HashMap<>();
                List<ScoringActionItem> scoringActionItems = collect.get(villageList.get(i).getId());
                // 村庄名
                map.put("name", villageList.get(i).getName());
                map.put("tid", villageList.get(i).getId());// 村庄id
                if (ObjectUtil.isNotEmpty(scoringActionItems)){
                    for (ScoringActionItem scoringActionItem : scoringActionItems) {
                        map.put(scoringActionItem.getCheckIndexId(), String.valueOf(scoringActionItem.getScore()));
                    }
                    mapList.add(map);
                }else {
                    for (int i1 = 0; i1 < assessmentIndexList.size(); i1++) {
                        map.put(assessmentIndexList.get(i1).getId(), "0");
                    }
                    mapList.add(map);
                }

前台返回数据:返回每一个村,每个村下信息,每个村的对应考核项的分数

 

前台展示样式

 前台展示代码

  <vxe-table
        border
        resizable
        show-overflow
        keep-source
        ref="xTable"
        highlight-current-row
        :data="tableData"
        :edit-config="{trigger: 'click', mode: 'row'}">
        <vxe-table-column field="name" title="村名" width="80" fixed="left"></vxe-table-column>
        <vxe-table-column field="tid" title="村id" :visible="false" ></vxe-table-column>
        <vxe-table-column
          width="120"
          v-for="column in tableColumns"
          :field="column.id"
          :title="column.name"
          :edit-render="{autofocus: '.vxe-input--inner'}">
          <template #edit="{ row }">
            <vxe-input type="integer" v-model="row[column.id]">
            </vxe-input>
          </template>
        </vxe-table-column>
        <vxe-table-column field="count" title="总分" width="80" fixed="right">
          <template #default="{ row }">
            <span>{{ countAmount(row) }}</span>
          </template>
        </vxe-table-column>
      </vxe-table>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值