【在线OJ】发帖功能前后段代码实现

一、页面布局

 二、前端代码

<template><div id="app"><div style="height: 100vh"><div style="display: flex" ><el-input style="width: 95%" v-model="title" placeholder="输入标题"></el-input><el-button style="width: 5%; margin-left: 2px" type="primary" size="small" @click="submit">发布</el-button></div><quill-editor style="height: 100vh" v-model="content"></quill-editor><el-drawertitle="请选择类型":before-close="handleClose":visible.sync="dialog"direction="rtl"custom-class="demo-drawer"ref="drawer"><div class="demo-drawer__content"><el-form :model="form"><el-form-item label="类型" :label-width="formLabelWidth"><el-select v-model="type" placeholder="请选择文章类型"><el-option v-for="item in types" :key="item.id" :label="item.type" :value="item.id" @click="onchange(item.id)"></el-option></el-select></el-form-item><el-uploadclass="avatar-uploader"action="http://127.0.0.1:8388/forum/article/public/postPhoto"list-type="picture-card":show-file-list="false":on-success="success":headers="headers":before-upload="beforeAvatarUpload"><img v-if="imageUrl" :src="imageUrl" class="avatar"><i v-else class="el-icon-plus avatar-uploader-icon"></i></el-upload></el-form><div class="demo-drawer__footer"><el-button @click="cancelForm">{{'取 消'}}</el-button><el-button type="primary" @click="cancelForm">{{ '确 定' }}</el-button></div></div></el-drawer></div></div>
</template><script>import axios from "axios";const options = {data: function () {return {imageUrl: '',headers: {"token": localStorage.getItem("token")},types: [],form: {name: '',region: '',date1: '',date2: '',delivery: false,type: [],resource: '',desc: ''},formLabelWidth: '80px',timer: null,dialog: false,title: "",content: "",type: "",photo: "",loading: false,};},async mounted() {await this.getTypes()// 获取查询字符串let id = this.$route.query.idif (id === '' || id === undefined) {console.log(id)} else {this.$message({message: '查询数据',type: 'success'});this.title = '这是一篇关于……的帖子'this.content= '需要查询数据库进行编写'const resp = await axios.get("http://localhost:8388/forum/article/public/queryById", {params: {"id": id,}})if (resp.data.code === 200) {this.title = resp.data.data.titlethis.content = resp.data.data.content}}},methods: {onchange(id) {this.type = id},success: function(response, file, fileList) {console.log(file)console.log(fileList)const data = response; // 从服务器返回的数据中获取上传成功后的头像地址console.log(data)if (data.code === 200) {console.log(data)this.photo = data.data}console.log(response)},beforeAvatarUpload(file) {const isJPG = file.type === 'image/jpeg';const isLt2M = file.size / 1024 / 1024 < 2;if (!isJPG) {this.$message.error('上传头像图片只能是 JPG 格式!');return false}if (!isLt2M) {this.$message.error('上传头像图片大小不能超过 2MB!');return false}return true},cancelForm() {this.dialog = false;this.loading = false;},async getTypes() {this.currentType = 0const resp = await axios.get("http://localhost:8388/forum/article/public/showTypes");if (resp.data.code === 200) {this.types = resp.data.data}// this.types.unshift({id : 0, type: "全部"})},handleClose() {this.dialog = false},async submit() {console.log(this.type)console.log(this.photo)if (!this.type || !this.photo) {this.dialog = true;return;}if (this.$route.query.id === undefined) {console.log('提交的内容:', this.content)const resp = await axios.post("http://localhost:8388/forum/article/public/PostArticle", {title: this.title,content: this.content,type: this.type,photo: this.photo}, {headers: {token: localStorage.getItem("token")}})if (resp.data.code === 200) {this.$message({message: '发布成功',type: 'success'});await this.$router.push({path: '/forum',})}} else {console.log('提交的内容:', this.content)const resp = await axios.post("http://localhost:8388/forum/article/public/updateArticle", {title: this.title,content: this.content,type: this.type,id: this.$route.query.id}, {headers: {token: localStorage.getItem("token")}})if (resp.data.code === 200) {this.$message({message: '修改成功',type: 'success'});await this.$router.push({path: '/article',query: {id: this.$route.query.id}})}}}},computed: {}
};
export default options;
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;
}nav {padding: 30px;
}nav a {font-weight: bold;color: #2c3e50;
}nav a.router-link-exact-active {color: #42b983;
}
</style>

