vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue 查询并回显数据

Vue 3 表单与后端数据交互之查询并回显数据步骤流程

作者:码农研究僧

本文给大家介绍Vue3表单与后端数据交互之查询并回显数据步骤流程,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

前言

对应的回显数据异常,可回头看这篇:在使用uni-data-select插件时通过接口获取值赋给localdata失败的问题解决方案

以下是实战中抽离的Demo

核心逻辑和步骤流程概述:

1. 前端

前端界面包含一个输入框(用于输入箱号)和一个“查询箱号”按钮。点击按钮时,会通过后端接口查询箱号相关数据,并将查询结果回显到表单中

<template>
  <Dialog :title="dialogTitle" v-model="dialogVisible" width="70%" max-height="30%">
    <el-form
      ref="formRef"
      :model="formData"
      :rules="formRules"
      label-width="100px"
      v-loading="formLoading"
    >
      <el-row>
        <!-- 输入箱号 -->
        <el-col :span="4">
          <el-form-item label="集装箱箱号" prop="containerNumber">
            <el-input v-model="formData.containerNumber" placeholder="请输入箱号" clearable />
          </el-form-item>
        </el-col>
        <!-- 输入箱属 -->
        <el-col :span="4">
          <el-form-item label="箱属" prop="containerOwner">
            <el-input v-model="formData.containerOwner" placeholder="箱属" clearable />
          </el-form-item>
        </el-col>
        <!-- 查询按钮 -->
        <el-col :span="4">
          <el-button type="primary" @click="searchBoxData">查询箱号</el-button>
        </el-col>
      </el-row>
      <!-- 其他表单项 -->
    </el-form>
  </Dialog>
</template>
<script setup>
import { ref } from 'vue'
import GoodsLogApi from '@/api/GoodsLogApi'
const formData = ref({
  containerNumber: '',
  containerOwner: '',
  // 其他字段
})
const formRules = ref({
  // 表单验证规则
})
const formLoading = ref(false)
const dialogVisible = ref(false)
const dialogTitle = ref('')
// 打开弹窗方法
const open = async (type, id = null) => {
  dialogVisible.value = true
  dialogTitle.value = type === 'create' ? '创建' : '编辑'
  resetForm()
  if (id) {
    formLoading.value = true
    try {
      formData.value = await GoodsLogApi.getGoodsLog(id)
    } finally {
      formLoading.value = false
    }
  }
}
// 重置表单数据
const resetForm = () => {
  formData.value = {
    containerNumber: '',
    containerOwner: '',
    // 其他字段
  }
}
// 查询箱号数据
const searchBoxData = async () => {
  if (!formData.value.containerNumber) {
    return this.$message.warning('请输入箱号')
  }
  formLoading.value = true
  try {
    // 向后端请求箱号数据
    const boxData = await GoodsLogApi.queryBoxData(formData.value.containerNumber)
    if (boxData) {
      // 将查询结果填充到表单
      formData.value.containerOwner = boxData.containerOwner || ''  // 例如填充箱属
      // 根据返回的其他字段继续填充表单数据
      formData.value.containerNumber = boxData.cntr || ''  // 例如填充箱号
    } else {
      this.$message.warning('未找到相关箱号数据')
    }
  } catch (error) {
    this.$message.error('查询失败')
  } finally {
    formLoading.value = false
  }
}
</script>

前端调用后端查询箱号数据接口,并返回查询结果。

// api/GoodsLogApi.js
import request from '@/utils/request'
export default {
  // 根据箱号查询数据
  queryBoxData(containerNumber) {
    return request({
      url: `/api/goods-log/query-box`,
      method: 'get',
      params: { containerNumber }
    })
  }
}

2. 后端

后端接口接收箱号作为请求参数,查询数据库相关数据,并将数据返回给前端

@RestController
@RequestMapping("/api/goods-log")
public class GoodsLogController {
    @Autowired
    private GoodsLogService goodsLogService;
    // 查询箱号数据
    @GetMapping("/query-box")
    public ResponseEntity<Map<String, Object>> queryBoxData(@RequestParam String containerNumber) {
        Map<String, Object> boxData = goodsLogService.queryBoxData(containerNumber);
        if (boxData == null) {
            return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);  // 如果未找到数据
        }
        return ResponseEntity.ok(boxData);  // 返回查询结果
    }
}

以及

在服务层通过 SQL 查询箱号数据,并返回查询到的结果

@Service
public class GoodsLogService {
    @Autowired
    private JdbcTemplate jdbcTemplate;  // 使用 JdbcTemplate 执行 SQL 查询
    public Map<String, Object> queryBoxData(String containerNumber) {
        String sql = "SELECT * " +
                     "FROM xxx WHERE CNTR = ?";
        // 执行查询并返回结果
        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, containerNumber);
        // 如果找到数据,返回第一个结果
        if (result != null && !result.isEmpty()) {
            return result.get(0);
        }
        return null;  // 如果没有找到数据,返回 null
    }
}

3. 总结

实战截图如下:

到此这篇关于Vue 3 表单与后端数据交互:查询并回显数据的文章就介绍到这了,更多相关Vue 查询并回显数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文