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

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页面中得此方法,为我们表单区域中配置得方法名,用于操作之后刷新列表
  });
};

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

念念不忘智能编程,必有回响CodeArts Snap

开发者的碎碎念 之前在【我与ModelArts的故事】的文章里&#xff0c;分享过我学习新技术的经历&#xff0c;主要有&#xff1a; 自主学习&#xff0c;比如自学Python&#xff1b;借助华为云的产品边用边学。 在围着"编程学习"这座城池&#xff0c;外围来来回回转了…

AI部署开发指南:用vs2019编译OnnxRuntime-v1.16.2

前言 要详细了解一个系统的部署&#xff0c;对其源码进行调试可能是最好的办法。 Pytorch的部署几经改版&#xff0c;最大的特点依然是不稳定&#xff0c;或者使用libtorch这种稳定但优化力度不够的部署方案。 而稳定且通用的方案&#xff0c;目前仍然是export to onnx的办法…

HCIP:不同VLAN下实现网络互相通信

配置pc1 配置pc2 配置pc3 将sw1划分到vlan3 将sw3划分到vlan3 在sw1上进行缺省 将sw1上&#xff08;g0/0/1&#xff09;的untagged改成 1 3 则在pc1上ping pc2可通 在sw1上进行缺省 在sw3上&#xff08;e0/0/1&#xff09;打标记 则在pc1上ping pc3可通&#xff08;实现互通&am…

python08-Python的数字类型之复数类型

复数是一个数学上的概念&#xff0c;这节不懂的可以绕过&#xff0c;实际场景很少用到 Python甚至可以支持复数&#xff0c;复数的虚部用j或者J来表示 如果需要对复数进行计算&#xff0c;可以导入Python的cmath模块&#xff08;c代表complex&#xff09;&#xff0c;如下面的…

DC电源模块的未来发展趋势

BOSHIDA DC电源模块的未来发展趋势 未来DC电源模块的发展趋势可以预测如下&#xff1a; 1. 高效能&#xff1a;随着绿色能源的需求增长&#xff0c;DC电源模块将更加注重高效能的设计&#xff0c;以减少能源消耗&#xff0c;并提高整体系统的能源利用率。 2. 高稳定性&#…

对 MODNet 网络结构直接剪枝的探索

文章目录 1 写在前面2 遇到问题3 解决方案4 探索过程4.1 方案一4.2 方案二4.3 方案三 5 疑惑与思考5.1 Q15.2 Q2 1 写在前面 在前面的文章中&#xff0c;笔者与小伙伴们分享了对 MODNet 主干网络部分以及其余分支分别剪枝的探索历程&#xff0c;即先分解、再处理、后融合的手法…

【JSON2WEB】03 go的模板包html/template的使用

Go text/template 是 Go 语言标准库中的一个模板引擎&#xff0c;用于生成文本输出。它使用类似于 HTML 的模板语言&#xff0c;可以将数据和模板结合起来&#xff0c;生成最终的文本输出。 Go html/template包实现了数据驱动的模板&#xff0c;用于生成可防止代码注入的安全的…

基于node.js和Vue3的医院挂号就诊住院信息管理系统

摘要&#xff1a; 随着信息技术的快速发展&#xff0c;医院挂号就诊住院信息管理系统的构建变得尤为重要。该系统旨在提供一个高效、便捷的医疗服务平台&#xff0c;以改善患者就医体验和提高医院工作效率。本系统基于Node.js后端技术和Vue3前端框架进行开发&#xff0c;利用其…

“趣味夕阳,乐享生活”小组活动(第二节)

立冬以来&#xff0c;天气日渐寒冷&#xff0c;气温变化较大&#xff0c;各种传染病多发&#xff0c;为进一步增强老年人冬季预防传染病保健意识及科学合理健康的生活方式。近日&#xff0c;1月22日&#xff0c;南阳市人人社工灌涨站开展了“趣味夕阳&#xff0c;乐享生活”小组…

Maps基础知识

什么是Maps&#xff1f; 在JavaScript中&#xff0c;Map是一种用于存储键值对的数据结构。它类似于对象&#xff0c;但有一些区别。 Map对象允许任何类型的值作为键&#xff08;包括对象、函数和基本数据类型&#xff09;&#xff0c;而对象只能使用字符串或符号作为键。这使得…

