若依前后端分离发布富文本框内容 | uni-app微信小程序展示富文本框内容

news2025/7/18 21:14:20

微信小程序端引入富文本样式
富文本提交图片json error

一、展示示例:

1.PC端前端发布界面

可以设置文字大小,居中,可以插入图片,设置图片大小,居中。
在这里插入图片描述

2.小程序端展示

在这里插入图片描述

二、基于若依框架踩坑和实现

1.数据库字段设计

在这里插入图片描述

2.利用若依框架代码生成

在定义的富文本框字段【显示类型】需要选择【富文本控件】
在这里插入图片描述

3.富文本框添加图片踩坑

3.1

**遇到问题:**生成代码后会在添加列表的弹框中出现富文本框,但是在富文本中上传图片的时候会显示json错误,无法上传图片包括富文本下面上传封面图片的时候也会出现无法上传图片的情况。
解决方法:
在application.yml文件中把不做仿xss攻击的路径加上
在这里插入图片描述来源:
富文本提交图片json error

3.2

遇到问题:
富文本下面上传封面图片的时候会出现无法上传图片的情况,图片闪一下就消失了。
解决办法:
把此文件中的这一段注释掉即可。
在这里插入图片描述

3.3

**遇到问题:**富文本框中的图片插入后过大,没办法改变大小
**解决办法:**通过阅读博客【若依(ruoyi)前后端分离 quill-editor 实现图片上传拖拽修改图片大小】解决
若依(ruoyi)前后端分离 quill-editor 实现图片上传拖拽修改图片大小

具体解决方法:
步骤1:在vue.config.js 文件中添加 一下内容
在这里插入图片描述var webpack = require('webpack');
plugins: [ new webpack.ProvidePlugin({ 'window.Quill': 'quill/dist/quill.js', 'Quill': 'quill/dist/quill.js' }), ]

步骤2:
在terminal终端命令行输入:

npm install quill-image-drop-module --save
npm i quill-image-resize-module --save 
npm install quill-image-extend-module --save

步骤3:在一下内容按照图片位置放在指定位置

import { ImageDrop } from 'quill-image-drop-module'
Quill.register('modules/imageDrop', ImageDrop);
import { ImageExtend } from 'quill-image-extend-module'
// quill-image-resize-module该插件是用于控制上传的图片的大小
import ImageResize from 'quill-image-resize-module'
Quill.register('modules/imageResize', ImageExtend);
Quill.register('modules/imageResize', ImageResize);
imageDrop: true,      //图片拖拽
          imageResize:{ // 图片缩放比例
            displayStyles:{
              backgroundColor:'black',
              border:'none',
              color:'white'
            },
            modules:['Resize','DisplaySize', 'Toolbar'] // Resize 允许缩放, DisplaySize 缩放时显示像素 Toolbar 显示工具栏
          },

在这里插入图片描述在这里插入图片描述以上亲测可用。

4.基于uni-app的微信小程序端展示富文本框

4.1首先用.js文件从后端获取数据

export function listHealthyLife(query) {
  return request({
    url: '/system/healthyLife/list',
    method: 'get',
    params: query
  })
}

4.2新建页面,不要忘记在page.json中注册
新建列表页面:

<template>
  <view class="page">
    <view class="box_1">
      <view class="list_1">
        <view class="list-items_1-0" v-for="(item, key) in listHealthyLife" :key="key"  @click="showDetails(item.imageText)">
          <view class="group_6-0">
			  <image class="image_2-0" :src="item.homePage" mode="aspectFill"></image>
            <!-- <img src="D:\ruoyi\uploadPath\upload\2022\06\21\11.jpg" class="image_2-0"></img> -->
            <view class="text-wrapper_3-0">
              <text lines="1" class="text_4-0">{{item.title}}</text>
              <text lines="1" class="text_5-0">{{item.updateTime}}</text>
            </view>
          </view>
        </view>
        <uni-pagination style="margin-top: 50rpx;" v-show="total>0" :total="total" :current="current" :pageSize="pageSize" @change="handlePage">
        </uni-pagination>
      </view>
    </view>
  </view>
</template>
<script>
	import {listHealthyLife} from "@/api/system/healthyLife.js"
