JeecgBoot 3.6.1实现Modal对话框,以为审核数据为例

news2024/12/29 13:01:31

JeecgBoot 3.6.1实现Modal对话框

vue使用的是3.0版本

文章目录

  • JeecgBoot 3.6.1实现Modal对话框
  • 前言
  • 一、列表页面关键代码示例
  • 二、textAuditModal.vue代码示例
  • 三、test.api.ts
  • 总结

前言

在工作中,有一个需求,要求,在数据列表页,实现点击最右侧的审批按钮,出现弹窗,弹窗内容有本条数据的所有内容和审核选项,选项值有【审核通过】【审核驳回】两个选项,如果点击【审核驳回】按钮,下方要出现驳回原因录入框,示例图片如下:

图片示例:图一为列表,图二为选择【审核驳回】,图三为选择【审核通过】
在这里插入图片描述
点击审核示例(此处页面样式有点问题):
在这里插入图片描述
在这里插入图片描述

一、列表页面关键代码示例

<template>
  <div>
	<!--操作栏-->
	<!-- 此处就是我们列表右侧所要呈现出来的点击按钮-->
      <template #action="{ record }">
        <TableAction :actions="getTableAction(record)" />
      </template>
    <!-- 审批表单 -->
    
    <test-modal @register="register" @success="testFun" v-bind="$attrs"></purchase-order-process-audit-modal>
  </div>
</template>


<script lang="ts" setup>
	import {******} // 此处就是我们项目当中的一些引用
	
	// 此处有个比较关键的点,我们要再次引入我们所要创建的modal对话框模板
	// 这就是我们的modal模板它跟上边的test-modal相对应,
	// 最好使用快捷键来写这两处代码,以防止错误发	生,并且再此之前要把textAuditModal.vue新建好
	import testModalfrom '@/views/*/textAuditModal.vue';
	// 接下来就是一些简单的注册modal,如果有不懂,请参照一个简单的CREUD就会明白
	 const [register, { openModal: openModal1, closeModal: closeModal1, setModalProps }] = useModal(); // 这个需要注意,为我们下边得代码服务
	//注册table数据 也是同理
	
/**
   * 操作栏
   * 此处方法就是控制我们右侧的按钮是否显示,或者要显示什么
   * 详情页得方法不做阐述
   */
  function getTableAction(record) {
    if (record.state == 2) {
      return [
        {
          label: '详情',
          onClick: testDetail.bind(null, record),
        },
        {
          label: '审批',
          onClick: testAudit.bind(null, record),
        },
      ];
    } else {
      return [
        {
          label: '详情',
          onClick: testDetail.bind(null, record),
        },
      ];
    }
  }


  /**
   * 审批
   * 此处我们需要额外注意,我们在此要新建一个openModal1 因为项目中自带封装好得新增、编辑modal满足不		     了我们现在的开发场景
   */
  function testAudit(record: Recordable) {
    openModal1(true, {
      record, // 数据
      isUpdate: true,// 在 JeecgBoot 中,isUpdate 是用于判断当前操作是否为更新(修改)数据的一个标识
      showFooter: true,// 是一个用于控制页面底部区域显示与隐藏的标识,此处我们需要开着,查看得时候为false
    });
  }


/**
   * 此处为弹框页面点击确定后,通过本页面@success中绑定的方法进行回调
   */
  function testFun(data) {// 此处为我们表单区域@success中所写得方法
    examineTestEdit(data, handleSuccess);
  }

</script>

/**
   * 成功回调
   */
  function failSuccess() {
    (selectedRowKeys.value = []) && reload();
  }

二、textAuditModal.vue代码示例

<template>
  <BasicModal v-bind="$attrs" @register="registerModal" :width="800" title="审批详情" @ok="submitTest">
    <BasicForm @register="registerForm" />
    <div>
      <a-form>
        <a-row>
          <a-col flex="2">
            <a-form-item label="审批状态" :label-col="{ style: { width: '100px', fontWeight: 'bolder' } }">
              <a-select ref="select" v-model:value="state" :options="stateOptions"></a-select>
            </a-form-item>
          </a-col>
        </a-row>

        <a-row type="flex" v-show="state == 4">
          <a-col flex="2">
            <a-form-item label="驳回原因:" :label-col="{ style: { width: '100px', fontWeight: 'bolder' } }">
              <a-textarea
                v-model:value="reason"
                :maxlength="100"
                aria-placeholder="请输入驳回原因"
                :auto-size="{ minRows: 4, maxRows: 6 }"
                style="border: 1px solid #d9d9d9"
                wrap="soft"
              ></a-textarea>
            </a-form-item>
          </a-col>
        </a-row>
      </a-form>
    </div>
  </BasicModal>
