Commit 5c2b15f7 by zhaochengxiang

保存字段时判断重点关注

parent e73e379c
...@@ -11,7 +11,9 @@ body { ...@@ -11,7 +11,9 @@ body {
margin: 0; margin: 0;
color: rgba(0, 0, 0, 0.65); color: rgba(0, 0, 0, 0.65);
font-size: 14px; font-size: 14px;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
font-variant: tabular-nums; font-variant: tabular-nums;
line-height: 1.5; line-height: 1.5;
background-color: #fff; background-color: #fff;
......
...@@ -162,6 +162,10 @@ export function* suggest(payload) { ...@@ -162,6 +162,10 @@ export function* suggest(payload) {
return yield call(datamodelerService.suggest, payload); return yield call(datamodelerService.suggest, payload);
} }
export function* preSaveDataModel(payload) {
return yield call(datamodelerService.preSaveDataModel, payload);
}
export function* saveDataModel(payload) { export function* saveDataModel(payload) {
return yield call(datamodelerService.saveDataModel, payload); return yield call(datamodelerService.saveDataModel, payload);
} }
......
...@@ -116,6 +116,10 @@ export function suggest(payload) { ...@@ -116,6 +116,10 @@ export function suggest(payload) {
return PostJSON("/datamodeler/easyDataModelerDesign/suggest", payload); return PostJSON("/datamodeler/easyDataModelerDesign/suggest", payload);
} }
export function preSaveDataModel(payload) {
return PostJSON("/datamodeler/easyDataModelerCURD/preSaveDataModel", payload);
}
//保存模型 //保存模型
export function saveDataModel(payload) { export function saveDataModel(payload) {
return PostJSON("/datamodeler/easyDataModelerCURD/saveDataModel", payload); return PostJSON("/datamodeler/easyDataModelerCURD/saveDataModel", payload);
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Form, Input, Row, Col, Descriptions, Select, AutoComplete, Button } from 'antd'; import { Form, Input, Row, Col, Descriptions, Select, AutoComplete, Button, Divider } from 'antd';
import { DownOutlined, UpOutlined } from '@ant-design/icons'; import { DownOutlined, UpOutlined } from '@ant-design/icons';
import { highlightSearchContentByTerms, generateUUID } from '../../../../util'; import { highlightSearchContentByTerms, generateUUID } from '../../../../util';
...@@ -48,7 +48,7 @@ const ConstraintSelect = ({ value = {}, constraints = [], onChange, ...restProps ...@@ -48,7 +48,7 @@ const ConstraintSelect = ({ value = {}, constraints = [], onChange, ...restProps
return ( return (
<Select <Select
onChange={onChange} onChange={onChange}
value={value.name || ''} value={value?.name || ''}
placeholder='请选择规范' placeholder='请选择规范'
{...restProps} {...restProps}
> >
...@@ -569,16 +569,22 @@ const ImportActionHeader = (props) => { ...@@ -569,16 +569,22 @@ const ImportActionHeader = (props) => {
name="remark" name="remark"
labelAlign="left" labelAlign="left"
rules={[{ required: true, message: '请输入数据内容!' }]} rules={[{ required: true, message: '请输入数据内容!' }]}
style={{ marginBottom: 15 }}
> >
<TextArea row={4} /> <TextArea row={4} />
</Form.Item> </Form.Item>
</Col> </Col>
</Row>
{
!onlyShowRequireChange && <Divider style={{ margin: '0 0 15px' }} />
}
{
!onlyShowRequireChange && <Row gutter={10}>
<Col xs={24} sm={24} lg={12} xl={8}> <Col xs={24} sm={24} lg={12} xl={8}>
<Form.Item <Form.Item
label="生成表类型" label="生成表类型"
name="easyDataModelerModelingTemplate" name="easyDataModelerModelingTemplate"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
rules={[{ required: false, message: '请选择生成表类型!' }]} rules={[{ required: false, message: '请选择生成表类型!' }]}
> >
<TemplateSelect <TemplateSelect
...@@ -592,7 +598,6 @@ const ImportActionHeader = (props) => { ...@@ -592,7 +598,6 @@ const ImportActionHeader = (props) => {
label="数据表类型" label="数据表类型"
name="tableType" name="tableType"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<Input /> <Input />
</Form.Item> </Form.Item>
...@@ -602,7 +607,6 @@ const ImportActionHeader = (props) => { ...@@ -602,7 +607,6 @@ const ImportActionHeader = (props) => {
label="数据平台" label="数据平台"
name="dataResidence" name="dataResidence"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<Input disabled={true} /> <Input disabled={true} />
</Form.Item> </Form.Item>
...@@ -612,7 +616,6 @@ const ImportActionHeader = (props) => { ...@@ -612,7 +616,6 @@ const ImportActionHeader = (props) => {
label="数据情况" label="数据情况"
name="dataCircumstances" name="dataCircumstances"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<Input /> <Input />
</Form.Item> </Form.Item>
...@@ -622,7 +625,6 @@ const ImportActionHeader = (props) => { ...@@ -622,7 +625,6 @@ const ImportActionHeader = (props) => {
label="分布键" label="分布键"
name="easyDataModelerDistributionKey" name="easyDataModelerDistributionKey"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<AttributesSelect modelerData={modelerData} /> <AttributesSelect modelerData={modelerData} />
</Form.Item> </Form.Item>
...@@ -632,7 +634,6 @@ const ImportActionHeader = (props) => { ...@@ -632,7 +634,6 @@ const ImportActionHeader = (props) => {
label="分区键" label="分区键"
name="partition" name="partition"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<PartitionSelect modelerData={modelerData} partitionTypes={supportedPartitionTypes} /> <PartitionSelect modelerData={modelerData} partitionTypes={supportedPartitionTypes} />
</Form.Item> </Form.Item>
...@@ -642,7 +643,6 @@ const ImportActionHeader = (props) => { ...@@ -642,7 +643,6 @@ const ImportActionHeader = (props) => {
label="主键" label="主键"
name="easyDataModelerPrimaryKey" name="easyDataModelerPrimaryKey"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<AttributesSelect modelerData={modelerData} /> <AttributesSelect modelerData={modelerData} />
</Form.Item> </Form.Item>
...@@ -652,7 +652,6 @@ const ImportActionHeader = (props) => { ...@@ -652,7 +652,6 @@ const ImportActionHeader = (props) => {
label="类主键" label="类主键"
name="easyDataModelerSemiPrimaryKey" name="easyDataModelerSemiPrimaryKey"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<AttributesSelect modelerData={modelerData} mode='tags' /> <AttributesSelect modelerData={modelerData} mode='tags' />
</Form.Item> </Form.Item>
...@@ -662,7 +661,6 @@ const ImportActionHeader = (props) => { ...@@ -662,7 +661,6 @@ const ImportActionHeader = (props) => {
label="加载方式" label="加载方式"
name="dataLoadingStrategy" name="dataLoadingStrategy"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<LoadSelect /> <LoadSelect />
</Form.Item> </Form.Item>
...@@ -672,7 +670,6 @@ const ImportActionHeader = (props) => { ...@@ -672,7 +670,6 @@ const ImportActionHeader = (props) => {
label="更新时间" label="更新时间"
name="dataUpdatingTiming" name="dataUpdatingTiming"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<UpdateSelect /> <UpdateSelect />
</Form.Item> </Form.Item>
...@@ -682,12 +679,12 @@ const ImportActionHeader = (props) => { ...@@ -682,12 +679,12 @@ const ImportActionHeader = (props) => {
label="维护历史" label="维护历史"
name="maintenanceRecords" name="maintenanceRecords"
labelAlign="left" labelAlign="left"
hidden={onlyShowRequireChange}
> >
<Input disabled={true} /> <Input disabled={true} />
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>
}
</Form> </Form>
) : ( ) : (
<Descriptions column={3}> <Descriptions column={3}>
......
...@@ -9,7 +9,7 @@ import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify" ...@@ -9,7 +9,7 @@ import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify"
import ResizeObserver from 'rc-resize-observer'; import ResizeObserver from 'rc-resize-observer';
import { generateUUID, highlightSearchContentByTerms, showMessage, inputWidth, paginate } from '../../../../util'; import { generateUUID, highlightSearchContentByTerms, showMessage, inputWidth, paginate } from '../../../../util';
import { dispatchLatest } from '../../../../model'; import { dispatch, dispatchLatest } from '../../../../model';
import { addEventListenerForSidebar, removeEventListenerForSidebar } from './Help'; import { addEventListenerForSidebar, removeEventListenerForSidebar } from './Help';
import { AppContext } from '../../../../App'; import { AppContext } from '../../../../App';
import DebounceInput from './DebounceInput'; import DebounceInput from './DebounceInput';
...@@ -462,6 +462,25 @@ const ImportActionTable = (props) => { ...@@ -462,6 +462,25 @@ const ImportActionTable = (props) => {
} }
} }
const preSaveDataModel = (attribute) => {
dispatch({
type: 'datamodel.preSaveDataModel',
payload: {
data: attribute
},
callback: remoteData => {
const newData = [...data];
const index = (newData||[]).findIndex((item) => attribute.iid === item.iid);
if (index !== -1) {
newData.splice(index, 1, remoteData);
moveRowRef.current.data = newData;
onChange && onChange(newData, false);
}
},
})
}
const save = async() => { const save = async() => {
try { try {
...@@ -500,19 +519,27 @@ const ImportActionTable = (props) => { ...@@ -500,19 +519,27 @@ const ImportActionTable = (props) => {
return; return;
} }
let attribute = {};
if (index === -1) { if (index === -1) {
newData.splice(insertIndex, 0, {...row, iid: editingKey, modelingTemplateTag: null}); attribute = {...row, iid: editingKey, modelingTemplateTag: null};
newData.splice(insertIndex, 0, attribute);
} else { } else {
const item = newData[index]; const item = newData[index];
newData.splice(index, 1, { ...item, ...row, modelingTemplateTag: null });
attribute = { ...item, ...row, modelingTemplateTag: null };
newData.splice(index, 1, attribute);
} }
moveRowRef.current.data = newData; moveRowRef.current.data = newData;
onChange && onChange(newData, true); onChange && onChange(newData, true);
if (!attribute.needAttention) {
preSaveDataModel(attribute);
}
setEditingKey(''); setEditingKey('');
setSuggests([]); setSuggests([]);
setEnglishSuggests([]); setEnglishSuggests([]);
......
...@@ -637,7 +637,7 @@ const ModelTable = (props) => { ...@@ -637,7 +637,7 @@ const ModelTable = (props) => {
); );
} }
let disableEdit = false, disableDelete = false, editTip = '', deleteTip = ''; let disableEdit = false, disableDelete = false, editTip = '', deleteTip = '', editMenuTitle = '编辑';
if (!currentItem?.editable && currentItem?.state?.id!=='4') { if (!currentItem?.editable && currentItem?.state?.id!=='4') {
disableEdit = true; disableEdit = true;
...@@ -650,6 +650,7 @@ const ModelTable = (props) => { ...@@ -650,6 +650,7 @@ const ModelTable = (props) => {
if (!currentItem?.permitCheckOut && currentItem?.state?.id==='4') { if (!currentItem?.permitCheckOut && currentItem?.state?.id==='4') {
disableEdit = true; disableEdit = true;
editTip = `${currentItem.holder||''}正在编辑中, 不允许再编辑`; editTip = `${currentItem.holder||''}正在编辑中, 不允许再编辑`;
editMenuTitle = `编辑(${currentItem.holder||''}正在编辑中)`;
} }
if (!currentItem?.deletable) { if (!currentItem?.deletable) {
...@@ -718,7 +719,7 @@ const ModelTable = (props) => { ...@@ -718,7 +719,7 @@ const ModelTable = (props) => {
<RcMenu id={MENU_ID}> <RcMenu id={MENU_ID}>
<RcItem id="edit" disabled={disableEdit} onClick={handleItemClick}> <RcItem id="edit" disabled={disableEdit} onClick={handleItemClick}>
<Tooltip title={editTip}> <Tooltip title={editTip}>
编辑 { editMenuTitle }
</Tooltip> </Tooltip>
</RcItem> </RcItem>
<RcItem id="delete" disabled={disableDelete} onClick={handleItemClick}> <RcItem id="delete" disabled={disableDelete} onClick={handleItemClick}>
......
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