EditableSelectGC.js 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import * as React from 'react';
  2. import Box from "@mui/material/Box";
  3. import { Grid } from '@mui/material';
  4. import Tab from "@mui/material/Tab";
  5. import TabContext from "@mui/lab/TabContext";
  6. import TabList from "@mui/lab/TabList";
  7. import TabPanel from "@mui/lab/TabPanel";
  8. //registerPlugin(NestedRows);
  9. import Service from './Service';
  10. import {useLocation} from "react-router";
  11. import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
  12. import Typography from '@mui/material/Typography';
  13. import InputLabel from '@mui/material/InputLabel';
  14. import MenuItem from '@mui/material/MenuItem';
  15. import FormControl from '@mui/material/FormControl';
  16. import Select from '@mui/material/Select';
  17. import Accordion from '@mui/material/Accordion';
  18. import AccordionActions from '@mui/material/AccordionActions';
  19. import AccordionSummary from '@mui/material/AccordionSummary';
  20. import AccordionDetails from '@mui/material/AccordionDetails';
  21. import Stack from '@mui/material/Stack';
  22. import Button from '@mui/material/Button';
  23. import TextField from '@mui/material/TextField';
  24. import ListSubheader from '@mui/material/ListSubheader';
  25. export default function EditableSelectGC({ initialText, onChange }) {
  26. const [isEditing, setIsEditing] = React.useState(false);
  27. const [textValue, setTextValue] = React.useState(initialText);
  28. const handleChange = (event) => {
  29. setTextValue(event.target.value);
  30. setIsEditing(false);
  31. onChange(event.target.value);
  32. };
  33. React.useEffect(
  34. () => {
  35. setTextValue(initialText);
  36. setIsEditing(false);
  37. }, [initialText]
  38. );
  39. return (
  40. <Box>
  41. {isEditing ? (
  42. <FormControl sx={{ m: 1, minWidth: 100 }} size="small">
  43. <InputLabel id="demo-select-small-label">工程类型</InputLabel>
  44. <Select
  45. labelId="demo-select-small-label"
  46. id="demo-select-small"
  47. value={textValue}
  48. label="工程类型"
  49. onChange={handleChange}
  50. onBlur={()=>{
  51. setIsEditing(false);
  52. }}
  53. >
  54. <MenuItem value="">
  55. <em></em>
  56. </MenuItem>
  57. <ListSubheader>建筑工程</ListSubheader>
  58. <MenuItem value={"建筑工程"}>建筑工程</MenuItem>
  59. <MenuItem value={"单独预制构件制作"}>单独预制构件制作</MenuItem>
  60. <MenuItem value={"打预制桩、单独构件吊装"}>打预制桩、单独构件吊装</MenuItem>
  61. <MenuItem value={"单独预制构件制作"}>单独预制构件制作</MenuItem>
  62. <MenuItem value={"制作兼打桩"}>制作兼打桩</MenuItem>
  63. <MenuItem value={"大型土石方工程"}>大型土石方工程</MenuItem>
  64. <ListSubheader>单独装饰工程</ListSubheader>
  65. <MenuItem value={"单独装饰工程"}>单独装饰工程</MenuItem>
  66. <ListSubheader>安装工程</ListSubheader>
  67. <MenuItem value={"安装工程"}>安装工程</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. </Select>
  75. </FormControl>
  76. ) : (
  77. <Button disableRipple variant="text" color="#000000"
  78. onDoubleClick={()=>{
  79. setIsEditing(true);
  80. }}
  81. >{textValue}</Button>
  82. )}
  83. </Box>
  84. );
  85. }