Commit 12351124 by zhaochengxiang

模型增加英文推荐

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