|
@@ -19,7 +19,7 @@ import Service from './Service';
|
|
|
import Button from '@mui/material/Button';
|
|
import Button from '@mui/material/Button';
|
|
|
import ButtonGroup from '@mui/material/ButtonGroup';
|
|
import ButtonGroup from '@mui/material/ButtonGroup';
|
|
|
import {extractFuzhu} from './utils';
|
|
import {extractFuzhu} from './utils';
|
|
|
-import {shanchu, undo, redo, danxiangdinge, updateDercj, changguidinge, handleBeizhu, huan, updateShuliang, handleYuban, updateDeMingcheng} from './editor';
|
|
|
|
|
|
|
+import {shanchu, undo, redo, danxiangdinge, updateDercj, changguidinge, handleBeizhu, huan, updateShuliang, handleYuban, updateDeMingcheng, handleRcjbc} from './editor';
|
|
|
import Backdrop from '@mui/material/Backdrop';
|
|
import Backdrop from '@mui/material/Backdrop';
|
|
|
import CircularProgress from '@mui/material/CircularProgress';
|
|
import CircularProgress from '@mui/material/CircularProgress';
|
|
|
import { DataGrid, GridRowModes, Toolbar, ToolbarButton, GridActionsCellItem, GridRowEditStopReasons } from '@mui/x-data-grid';
|
|
import { DataGrid, GridRowModes, Toolbar, ToolbarButton, GridActionsCellItem, GridRowEditStopReasons } from '@mui/x-data-grid';
|
|
@@ -217,6 +217,9 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
//get row data
|
|
//get row data
|
|
|
//console.log(cell);
|
|
//console.log(cell);
|
|
|
if(isQdrcj.current) return false;
|
|
if(isQdrcj.current) return false;
|
|
|
|
|
+ if (cell._cell.row.getData()['人材机编码'] == '410000F') {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -239,6 +242,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
selectedRowKeysTableParent.current = row._row['data']['key'];
|
|
selectedRowKeysTableParent.current = row._row['data']['key'];
|
|
|
|
|
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
|
|
+ setRcjrows([]);
|
|
|
setYubanEnable(false);
|
|
setYubanEnable(false);
|
|
|
setSelectedRowKeys2([]);
|
|
setSelectedRowKeys2([]);
|
|
|
setShowToolbar(false);
|
|
setShowToolbar(false);
|
|
@@ -333,6 +337,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
setFuzhuEnable(x[1]);
|
|
setFuzhuEnable(x[1]);
|
|
|
setYubanEnable(x[1]);
|
|
setYubanEnable(x[1]);
|
|
|
setSelectedRowKeys2(x[2]);
|
|
setSelectedRowKeys2(x[2]);
|
|
|
|
|
+ setRcjrows(x[3]);
|
|
|
//hotRcjRef.current?.hotInstance?.loadData(x);
|
|
//hotRcjRef.current?.hotInstance?.loadData(x);
|
|
|
isQdrcj.current = false;
|
|
isQdrcj.current = false;
|
|
|
let toHighlight = [];
|
|
let toHighlight = [];
|
|
@@ -408,7 +413,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
|
|
|
|
|
/**补充人材机 */
|
|
/**补充人材机 */
|
|
|
const [rcjrows, setRcjrows] = React.useState([]);
|
|
const [rcjrows, setRcjrows] = React.useState([]);
|
|
|
- const [rowModesModel, setRowModesModel] = React.useState({});
|
|
|
|
|
|
|
+ //const [rowModesModel, setRowModesModel] = React.useState({});
|
|
|
const [showToolbar, setShowToolbar] = React.useState(false);
|
|
const [showToolbar, setShowToolbar] = React.useState(false);
|
|
|
const rcjcolumns = [
|
|
const rcjcolumns = [
|
|
|
{
|
|
{
|
|
@@ -418,38 +423,12 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
width: 100,
|
|
width: 100,
|
|
|
cellClassName: 'actions',
|
|
cellClassName: 'actions',
|
|
|
getActions: ({ id }) => {
|
|
getActions: ({ id }) => {
|
|
|
- const isInEditMode = rowModesModel[id]?.mode === GridRowModes.Edit;
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
- if (isInEditMode) {
|
|
|
|
|
- return [
|
|
|
|
|
- <GridActionsCellItem
|
|
|
|
|
- icon={<SaveIcon />}
|
|
|
|
|
- label="Save"
|
|
|
|
|
- material={{
|
|
|
|
|
- sx: {
|
|
|
|
|
- color: 'primary.main',
|
|
|
|
|
- },
|
|
|
|
|
- }}
|
|
|
|
|
- onClick={handleSaveClick(id)}
|
|
|
|
|
- />,
|
|
|
|
|
- <GridActionsCellItem
|
|
|
|
|
- icon={<CancelIcon />}
|
|
|
|
|
- label="Cancel"
|
|
|
|
|
- className="textPrimary"
|
|
|
|
|
- onClick={handleCancelClick(id)}
|
|
|
|
|
- color="inherit"
|
|
|
|
|
- />,
|
|
|
|
|
- ];
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
return [
|
|
return [
|
|
|
- <GridActionsCellItem
|
|
|
|
|
- icon={<EditIcon />}
|
|
|
|
|
- label="Edit"
|
|
|
|
|
- className="textPrimary"
|
|
|
|
|
- onClick={handleEditClick(id)}
|
|
|
|
|
- color="inherit"
|
|
|
|
|
- />,
|
|
|
|
|
|
|
+
|
|
|
<GridActionsCellItem
|
|
<GridActionsCellItem
|
|
|
icon={<DeleteIcon />}
|
|
icon={<DeleteIcon />}
|
|
|
label="Delete"
|
|
label="Delete"
|
|
@@ -459,7 +438,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
];
|
|
];
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
- { field: '人材机编码', headerName: '人材机编码', width: 120, editable: true },
|
|
|
|
|
|
|
+ { field: '人材机编码', headerName: '人材机编码', width: 120, editable: false },
|
|
|
{
|
|
{
|
|
|
field: '名称',
|
|
field: '名称',
|
|
|
headerName: '名称',
|
|
headerName: '名称',
|
|
@@ -549,56 +528,130 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
|
|
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
- const handleEditClick = (id) => () => {
|
|
|
|
|
- setRowModesModel({ ...rowModesModel, [id]: { mode: GridRowModes.Edit } });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- const handleSaveClick = (id) => () => {
|
|
|
|
|
- setRowModesModel({ ...rowModesModel, [id]: { mode: GridRowModes.View } });
|
|
|
|
|
- };
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
const handleDeleteClick = (id) => () => {
|
|
const handleDeleteClick = (id) => () => {
|
|
|
setRcjrows(rcjrows.filter((row) => row.id !== id));
|
|
setRcjrows(rcjrows.filter((row) => row.id !== id));
|
|
|
|
|
+ const [newData, newHl] = handleRcjbc(selectedRowKeysTable.current[0], rcjrows.filter((row) => row.id !== id));
|
|
|
|
|
+ if (newData) {
|
|
|
|
|
+ myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
|
|
|
|
|
+ let y =[];
|
|
|
|
|
+ for (let i = 1; i < newHl.length; i++) {
|
|
|
|
|
+ y.push({
|
|
|
|
|
+ 'ID' : newHl[i][0],
|
|
|
|
|
+ '人材机编码' : newHl[i][1],
|
|
|
|
|
+ '名称' : newHl[i][2],
|
|
|
|
|
+ '规格型号': newHl[i][3],
|
|
|
|
|
+ '单位' : newHl[i][4],
|
|
|
|
|
+ '单价' : newHl[i][5],
|
|
|
|
|
+ '产地' : newHl[i][6],
|
|
|
|
|
+ '供应厂商' : newHl[i][7],
|
|
|
|
|
+ '人材机类别' : newHl[i][8],
|
|
|
|
|
+ '甲供标志': newHl[i][9],
|
|
|
|
|
+ '含量' : newHl[i][10],
|
|
|
|
|
+ '合价' : newHl[i][11],
|
|
|
|
|
+ '暂估价标志' : newHl[i][12],
|
|
|
|
|
+ '主要材料标志' : newHl[i][13],
|
|
|
|
|
+ '主材标志' : newHl[i][14],
|
|
|
|
|
+ '设备标志' : newHl[i][15]
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ setRcjhl(y);
|
|
|
|
|
+ if (rcjTable.current) {
|
|
|
|
|
+ rcjTable.current.replaceData(y);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- const handleCancelClick = (id) => () => {
|
|
|
|
|
- setRowModesModel({
|
|
|
|
|
- ...rowModesModel,
|
|
|
|
|
- [id]: { mode: GridRowModes.View, ignoreModifications: true },
|
|
|
|
|
- });
|
|
|
|
|
|
|
|
|
|
- const editedRow = rcjrows.find((row) => row.id === id);
|
|
|
|
|
- if (editedRow.isNew) {
|
|
|
|
|
- setRcjrows(rcjrows.filter((row) => row.id !== id));
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
- const handleRowModesModelChange = (newRowModesModel) => {
|
|
|
|
|
- setRowModesModel(newRowModesModel);
|
|
|
|
|
- };
|
|
|
|
|
- const handleRowEditStop = (params, event) => {
|
|
|
|
|
- if (params.reason === GridRowEditStopReasons.rowFocusOut) {
|
|
|
|
|
- event.defaultMuiPrevented = true;
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
const processRowUpdate = (newRow) => {
|
|
const processRowUpdate = (newRow) => {
|
|
|
const updatedRow = { ...newRow, isNew: false };
|
|
const updatedRow = { ...newRow, isNew: false };
|
|
|
setRcjrows(rcjrows.map((row) => (row.id === newRow.id ? updatedRow : row)));
|
|
setRcjrows(rcjrows.map((row) => (row.id === newRow.id ? updatedRow : row)));
|
|
|
|
|
+ const [newData, newHl] = handleRcjbc(selectedRowKeysTable.current[0], rcjrows.map((row) => (row.id === newRow.id ? updatedRow : row)));
|
|
|
|
|
+ if (newData) {
|
|
|
|
|
+ myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
|
|
|
|
|
+ let y =[];
|
|
|
|
|
+ for (let i = 1; i < newHl.length; i++) {
|
|
|
|
|
+ y.push({
|
|
|
|
|
+ 'ID' : newHl[i][0],
|
|
|
|
|
+ '人材机编码' : newHl[i][1],
|
|
|
|
|
+ '名称' : newHl[i][2],
|
|
|
|
|
+ '规格型号': newHl[i][3],
|
|
|
|
|
+ '单位' : newHl[i][4],
|
|
|
|
|
+ '单价' : newHl[i][5],
|
|
|
|
|
+ '产地' : newHl[i][6],
|
|
|
|
|
+ '供应厂商' : newHl[i][7],
|
|
|
|
|
+ '人材机类别' : newHl[i][8],
|
|
|
|
|
+ '甲供标志': newHl[i][9],
|
|
|
|
|
+ '含量' : newHl[i][10],
|
|
|
|
|
+ '合价' : newHl[i][11],
|
|
|
|
|
+ '暂估价标志' : newHl[i][12],
|
|
|
|
|
+ '主要材料标志' : newHl[i][13],
|
|
|
|
|
+ '主材标志' : newHl[i][14],
|
|
|
|
|
+ '设备标志' : newHl[i][15]
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ setRcjhl(y);
|
|
|
|
|
+ if (rcjTable.current) {
|
|
|
|
|
+ rcjTable.current.replaceData(y);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
return updatedRow;
|
|
return updatedRow;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
function EditToolbar(props) {
|
|
function EditToolbar(props) {
|
|
|
- const { setRcjrows, setRowModesModel } = props;
|
|
|
|
|
|
|
+ const { setRcjrows } = props;
|
|
|
|
|
|
|
|
const handleClick = () => {
|
|
const handleClick = () => {
|
|
|
const id = uuidv4();
|
|
const id = uuidv4();
|
|
|
- setRcjrows((oldRows) => [
|
|
|
|
|
- ...oldRows,
|
|
|
|
|
- { id, '人材机编码': '', '名称': '', '规格型号': '', isNew: true },
|
|
|
|
|
- ]);
|
|
|
|
|
- setRowModesModel((oldModel) => ({
|
|
|
|
|
- ...oldModel,
|
|
|
|
|
- [id]: { mode: GridRowModes.Edit, fieldToFocus: '名称' },
|
|
|
|
|
- }));
|
|
|
|
|
|
|
+ let a = [];
|
|
|
|
|
+ setRcjrows((oldRows) => {
|
|
|
|
|
+ a = [
|
|
|
|
|
+ ...oldRows,
|
|
|
|
|
+ { id, '人材机编码': '410000F', '名称': '', '规格型号': '', '单位': '', '单价':'0','产地': '', '供应厂商': '', '人材机类别':'2',
|
|
|
|
|
+ '甲供标志':'', '含量':'1', '暂估价标志':'', '主要材料标志':'true', '主材标志':'true', '设备标志':'' },
|
|
|
|
|
+ ];
|
|
|
|
|
+ return a;
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ const [newData, newHl] = handleRcjbc(selectedRowKeysTable.current[0], a);
|
|
|
|
|
+ if (newData) {
|
|
|
|
|
+ myTable.current.updateData(newData.filter(x=>x['key'] == selectedRowKeysTableParent.current));
|
|
|
|
|
+ let y =[];
|
|
|
|
|
+ for (let i = 1; i < newHl.length; i++) {
|
|
|
|
|
+ y.push({
|
|
|
|
|
+ 'ID' : newHl[i][0],
|
|
|
|
|
+ '人材机编码' : newHl[i][1],
|
|
|
|
|
+ '名称' : newHl[i][2],
|
|
|
|
|
+ '规格型号': newHl[i][3],
|
|
|
|
|
+ '单位' : newHl[i][4],
|
|
|
|
|
+ '单价' : newHl[i][5],
|
|
|
|
|
+ '产地' : newHl[i][6],
|
|
|
|
|
+ '供应厂商' : newHl[i][7],
|
|
|
|
|
+ '人材机类别' : newHl[i][8],
|
|
|
|
|
+ '甲供标志': newHl[i][9],
|
|
|
|
|
+ '含量' : newHl[i][10],
|
|
|
|
|
+ '合价' : newHl[i][11],
|
|
|
|
|
+ '暂估价标志' : newHl[i][12],
|
|
|
|
|
+ '主要材料标志' : newHl[i][13],
|
|
|
|
|
+ '主材标志' : newHl[i][14],
|
|
|
|
|
+ '设备标志' : newHl[i][15]
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ setRcjhl(y);
|
|
|
|
|
+ if (rcjTable.current) {
|
|
|
|
|
+ rcjTable.current.replaceData(y);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
@@ -859,6 +912,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
}, [beizhuFK]
|
|
}, [beizhuFK]
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
React.useEffect(
|
|
React.useEffect(
|
|
|
() => {
|
|
() => {
|
|
@@ -1002,6 +1057,16 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
dataTree: false,
|
|
dataTree: false,
|
|
|
selectableRows:1, //make rows selectable
|
|
selectableRows:1, //make rows selectable
|
|
|
editTriggerEvent:"dblclick",
|
|
editTriggerEvent:"dblclick",
|
|
|
|
|
+ rowFormatter:function(row){
|
|
|
|
|
+ //row - row component
|
|
|
|
|
+
|
|
|
|
|
+ var data = row.getData();
|
|
|
|
|
+ if (data['人材机编码'] == '410000F') {
|
|
|
|
|
+ row.getElement().style.backgroundColor = "#ffff00";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
columns: [ //Define Table Columns
|
|
columns: [ //Define Table Columns
|
|
|
{title:"ID", field:"ID", width:80, headerSort:false, },
|
|
{title:"ID", field:"ID", width:80, headerSort:false, },
|
|
@@ -1031,7 +1096,8 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
rcjTable.current.on("cellDblClick", function(e, cell){
|
|
rcjTable.current.on("cellDblClick", function(e, cell){
|
|
|
//e - the click event object
|
|
//e - the click event object
|
|
|
//cell - cell component
|
|
//cell - cell component
|
|
|
- if(cell._cell.column.getPosition() == 2 && !isQdrcj.current) {
|
|
|
|
|
|
|
+ let determine = cell._cell.row.getData()['人材机编码'] != '410000F';
|
|
|
|
|
+ if(cell._cell.column.getPosition() == 2 && !isQdrcj.current && determine) {
|
|
|
tihuanCallback(cell._cell.row.position, cell._cell.column.getPosition());
|
|
tihuanCallback(cell._cell.row.position, cell._cell.column.getPosition());
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -1113,6 +1179,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
rcjTable.current.replaceData([]);
|
|
rcjTable.current.replaceData([]);
|
|
|
}
|
|
}
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
|
|
+ setRcjrows([]);
|
|
|
setShowToolbar(false);
|
|
setShowToolbar(false);
|
|
|
setSelectedRowKeys2([]);
|
|
setSelectedRowKeys2([]);
|
|
|
setYubanEnable(false);
|
|
setYubanEnable(false);
|
|
@@ -1137,6 +1204,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
rcjTable.current.replaceData([]);
|
|
rcjTable.current.replaceData([]);
|
|
|
}
|
|
}
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
|
|
+ setRcjrows([]);
|
|
|
setShowToolbar(false);
|
|
setShowToolbar(false);
|
|
|
setSelectedRowKeys2([]);
|
|
setSelectedRowKeys2([]);
|
|
|
setYubanEnable(false);
|
|
setYubanEnable(false);
|
|
@@ -1164,6 +1232,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
rcjTable.current.replaceData([]);
|
|
rcjTable.current.replaceData([]);
|
|
|
}
|
|
}
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
|
|
+ setRcjrows([]);
|
|
|
setShowToolbar(false);
|
|
setShowToolbar(false);
|
|
|
setSelectedRowKeys2([]);
|
|
setSelectedRowKeys2([]);
|
|
|
setYubanEnable(false);
|
|
setYubanEnable(false);
|
|
@@ -1186,6 +1255,7 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
rcjTable.current.replaceData([]);
|
|
rcjTable.current.replaceData([]);
|
|
|
}
|
|
}
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
|
|
+ setRcjrows([]);
|
|
|
setShowToolbar(false);
|
|
setShowToolbar(false);
|
|
|
setSelectedRowKeys2([]);
|
|
setSelectedRowKeys2([]);
|
|
|
setYubanEnable(false);
|
|
setYubanEnable(false);
|
|
@@ -1253,14 +1323,10 @@ export default function Qingdan3({name, bh, bt, rgde, jxde, clde, beizhu/*后台
|
|
|
hideFooter={true}
|
|
hideFooter={true}
|
|
|
rows={rcjrows}
|
|
rows={rcjrows}
|
|
|
columns={rcjcolumns}
|
|
columns={rcjcolumns}
|
|
|
- editMode="row"
|
|
|
|
|
- rowModesModel={rowModesModel}
|
|
|
|
|
- onRowModesModelChange={handleRowModesModelChange}
|
|
|
|
|
- onRowEditStop={handleRowEditStop}
|
|
|
|
|
processRowUpdate={processRowUpdate}
|
|
processRowUpdate={processRowUpdate}
|
|
|
slots={{ toolbar: EditToolbar }}
|
|
slots={{ toolbar: EditToolbar }}
|
|
|
slotProps={{
|
|
slotProps={{
|
|
|
- toolbar: { setRcjrows, setRowModesModel },
|
|
|
|
|
|
|
+ toolbar: { setRcjrows },
|
|
|
}}
|
|
}}
|
|
|
showToolbar={showToolbar}
|
|
showToolbar={showToolbar}
|
|
|
localeText={{
|
|
localeText={{
|