Python - SnowNLP 情感分析与自定义训练

目录 一.引言 二.SnowNLP 情感分析 1.安装 SnowNLP 2.测试 SnowNLP 三.SnowNLP 自定义训练 1.数据集准备 2.训练与保存 3.模型替换 4.模型测试 5.SnowNLP 原理 ◆ Bayes 公式 ◆ 先验概率 ◆ 后验概率 ◆ 情感模型 四.总结 一.引言 SnowNLP 是一个基于 Python …

Chrome 插件调试

http://blog.haoji.me/chrome-plugin-develop.html#te-bie-zhu-yi-background-de-bao-cuo 手把手&#xff1a;Chrome浏览器开发系列(四)&#xff1a;调试我们开发的插件 - 掘金

5_机械臂运动学基础_矩阵

上次说的向量空间是为矩阵服务的。 1、学科回顾 从科技实践中来的数学问题无非分为两类&#xff1a;一类是线性问题&#xff0c;一类是非线性问题。线性问题是研究最久、理论最完善的&#xff1b;而非线性问题则可以在一定基础上转化为线性问题求解。 线性变换&#xff1a; 数域…

第12章_集合框架(Collection接口,Iterator接口,List,Set,Map,Collections工具类)

文章目录 第12章_集合框架本章专题与脉络1. 集合框架概述1.1 生活中的容器1.2 数组的特点与弊端1.3 Java集合框架体系1.4 集合的使用场景 2. Collection接口及方法2.1 添加2.2 判断2.3 删除2.4 其它 3. Iterator(迭代器)接口3.1 Iterator接口3.2 迭代器的执行原理3.3 foreach循…

基于 pytorch-openpose 实现 “多目标” 人体姿态估计

前言 还记得上次通过 MediaPipe 估计人体姿态关键点驱动 3D 角色模型&#xff0c;虽然节省了动作 K 帧时间&#xff0c;但是网上还有一种似乎更方便的方法。MagicAnimate 就是其一&#xff0c;说是只要提供一张人物图片和一段动作视频 (舞蹈武术等)&#xff0c;就可以完成图片…

【模拟】力扣1576(Java)

题目 class Solution {public String modifyString(String ss){char[] s ss.toCharArray();int n s.length;for(int i0;i<n;i){if(s[i] ?){for(char cha;ch<z;ch){if((i 0 || ch!s[i-1])&&(i n-1 || ch! s[i1])){s[i] ch;break;}}}}return String.valu…

forEach()方法跳出循环

forEach方法如何跳出循环_foreach跳出循环-CSDN博客 forEach方法遍历数组&#xff0c;每次遍历都根据条件判断&#xff0c;当条件符合时&#xff0c;就跳出整个遍历&#xff0c;不再继续遍历后面的元素 forEach()方法跳出整个循环遍历 forEach方法一般用抛出异常的方式跳出整…

原生图数据库实现原理解析

目录 前言1 实现原理&#xff1a;免索引邻接1.1 免索引邻接构建1.2 查询性能保障 2. 物理存储实现2.1 节点存储文件2.2 关系边存储文件2.3 属性数据的存储处理 3. RDF图模型和属性图模型的比较3.1 RDF图模型3.2 属性图模型 4. 查询语言比较4.1. SPARQL4.2 Cypher4.3 Gremlin4.4…

摄像机视角的切换_unity基础开发教程

摄像机视角的切换 前言一、场景搭建二、脚本编辑三、脚本挂载四、运行效果结语 前言 我们在游戏中经常可以看到游戏视角的切换&#xff0c;今天我们就做一个视角切换的小demo&#xff0c;学会之后可以将其融入到自己的游戏制作当中。 话不多说&#xff0c;我们现在开始&#xf…

Unity中实现合理塔防寻路机制

前言 在一款TD游戏中,最重要的单位就两大类:防御塔(Tower)和敌人单位(Enemy)。在处理敌人单位的AI行为时,最基本也是最重要的就是自动寻路。在各式TD游戏中,防御塔的攻击方式以及敌人单位的Buff机制往往是能做出差异化的地方;而在寻路问题上,几乎是没有差异的,面对…