李志伟 преди 2 години
родител
ревизия
9c837d5aad
променени са 6 файла, в които са добавени 147 реда и са изтрити 66 реда
  1. 39
    30
      config/routes.js
  2. 49
    0
      src/components/SettingRow/index.jsx
  3. 36
    0
      src/pages/BasicParameters/index.jsx
  4. 8
    35
      src/pages/applicationList/index.jsx
  5. 1
    1
      src/pages/banner/edit.jsx
  6. 14
    0
      src/services/setting.js

+ 39
- 30
config/routes.js Целия файл

@@ -30,72 +30,81 @@ export default [
30 30
     redirect: '/person',
31 31
     hideInMenu: true,
32 32
   },
33
+  {
34
+    path: '/banner',
35
+    name: '轮播图列表',
36
+    icon: 'PictureOutlined',
37
+    component: '@/pages/banner',
38
+  },
39
+  {
40
+    path: '/banner/edit.jsx',
41
+    name: '轮播图编辑',
42
+    hideInMenu: true,
43
+    component: '@/pages/banner/edit.jsx',
44
+  },
45
+  {
46
+    path: '/notice',
47
+    name: '通知列表',
48
+    icon: 'BellOutlined',
49
+    component: '@/pages/notice',
50
+  },
51
+  {
52
+    path: '/notice/edit.jsx',
53
+    name: '通知编辑',
54
+    hideInMenu: true,
55
+    component: '@/pages/notice/edit.jsx',
56
+  },
33 57
   {
34 58
     path: '/applicationList',
35 59
     name: '申请列表',
36
-    icon: 'apartment',
60
+    icon: 'FieldTimeOutlined',
37 61
     component: '@/pages/applicationList',
38 62
   },
39 63
   {
40 64
     path: '/applicationList/detail.jsx',
41 65
     name: '申请详情',
66
+    hideInMenu: true,
42 67
     icon: 'apartment',
43 68
     component: '@/pages/applicationList/detail.jsx',
44 69
   },
45 70
   {
46 71
     path: '/examine',
47 72
     name: '审核列表',
48
-    icon: 'apartment',
73
+    icon: 'AuditOutlined',
49 74
     component: '@/pages/examine',
50 75
   },
51 76
   {
52 77
     path: '/examine/detail.jsx',
53 78
     name: '犬证审核',
79
+    hideInMenu: true,
54 80
     icon: 'apartment',
55 81
     component: '@/pages/examine/detail.jsx',
56 82
   },
57 83
   {
58 84
     path: '/certificateIssuance',
59 85
     name: '证件发放',
60
-    icon: 'apartment',
86
+    icon: 'IdcardOutlined',
61 87
     component: '@/pages/certificateIssuance',
62 88
   },
63
-  {
64
-    path: '/banner',
65
-    name: '轮播图列表',
66
-    icon: 'apartment',
67
-    component: '@/pages/banner',
68
-  },
69
-  {
70
-    path: '/banner/edit.jsx',
71
-    name: '轮播图编辑',
72
-    hideInMenu: true,
73
-    component: '@/pages/banner/edit.jsx',
74
-  },
75
-  {
76
-    path: '/notice',
77
-    name: '通知列表',
78
-    icon: 'apartment',
79
-    component: '@/pages/notice',
80
-  },
81
-  {
82
-    path: '/notice/edit.jsx',
83
-    name: '通知编辑',
84
-    hideInMenu: true,
85
-    component: '@/pages/notice/edit.jsx',
86
-  },
89
+  
87 90
   {
88 91
     path: '/userList',
89
-    name: '注册列表',
90
-    icon: 'apartment',
92
+    name: '用户注册列表',
93
+    icon: 'SolutionOutlined',
91 94
     component: '@/pages/userList',
92 95
   },
93 96
   {
94 97
     path: '/person',
95 98
     name: '人员列表',
96
-    icon: 'apartment',
99
+    icon: 'UserOutlined',
97 100
     component: '@/pages/person',
98 101
   },
