Commit 82e3d32c by zhaochengxiang

字段自动翻译

parent 0b033b6b
......@@ -115,6 +115,7 @@ const EditableCell = ({
record,
index,
datatypes,
require,
children,
...restProps
}) => {
......@@ -134,7 +135,7 @@ const EditableCell = ({
valuePropName={(inputType==='check')? 'checked': 'value'}
rules={[
{
required: (inputType === 'text'),
required: (require===null)?false:require,
message: `请输入${colTitle}!`,
},
]}
......@@ -153,7 +154,7 @@ const EditableCell = ({
valuePropName={'value'}
rules={[
{
required: true,
required: (require===null)?false:require,
message: `请输入${colTitle}!`,
},
]}
......@@ -241,6 +242,7 @@ const ImportActionTable = (props) => {
const [ currentChangedValues, setCurrentChangedValues] = useState({});
const [ englishSuggests, setEnglishSuggests ] = useState([]);
const [ keyword, setKeyword ] = useState('');
const [ autoTranslate, setAutoTranslate ] = useState(false);
const [ filterData, setFilterData ] = useState([]);
......@@ -278,10 +280,14 @@ const ImportActionTable = (props) => {
cnName: '',
datatype: {},
remark: '',
defaultValue: '',
definition: '',
valueRange: '',
...record,
});
setEditingKey(record.iid);
setAutoTranslate((record.name||'')==='');
if ((record.cnName||'')!=='') {
onValuesChange({ cnName: record.cnName }, record, 1, record.iid);
......@@ -372,10 +378,10 @@ const ImportActionTable = (props) => {
// console.log('changed values', changedValues);
// console.log('all values', allValues);
setSuggests([]);
if (changedValues.hasOwnProperty('cnName') || changedValues.hasOwnProperty('name')) {
setSuggests([]);
const newData = [...data];
const index = newData.findIndex((item) => iid === item.iid);
......@@ -389,42 +395,67 @@ const ImportActionTable = (props) => {
setSuggestHaveMore(false);
setCurrentChangedValues(changedValues);
dispatchLatest({
type: 'datamodel.suggest',
payload: {
data: { ...modelerData, easyDataModelerDataModelAttributes: newData },
params: {
easyDataModelerDataModelAttributeIid: iid,
topN: (offset+perSuggestCount-1),
offset
}
},
callback: data => {
if (changedValues.hasOwnProperty('cnName')) {
const moreSuggests = (data||[]).length>0?(data[0].suggestions||[]):[];
const newSuggests = (offset===1 ? moreSuggests : [...suggests, ...moreSuggests]);
if (moreSuggests.length === perSuggestCount) {
setSuggestHaveMore(true);
function getSuggest() {
dispatchLatest({
type: 'datamodel.suggest',
payload: {
data: { ...modelerData, easyDataModelerDataModelAttributes: newData },
params: {
easyDataModelerDataModelAttributeIid: iid,
topN: (offset+perSuggestCount-1),
offset
}
setSuggestOffset(newSuggests.length+1);
setSuggests(newSuggests);
} else if (changedValues.hasOwnProperty('name')) {
const moreSuggests = (data||[]).length>1?(data[1].suggestions||[]):[];
const newSuggests = (offset===1 ? moreSuggests : [...suggests, ...moreSuggests]);
if (moreSuggests.length === perSuggestCount) {
setSuggestHaveMore(true);
},
callback: data => {
if (changedValues.hasOwnProperty('cnName')) {
const moreSuggests = (data||[]).length>0?(data[0].suggestions||[]):[];
const newSuggests = (offset===1 ? moreSuggests : [...suggests, ...moreSuggests]);
if (moreSuggests.length === perSuggestCount) {
setSuggestHaveMore(true);
}
setSuggestOffset(newSuggests.length+1);
setSuggests(newSuggests);
} else if (changedValues.hasOwnProperty('name')) {
const moreSuggests = (data||[]).length>1?(data[1].suggestions||[]):[];
const newSuggests = (offset===1 ? moreSuggests : [...suggests, ...moreSuggests]);
if (moreSuggests.length === perSuggestCount) {
setSuggestHaveMore(true);
}
setSuggestOffset(newSuggests.length+1);
setSuggests(newSuggests);
}
setSuggestOffset(newSuggests.length+1);
setSuggests(newSuggests);
}
})
}
if (changedValues.hasOwnProperty('cnName')) {
if (autoTranslate) {
dispatchLatest({
type: 'datamodel.translatePhase',
payload: {
params: {
phaseInChinese: changedValues.cnName,
}
},
callback: data => {
form.setFieldsValue({ name: data?.translated||'' });
getSuggest();
}
})
} else {
getSuggest();
}
})
} else if (changedValues.hasOwnProperty('name')) {
setAutoTranslate(changedValues.name==='');
getSuggest();
}
} else if(changedValues.hasOwnProperty('nullable') ) {
if (changedValues.nullable && allValues.partOfPrimaryKey) {
showMessage('info', '主键不允许为空');
......@@ -454,6 +485,7 @@ const ImportActionTable = (props) => {
dataIndex: 'key',
editable: false,
width: 50,
fixed: 'left',
render: (text, record, index) => {
return (index+1).toString();
}
......@@ -464,6 +496,8 @@ const ImportActionTable = (props) => {
dataIndex: 'cnName',
editable: true,
ellipsis: true,
require: true,
fixed: 'left',
render: (text, _, __) => {
return (
<span>
......@@ -478,6 +512,7 @@ const ImportActionTable = (props) => {
dataIndex: 'name',
editable: true,
ellipsis: true,
require: true,
render: (text, record, index) => {
return (
<span style={{ fontWeight: 'bold' }} >{highlightSearchContentByTerms(text, terms)}</span>
......@@ -490,6 +525,7 @@ const ImportActionTable = (props) => {
dataIndex: 'datatype',
editable: true,
ellipsis: true,
require: true,
render: (_, record, __) => {
if (record?.datatype) {
......@@ -564,10 +600,53 @@ const ImportActionTable = (props) => {
}
},
{
title: '默认值',
dataIndex: 'defaultValue',
editable: true,
ellipsis: true,
width: 100,
render: (text, _, __) => {
return (
<span>
{highlightSearchContentByTerms(text, terms)}
</span>
)
}
},
{
title: '业务定义',
dataIndex: 'definition',
editable: true,
ellipsis: true,
width: 200,
render: (text, _, __) => {
return (
<span>
{highlightSearchContentByTerms(text, terms)}
</span>
)
}
},
{
title: '值域',
dataIndex: 'valueRange',
editable: true,
ellipsis: true,
width: 100,
render: (text, _, __) => {
return (
<span>
{highlightSearchContentByTerms(text, terms)}
</span>
)
}
},
{
title: '描述',
dataIndex: 'remark',
editable: true,
ellipsis: true,
width: 200,
render: (text, _, __) => {
return (
<span>
......@@ -584,6 +663,7 @@ const ImportActionTable = (props) => {
title: '操作',
dataIndex: 'action',
width: 100,
fixed: 'right',
render: (_, record) => {
if (!editable) return null;
......@@ -614,6 +694,7 @@ const ImportActionTable = (props) => {
title: '规范',
dataIndex: 'validate',
width: 180,
fixed: 'right',
render: (text, record, index) => {
let shortCauses = [];
let causes = [];
......@@ -698,6 +779,7 @@ const ImportActionTable = (props) => {
colTitle: col.title,
editing: isEditing(record),
datatypes: supportedDatatypes,
require: col.require
}),
};
});
......@@ -802,6 +884,7 @@ const ImportActionTable = (props) => {
rowKey='iid'
pagination={false}
search={false}
scroll={{ x: 1500 }}
options={{
density: false,
setting: false,
......
......@@ -12,6 +12,8 @@
}
.template-highlight-row {
background-color: #e7f7ff;
.yy-table-cell {
background-color: #e7f7ff !important;
}
}
}
\ No newline at end of file
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