weiximei 5 年之前
父節點
當前提交
5889a2b136
共有 1 個檔案被更改,包括 50 行新增43 行删除
  1. 50
    43
      src/pages/building/list/add/components/base.jsx

+ 50
- 43
src/pages/building/list/add/components/base.jsx 查看文件

2
 import { Form, Icon, Input, Button, DatePicker, Select, Card, Row, Col, Pagination, Alert, Radio, Tag, Tooltip, Tabs, InputNumber, notification } from 'antd';
2
 import { Form, Icon, Input, Button, DatePicker, Select, Card, Row, Col, Pagination, Alert, Radio, Tag, Tooltip, Tabs, InputNumber, notification } from 'antd';
3
 import moment from 'moment';
3
 import moment from 'moment';
4
 import { router } from 'umi';
4
 import { router } from 'umi';
5
+import { ifError } from 'assert';
5
 import request from '../../../../../utils/request';
6
 import request from '../../../../../utils/request';
6
 import apis from '../../../../../services/apis';
7
 import apis from '../../../../../services/apis';
7
 import Styles from '../style.less';
8
 import Styles from '../style.less';
14
 import SelectCity from '../../../../../components/SelectButton/CitySelect'
15
 import SelectCity from '../../../../../components/SelectButton/CitySelect'
15
 import FileUpload from '@/components/XForm/FileUpload';
16
 import FileUpload from '@/components/XForm/FileUpload';
16
 import { POI_TYPES_KETY, getAroundData, getPOIType, POI_TYPES } from './amapAroundData'
17
 import { POI_TYPES_KETY, getAroundData, getPOIType, POI_TYPES } from './amapAroundData'
17
-import { ifError } from 'assert';
18
 
18
 
19
 const { Option } = Select
19
 const { Option } = Select
20
 const { TabPane } = Tabs;
20
 const { TabPane } = Tabs;
46
   const [poi, setPoi] = useState([])
46
   const [poi, setPoi] = useState([])
47
   const [videoImage, setVideoImage] = useState(false)
47
   const [videoImage, setVideoImage] = useState(false)
48
 
48
 
49
+  // 存放所以 buildingData 基础信息
50
+  const [buildingData, setBuildingData] = useState({})
51
+
49
   // console.log('props.building: ', props.building)
52
   // console.log('props.building: ', props.building)
50
   const { buildingId } = props.building
53
   const { buildingId } = props.building
51
      // eslint-disable-next-line react-hooks/rules-of-hooks
54
      // eslint-disable-next-line react-hooks/rules-of-hooks
