Browse Source

数据源新增:请求数据列后更改数据对象,必须需要重新执行请求操作

zhuth 6 years ago
parent
commit
3a11f7ea65

+ 9 - 6
src/components/dataSourceDetail/columnConfig.jsx

@@ -295,10 +295,13 @@ class DataSourceColumnConfig extends React.Component {
                                         // value={dataSourceDetail.target}
                                         defaultValue={dataSourceDetail.target}
                                         onBlur={(e) => {
-                                            dispatch({ type: 'dataSourceDetail/setFields', fields: [
-                                                { name: 'target', value: e.target.value },
-                                                { name: 'notice', value: '' }
-                                            ] });
+                                            if(e.target.value !== dataSourceDetail.target) {
+                                                dispatch({ type: 'dataSourceDetail/setFields', fields: [
+                                                    { name: 'target', value: e.target.value },
+                                                    { name: 'notice', value: '' },
+                                                    { name: 'targetDirty', value: true }
+                                                ] });
+                                            }
                                         }}
                                         // onChange={(e) => {
                                         //     dispatch({ type: 'dataSourceDetail/setFields', fields: [
@@ -348,13 +351,13 @@ class DataSourceColumnConfig extends React.Component {
                                         onVisibleChange={this.handleVisibleChange}
                                         trigger='click'
                                     >
-                                        <Button disabled={!dataSourceDetail.address || fetching} onClick={() => {
+                                        <Button type={!fetching && dataSourceDetail.targetDirty ? 'danger' : null} disabled={!dataSourceDetail.address || fetching} onClick={() => {
                                             if(!dataSourceDetail.columns || dataSourceDetail.columns.length === 0) {
                                                 dispatch({ type: 'dataSourceDetail/importColumns', cover: true });
                                             }
                                         }}>
                                         {fetching && <Icon type="loading" theme="outlined" />}
-                                        获取数据列
+                                        {!fetching && dataSourceDetail.targetDirty ? '重新获取数据列' : '获取数据列'}
                                         </Button>
                                     </Tooltip>
                                 </div>

+ 3 - 1
src/components/dataSourceDetail/content.jsx

@@ -92,8 +92,10 @@ class DataSourceDetailContent extends React.Component {
                             {
                                 current < steps.length - 1
                                 && <Button disabled={
+                                    // 第一步:没有选择数据连接或没有上传文件或上传文件有误
                                     ( current === 0 && ( ( type === 'database' && !dataSourceDetail.connectCode ) || ( type === 'file' && +1 === 2) ) ) ||
-                                    (current === 1 && (!dataSourceDetail.columns || dataSourceDetail.columns.length === 0))
+                                    // 第二步:数据列为空或者数据对象有变更
+                                    (current === 1 && (!dataSourceDetail.columns || dataSourceDetail.columns.length === 0 || dataSourceDetail.targetDirty))
                                 } type="primary" onClick={() => this.next()}>下一步</Button>
                             }
                             {

+ 5 - 4
src/models/dataSourceDetail.js

@@ -16,6 +16,7 @@ export default {
             address: null,
             port: null,
             target: null,
+            targetDirty: false,
             creatorCode: null,
             creatorName: null,
             createTime: null,
@@ -85,11 +86,12 @@ export default {
                 });
     
                 const getColumnType = (dataType) => {
-                    return DEFAULT_COLUMN_TYPE[dataType] || 'categorical';
+                    return DEFAULT_COLUMN_TYPE[dataType] || 'string';
                 }
-    
-                console.log('请求列数据', body, res);
 
+                // 点击查询后清除数据对象dirty状态
+                yield put({ type: 'setField', name: 'targetDirty', value: false });
+    
                 if(!res.err && res.data.code > 0) {
                     let columns = res.data.data.map((d, i) => {
                         return {
@@ -103,7 +105,6 @@ export default {
                             filterable: true,
                         }
                     });
-                    // yield put({ type: 'setField', name: 'columns', value: columns });
                     if(cover) {
                         yield put({ type: 'setField', name: 'columns', value: columns });
                     }else {