diff --git a/spug_web/src/pages/config/app/Rel.js b/spug_web/src/pages/config/app/Rel.js new file mode 100644 index 0000000..773faa0 --- /dev/null +++ b/spug_web/src/pages/config/app/Rel.js @@ -0,0 +1,94 @@ +import React from 'react'; +import {observer} from 'mobx-react'; +import {Modal, Form, Transfer, message, Tabs, Alert} from 'antd'; +import http from 'libs/http'; +import serviceStore from '../service/store'; +import store from './store'; + +@observer +class Rel extends React.Component { + constructor(props) { + super(props); + this.state = { + loading: false, + services: [], + apps: store.records.filter(x => x.id !== store.record.id).map(x => ({...x, key: x.id, _key: x.key})) + } + } + + componentDidMount() { + if (serviceStore.records.length === 0) { + serviceStore.fetchRecords().then(this._updateRecords) + } else { + this._updateRecords() + } + } + + _updateRecords = () => { + const services = serviceStore.records.map(x => { + return {...x, key: x.id, _key: x.key} + }); + this.setState({services}) + }; + + handleSubmit = () => { + this.setState({loading: true}); + const {app, service} = store.confRel; + http.patch('/api/app/', {id: store.record.id, rel_apps: app, rel_services: service}) + .then(res => { + message.success('操作成功'); + store.relVisible = false; + store.fetchRecords() + }, () => this.setState({loading: false})) + }; + + render() { + return ( + store.relVisible = false} + confirmLoading={this.state.loading} + onOk={this.handleSubmit}> + 设置依赖的应用仅会获取到其公共配置,私有配置并不会被其他应用所获取。

, +

服务不存在公共和私有配置的概念,所以会获取到依赖服务的所有配置信息。

+ ]}/> + + + + store.confRel.app = keys} + render={item => `${item.name}(${item._key})`}/> + + + + + store.confRel.service = keys} + render={item => `${item.name}(${item._key})`}/> + + + +
+ ) + } +} + +export default Rel \ No newline at end of file diff --git a/spug_web/src/pages/config/app/Table.js b/spug_web/src/pages/config/app/Table.js index a260c2b..5e076f2 100644 --- a/spug_web/src/pages/config/app/Table.js +++ b/spug_web/src/pages/config/app/Table.js @@ -1,11 +1,10 @@ import React from 'react'; -import { observer } from 'mobx-react'; -import { Link } from 'react-router-dom'; -import { Table, Divider, Modal, message } from 'antd'; -import ComForm from './Form'; +import {observer} from 'mobx-react'; +import {Link} from 'react-router-dom'; +import {Table, Divider, Modal, message} from 'antd'; import http from 'libs/http'; import store from './store'; -import { LinkButton } from "components"; +import {LinkButton} from "components"; @observer class ComTable extends React.Component { @@ -36,6 +35,8 @@ class ComTable extends React.Component { this.handleDelete(info)}>删除 + store.showRel(info)}>依赖 + 配置 ) @@ -61,10 +62,7 @@ class ComTable extends React.Component { data = data.filter(item => item['name'].toLowerCase().includes(store.f_name.toLowerCase())) } return ( - - - {store.formVisible && } - +
) } } diff --git a/spug_web/src/pages/config/app/index.js b/spug_web/src/pages/config/app/index.js index f7eeef5..f587e37 100644 --- a/spug_web/src/pages/config/app/index.js +++ b/spug_web/src/pages/config/app/index.js @@ -3,6 +3,8 @@ import { observer } from 'mobx-react'; import { Card, Input, Button } from 'antd'; import { SearchForm } from 'components'; import ComTable from './Table'; +import ComForm from './Form'; +import Rel from './Rel'; import store from './store'; export default observer(function () { @@ -20,6 +22,8 @@ export default observer(function () { + {store.formVisible && } + {store.relVisible && } ) }) \ No newline at end of file diff --git a/spug_web/src/pages/config/app/store.js b/spug_web/src/pages/config/app/store.js index 196dd4d..16c9d4c 100644 --- a/spug_web/src/pages/config/app/store.js +++ b/spug_web/src/pages/config/app/store.js @@ -4,8 +4,10 @@ import http from 'libs/http'; class Store { @observable records = []; @observable record = {}; + @observable confRel = {}; @observable isFetching = false; @observable formVisible = false; + @observable relVisible = false; @observable f_name; @@ -19,6 +21,15 @@ class Store { showForm = (info = {}) => { this.formVisible = true; this.record = info + }; + + showRel = (info) => { + this.relVisible = true; + this.record = info; + this.confRel = { + app: info['rel_apps'], + service: info['rel_services'] + } } } diff --git a/spug_web/src/pages/config/service/store.js b/spug_web/src/pages/config/service/store.js index 94bbf64..29eadd9 100644 --- a/spug_web/src/pages/config/service/store.js +++ b/spug_web/src/pages/config/service/store.js @@ -11,7 +11,7 @@ class Store { fetchRecords = () => { this.isFetching = true; - http.get('/api/config/service/') + return http.get('/api/config/service/') .then(res => this.records = res) .finally(() => this.isFetching = false) };