Commit 195484da by zhaochengxiang

右键

parent eb9cb921
import React, { useState, useCallback, useRef, useEffect, useContext } from 'react';
import React, { useState, useCallback, useRef, useEffect, useContext, useMemo } from 'react';
import { Input, Form, Typography, Button, Select, Row, Col, Popover, Checkbox, Tooltip, Table, Pagination, Space } from 'antd';
import { CheckOutlined, PlusOutlined, QuestionCircleOutlined, DeleteOutlined } from '@ant-design/icons';
import { DndProvider, useDrag, useDrop } from 'react-dnd';
......@@ -290,6 +290,8 @@ export const ImportActionTable = (props) => {
const termsRef = useRef(null);
const autoTranslateRef = useRef(false);
const app = useContext(AppContext)
const { show } = useContextMenu({
id: MENU_ID,
});
......@@ -417,23 +419,6 @@ export const ImportActionTable = (props) => {
return '';
}
},
// {
// title: '重点关注',
// width: 75,
// dataIndex: 'needAttention',
// editable: (type==='model'?true:false),
// render: (needAttention, record, index) => {
// if (!needAttention) {
// return '-';
// } else if (needAttention === true) {
// return (
// <CheckOutlined />
// )
// }
// return '';
// }
// },
{
title: '业务含义',
dataIndex: 'remark',
......@@ -567,6 +552,41 @@ export const ImportActionTable = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [validateReports, editable, editingKey])
const menuData = useMemo(() => {
let newMenuData = []
if (action === 'flow') {
if (currentItem?.isPossibleNewRecommendedDefinition?.possible) {
newMenuData.push({
title: '加入标准',
key: 'addToStandard',
})
}
if (currentItem?.isPossibleNewTerm?.possible) {
newMenuData.push({
title: '加入词汇',
key: 'addToWord',
})
}
}
if (editable) {
newMenuData = [...newMenuData, ...[
{ title: '在上方插入行', key: 'up' },
{ title: '在下方插入行', key: 'down' },
{ title: '删除', key: 'delete' },
]]
if (originAction !== 'flow') {
newMenuData.push({
title: currentItem?.needAttention ? '取消送审关注': '送审关注',
key: 'attention'
})
}
}
return newMenuData;
}, [currentItem, action, originAction, editable])
const isEditing = (record) => record?.iid === editingKey;
const onAddClick = (event) => {
......@@ -600,7 +620,7 @@ export const ImportActionTable = (props) => {
})
}
const insertToFront = (record) => {
const onInsertToFrontClick = (record) => {
save().then(result => {
if (result) {
setKeywordCondition({ keyword: '', needFilter: false });
......@@ -631,7 +651,7 @@ export const ImportActionTable = (props) => {
})
}
const insertToBack = (record) => {
const onInsertToBackClick = (record) => {
save().then(result => {
if (result) {
setKeywordCondition({ keyword: '', needFilter: false });
......@@ -693,7 +713,7 @@ export const ImportActionTable = (props) => {
onChange && onChange(newData);
}
const remove = (record) => {
const onRemoveClick = (record) => {
if (record.iid !== editingKey) {
save().then(result => {
if (result) {
......@@ -705,6 +725,50 @@ export const ImportActionTable = (props) => {
}
}
const onAttentionClick = (record) => {
if (record.needAttention === null) {
record.needAttention = true;
} else {
record.needAttention = !record.needAttention;
}
const newData = [...moveRowRef.current.data];
const index = newData.findIndex((item) => record.iid === item.iid);
if (index !== -1) {
newData.splice(index, 1, {...record});
setData(newData);
moveRowRef.current.data = newData;
onChange && onChange(newData, false);
if (!record.needAttention) {
preSaveDataModel(record);
}
}
}
const onAddToStandardClick = (record) => {
app.setGlobalState?.({
message: 'data-govern-show-standard-create',
data: {
column: {...record, ...{ modelName: modelerData?.name, modelCnName: modelerData?.cnName }},
type: record?.isPossibleNewRecommendedDefinition?.type
}
});
}
const onAddToWordClick = (record) => {
app.setGlobalState?.({
message: 'data-govern-show-standard-create',
data: {
column: record,
type: record?.isPossibleNewTerm?.type
}
})
}
const preSaveDataModel = (attribute) => {
dispatch({
type: 'datamodel.preSaveDataModel',
......@@ -916,129 +980,9 @@ export const ImportActionTable = (props) => {
setSuggests([]);
};
const editableColumn = [
...cols,
{
title: '操作',
dataIndex: 'action',
width: (action==='flow')?220: ((originAction==='flow')?90:130),
fixed: 'right',
render: (_, record) => {
return (
<AppContext.Consumer>
{
value => <React.Fragment>
{
(action==='flow') && <React.Fragment>
{
record?.isPossibleNewRecommendedDefinition?.possible && <Typography.Link className='mr-3' onClick={(event) => {
event.stopPropagation();
value?.setGlobalState && value?.setGlobalState({
message: 'data-govern-show-standard-create',
data: {
column: {...record, ...{ modelName: modelerData?.name, modelCnName: modelerData?.cnName }},
type: record?.isPossibleNewRecommendedDefinition?.type
}
});
}}>
加入标准
</Typography.Link>
}
{
record?.isPossibleNewTerm?.possible && <Typography.Link className='mr-3' onClick={(event) => {
event.stopPropagation();
value?.setGlobalState && value?.setGlobalState({
message: 'data-govern-show-standard-create',
data: {
column: record,
type: record?.isPossibleNewTerm?.type
}
})
}}>
加入词汇
</Typography.Link>
}
</React.Fragment>
}
{
editable && <React.Fragment>
{
<React.Fragment>
{
(originAction!=='flow') && <Tooltip title={record.needAttention ? '取消送审关注': '送审关注'}>
<Button
className='mr-3'
size='small'
type='text'
icon={record.needAttention ? <AttentionSvg style={{ width: 15, height: 15 }} /> : <UnAttentionSvg style={{ width: 15, height: 15 }} />}
onClick={(event) => {
event.stopPropagation();
if (record.needAttention === null) {
record.needAttention = true;
} else {
record.needAttention = !record.needAttention;
}
const newData = [...moveRowRef.current.data];
const index = newData.findIndex((item) => record.iid === item.iid);
if (index !== -1) {
newData.splice(index, 1, {...record});
setData(newData);
moveRowRef.current.data = newData;
onChange && onChange(newData, false);
if (!record.needAttention) {
preSaveDataModel(record);
}
}
}}
/>
</Tooltip>
}
<Button
className='mr-3'
size='small'
type='text'
icon={<PlusOutlined className='default' />}
onClick={(event) => {
event.stopPropagation();
insertToFront(record);
}}
/>
<Button
className='mr-3'
size='small'
type='text'
icon={<DeleteOutlined style={{ color: 'red' }} />}
onClick={(event) => {
event.stopPropagation();
remove(record);
}}
/>
</React.Fragment>
}
</React.Fragment>
}
</React.Fragment>
}
</AppContext.Consumer>
)
},
},
]
const mergedColumns = () => {
if (editable) {
let _columns = editableColumn;
_columns = _columns.map((col) => {
const _columns = cols.map((col) => {
if (!col.editable) {
return col;
}
......@@ -1078,15 +1022,7 @@ export const ImportActionTable = (props) => {
setColumns(_columns);
} else {
let _columns = cols;
if (action === 'flow') {
_columns = editableColumn;
}
// _columns = _columns.filter((col) => col.dataIndex!=='needAttention');
setColumns(_columns);
setColumns(cols);
}
}
......@@ -1146,9 +1082,17 @@ export const ImportActionTable = (props) => {
const key = event.currentTarget.id;
if (key === 'up') {
insertToFront(currentItem);
onInsertToFrontClick(currentItem);
} else if (key === 'down') {
insertToBack(currentItem);
onInsertToBackClick(currentItem);
} else if (key === 'delete') {
onRemoveClick(currentItem);
} else if (key === 'attention') {
onAttentionClick(currentItem);
} else if (key === 'addToStandard') {
onAddToStandardClick(currentItem);
} else if (key === 'addToWord') {
onAddToWordClick(currentItem);
}
}
......@@ -1245,19 +1189,30 @@ export const ImportActionTable = (props) => {
return 'editable-row';
}}
onRow={(record, index) => {
let rowParams = {
index,
id: `field-${record.iid}`,
}
let shouldRowContextMenu = false
if (action==='flow') {
if (record?.isPossibleNewRecommendedDefinition?.possible || record?.isPossibleNewTerm?.possible) {
shouldRowContextMenu = true
}
}
if (editable) {
shouldRowContextMenu = true
}
if (shouldRowContextMenu) {
rowParams = {...rowParams, onContextMenu: event => {
setCurrentItem(record);
displayMenu(event);
}
};
}
if (editable) {
if (!isEditing(record)) {
rowParams = {...rowParams, onClick: (event) => {
event.stopPropagation();
......@@ -1341,12 +1296,27 @@ export const ImportActionTable = (props) => {
}
<RcMenu id={MENU_ID} >
<RcItem id="up" onClick={handleItemClick}>
{
(menuData??[]).map(item => (
<RcItem key={item.key} id={item.key} onClick={handleItemClick}>
{item.title}
</RcItem>
))
}
{/* <RcItem id="up" onClick={handleItemClick}>
在上方插入行
</RcItem>
<RcItem id="down" onClick={handleItemClick}>
在下方插入行
</RcItem>
{
(originAction!=='flow') && <RcItem id="attention" onClick={handleItemClick}>
{currentItem?.needAttention ? '取消送审关注': '送审关注'}
</RcItem>
}
<RcItem id="delete" onClick={handleItemClick}>
删除
</RcItem> */}
</RcMenu>
</div>
......
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