vue3小案例-信息系统

embedded/2024/12/5 18:01:51/

第一步,拉取或者创建一个含有 axios 插件的 vue3 项目

创建项目教程:vue3项目搭建-1-创建项目-CSDN博客

安装 axios 插件命令:

npm install axios

第二步,mock 模拟后端接口

在根目录创建 mock 文件夹,在文件夹中创建 index.js 文件,文件内容:

javascript">import Mock from "mockjs"
// 使用 Mock 模拟后端数据
const arr = []
for (let i = 0; i < 10; i++) {arr.push({id: Mock.mock("@id"),name: Mock.mock("@cname"),place: Mock.mock("@county(true)"),})
}
export default [{url: "/list",method: "get",response: () => {return arr},},{url: "/del/:id",method: "delete",response: (req) => {const index = arr.findIndex((item) => item.id === req.query.id)if (index > -1) {arr.splice(index, 1)return { success: true }} else {return { success: false }}},},{url: "/edit/:id",method: "patch",response: ({ query, body }) => {const item = arr.find((item) => item.id === query.id)if (item) {item.name = body.nameitem.place = body.placereturn { success: true }} else {return { success: false }}},},
]

vite.config.js:

javascript">import { fileURLToPath, URL } from "node:url"import { defineConfig } from "vite"
import vue from "@vitejs/plugin-vue"
import { viteMockServe } from "vite-plugin-mock"// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),viteMockServe({mockPath: "mock",localEnabled: true,}),],resolve: {alias: {"@": fileURLToPath(new URL("./src", import.meta.url)),},},
})

第三步,完善前端代码

App.vue:

javascript"><script setup>
import Edit from './components/Edit.vue'
import axios from 'axios'
import { onMounted,ref } from 'vue'// TODO: 列表渲染
//装数据的列表
const list = ref([])
const getList = async () => {//通过发送 /list 请求从后端拿到列表数据const res = await axios.get('/list')list.value = res.data
}
onMounted(() => getList())
// TODO: 删除功能
//获取 id ,删除 记录,更新页面
const onDelete = async (id) => {console.log(id)//将后端中 id 为 {id} 的记录删除,注意这里是左上角 esc 下面的 '`' 符号await axios.delete(`/del/${id}`)//更新getList()
}
// TODO: 编辑功能
//获取 id,修改数据,更新页面const editRef = ref(null)const update = (row) => {editRef.value.open(row)getList()
}
</script><template><div class="app"><el-table :data="list"><el-table-column label="ID" prop="id"></el-table-column><el-table-column label="姓名" prop="name" width="150"></el-table-column><el-table-column label="籍贯" prop="place"></el-table-column><el-table-column label="操作" width="150"><template #default="{ row }"><el-button type="primary" @click="update(row)" link>编辑</el-button><el-button type="danger" @click="onDelete(row.id)" link>删除</el-button></template></el-table-column></el-table></div><!-- 将更新页面的监听给子组件 --><Edit ref="editRef" @on-update="getList"/>
</template><style scoped>
.app {width: 980px;margin: 100px auto 0;
}
</style>

修改数据的弹窗表单组件:

javascript"><script setup>
// TODO: 编辑
import axios from 'axios'
import { onMounted,ref } from 'vue'
// 弹框开关
const dialogVisible = ref(false)
// 表单关联行中的字段
const form = ref({name: '',place: '',id: ''
})
const open = (row) => {console.log(row)form.value.id = row.idform.value.name = row.nameform.value.place = row.placedialogVisible.value = true
}
defineExpose({open
})//拿到父组件的所有标记
const emit = defineEmits(['on-update'])//TODO
const editUpdate = async () => {console.log(form)//将姓名和籍贯带到路径中,并发送请求await axios.patch(`/edit/${form.value.id}`, {name: form.value.name,place: form.value.place,})//关闭弹窗dialogVisible.value = false//触发监听,通知父组件更新列表emit('on-update')
}</script><template><el-dialog v-model="dialogVisible" title="编辑" width="400px"><el-form label-width="50px"><el-form-item label="姓名"><el-input placeholder="请输入姓名" v-model="form.name"/></el-form-item><el-form-item label="籍贯"><el-input placeholder="请输入籍贯" v-model="form.place"/></el-form-item></el-form><template #footer><span class="dialog-footer"><el-button @click="dialogVisible = false">取消</el-button><el-button type="primary" @click="editUpdate">确认</el-button></span></template></el-dialog>
</template><style scoped>
.el-input {width: 290px;
}
</style>

