EditableSelectGC.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import * as React from 'react';
  2. import Box from "@mui/material/Box";
  3. import 'handsontable/dist/handsontable.full.min.css';
  4. //import 'handsontable/styles/ht-theme-main.min.css';
  5. import { HandsonTable } from 'handsontable/base';
  6. import {HotTable} from "@handsontable/react";
  7. import { registerAllModules } from 'handsontable/registry';
  8. import {RichTreeView } from "@mui/x-tree-view/RichTreeView";
  9. import { Grid } from '@mui/material';
  10. import Tab from "@mui/material/Tab";
  11. import TabContext from "@mui/lab/TabContext";
  12. import TabList from "@mui/lab/TabList";
  13. import TabPanel from "@mui/lab/TabPanel";
  14. //import { registerPlugin, NestedRows } from 'handsontable/plugins';
  15. //registerPlugin(NestedRows);
  16. import Qingdan from './Qingdan';
  17. import Zjcs from './Zjcs';
  18. import Djcs from './Djcs';
  19. import Service from './Service';
  20. import {useLocation} from "react-router";
  21. import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
  22. import Typography from '@mui/material/Typography';
  23. import InputLabel from '@mui/material/InputLabel';
  24. import MenuItem from '@mui/material/MenuItem';
  25. import FormControl from '@mui/material/FormControl';
  26. import Select from '@mui/material/Select';
  27. import Accordion from '@mui/material/Accordion';
  28. import AccordionActions from '@mui/material/AccordionActions';
  29. import AccordionSummary from '@mui/material/AccordionSummary';
  30. import AccordionDetails from '@mui/material/AccordionDetails';
  31. import Stack from '@mui/material/Stack';
  32. import { DataGrid } from '@mui/x-data-grid';
  33. import Button from '@mui/material/Button';
  34. import TextField from '@mui/material/TextField';
  35. import ListSubheader from '@mui/material/ListSubheader';
  36. export default function EditableSelectGC({ initialText, onChange }) {
  37. const [isEditing, setIsEditing] = React.useState(false);
  38. const [textValue, setTextValue] = React.useState(initialText);
  39. const handleChange = (event) => {
  40. setTextValue(event.target.value);
  41. setIsEditing(false);
  42. onChange(event.target.value);
  43. };
  44. React.useEffect(
  45. () => {
  46. setTextValue(initialText);
  47. setIsEditing(false);
  48. }, [initialText]
  49. );
  50. return (
  51. <Box>
  52. {isEditing ? (
  53. <FormControl sx={{ m: 1, minWidth: 100 }} size="small">
  54. <InputLabel id="demo-select-small-label">工程类型</InputLabel>
  55. <Select
  56. labelId="demo-select-small-label"
  57. id="demo-select-small"
  58. value={textValue}
  59. label="工程类型"
  60. onChange={handleChange}
  61. onBlur={()=>{
  62. setIsEditing(false);
  63. }}
  64. >
  65. <MenuItem value="">
  66. <em></em>
  67. </MenuItem>
  68. <ListSubheader>建筑工程</ListSubheader>
  69. <MenuItem value={"建筑工程"}>建筑工程</MenuItem>
  70. <MenuItem value={"单独预制构件制作"}>单独预制构件制作</MenuItem>
  71. <MenuItem value={"打预制桩、单独构件吊装"}>打预制桩、单独构件吊装</MenuItem>
  72. <MenuItem value={"单独预制构件制作"}>单独预制构件制作</MenuItem>
  73. <MenuItem value={"制作兼打桩"}>制作兼打桩</MenuItem>
  74. <MenuItem value={"大型土石方工程"}>大型土石方工程</MenuItem>
  75. <ListSubheader>单独装饰工程</ListSubheader>
  76. <MenuItem value={"单独装饰工程"}>单独装饰工程</MenuItem>
  77. <ListSubheader>安装工程</ListSubheader>
  78. <MenuItem value={"安装工程"}>安装工程</MenuItem>
  79. <ListSubheader>市政工程</ListSubheader>
  80. <MenuItem value={"通用项目、道路、排水工程"}>通用项目、道路、排水工程</MenuItem>
  81. <MenuItem value={"桥梁、水工构筑物"}>桥梁、水工构筑物</MenuItem>
  82. <MenuItem value={"给水、燃气与集中供热"}>给水、燃气与集中供热</MenuItem>
  83. <MenuItem value={"路灯及交通设施工程"}>路灯及交通设施工程</MenuItem>
  84. <MenuItem value={"(市)大型土石方工程"}>(市)大型土石方工程</MenuItem>
  85. </Select>
  86. </FormControl>
  87. ) : (
  88. <Button disableRipple variant="text" color="#000000"
  89. onDoubleClick={()=>{
  90. setIsEditing(true);
  91. }}
  92. >{textValue}</Button>
  93. )}
  94. </Box>
  95. );
  96. }