张延森 2 gadus atpakaļ
vecāks
revīzija
a9a71637b4

+ 21
- 1
config/routes.js Parādīt failu

@@ -554,7 +554,27 @@ export default [
554 554
               },
555 555
             ],
556 556
           },
557
-
557
+          {
558
+            path: '/borker',
559
+            name: '全民经纪人',
560
+            component: '../layouts/BlankLayout',
561
+            menuCode: '/borker',
562
+            routes: [
563
+              {
564
+                path: '/borker/announcement',
565
+                name: '通知公告',
566
+                component: './borker/announcement/index',
567
+                menuCode: '/borker/announcement',
568
+              },
569
+              {
570
+                path: '/borker/announcement/edit',
571
+                name: '通知公告维护',
572
+                hideInMenu: true,
573
+                component: './borker/announcement/Edit/index',
574
+                menuCode: '/borker/announcement/edit',
575
+              }
576
+            ],
577
+          },
558 578
           {
559 579
             path: '/system',
560 580
             name: '系统管理',

+ 106
- 0
src/pages/borker/announcement/Edit/index.jsx Parādīt failu

@@ -0,0 +1,106 @@
1
+import React, { useState } from 'react'
2
+import { Card, Form, Select, Input, Button } from 'antd'
3
+import SelectCity from '@/components/SelectButton/CitySelect'
4
+import ImageUpload from '@/components/XForm/ImageUpload'
5
+import Wangedit from '@/components/Wangedit/Wangedit';
6
+
7
+import { formItemLayout, showTypeList, pages } from '../util'
8
+
9
+const FormItem = Form.Item
10
+const Option = Select.Option
11
+
12
+const editorMenus = [
13
+  'head', // 标题
14
+  'bold', // 粗体
15
+  'italic', // 斜体
16
+  'underline', // 下划线
17
+  'strikeThrough', // 删除线
18
+  'indent', // 缩进
19
+  'lineHeight', // 行高
20
+  'foreColor', // 文字颜色
21
+  'list', // 列表
22
+  'justify', // 对齐方式
23
+  'quote', // 引用
24
+  'undo', // 撤销
25
+];
26
+const fullWidth = { width: '100%' }
27
+
28
+const AnnouncementEdit = React.forwardRef((props) => {
29
+  const { history, form } = props
30
+  const { query } = history.location
31
+  const { id } = query
32
+  const { getFieldDecorator, getFieldValue, setFieldsValue } = form
33
+
34
+  const [loading, setLoading] = useState(false)
35
+
36
+  return (
37
+    <Card>
38
+      <Form {...formItemLayout}>
39
+        <FormItem label="公告类型">
40
+          {
41
+            getFieldDecorator('showType', {
42
+              rules: [{ required: true, message: '请填写标题' }],
43
+            })(
44
+              <Select style={fullWidth} allowClear>
45
+                {
46
+                  showTypeList.map(x => <Option key={x.value} value={x.value}>{x.label}</Option>)
47
+                }
48
+              </Select>
49
+            )
50
+          }
51
+        </FormItem>
52
+        <FormItem label="公告图片" help="建议图片尺寸:640*960px,比例2:3,格式:jpg">
53
+          {
54
+            getFieldDecorator('imageUrl', {
55
+              rules: [{ required: true, message: '公告图片' }],
56
+            })(<ImageUpload />)
57
+          }
58
+        </FormItem>
59
+        <FormItem label="公告标题">
60
+          {
61
+            getFieldDecorator('title', {
62
+              rules: [{ required: true, message: '请填写标题' }],
63
+            })(<Input />)
64
+          }
65
+        </FormItem>
66
+        <FormItem label="所属城市">
67
+          {
68
+            getFieldDecorator('cityId', {
69
+              rules: [{ required: true, message: '请选择城市' }],
70
+            })(
71
+              <SelectCity style={fullWidth} />,
72
+            )
73
+          }
74
+        </FormItem>
75
+        <FormItem label="跳转页面">
76
+          {
77
+            getFieldDecorator('linkPage')(
78
+              <Select style={fullWidth} allowClear>
79
+                {
80
+                  pages.map(x => <Option key={x.page} value={x.page}>{x.title}</Option>)
81
+                }
82
+              </Select>
83
+            )
84
+          }
85
+        </FormItem>
86
+        <FormItem label="页面参数">
87
+          {
88
+            getFieldDecorator('pageParam')(<Input placeholder="key1=value1&key2=value2" />)
89
+          }
90
+        </FormItem>
91
+        <FormItem label="公告详情">
92
+          { 
93
+            getFieldDecorator('content')(<Wangedit menus={editorMenus} />)
94
+          }
95
+        </FormItem>
96
+        <FormItem colon={false} label=" ">
97
+          <Button type="primary" htmlType="submit" loading={loading}>
98
+            提交
99
+          </Button>
100
+        </FormItem>
101
+      </Form>
102
+    </Card>
103
+  )
104
+})
105
+
106
+export default Form.create()(AnnouncementEdit)

+ 95
- 0
src/pages/borker/announcement/index.jsx Parādīt failu

@@ -0,0 +1,95 @@
1
+import React, { useMemo, useRef, useCallback, useState } from 'react'
2
+import { Button, notification, Spin, Badge } from 'antd'
3
+import { router } from 'umi'
4
+import moment from 'moment'
5
+import QueryTable from '@/components/QueryTable'
6
+import SelectCity from '@/components/SelectButton/CitySelect'
7
+import OperButton from '@/components/OperButton'
8
+import { apis } from '@/utils/request'
9
+
10
+import { pages } from './util'
11
+
12
+const searchFields = [
13
+  {
14
+    name: 'cityId',
15
+    label: '城市',
16
+    placeholder: '请选择城市',
17
+    render: () => <SelectCity style={{width: 160}} />
18
+  },
19
+]
20
+
21
+const actionRender = () => {
22
+  const gotoAdd = () => router.push('/borker/announcement/edit')
23
+  return (
24
+    <Button type="primary" icon="plus" onClick={gotoAdd}>新增</Button>
25
+  )
26
+}
27
+
28
+export default (props) => {
29
+  const ref = useRef()
30
+  const [loading, setLoading] = useState(false)
31
+  const [page, setPage] = useState({current: 1, pageSize: 10})
32
+    
33
+  const tableColumns = [
34
+    {
35
+      title: '图片',
36
+      dataIndex: 'imageUrl',
37
+      key: 'imageUrl',
38
+      align: 'center',
39
+      render: (t) => {
40
+        return <img src={t} width={72} height={128} style={{borderRadius: '4px'}} alt="" />
41
+      }
42
+    },
43
+    {
44
+      title: '标题',
45
+      dataIndex: 'title',
46
+      key: 'title',
47
+    },
48
+    {
49
+      title: '跳转页面',
50
+      dataIndex: 'linkPage',
51
+      key: 'linkPage',
52
+      render: t => (pages.filter(x => x.page === t)[0] || {}).title
53
+    },
54
+    {
55
+      title: '时间',
56
+      dataIndex: 'createDate',
57
+      key: 'createDate',
58
+      align: 'center',
59
+      render: (t) => moment(t).format('YYYY-MM-DD HH:mm')
60
+    },
61
+    {
62
+      title: '状态',
63
+      dataIndex: 'status',
64
+      key: 'status',
65
+      align: 'center',
66
+      render: (t) => t === 1 ? <Badge status="success" text="已发布" /> : <Badge status="processing" text="未发布" />
67
+    },
68
+    {
69
+      title: '操作',
70
+      key: 'options',
71
+      align: 'center',
72
+      render: (_, row) => (
73
+        <>
74
+          <OperButton>查看详情</OperButton>,
75
+          <OperButton onClick={() => onPublish(row)}>{row.status === 1 ? '取消发布' : '发布'}</OperButton>
76
+        </>
77
+      )
78
+    },
79
+  ]
80
+
81
+
82
+  return (
83
+    <Spin spinning={loading}>
84
+      <QueryTable
85
+        ref={ref}
86
+        rowKey="screenId"
87
+        api={apis.borker.getFirstScreenList}
88
+        searchFields={searchFields}
89
+        columns={tableColumns}
90
+        actionRender={actionRender}
91
+        onPageChange={(pg) => setPage(pg)}
92
+      />
93
+    </Spin>
94
+  )
95
+}

+ 22
- 0
src/pages/borker/announcement/util.js Parādīt failu

@@ -0,0 +1,22 @@
1
+
2
+export const showTypeList = [
3
+  { label: '开屏', value: 'first-screen' }
4
+]
5
+
6
+export const pages = [
7
+  {
8
+    title: '页面1',
9
+    page: '/subpackages/pages/borker',
10
+  }
11
+]
12
+
13
+export const formItemLayout = {
14
+  labelCol: {
15
+    xs: { span: 24 },
16
+    sm: { span: 3 },
17
+  },
18
+  wrapperCol: {
19
+    xs: { span: 24 },
20
+    sm: { span: 19 },
21
+  },
22
+}

+ 4
- 4
src/pages/building/Edit/Borker/index.jsx Parādīt failu

@@ -9,7 +9,6 @@ const FormItem = Form.Item
9 9
 const updateBorker = fetch(apis.borker.updateBuildingBorker)
10 10
 const getAgreementList = fetch(apis.borker.getBkAgreementList)
11 11
 const saveAgreement = fetch(apis.borker.saveBkAgreement)
12
-const updateAgreement = fetch(apis.borker.updateBkAgreement)
13 12
 
14 13
 const editorMenus = [
15 14
   'head', // 标题
@@ -59,8 +58,7 @@ const Borker = React.forwardRef((props, ref) => {
59 58
       }
60 59
 
61 60
       setLoading(true)
62
-      const p = data.ruleId ? updateAgreement({ urlData: { id: data.ruleId }, data }) : saveAgreement({ data })
63
-      p.then(res => {
61
+      saveAgreement({ data }).then(res => {
64 62
         setLoading(false)
65 63
         // setBkAgreement(res)
66 64
         form.setFieldsValue(res || {});
@@ -82,6 +80,8 @@ const Borker = React.forwardRef((props, ref) => {
82 80
       }).catch(() => {
83 81
         setLoading(false)
84 82
       })
83
+
84
+      setIsBorker(buildingInfo.isBorker ? 'true' : 'false')
85 85
     }
86 86
   }, [buildingId])
87 87
 
@@ -113,7 +113,7 @@ const Borker = React.forwardRef((props, ref) => {
113 113
             })(<Wangedit menus={editorMenus} />)}          
114 114
           </FormItem>
115 115
           <FormItem colon={false} label=" ">
116
-            <Button type="primary" loading={loading} onClick={handelSubmit}>
116
+            <Button type="primary" htmlType="submit" loading={loading}>
117 117
               提交
118 118
             </Button>
119 119
           </FormItem>

+ 6
- 0
src/services/apis.js Parādīt failu

@@ -2402,6 +2402,7 @@ export default {
2402 2402
   },
2403 2403
 
2404 2404
   // 全民经纪人
2405
+  // 因为懒, 没有写权限相关
2405 2406
   borker: {
2406 2407
     // 开启功能
2407 2408
     updateBuildingBorker: {
@@ -2423,5 +2424,10 @@ export default {
2423 2424
       method: 'PUT',
2424 2425
       url: `${prefix}/bkAgreement/:id`,
2425 2426
     },
2427
+    // 消息通知列表
2428
+    getFirstScreenList: {
2429
+      method: 'GET',
2430
+      url: `${prefix}/bkFirstScreen`,
2431
+    },
2426 2432
   }
2427 2433
 };