三、后端代码

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1451245.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Spine学习07】之跑步动作制作思路总结

前几节试着做了待机和走路动画 现在开始尝试做跑步动作 注意跑步动作和走路一样 暂时不需要使用IK约束但是会用到塞贝尔曲线&#xff08;模拟裙子飞起动效&#xff09; 第一步&#xff1a; 先将人物整体斜放置&#xff08;因为人跑步的时候&#xff0c;身体前倾&#xff09; …

『大模型笔记』主成分分析(PCA)解释:简化机器学习中的复杂数据!

主成分分析(PCA)解释:简化机器学习中的复杂数据 文章目录 一. 主成分分析(PCA)解释:简化机器学习中的复杂数据!二. 参考文献一. 主成分分析(PCA)解释:简化机器学习中的复杂数据! 主成分分析(Principal Component Analysis,简称PCA)通过 将大型数据集中的维度减少…

借助ollama实现AI绘画提示词自由,操作简单只需一个节点!

只需要将ollama部署到本地&#xff0c;借助comfyui ollama节点即可给你的Ai绘画提示词插上想象的翅膀。具体看详细步骤&#xff01; 第一步打开ollama官网&#xff1a;https://ollama.com/&#xff0c;并选择models显存太小选择的是llama3\8b参数的instruct-q6_k的这个模型。 运…

blender bpy将顶点颜色转换为UV纹理vertex color to texture

一、关于环境 安装blender的bpy&#xff0c;不需要额外再安装blender软件。在python控制台中直接输入pip install bpy即可。 二、关于代码 本文所给出代码仅为参考&#xff0c;禁止转载和引用&#xff0c;仅供个人学习。 本文所给出的例子是https://download.csdn.net/downl…

手写轮播列表(最新) 轮播图 swiper

el-row版本: <template><div class="container-div" id="app"><div><!-- 头部开始--><div class="top1"><div class="content"><div class="list"><el-row :gutter=&quo…

在ubuntu中恢复误删除的文件

1、安装 TestDisk 在 Ubuntu 上&#xff0c;可以使用以下命令安装 TestDisk&#xff1a; sudo apt-get install testdisk2、查询你删除的文件所在那个分区 #查询分区 df -h #我这里是/dev/sda2 #也可以使用下面命令查看具体哪个分区 lsblk3、查询该分区是什么系统类型 sudo …

【网络编程】基于UDP的服务器端/客户端

UDP可看作是信件邮寄&#xff0c;邮寄过程可能会信件丢失&#xff0c;是一种不可靠的数据传输服务。 但UDP性能更高&#xff0c;实现更加简洁。流控制是区分UDP和TCP的最重要标志。 IP的作用就是让离开主机B的UDP数据包传递给主机B&#xff0c;UDP根据端口号将传到主机的数据包…

华为大咖说 | AI 是行业的未来, 还是另一个“元宇宙”?

本文作者&#xff1a;陈冠宏&#xff08;华为网络MSSD首席顾问&#xff09;全文约4497字&#xff0c;阅读约需10分钟 在本年度的517电信日上&#xff0c;中国电信高层在产品升级计划发布会中喊出“ALL in AI”战略&#xff0c;其震撼力让人瞩目。 自2022年11月OpenAI推出划时代…

【Oracle篇】rman时间点异机恢复:从RAC环境到单机测试环境的转移(第六篇,总共八篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

Web应用安全测试-业务功能滥用(一)

Web应用安全测试-业务功能滥用&#xff08;一&#xff09; 1、短信定向转发 漏洞描述&#xff1a;短信接收人可任意指定 测试方法&#xff1a;拦截发送短信的请求&#xff0c;将手机号改为测试人员的手机号&#xff0c;测试是否可接收短信验证码。 风险分析&#xff1a;攻击…

node更改npm缓存存储位置-并配置环境变量

更改缓存位置 node安装完成之后,在安装目录中新建一个存放缓存的文件夹node_cache 此时这个文件夹必须使用管理员权限才能更改,这使得命令行下使用npm进行下载的时候总是报权限不足的错误:permit 解决办法: 右键 -> 属性 -> 安全 -> 编辑 -> 选择user -> …

mybatis中resultMap和resultType的区别

总结 基本映射 &#xff1a;&#xff08;resultType&#xff09;使用resultType进行输出映射&#xff0c;只有查询出来的列名和pojo中的属性名一致&#xff0c;该列才可以映射成功。&#xff08;数据库&#xff0c;实体&#xff0c;查询字段,这些全部都得一一对应&#xff09;…

盲盒App开发时有哪些技术框架可以借鉴

在开发盲盒App时&#xff0c;技术框架的选择对于应用的性能、稳定性和用户体验都至关重要。以下是几个可以借鉴的技术框架&#xff0c;它们在不同方面提供了优势&#xff0c;并且结合了参考文章中的相关信息&#xff1a; 前端技术框架 微信小程序框架&#xff1a; 优点&#…

Arrays与Lambda

Arrays 默认排序&#xff1a; 按照指定规则排序&#xff1a; 细节&#xff1a; 底层原理&#xff1a; 代码实现&#xff1a;o1-o2:升序排列 o2-o1:降序排列 Lambda表达式&#xff1a;简化匿名内部类方法 函数式编程&#xff1a; 格式&#xff1a; 总结&#xff1a; …

关于2024年第一批计算机程序设计员(Python)四级、三级职业技能等级证书认证考试的通知

计算机程序设计员&#xff08;Python&#xff09;详细介绍 报名详细信息&#xff1a; 报名截止时间&#xff1a;2024年6月05日 ~ 2024年6月18日 准考证下载时间&#xff1a;2023年6月24日 ~ 6月28日 考试时间&#xff1a;2024年6月29日 四级&#xff1a;08:30~12:30&#…

UDP的组播发送与接收C语言测试和nc接收组播测试

组播这个东西&#xff0c;很多年前用过一次。本身的原理不复杂&#xff0c;未知的是使用的环境&#xff0c;受使用环境的影响有多大&#xff0c;还是那句废话&#xff0c;具体问题具体分析。 发送端代码multicast.c #include <stdio.h> #include <stdlib.h> #…

k8s 自动伸缩机制-------HPA 超详细解读

目录 在K8s中扩缩容分为两种&#xff1a; 前言 弹性伸缩是根据用户的业务需求和策略&#xff0c;自动“调整”其“弹性资源”的管理服务。通过弹性伸缩功能&#xff0c;用户可设置对定时、周期或监控策略&#xff0c;恰到好处地增加或减少“弹性资源”&#xff0c;并完成实例…

最小生成树prim算法详解

prim算法解决的是最小生成树问题&#xff0c;即在一个给定的无向图G中求一棵生成树T&#xff0c;使得这棵树拥有图G中的所有顶点&#xff0c;且所有边都是来自图G中的边&#xff0c;并且满足整棵树的边权之和最小。 prim算法的基本思想是对图G设置集合S来存放已被访问的顶点&a…

适用于 macOS 的最佳免费数据恢复软件

升级到 macOS 后&#xff0c;它可以帮助您从 HDD、SSD、存储卡、USB 闪存驱动器、数码相机或其他存储介质设备中完全恢复已删除、格式化或无法访问的数据。 当 macOS Monterey 用户寻找数据恢复解决方案时&#xff0c;免费数据恢复软件始终是一个不错的选择。实际上&#xff0…

【Qt】chartView设置橡皮筋效果(RubberBand)

1. 效果 2. 代码 QChartView* chartView new QChartView();chartView->setRubberBand(QChartView::RectangleRubberBand);