这些数据都是 mock 随机生成的,第一条是修改后的结果 


http://www.ppmy.cn/embedded/141857.html

相关文章

深入浅出 Python 网络爬虫:从零开始构建你的数据采集工具

在大数据时代&#xff0c;网络爬虫作为一种数据采集技术&#xff0c;已经成为开发者和数据分析师不可或缺的工具。Python 凭借其强大的生态和简单易用的语言特点&#xff0c;在爬虫领域大放异彩。本文将带你从零开始&#xff0c;逐步构建一个 Python 网络爬虫&#xff0c;解决实…

Sqoop的安装和配置,Sqoop的数据导入导出,MySQL对hdfs数据的操作

sqoop的安装基础是hive和mysql&#xff0c;没有安装好的同学建议去看一看博主的这一篇文章 Hive的部署&#xff0c;远程模式搭建&#xff0c;centos换源&#xff0c;linux上下载mysql。_hive-4.0.1-CSDN博客 好的那么接下来我们开始表演&#xff0c;由于hive是当时在hadoop03上…

git clone超大仓库时报错:fatal: early EOF

环境版本&#xff1a; 系统&#xff1a;Ubuntu git版本&#xff1a;version 2.43.0 在执行git clone命令时报错&#xff0c;信息如下&#xff1a; 系统&#xff1a;Win10 git版本&#xff1a;version 2.47.0 解决办法1&#xff1a; 1、关闭压缩&#xff1a; git conf…

SNMPv3 项目实例

为了支持 更多的 SNMP 功能,例如 安全性、复杂的 MIB 结构 和 增强的功能,我们需要对现有的代理和客户端进行扩展和改进。下面我会详细介绍如何在 SNMP 项目中实现以下功能: 支持 SNMPv3 安全性:SNMPv3 提供了认证和加密功能,保证数据传输的安全性。支持复杂的 MIB 结构:…

Android通过摄像头检测心率

话不多说&#xff0c;先看效果 Android通过摄像头测量心率 借鉴文章如下 Android通过摄像头计算心率、心率变异性 该文章的核心功能点已经很全了&#xff0c;为了方便使用&#xff0c;我这边整理成了工具类可直接使用 该功能全网文章还是比较少的&#xff0c;还是要感谢下借鉴…

springboot331“有光”摄影分享网站系统pf(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; “有光”摄影分享网站设计与实现 摘 要 自互联网的发展至今&#xff0c;其基础理论与技术都已完善&#xff0c;并积极参与了整个社会各个领域。它容许信息根据媒体传播&#xff0c;并和信息可视化工具一起为大家提供优质的服务。对于…

android集成FFmpeg步骤以及常用命令,踩坑经历

1、入坑第一步&#xff1a;首先集成的库必须正确。最好是有ndk的&#xff0c;FFmpeg有许多个版本&#xff0c;我才开始接触的时候随便选了一个&#xff0c;一般的 方法没有问题。但是涉及到需要使用libx264等条件进行编码时&#xff0c;老是报错&#xff0c;网上搜索资料也没有…

uniapp开发支付宝小程序自定义tabbar样式异常

解决方案&#xff1a; 这个问题应该是支付宝基础库的问题&#xff0c;除了依赖于官方更新之外&#xff0c;开发者可以利用《自定义 tabBar》曲线救国 也就是创建一个空内容的自定义tabBar&#xff0c;这样即使 tabBar 被渲染出来&#xff0c;但从视觉上也不会有问题 1.官方文…