</template>

<script lang="ts" setup>
  import {******} // 此处就是我们项目当中的一些引用
  // Emits声明 请参照新增编辑modal模板中得写法
  //表单赋值
  const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
    //重置表单 请参照新增编辑modal模板中得写法
    formData.id = data.record.id;// 这块要着重注意,不然可能拿不到数据ID
  });

  // 表单赋值 审核状态state:1_审核通过 2_审核不通过
  const state = ref('1'),
    reason = ref(''),
    testId = ref('');
  const stateOptions = ref<SelectProps['options']>([
    { value: '1', label: '审批通过' },
    { value: '2', label: '审批驳回' },
  ]);

  const userStore = useUserStore();
  const formData = reactive<Record<string, any>>({
    state: state,
    reason: reason,
    id: testId,
  });

  /**
   * 弹框中点击确定按钮
   */
  function submitTest() {
    closeModal();//关闭弹窗
    //回调父页面的@success绑定的方法
    emit('success', formData);
  }
</script>

三、test.api.ts

import {******} // 此处就是我们项目当中的一些引用
enum Api {// 此处为我们得后端API接口地址
  examineTestEdit = '/testDemo/examineTestEdit',
}

/**
 * 审核
 * @param params
 */
export const examineTestEdit = (params, handleSuccess) => {
  return defHttp.post({ url: Api.examineTestEdit, params }, { joinParamsToUrl: true }).then(() => {
    failSuccess();// 此处会回调到我们List页面中得此方法,为我们表单区域中配置得方法名,用于操作之后刷新列表
  });
};

总结

道阻且长,一起加油哦!!!

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

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

相关文章

容联云入选中国大模型产业新锐企业TOP30

近日&#xff0c; WIM 2023&#xff08;世界创新者年会&#xff09;发布《2023中国大模型产业创新服务商TOP 30》名单&#xff0c;评选出30家2023年中国大模型领域做出卓越贡献的企业&#xff0c;凭借垂直行业大模型“赤兔大模型”展现出的创新力与商业落地速度&#xff0c;容联…

springboot项目中使用iframe引入页面

一、 <iframe name"uploadPage" src"/uploadImg.html" width"100%" height"50" marginheight"0" marginwidth"0" scrolling"no" frameborder"0"></iframe> 前提是将要引入的页面…

2012-2022年全国各省数字经济相关指标数据合集(18个指标)

2012-2022年全国各省数字经济相关指标数据合集&#xff08;18个指标&#xff09; 1、时间&#xff1a;2012-2022年 2、指标&#xff1a;地区、year、互联网接入端口数、互联网宽带接入用户数、互联网域名数、移动电话普及率、长途光缆线路长度&#xff08;万公里&#xff09;…

Linux 文件:IO接口详解及实操

一、C语言中的文件IO读写操作 在c语言文件中&#xff0c;创建、打开、读、写操作可以通过如下的代码进行&#xff1a; 1.1写文件 通过w指令对文件进行写入操作时&#xff0c;编译器会先将文件内容清空然后重新写入。 #include <stdio.h> #include <string.h> i…

山体滑坡监测预警系统-gnss位移监测站

GNSS山体滑坡位移监测站是一种利用全球导航卫星系统&#xff08;GNSS&#xff09;进行山体滑坡位移监测的设备。它通过接收和处理GNSS卫星信号&#xff0c;能够实时监测山体的位移变化&#xff0c;并将数据传输到后端系统进行分析和处理。 GNSS山体滑坡位移监测站具有高精度、…

基于springboot+vue的师生健康信息管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

java web mvc-03-JFinal

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails JFinal JFinal 是基于 Java 语言的极…

CSC7225

CSC7225 为高性能电流模式 PWM 开关电源控制器&#xff0c;满足绿色环保标准&#xff1b;广泛适用于经济型开关电源&#xff0c;如 DVD、机顶盒、传真机、打印机、LCD 显示器等。CSC7225 采用 DIP-8 封装。 CSC7225主要特点  CSC7225内置 700V 高压功率开关管&#xff0c;外…

kubeadm 安装k8s集群后,master节点notready问题解决方案

使用kubeadm 安装k8s集群后&#xff0c;加载calico cni 网络组件后&#xff0c;master节点notready问题 表现为&#xff1a; 使用命令查看日志&#xff1a;journalctl -f -u kubelet 报错如下&#xff1a; Failed to start ContainerManager failed to initialize top level…

