Commit 958b9fae by zhaochengxiang

模型同步

parent 25aea624
......@@ -728,6 +728,10 @@ export function* getForkEasyDataModelerDataModelDistributions(payload) {
return yield call(datamodelerService.getForkEasyDataModelerDataModelDistributions, payload)
}
export function* mergeBranch(payload) {
return yield call(datamodelerService.mergeBranch, payload)
}
export function* getCooperationUsers(payload) {
return yield call(datamodelerService.getCooperationUsers, payload)
}
......
......@@ -680,6 +680,10 @@ export function getForkEasyDataModelerDataModelDistributions(payload) {
return GetJSON("/datamodeler/easyDataModelerBranching/getForkEasyDataModelerDataModelDistributions", payload)
}
export function mergeBranch(payload) {
return PostJSON("/datamodeler/easyDataModelerBranching/merge", payload)
}
/*approval*/
export function getApprovalUsers(payload) {
return GetJSON("/baseservice/sync/getUserByUserName", payload)
......
......@@ -8,6 +8,7 @@ export const Action = 'action';
export const CatalogId = 'cid';
export const BranchId = 'branchId';
export const ModelerId = 'mid';
export const ModelerMergeId = 'mergeId';
export const LogicId = 'logicId';
export const Hints = 'hints';
export const ModelerData = 'mdata';
......
......@@ -10,7 +10,7 @@ import ImportAction from './ImportAction';
import CatalogModal from './CatalogModal';
import { dispatchLatest, dispatch } from '../../../../model';
import { getQueryParam, isSzseEnv, showMessage, showNotifaction } from '../../../../util';
import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Editable, StateId, VersionId, DDL, ReadOnly, BranchId, ApprovalId, ApprovalType, TaskId, LogicId } from '../../../../util/constant';
import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Editable, StateId, VersionId, DDL, ReadOnly, BranchId, ApprovalId, ApprovalType, TaskId, LogicId, ModelerMergeId } from '../../../../util/constant';
import HistoryAndVersionDrawer from './HistoryAndVersionDrawer';
import { EditModelContext } from './ContextManage';
import EditInherited from './EditInherited';
......@@ -56,7 +56,7 @@ const EditModel = (props) => {
const attrIsEditingRef = useRef(false);
const indexIsEditingRef = useRef(false);
const { action, catalogId, modelerId, hints, roughModelerData, permitCheckOut, editable, stateId, versionId, ddl, readOnly, branchId, approvalId, approvalType, taskId, logicId } = actionData;
const { action, catalogId, modelerId, hints, roughModelerData, permitCheckOut, editable, stateId, versionId, ddl, readOnly, branchId, approvalId, approvalType, taskId, logicId, mergeId } = actionData;
const [form] = Form.useForm();
const [modal, contextHolder] = Modal.useModal()
......@@ -79,6 +79,7 @@ const EditModel = (props) => {
const _approvalType = getQueryParam(ApprovalType, props.location.search)
const _taskId = getQueryParam(TaskId, props.location.search)
const _logicId = getQueryParam(LogicId, props.location.search)
const _mergeId = getQueryParam(ModelerMergeId, props.location.search)
if (_logicId) {
_action = 'add'
......@@ -96,7 +97,7 @@ const EditModel = (props) => {
judgeAttributeRepeat(_roughModelerData.easyDataModelerDataModelAttributes);
}
setActionData({ action: _action, catalogId: _catalogId, modelerId: _modelerId, hints: _hints, roughModelerData: _roughModelerData, permitCheckOut: (_permitCheckOut==='true'), editable: (_editable==='true'), stateId: _stateId, versionId: _versionId, ddl: _ddl, readOnly: _readOnly, branchId: _branchId, approvalId: _approvalId, approvalType: _approvalType, taskId: _taskId, logicId: _logicId });
setActionData({ action: _action, catalogId: _catalogId, modelerId: _modelerId, hints: _hints, roughModelerData: _roughModelerData, permitCheckOut: (_permitCheckOut==='true'), editable: (_editable==='true'), stateId: _stateId, versionId: _versionId, ddl: _ddl, readOnly: _readOnly, branchId: _branchId, approvalId: _approvalId, approvalType: _approvalType, taskId: _taskId, logicId: _logicId, mergeId: _mergeId });
actionRef.current = _action;
if (_approvalId) {
......@@ -605,9 +606,11 @@ const EditModel = (props) => {
变更通知
</Checkbox>
}
<Button type='primary' ghost onClick={cancelEdit} >
取消
</Button>
{
!mergeId && <Button type='primary' ghost onClick={cancelEdit} >
取消
</Button>
}
<PermissionButton
type='primary'
onClick={onHistory}
......@@ -729,6 +732,7 @@ const EditModel = (props) => {
versionId={versionId} branchId={branchId} autoTabKey={autoTabKey}
approvalModelId={currentApprovalModelId} approvalId={approvalId}
logicId={logicId}
mergeId={mergeId}
height={containerHeight}
onChange={onActionChange}
{...props}
......
......@@ -19,7 +19,7 @@ import './ImportAction.less'
export const importActionSubject = new Subject()
const ImportAction = React.forwardRef((props, ref) => {
const { action, hints, onChange, form, modelerId, terms, ddl, roughModelerData, versionId, permitCheckOut, catalogId, branchId, approvalModelId, approvalId, logicId, reference = '', height } = props;
const { action, hints, onChange, form, modelerId, terms, ddl, roughModelerData, versionId, permitCheckOut, catalogId, branchId, approvalModelId, approvalId, logicId, reference = '', height, mergeId } = props;
const [ constraints, setConstraints ] = useState([]);
const [ constraint, setConstraint ] = useState({});
......@@ -311,6 +311,14 @@ const ImportAction = React.forwardRef((props, ref) => {
}
} else if (action==='edit' && permitCheckOut) {
type = 'datamodel.checkOutDataModel';
} else if (action === 'edit' && mergeId) {
type = 'datamodel.mergeBranch';
params = {
params: {
current: modelerId,
merging: mergeId,
}
}
} else if (action==='edit') {
const _action = getQueryParam(Action, props.location?.search);
......@@ -687,6 +695,7 @@ const ImportAction = React.forwardRef((props, ref) => {
action={action}
originAction={getQueryParam(Action, props?.location?.search)}
terms={terms}
mergeId={mergeId}
/>
{
reference !== 'full-search' && <React.Fragment>
......
......@@ -644,7 +644,7 @@ const ImportActionIndex = (props) => {
});
} else {
newData.splice(index, 1, {...{
newData.splice(index, 1, {...newData[index], ...{
name: row.name,
unique: row.unique,
indextype: row.indextype,
......
import React, { useState, useCallback, useRef, useEffect, useContext, useMemo } from 'react';
import { Input, Form, Typography, Button, Select, Row, Col, Popover, Checkbox, Tooltip, Pagination, Space, Tag } from 'antd';
import { Input, Form, Typography, Button, Select, Row, Col, Popover, Checkbox, Tooltip, Pagination, Space, Tag, Badge } from 'antd';
import { CheckOutlined, PlusOutlined, QuestionCircleOutlined, DeleteOutlined } from '@ant-design/icons';
import { DndProvider, useDrag, useDrop } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
......@@ -224,7 +224,7 @@ export const DragableBodyRow = ({ index, moveRow, className, style, ...restProps
};
export const ImportActionTable = (props) => {
const { catalogId, modelerData, onChange, editable, supportedDatatypes, constraint, template, validateReports, type = 'model', terms, action, originAction } = props;
const { catalogId, modelerData, onChange, editable, supportedDatatypes, constraint, template, validateReports, type = 'model', terms, action, originAction, mergeId } = props;
const [ data, setData ] = useState([]);
const [ form ] = Form.useForm();
......@@ -470,7 +470,11 @@ export const ImportActionTable = (props) => {
{ standands?.map(item => <div key={item.standardId}><a onClick={() => { window.open(`/center-home/menu/datastandard?id=${item?.standardId}&timestamp=${timestamp}`); }}>{item.standardCnName}</a></div>) }
</div>}
>
<Tag>标</Tag>
<Tag style={{
color: '#196AD2',
borderColor: '#196AD2',
backgroundColor: 'white',
}}>标</Tag>
</Tooltip> }
</React.Fragment>
)
......@@ -478,6 +482,37 @@ export const ImportActionTable = (props) => {
}
];
const mergeStateCol = {
title: '',
dataIndex: 'mergeState',
editable: false,
width: 30,
render: (text, record, __) => {
let title = ''
if (record.delta === 'APPENDED') {
title = '增'
}
if (record.delta === 'DELETED') {
title = '删'
}
if (record.delta === 'MODIFIED') {
title = '改'
}
return (
<>
{ title ? <Tag style={{
color: '#196AD2',
borderColor: '#196AD2',
backgroundColor: 'white',
marginRight: 0,
padding: '0 4px',
}}>{title}</Tag> : <></> }
</>
)
}
}
const attentionCol = {
title: '送审关注',
width: 80,
......@@ -977,8 +1012,17 @@ export const ImportActionTable = (props) => {
};
});
let newColumns = [..._columns]
//只在编辑和评审的时候显示送审关注
setColumns((originAction === 'flow'||action === 'edit')?[..._columns, attentionCol]:_columns);
if (originAction === 'flow'||action === 'edit') {
newColumns = [...newColumns, attentionCol]
}
if (mergeId) {
newColumns = [mergeStateCol, ...newColumns]
}
setColumns(newColumns)
} else {
//只在编辑和评审的时候显示送审关注
setColumns((originAction === 'flow'||action === 'edit')?[...cols, attentionCol]:cols);
......
......@@ -6,6 +6,7 @@ import { CompareDetail } from './VersionCompare'
import './merge-to-master.less'
import './VersionCompare.less'
import { Action, ModelerId, ModelerMergeId } from '../../../../util/constant'
const FC = (props) => {
const { items, visible, onCancel } = props
......@@ -18,18 +19,35 @@ const FC = (props) => {
const save = () => {
setWaiting(true)
dispatch({
type: 'datamodel.joinBranch',
payload: {
ids: (items??[]).map(item => item.id).toString(),
},
callback: data => {
close(true)
},
error: () => {
setWaiting(false)
}
})
if ((items??[]).length > 1) {
dispatch({
type: 'datamodel.joinBranch',
payload: {
ids: (items??[]).map(item => item.id).toString(),
},
callback: data => {
close(true)
},
error: () => {
setWaiting(false)
}
})
} else {
dispatch({
type: 'datamodel.getForkedModel',
payload: {
id: items[0].id
},
callback: data => {
setWaiting(false)
window.open(`/data-govern/data-model-action?${Action}=edit&${ModelerId}=${data?.id}&${ModelerMergeId}=${items[0].id}`);
},
error: () => {
setWaiting(false)
}
})
}
}
const footer = React.useMemo(() => {
......
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