vue中,component动态组件的实际应用(三)

vue中,component动态组件的实际应用(三)

4.2、嵌套组件二

展示效果-嵌套组件二

在这里插入图片描述

src\views\subgroup\ReferenceLayer.vue

参考图层属性面板列表
<template>
  <div class="reference-layer-container">
    <el-row v-for="( item, key ) of templateRenderList" :key="key">
      <el-col :span="4" class="name-label"  >{{ item.label }}</el-col>
        <el-col :span="10" class='input-label' v-if="item.isSelect">
          <el-select filterable v-model="formData[ item.bindKey ]" placeholder="请选择" class='select-pad'>
            <el-option v-for="i in formList" :key="i.value" :label="i.label" :value="i.value"></el-option>
          </el-select>
        </el-col>
              <el-col :span="10" class="input-label" v-else>
        <el-input  v-model="formData[ item.bindKey ]"/>
      </el-col>
    </el-row>
  </div>
</template>
<script>

  import renderTemplates from './renderTemplates.js';

  export default {
    name: 'ReferenceLayer',

    props: {
      layerName: {type: String, default: ''}
    },

    computed: {
      templateRenderList() {
        console.log('renderTemplates[this.layerName]',renderTemplates['RD_LINK_ACCESSLIMIT']);
        return renderTemplates['RD_LINK_ACCESSLIMIT'] || []
      },

      editObj() {
        // let editObjData = {
        //   objName: "RW_LINK",
        //   RW_LINK:{
        //     COLOR: "",
        //     FORM: 0,
        //     KIND: 1,
        //     id: 412813230905594,
        //     partition_name: 557467528
        //   },
        //   nmp:{
        //     featureObjectId: 184,
        //     uDate: 1653446047192,
        //     uRecord: 1
        //   }
        // }
        let editObjData = {
          objName: "RD_LINK_ACCESSLIMIT",
          RD_LINK_ACCESSLIMIT:{
            COLOR: "",
            FORM: 0,
            KIND: 1,
            id: 12346,
            partition_name: 798
          },
          nmp:{
            featureObjectId: 184,
            uDate: 1653446047192,
            uRecord: 1
          }
        }
        return editObjData;
        // return this.$store.state.map.editObjData;
      },

      formData() {
        const editObj = {
            COLOR: "",
            FORM: 0,
            LINK_PID: 1,
            MESH:123,
            U_RECORD:2,
            STATE:2,
            id: 12346,
            partition_name: 798
          }
        console.log('editObj123',editObj);
        if (!editObj) return {}

        const result = {}
        console.log('this.templateRenderList',this.templateRenderList);
        for (const item of this.templateRenderList) {
          const editKeyValue = editObj[item.bindKey]
          if (item.map) {
            result[item.bindKey] = item.map[editKeyValue]
          } else {
            result[item.bindKey] = editKeyValue
          }
        }
        return result
      }
    },
    data(){
      return{
        formList: [//形态
          { label: '无', value: 0 },
          { label: '新增', value: 1 },
          { label: '删除', value: 2 },
          { label: '修改', value: 3 }
        ],
      }
    }
  }
</script>

<style scoped lang="less">
  .referece-layer-container {
    padding: 9px;
    height: calc(100vh - 100px);
    overflow: auto;

    .name-label {
      font-size: 12px;
      line-height: 40px;
      color: var(--color-light);
    }

    .input-label {
      margin-top: 6px;
    }
  }
</style>
5、模板文件

src\views\subgroup\renderTemplates.js

/*------ 属性列表渲染模板 ------*/ 
/**
    * label:显示名称            
    * bindKey:后端给定的字段
    * map:针对需要转换显示内容的映射表
    [ { label: '更新记录:', bindKey: 'U_RECORD', map?: { 0: '无', 1: '新增' } } ]
-----------------------*/
// 导出的名字对应 layerName
import { default as RD_LINK } from './RdLink'
import { default as RD_LINK_ACCESSLIMIT } from './RdLinkAccessLimit'
export default {
    RD_LINK,
    RD_LINK_ACCESSLIMIT,
}
6、模板配置文件

1、嵌套模板二