export default {
  data() {
    return {
      constants: {},
	  listHealthyLife: [],
	  // 分页参数
	  total: 0,
	  current: 1,
	  pageSize: 7,
    };
  },
  created() {  
  this.getList();
  },
  methods: {
	  getList() {
	  	listHealthyLife({pageNum: this.current, pageSize: this.pageSize}).then(response => {
	  		this.listHealthyLife = response.rows;
	  		this.total = response.total;
	  		console.log(this.total)
	  	});
	  },
	  	  // 触发跳转
	  	  showDetails(index) {
	  		uni.navigateTo({
	  		url: '/pages/jiankangshenghuo/details?detail='+encodeURIComponent(JSON.stringify(index))
	  		});
		  // 分页点击事件
		  handlePage(params) {
		  	console.log(params)  //可以打印看看params
		  	this.current = params.current;
		  	this.getList() // 点击的时候去请求查询列表
		  },
  }
};
</script>

新建详情页面:

<template>
	<view class="page">
		<view class="friendsCircle-content">
			<rich-text :nodes="article" class="ql-editor"></rich-text>
		</view>
	</view>
</template>
<script>
	import '@/components/quillCSS/quill.bubble.css'
	import '@/components/quillCSS/quill.core.css'
	import '@/components/quillCSS/quill.snow.css'
	export default {
		components: {
		    uParse  //注册组件
		  },
		data() {
		  return {
			      article:'',
		  };
		},
	onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数
		 this.article=JSON.parse(decodeURIComponent(option.detail));
		 console.log(this.article)
		},
		methods:{
		}
	}
</script>

**遇到问题:**但是此时,会有的富文本样式显示不出来的情况,所以需要再修改一下
解决办法:
步骤1:
在ruoyi-ui中找到quill源文件,在dist目录下可以看到
quill.bubble.css
quill.core.css
quill.snow.css
以上三个文件,把这三个文件复制到一个文件夹中,打开这三个文件把所有带*号的部分都删除
步骤2:
在微信小程序详情页面应用这三个文件

/*Vue-Quill-Editor样式*/
@import 'mdui/quill.bubble.css';
@import 'mdui/quill.core.css';
@import 'mdui/quill.snow.css';

步骤3:
在小程序富文本中加入 class=“ql-editor”,如下:

<rich-text :nodes="article" class="ql-editor"></rich-text>

再次运行即可。

参考
Vue-Quill-Editor编辑器的富文本,在uniapp开发的小程序显示错误

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

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

相关文章

RabbitMQ【直连、主题、扇形交换机实战】

目录 1. 直连交换机&#xff08;Direct实战&#xff09; provider生产者&#xff08;publisher&#xff09; consumer消费者 2. 主题交换机&#xff08;Topic实战&#xff09; provider生产者&#xff08;publisher&#xff09; consumer消费者 3. 扇形交换机&#xff08;Fa…

3.71 OrCAD新建原理图时,每一个类目的含义是什么?OrCAD软件怎么显示元器件的封装名称?

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

第四章:Java琐事

乐观锁和悲观锁悲观锁乐观锁八种案例演示synchronized到底锁的是什么字节码角度分析 Synchronizedsynchronized 同步代码块synchronized 同步方法为什么任意一个对象都可以是锁&#xff1f;公平锁和非公平锁为什么会有公平锁/非公平锁的设计&#xff1f;为什么默认是非公平&…

计算机毕业设计jspKTV点歌系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP KTV点歌系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发&#xff0c;数据库为Mysql&#xff0c;使用jav…

Transformer Fusion for Indoor RGB-D Semantic Segmentation非官方自己实现的代码

声明&#xff1a;文章没有官方的代码&#xff0c;这里自己浅显的分析一下。 首先看一下encoder&#xff0c;就是swin transformer&#xff0c;假设RGB的维度为(1,3,480,480),Depth维度为(1,1,480,480)。维度分别变为**(1,64,120,120)—>(1,64,120,120)—>(1,128,60,60)—…

关于conda、虚拟环境、镜像通道、pip、pycharm解释器配置的一些总结

目录conda与虚拟环境相关命令查看当前存在哪些虚拟环境创建虚拟环境克隆虚拟环境删除指定虚拟环境删除指定虚拟环境中某个包设置国内镜像添加Anaconda的TUNA镜像添加USTC仓库镜像设置搜索时显示通道地址Conda 附加库查看channels恢复默认镜像&#xff08;即删除手动配置的全部镜…

TCP/IP五层协议栈(1)

1.应用层协议 应用层协议相对来说比较简单,因为其他层的协议属于硬件上的.相对程序员来说已经固定了.不需要自己设计和实现了. 设计应用层协议有两个要点 要约定好传输的数据还要约定好数据的格式 1.1.协议模板 虽说可以自己设计,不过当前已经有很多模板被大佬设计好了.这…

51单片机语音进店迎宾器统计进店人数可定制播报铃声(可选PCB)

