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。实现多个组件…

linux嵌入式开发常用

常用命令 nm命令 功能描述 nm是name的缩写&#xff0c;它显示指定文件中的符号信息&#xff0c;文件可以是对象文件、可执行文件或对象文件库。如果文件中没有包含符号信息&#xff0c;nm报告该情况&#xff0c;单不把他解释为出错。nm缺省情况下报告十进制符号表示法下的数…

降噪自编码器(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…

企业固态驱动器行业研究:到2025年市场超过600亿美元

固态驱动器&#xff08;SSD&#xff09;市场在过去几年中呈现出稳定的增长趋势&#xff0c;预计将在未来几年继续保持这种增长。SSD市场的主要驱动因素包括云计算、大数据和物联网等新兴技术的普及&#xff0c;以及消费者对高速、高效和可靠存储解决方案的需求。全球市场分析&a…

c++求水仙数/c++水仙花数学习

C水仙花数-深入浅出.学习与讲解 水仙花数&#xff0c;又称阿姆斯特朗数&#xff0c;是指一个n位数 (n≥3)&#xff0c;它的每个位上的数字的n次幂之和等于它本身。例如&#xff1a;153是一个水仙花数&#xff0c;因为153153。 在C中&#xff0c;我们可以使用循环和条件判断来…

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

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

机器人说明书---名词解释027课_python语言_匿名函数

目录 匿名函数语法return 语句强制位置参数 视频讲解 匿名函数 Python 使用lambda 来创建匿名函数。 所谓匿名&#xff0c;意即不再使用 def 语句这样标准的形式定义一个函数。 lambda 只是一个表达式&#xff0c;函数体比 def 简单很多。lambda 的主体是一个表达式&#xff…

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

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

工作常用的英语

第一节 视频连接&#xff08;中文&#xff09;&#xff1a;在外企工作经常可以用上的英语表达【商务英语学习】_哔哩哔哩_bilibili 1、carry out 进行&#xff0c;开展&#xff0c;执行 eg. 1&#xff09;We need to carry out this work as soon as possible. 我们需要尽快…

【软件测试】软件测试工程师需要掌握的非测试知识有哪些

一个优秀的测试工程师&#xff0c;必须具备宽广的知识面&#xff0c;才能设计出有的放矢的测试用例&#xff0c;保证整个软件产品的质量。除了测试专业知识外&#xff0c;你还要掌握哪些知识&#xff0c;才能一路披荆斩棘&#xff0c;成长为一名优秀的测试工程师&#xff0c;或…