15 changed files with 21648 additions and 4113 deletions
			
			
		| @ -1,239 +1,236 @@ | |||
| 'use strict'; | |||
| 
 | |||
| async function get (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const { type } = ctx.request.body; | |||
|         const { name } = ctx.query; | |||
| 
 | |||
|         let findOption = { | |||
|             where: { | |||
|                 type | |||
|             }, | |||
|             order: [['id', 'DESC']] | |||
|         } | |||
|         if (name) { | |||
|             findOption.where.name = { | |||
|                 $like: `%${name}%` | |||
|             } | |||
|         } | |||
|         const vehicleRes = await models.Statistic.findAll(findOption) | |||
| 
 | |||
|         ctx.status = 200; | |||
|         ctx.body = vehicleRes | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const { type } = ctx.request.body; | |||
|       const { name } = ctx.query; | |||
| 
 | |||
|       let findOption = { | |||
|          where: { | |||
|             type | |||
|          } | |||
|       } | |||
|       if (name) { | |||
|          findOption.where.name = { | |||
|             $like: `%${name}%` | |||
|          } | |||
|       } | |||
|       const vehicleRes = await models.Statistic.findAll(findOption) | |||
| 
 | |||
|       ctx.status = 200; | |||
|       ctx.body = vehicleRes | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| async function edit (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const { id, name, count, type } = ctx.request.body; | |||
| 
 | |||
|         if (!id) { | |||
|             await models.Statistic.create({ | |||
|                 name, count, type: type | |||
|             }) | |||
|         } else { | |||
|             await models.Statistic.update({ | |||
|                 name, count, type: type | |||
|             }, { | |||
|                 where: { | |||
|                     id: id | |||
|                 } | |||
|             }) | |||
|         } | |||
| 
 | |||
|         ctx.status = 204 | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const { id, name, count, type } = ctx.request.body; | |||
| 
 | |||
|       if (!id) { | |||
|          await models.Statistic.create({ | |||
|             name, count, type: type | |||
|          }) | |||
|       } else { | |||
|          await models.Statistic.update({ | |||
|             name, count, type: type | |||
|          }, { | |||
|             where: { | |||
|                id: id | |||
|             } | |||
|          }) | |||
|       } | |||
| 
 | |||
|       ctx.status = 204 | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| async function del (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const { id } = ctx.params; | |||
| 
 | |||
|         await models.Statistic.destroy({ | |||
|             where: { | |||
|                 id: id | |||
|             } | |||
|         }) | |||
| 
 | |||
|         ctx.status = 204 | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const { id } = ctx.params; | |||
| 
 | |||
|       await models.Statistic.destroy({ | |||
|          where: { | |||
|             id: id | |||
|          } | |||
|       }) | |||
| 
 | |||
|       ctx.status = 204 | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| async function specificGet (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const { type } = ctx.query; | |||
|         const { nameOfBusinessOwner } = ctx.query; | |||
| 
 | |||
|         let findOption = { | |||
|             where: { | |||
|                 type | |||
|             }, | |||
|             order: [['id', 'DESC']] | |||
|         } | |||
|         if (nameOfBusinessOwner) { | |||
|             findOption.where.nameOfBusinessOwner = { | |||
|                 $like: `%${nameOfBusinessOwner}%` | |||
|             } | |||
|         } | |||
| 
 | |||
|         const vehicleRes = await models.MunicipalVehicle.findAll(findOption) | |||
| 
 | |||
|         ctx.status = 200; | |||
|         ctx.body = vehicleRes | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const { type } = ctx.query; | |||
|       const { nameOfBusinessOwner } = ctx.query; | |||
| 
 | |||
|       let findOption = { | |||
|          where: { | |||
|             type | |||
|          } | |||
|       } | |||
|       if (nameOfBusinessOwner) { | |||
|          findOption.where.nameOfBusinessOwner = { | |||
|             $like: `%${nameOfBusinessOwner}%` | |||
|          } | |||
|       } | |||
| 
 | |||
|       const vehicleRes = await models.MunicipalVehicle.findAll(findOption) | |||
| 
 | |||
|       ctx.status = 200; | |||
|       ctx.body = vehicleRes | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| async function specificEdit (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const data = ctx.request.body; | |||
| 
 | |||
|         if (!data.vehicleId) { | |||
|             const vehicleRes = await models.MunicipalVehicle.create(data) | |||
|         } else { | |||
|             const vehicleRes = await models.MunicipalVehicle.update(data, { | |||
|                 where: { | |||
|                     id: data.vehicleId | |||
|                 } | |||
|             }) | |||
|         } | |||
| 
 | |||
|         ctx.status = 204 | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const data = ctx.request.body; | |||
| 
 | |||
|       if (!data.vehicleId) { | |||
|          const vehicleRes = await models.Vehicle.create(data) | |||
|       } else { | |||
|          const vehicleRes = await models.Vehicle.update(data, { | |||
|             where: { | |||
|                id: data.vehicleId | |||
|             } | |||
|          }) | |||
|       } | |||
| 
 | |||
|       ctx.status = 204 | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| async function specificDel (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const { vehicleId } = ctx.params; | |||
| 
 | |||
|         const vehicleRes = await models.MunicipalVehicle.destroy({ | |||
|             where: { | |||
|                 id: vehicleId | |||
|             } | |||
|         }) | |||
| 
 | |||
|         ctx.status = 204 | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const { vehicleId } = ctx.params; | |||
| 
 | |||
|       const vehicleRes = await models.Vehicle.destroy({ | |||
|          where: { | |||
|             id: vehicleId | |||
|          } | |||
|       }) | |||
| 
 | |||
|       ctx.status = 204 | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| async function businessGet (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const { nameOfBusinessOwner } = ctx.query; | |||
| 
 | |||
|         let findOption = { | |||
|             where: { | |||
| 
 | |||
|             }, | |||
|             order: [['id', 'DESC']] | |||
|         } | |||
|         if (nameOfBusinessOwner) { | |||
|             findOption.where.nameOfBusinessOwner = { | |||
|                 $like: `%${nameOfBusinessOwner}%` | |||
|             } | |||
|         } | |||
|         const businessRes = await models.MunicipalBusiness.findAll(findOption) | |||
| 
 | |||
|         ctx.status = 200; | |||
|         ctx.body = businessRes | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const { nameOfBusinessOwner } = ctx.query; | |||
| 
 | |||
|       let findOption = { | |||
|          where: { | |||
| 
 | |||
|          } | |||
|       } | |||
|       if (nameOfBusinessOwner) { | |||
|          findOption.where.nameOfBusinessOwner = { | |||
|             $like: `%${nameOfBusinessOwner}%` | |||
|          } | |||
|       } | |||
|       const businessRes = await models.MunicipalBusiness.findAll(findOption) | |||
| 
 | |||
|       ctx.status = 200; | |||
|       ctx.body = businessRes | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| async function businessEdit (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const data = ctx.request.body; | |||
| 
 | |||
|         if (!data.businessId) { | |||
|             await models.MunicipalBusiness.create(data) | |||
|         } else { | |||
|             await models.MunicipalBusiness.update(data, { | |||
|                 where: { | |||
|                     id: data.businessId | |||
|                 } | |||
|             }) | |||
|         } | |||
| 
 | |||
|         ctx.status = 204 | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const data = ctx.request.body; | |||
| 
 | |||
|       if (!data.businessId) { | |||
|          await models.MunicipalBusiness.create(data) | |||
|       } else { | |||
|          await models.MunicipalBusiness.update(data, { | |||
|             where: { | |||
|                id: data.businessId | |||
|             } | |||
|          }) | |||
|       } | |||
| 
 | |||
|       ctx.status = 204 | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| async function businessDel (ctx) { | |||
|     try { | |||
|         const models = ctx.fs.dc.models; | |||
|         const { businessId } = ctx.params; | |||
| 
 | |||
|         await models.MunicipalBusiness.destroy({ | |||
|             where: { | |||
|                 id: businessId | |||
|             } | |||
|         }) | |||
| 
 | |||
|         ctx.status = 204 | |||
|     } catch (error) { | |||
|         ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|         ctx.status = 400; | |||
|         ctx.body = { | |||
|             message: typeof error == 'string' ? error : undefined | |||
|         } | |||
|     } | |||
|    try { | |||
|       const models = ctx.fs.dc.models; | |||
|       const { businessId } = ctx.params; | |||
| 
 | |||
|       await models.Vehicle.MunicipalBusiness({ | |||
|          where: { | |||
|             id: businessId | |||
|          } | |||
|       }) | |||
| 
 | |||
|       ctx.status = 204 | |||
|    } catch (error) { | |||
|       ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); | |||
|       ctx.status = 400; | |||
|       ctx.body = { | |||
|          message: typeof error == 'string' ? error : undefined | |||
|       } | |||
|    } | |||
| } | |||
| 
 | |||
| module.exports = { | |||
|     get, edit, del, | |||
|     specificGet, specificEdit, specificDel, | |||
|     businessGet, businessEdit, businessDel | |||
|    get, edit, del, | |||
|    specificGet, specificEdit, specificDel, | |||
|    businessGet, businessEdit, businessDel | |||
| }; | |||
| @ -0,0 +1,215 @@ | |||
| import React, { useState, useEffect } from 'react'; | |||
| import { connect } from 'react-redux'; | |||
| import { Modal, Form, Button, Input } from 'antd'; | |||
| import Uploads from "../../../../components/Upload/index" | |||
| import { putAddPropagata } from '../../actions/infor'; | |||
| import { putEditPropagata } from '../../actions/infor'; | |||
| import { getPropagata } from '../../actions/infor'; | |||
| 
 | |||
| 
 | |||
| const VideoUpload = (props) => { | |||
|    const [counts, setCounts] = useState()//shuju
 | |||
| 
 | |||
|    //获取数据
 | |||
|    // useEffect(() => {
 | |||
|    //    const vedio = dispatch(getPropagata()).then((res) => {
 | |||
|    //       setCounts(res.payload.data)
 | |||
|    //       console.log(res.payload.data)
 | |||
|    //    })
 | |||
|    // }, [])
 | |||
| 
 | |||
|    const { dispatch, record } = props | |||
|    // console.log(record);
 | |||
|    const [success, setSuccess] = useState() //状态
 | |||
|    const [form] = Form.useForm(); | |||
| 
 | |||
|    //弹窗
 | |||
|    const [isModalVisible, setIsModalVisible] = useState(false); | |||
|    // const [video1, videoAddress] = useState()
 | |||
|    const showModal = () => { | |||
|       setIsModalVisible(true); | |||
|    }; | |||
| 
 | |||
|    // const idArr = record.map((item) => { item.id })
 | |||
|    // console.log(idArr);
 | |||
| 
 | |||
|    //新增
 | |||
|    const handleOkAdd = () => { | |||
|       form.validateFields().then((values) => { | |||
|          const videoAddress = values.video.map((item) => { | |||
|             return item.storageUrl.concat() | |||
|          }) | |||
|          const videoname = values.videoname | |||
|          const data = { name: videoname, video: videoAddress } | |||
|          dispatch(putAddPropagata(data)).then((res) => { | |||
|             setSuccess(res.success) | |||
|             console.log(data); | |||
|          }) | |||
|          setIsModalVisible(false); | |||
|       } | |||
|       ); | |||
|    }; | |||
|    //编辑
 | |||
|    const handleOkEdit = (record) => { | |||
|       console.log(record); | |||
|       console.log(record.id); | |||
|       form.validateFields().then((values) => { | |||
|          console.log(values); | |||
|          const videoAddress = values.video.map((item) => { | |||
|             return item.storageUrl.concat() | |||
|          }) | |||
|          // const videoname = form.getFieldsValue('videoname')
 | |||
|          const videoname = values.username ? (!values.username) : record.name | |||
|          const id = record.id | |||
|          const video = record.video | |||
| 
 | |||
|          const data = { publicityId: id, name: videoname, video: videoAddress } | |||
|          dispatch(putEditPropagata(data)).then((res) => { | |||
|             setSuccess(res.success) | |||
|             console.log(data); | |||
|          }) | |||
|       } | |||
|       ); | |||
|       setIsModalVisible(false); | |||
|    }; | |||
| 
 | |||
| 
 | |||
| 
 | |||
|    const handleCancel = () => { | |||
|       setIsModalVisible(false); | |||
|    }; | |||
| 
 | |||
|    const onFinish = (values) => { | |||
|       console.log('Success:', values); | |||
|    }; | |||
| 
 | |||
|    const onFinishFailed = (errorInfo) => { | |||
|       console.log('Failed:', errorInfo); | |||
|    }; | |||
| 
 | |||
| 
 | |||
|    return ( | |||
|       <div > | |||
|          { | |||
|             props.type_ys ? <div><Button type='primary' onClick={showModal}>新增</Button> | |||
|                <Modal visible={isModalVisible} onOk={handleOkAdd} onCancel={handleCancel}> | |||
|                   <Form | |||
|                      form={form} | |||
|                      name="basic" | |||
|                      labelCol={{ | |||
|                         span: 5, | |||
|                      }} | |||
|                      wrapperCol={{ | |||
|                         span: 16, | |||
|                      }} | |||
|                      initialValues={{ | |||
|                         remember: true, | |||
|                      }} | |||
|                      onFinish={onFinish} | |||
|                      onFinishFailed={onFinishFailed} | |||
|                      autoComplete="off" | |||
|                   > | |||
|                      <Form.Item | |||
|                         label="视频名称" | |||
|                         name="videoname" | |||
|                         rules={[ | |||
|                            { | |||
|                               required: true, | |||
|                               message: '请输入视频名称!', | |||
|                               max: 50, | |||
|                            }, | |||
|                         ]} | |||
|                      > | |||
|                         <Input | |||
|                            placeholder="请输入视频名称" /> | |||
|                      </Form.Item> | |||
| 
 | |||
|                      <Form.Item | |||
|                         label="选择视频" | |||
|                         name="video" | |||
|                      > | |||
|                         <Uploads | |||
|                            maxFilesNum={10} | |||
|                            fileTypes={['mp4']} | |||
|                            maxFileSize={200} | |||
|                         /> | |||
|                      </Form.Item> | |||
|                   </Form> | |||
|                </Modal> | |||
|             </div> | |||
|                : | |||
|                <div><Button type='link' onClick={showModal} style={{ Position: "absolute", left: "-50px", top: "32px" }}>编辑</Button> | |||
|                   <Modal visible={isModalVisible} onOk={() => handleOkEdit(record)} onCancel={handleCancel}> | |||
|                      <Form | |||
|                         form={form} | |||
|                         name="basic" | |||
|                         labelCol={{ | |||
|                            span: 5, | |||
|                         }} | |||
|                         wrapperCol={{ | |||
|                            span: 16, | |||
|                         }} | |||
|                         // initialValues={{
 | |||
|                         //    remember: true,
 | |||
|                         // }}
 | |||
|                         initialValues={true} | |||
|                         onFinish={onFinish} | |||
|                         onFinishFailed={onFinishFailed} | |||
|                         autoComplete="off" | |||
| 
 | |||
|                      > | |||
|                         <Form.Item | |||
|                            label="视频名称" | |||
|                            name="username" | |||
|                            rules={[ | |||
|                               { | |||
|                                  required: false, | |||
|                                  message: '没有做出任何修改!', | |||
|                                  max: 50, | |||
|                               }, | |||
|                            ]} | |||
|                         > | |||
|                            <Input | |||
|                               placeholder="请输入视频名称" | |||
|                               defaultValue={record.name} | |||
|                            /> | |||
| 
 | |||
|                         </Form.Item> | |||
|                         <Form.Item | |||
|                            label="选择视频" | |||
|                            name="video" | |||
|                         > | |||
|                            <Uploads | |||
|                               maxFilesNum={10} | |||
|                               fileTypes={['mp4']} | |||
|                               maxFileSize={200} | |||
|                            /> | |||
|                         </Form.Item> | |||
|                      </Form> | |||
|                   </Modal> | |||
|                </div> | |||
|          } | |||
|       </div > | |||
|    ) | |||
| } | |||
| 
 | |||
| 
 | |||
| 
 | |||
| function mapStateToProps (state) { | |||
|    const { depMessage } = state; | |||
|    const pakData = (dep) => { | |||
|       return dep.map((d) => { | |||
|          return { | |||
|             title: d.name, | |||
|             value: d.id, | |||
|             children: pakData(d.subordinate) | |||
|          } | |||
|       }) | |||
|    } | |||
|    let depData = pakData(depMessage.data || []) | |||
|    return { | |||
|       loading: depMessage.isRequesting, | |||
|       depData, | |||
|    }; | |||
| } | |||
| export default connect(mapStateToProps)(VideoUpload); | |||
								
									
										File diff suppressed because it is too large
									
								
							
						
					| @ -1,169 +1,201 @@ | |||
| import React, { useEffect, useState } from 'react'; | |||
| import React, { useEffect, useState, useRef } from 'react'; | |||
| import { connect } from 'react-redux'; | |||
| import { Spin, Button, Popconfirm, Badge } from 'antd'; | |||
| import { Spin, Button, Popconfirm, Switch } from 'antd'; | |||
| import ProTable from '@ant-design/pro-table'; | |||
| import './protable.less' | |||
| import moment from 'moment'; | |||
| import { getReportStatistic } from "../actions/infor" | |||
| import VideoUpload from './infor/videoUpload'; | |||
| import { getPropagata } from '../actions/infor'; | |||
| import { putEditPropagata } from '../actions/infor'; | |||
| import { delPropagata } from '../actions/infor'; | |||
| 
 | |||
| const promotionalTable = (props) => { | |||
|     const { dispatch, user, depData, depMessage, depLoading } = props | |||
|     const [rowSelected, setRowSelected] = useState([]) | |||
|     const [regionId, setRegionId] = useState()//区域id
 | |||
|     const [placeType, setPlaceType] = useState()//场所
 | |||
|     const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期
 | |||
|     const [sitename, setSitename] = useState()//场所名称
 | |||
|     const [counts, setCounts] = useState()//shuju
 | |||
| 
 | |||
| 
 | |||
|     const columns = | |||
|         [{ | |||
|             title: '序号', | |||
|             search: false, | |||
|             dataIndex: 'containers', | |||
| 
 | |||
|             fixed: 'left', | |||
|             width: 120, | |||
|             render: (dom, record) => { | |||
|                 return record.address | |||
|             }, | |||
|             fieldProps: { | |||
|                 getPopupContainer: (triggerNode) => triggerNode.parentNode, | |||
|    const { dispatch, } = props | |||
|    const [rowSelected, setRowSelected] = useState([]) | |||
|    const [counts, setCounts] = useState()//shuju
 | |||
|    const [success, setSuccess] = useState() | |||
|    const [delet, setDelet] = useState() | |||
|    // console.log(record);
 | |||
| 
 | |||
| 
 | |||
|    const ref = useRef() | |||
|    useEffect(() => { ref.current.reload() }, [delet]) | |||
| 
 | |||
| 
 | |||
|    const onClickEnable = (record) => { | |||
|       console.log(record); | |||
|       const id = record.id | |||
|       const name = record.name | |||
|       const video = record.video | |||
| 
 | |||
|       const enable = true ? record.enable == false : true | |||
|       const data = ({ publicityId: id, name: name, video: video, enable: enable }) | |||
|       console.log(data); | |||
|       dispatch(putEditPropagata(data)).then((res) => { | |||
|          setSuccess(res.success) | |||
|          console.log(data); | |||
|       }) | |||
|    } | |||
|    // const ref = useRef()
 | |||
|    // useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan, whichofits, delet])//刷新数据
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
|    const columns = | |||
|       [{ | |||
|          title: '序号', | |||
|          search: false, | |||
|          dataIndex: 'containers', | |||
|          fixed: 'left', | |||
|          width: 120, | |||
|          render: (dom, record) => { | |||
|             for (let i = 0; i < record.lenght; i += 1) { | |||
|                return i | |||
|             } | |||
|         }, | |||
|             { | |||
|                 title: '视频名称', | |||
|                 dataIndex: 'placeName', | |||
|                 fixed: 'left', | |||
|                 width: 120, | |||
|                 options: 1, | |||
|                 backgroundColor: "#ffffff", | |||
|                 fieldProps: { | |||
|                     onChange: (value, cs) => { | |||
|                         setSitename(value.currentTarget.value) | |||
|                     }, | |||
|                     placeholder: '请输入视频名称进行搜索', | |||
|                     getPopupContainer: (triggerNode) => triggerNode.parentNode, | |||
|                 }, | |||
|             }, | |||
|              | |||
|             { | |||
|                 title: '修改时间', | |||
|                 search: false, | |||
|                 dataIndex: 'time2', | |||
|                 valueType: 'dateRange', | |||
|                 // align: 'right',
 | |||
|                 width: 120, | |||
|                 render: (dom, record) => { | |||
|                     return record.address | |||
|                 }, | |||
|                 fieldProps: { | |||
|                     getPopupContainer: (triggerNode) => triggerNode.parentNode, | |||
|                 } | |||
|             }, | |||
|             { | |||
|                 key: "direction", | |||
|                 hideInTable: true, | |||
|                 dataIndex: "direction", | |||
|                 order: 6, | |||
|                 renderFormItem: (item, { type, defaultRender, ...rest }, form) => { | |||
|                     return ( | |||
|                         <div> <Button | |||
|                             type="primary" | |||
|                             style={{ width: "100px" }} | |||
|                             onClick={() => { | |||
|                                 dispatch(push(`article/update/post`)); | |||
|                             }} | |||
|                         > | |||
|                             新增 | |||
|                         </Button> | |||
|                         </div> | |||
| 
 | |||
| 
 | |||
|                     ); | |||
|                 }, | |||
|             }, | |||
|         ] | |||
|     return ( | |||
|         <Spin spinning={false}> | |||
|             <div className='protable-transpor'> | |||
|                 <ProTable | |||
|                     scroll={{ x: 800 }} | |||
|                     options={false} | |||
|                     ref={c => { finishedProductTable = c; }} | |||
|                     style={{ width: "100% ", overflow: "auto", height: '760px' }} | |||
|                     rowKey='id' | |||
|                     onReset={(v) => { | |||
|                         const { id } = depMessage[0] | |||
|                         console.log(id) | |||
|                         setRegionId(id) | |||
|                         setPlaceType(-1) | |||
|                         setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]) | |||
|                         setSitename('') | |||
|                     }} | |||
|                     rowSelection={{ | |||
|                         selectedRowKeys: rowSelected, | |||
|                         onChange: (selectedRowKeys) => { | |||
|                             setRowSelected(selectedRowKeys); | |||
|                         }, | |||
|                     }} | |||
|                     columns={columns} | |||
| 
 | |||
|                     dataSource={(counts || {}).rows || []} | |||
|                     request={async (params) => { | |||
|          } | |||
|       }, | |||
|       { | |||
|          title: '视频名称', | |||
|          dataIndex: 'videoName', | |||
|          fixed: 'left', | |||
|          search: false, | |||
|          width: 120, | |||
|          options: 1, | |||
|          render: (dom, record) => { | |||
|             // console.log('record',record)
 | |||
|             return record.name | |||
|          } | |||
|       }, | |||
|       { | |||
|          title: '是否展示', | |||
|          dataIndex: 'shuffling', | |||
|          valueType: 'shufflingRange', | |||
|          search: false, | |||
|          width: 120, | |||
|          fixed: 'right', | |||
|          render: (dom, record) => { | |||
|             return <div > | |||
| 
 | |||
|                <Switch checkedChildren="展示" unCheckedChildren="关闭" onClick={() => onClickEnable(record)} defaultChecked={true ? record.enable == true : false} /></div> | |||
|          } | |||
|       }, | |||
|       { | |||
|          title: '操作', | |||
|          dataIndex: 'creatTime', | |||
|          valueType: 'dateTimeRange', | |||
|          hideInSearch: true, | |||
|          width: 120, | |||
|          fixed: 'right', | |||
|          render: (dom, record) => { | |||
|             return <div style={{ position: 'relative', marginTop: '-30px' }}> | |||
|                <VideoUpload record={record} /> | |||
|                <Popconfirm | |||
|                   title="是否确定删除?" | |||
|                   arrowPointAtCenter={true} | |||
|                   showArrow={true} | |||
|                   position="topRight" | |||
|                   onConfirm={/* () => handleRemove(record) */ | |||
|                      () => { | |||
|                         const query = { | |||
|                             // startDate: day[0],
 | |||
|                             // endDate: day[1],
 | |||
|                             // placeType: placeType,
 | |||
|                             // regionId: regionId,
 | |||
|                             // placeName: sitename,
 | |||
|                             // limit: params.pageSize,
 | |||
|                             // offset: ((params.current ? params.current : 1) - 1) * params.pageSize
 | |||
|                            publicityId: record.id | |||
|                         } | |||
|                         setRowSelected([]); | |||
|                         const res = await dispatch(getReportStatistic(query)); | |||
|                         setCounts(res.payload.data) | |||
|                         return { | |||
|                             ...res, | |||
|                             total: res.payload.data ? res.payload.data.count : 0 | |||
|                         } | |||
|                     }} | |||
|                     // search={{
 | |||
|                     //     defaultCollapsed: false,
 | |||
|                     //     optionRender: (searchConfig, formProps, dom) => [
 | |||
|                     //         ...dom.reverse(),
 | |||
|                     //         <Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, counts) }}>
 | |||
|                     //             <Button
 | |||
|                     //             >
 | |||
|                     //                 导出
 | |||
|                     //             </Button>
 | |||
|                     //         </Popconfirm>
 | |||
|                     //     ],
 | |||
|                     // }}
 | |||
| 
 | |||
|                 > | |||
|                 </ProTable></div> | |||
| 
 | |||
|         </Spin > | |||
|     ) | |||
|                         dispatch(delPropagata(query)).then((res) => { | |||
|                            setDelet(res) | |||
|                            console.log(res); | |||
|                            // if (res.success) {
 | |||
|                            //    message.success("记录删除成功");
 | |||
|                            //    handelRefresh()
 | |||
|                            // } else {
 | |||
|                            //    message.error("记录删除失败")
 | |||
|                            // }
 | |||
|                         }) | |||
|                      } | |||
|                   } | |||
| 
 | |||
|                > | |||
|                   <Button type="link" float="right" | |||
|                   >删除</Button> | |||
|                </Popconfirm> | |||
|             </div> | |||
| 
 | |||
|          } | |||
|       }, | |||
|       { | |||
|          key: "direction", | |||
|          hideInTable: true, | |||
|          dataIndex: "direction", | |||
|          order: 6, | |||
|          renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { | |||
|             return ( | |||
|                <div> | |||
|                   <VideoUpload type_ys={1} record={counts} /> | |||
|                </div> | |||
|             ); | |||
|          }, | |||
|       }, | |||
|       ] | |||
| 
 | |||
|    //获取数据
 | |||
|    useEffect(() => { | |||
|       const vedio = dispatch(getPropagata()).then((res) => { | |||
|          setCounts(res.payload.data) | |||
|          console.log(res.payload.data) | |||
|       }) | |||
|    }, []) | |||
| 
 | |||
| 
 | |||
|    return ( | |||
| 
 | |||
|       <Spin spinning={false}> | |||
|          <div className='protable-transpor'> | |||
|             <ProTable | |||
|                actionRef={ref} | |||
|                scroll={{ x: 800 }} | |||
|                options={false} | |||
|                style={{ width: "100% ", overflow: "auto", height: '760px' }} | |||
|                rowKey='id' | |||
|                rowSelection={{ | |||
|                   selectedRowKeys: rowSelected, | |||
|                   onChange: (selectedRowKeys) => { | |||
|                      setRowSelected(selectedRowKeys); | |||
|                   }, | |||
|                }} | |||
|                form={{ | |||
|                   submitter: false, | |||
|                }} | |||
|                columns={columns} | |||
|                dataSource={counts || []} | |||
|                request={async (params) => { | |||
|                   const query = { | |||
|                      limit: params.pageSize, | |||
|                      offset: ((params.current ? params.current : 1) - 1) * params.pageSize | |||
|                   } | |||
|                   setRowSelected([]); | |||
|                }} | |||
|             > | |||
|             </ProTable></div> | |||
|       </Spin > | |||
|    ) | |||
| } | |||
| function mapStateToProps(state) { | |||
|     const { auth, depMessage } = state; | |||
|     const pakData = (dep) => { | |||
|         return dep.map((d) => { | |||
|             return { | |||
|                 title: d.name, | |||
|                 value: d.id, | |||
|                 // children: d.type >= 2 ? [] : pakData(d.subordinate)
 | |||
|                 children: pakData(d.subordinate) | |||
|             } | |||
|         }) | |||
|     } | |||
|     let depData = pakData(depMessage.data || []) | |||
|     return { | |||
|         user: auth.user, | |||
|         depMessage: depMessage.data || [], | |||
|         depLoading: depMessage.isRequesting, | |||
|         depData, | |||
|     }; | |||
| 
 | |||
| function mapStateToProps (state) { | |||
| 
 | |||
|    const { auth, depMessage } = state; | |||
|    const pakData = (dep) => { | |||
|       return dep.map((d) => { | |||
|          return { | |||
|             title: d.name, | |||
|             value: d.id, | |||
|             // children: d.type >= 2 ? [] : pakData(d.subordinate)
 | |||
|             children: pakData(d.subordinate) | |||
|          } | |||
|       }) | |||
|    } | |||
|    let depData = pakData(depMessage.data || []) | |||
|    return { | |||
|       user: auth.user, | |||
|       depMessage: depMessage.data || [], | |||
|       depLoading: depMessage.isRequesting, | |||
|       depData, | |||
|    }; | |||
| } | |||
| export default connect(mapStateToProps)(promotionalTable); | |||
								
									
										File diff suppressed because it is too large
									
								
							
						
					
					Loading…
					
					
				
		Reference in new issue