jeecgboot 可编辑表格弹窗富文本框

        最近使用jeecgboot框架的JEditableTable做一个数据维护,有一个需求是用户要录入SQL语句,帮他顺序执行SQL,由于SQL又臭又长,小小的input框没办法显示全,导致每次需要在txt里编辑好了再贴进去,修改也是一样。

       如图,只能显示几个字,多了就看不到了。

        于是乎,测试的胖子提出需求,需要点击弹出一个框,完全显示编辑内容。

        实现步骤:

  1. 给可编辑表格特定类型的框添加事件监听,不能影响可编辑表格现有的功能
  2. 做一个模态框组件,用于显示和编辑
  3. 完善父页面和模态框组件之间的数据通信

        直接上代码:

源码里没有点击事件,需要自己加

 源码里增加一个处理函数,用于父子组件传值

 父组件中的column,增加使能点击事件的属性

 父组件监听子组件的事件

 

父组件处理子组件传过来的数据

最后再新建一个弹窗页面即可

这里使用了compute,用于防止子组件直接修改父组件的值

<template><j-modal:title="title":width="width":visible="visible"switchFullscreen@ok="handleOk":okButtonProps="{ class:{'jee-hidden': disableSubmit} }"@cancel="handleCancel"cancelText="关闭"><div><j-editor v-model="paramCopy"/><!-- <a-textarea v-model="paramCopy" rows="20" placeholder="SQL编辑处" /> --></div></j-modal>
</template><script>import store from '@/store'import { mapGetters } from 'vuex'import { getAction, postAction, getFileAccessHttpUrl } from '@/api/manage'import moment from 'moment'export default {name: 'FckEditerDialog',components: {},props: {paramData: {type: String,default: ''},},computed: {paramCopy: {get() {return this.paramData},set(val) {this.$emit('saveContentInfo', val)   }}},data () {return {title:'编辑器',width:896,visible: false,disableSubmit: false,usercode: '',userId: '',execProcess: '',}},created() {this.userId = this.userInfo().id;},mounted() {},destroyed: function () {},methods: {...mapGetters(['nickname', 'avatar', 'userInfo']),add () {this.execProcess = '';this.visible=true},edit (record) {this.visible=true},close () {this.$emit('close');this.visible = false;},handleOk () {this.$emit('close');this.visible = false;// let data = this.paramData// this.$emit('saveContentInfo', data);// this.paramData = '';},submitCallback(){this.$emit('ok');this.visible = false;},handleCancel () {this.close()this.visible = false;},}}
</script>

 效果图:

 

全屏效果

 

这样保存后会有很多HTML后台处理的时候需要去除,附上工具类:

 

public class FckEditorUtil {public static Pattern p = Pattern.compile("\\s*|\t|\r|\n|");/*** 去掉字符串中的 \t \r \n* <p>* param str** @return* @author Rex*/public static String replaceBlank(String str) {String dest = "";if (str != null) {Matcher m = p.matcher(str);dest = m.replaceAll("");}return dest;}/*** 删除Html标签* <p>* param inputString** @return* @author Rex*/public static String removeHtmlTag(String inputString) {if (inputString == null) {return null;}String htmlStr = inputString; // 含html标签的字符串String textStr = "";try {//定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>";//定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>";// 定义HTML标签的正则表达式String regEx_html = "<[^>]+>";// 定义一些特殊字符的正则表达式 如:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String regEx_special = "\\&[a-zA-Z]{1,10};";textStr = getString(htmlStr, regEx_script, regEx_style, regEx_html, regEx_special);} catch (Exception e) {e.printStackTrace();}return textStr;// 返回文本字符串}private static String getString(String htmlStr, String... args) {Pattern p_script;Matcher m_script;for (String regEx: args) {p_script = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);m_script = p_script.matcher(htmlStr);htmlStr = m_script.replaceAll(" "); // 过滤}return htmlStr;}}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode热题100】--114.二叉树展开为链表

114.二叉树展开为链表 方法一&#xff1a;对二叉树进行先序遍历&#xff0c;得到各个节点被访问到的顺序&#xff0c;利用数组存储下来&#xff0c;然后在先序遍历之后更新每个节点的左右节点的信息&#xff0c;将二叉树展开为链表 /*** Definition for a binary tree node.* …

结构和基本尺寸

声明 本文是学习GB-T 586-2015 船用法兰铸钢止回阀. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了法兰连接尺寸和密封面按 CB/T 4196、GB/T 2501 的船用法兰铸钢止回阀(以下简 称止回阀)的分类和标记、要求、试验方法、检验规…

stm32之雨滴传感器使用记录

一、简介 雨滴传感器、烟雾传感器&#xff08;MQ2&#xff09;、轨迹传感器、干黄管等的原理都类似&#xff0c;都是将检测到的信号通过LM393进行处理之后再输出&#xff0c;可以输出数字信号DO&#xff08;0和1&#xff09;和模拟信号A0。 雨滴传感器在正常情况下是AO输出的是…

2023年10月4日

服务器 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);//此时&#xff0c;服务器已经成功进入监听状态&…

智慧公厕有什么?

智慧公厕作为一种新形态的公共厕所&#xff0c;把智慧化的技术融入到公共厕所的日常使用与管理当中&#xff0c;赋予公共厕所更良好的信息化、数字化、科技化、联网化。 那么&#xff0c;智慧公厕有什么&#xff1f;本文从设施、技术、服务三方面进行快速了解。 首先&#xf…

【Spring Cloud】基于 Feign 实现远程调用,深入探索 Feign 的自定义配置、性能优化以及最佳实践方案

前言 在微服务架构中&#xff0c;服务之间的通信是至关重要的&#xff0c;而远程调用则成为实现这种通信的一种常见方式。在 Java 中&#xff0c;使用 RestTemplate 是一种传统的远程调用方式&#xff0c;但它存在一些问题&#xff0c;如代码可读性差、编程体验不一致以及参数…

【iptables 实战】9 docker网络原理分析

在开始本章阅读之前&#xff0c;需要提前了解以下的知识 阅读本节需要一些docker的基础知识&#xff0c;最好是在linux上安装好docker环境。提前掌握iptables的基础知识&#xff0c;前文参考【iptables 实战】 一、docker网络模型 docker网络模型如下图所示 说明&#xff1…

【LeetCode热题100】--199.二叉树的右视图

199.二叉树的右视图 思路&#xff1a; 使用根->右->左方法进行遍历节点&#xff0c;同时记录层数&#xff0c;将当前层数与记录的层数进行比较&#xff0c;如果当前层数大于记录的层数&#xff0c;添加该元素&#xff0c;若当前层数小于记录的层数&#xff0c;说明该层已…

Java8 Lambda.stream.sorted() 方法使用浅析分享

文章目录 Java8 Lambda.stream.sorted() 方法使用浅析分享sorted() 重载方法一升序降序 sorted() 重载方法二升序降序多字段排序 mock代码 Java8 Lambda.stream.sorted() 方法使用浅析分享 本文主要分享运用 Java8 中的 Lambda.stream.sorted方法排序的使用&#xff01; sorted…

接口测试复习

一。基本概念 接口概念&#xff1a;系统与系统之间 数据交互的通道。 接⼝测试概念&#xff1a;校验 预期结果 与 实际结果 是否⼀致。 特征&#xff1a; 测试⻚⾯测试发现不了的问题。&#xff08;因为&#xff1a;接⼝测试 绕过前端界⾯。 &#xff09; 符合质量控制前移理…

redis5.0配置一主两从三哨兵

基础配置 systemctl stop firewalld && systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/configvi /etc/hosts ip1 node1 ip2 node2 ip3 node3redis 配置一主两从 yum -y install autoconf automake bison byac…

【软考】系统集成项目管理工程师(六)项目整体管理【6分】

一、 前言 1、项目管理三从四得 2、ITO共性总结 1、上一个过程的输出大部分是下-个过程的输入 2、计划和文件是不一样的 (每个输入都有计划和文件) 3、被批准的变更请求约等于计划 4、在执行和监控过程产生新的变更请求(变更请求包括变什么和怎么变&#xff0c;这是变更请求和…