src\views\subgroup\RdLinkAccessLimit.js

export default Object.freeze([
    { label: 'LINK号码', bindKey: 'LINK_PID',isSelect: false },
    { label: '图幅号码', bindKey: 'MESH' ,isSelect: false},
    { label: '行记录ID:', bindKey: 'ROW_ID' ,isSelect: false},
    { label: '更新记录:', bindKey: 'U_RECORD',isSelect: false, map: { 0: '无', 1: '新增', 2: '删除', 3: '修改' } },
    { label: '状态:', bindKey: 'STATE', isSelect: true, map: { 0: '无', 1: '新增', 2: '删除', 3: '修改' } },
    { label: '更新时间:', bindKey: 'UPDATE_DATE',isSelect: false},
])

2、嵌套模板一

src\views\subgroup\RdLink.js

const yesOrNoMap = { 0: '否', 1: '是' }
export default Object.freeze([
    { label: 'LINK号码:', bindKey: 'LINK_PID' },
    { label: '起点号码:', bindKey: 'S_NODE_PID' },
    { label: '终点号码:', bindKey: 'E_NODE_PID' },
    { label: 'LINK长度:', bindKey: 'LENGTH' },
    { label: '高程来源:', bindKey: 'Z_SOURCE', map: { 0: '实采', 1: '计算' } },
    {
        label: '高程设备来源:',
        bindKey: 'ZCOLLECT',
        map: { 1: '点云', 2: '高精轨迹', 3: 'ADAS高精度', 4: 'ADAS中精度', 5: 'DTM', 6: '中精度', 7: '低精度' }
    },
    { label: '数据分类:', bindKey: 'DATA_CLASS', map: { 0: '非HD范围内数据', 1: 'HD范围内数据' } },
    {
        label: '功能等级:',
        bindKey: 'FUNCTION_CLASS',
        map: { 1: '等级1', 2: '等级2', 3: '等级3', 4: '等级4', 5: '等级5' }
    },
    { label: 'IMI代码:', bindKey: 'IMI_CODE', map: { 0: '无', 1: '交叉点内部道路', 2: '转弯' } },
    { label: 'SA:', bindKey: 'SA', map: yesOrNoMap },
    { label: 'PA:', bindKey: 'PA', map: yesOrNoMap },
    { label: '休息区:', bindKey: 'RA', map: yesOrNoMap },
    { label: '自行车道:', bindKey: 'BICYCLE', map: yesOrNoMap },
    { label: '环岛:', bindKey: 'ROUNDABOUT', map: yesOrNoMap },
    { label: '辅路:', bindKey: 'FRONTAGE', map: yesOrNoMap },
    { label: '调头口:', bindKey: 'U_TURN', map: yesOrNoMap },
    { label: '提右:', bindKey: 'P_RIGHT_TURN', map: yesOrNoMap },
    { label: '提左:', bindKey: 'P_LEFT_TURN', map: yesOrNoMap },
    { label: '主辅路出入口:', bindKey: 'MAIN_SIDE_ACCESS', map: yesOrNoMap },
    { label: '停车位引导道路:', bindKey: 'PARKING_ACCESS', map: yesOrNoMap },
    { label: '虚拟调头口:', bindKey: 'V_U_TURN', map: yesOrNoMap },
    { label: '卡车专用道:', bindKey: 'TRUCK_ROAD', map: yesOrNoMap },
    { label: '匝道(未定义):', bindKey: 'RAMP_GEN', map: yesOrNoMap },
    { label: '高速入口匝道:', bindKey: 'RAMP_HW_ENTRY', map: yesOrNoMap },
    { label: '高速出口匝道:', bindKey: 'RAMP_HW_EXIT', map: yesOrNoMap },
    { label: '高速互通:', bindKey: 'HW_CONN', map: yesOrNoMap },
    { label: '图幅号码:', bindKey: 'MESH' },
    { label: '行记录ID:', bindKey: 'ROW_ID' },
    { label: '更新记录:', bindKey: 'U_RECORD', map: { 0: '无', 1: '新增', 2: '删除', 3: '修改' } },
    { label: '更新时间:', bindKey: 'UPDATE_DATE' },
])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值