From b3e64cb497b06713bd44d2dd0f0309fe260734b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E4=BA=8C=E7=8C=9B?= Date: Fri, 6 Dec 2019 18:46:13 +0800 Subject: [PATCH] A web update --- spug_web/src/menus.js | 1 + .../src/pages/config/environment/store.js | 2 - spug_web/src/pages/config/routes.js | 2 + spug_web/src/pages/config/service/Form.js | 66 ++++++++++++++++++ spug_web/src/pages/config/service/Table.js | 69 +++++++++++++++++++ spug_web/src/pages/config/service/index.js | 25 +++++++ spug_web/src/pages/config/service/store.js | 25 +++++++ 7 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 spug_web/src/pages/config/service/Form.js create mode 100644 spug_web/src/pages/config/service/Table.js create mode 100644 spug_web/src/pages/config/service/index.js create mode 100644 spug_web/src/pages/config/service/store.js diff --git a/spug_web/src/menus.js b/spug_web/src/menus.js index 0132ce3..6f97f13 100644 --- a/spug_web/src/menus.js +++ b/spug_web/src/menus.js @@ -11,6 +11,7 @@ export default [ { icon: 'deployment-unit', title: '配置中心', child: [ {title: '环境管理', path: '/config/environment'}, + {title: '服务管理', path: '/config/service'}, ] }, {icon: 'monitor', title: '监控中心', path: '/monitor'}, diff --git a/spug_web/src/pages/config/environment/store.js b/spug_web/src/pages/config/environment/store.js index 90f25a3..d69261c 100644 --- a/spug_web/src/pages/config/environment/store.js +++ b/spug_web/src/pages/config/environment/store.js @@ -3,13 +3,11 @@ import http from 'libs/http'; class Store { @observable records = []; - @observable types = []; @observable record = {}; @observable isFetching = false; @observable formVisible = false; @observable f_name; - @observable f_type; fetchRecords = () => { this.isFetching = true; diff --git a/spug_web/src/pages/config/routes.js b/spug_web/src/pages/config/routes.js index 8118b0f..904d647 100644 --- a/spug_web/src/pages/config/routes.js +++ b/spug_web/src/pages/config/routes.js @@ -1,7 +1,9 @@ import { makeRoute } from 'libs/router'; import Environment from './environment'; +import Service from './service'; export default [ makeRoute('/environment', Environment), + makeRoute('/service', Service), ] \ No newline at end of file diff --git a/spug_web/src/pages/config/service/Form.js b/spug_web/src/pages/config/service/Form.js new file mode 100644 index 0000000..d0455df --- /dev/null +++ b/spug_web/src/pages/config/service/Form.js @@ -0,0 +1,66 @@ +import React from 'react'; +import { observer } from 'mobx-react'; +import { Modal, Form, Input, message } from 'antd'; +import http from 'libs/http'; +import store from './store'; + +@observer +class ComForm extends React.Component { + constructor(props) { + super(props); + this.state = { + loading: false, + } + } + + handleSubmit = () => { + this.setState({loading: true}); + const formData = this.props.form.getFieldsValue(); + formData['id'] = store.record.id; + http.post('/api/config/service/', formData) + .then(res => { + message.success('操作成功'); + store.formVisible = false; + store.fetchRecords() + }, () => this.setState({loading: false})) + }; + + render() { + const info = store.record; + const {getFieldDecorator} = this.props.form; + const itemLayout = { + labelCol: {span: 6}, + wrapperCol: {span: 14} + }; + return ( + store.formVisible = false} + confirmLoading={this.state.loading} + onOk={this.handleSubmit}> +
+ + {getFieldDecorator('name', {initialValue: info['name']})( + + )} + + + {getFieldDecorator('key', {initialValue: info['key']})( + + )} + + + {getFieldDecorator('desc', {initialValue: info['desc']})( + + )} + +
+
+ ) + } +} + +export default Form.create()(ComForm) \ No newline at end of file diff --git a/spug_web/src/pages/config/service/Table.js b/spug_web/src/pages/config/service/Table.js new file mode 100644 index 0000000..aaa2fc7 --- /dev/null +++ b/spug_web/src/pages/config/service/Table.js @@ -0,0 +1,69 @@ +import React from 'react'; +import { observer } from 'mobx-react'; +import { Table, Divider, Modal, message } from 'antd'; +import ComForm from './Form'; +import http from 'libs/http'; +import store from './store'; +import { LinkButton } from "components"; + +@observer +class ComTable extends React.Component { + componentDidMount() { + store.fetchRecords() + } + + columns = [{ + title: '序号', + key: 'series', + render: (_, __, index) => index + 1, + width: 80, + }, { + title: '服务名称', + dataIndex: 'name', + }, { + title: '标识符', + dataIndex: 'key', + }, { + title: '描述信息', + dataIndex: 'desc', + ellipsis: true + }, { + title: '操作', + render: info => ( + + store.showForm(info)}>编辑 + + this.handleDelete(info)}>删除 + + ) + }]; + + handleDelete = (text) => { + Modal.confirm({ + title: '删除确认', + content: `确定要删除【${text['name']}】?`, + onOk: () => { + return http.delete('/api/config/service/', {params: {id: text.id}}) + .then(() => { + message.success('删除成功'); + store.fetchRecords() + }) + } + }) + }; + + render() { + let data = store.records; + if (store.f_name) { + data = data.filter(item => item['name'].toLowerCase().includes(store.f_name.toLowerCase())) + } + return ( + + + {store.formVisible && } + + ) + } +} + +export default ComTable \ No newline at end of file diff --git a/spug_web/src/pages/config/service/index.js b/spug_web/src/pages/config/service/index.js new file mode 100644 index 0000000..7dc025d --- /dev/null +++ b/spug_web/src/pages/config/service/index.js @@ -0,0 +1,25 @@ +import React from 'react'; +import { observer } from 'mobx-react'; +import { Card, Input, Button } from 'antd'; +import { SearchForm } from 'components'; +import ComTable from './Table'; +import store from './store'; + +export default observer(function () { + return ( + + + + store.f_name = e.target.value} placeholder="请输入"/> + + + + + +
+ +
+ +
+ ) +}) \ No newline at end of file diff --git a/spug_web/src/pages/config/service/store.js b/spug_web/src/pages/config/service/store.js new file mode 100644 index 0000000..94bbf64 --- /dev/null +++ b/spug_web/src/pages/config/service/store.js @@ -0,0 +1,25 @@ +import { observable } from "mobx"; +import http from 'libs/http'; + +class Store { + @observable records = []; + @observable record = {}; + @observable isFetching = false; + @observable formVisible = false; + + @observable f_name; + + fetchRecords = () => { + this.isFetching = true; + http.get('/api/config/service/') + .then(res => this.records = res) + .finally(() => this.isFetching = false) + }; + + showForm = (info = {}) => { + this.formVisible = true; + this.record = info + } +} + +export default new Store() \ No newline at end of file