Commit 12351124 by zhaochengxiang

模型增加英文推荐

parent 1e0e1b61
......@@ -121,3 +121,7 @@ export function* exportERWinString(payload) {
export function* validateDataModel(payload) {
return yield call(datamodelerService.validateDataModel, payload);
}
export function* autocomplete(payload) {
return yield call(datamodelerService.autocomplete, payload);
}
......@@ -83,3 +83,7 @@ export function exportERWinString(payload) {
export function validateDataModel(payload) {
return PostJSON("/datamodeler/easyDataModelerConstraint/validateDataModel", payload);
}
export function autocomplete(payload) {
return PostJSON("/datamodeler/easyDataModelerDesign/autocomplete", payload);
}
import React from 'react';
import { Form, Input, Row, Col, Descriptions, Select } from 'antd';
import React, { useState } from 'react';
import { Form, Input, Row, Col, Descriptions, Select, AutoComplete } from 'antd';
import { dispatchLatest } from '../../../../model';
const { Option } = Select;
......@@ -26,6 +28,8 @@ const TemplateSelect = ({ value = {}, templates = [], onChange, ...restProps })
const ImportActionHeader = (props) => {
const { editable, form, modelerData, templates, onTemplateChange } = props;
const [ options, setOptions ] = useState([]);
const formItemLayout = {
labelCol: {
xs: { span: 24 },
......@@ -37,6 +41,25 @@ const ImportActionHeader = (props) => {
},
};
const onSearch = (searchText) =>{
dispatchLatest({
type: 'datamodel.autocomplete',
payload: {
params: {
word: searchText
}
},
callback: data => {
const _options = [];
(data||[]).forEach(item => {
_options.push({ value: item });
})
setOptions(_options);
}
})
}
return (
editable ? (
<Form
......@@ -61,7 +84,8 @@ const ImportActionHeader = (props) => {
labelAlign="left"
rules={[{ required: true, message: '请输入英文名称!' }]}
>
<Input />
<AutoComplete options={options} onSearch={onSearch} />
{/* <Input /> */}
</Form.Item>
</Col>
</Row>
......
......@@ -129,7 +129,7 @@ const EditableCell = ({
valuePropName={(inputType==='check')? 'checked': 'value'}
rules={[
{
required: (inputType === 'text'),
required: (inputType === 'text' && dataIndex !== 'remark'),
message: `请输入${colTitle}!`,
},
]}
......@@ -225,6 +225,7 @@ const ImportActionTable = (props) => {
const [ form ] = Form.useForm();
const [ editingKey, setEditingKey ] = useState('');
const [ suggests, setSuggests ] = useState([]);
const [ englishSuggests, setEnglishSuggests ] = useState([]);
const [ keyword, setKeyword ] = useState('');
const [ filterData, setFilterData ] = useState([]);
......@@ -285,6 +286,7 @@ const ImportActionTable = (props) => {
setEditingKey('');
setSuggests([]);
setEnglishSuggests([]);
};
const save = async() => {
......@@ -312,6 +314,7 @@ const ImportActionTable = (props) => {
setEditingKey('');
setSuggests([]);
setEnglishSuggests([]);
} catch (errInfo) {
console.log('Validate Failed:', errInfo);
......@@ -322,6 +325,11 @@ const ImportActionTable = (props) => {
// console.log('changed values', changedValues);
// console.log('all values', allValues);
setSuggests([]);
setEnglishSuggests([]);
if (changedValues.hasOwnProperty('cnName')) {
const newData = [...data];
const index = newData.findIndex((item) => editingKey === item.iid);
const item = newData[index];
......@@ -339,6 +347,19 @@ const ImportActionTable = (props) => {
setSuggests(data||[]);
}
})
} else if (changedValues.hasOwnProperty('name')) {
dispatchLatest({
type: 'datamodel.autocomplete',
payload: {
params: {
word: changedValues.name
}
},
callback: data => {
setEnglishSuggests(data||[]);
}
})
}
};
const onSuggestChange = (e) => {
......@@ -350,6 +371,14 @@ const ImportActionTable = (props) => {
setSuggests([]);
};
const onEnglishSuggestChange = (e) => {
form.setFieldsValue({
name: englishSuggests[e.target.value]
});
setEnglishSuggests([]);
}
const columns = [
{
title: '序号',
......@@ -667,6 +696,24 @@ const ImportActionTable = (props) => {
</>
)
}
{
englishSuggests && englishSuggests.length>0 && (
<>
{/* <Divider orientation="left">智能推荐</Divider> */}
<Radio.Group onChange={onEnglishSuggestChange} className='mb-3 ml-7'>
{
englishSuggests && englishSuggests.map((suggest, index) => {
return (
<Radio key={index} value={index} className='mt-3' style={{ display: 'block' }}>
{suggest||''}
</Radio>
)
})
}
</Radio.Group>
</>
)
}
</>
}
</>
......@@ -674,7 +721,7 @@ const ImportActionTable = (props) => {
expandIcon: ({ expanded, onExpand, record }) => {
return null;
},
rowExpandable: record => (editingKey!==''&&(suggests||[]).length>0),
rowExpandable: record => (editingKey!==''&&((suggests||[]).length>0 || (englishSuggests||[]).length>0)),
expandedRowKeys: [editingKey]
}}
/>
......
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