Commit e8376731 authored by 邓超's avatar 邓超

fix: 重构了台账管理模块,流程模块选择表字段并排序的逻辑

parent aec5ad02
...@@ -78,27 +78,6 @@ ...@@ -78,27 +78,6 @@
margin-bottom: 16px; margin-bottom: 16px;
height: 530px; height: 530px;
overflow-y: scroll; overflow-y: scroll;
table {
width: 100%;
td {
padding: 6px;
border: 1px solid #e8e8e8;
}
thead {
tr {
font-weight: 600;
background: #fafafa;
}
td {
width: 12rem;
}
}
tbody {
tr:hover {
background-color: #ededed;
}
}
}
} }
} }
.header { .header {
......
...@@ -34,6 +34,7 @@ const NodeEdit = props => { ...@@ -34,6 +34,7 @@ const NodeEdit = props => {
const [backType, setBackType] = useState([]); // 反馈类型 const [backType, setBackType] = useState([]); // 反馈类型
const [eventTable, setEventTable] = useState([]); // 表名 const [eventTable, setEventTable] = useState([]); // 表名
const [isDisable, setIsDisable] = useState(); // 允许回退是否可选择 const [isDisable, setIsDisable] = useState(); // 允许回退是否可选择
const [filedData, setFiledData] = useState([]); // 已选字段列表
const [form] = Form.useForm(); const [form] = Form.useForm();
useEffect(() => { useEffect(() => {
form.resetFields(); form.resetFields();
...@@ -100,6 +101,9 @@ const NodeEdit = props => { ...@@ -100,6 +101,9 @@ const NodeEdit = props => {
loadEventFields({ eventTableName: value.TableName }).then(res => { loadEventFields({ eventTableName: value.TableName }).then(res => {
if (res.code === 0) { if (res.code === 0) {
let defaultCheckedList = value[val] ? value[val].split(',') : []; let defaultCheckedList = value[val] ? value[val].split(',') : [];
// 保存所有的字段用于右侧显示
setFiledData(defaultCheckedList);
let allFields = []; // 所有得字段用来判断是否为外部字段 let allFields = []; // 所有得字段用来判断是否为外部字段
// 处理树形结构 // 处理树形结构
let checkList = res.data.map(item => { let checkList = res.data.map(item => {
...@@ -393,6 +397,7 @@ const NodeEdit = props => { ...@@ -393,6 +397,7 @@ const NodeEdit = props => {
handleCancel={() => setShowField(false)} handleCancel={() => setShowField(false)}
fieldList={fieldList} fieldList={fieldList}
onSubumit={val => setFiled(val)} onSubumit={val => setFiled(val)}
filedData={filedData}
/> />
</Drawer> </Drawer>
); );
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState, useRef } from 'react';
import Sortable from 'sortablejs';
import { Modal, Divider, Checkbox } from 'antd'; import { Modal, Divider, Checkbox } from 'antd';
import styles from '../../flowNode.less'; import styles from '../../flowNode.less';
import DragTable from '@/components/DragTable/DragTable';
const CheckboxGroup = Checkbox.Group; const CheckboxGroup = Checkbox.Group;
const Fieldselection = props => { const Fieldselection = props => {
const { onSubumit, handleCancel, visible, fieldList } = props; // 自定义获取改变后的值hooks
const usePrevious = value => {
const ref = useRef();
useEffect(() => {
ref.current = value;
});
return ref.current;
};
const { onSubumit, handleCancel, visible, fieldList, filedData } = props;
const [checkList, setCheckList] = useState([]); const [checkList, setCheckList] = useState([]);
const [selectList, setSelectList] = useState([]); // 选中字段列表 const [selectList, setSelectList] = useState([]); // 选中字段列表
const [isFirst, setIsFirst] = useState(true);
const prevAmount = usePrevious({ checkList });
const columns = [
{
title: '字段名',
dataIndex: 'name',
width: 150,
key: 'name',
},
];
useEffect(() => { useEffect(() => {
if (visible) { if (visible) {
setCheckList(fieldList); setCheckList(fieldList);
let newArr = filedData.map(item => {
return { name: item };
});
setSelectList(newArr);
} else {
setSelectList([]);
setCheckList([]);
setIsFirst(true);
} }
}, [visible]); }, [visible]);
useEffect(() => { useEffect(() => {
let arr = []; if (prevAmount) {
if (checkList.length < 0) { selectAll();
}
}, [checkList]);
const selectAll = () => {
if (!visible) {
return;
}
// 是否第一次保存数据
if (isFirst) {
setIsFirst(false);
return; return;
} }
checkList.forEach(element => { // 新的选择后的数据(已选字段列表数据)
arr = [...arr, ...element.defaultCheckedList]; let newSelect = JSON.parse(JSON.stringify(selectList));
// 当前选中的
let currentArr = [];
// 上一次选中的
let preArr = [];
// 获取扁平化后的数组
checkList.forEach(item => {
currentArr = [...currentArr, ...item.defaultCheckedList];
}); });
setSelectList(arr); prevAmount.checkList.forEach(item => {
// 初始化拖拽 preArr = [...preArr, ...item.defaultCheckedList];
setTimeout(() => { });
dragSort(); currentArr = new Set(currentArr);
}, 0); preArr = new Set(preArr);
}, [checkList]); // 找出相同的部分
let someArr = [...new Set([...currentArr].filter(x => preArr.has(x)))];
// 复选框事选中还是取消选中 add or del
let checkType;
if ([...currentArr].length > [...preArr].length) {
checkType = 'add';
} else if ([...currentArr].length < [...preArr].length) {
checkType = 'del';
}
if (checkType === 'add') {
// 添加新选中的元素
currentArr.forEach(item => {
if (someArr.indexOf(item) === -1) {
newSelect.push({ name: item });
}
});
} else if (checkType === 'del') {
// 删除取消勾选的元素
preArr.forEach(item => {
if (someArr.indexOf(item) === -1) {
newSelect.splice(newSelect.findIndex(ele => ele.name === item), 1);
}
});
}
console.log(newSelect, 'newSelect');
setSelectList(newSelect);
};
// 提交表单 // 提交表单
const onFinish = () => { const onFinish = () => {
onSubumit(selectList); let callArr = selectList.map(item => item.name);
onSubumit(callArr);
}; };
// 复选框 // 复选框
const onChange = (list, index) => { const onChange = (list, index) => {
...@@ -55,23 +124,10 @@ const Fieldselection = props => { ...@@ -55,23 +124,10 @@ const Fieldselection = props => {
return chooseList; return chooseList;
}); });
}; };
// 拖拽回调
// 初始化排序 const dragCallBack = arr => {
const dragSort = () => { if (arr) {
let el = document.getElementById('doctor-drag-items');
if (el) {
Sortable.create(el, {
animation: 100, // 动画参数
onEnd(evt) {
// 拖拽完毕之后发生,只需关注该事件
let arr = [];
let len = evt.from.children;
len.forEach(item => {
arr.push(item.getAttribute('drag-id'));
});
setSelectList(arr); setSelectList(arr);
},
});
} }
}; };
return ( return (
...@@ -126,30 +182,16 @@ const Fieldselection = props => { ...@@ -126,30 +182,16 @@ const Fieldselection = props => {
</Divider> </Divider>
</div> </div>
<div className={styles.doctorTable}> <div className={styles.doctorTable}>
<table> <DragTable
<thead> bordered
<tr> rowKey={record => record.name}
<td>字段名</td> columns={columns}
</tr> dataSource={selectList}
</thead> pagination={false}
<tbody id="doctor-drag-items"> size="small"
{selectList && selectList.length > 0 ? ( dragCallBack={dragCallBack}
selectList.map((item, index) => ( ItemTypes="stadingOrder"
<tr drag-id={item} key={index} style={{ cursor: 'move' }}> />
<td>
<span title={item}>{item}</span>
</td>
</tr>
))
) : (
<tr>
<td colSpan="10" style={{ textAlign: 'center' }}>
暂无数据
</td>
</tr>
)}
</tbody>
</table>
</div> </div>
</div> </div>
</div> </div>
......
/* eslint-disable indent */
import React, { useState, useEffect, useCallback, useRef } from 'react'; import React, { useState, useEffect, useCallback, useRef } from 'react';
import { Form, Modal, Space, Divider, Radio, Checkbox } from 'antd'; import { Form, Modal, Space, Divider, Radio, Checkbox } from 'antd';
import styles from './standingBook.less' import styles from './standingBook.less';
import Sortable from 'sortablejs'; import Sortable from 'sortablejs';
import DragTable from '@/components/DragTable/DragTable';
const CheckboxGroup = Checkbox.Group; const CheckboxGroup = Checkbox.Group;
const AddModal = props => { const AddModal = props => {
const { callBackSubmit = () => { }, isType, pickItem, visible, filed, characterValue, newCheckedList } = props; // 自定义获取改变后的值hooks
const usePrevious = value => {
const ref = useRef();
useEffect(() => {
ref.current = value;
});
return ref.current;
};
const {
callBackSubmit = () => {},
isType,
pickItem,
visible,
filed,
characterValue,
newCheckedList,
} = props;
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [value, setValue] = useState(''); const [value, setValue] = useState('');
const [checkValue, setCheckValue] = useState([]); const [checkValue, setCheckValue] = useState([]);
const [form] = Form.useForm(); const [form] = Form.useForm();
const [title, setTitle] = useState([]) const [title, setTitle] = useState([]);
const { Item } = Form; const { Item } = Form;
const [checkedList, setCheckedList] = useState([]);//选中的复选框内容 const [checkedList, setCheckedList] = useState([]); // 选中的复选框内容
const [indeterminate, setIndeterminate] = useState([]); const [indeterminate, setIndeterminate] = useState([]);
const [checkAll, setCheckAll] = useState([]); const [checkAll, setCheckAll] = useState([]);
const [selectData, setSelectData] = useState([]) const [selectData, setSelectData] = useState([]);
let objArr = [] const [isFirst, setIsFirst] = useState(true);
const prevAmount = usePrevious({ checkedList });
const onChangeList = (list, index, title) => { const onChangeList = (list, index, title) => {
const checkedListArr = [...checkedList] const checkedListArr = [...checkedList];
checkedListArr[index] = list checkedListArr[index] = list;
setCheckedList(checkedListArr); setCheckedList(checkedListArr);
const indeterminateArr = [...indeterminate] const indeterminateArr = [...indeterminate];
const checkAllArr = [...checkAll] const checkAllArr = [...checkAll];
indeterminateArr[index] = !!list.length && list.length < filed[title].length indeterminateArr[index] =
checkAllArr[index] = list.length === filed[title].length !!list.length && list.length < filed[title].length;
setIndeterminate(indeterminateArr) checkAllArr[index] = list.length === filed[title].length;
setIndeterminate(indeterminateArr);
setCheckAll(checkAllArr); setCheckAll(checkAllArr);
}; };
const onCheckAllChange = e => { const onCheckAllChange = e => {
const indeterminateArr = [...indeterminate] const indeterminateArr = [...indeterminate];
const checkAllArr = [...checkAll] const checkAllArr = [...checkAll];
const checkedListArr = [...checkedList] const checkedListArr = [...checkedList];
checkAllArr[e.target.index] = e.target.checked checkAllArr[e.target.index] = e.target.checked;
indeterminateArr[e.target.index] = false indeterminateArr[e.target.index] = false;
e.target.checked ? checkedListArr[e.target.index] = e.target.checkvalue : checkedListArr[e.target.index] = [] // eslint-disable-next-line no-unused-expressions
e.target.checked
? (checkedListArr[e.target.index] = e.target.checkvalue)
: (checkedListArr[e.target.index] = []);
setCheckedList(checkedListArr); setCheckedList(checkedListArr);
setIndeterminate(indeterminateArr); setIndeterminate(indeterminateArr);
setCheckAll(checkAllArr); setCheckAll(checkAllArr);
}; };
//监听用户选择的字段名 // 监听用户选择的字段名
useEffect(() => { useEffect(() => {
selectAll() if (prevAmount) {
selectAll();
}
}, [checkedList]); }, [checkedList]);
const selectAll = () => { const selectAll = () => {
objArr = [] if (!visible) {
checkedList.map(item => { return;
objArr = objArr.concat(item) }
}) // 是否第一次保存数据
setSelectData(objArr) if (isFirst) {
setIsFirst(false);
return;
} }
// 新的选择后的数据(已选字段列表数据)
let newSelect = JSON.parse(JSON.stringify(selectData));
// 当前选中的
let currentArr;
// 上一次选中的
let preArr;
// 获取扁平化后的数组
currentArr = new Set(checkedList.flat());
preArr = new Set(prevAmount.checkedList.flat());
const onSubmit = () => { // 找出相同的部分
isType === 'rule' ? callBackSubmit(`${value === '无' || value === '' ? '' : value + ','}${checkValue.join(',')}`) : callBackSubmit({ checkedList, str: selectData.join(","), pickItem }); let someArr = [...new Set([...currentArr].filter(x => preArr.has(x)))];
// 复选框事选中还是取消选中 add or del
let checkType;
if ([...currentArr].length > [...preArr].length) {
checkType = 'add';
} else if ([...currentArr].length < [...preArr].length) {
checkType = 'del';
}
if (checkType === 'add') {
// 添加新选中的元素
currentArr.forEach(item => {
if (someArr.indexOf(item) === -1) {
newSelect.push({ name: item });
}
});
} else if (checkType === 'del') {
// 删除取消勾选的元素
preArr.forEach(item => {
if (someArr.indexOf(item) === -1) {
newSelect.splice(newSelect.findIndex(ele => ele.name === item), 1);
}
});
}
setSelectData(newSelect);
}; };
const onSubmit = () => {
let newArr = selectData.map(item => item.name);
callBackSubmit({ checkedList, str: newArr.join(','), pickItem });
};
const columns = [
{
title: '字段名',
dataIndex: 'name',
width: 150,
key: 'name',
},
];
useEffect(() => { useEffect(() => {
if (isType != '') { if (visible) {
let arr = Object.keys(filed) let arr = Object.keys(filed);
console.log(arr) setTitle(arr);
console.log(newCheckedList) let checkArr = [];
console.log(characterValue) let indeterminateArr = [];
setTitle(arr) let checkAllArr = [];
let checkArr = []
let indeterminateArr = []
let checkAllArr = []
arr.map((item, index) => { arr.map((item, index) => {
checkArr[index] = [] checkArr[index] = [];
newCheckedList.map(checkItem => { newCheckedList.map(checkItem => {
if (filed[item].includes(checkItem)) { if (filed[item].includes(checkItem)) {
checkArr[index].push(checkItem) checkArr[index].push(checkItem);
}
})
indeterminateArr.push(!!checkArr[index].length && checkArr[index].length < filed[item].length)
checkAllArr.push(checkArr[index].length === filed[item].length)
})
console.log(checkArr)
setCheckedList(checkArr)
setIndeterminate(indeterminateArr)
setCheckAll(checkAllArr)
let newArr = characterValue.length ? characterValue.split(",") : []
setSelectData(newArr)
draftSort()
}
}, [visible]);
//拖拽初始化及逻辑
const draftSort = () => {
let el = document.getElementById('doctor-drag-items');
if (el) {
let sortable = Sortable.create(el, {
animation: 100, //动画参数
onEnd: function (evt) { //拖拽完毕之后发生,只需关注该事件
let arr = [];
let len = evt.from.children.length;
for (let i = 0; i < len; i++) {
arr.push(evt.from.children[i].getAttribute('drag-id'))
}
setSelectData(arr)
} }
}); });
indeterminateArr.push(
!!checkArr[index].length &&
checkArr[index].length < filed[item].length,
);
checkAllArr.push(checkArr[index].length === filed[item].length);
});
setCheckedList(checkArr);
setIndeterminate(indeterminateArr);
setCheckAll(checkAllArr);
let newArr = newCheckedList.map(item => {
return { name: item };
});
if (newArr.length === 1 && newArr[0].name === '') {
newArr = [];
} }
setSelectData(newArr);
} else {
// 弹窗关闭时清空数据
setSelectData([]);
setCheckedList([]);
setCheckAll([]);
setIndeterminate([]);
setIsFirst(true);
} }
}, [visible]);
const dragCallBack = arr => {
if (arr && !isFirst) {
setSelectData(arr);
}
};
return ( return (
<Modal <Modal
title={isType === 'rule' ? '选择验证规则' : '字段集选择'} title={isType === 'rule' ? '选择验证规则' : '字段集选择'}
bodyStyle={{ width: '100%', minHeight: '100px' }} bodyStyle={{ width: '100%', minHeight: '100px' }}
style={{ top: '10px' }} style={{ top: '10px' }}
width="700px" width="700px"
destroyOnClose centered
centered={true}
maskClosable={false} maskClosable={false}
cancelText="取消" cancelText="取消"
okText="确认" okText="确认"
{...props} {...props}
onOk={() => onSubmit()} onOk={() => onSubmit()}
confirmLoading={loading} confirmLoading={loading}
forceRender={true} forceRender
getContainer={false} getContainer={false}
destroyOnClose
> >
{visible && ( {visible && (
<div className={styles.listCard}> <div className={styles.listCard}>
<div className={styles.cardItem} style={{ borderRight: '1px solid #99bbe8' }}> <div
<Divider orientation="left" style={{ margin: '0 0 10px 0', backgroundColor: '#dfe8f6' }}>待选字段列表</Divider> className={styles.cardItem}
style={{ borderRight: '1px solid #99bbe8' }}
>
<Divider
orientation="left"
style={{ margin: '0 0 10px 0', backgroundColor: '#dfe8f6' }}
>
待选字段列表
</Divider>
<div className={styles.cardContent}> <div className={styles.cardContent}>
{title.map((item, index) => { {title.map((item, index) => {
return <div className={styles.cardItemData} key={index}> return (
<Divider orientation="left" style={{ margin: '0 0 10px 0', color: '#15428b', borderTopColor: '#99bbe8' }}>{item} <Checkbox indeterminate={indeterminate[index]} onChange={onCheckAllChange} index={index} checkvalue={filed[item]} checked={checkAll[index]}> </Checkbox></Divider> <div className={styles.cardItemData} key={index}>
<CheckboxGroup options={filed[item]} value={checkedList[index]} onChange={(e) => onChangeList(e, index, item)} /></div> <Divider
orientation="left"
style={{
margin: '0 0 10px 0',
color: '#15428b',
borderTopColor: '#99bbe8',
}}
>
{item}{' '}
<Checkbox
indeterminate={indeterminate[index]}
onChange={onCheckAllChange}
index={index}
checkvalue={filed[item]}
checked={checkAll[index]}
>
{' '}
</Checkbox>
</Divider>
<CheckboxGroup
options={filed[item]}
value={checkedList[index]}
onChange={e => onChangeList(e, index, item)}
/>
</div>
);
})} })}
</div> </div>
</div> </div>
<div className={styles.cardItem}> <div className={styles.cardItem}>
<Divider orientation="left" style={{ margin: '0 0 10px 0', backgroundColor: '#dfe8f6' }}>已选字段列表</Divider> <Divider
orientation="left"
style={{ margin: '0 0 10px 0', backgroundColor: '#dfe8f6' }}
>
已选字段列表
</Divider>
<div className={styles.cardContent}> <div className={styles.cardContent}>
<div className={styles.doctorTable}> <div className={styles.doctorTable}>
<table> <DragTable
<thead> bordered
<tr> style={{ marginBottom: '10px' }}
<td>字段名</td> rowKey={record => record.name}
</tr> columns={columns}
</thead> dataSource={selectData}
<tbody id='doctor-drag-items'> pagination={false}
{selectData && selectData.length > 0 ? size="small"
selectData.map((item, index) => { dragCallBack={dragCallBack}
return <tr drag-id={item} key={index} style={{ cursor: 'move' }}> ItemTypes="stadingOrder"
<td><span title={item}>{item}</span></td> />
</tr>
})
: <tr><td colSpan='10' style={{ textAlign: 'center' }}>暂无数据</td></tr>
}
</tbody>
</table>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
) )}
}
</Modal> </Modal>
); );
}; };
......
...@@ -16,12 +16,15 @@ import { ...@@ -16,12 +16,15 @@ import {
PlusSquareFilled, PlusSquareFilled,
RightOutlined, RightOutlined,
EditTwoTone, EditTwoTone,
DeleteOutlined DeleteOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import classnames from 'classnames'; import classnames from 'classnames';
import PageContainer from '@/components/BasePageContainer'; import PageContainer from '@/components/BasePageContainer';
import { GetCM_Ledger_LoadLedgers, CM_Ledger_RmoveLedger } from '@/services/standingBook/api'; import {
import AddModal from './editorModal' GetCM_Ledger_LoadLedgers,
CM_Ledger_RmoveLedger,
} from '@/services/standingBook/api';
import AddModal from './editorModal';
import styles from './standingBook.less'; import styles from './standingBook.less';
const standingBook = props => { const standingBook = props => {
const [allData, setAllData] = useState([]); const [allData, setAllData] = useState([]);
...@@ -40,7 +43,6 @@ const standingBook = props => { ...@@ -40,7 +43,6 @@ const standingBook = props => {
setFormObj(record); setFormObj(record);
setIsType('edit'); setIsType('edit');
setIsVisible(true); setIsVisible(true);
}; };
const Submit = prop => { const Submit = prop => {
setIsVisible(false); setIsVisible(false);
...@@ -74,21 +76,18 @@ const standingBook = props => { ...@@ -74,21 +76,18 @@ const standingBook = props => {
dataIndex: 'fields', dataIndex: 'fields',
key: 'fields', key: 'fields',
align: 'center', align: 'center',
}, },
{ {
title: '检索字段', title: '检索字段',
dataIndex: 'searchFields', dataIndex: 'searchFields',
key: 'searchFields', key: 'searchFields',
align: 'center', align: 'center',
}, },
{ {
title: '添加字段', title: '添加字段',
dataIndex: 'addFields', dataIndex: 'addFields',
key: 'addFields', key: 'addFields',
align: 'center', align: 'center',
}, },
{ {
...@@ -96,21 +95,18 @@ const standingBook = props => { ...@@ -96,21 +95,18 @@ const standingBook = props => {
dataIndex: 'editFields', dataIndex: 'editFields',
key: 'editFields', key: 'editFields',
align: 'center', align: 'center',
}, },
{ {
title: '前端字段', title: '前端字段',
dataIndex: 'webFields', dataIndex: 'webFields',
key: 'webFields', key: 'webFields',
align: 'center', align: 'center',
}, },
{ {
title: '手持字段', title: '手持字段',
dataIndex: 'mobileFields', dataIndex: 'mobileFields',
key: 'mobileFields', key: 'mobileFields',
align: 'center', align: 'center',
}, },
{ {
title: '操作', title: '操作',
...@@ -125,15 +121,10 @@ const standingBook = props => { ...@@ -125,15 +121,10 @@ const standingBook = props => {
/> />
</Tooltip> </Tooltip>
<Tooltip title="删除此表"> <Tooltip title="删除此表">
<Popconfirm <Popconfirm
placement="bottomRight" placement="bottomRight"
title={ title={<p>是否删除此表</p>}
<p>
是否删除此表
</p>
}
// title={`确认删除用户${currentUser}`} // title={`确认删除用户${currentUser}`}
okText="确认" okText="确认"
cancelText="取消" cancelText="取消"
...@@ -142,26 +133,24 @@ const standingBook = props => { ...@@ -142,26 +133,24 @@ const standingBook = props => {
<DeleteOutlined style={{ fontSize: '16px', color: '#e86060' }} /> <DeleteOutlined style={{ fontSize: '16px', color: '#e86060' }} />
</Popconfirm> </Popconfirm>
</Tooltip> </Tooltip>
</Space> </Space>
), ),
}, },
]; ];
useEffect(() => { useEffect(() => {
setTreeLoading(true); setTreeLoading(true);
GetCM_Ledger_LoadLedgers().then(res => { GetCM_Ledger_LoadLedgers().then(res => {
setTreeLoading(false); setTreeLoading(false);
if (res.msg === 'Ok' && res.data.root) { if (res.msg === 'Ok' && res.data.root) {
console.log(res.data.root) console.log(res.data.root);
setMaxLength(res.data.root.length + 1) setMaxLength(res.data.root.length + 1);
let arr = formateArrDataA(res.data.root, 'type') let arr = formateArrDataA(res.data.root, 'type');
let newArr = [] let newArr = [];
Object.keys(arr).map((item, index) => { Object.keys(arr).map((item, index) => {
newArr.push(item) newArr.push(item);
}) });
console.log(arr) console.log(arr);
setAllData(arr); setAllData(arr);
// 第一次进入展示第一页 不是第一次进入根据当前选择的来进行展示 // 第一次进入展示第一页 不是第一次进入根据当前选择的来进行展示
flag === 0 ? setPickItem(newArr[0]) : setPickItem(pickItem); flag === 0 ? setPickItem(newArr[0]) : setPickItem(pickItem);
...@@ -169,47 +158,46 @@ const standingBook = props => { ...@@ -169,47 +158,46 @@ const standingBook = props => {
setTableData(newArr); setTableData(newArr);
} }
}); });
}, [flag]); }, [flag]);
const formateArrDataA = (initialArr, name) => { const formateArrDataA = (initialArr, name) => {
console.log(initialArr) console.log(initialArr);
console.log(name) console.log(name);
// 判定传参是否符合规则 // 判定传参是否符合规则
if (!(initialArr instanceof Array)) { if (!(initialArr instanceof Array)) {
return '请传入正确格式的数组' return '请传入正确格式的数组';
} }
if (!name) { if (!name) {
return '请传入对象属性' return '请传入对象属性';
} }
//先获取一下这个数组中有多少个"name" // 先获取一下这个数组中有多少个"name"
let nameArr = [] let nameArr = [];
for (let i in initialArr) { for (let i in initialArr) {
if (nameArr.indexOf(initialArr[i][`${name}`]) === -1) { if (nameArr.indexOf(initialArr[i][`${name}`]) === -1) {
nameArr.push(initialArr[i][`${name}`]) nameArr.push(initialArr[i][`${name}`]);
} }
} }
//新建一个包含多个list的结果对象 // 新建一个包含多个list的结果对象
let tempObj = {} let tempObj = {};
// 根据不同的"name"生成多个数组 // 根据不同的"name"生成多个数组
for (let k in nameArr) { for (let k in nameArr) {
for (let j in initialArr) { for (let j in initialArr) {
if (initialArr[j][`${name}`] == nameArr[k]) { if (initialArr[j][`${name}`] == nameArr[k]) {
// 每次外循环时新建一个对应"name"的数组, 内循环时当前数组不变 // 每次外循环时新建一个对应"name"的数组, 内循环时当前数组不变
tempObj[nameArr[k]] = tempObj[nameArr[k]] || [] tempObj[nameArr[k]] = tempObj[nameArr[k]] || [];
tempObj[nameArr[k]].push(initialArr[j]) tempObj[nameArr[k]].push(initialArr[j]);
} }
} }
} }
for (let keys in tempObj) { for (let keys in tempObj) {
let arr = [] let arr = [];
tempObj[keys].map((item, index) => { tempObj[keys].map((item, index) => {
tempObj[keys] = arr; tempObj[keys] = arr;
item.key = index item.key = index;
arr.push(item) arr.push(item);
}) });
}
return tempObj
} }
return tempObj;
};
// 删除表字段 // 删除表字段
const deleteChart = record => { const deleteChart = record => {
CM_Ledger_RmoveLedger({ ledgerId: record.ID }).then(res => { CM_Ledger_RmoveLedger({ ledgerId: record.ID }).then(res => {
...@@ -229,34 +217,34 @@ const standingBook = props => { ...@@ -229,34 +217,34 @@ const standingBook = props => {
} }
}); });
}; };
//显示弹框 // 显示弹框
const showPopup = () => { const showPopup = () => {
setIsVisible(true) setIsVisible(true);
setIsType('add') setIsType('add');
} };
const onSubmit = () => { const onSubmit = () => {
setIsVisible(false); setIsVisible(false);
setFlag(flag + 1) setFlag(flag + 1);
}; };
return ( return (
<PageContainer className={styles.userManageContainer}> <PageContainer className={styles.userManageContainer}>
<div className={styles.contentContainers}> <div className={styles.contentContainers}>
<Spin spinning={treeLoading} tip="loading..."> <Spin spinning={treeLoading} tip="loading...">
<Card <Card
className={classnames({ className={classnames({
[styles.orgContainer]: true, [styles.orgContainer]: true,
[styles.orgContainerHide]: !treeVisible, [styles.orgContainerHide]: !treeVisible,
})} })}
> >
{treeVisible ? <> {treeVisible ? (
<>
<div> <div>
<span <span
style={{ style={{
fontSize: '15px ', fontSize: '15px ',
fontWeight: 'bold', fontWeight: 'bold',
color: '#333E51', color: '#333E51',
paddingLeft: '14px' paddingLeft: '14px',
}} }}
> >
台账列表 台账列表
...@@ -268,21 +256,33 @@ const standingBook = props => { ...@@ -268,21 +256,33 @@ const standingBook = props => {
fontSize: '25px', fontSize: '25px',
verticalAlign: 'middle', verticalAlign: 'middle',
float: 'right', float: 'right',
paddingRight: '14px' paddingRight: '14px',
}} }}
onClick={e => showPopup()} onClick={e => showPopup()}
/> />
</Tooltip> </Tooltip>
<hr style={{ width: '100%', color: '#eeecec' }} /> <hr style={{ width: '100%', color: '#eeecec' }} />
{ {tableData.length > 0 &&
tableData.length>0 && (tableData.map((item, index) => { tableData.map((item, index) => {
return <div className={classnames({ return (
<div
className={classnames({
[styles.listItem]: true, [styles.listItem]: true,
[styles.pickItem]: item === pickItem, [styles.pickItem]: item === pickItem,
})} onClick={e => setPickItem(item)} key={index}>{item}{allData[item] ? allData[item].length : ''}{item === pickItem ? <RightOutlined /> : ''} </div> })}
}) onClick={e => setPickItem(item)}
key={index}
>
{item}{allData[item] ? allData[item].length : ''}{' '}
{item === pickItem ? <RightOutlined /> : ''}{' '}
</div>
);
})}
</div>
</>
) : (
''
)} )}
</div></> : ''}
<div className={styles.switcher}> <div className={styles.switcher}>
{treeVisible && ( {treeVisible && (
...@@ -306,11 +306,14 @@ const standingBook = props => { ...@@ -306,11 +306,14 @@ const standingBook = props => {
> >
<Table <Table
size="small" size="small"
rowKey='ID' rowKey="ID"
bordered bordered
onRow={record => { onRow={record => {
return { return {
onDoubleClick: event => {event.stopPropagation(); editor(record)}, //双击 onDoubleClick: event => {
event.stopPropagation();
editor(record);
}, // 双击
}; };
}} }}
columns={columns} columns={columns}
...@@ -328,11 +331,17 @@ const standingBook = props => { ...@@ -328,11 +331,17 @@ const standingBook = props => {
}} }}
/> />
</div> </div>
<AddModal visible={isVisible} type={isType} formObj={formObj} maxLength={maxLength} callBackSubmit={onSubmit} onCancel={() => setIsVisible(false)} tableData={tableData} /> <AddModal
visible={isVisible}
type={isType}
formObj={formObj}
maxLength={maxLength}
callBackSubmit={onSubmit}
onCancel={() => setIsVisible(false)}
tableData={tableData}
/>
</div> </div>
</PageContainer> </PageContainer>
); );
}; };
export default standingBook; export default standingBook;
...@@ -295,7 +295,7 @@ ...@@ -295,7 +295,7 @@
padding: 0.5rem; padding: 0.5rem;
} }
.cardContent{ .cardContent{
height: 30rem; height: 40rem;
overflow-y: scroll; overflow-y: scroll;
width: 19.5rem; width: 19.5rem;
} }
...@@ -311,24 +311,6 @@ ...@@ -311,24 +311,6 @@
.doctorTable { .doctorTable {
margin-bottom: 16px; margin-bottom: 16px;
table {
width: 100%;
td {
padding: 6px;
border: 1px solid #e8e8e8;
}
thead {
tr {
font-weight: 600;
background: #FAFAFA;
}
}
tbody{
tr:hover{
background-color:#ededed ;
}
}
}
} }
.formData{ .formData{
height: calc(100vh - 170px); height: calc(100vh - 170px);
......
...@@ -22,7 +22,7 @@ import CurrentSolution from '@/pages/currentSolution/CurrentSolution'; ...@@ -22,7 +22,7 @@ import CurrentSolution from '@/pages/currentSolution/CurrentSolution';
import UserManage from '../pages/userCenter/userManage/UserManage'; import UserManage from '../pages/userCenter/userManage/UserManage';
import RoleManage from '@/pages/userCenter/roleManage/RoleManage'; import RoleManage from '@/pages/userCenter/roleManage/RoleManage';
import SiteManage from '../pages/userCenter/siteManage/SiteManage'; import SiteManage from '../pages/userCenter/siteManage/SiteManage';
import SiteManageV2 from '../pages/userCenter/siteManageV2/SiteManage'; import SiteManageV2 from '../pages/userCenter/siteManageV2/siteManage';
import Dictionary from '../pages/dataCenter/dictionary'; import Dictionary from '../pages/dataCenter/dictionary';
import Dictionary1 from '../pages/dataCenter/dictionary1'; import Dictionary1 from '../pages/dataCenter/dictionary1';
// import Search from '../pages/dataCenter/search'; // import Search from '../pages/dataCenter/search';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment