|
|
@@ -1,12 +1,15 @@
|
|
|
import { message } from 'antd'
|
|
|
import * as service from '../services/index'
|
|
|
import URLS from '../constants/url'
|
|
|
+import RULE from './validRule.js'
|
|
|
|
|
|
export default {
|
|
|
namespace: 'dataConnect',
|
|
|
state: {
|
|
|
list: [],
|
|
|
- newOne: {}
|
|
|
+ newOne: {},
|
|
|
+ filterLabel: '',
|
|
|
+ validInfo: {}
|
|
|
},
|
|
|
reducers: {
|
|
|
list(state, action) {
|
|
|
@@ -43,10 +46,32 @@ export default {
|
|
|
return Object.assign({}, state, {list});
|
|
|
|
|
|
},
|
|
|
+ setSelected(state, action) {
|
|
|
+ const { selected } = action;
|
|
|
+ return Object.assign({}, state, {selected});
|
|
|
+ },
|
|
|
+ setFilterLabel(state, action) {
|
|
|
+ const { label } = action;
|
|
|
+ return Object.assign({}, state, { filterLabel: label });
|
|
|
+ },
|
|
|
setNewModelField(state, action) {
|
|
|
- const { name, value } = action;
|
|
|
+ const { name, value, rules } = action;
|
|
|
let newOne = state.newOne;
|
|
|
+ let validInfo = state.validInfo;
|
|
|
newOne[name] = value;
|
|
|
+ newOne.invalid = false;
|
|
|
+ (rules && (Object.prototype.toString.call(rules) === '[object Array]')) && rules.map((r) => {
|
|
|
+ return validInfo[name] = RULE[r](value);
|
|
|
+ });
|
|
|
+
|
|
|
+ return Object.assign({}, state, { newOne, validInfo });
|
|
|
+ },
|
|
|
+ setNewModelFields(state, action) {
|
|
|
+ const { fields } = action;
|
|
|
+ let newOne = state.newOne;
|
|
|
+ for(let i = 0; i < fields.length; i++) {
|
|
|
+ newOne[fields[i]['name']] = fields[i]['value'];
|
|
|
+ }
|
|
|
return Object.assign({}, state, {newOne});
|
|
|
},
|
|
|
setNewModel(state, action) {
|
|
|
@@ -56,6 +81,12 @@ export default {
|
|
|
},
|
|
|
resetNewModel(state, action) {
|
|
|
return Object.assign({}, state, {newOne: {}});
|
|
|
+ },
|
|
|
+ setNewModelInvalid(state, action) {
|
|
|
+ const { value } = action;
|
|
|
+ let newOne = state.newOne;
|
|
|
+ newOne.invalid = value;
|
|
|
+ return Object.assign({}, state, {newOne});
|
|
|
}
|
|
|
},
|
|
|
effects: {
|
|
|
@@ -97,24 +128,58 @@ export default {
|
|
|
const dataConnect = yield select(state => state.present.dataConnect);
|
|
|
const model = dataConnect.newOne;
|
|
|
try {
|
|
|
- yield call(service.fetch, {
|
|
|
- url: URLS.DATACONNECT_ADD,
|
|
|
- body: {
|
|
|
- "name": model.name,
|
|
|
- "addrass": model.address,
|
|
|
- "port": model.port,
|
|
|
- "databaseType": model.dbType,
|
|
|
- "dataName": model.dbName,
|
|
|
- "userName": model.userName,
|
|
|
- "passWord": model.password,
|
|
|
- "note": model.description
|
|
|
- }
|
|
|
+ // 设置validating为true
|
|
|
+ yield put({ type: 'setNewModelField', name: 'validating', value: true });
|
|
|
+ // 调用检测接口检测连接配置是否合法
|
|
|
+ let validBody = {
|
|
|
+ name: model.name,
|
|
|
+ addrass: model.address,
|
|
|
+ port: model.port,
|
|
|
+ databaseType: model.dbType,
|
|
|
+ dataName: model.dbName,
|
|
|
+ userName: model.userName,
|
|
|
+ passWord: model.password
|
|
|
+ }
|
|
|
+ const validRes = yield call(service.fetch, {
|
|
|
+ url: URLS.DATACONNECT_VALIDATE,
|
|
|
+ body: validBody
|
|
|
});
|
|
|
- yield put({ type: 'add' });
|
|
|
- message.success('新增成功');
|
|
|
+
|
|
|
+ // 设置validating为false
|
|
|
+ yield put({ type: 'setNewModelField', name: 'validating', value: false });
|
|
|
+
|
|
|
+ if(!validRes.err && validRes.data.code > 0) {
|
|
|
+ // 如果合法
|
|
|
+ // 设置valid为true
|
|
|
+ yield put({ type: 'setNewModelInvalid', name: 'invalid', value: false });
|
|
|
+ // 继续执行保存
|
|
|
+ let body = {
|
|
|
+ name: model.name,
|
|
|
+ addrass: model.address,
|
|
|
+ port: model.port,
|
|
|
+ databaseType: model.dbType,
|
|
|
+ dataName: model.dbName,
|
|
|
+ userName: model.userName,
|
|
|
+ passWord: model.password,
|
|
|
+ note: model.description
|
|
|
+ }
|
|
|
+ const res = yield call(service.fetch, {
|
|
|
+ url: URLS.DATACONNECT_ADD,
|
|
|
+ body: body
|
|
|
+ });
|
|
|
+ if(!res.err && res.data.code > 0) {
|
|
|
+ yield put({ type: 'add' });
|
|
|
+ yield put({ type: 'setNewModelField', name: 'visibleBox', value: false });
|
|
|
+ message.success('新增成功');
|
|
|
+ }else {
|
|
|
+ message.error('新增失败');
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ yield put({ type: 'setNewModelInvalid', name: 'invalid', value: true });
|
|
|
+ }
|
|
|
+
|
|
|
}catch(e) {
|
|
|
- message.error('新增失败');
|
|
|
- //yield takeLatest({ type: 'loadList', data: [] });
|
|
|
+ console.log(e);
|
|
|
}
|
|
|
},
|
|
|
*remoteModify(action, { select, call, put }) {
|
|
|
@@ -124,34 +189,57 @@ export default {
|
|
|
const code = action.code;
|
|
|
let list = dataConnect.list;
|
|
|
|
|
|
-
|
|
|
- let data = {
|
|
|
- id: code,
|
|
|
+ // 设置validating为true
|
|
|
+ yield put({ type: 'setNewModelField', name: 'validating', value: true });
|
|
|
+ // 调用检测接口检测连接配置是否合法
|
|
|
+ let validBody = {
|
|
|
name: model.name,
|
|
|
addrass: model.address,
|
|
|
port: model.port,
|
|
|
databaseType: model.dbType,
|
|
|
dataName: model.dbName,
|
|
|
userName: model.userName,
|
|
|
- passWord: model.password,
|
|
|
- note: model.description
|
|
|
- };
|
|
|
- const res = yield call(service.fetch, {
|
|
|
- url: URLS.DATACONNECT_UPDATE,
|
|
|
- body: data
|
|
|
+ passWord: model.password
|
|
|
+ }
|
|
|
+ const validRes = yield call(service.fetch, {
|
|
|
+ url: URLS.DATACONNECT_VALIDATE,
|
|
|
+ body: validBody
|
|
|
});
|
|
|
- if(!res.err && res.data.code > 0) {
|
|
|
- list = list.map(l => {
|
|
|
- if(l.code === action.code) {
|
|
|
- l = model;
|
|
|
- }
|
|
|
- return l;
|
|
|
+
|
|
|
+ // 设置validating为false
|
|
|
+ yield put({ type: 'setNewModelField', name: 'validating', value: false });
|
|
|
+
|
|
|
+ if(!validRes.err && validRes.data.code > 0) {
|
|
|
+ let data = {
|
|
|
+ id: code,
|
|
|
+ name: model.name,
|
|
|
+ addrass: model.address,
|
|
|
+ port: model.port,
|
|
|
+ databaseType: model.dbType,
|
|
|
+ dataName: model.dbName,
|
|
|
+ userName: model.userName,
|
|
|
+ passWord: model.password,
|
|
|
+ note: model.description
|
|
|
+ };
|
|
|
+ const res = yield call(service.fetch, {
|
|
|
+ url: URLS.DATACONNECT_UPDATE,
|
|
|
+ body: data
|
|
|
});
|
|
|
- yield put({ type: 'list', data: list });
|
|
|
- message.success('修改成功');
|
|
|
+ if(!res.err && res.data.code > 0) {
|
|
|
+ list = list.map(l => {
|
|
|
+ if((l.code+'') === (action.code+'')) {
|
|
|
+ l = model;
|
|
|
+ }
|
|
|
+ return l;
|
|
|
+ });
|
|
|
+ yield put({ type: 'list', data: list });
|
|
|
+ message.success('修改成功');
|
|
|
+ yield put({ type: 'setNewModelField', name: 'visibleBox', value: false });
|
|
|
+ }else {
|
|
|
+ message.error('修改失败');
|
|
|
+ }
|
|
|
}else {
|
|
|
- message.error('修改失败');
|
|
|
-
|
|
|
+ yield put({ type: 'setNewModelInvalid', name: 'invalid', value: true });
|
|
|
}
|
|
|
}catch(e) {
|
|
|
message.error('修改失败');
|
|
|
@@ -168,7 +256,7 @@ export default {
|
|
|
});
|
|
|
if(!res.err && res.data.code > 0) {
|
|
|
for(let i = 0; i < list.length; i++) {
|
|
|
- if(list[i].code === code) {
|
|
|
+ if((list[i].code+'') === (code+'')) {
|
|
|
list.splice(i, 1);
|
|
|
break;
|
|
|
}
|