|
@@ -21,11 +21,13 @@ import './Tabulator.css';
|
|
|
import { DataGrid } from '@mui/x-data-grid';
|
|
import { DataGrid } from '@mui/x-data-grid';
|
|
|
import {extractFuzhu, match_target} from './utils';
|
|
import {extractFuzhu, match_target} from './utils';
|
|
|
import Button from '@mui/material/Button';
|
|
import Button from '@mui/material/Button';
|
|
|
-import {shanchu_djcs, undo_djcs, redo_djcs, danxiangdinge_djcs, updateDercj_djcs, changguidinge, handleBeizhu, huan, updateShuliang_djcs} from './editor';
|
|
|
|
|
|
|
+import {shanchu_djcs, undo_djcs, redo_djcs, danxiangdinge_djcs, updateDercj_djcs, changguidinge_djcs, handleBeizhu_djcs, huan, updateShuliang_djcs} from './editor';
|
|
|
|
|
|
|
|
import { textRenderer, registerRenderer } from 'handsontable/renderers';
|
|
import { textRenderer, registerRenderer } from 'handsontable/renderers';
|
|
|
|
|
|
|
|
|
|
+import { Table, ConfigProvider, Button as AButton } from "antd";
|
|
|
|
|
|
|
|
|
|
+import zhCN from 'antd/locale/zh_CN';
|
|
|
|
|
|
|
|
|
|
|
|
|
function number_equal(a, b) {
|
|
function number_equal(a, b) {
|
|
@@ -34,7 +36,7 @@ function number_equal(a, b) {
|
|
|
}
|
|
}
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
-export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback, loadingCallback}) {
|
|
|
|
|
|
|
+export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, beizhuFK, clickCallback, loadingCallback, dingeclick}) {
|
|
|
|
|
|
|
|
|
|
|
|
|
var editCheck = function(cell){
|
|
var editCheck = function(cell){
|
|
@@ -51,10 +53,11 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
//e - the click event object
|
|
//e - the click event object
|
|
|
//cell - cell component
|
|
//cell - cell component
|
|
|
console.log('rowSelected');
|
|
console.log('rowSelected');
|
|
|
- selectedRowKeys.current = [row._row['data']['key']];
|
|
|
|
|
|
|
+ selectedRowKeysTable.current = [row._row['data']['key']];
|
|
|
let bt = "Djcs" ;
|
|
let bt = "Djcs" ;
|
|
|
|
|
|
|
|
if (row._row.data['序号'] != null && row._row.data['序号'].length >0) {
|
|
if (row._row.data['序号'] != null && row._row.data['序号'].length >0) {
|
|
|
|
|
+ setFuzhu([]);
|
|
|
Service.generateQingdanrcj(name, bh,bt,row._row.data['清单编码']).then(x=>{
|
|
Service.generateQingdanrcj(name, bh,bt,row._row.data['清单编码']).then(x=>{
|
|
|
setRcjhl(x);
|
|
setRcjhl(x);
|
|
|
isQdrcj.current=true;
|
|
isQdrcj.current=true;
|
|
@@ -166,11 +169,33 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
const [rcjhl2, setRcjhl2] = React.useState([]);
|
|
const [rcjhl2, setRcjhl2] = React.useState([]);
|
|
|
const [fuzhu, setFuzhu] = React.useState([]);
|
|
const [fuzhu, setFuzhu] = React.useState([]);
|
|
|
const [tuijian, setTuijian] = React.useState([]);
|
|
const [tuijian, setTuijian] = React.useState([]);
|
|
|
|
|
+ const beizhuFKRef = React.useRef(null);
|
|
|
|
|
+
|
|
|
const [fuzhuEnable, setFuzhuEnable] = React.useState(false);
|
|
const [fuzhuEnable, setFuzhuEnable] = React.useState(false);
|
|
|
const [rowSelectionModel, setRowSelectionModel] = React.useState({
|
|
const [rowSelectionModel, setRowSelectionModel] = React.useState({
|
|
|
type: 'include',
|
|
type: 'include',
|
|
|
ids: new Set(),
|
|
ids: new Set(),
|
|
|
});
|
|
});
|
|
|
|
|
+ const [selectedRowKeys, setSelectedRowKeys] = React.useState([]);
|
|
|
|
|
+ const onSelectChange = (newSelectedRowKeys) => {
|
|
|
|
|
+ console.log('selectedRowKeys changed: ', newSelectedRowKeys);
|
|
|
|
|
+ setSelectedRowKeys(newSelectedRowKeys);
|
|
|
|
|
+ const [newData, newHl] = handleBeizhu_djcs(beizhuFKRef.current, selectedRowKeysTable.current[0], newSelectedRowKeys, fuzhu);
|
|
|
|
|
+ if (newData) {
|
|
|
|
|
+ myTable.current.updateData(newData);
|
|
|
|
|
+ setRcjhl(newHl);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ const rowSelection = {
|
|
|
|
|
+ selectedRowKeys,
|
|
|
|
|
+ onChange: onSelectChange,
|
|
|
|
|
+ getCheckboxProps: (record) => {
|
|
|
|
|
+ return {
|
|
|
|
|
+ disabled: !fuzhuEnable
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
const highlight = React.useRef([]);
|
|
const highlight = React.useRef([]);
|
|
|
|
|
|
|
|
|
|
|
|
@@ -179,7 +204,7 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
const cldeRef = React.useRef(null);
|
|
const cldeRef = React.useRef(null);
|
|
|
const isQdrcj = React.useRef(false);
|
|
const isQdrcj = React.useRef(false);
|
|
|
const debmRef = React.useRef(null);
|
|
const debmRef = React.useRef(null);
|
|
|
- const selectedRowKeys = React.useRef([]);
|
|
|
|
|
|
|
+ const selectedRowKeysTable = React.useRef([]);
|
|
|
const afterChange = (changes, source) => {
|
|
const afterChange = (changes, source) => {
|
|
|
if (changes == null || changes.every(x=>x[2] == x[3])) {
|
|
if (changes == null || changes.every(x=>x[2] == x[3])) {
|
|
|
|
|
|
|
@@ -190,7 +215,7 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
}
|
|
}
|
|
|
setRcjhl(data);
|
|
setRcjhl(data);
|
|
|
|
|
|
|
|
- let newData = updateDercj_djcs(selectedRowKeys.current[0], data);
|
|
|
|
|
|
|
+ let newData = updateDercj_djcs(selectedRowKeysTable.current[0], data);
|
|
|
myTable.current.updateData(newData).then(function() {
|
|
myTable.current.updateData(newData).then(function() {
|
|
|
let getRow = myTable.current.getSelectedRows(); //get array of currently selected row components.
|
|
let getRow = myTable.current.getSelectedRows(); //get array of currently selected row components.
|
|
|
//getRow[0].select();
|
|
//getRow[0].select();
|
|
@@ -252,8 +277,8 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
//console.log("edited");
|
|
//console.log("edited");
|
|
|
//console.log();
|
|
//console.log();
|
|
|
let key = cell._cell.row.data['key'];
|
|
let key = cell._cell.row.data['key'];
|
|
|
-
|
|
|
|
|
- let [success, data] = updateShuliang_djcs(cell._cell.row.data['数量'], selectedRowKeys.current[0]);
|
|
|
|
|
|
|
+ myTable.current.deselectRow();
|
|
|
|
|
+ let [success, data] = updateShuliang_djcs(cell._cell.row.data['数量'], selectedRowKeysTable.current[0]);
|
|
|
if (success) {
|
|
if (success) {
|
|
|
myTable.current.updateData(data).then(function() {
|
|
myTable.current.updateData(data).then(function() {
|
|
|
let getRow = myTable.current.getRows(); //get array of currently selected row components.
|
|
let getRow = myTable.current.getRows(); //get array of currently selected row components.
|
|
@@ -289,6 +314,11 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
}, [bh]);
|
|
}, [bh]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ React.useEffect(
|
|
|
|
|
+ () => {
|
|
|
|
|
+ beizhuFKRef.current = beizhuFK;
|
|
|
|
|
+ }, [beizhuFK]
|
|
|
|
|
+ );
|
|
|
|
|
|
|
|
React.useEffect(
|
|
React.useEffect(
|
|
|
() => {
|
|
() => {
|
|
@@ -298,15 +328,55 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
let keys = Object.keys(beizhu["BZBH"]);
|
|
let keys = Object.keys(beizhu["BZBH"]);
|
|
|
for(let i = 0; i < keys.length; i++) {
|
|
for(let i = 0; i < keys.length; i++) {
|
|
|
let key = keys[i];
|
|
let key = keys[i];
|
|
|
- result.push({'id': i+1, '序号': i+1, '编号': beizhu["BZBH"][key], '说明': beizhu["SM"][key]});//序号很重要
|
|
|
|
|
|
|
+ result.push({'key': i+1, '序号': i+1, '编号': beizhu["BZBH"][key], '说明': beizhu["SM"][key]});//序号很重要
|
|
|
}
|
|
}
|
|
|
setFuzhu(result);
|
|
setFuzhu(result);
|
|
|
- setRowSelectionModel({type: 'include',
|
|
|
|
|
- ids: new Set(extractFuzhu(debmRef.current))});
|
|
|
|
|
|
|
+ let newSelect = extractFuzhu(debmRef.current);
|
|
|
|
|
+ setSelectedRowKeys(newSelect);
|
|
|
|
|
+ //setSelectedRowKeys([1]);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
}, [beizhu]
|
|
}, [beizhu]
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ React.useEffect(
|
|
|
|
|
+ () => {
|
|
|
|
|
+ myTable.current.deselectRow();
|
|
|
|
|
+ //console.log(dingeclick);
|
|
|
|
|
+ if (selectedRowKeysTable.current.length > 0 ) {
|
|
|
|
|
+ const [success, data, key] = changguidinge_djcs(JSON.parse(dingeclick), selectedRowKeysTable.current[0]);
|
|
|
|
|
+ if (success) {
|
|
|
|
|
+ myTable.current.updateData(data).then(function(){
|
|
|
|
|
+ let getRow = myTable.current.getRows(); //get array of currently selected row components.
|
|
|
|
|
+ let component = null;
|
|
|
|
|
+ for(let i = 0; i < getRow.length; i++) {
|
|
|
|
|
+ let entry = getRow[i]._row.modules.dataTree.children;
|
|
|
|
|
+ for(let j = 0; j < entry.length; j++) {
|
|
|
|
|
+ let child = entry[j];
|
|
|
|
|
+ if(child.data['key'] == key) {
|
|
|
|
|
+ //console.log(child);
|
|
|
|
|
+ component = child.component;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ component.select();
|
|
|
|
|
+ handleSelect(component);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }, [dingeclick]//常规添加定额
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
React.useEffect(
|
|
React.useEffect(
|
|
|
() => {
|
|
() => {
|
|
|
console.log("rgde changed");
|
|
console.log("rgde changed");
|
|
@@ -408,11 +478,11 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
<Stack spacing={1}>
|
|
<Stack spacing={1}>
|
|
|
<Stack direction='row' spacing={2}>
|
|
<Stack direction='row' spacing={2}>
|
|
|
<Button variant="outlined" size="small" onClick={() => {
|
|
<Button variant="outlined" size="small" onClick={() => {
|
|
|
- if (selectedRowKeys.current.length > 0) {
|
|
|
|
|
- const [success, data] = danxiangdinge_djcs(selectedRowKeys.current[0]);
|
|
|
|
|
|
|
+ if (selectedRowKeysTable.current.length > 0) {
|
|
|
|
|
+ const [success, data] = danxiangdinge_djcs(selectedRowKeysTable.current[0]);
|
|
|
if(success) {
|
|
if(success) {
|
|
|
myTable.current.updateData(data).then(function(){
|
|
myTable.current.updateData(data).then(function(){
|
|
|
- selectedRowKeys.current = [];
|
|
|
|
|
|
|
+ selectedRowKeysTable.current = [];
|
|
|
setRcjhl([]);
|
|
setRcjhl([]);
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
isQdrcj.current = true;
|
|
isQdrcj.current = true;
|
|
@@ -426,11 +496,11 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
}}
|
|
}}
|
|
|
>单项定额</Button>
|
|
>单项定额</Button>
|
|
|
<Button variant="outlined" size="small" onClick={() => {
|
|
<Button variant="outlined" size="small" onClick={() => {
|
|
|
- if (selectedRowKeys.current.length > 0) {
|
|
|
|
|
- let newData = shanchu_djcs(selectedRowKeys.current[0]);
|
|
|
|
|
|
|
+ if (selectedRowKeysTable.current.length > 0) {
|
|
|
|
|
+ let newData = shanchu_djcs(selectedRowKeysTable.current[0]);
|
|
|
myTable.current.updateData(newData).then(function(){
|
|
myTable.current.updateData(newData).then(function(){
|
|
|
- if (newData.filter(x=>x['key'] == selectedRowKeys.current[0]).length == 0) {
|
|
|
|
|
- selectedRowKeys.current = [];
|
|
|
|
|
|
|
+ if (newData.filter(x=>x['key'] == selectedRowKeysTable.current[0]).length == 0) {
|
|
|
|
|
+ selectedRowKeysTable.current = [];
|
|
|
setRcjhl([]);
|
|
setRcjhl([]);
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
isQdrcj.current = true;
|
|
isQdrcj.current = true;
|
|
@@ -450,7 +520,7 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
let newData = undo_djcs();
|
|
let newData = undo_djcs();
|
|
|
myTable.current.updateData(newData).then(function(){
|
|
myTable.current.updateData(newData).then(function(){
|
|
|
|
|
|
|
|
- selectedRowKeys.current = [];
|
|
|
|
|
|
|
+ selectedRowKeysTable.current = [];
|
|
|
setRcjhl([]);
|
|
setRcjhl([]);
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
isQdrcj.current = true;
|
|
isQdrcj.current = true;
|
|
@@ -465,7 +535,7 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
<Button variant="outlined" size="small" onClick={() => {
|
|
<Button variant="outlined" size="small" onClick={() => {
|
|
|
let newData = redo_djcs();
|
|
let newData = redo_djcs();
|
|
|
myTable.current.updateData(newData).then(function(){
|
|
myTable.current.updateData(newData).then(function(){
|
|
|
- selectedRowKeys.current = [];
|
|
|
|
|
|
|
+ selectedRowKeysTable.current = [];
|
|
|
setRcjhl([]);
|
|
setRcjhl([]);
|
|
|
setFuzhu([]);
|
|
setFuzhu([]);
|
|
|
isQdrcj.current = true;
|
|
isQdrcj.current = true;
|
|
@@ -551,47 +621,45 @@ export default function Djcs2({name, bh, rgde, jxde, clde, beizhu, clickCallback
|
|
|
|
|
|
|
|
</TabPanel>
|
|
</TabPanel>
|
|
|
<TabPanel value="3">
|
|
<TabPanel value="3">
|
|
|
- <div style={{ height: 200}}>
|
|
|
|
|
- <DataGrid disableColumnMenu
|
|
|
|
|
- getRowHeight={(params) => "auto"}
|
|
|
|
|
- localeText={{
|
|
|
|
|
- noRowsLabel: '无数据',
|
|
|
|
|
- paginationRowsPerPage: '每页行数',
|
|
|
|
|
- footerRowSelected: (count) => `共选中了${count.toLocaleString()}行`,
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- }}
|
|
|
|
|
- columns={
|
|
|
|
|
|
|
+ <Box sx={{maxHeight: `200px`}}>
|
|
|
|
|
+ <ConfigProvider
|
|
|
|
|
+ locale={zhCN}
|
|
|
|
|
+ theme={{
|
|
|
|
|
+ components: {
|
|
|
|
|
+ Table: {
|
|
|
|
|
+ /* here is your component tokens */
|
|
|
|
|
+ cellPaddingBlock : 8
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
|
|
+ }}
|
|
|
|
|
+ >
|
|
|
|
|
+
|
|
|
|
|
+ <Table
|
|
|
|
|
+ scroll={{ x: 'max-content' , y : 200}}
|
|
|
|
|
+ pagination={false}
|
|
|
|
|
+ rowSelection={rowSelection}
|
|
|
|
|
+ columns={
|
|
|
[
|
|
[
|
|
|
- { field: '序号', headerName: '序号', },
|
|
|
|
|
|
|
+ { title: '序号', dataIndex: '序号', width : 80},
|
|
|
{
|
|
{
|
|
|
- field: '编号',
|
|
|
|
|
- headerName: '编号',
|
|
|
|
|
|
|
+ title: '编号',
|
|
|
|
|
+ dataIndex: '编号',
|
|
|
|
|
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- field: '说明',
|
|
|
|
|
- headerName: '说明',
|
|
|
|
|
|
|
+ title: '说明',
|
|
|
|
|
+ dataIndex: '说明',
|
|
|
width: 550
|
|
width: 550
|
|
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
]
|
|
]
|
|
|
}
|
|
}
|
|
|
- scroll={{ x: 'max-content' }}
|
|
|
|
|
- rows={fuzhu}
|
|
|
|
|
- hideFooter={true}
|
|
|
|
|
- checkboxSelection={fuzhuEnable}
|
|
|
|
|
- rowSelectionModel={rowSelectionModel}
|
|
|
|
|
- onRowSelectionModelChange={(newRowSelectionModel) => {
|
|
|
|
|
- console.log(newRowSelectionModel);
|
|
|
|
|
-
|
|
|
|
|
- setRowSelectionModel(newRowSelectionModel);
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- }}
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ dataSource={fuzhu} />
|
|
|
|
|
+
|
|
|
|
|
+ </ConfigProvider>
|
|
|
|
|
+ </Box>
|
|
|
|
|
+
|
|
|
|
|
|
|
|
</TabPanel>
|
|
</TabPanel>
|
|
|
|
|
|