102
+  {
103
+    path: '/BasicParameters',
104
+    name: '系统参数',
105
+    icon: 'SettingOutlined',
106
+    component: '@/pages/BasicParameters',
107
+  },
99 108
   {
100 109
     path: '/',
101 110
     redirect: '/welcome',

+ 49
- 0
src/components/SettingRow/index.jsx Целия файл

@@ -0,0 +1,49 @@
1
+import { Input, Button, Tooltip, message } from 'antd';
2
+import { useState } from 'react';
3
+import { CheckOutlined, UndoOutlined } from '@ant-design/icons';
4
+
5
+const SettingRow = (props) => {
6
+  const { value, onChange } = props;
7
+  const [val, setVal] = useState(value.content);
8
+  const [isShow, setIsShow] = useState(false);
9
+  const handleInput = () => {
10
+    setIsShow(true);
11
+  };
12
+  const handleClick = () => {
13
+    if (val) {
14
+      onChange(value, val);
15
+    } else {
16
+      message.info(value.settingDesc + '不能为空');
17
+      setVal(value.content);
18
+    }
19
+  };
20
+  const handleChange = (e) => {
21
+    setVal(e.target.value);
22
+  };
23
+  const handleReset = () => {
24
+    setVal(value.content);
25
+    setIsShow(false);
26
+  };
27
+  return (
28
+    <div style={{ marginBottom:'16px' }}>
29
+      {value.title}:
30
+      <Input style={{ width: '200px',marginRight:value.desc?'16px':'0' }} value={val} onChange={handleChange} onInput={handleInput} />
31
+      {value.desc?'('+value.desc+')':''}
32
+      <Button
33
+        type="text"
34
+        style={{ color: '#1890ff', visibility: isShow ? 'inherit' : 'hidden' }}
35
+        icon={<CheckOutlined />}
36
+        onClick={handleClick}
37
+      />
38
+      <Tooltip placement="top" title={'重置' + value.title}>
39
+        <Button
40
+          type="text"
41
+          style={{ color: 'green', visibility: isShow ? 'inherit' : 'hidden' }}
42
+          icon={<UndoOutlined />}
43
+          onClick={handleReset}
44
+        />
45
+      </Tooltip>
46
+    </div>
47
+  );
48
+};
49
+export default SettingRow;

+ 36
- 0
src/pages/BasicParameters/index.jsx Целия файл

@@ -0,0 +1,36 @@
1
+import { Card, message } from 'antd';
2
+import { useEffect, useState } from 'react';
3
+import ProCard from '@ant-design/pro-card';
4
+import { PageHeaderWrapper } from '@ant-design/pro-layout';
5
+import { getSetting, updateSetting } from '@/services/setting';
6
+import SettingRow from '@/components/SettingRow';
7
+
8
+export default (props) => {
9
+  const [data, setData] = useState([]);
10
+
11
+  const handleChange = (item, val) => {
12
+    updateSetting(item.settingId, { ...item, content: val })
13
+      .then(() => {
14
+        message.success('修改' + item.title + '成功');
15
+      })
16
+      .catch((err) => {
17
+        message.error(err.message || err);
18
+      });
19
+  };
20
+  useEffect(() => {
21
+    getSetting().then((res) => {
22
+      setData(res.records);
23
+    }).catch((err) => {
24
+      console.log(err.message)
25
+    });
26
+  }, []);
27
+  return (
28
+    <PageHeaderWrapper>
29
+      <Card>
30
+        {data.map((item) => {
31
+          return <SettingRow key={item.settingId} value={item} onChange={handleChange} />;
32
+        })}
33
+      </Card>
34
+    </PageHeaderWrapper>
35
+  );
36
+};

+ 8
- 35
src/pages/applicationList/index.jsx Целия файл

@@ -15,31 +15,11 @@ const formatterTime = (val) => {
15 15
 export default (props) => {
16 16
   const initDate = useRef(moment())
17 17
   const actionRef = useRef();
18
-  const { initialState } = useModel('@@initialState');
19
-
20
-  const handleBeforSearch = (params) => {
21
-    const { createDate, ...others } = params;
22
-
23
-    let start, end, orgId;
24
-    if (!createDate || createDate.length < 1) {
25
-      // 默认时间是今天
26
-      start = moment().format('YYYY-MM-DD')
27
-      end = start
28
-    } else {
29
-      start = moment(createDate[0]).format('YYYY-MM-DD')
30
-      end = moment(createDate[1]).format('YYYY-MM-DD')
31
-    }
32
-    if (initialState.currentUser.orgId) {
33
-      orgId = initialState.currentUser.orgId
34
-      return { ...others, start, end, orgId };
35
-    }
36
-    return { ...others, start, end };
37
-  }
38 18
   const columns = [
39 19
     {
40 20
       title: '申请人',
41
-      dataIndex: 'userName',
42
-      key: 'userName',
21
+      dataIndex: 'personName',
22
+      key: 'personName',
43 23
       search: true,
44 24
     },
45 25
     {
@@ -47,18 +27,18 @@ export default (props) => {
47 27
       dataIndex: 'createDate',
48 28
       key: 'createDate',
49 29
       render: (t) => formatterTime(t),
50
-      renderFormItem: (_, record) => <RangePicker defaultValue={[initDate.current, initDate.current]} placeholder={['开始日期', '结束日期']} format='YYYY-MM-DD' />
30
+      renderFormItem: (_, record) => <RangePicker format='YYYY-MM-DD' />
51 31
     },
52 32
     {
53 33
       title: '订单状态',
54
-      dataIndex: 'userName',
55
-      key: 'userName',
34
+      dataIndex: 'status',
35
+      key: 'status',
56 36
       search: true,//已支付 待支付
57 37
     },
58 38
     {
59 39
       title: '审核状态',
60
-      dataIndex: 'userName',
61
-      key: 'userName',
40
+      dataIndex: 'verifyStatus',
41
+      key: 'verifyStatus',
62 42
       search: true,
63 43
     },
64 44
     {
@@ -81,14 +61,7 @@ export default (props) => {
81 61
         columns={columns}
82 62
         request={getApplicationList}
83 63
         options={false}
84
-        search={{
85
-          defaultCollapsed: false
86
-        }}
87
-        form={{ ignoreRules: false }}
88
-        manualRequest={true}
89
-        revalidateOnFocus={false}
90
-        beforeSearchSubmit={handleBeforSearch}
91
-        rowKey="applicationId"
64
+        rowKey="applyId"
92 65
       />
93 66
     </PageHeaderWrapper>
94 67
   )

+ 1
- 1
src/pages/banner/edit.jsx Целия файл

@@ -58,7 +58,7 @@ export default (props) => {
58 58
       <ProCard tabs={{ type: 'card' }} style={{ marginTop: '16px' }}>
59 59
         <ProCard.TabPane key={1} tab="轮播图编辑">
60 60
           <Form {...formItemLayout} onFinish={Submit} form={form}>
61
-            <FormItem label="图片" name="image" rules={[{ required: true, message: '请选择' }]} tooltip='轮播图尺寸建议5:3这样小程序可以更好地显示'>
61
+            <FormItem label="图片" name="image" rules={[{ required: true, message: '请选择' }]} tooltip='轮播图尺寸建议4:3这样小程序可以更好地显示'>
62 62
               <UploadImage value={image} onChange={setImage} />
63 63
             </FormItem>
64 64
             <FormItem label="排序" name="sortNo" rules={[{ required: true, message: '请输入' }]}>

+ 14
- 0
src/services/setting.js Целия файл

@@ -0,0 +1,14 @@
1
+import request from '@/utils/request';
2
+/**
3
+ * 系统基本数据更新
4
+ * @param {*} data
5
+ * @returns
6
+ */
7
+export const updateSetting = (id, data) => request(`/setting/${id}`, { method: 'put', data });
8
+
9
+/**
10
+ * 查询系统基本信息
11
+ * @param {*} params
12
+ * @returns
13
+ */
14
+export const getSetting = (params) => request('/setting', { params });