diff --git a/web/config/router.config.js b/web/config/router.config.js index 29f62826..be0ce2ca 100644 --- a/web/config/router.config.js +++ b/web/config/router.config.js @@ -146,6 +146,10 @@ export default [ path: '/search/template/template', component: './SearchManage/template/SearchTemplate', }, + { + path: '/search/template/:cluster_id', + component: './SearchManage/template/SearchTemplate', + }, { path: '/search/template/history', component: './SearchManage/template/History', diff --git a/web/mock/search/template.js b/web/mock/search/template.js index e8b97912..bae1ee12 100644 --- a/web/mock/search/template.js +++ b/web/mock/search/template.js @@ -42,7 +42,7 @@ export default { res.send({ "_id": "c1nc0dkagrh0jobkn6s0", "_source": { - "name": "test_search_template", + "name": "test_search_template_new", "source": "{\"query\":{\"match\":{\"{{my_field}}\":\"{{my_value}}\"}},\"size\":\"{{my_size}}\"}", "cluster_id": "c0octmtath23m973pf4g", "created": "2021-04-08T16:35:02.746223+08:00", diff --git a/web/src/pages/SearchManage/models/searchTemplate.js b/web/src/pages/SearchManage/models/searchTemplate.js new file mode 100644 index 00000000..3684c82a --- /dev/null +++ b/web/src/pages/SearchManage/models/searchTemplate.js @@ -0,0 +1,126 @@ +import { getTemplateList,addTemplate,updateTemplate,deleteTemplate } from '@/services/searchTemplate'; +import { message } from 'antd'; + +export default { + namespace: 'searchTemplate', + + state: { + list: [], + pagination: { + from:0, + size:10 + }, + total:0, + }, + + effects: { + *fetchList({ payload }, { call, put }) { + const res = yield call(getTemplateList, payload); + console.log("fetchList response:",res); + if (res.hits) { + let newList = []; + let hits = res.hits.hits; + for (let item of hits) { + item._source.id = item._id; + newList.push(item._source); + } + console.log("fetchList list:",newList); + yield put({ + type: 'save', + payload: { + list:newList, + total:res.hits.total.value, + }, + }); + } else { + message.warning(res.msg); + } + }, + *add({ payload, callback }, { call, put }) { + const res = yield call(addTemplate, payload); + console.log("add res:",res); + //业务数据格式化处理 + if (res.result === 'created') { + let item = res._source; + item.id = res._id; + + yield put({ + type: 'create', + payload: { + item:item + }, + }); + } else { + message.warning(res.msg); + } + + if (callback) callback(); + }, + *update({ payload, callback }, { call, put }) { + const res = yield call(updateTemplate, payload); + console.log("update res:",res); + //业务数据格式化处理 + if (res.result === 'updated') { + console.log("update successful"); + } + + if (callback) callback(); + }, + *delete({ payload, callback }, { call, put }) { + const payloadNew = {...payload}; + if (Array.isArray(payload.id)) { + payloadNew.id = payload.id.toString(); + } + let res = yield call(deleteTemplate, payloadNew); + res = JSON.parse(res);//这个接口返回的res不是对象而是json字符串?? + console.log("deleted res:",res); + //业务数据格式化处理 + if (res.result === 'deleted') { + const item = {}; + item.id = res._id; + + yield put({ + type: 'del', + payload: { + item:item + }, + }); + } else { + message.warn("deleted failure") + } + + if (callback) callback(); + }, + }, + + reducers: { + save(state, { payload }) { + return { + ...state, + ...payload, + }; + }, + create(state, {payload}){ + console.log("create payload:",payload); + let list = state.list || []; + list.unshift(payload.item); + return { + ...state, + list:list, + total: state.total + 1, + }; + }, + del(state, {payload}){ + console.log("del payload:",payload); + let list = state.list; + let idx = state.list.findIndex((item)=>{ + return item.id === payload.item.id; + }) + idx > -1 && (state.list.splice(idx, 1)); + return { + ...state, + total: state.total - 1, + } + }, + }, +}; diff --git a/web/src/pages/SearchManage/template/SearchTemplate.js b/web/src/pages/SearchManage/template/SearchTemplate.js index 623c612f..0c73d84d 100644 --- a/web/src/pages/SearchManage/template/SearchTemplate.js +++ b/web/src/pages/SearchManage/template/SearchTemplate.js @@ -23,6 +23,7 @@ const CreateForm = Form.create()(props => { const { modalVisible, form, handleAdd, handleModalVisible } = props; const okHandle = () => { form.validateFields((err, fieldsValue) => { + console.log('create form:',fieldsValue); if (err) return; form.resetFields(); handleAdd(fieldsValue); @@ -43,7 +44,7 @@ const CreateForm = Form.create()(props => { })()} - {form.getFieldDecorator('settings', { + {form.getFieldDecorator('source', { rules: [{ required: true }], })(