react antd 计算公式 (+-*/)运算,回显

在这里插入图片描述

计算器的源码

在这里插入图片描述
在这里插入图片描述

计算器触发事件

在这里插入图片描述

源码

import { DictValueEnumObj } from '@/components/DictTag';
import { getDeptTree, getFormulaListAll, getListAll } from '@/services/Energy/Metering';import { getListAllInfo, getDepartmentName } from '@/services/Energy/Calculation';
import { ProForm, ProFormText, ProFormTreeSelect } from '@ant-design/pro-components';
import { useIntl } from '@umijs/max';
import { Button, Cascader, Form, Modal, message, Tag } from 'antd';
import { DataNode } from 'antd/es/tree';
import React, { useEffect, useState, useRef } from 'react';
import './index.scss';
import _, { forEach } from 'lodash';
import { json } from 'express';
import Item from 'antd/es/list/Item';
export type RoleFormData = Record<string, unknown> & Partial<API.System.Role>;
let data = [];
export type RoleFormProps = {onCancel: (flag?: boolean, formVals?: RoleFormData) => void;onSubmit: (values: RoleFormData) => Promise<void>;open: boolean;values: Partial<API.System.Role>;menuTree: DataNode[];menuCheckedKeys: string[];statusOptions: DictValueEnumObj;currentRow: DictValueEnumObj;
};
let meterItemIdList: string | string[];
let operatorList: string;
let formula1List: string | string[];
let chanLiangList: any[] = [];
const RoleForm: React.FC<RoleFormProps> = (props) => {const [form] = Form.useForm();const { menuTree, menuCheckedKeys } = props;const [menuIds, setMenuIds] = useState<string[]>([]);const [treeData, setTreeData] = useState<[]>([]);const [treeDataString, setTreeDataString] = useState<any>([]);const [textData, setTextData] = useState<any>('');const [treeData1, setTreeData1] = useState<string[]>([]);const [treeData2, setTreeData2] = useState<string[]>([]);const [formulaBatch, setFormulaBatch] = useState<string[]>([]);const [meterItemIdBatch, setMeterItemIdBatch] = useState<string[]>([]);const [disabled, setDisabled] = useState<boolean>(true);const [disabled1, setDisabled1] = useState<boolean>(true);const [operator, setOperator] = useState<string[]>([]); //回显字典const [operator1, setOperator1] = useState<string>(); //回显字典const [operator2, setOperator2] = useState<string[]>([]); //回显字典const [statusTypeOptions, setStatusTypeOptions] = useState<any>([]);const [meterItemId, setMeterItemId] = useState<string[]>([]); //回显idconst [meterItemIdFormula, setMeterItemIdFormula] = useState<string[]>([]); //回显id// const [meterItemIdFormula, setMeterItemIdFormula] = useState<string[]>([]); //回显idconst [formula1List, setFormula1List] = useState<any>([]); //回显idconst [meterItemIdList, setMeterItemIdList] = useState<string[]>([]); //回显idconst [statusOptions, setStatusOptions] = useState<string[]>([]);const [gongshi, setGongshi] = useState<string[]>([]);const cascaderCatergoryRef = useRef(null);const displayRender = (labels: string[]) => labels[labels.length - 1];const [roleName, setRoleName] = useState<string[]>([]);// const { statusOptions } = props;const childFun1 = (res: any) => {// let children = [];for (let itemChilf of res.children) {itemChilf['label'] = itemChilf.meterName;itemChilf['value'] = itemChilf.id;itemChilf['key'] = itemChilf.id;itemChilf['children'] = itemChilf.tbMeterInfoVoList || [];childFun1(itemChilf);}};const childFun = (res: any) => {if (res.tbMeterInfoVoList != null) {const opts: DictValueEnumObj = {};for (let itemChilf of res.tbMeterInfoVoList) {opts[itemChilf.id] = {text: itemChilf.id,label: itemChilf.meterName,value: itemChilf.id,tbMeterInfoVoList: childFun(itemChilf),};}return opts;}return;};const getlistFormula = () => {getFormulaListAll().then((res) => {// console.log(res);if (res.code === 200) {const opts2: DictValueEnumObj = {};res.data.map((item: any) => {item['label'] = item.indexName;item['value'] = item.id;opts2['B' + item.id] = {text: item.indexName,label: item.indexName,value: 'B' + item.id,key: 'B' + item.id,idString: item.idString,formulaString: item.formulaString,};return opts2;});setTreeData2(opts2);}});};const operaIndexOf = (itemList: any, key: any) => {console.log(itemList, key);for (let item of itemList) {if (item.indexOf('+'

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

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

相关文章

蓝牙网关在物联网领域三大应用

蓝牙网关在物联网的应用主要包括物联网室内定位、物联网数据采集、物联网连接控制三大应用领域&#xff0c;以下对三大应用领域做详细解释。 一、物联网蓝牙室内定位 蓝牙网关在室内定位的应用包括人员定位和资产设备定位两大方向。 1、人员定位 蓝牙网关安装于室内的特定地…

护眼灯哪个品牌最好?2024年十大护眼灯品牌排行榜

由于科技水平的提高和电子产品的普及&#xff0c;儿童青少年的近视率正逐年攀升&#xff0c;出现低龄化现象&#xff0c;面对眼健康问题的严峻形势&#xff0c;我们应该还有爱眼意识、加强眼健康知识普及&#xff01;现在呢&#xff0c;护眼台灯被越来越多的人发现了&#xff0…

接口芯片选型分析 四通道差分驱动可满足ANSI TIA/EIA-422-B 和ITU V.11 的要求 低功耗,高速率,高ESD

四通道差分驱动可满足ANSI TIA/EIA-422-B 和ITU V.11 的要求 低功耗&#xff0c;高速率&#xff0c;高ESD。 其中GC26L31S可替代AM26LS31/TI&#xff0c;GC26L32S替代AM26LS32/TI&#xff0c;GC26E31S替代TI的AM26LV31E

如何快速制作网址的静态码?网址二维码在线制作的简单技巧

现在很多人会将网址转换成静态二维码来使用&#xff0c;一个原因是扫码更符合现在人们的生活习惯&#xff0c;二来是采用二维码图片来做传播能够有效的节省制作者的成本&#xff0c;而且容易更快的完成网址内容的传播&#xff0c;所以将网址生成二维码的方法现在应用非常的广泛…

U盘无法安全弹出怎么办?

当电脑弹出“弹出USB大容量存储设备时出问题”提示时&#xff0c;只能抱着侥幸的心理直接拔出&#xff0c;如果运气好&#xff0c;可能没有什么事&#xff0c;如果运气不好&#xff0c;你的U盘可能就会报废。那么&#xff0c;为什么U盘无法弹出&#xff1f;遇到U盘无法安全弹出…

ORA-600 adg无法查询故障

再续前缘 ORA-600[12406]故障解决-CSDN博客 当你点背的时候&#xff0c;看似一个简单的case&#xff0c;总是会迎来反转 上次改完参数没两天&#xff0c;又出现了报错不同&#xff0c;但是现象相似的情况 这次是 ORA-600 [kksgaGetNoAlloc_Int0] 这次出现故障的范围更大&a…

windows@管理员用户账户

文章目录 windows中的管理员用户账户将某个用户提升为管理员&#x1f388;直接创建一个管理员账户&#x1f60a;使用lusrmgr.msc程序创建先新建一个用户FAQ 在管理员组中添加新用户为管理员&#x1f388;方式1:手动输入方式2:在已有的用户列表中查找并选中修改/禁用pin码(普通情…

Vue中Vuex的环境搭建和原理分析及使用

Vuex的环境搭建 Vuex是Vue实现集中式数据管理的Vue的一个插件&#xff0c;集中式可以理解为一个老师给多个学生讲课。 Vue2.0版本的安装&#xff1a; npm i vuex3 使用Vuex需要在store中的index.js引入Vuex和main.js中引入store,目的是让vm和vc都能看到$store。实现多个组件…

降噪自编码器(Denoising Autoencoder)

降噪自编码器&#xff08;Denoising Autoencoder&#xff09;是一种用于无监督学习的神经网络模型。与普通的自编码器不同&#xff0c;降噪自编码器的目标是通过在输入数据中引入噪声&#xff0c;然后尝试从具有噪声的输入中重建原始无噪声数据。 以下是降噪自编码器的主要特点…

基于SSM的停车管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Pytest自动化测试框架

1、pytest简介 pytest是Python的一种单元测试框架&#xff0c;与python自带的unittest测试框架类似&#xff0c;但是比unittest框架使用起来更简洁&#xff0c;效率更高。 执行测试过程中可以将某些测试跳过&#xff0c;或者对某些预期失败的case标记成失败能够支持简单的单元…

关于vite的glob坑

我先展示一段代码&#xff1a; /*** function 根据pages路径动态生成路由* param {Array} 基础路由*/ export default function (routes) {const modules import.meta.glob("../pages/**/page.js", { eager: true, import: "default" });const comps im…

如何让ArcGIS Pro启动显示空白页面

刚接触ArcGIS Pro的你是否会觉得在操作上有那么一些不习惯&#xff0c;从一开始软件启动就发现和ArcGIS差距很大&#xff1a;丰富的欢迎页面&#xff0c;加上默认加载的地图让你眼花缭乱&#xff0c;这里教你如何去掉这些繁杂的内容&#xff0c;还你一个干净的启动页面。 跳过…

【算法】算法设计与分析 期末复习总结

第一章 算法概述 时间复杂度比大小&#xff0c;用代入法&#xff0c;代入2即可。求渐进表达式&#xff0c;就是求极限&#xff0c;以极限为O的括号&#xff1b;O是指上界&#xff0c;Ω是指下界&#xff0c;θ是指上下界相等&#xff0c;在这里&#xff0c;可以这样理解&#…

6.综合案例

1. 需求描述 1.1 显示所有员工信息 URI:emps 请求方式:GET 显示效果 1.2 添加操作- 去往添加页面 显示添加页面: URI:emp 请求方式:GET 显示效果 1.3 添加操作- 添加员工 添加员工信息: URI:emp 请求方式:POST 显示效果:完成添加, 重定向到 list 页面。 1.4…

【深度学习:Domain Adversarial Neural Networks (DANN) 】领域对抗神经网络简介

【深度学习&#xff1a;Domain Adversarial Neural Networks】领域对抗神经网络简介 前言领域对抗神经网络DANN 模型架构DANN 训练流程DANN示例 GPT示例 前言 领域适应&#xff08;DA&#xff09;指的是当不同数据集的输入分布发生变化&#xff08;这种变化通常被称为共变量变…

RT-Thread 内核基础(三)

程序内存分布 一般MCU包含的存储空间有&#xff1a;片内Flash与片内RAM&#xff0c;RAM相当于内存&#xff0c;Flash相当于硬盘。 编译器会将一个程序分类为好几个部分&#xff0c;分别存储在MCU不同的存储区。 Keil工程在编译完之后&#xff0c;会有相应的程序所占用的空间提…

图灵日记之java奇妙历险记--抽象类和接口

目录 抽象类概念抽象类语法 接口概念规则使用特性实现多个接口接口的继承接口使用实例Clonable接口和深拷贝抽象类和接口的区别 Object类 抽象类 概念 在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够…

SD-WAN:提升连锁零售企业异地组网稳定性

连锁零售企业往往拥有众多分布在不同地区的分支机构和零售店&#xff0c;为保证企业高效运转&#xff0c;各地区之间的网络连接必须稳定可靠。但基于各地网络基础设施的不同和网络延迟、带宽等限制&#xff0c;异地组网往往并不稳定。在这背景下&#xff0c;SD-WAN成为连锁零售…

UV贴图和展开初学者指南

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 这正是本文的主题——UV贴图——登上舞台的时候。大多数 3D 建…