64
   function setPoiTagValue() {
67
   function setPoiTagValue() {
65
     if (poi) {
68
     if (poi) {
66
       console.log('poi: ', poi)
69
       console.log('poi: ', poi)
67
-   
68
-      
70
+
71
+
69
       poi.map(x => {
72
       poi.map(x => {
70
         const ty = Object.prototype.toString
73
         const ty = Object.prototype.toString
71
         // console.log('x.data: ', JSON.parse(x.data))
74
         // console.log('x.data: ', JSON.parse(x.data))
91
       }
94
       }
92
 
95
 
93
       res.avatarImage = res.buildingImg.map(item => item.url)
96
       res.avatarImage = res.buildingImg.map(item => item.url)
94
-      
97
+
95
       if (res.buildingListImg) {
98
       if (res.buildingListImg) {
96
         // res.listImage = res.buildingListImg.map(item => item.url)
99
         // res.listImage = res.buildingListImg.map(item => item.url)
97
         res.listImage = res.buildingListImg.map(item => item.url)[0]
100
         res.listImage = res.buildingListImg.map(item => item.url)[0]
104
       if (res.videoImage) {
107
       if (res.videoImage) {
105
         res.videoImage = res.videoImage[0].url
108
         res.videoImage = res.videoImage[0].url
106
       }
109
       }
107
-      if (res.buildingTransport) {
108
-        const arr = res.buildingTransport.split(',')
109
-        res.buildingTransport = arr.map(x => ({ tagName: x, delete: true }))
110
-      }
111
-      if (res.buildingMall) {
112
-        const arr = res.buildingMall.split(',')
113
-        res.buildingMall = arr.map(x => ({ tagName: x, delete: true }))
114
-      }
115
-      if (res.buildingEdu) {
116
-        const arr = res.buildingEdu.split(',')
117
-        res.buildingEdu = arr.map(x => ({ tagName: x, delete: true }))
118
-      }
119
-      if (res.buildingHospital) {
120
-        const arr = res.buildingHospital.split(',')
121
-        res.buildingHospital = arr.map(x => ({ tagName: x, delete: true }))
122
-      }
123
-      if (res.buildingBank) {
124
-        const arr = res.buildingBank.split(',')
125
-        res.buildingBank = arr.map(x => ({ tagName: x, delete: true }))
126
-      }
127
-      if (res.buildingRestaurant) {
128
-        const arr = res.buildingRestaurant.split(',')
129
-        res.buildingRestaurant = arr.map(x => ({ tagName: x, delete: true }))
130
-      }
131
 
110
 
132
-      
111
+      res.buildingTransport = stringHandleTag(res.buildingTransport)
112
+      res.buildingMall = stringHandleTag(res.buildingMall)
113
+      res.buildingEdu = stringHandleTag(res.buildingEdu)
114
+      res.buildingHospital = stringHandleTag(res.buildingHospital)
115
+      res.buildingBank = stringHandleTag(res.buildingBank)
116
+      res.buildingRestaurant = stringHandleTag(res.buildingRestaurant)
117
+
118
+      setBuildingData(res)
133
       props.form.setFieldsValue(res)
119
       props.form.setFieldsValue(res)
134
       // console.log('mapJson: ', JSON.parse(res.mapJson))
120
       // console.log('mapJson: ', JSON.parse(res.mapJson))
135
       setPoi((res.mapJson && JSON.parse(res.mapJson)) || [])
121
       setPoi((res.mapJson && JSON.parse(res.mapJson)) || [])
137
     })
123
     })
138
   }
124
   }
139
 
125
 
126
+  /**
127
+   * 把 xxx,xxx,xxx  这样的格式转换成 [{ tagName: xxx, delete: true }, { tagName: xxx, delete: true }]
128
+   * @param {*} str
129
+   * @return 如果返回 str 为空 或者 非 string,则返回 str 本身,否则返回转换成功的数组
130
+   */
131
+  function stringHandleTag(str) {
132
+    if (typeof str === 'string' && str !== '') {
133
+      const arr = str.split(',')
134
+      return arrayTransition(arr)
135
+    }
136
+
137
+    return str
138
+  }
139
+
140
+  /**
141
+   * 把 [xxx,xxx,xxx]  这样的格式转换成 [{ tagName: xxx, delete: true }, { tagName: xxx, delete: true }]
142
+   * @param {*} arr
143
+   */
144
+  function arrayTransition(arr) {
145
+    return arr.map(x => ({ tagName: x, delete: true }))
146
+  }
147
+
140
   function handleSubmit(e) {
148
   function handleSubmit(e) {
141
     e.preventDefault();
149
     e.preventDefault();
142
     props.form.validateFieldsAndScroll((err, values) => {
150
     props.form.validateFieldsAndScroll((err, values) => {
151
     if (poi.length !== 0) {
159
     if (poi.length !== 0) {
152
       data.mapJson = poi
160
       data.mapJson = poi
153
     }
161
     }
154
-    
162
+
155
     data.openingDate = moment(data.openingDate, 'yyyy-MM-dd HH:mm:ss')
163
     data.openingDate = moment(data.openingDate, 'yyyy-MM-dd HH:mm:ss')
156
     data.receivedDate = moment(data.receivedDate, 'yyyy-MM-dd HH:mm:ss')
164
     data.receivedDate = moment(data.receivedDate, 'yyyy-MM-dd HH:mm:ss')
157
     // 项目主图
165
     // 项目主图
162
       // console.log(data.videoUrl[0])
170
       // console.log(data.videoUrl[0])
163
       data.videoUrl = data.videoUrl[0]
171
       data.videoUrl = data.videoUrl[0]
164
     }
172
     }
165
-    
173
+
166
     if (data.tag) {
174
     if (data.tag) {
167
       data.tag = data.tag.map((item, _) => ({ tagName: item }))
175
       data.tag = data.tag.map((item, _) => ({ tagName: item }))
168
     }
176
     }
235
   }
243
   }
236
 
244
 
237
   function setFormMapScopeValue(key, pois) {
245
   function setFormMapScopeValue(key, pois) {
238
-    const poiArray = pois.map(p => {
239
-      return {
246
+    const poiArray = pois.map(p => ({
240
         address: p.address,
247
         address: p.address,
241
         adname: p.adname,
248
         adname: p.adname,
242
         cityname: p.cityname,
249
         cityname: p.cityname,
248
         shopinfo: p.shopinfo,
255
         shopinfo: p.shopinfo,
249
         type: p.type,
256
         type: p.type,
250
         typecode: p.typecode,
257
         typecode: p.typecode,
251
-      }
252
-    })
253
-    
258
+      }))
259
+
254
     // 设置表单值
260
     // 设置表单值
255
     setFormMapScopeTagValue(key, { data: poiArray })
261
     setFormMapScopeTagValue(key, { data: poiArray })
256
 
262
 
261
       }
267
       }
262
       return m
268
       return m
263
     })
269
     })