实践制作DIY- GC0115-语音进店迎宾器统计进店人数 一、功能说明&#xff1a; 基于51单片机设计-语音进店迎宾器统计进店人数 功能介绍&#xff1a; 硬件组成&#xff1a;STC89C52&#xff08;AT89C51/52&#xff09;单片机串口语音播报模块2个红外对射传感器一个按键&#x…

C++不知算法系列之高精度数值处理算法

1. 前言 什么是高精度数值处理算法&#xff1f; 高精度数值指因受限于计算机硬件的制约&#xff0c;超过计算机所能存储范围的数值。既然不能存储&#xff0c;更谈不上运算。 对此类数值的加、减、乘、除运算需要提供针对性的算法方能获取到结果。此类算法的设计思路因有别于…

VMware环境配置

文章目录一、环境配置1、修改主机名&#xff0c;然后切换到root用户2、确认主机网关a.确认windows主机网关b.确认虚拟机主机网关3、修改网络配置4、设置DNS域名解析的配置文件resolv.conf。5、修改hosts文件6、重启网络服务7、验证网络服务a.虚拟机ping百度b.主机ping虚拟机二、…

vscode使用restClient实现各种http请求

vscode使用restClient实现各种http请求 一&#xff0c;安装插件 首先&#xff0c;我们要在vscode的扩展中&#xff0c;搜索rest Client&#xff0c;然后安装它&#xff0c;这里我已经安装过了。 安装后&#xff0c;我们就可以使用rest client插件进行http各种操作了。 二&a…

MySQL---权限控制和用户、角色管理详解

目录 一、MySQL用户登录 二、用户管理 三、权限控制 四、角色管理 一、MySQL用户登录 一般在本机上我们的登录命令&#xff1a; mysql -u root -p密码这里介绍命令的作用&#xff1a; -u 指定用户名 -h 指定主机地址&#xff08;默认为localhost&#xff09; -p 指定用…

CHRONY - 时钟同步

一、同步公网时间源 安装chrony: yum install chrony -y 查看chrony的重要配置文件:rpm -ql chrony 修改chrony配置文件: vim /etc/chrony.conf 查看修改了的配置文件 egrep -v "^#|^$" /etc/chrony.conf

Baklib知识库|为什么知识共享工具对减少内部知识缺口至关重要

你的企业是否存在知识缺口&#xff1f; 知识缺口——没有对关键知识进行研究和记录&#xff0c;以有效地传播信息&#xff0c;并教育企业内外的用户——可能是寻求生产率最大化并最终实现利润增长的公司的一个关键缺陷。知识&#xff08;或数据、关键信息等&#xff09;是你的…

你一定要知道的四个程序员接外包的网站,悄悄把技术变现!

说起程序员接外包的网站&#xff0c;你在网上一搜发现数不胜数&#xff0c;但真正有用的却很少。然后你想快速的找到几个靠谱的网站&#xff0c;去看了看接外包的攻略&#xff0c;你会发现排雷的又数不胜数。一时间你还真不知道要选哪一个。 接下来就为大家推荐几个我认为比较…

165 pbi-utils 使用文档

165 pbi-utils 使用文档 一、背景 先来说一下为什么会有 pbi-utils 这个小工具吧。在我日常做演示的示例文件的时候&#xff0c;每次都要重新搞一次 Power BI Desktop&#xff0c;就想能不能像 PPT 模板那样&#xff0c;搞一个模板&#xff0c;然后更专心的去专注内容本身呢&…

网络规划.1.扩展.IP地址规划

第一章 IPv4 Internet中有数百万台以上的主机和路由器&#xff0c;IP 地址可以确切地标识它们。- 一台主机至少拥有一-个IP地址。任何两台主机的IP地址不能相同&#xff0c;但是允许一台主机拥有多个IP地址。如果一台计算机虽然也连入Internet, 使用Internet 的某些功能&#…

Android 开发中原始音频的录播和和自定义音频控制条的讲解及实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留下QQ~~~ 一、原始音频的录播 语音通话功能要求实时传输&#xff0c;如果使用MediaRecorder与MediaPlayer组合&#xff0c;那么只能整句话都录完并编码好了才能传给对方去播放&#xff0c;这个时效性太差。 此时用到音频录制器AudioRecord与音…

[附源码]Python计算机毕业设计二手书交易系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

企业如何提供安全方面的投资回报率?

为什么增加在恢复方面的投资可以提高投资回报率? 所有企业都会认可安全的重要性&#xff0c;但在安全上的投入却经常令人迷惑。 一方面&#xff0c;由于安全威胁在不断变化&#xff0c;所以&#xff0c;安全建设维护需要长期持续大量投入。另一方面&#xff0c;长期大量投入后…