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 }],
})(
- {form.getFieldDecorator('settings', {
- initialValue: values.processors,
+ {form.getFieldDecorator('source', {
+ initialValue: values.source,
rules: [{ required: true }],
})(