当前位置: 首页 > 知识库问答 >
问题:

javascript - 如何实现一个表格内调用两个接口来渲染不同字段数据?

顾嘉良
2023-12-18

图片.png

  <el-table :data="SerialForm.tableData" border width="80%" style="width: 99%;" max-height="200">        <el-table-column prop="portId" label="串口输出接口id" width="180" align="center" />        <el-table-column prop="formattedFrequency" label="报文/频率" align="center" />        <el-table-column label="编辑" width="180" align="center">          <template #default="{ row }">            <el-icon color="red" size="25" @click="edit(row)">              <Edit />            </el-icon>          </template>        </el-table-column>      </el-table><script>let SerialForm = reactive({  tableData: [], // 列表数据})onMounted(() => {  GetSerID()//获取初始的列表数据----获取串口id})// 获取初始的列表数据----获取串口idasync function GetSerID() {  const SerIDList = await api.GetSerialId();  const { data: res } = SerIDList;  const result = res.port_thruput.split(",").reduce((acc, curr, index, array) => {    if (index % 3 === 0) {      const [portId, rate, thruput] = array.slice(index, index + 3);      const formattedPortId = parseInt(portId).toString(16).padStart(2, '0');      if (formattedPortId >= '01' && formattedPortId <= '04') {//只显示01~03的串口数据        acc.push({          portId: formattedPortId,          rate,          thruput        });      }    }    return acc;  }, []);  SerialForm.tableData = result;  for (const item of result) {    // 获取初始的列表数据----获取报文头和频率    await GetPacketHeaderFreq(item.portId);  }}// 获取初始的列表数据----获取报文头和频率async function GetPacketHeaderFreq(portId) {  const id = {    port_id: parseInt(portId, 10)  }  const OutCfgList = await api.GetMsgRate(id);  const { data: res } = OutCfgList;  let formatted = [];  for (const key in res) {    const message = key.toUpperCase();    const frequency = res[key];    formatted.push({      formattedFrequency: `${message}/${frequency}`    });  }  SerialForm.tableData = formatted;}</script>

问题一、当"串口输出id"和"报文/频率" 。分别需要两个接口来获取对应的数据,第一个接口是获取id的接口,第二个接口是需要将id传值给第二接口才会返回"报文/频率"的内容,请问大佬们我该如何才能实现获取两个不同的接口数据在el-table内显示呢?
我试着将两个接口分别不同的请求,来获取不同的字段数据,但是第二个接口返回的数据渲染在表格里,会把第一个返回的id给替换掉?

问题二、下面这是第二个接口返回的数据,
1702884202028.png
但是需要在列表内这样显示,这是要求显示的格式
图片.png
请问该如何修改?求大佬们指点指点,谢谢

共有1个答案

范华清
2023-12-18
// 获取初始的列表数据----获取串口idasync function GetSerID() {  const SerIDList = await api.GetSerialId();  const { data: res } = SerIDList;  const result = res.port_thruput.split(",").reduce((acc, curr, index, array) => {    if (index % 3 === 0) {      const [portId, rate, thruput] = array.slice(index, index + 3);      const formattedPortId = parseInt(portId).toString(16).padStart(2, '0');      if (formattedPortId >= '01' && formattedPortId <= '04') {//只显示01~03的串口数据        acc.push({          portId: formattedPortId,          rate,          thruput,          formattedFrequency: [] // 添加一个空的报文/频率字段        });      }    }    return acc;  }, []);  SerialForm.tableData = result;  for (const item of result) {    // 获取初始的列表数据----获取报文头和频率    await GetPacketHeaderFreq(item.portId);  }}// 获取初始的列表数据----获取报文头和频率async function GetPacketHeaderFreq(portId) {  const id = {    port_id: parseInt(portId, 10)  }  const OutCfgList = await api.GetMsgRate(id);  const { data: res } = OutCfgList;  // 删除不需要的字段  delete res.state;  delete res.port_id;  let filteredData = Object.entries(res)    .filter(([_, value]) => value !== 0)    .map(([key, value]) => ({ key, value }));  let formatted = filteredData.map(({ key, value }) => `${key.replace('_FREQ', '').toUpperCase()}/${value}`);  // 将得到的报文/频率字段合并到之前的表格数据中  SerialForm.tableData = SerialForm.tableData.map(item => {    if (item.portId === portId) {      return {        ...item,        formattedFrequency: formatted.join('; ')      };    }    return item;  });}
 类似资料:
  • 这是我运行出来的图 这是我想要的图 希望从接口拿到的数据成功的渲染在表格上面

  • 问题内容: 假设我必须实现在两个不同的包中声明的两个不同的接口(在两个不同的独立项目中)。 我有包装 并包装 在我的包里 如何处理这种情况? 问题答案: 正如常见问题解答所提到的 其他语言的经验告诉我们,使用具有相同名称但签名不同的多种方法有时会很有用,但在实践中也可能会造成混淆和脆弱。 在Go的类型系统中,仅按名称进行匹配并要求类型一致是简化的主要决定 。 在您的情况下,您将满足两个接口。 您可

  • 根据多级表头渲染表格数据———— 这是数据源,依据shift字段值区分白夜班数据; 这是数据结构: 模板结构: 这是渲染后的表头: 怎么实现根据shift这个字段值,给白班和夜班分别渲染对应的数据? 查看文档,只有多级渲染。 我自己的一个方案:获取数据后,额外操作数据源做一个区分处理(根据shift值),然后修改不同班别下的属性(白班对应列表头属性改为day_total_input,以此类推),在

  • 问题内容: 我有两个表和相关的Java映射。 这是我的Java实体。国家POJO: 和用户POJO: 问题是,我怎么能加入到在Hibernate中使用注释?当我使用Hibernate创建User对象时,我需要自动绑定这两个字段(代码和countryCode)。 问题答案: 您需要从映射到实体,并从映射到:

  • 我有一个包裹 现在我想禁止在之外的实现,但是应该是公共的,因为我将其用于。 如何做到这一点? 这有什么“套餐最终模式”吗? 你有过这样的情况吗? 详情: 我知道有可能只使用带有包私有构造函数的抽象类,而不是接口,但是和扩展不同的类,因此我需要多重继承(因为模拟多重继承(例如,见有效的Java项目18)在这里不起作用)。

  • 问题内容: 我想做类似于“和”过滤器示例的操作,除了每个示例中都带有“应该”的术语,而不是示例中的字段类型。我提出以下内容: 但是,我收到此错误: 还有另一种方法可以执行我正在尝试执行的操作,还是我走在正确的轨道上?还是在Elasticsearch中这是不可能的? 问题答案: 每个布尔查询子句可以包含多个子句。字词查询(http://www.elasticsearch.org/guide/refe