diff --git a/README.md b/README.md index 5490155..2086926 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@
-
+
-
-
+
+
@@ -58,7 +58,8 @@ SpringBlade
* 会员计划:[SpringBlade会员计划](https://gitee.com/smallc/SpringBlade/wikis/SpringBlade会员计划)
* 交流一群:`477853168`(满)
* 交流二群:`751253339`(满)
-* 交流三群:`784729540`
+* 交流三群:`784729540`(满)
+* 交流四群:`1034621754`
## 在线演示
* Saber-基于Vue:[https://saber.bladex.vip](https://saber.bladex.vip)
diff --git a/config/router.config.js b/config/router.config.js
index e903132..5e7c708 100644
--- a/config/router.config.js
+++ b/config/router.config.js
@@ -90,6 +90,18 @@ export default [
},
],
},
+ {
+ path: '/base',
+ routes: [
+ {
+ path: '/base/region',
+ routes: [
+ { path: '/base/region', redirect: '/base/region/detail' },
+ { path: '/base/region/detail', component: './Base/Region/Region' },
+ ],
+ },
+ ],
+ },
{
path: '/system',
routes: [
diff --git a/src/locales/en-US/menu.js b/src/locales/en-US/menu.js
index e7b7443..af66b88 100644
--- a/src/locales/en-US/menu.js
+++ b/src/locales/en-US/menu.js
@@ -6,6 +6,8 @@ export default {
'menu.dashboard.workplace': 'Workplace',
'menu.desk': 'desktop',
'menu.desk.notice': 'notice',
+ 'menu.base': 'base',
+ 'menu.base.region': 'region',
'menu.system': 'system',
'menu.system.user': 'user',
'menu.system.dept': 'department',
diff --git a/src/locales/zh-CN/menu.js b/src/locales/zh-CN/menu.js
index e158659..2b3e64a 100644
--- a/src/locales/zh-CN/menu.js
+++ b/src/locales/zh-CN/menu.js
@@ -6,6 +6,8 @@ export default {
'menu.dashboard.workplace': '工作台',
'menu.desk': '工作台',
'menu.desk.notice': '通知公告',
+ 'menu.base': '基础配置',
+ 'menu.base.region': '行政区划',
'menu.system': '系统管理',
'menu.system.user': '用户管理',
'menu.system.dept': '部门管理',
diff --git a/src/locales/zh-TW/menu.js b/src/locales/zh-TW/menu.js
index 86daa5c..6a4e899 100644
--- a/src/locales/zh-TW/menu.js
+++ b/src/locales/zh-TW/menu.js
@@ -6,6 +6,8 @@ export default {
'menu.dashboard.workplace': '工作台',
'menu.desk': '工作台',
'menu.desk.notice': '通知公告',
+ 'menu.base': '基礎配置',
+ 'menu.base.region': '行政區劃',
'menu.system': '系統管理',
'menu.system.user': '用戶管理',
'menu.system.dept': '部門管理',
diff --git a/src/pages/Base/Region/Region.js b/src/pages/Base/Region/Region.js
new file mode 100644
index 0000000..da0a2b8
--- /dev/null
+++ b/src/pages/Base/Region/Region.js
@@ -0,0 +1,399 @@
+import React, { PureComponent } from 'react';
+import {
+ Button,
+ Card,
+ Col,
+ Form,
+ Input,
+ InputNumber,
+ Row,
+ Tree,
+ Cascader,
+ Radio,
+ message,
+ Modal,
+} from 'antd';
+import Panel from '../../../components/Panel';
+import styles from '@/layouts/Sword.less';
+import { getLazyTree, detail, submit, remove } from '../../../services/region';
+import { getButton, hasButton } from '../../../utils/authority';
+import Func from '../../../utils/Func';
+
+const FormItem = Form.Item;
+const { TreeNode } = Tree;
+const { TextArea } = Input;
+const ButtonGroup = Button.Group;
+
+@Form.create()
+class Region extends PureComponent {
+ state = {
+ topCode: '00',
+ treeData: [],
+ treeCascader: [],
+ debugVisible: false,
+ };
+
+ // ============ 初始化数据 ===============
+ componentWillMount() {
+ this.initTree();
+ this.initCascader('00');
+ }
+
+ initTree = () => {
+ const { topCode } = this.state;
+ getLazyTree({ parentCode: topCode }).then(resp => {
+ if (resp.success) {
+ this.setState({
+ treeData: resp.data.map(item => {
+ return { ...item, isLeaf: !item.hasChildren };
+ }),
+ });
+ }
+ });
+ };
+
+ initCascader = code => {
+ getLazyTree({ parentCode: code }).then(resp => {
+ if (resp.success) {
+ this.setState({
+ treeCascader: resp.data.map(item => {
+ return {
+ label: item.title,
+ value: item.value,
+ isLeaf: !item.hasChildren,
+ };
+ }),
+ });
+ }
+ });
+ };
+
+ onSelect = checkedTreeKeys => {
+ const code = checkedTreeKeys[0];
+ if (Func.isEmpty(code)) {
+ return;
+ }
+ detail({ code }).then(resp => {
+ if (resp.success) {
+ const { form } = this.props;
+ const { data } = resp;
+ form.setFieldsValue({
+ parentCode: data.parentCode,
+ parentName: data.parentName,
+ code: data.code,
+ name: data.name,
+ level: data.level,
+ sort: data.sort,
+ remark: data.remark,
+ });
+ }
+ });
+ };
+
+ onLoadData = treeNode =>
+ new Promise(resolve => {
+ if (treeNode.props.children) {
+ resolve();
+ return;
+ }
+ getLazyTree({ parentCode: treeNode.props.id }).then(resp => {
+ if (resp.success) {
+ const { treeData } = this.state;
+ // eslint-disable-next-line no-param-reassign
+ treeNode.props.dataRef.children = resp.data.map(item => {
+ return { ...item, isLeaf: !item.hasChildren };
+ });
+ this.setState({
+ treeData: [...treeData],
+ });
+ }
+ resolve();
+ });
+ });
+
+ onCascaderChange = (value, selectedOptions) => {
+ window.console.log(value, selectedOptions);
+ };
+
+ onLoadCascaderData = selectedOptions => {
+ const targetOption = selectedOptions[selectedOptions.length - 1];
+ targetOption.loading = true;
+
+ getLazyTree({ parentCode: targetOption.value }).then(resp => {
+ if (resp.success) {
+ targetOption.loading = false;
+ targetOption.children = resp.data.map(item => {
+ return {
+ label: item.title,
+ value: item.value,
+ isLeaf: !item.hasChildren,
+ };
+ });
+ const { treeCascader } = this.state;
+ this.setState({
+ treeCascader: [...treeCascader],
+ });
+ }
+ });
+ };
+
+ handleAdd = () => {
+ const { form } = this.props;
+ const region = form.getFieldsValue();
+ if (!region.code || !region.name) {
+ message.warn('请先选择一项区划!');
+ return;
+ }
+ form.setFieldsValue({
+ parentCode: region.code,
+ parentName: region.name,
+ code: region.code,
+ name: '',
+ level: region.level < 5 ? region.level + 1 : region.level,
+ remark: region.remark,
+ });
+ };
+
+ handleDelete = () => {
+ const { form } = this.props;
+ const code = form.getFieldValue('code');
+ Modal.confirm({
+ title: '删除确认',
+ content: '确定删除该条记录?',
+ okText: '确定',
+ okType: 'danger',
+ cancelText: '取消',
+ onOk() {
+ remove({ id: code }).then(resp => {
+ if (resp.success) {
+ message.success(resp.msg);
+ form.resetFields();
+ } else {
+ message.error(resp.msg || '删除失败');
+ }
+ });
+ },
+ onCancel() {},
+ });
+ };
+
+ handleDebug = () => {
+ this.setState({ debugVisible: true });
+ };
+
+ handleDebugCancel = () => {
+ this.setState({ debugVisible: false });
+ };
+
+ handleSubmit = e => {
+ e.preventDefault();
+ const { form } = this.props;
+ const { topCode } = this.state;
+ form.validateFieldsAndScroll((err, values) => {
+ if (err) return;
+ const parentCode = form.getFieldValue('parentCode');
+ const code = form.getFieldValue('code');
+ if (parentCode === code) {
+ message.warn('请输入正确的区划子编号!');
+ return;
+ }
+ const params = {
+ ...values,
+ parentCode: parentCode === topCode ? '' : parentCode,
+ };
+ submit(params).then(resp => {
+ if (resp.success) {
+ message.success(resp.msg);
+ form.resetFields();
+ } else {
+ message.error(resp.msg || '提交失败');
+ }
+ });
+ });
+ };
+
+ handleReset = () => {
+ const { form } = this.props;
+ form.resetFields();
+ };
+
+ renderTreeNodes = data =>
+ data.map(item => {
+ if (item.children) {
+ return (
+