通过代理服务器的方式解决跨域问题

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈 这里以本地访问https://heimahr.itheima.net/api/sys/permission接口为列子 Node.js 代理服务器 (server.js) 本次考虑使用JSONP或CORS代理来…

服务器配置优化句柄数量

当部署新的服务器环境时&#xff0c;需要对服务器的句柄数进行一次优化&#xff0c; 否则当用户量稍微增大可能会导致系统问题。 系统句柄数量 查看系统最大文件句柄数&#xff0c;执行命令&#xff1a;cat /proc/sys/fs/file-max&#xff0c;如果最大句柄数不能满足要求&am…

前端项目对接protobufjs的时候,踩坑总结

Protobuf&#xff08;Protocol Buffers&#xff09;是一种用于序列化结构化数据的语言无关、平台无关、可扩展的机制。在JS/TS项目中&#xff0c;使用WebSocket与Protobuf可以实现高效的通信和数据传输。protobufjs官方仓库:https://github.com/protobufjs/protobuf.js 安装pro…

列表的创建与删除

Python 中列表可以动态地添加、修改和删除元素&#xff0c;是 Python 编程中不可或缺的一部分。本文将介绍如何使用 Python 创建和删除列表&#xff0c;以及常用的方法和技巧。 创建列表 在 Python 中&#xff0c;我们可以使用一对方括号 [ ] 来创建一个空列表&#xff0c;也可…

瓦片地图编辑器——实现卡马克卷轴的编辑,键盘控制游戏移动和鼠标点击游戏编辑通过同一个视口实现。

左边是游戏地图编辑区&#xff0c;右边是地图缓冲区&#xff0c;解决了地图缓冲区拖动bug&#xff0c;成功使得缓冲区可以更新。 AWSD进行移动 鼠标左右键分别是绘制/拖动 按F1健导出为mapv3.txt F2清空数组 打印的是游戏数组 easyx开发devcpp 5.11 easyx20220922版本 #…

《GreenPlum系列》GreenPlum初级教程-GreenPlum详细入门教程

文章目录 GreenPlum详细入门教程第一章 GreenPlum介绍1.MPP架构介绍2.GreenPlum介绍3.GreenPlum数据库架构4.GreenPlum数据库优缺点 第二章 GreenPlum单节点安装1.Docker创建centos容器1.1 拉取centos7镜像1.2 创建容器1.3 进入容器1.4 容器和服务器免密操作1.4.1 生成密钥1.4.…

手动导入jar包到Maven的解决方案(简单有效!)

想要导入一个jar包到项目中&#xff0c;这个jar包在Maven中没有可以尝试以下方式。 第一步 先找到你maven的本地仓库&#xff0c;我的仓库就在这里&#xff0c;你可以根据你安装的maven找到你的目录 第二步 根据坐标创建文件夹。 这个依赖modbus4j.jar&#xff0c;Maven远…

TCP三握四挥(面试需要)

TCP建立连接需要三次握手过程&#xff0c;关闭连接需要四次挥手过程 三次握手 从图中可以看出&#xff0c;客户端在发起connect时&#xff0c;会发起第一次和第三次握手。服务端在接收客户端连接时&#xff0c;会发起第二次握手。 这三次握手&#xff0c;都会通过SYNACK的方式…

论文翻译:On Bringing Robots Home

On Bringing Robots Home 关于引入机器人到家庭 文章目录 On Bringing Robots Home关于引入机器人到家庭1 Introduction1 引言2 Technical Components and Method2 技术组件与方法2.1 Hardware Design2.1 硬件设计2.2 Pretraining Dataset – Homes of New York2.2 预训练数据…

AI研究必备!这些网站你不可不知

AI研究必备&#xff01;这些网站你不可不知 在人工智能的浪潮中&#xff0c;你是否感到手足无措&#xff1f;别担心&#xff0c;今天我就为大家揭晓那些AI研究者们的秘籍——他们常用的网站。这些网站不仅包含了丰富的资源&#xff0c;还能让你的研究之路更加顺畅。让我们一起…

numpy 多项式拟合函数polyfit的使用

import numpy as np def fit(x,y,m,w):if len(x)<m:return Falsexishu np.polyfit(x,y,m,ww)p np.poly1d(xishu) # 构造多项式yfit p(x) # 拟合的y值yresid y - yfit # 残差SSresid sum(pow(yresid, 2)) # 残差平方和SStotal len(y) * np.var(y) # 总体平均方差if SSt…