魏超 5 년 전
부모
커밋
9a675a47f5
5개의 변경된 파일262개의 추가작업 그리고 11개의 파일을 삭제
  1. 5
    0
      config/config.js
  2. 40
    0
      src/components/SelectButton/NewTypeSelect.jsx
  3. 68
    10
      src/pages/news/list/NewsList.jsx
  4. 148
    0
      src/pages/news/list/editNewsList.jsx
  5. 1
    1
      src/pages/news/type/NewsType.jsx

+ 5
- 0
config/config.js 파일 보기

@@ -260,6 +260,11 @@ export default {
260 260
                   name: '资讯列表',
261 261
                   component: './news/list/NewsList',
262 262
                 },
263
+                {
264
+                  path: '/news/list/editNewsList',
265
+                  name: '',
266
+                  component: './news/list/editNewsList',
267
+                },
263 268
               ],
264 269
             },
265 270
             {

+ 40
- 0
src/components/SelectButton/NewTypeSelect.jsx 파일 보기

@@ -0,0 +1,40 @@
1
+import React, { useState, useEffect } from 'react';
2
+import { Select } from 'antd';
3
+
4
+import request from '../../utils/request'
5
+
6
+const { Option } = Select;
7
+
8
+/**
9
+ *
10
+ *
11
+ * @param {*} props
12
+ * @returns
13
+ */
14
+const NewsTypeSelect = (props) => {
15
+  const [ data, setData ] = useState([])
16
+
17
+  useEffect(() => {
18
+    getCityList();
19
+  },[])
20
+
21
+  const getCityList = (e) => {
22
+    request({
23
+        url: '/api/admin/taNewsType',
24
+        method: 'GET',
25
+        params: {pageNum: 1,pageSize: 999},
26
+    }).then((data) => {
27
+        setData(data.records)
28
+    })
29
+  }
30
+
31
+  return (
32
+      <Select value={props.value} style={{ width: '180px' }} placeholder="请选择类型" onChange={props.onChange}>
33
+          {data.map(type => (
34
+            <Option key={type.newsTypeId}>{type.newsTypeName}</Option>
35
+          ))}
36
+      </Select>
37
+  )
38
+}
39
+export default NewsTypeSelect
40
+

+ 68
- 10
src/pages/news/list/NewsList.jsx 파일 보기

@@ -1,9 +1,11 @@
1 1
 import React, { useState, useEffect } from 'react';
2
-import { Form, Icon, Input, Button, DatePicker, Select, Card, Row, Col, Pagination, Alert } from 'antd';
2
+import { Form, Icon, Input, Button, DatePicker, Select, Modal, message, Card, Row, Col, Pagination, Alert } from 'antd';
3 3
 import moment from 'moment';
4
+import router from 'umi/router';
4 5
 import request from '../../../utils/request';
5 6
 import apis from '../../../services/apis';
6 7
 import Styles from './style.less';
8
+import NewsTypeSelect from '../../../components/SelectButton/NewTypeSelect'
7 9
 
8 10
 
9 11
 const { Option } = Select;
@@ -19,7 +21,53 @@ const tempDate = [{ code: 's101' }]
19 21
  */
20 22
 function CartBody(props) {
21 23
   const { data } = props
22
-  console.log(props);
24
+
25
+  const cancelPage = () =>{
26
+    router.push({
27
+      pathname: '/news/list/NewsList',
28
+    });
29
+  }
30
+
31
+  // 查询列表
32
+  const getList = (params) => {
33
+    request({
34
+        url: '/api/admin/taNews',
35
+        method: 'GET',
36
+        params: { ...params },
37
+    }).then((data) => {
38
+        cancelPage();
39
+    })
40
+  }
41
+
42
+  //删除资讯
43
+  const changeNewsListStatus = (newsId) => () => {
44
+    Modal.confirm({
45
+      title: '确认删除该资讯?',
46
+      okText: '确认',
47
+      cancelText: '取消',
48
+      onOk() {
49
+        request({
50
+          url: '/api/admin/taNews/' + newsId,
51
+          method: 'DELETE',
52
+          // data: { ...row },
53
+        }).then((data) => {
54
+          message.info('操作成功!')
55
+          getList({ pageNum: 1, pageSize: 10 });
56
+        })
57
+      }
58
+    });
59
+  }
60
+
61
+  // 跳转到编辑资讯列表
62
+  const toEditList = (newsId) => ()  => {
63
+    router.push({
64
+      pathname: '/news/list/editNewsList',
65
+      query: {
66
+        newsId
67
+      },
68
+    });
69
+  }
70
+
23 71
   return (
24 72
           <Card
25 73
             hoverable
@@ -30,14 +78,14 @@ function CartBody(props) {
30 78
             <p className={Styles.cardText}>
31 79
               <span className={Styles.title}>资讯类型</span>
32 80
               <span >:{ data.newsType.newsTypeName }</span>
33
-              <span className={Styles.ediText}>
81
+              <span className={Styles.ediText} onClick={toEditList(data.newsId)}>
34 82
                 编辑
35 83
                 <Icon type="form" style={{ color: '#C0C4CC', marginLeft: '10px' }} />
36 84
               </span>
37 85
             </p>
38 86
             <p className={Styles.cardText}>
39 87
               <span className={Styles.title}>状态</span>
40
-              <span >:{ data.status == 0 ? "已发布" : "未发布" }</span>
88
+              <span >:{ data.newsStatus == 0 ? "已发布" : "未发布" }</span>
41 89
             </p>
42 90
             <p className={Styles.cardItem}>
43 91
               <span className={Styles.title}>阅读数量</span>
@@ -45,7 +93,7 @@ function CartBody(props) {
45 93
             </p>
46 94
             <p className={Styles.cardItem}>
47 95
               <span className={Styles.title}>转发数量</span>
48
-              <span className={ Styles.address }>:{ data.shareNum }</span>
96
+              <span>:{ data.shareNum }</span>
49 97
             </p>
50 98
             <p className={Styles.cardItem}>
51 99
               <span className={Styles.title}>点赞数量</span>     
@@ -66,7 +114,7 @@ function CartBody(props) {
66 114
               </span>
67 115
               <span style={{
68 116
                 color: '#FF4A4A', position: 'absolute', right: '0',
69
-              }} >
117
+              }} onClick={changeNewsListStatus(data.newsId)}>
70 118
                 删除
71 119
                 <Icon type="rest" style={{ color: '#C0C4CC', marginLeft: '8px' }} />
72 120
               </span>
@@ -122,6 +170,17 @@ function body(props) {
122 170
     });
123 171
   }
124 172
 
173
+  // 跳转到编辑资讯列表
174
+  const toEditList = (id) => ()  => {
175
+    router.push({
176
+      pathname: '/news/list/editNewsList',
177
+      query: {
178
+        id
179
+      },
180
+    });
181
+  }
182
+
183
+
125 184
   // Change 事件
126 185
   function handleSelectChange(e) {
127 186
     // eslint-disable-next-line no-console
@@ -165,9 +224,8 @@ function body(props) {
165 224
           )}
166 225
         </Form.Item>
167 226
         <Form.Item>
168
-          {getFieldDecorator('type')(
169
-            <Select style={{ width: '180px' }} placeholder="咨询类型" onChange={handleSelectChange}>
170
-            </Select>,
227
+          {getFieldDecorator('buildingId')(
228
+            <NewsTypeSelect />,
171 229
           )}
172 230
         </Form.Item>       
173 231
         <Form.Item>
@@ -184,7 +242,7 @@ function body(props) {
184 242
           </Button>
185 243
         </Form.Item>
186 244
       </Form>
187
-      <Button type="primary" className={Styles.addButton}>
245
+      <Button type="primary" className={Styles.addButton} onClick={toEditList()}>
188 246
         新增
189 247
       </Button>
190 248
 

+ 148
- 0
src/pages/news/list/editNewsList.jsx 파일 보기

@@ -0,0 +1,148 @@
1
+import React, { useState, useEffect } from 'react';
2
+import { Form, Input, Button, Icon, Select, Tabs, Radio, DatePicker,message } from 'antd';
3
+import { FormattedMessage } from 'umi-plugin-react/locale';
4
+import styles from '../../style/GoodsList.less';
5
+import moment from 'moment';
6
+import router from 'umi/router';
7
+import BuildSelect from '../../../components/SelectButton/BuildSelect'
8
+import NewsTypeSelect from '../../../components/SelectButton/NewTypeSelect'
9
+import XForm, { FieldTypes } from '../../../components/XForm';
10
+import Wangedit from '../../../components/Wangedit/Wangedit'
11
+import request from '../../../utils/request'
12
+
13
+const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
14
+/**
15
+ *
16
+ *
17
+ * @param {*} props
18
+ * @returns
19
+ */
20
+ const Edit = (props) => {
21
+  const [ tab, changeTab ] = useState('basic')
22
+  const newsId = props.location.query.newsId
23
+  const [ dynamicData, setDynamicData ] = useState({})
24
+  if(newsId){
25
+    useEffect(() => {
26
+      getDynamicData(newsId);
27
+    },[])
28
+
29
+  // 查询列表
30
+  const getDynamicData = (newsId) => {
31
+    request({
32
+        url: '/api/admin/taNews/' + newsId,
33
+        method: 'GET',
34
+        params: { newsId },
35
+    }).then((data) => {
36
+        console.log(data)
37
+        setDynamicData(data)
38
+    })
39
+  }
40
+  }
41
+
42
+  const cancelPage = () =>{
43
+    router.push({
44
+      pathname: '/news/list/NewsList',
45
+    });
46
+  }
47
+
48
+  const Basic = (props) => {
49
+    const fields = [
50
+      {
51
+        label: '意向项目',
52
+        name: 'buildingId',
53
+        render: <BuildSelect />,
54
+        value: dynamicData.buildingId,
55
+        rules: [
56
+          {required: true, message: '请选择所属项目'},
57
+        ]
58
+      },
59
+      {
60
+        label: '资讯图片',
61
+        name: 'newsImg',
62
+        type: FieldTypes.ImageUploader,
63
+        value: dynamicData.newsImg,
64
+      },
65
+      {
66
+        label: '资讯标题',
67
+        name: 'newsName',
68
+        type: FieldTypes.Text,
69
+        value: dynamicData.newsName,
70
+        rules: [
71
+          {required: true, message: '请输入资讯标题'},
72
+        ]
73
+      },
74
+      {
75
+        label: '资讯类型',
76
+        name: 'newsTypeId',
77
+        render: <NewsTypeSelect />,
78
+        value: dynamicData.newsTypeId,
79
+        rules: [
80
+          {required: true, message: '请选择资讯类型'},
81
+        ]
82
+      },
83
+      {
84
+        label: '资讯详情',
85
+        name: 'desc',
86
+        render: <Wangedit />,
87
+        value: dynamicData.desc,
88
+      },
89
+    ]
90
+  
91
+    const handleSubmit = val => { 
92
+      let {...submitValue} = val
93
+      if(dynamicId){
94
+        submitValue.dynamicId = dynamicId
95
+        request({
96
+          url: '/api/admin/buildingDynamic/update',
97
+          method: 'PUT',
98
+          data: submitValue,
99
+        }).then((data) => {
100
+          cancelPage()
101
+        }).catch((err) => {
102
+          message.info(err.msg || err.message)
103
+        })
104
+      }else{
105
+        request({
106
+          url: '/api/admin/taNews',
107
+          method: 'POST',
108
+          data: submitValue,
109
+        }).then((data) => {
110
+          cancelPage()
111
+        }).catch((err) => {
112
+          message.info(err.msg || err.message)
113
+        })
114
+      }
115
+    }
116
+    
117
+    return <XForm onSubmit={handleSubmit} onCancel={cancelPage} fields={fields}></XForm>
118
+  }
119
+  
120
+  const Poster = (props) => {
121
+   return <div>Poster</div>
122
+  }
123
+ 
124
+  const Share = (props) => {
125
+    return <div>Share</div>
126
+  }
127
+
128
+  return (
129
+    <div>
130
+      <div>
131
+        <Radio.Group value={tab} buttonStyle="solid" onChange={e => changeTab(e.target.value)}>
132
+          <Radio.Button value="basic">基本信息</Radio.Button>
133
+          <Radio.Button value="poster">海报图片</Radio.Button>
134
+          <Radio.Button value="share">分享设置</Radio.Button>
135
+        </Radio.Group>
136
+      </div>
137
+      <div>
138
+        { tab === 'basic' && <Basic /> }
139
+        { tab === 'poster' && <Poster /> }
140
+        { tab === 'share' && <Share /> }
141
+      </div>
142
+    </div>
143
+  );
144
+ }
145
+
146
+
147
+
148
+export default Edit

+ 1
- 1
src/pages/news/type/NewsType.jsx 파일 보기

@@ -45,7 +45,7 @@ function header(props) {
45 45
   }
46 46
 
47 47
 
48
-  // 跳转到编辑咨询
48
+  // 跳转到编辑资讯
49 49
   const toEditNews = (id) => () => {
50 50
     router.push({
51 51
       pathname: '/news/type/editNews',