264
-    
270
+
265
     setPoi(newPoi)
271
     setPoi(newPoi)
266
     return newPoi
272
     return newPoi
267
   }
273
   }
270
     const tag = item.data.map(t => ({ tagName: t.name, delete: false }))
276
     const tag = item.data.map(t => ({ tagName: t.name, delete: false }))
271
     switch (keyType) {
277
     switch (keyType) {
272
       case POI_TYPES_KETY.Transport:
278
       case POI_TYPES_KETY.Transport:
273
-        const buildingTransportValue = (props.form.getFieldValue('buildingTransport') || [])
279
+        const buildingTransportValue = (stringHandleTag(buildingData.buildingTransport) || [])
274
         props.form.setFieldsValue({ buildingTransport: tag.concat(buildingTransportValue) })
280
         props.form.setFieldsValue({ buildingTransport: tag.concat(buildingTransportValue) })
275
         return 'buildingTransport';
281
         return 'buildingTransport';
276
       case POI_TYPES_KETY.Bank:
282
       case POI_TYPES_KETY.Bank:
277
-        const buildingBankValue = (props.form.getFieldValue('buildingBank') || [])
283
+        const buildingBankValue = (stringHandleTag(buildingData.buildingBank) || [])
278
         props.form.setFieldsValue({ buildingBank: tag.concat(buildingBankValue) })
284
         props.form.setFieldsValue({ buildingBank: tag.concat(buildingBankValue) })
279
         return 'buildingBank';
285
         return 'buildingBank';
280
       case POI_TYPES_KETY.Edu:
286
       case POI_TYPES_KETY.Edu:
281
-        const buildingEduValue = (props.form.getFieldValue('buildingEdu') || [])
287
+        const buildingEduValue = (stringHandleTag(buildingData.buildingEdu) || [])
282
         props.form.setFieldsValue({ buildingEdu: tag.concat(buildingEduValue) })
288
         props.form.setFieldsValue({ buildingEdu: tag.concat(buildingEduValue) })
283
         return 'buildingEdu';
289
         return 'buildingEdu';
284
       case POI_TYPES_KETY.Hospital:
290
       case POI_TYPES_KETY.Hospital:
285
-        const buildingHospitalValue = (props.form.getFieldValue('buildingHospital') || [])
291
+        const buildingHospitalValue = (stringHandleTag(buildingData.buildingHospital) || [])
286
         props.form.setFieldsValue({ buildingHospital: tag.concat(buildingHospitalValue) })
292
         props.form.setFieldsValue({ buildingHospital: tag.concat(buildingHospitalValue) })
287
         return 'buildingHospital';
293
         return 'buildingHospital';
288
       case POI_TYPES_KETY.Restaurant:
294
       case POI_TYPES_KETY.Restaurant:
289
-        const buildingRestaurantValue = (props.form.getFieldValue('buildingRestaurant') || [])
295
+        const buildingRestaurantValue = (stringHandleTag(buildingData.buildingRestaurant) || [])
290
         props.form.setFieldsValue({ buildingRestaurant: tag.concat(buildingRestaurantValue) })
296
         props.form.setFieldsValue({ buildingRestaurant: tag.concat(buildingRestaurantValue) })
291
         return 'buildingRestaurant';
297
         return 'buildingRestaurant';
292
       case POI_TYPES_KETY.Mall:
298
       case POI_TYPES_KETY.Mall:
293
-        const buildingMallValue = (props.form.getFieldValue('buildingMall') || [])
299
+        const buildingMallValue = (stringHandleTag(buildingData.buildingMall) || [])
294
         props.form.setFieldsValue({ buildingMall: tag.concat(buildingMallValue) })
300
         props.form.setFieldsValue({ buildingMall: tag.concat(buildingMallValue) })
295
         return 'buildingMall';
301
         return 'buildingMall';
296
       default:
302
       default:
303
+        return ''
297
     }
304
     }
298
   }
305
   }
299
 
306