知与行后台管理端

DrainageList.jsx 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. import React, { useState, useEffect } from 'react';
  2. import { Form, Input, Button, Icon, Select, message, Table, Divider, Tag, Pagination, Modal, DatePicker } from 'antd';
  3. import router from 'umi/router';
  4. import { FormattedMessage } from 'umi-plugin-react/locale';
  5. import styles from '../../style/GoodsList.less';
  6. import apis from '../../../services/apis';
  7. import request from '../../../utils/request';
  8. import XForm, { FieldTypes } from '../../../components/XForm';
  9. import moment from 'moment';
  10. import AuthButton from '../../../components/AuthButton';
  11. const toEditList = (row) => () => {
  12. router.push({
  13. pathname: '/activity/drainage/Detail',
  14. query: {
  15. drainageId: row.drainageId,
  16. name: row.name,
  17. },
  18. });
  19. }
  20. const header = (props) => {
  21. // const [data, setData] = useState({ data: [] })
  22. const [datas, setDatas] = useState([])//表格数据
  23. const [date, setDate] = useState({})
  24. const [formsdate, setFormsDate] = useState({})
  25. // const [page, changePage] = useState({})
  26. useEffect(() => {
  27. gettaDrainage({ pageNum: 1, pageSize: 10 })
  28. setDate({
  29. ModalText: 'Content of the modal',
  30. visible: false,
  31. confirmLoading: false,
  32. })
  33. }, [])
  34. function gettaDrainage (params) {
  35. request({ ...apis.activity.taDrainage, params: params }).then((data) => {
  36. setDatas(data)
  37. console.log(data.records, '_213_')
  38. }).catch((err) => {
  39. console.log(err)
  40. message.info(err.msg || err.message)
  41. })
  42. }
  43. const deleteDrainage = (drainageIid) => () => {
  44. Modal.confirm({
  45. title: '确认删除该引流?',
  46. okText: '确认',
  47. cancelText: '取消',
  48. onOk () {
  49. request({ ...apis.activity.deletetaDrainage, urlData: { id: drainageIid }, }).then((data) => {
  50. message.info('操作成功!')
  51. gettaDrainage({ pageNum: 1, pageSize: 10 })
  52. }).catch((err) => {
  53. console.log('111111', err)
  54. // message.info(err.msg || err.message)
  55. })
  56. }
  57. });
  58. }
  59. const columns = [
  60. {
  61. title: 'H5项目编号',
  62. dataIndex: 'drainageId',
  63. key: 'drainageId',
  64. align: 'center',
  65. },
  66. {
  67. title: 'H5项目名称',
  68. dataIndex: 'name',
  69. key: 'name',
  70. align: 'center',
  71. render: (text, datas) => <>
  72. <div style={{ color: '#66B3FF' }} onClick={() => addshowModal(datas)} >{datas.name}</div>
  73. </>
  74. },
  75. {
  76. title: 'appid',
  77. dataIndex: 'appid',
  78. key: 'appid',
  79. align: 'center',
  80. // render: (text, datas) => <div style={ { color: '#66B3FF' } } onClick= {() => addshowModal(datas)} >{ datas.name }</div>,
  81. },
  82. {
  83. title: 'secret',
  84. dataIndex: 'appSecret',
  85. key: 'appSecret',
  86. align: 'center',
  87. // render: (text, datas) => <div style={ { color: '#66B3FF' } } onClick= {() => addshowModal(datas)} >{ datas.name }</div>,
  88. },
  89. {
  90. title: '新建时间',
  91. dataIndex: 'createDate',
  92. key: 'createDate',
  93. align: 'center',
  94. render: (x, row) => (
  95. <>
  96. <span>{row.createDate && moment(row.createDate).format('YYYY-MM-DD hh:mm:ss')}</span>
  97. </>
  98. ),
  99. },
  100. {
  101. title: '截止时间',
  102. dataIndex: 'endDate',
  103. key: 'endDate',
  104. align: 'center',
  105. render: (x, row) => (
  106. <>
  107. <span>{row.endDate && moment(row.endDate).format('YYYY-MM-DD hh:mm:ss')}</span>
  108. </>
  109. ),
  110. },
  111. {
  112. title: '参与数',
  113. dataIndex: 'enlistNum',
  114. key: 'enlistNum',
  115. align: 'center',
  116. // render:
  117. },
  118. {
  119. title: '操作',
  120. key: 'action',
  121. align: 'center',
  122. render: (text, datas) => (
  123. <>
  124. <AuthButton name="admin.customer.recommend.edit.id.put" noRight={null}>
  125. <span style={{ right: '20px', top: '20px', fontSize: ' 0.106rem', zIndex: 1, color: '#FF7E48', cursor: 'pointer' }} onClick={toEditList(datas)}>
  126. 查看详情
  127. </span>
  128. </AuthButton>
  129. <AuthButton name="admin.taDrainage.id.delete" noRight={null}>
  130. <span style={{ right: '20px', bottom: ' 10px', fontSize: ' 0.106rem', color: '#FF7E48', cursor: 'pointer', marginLeft: 20 }} onClick={deleteDrainage(datas.drainageId)}>
  131. 删除
  132. </span>
  133. </AuthButton >
  134. </>
  135. ),
  136. },
  137. ];
  138. const Forms = props => {
  139. console.log(date, '---------------')
  140. console.log(formsdate.name, '---------------')
  141. console.log(formsdate, '22222222')
  142. const { formsDate } = props
  143. useEffect(() => {
  144. if (formsDate) {
  145. props.form.setFieldsValue({ name: formsdate.name, endDate: formsdate.endDate ? moment(formsdate.endDate, 'YYYY-MM-DD HH:mm') : null })
  146. }
  147. }, [formsDate])
  148. const handleSubmit = e => {
  149. e.preventDefault();
  150. props.form.validateFields((err, values) => {
  151. if (!err) {
  152. if (formsDate.drainageId) {
  153. // { ...apis.activity.deletetaDrainage,urlData: { id: drainageIid }, }
  154. request({ ...apis.activity.updatetaDrainage, urlData: { id: formsDate.drainageId }, data: values }).then((data) => {
  155. message.info('操作成功!')
  156. gettaDrainage({ pageNum: 1, pageSize: 10 })
  157. setDate({
  158. visible: false,
  159. });
  160. }).catch((err) => {
  161. console.log('111111', err)
  162. message.info(err.msg || err.message)
  163. })
  164. } else {
  165. request({ ...apis.activity.addtaDrainage, data: values }).then((data) => {
  166. message.info("操作成功")
  167. gettaDrainage({ pageNum: 1, pageSize: 10 })
  168. setDate({
  169. visible: false,
  170. });
  171. }).catch((err) => {
  172. message.error(err.msg || err.message)
  173. })
  174. }
  175. }
  176. });
  177. }
  178. const handleCancel = val => {
  179. setDate({
  180. visible: false,
  181. });
  182. }
  183. const tailFormItemLayout = {
  184. wrapperCol: {
  185. xs: {
  186. span: 24,
  187. offset: 0,
  188. },
  189. sm: {
  190. span: 16,
  191. offset: 8,
  192. },
  193. },
  194. };
  195. const formItemLayout = {
  196. labelCol: {
  197. xs: { span: 24 },
  198. sm: { span: 8 },
  199. },
  200. wrapperCol: {
  201. xs: { span: 24 },
  202. sm: { span: 16 },
  203. },
  204. };
  205. const { getFieldDecorator } = props.form;
  206. {/* <XForm onSubmit={handleSubmit} onCancel={handleCancel} fields={fields} ></XForm> */ }
  207. return <Form {...formItemLayout} onSubmit={handleSubmit}>
  208. <Form.Item label="H5项目名称">
  209. {getFieldDecorator('name')(
  210. <Input
  211. placeholder="请输入H5项目名称"
  212. />,
  213. )}
  214. </Form.Item>
  215. <Form.Item label="截止时间">
  216. {getFieldDecorator('endDate')(
  217. <DatePicker
  218. // prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
  219. // placeholder={formsdate.endDate}
  220. // value= formsdate.endDate ? moment(formsdate.endDate, 'YYYY-MM-DD HH:mm') : null
  221. />,
  222. )}
  223. </Form.Item>
  224. <Form.Item {...tailFormItemLayout}>
  225. <AuthButton name="admin.taDrainage.id.put" noRight={null}>
  226. <Button type="primary" htmlType="submit" className={styles.searchBtn} onClick>
  227. 确定
  228. </Button>
  229. </AuthButton>
  230. <Button style={{ marginLeft: 8 }} onClick={handleCancel}>
  231. 取消
  232. </Button>
  233. </Form.Item>
  234. </Form>
  235. }
  236. const Formss = Form.create({ name: 'Forms' })(Forms);
  237. //重置搜索
  238. function handleReset () {
  239. props.form.resetFields();
  240. gettaDrainage({ pageNum: 1, pageSize: 10 })
  241. }
  242. function addshowModal (datas) {
  243. // alert(datas.drainageId)
  244. console.log(datas, '22222222')
  245. setFormsDate({
  246. drainageId: datas.drainageId,
  247. name: datas.name,
  248. endDate: datas.endDate,
  249. })
  250. console.log(formsdate, '22222222')
  251. setDate({
  252. visible: true,
  253. title: "修改H5项目"
  254. });
  255. console.log('form :', props.form)
  256. };
  257. function showModal () {
  258. setFormsDate({
  259. drainageId: '',
  260. name: '',
  261. endDate: '',
  262. })
  263. setDate({
  264. visible: true,
  265. title: '新建H5项目'
  266. });
  267. };
  268. const changePageNum = pageNumber => {
  269. gettaDrainage({ pageNum: pageNumber, pageSize: 10 })
  270. }
  271. function handleOk () {
  272. setDate({
  273. ModalText: 'The modal will be closed after two seconds',
  274. confirmLoading: true,
  275. });
  276. function setTimeout () {
  277. setDate({
  278. visible: false,
  279. confirmLoading: false,
  280. });
  281. };
  282. };
  283. function handleCancel () {
  284. console.log('Clicked cancel button');
  285. setDate({
  286. visible: false,
  287. });
  288. };
  289. function handleSubmit (e) {
  290. e.preventDefault();
  291. props.form.validateFields((err, values) => {
  292. console.log('values', values)
  293. if (!err) {
  294. console.log('values', values)
  295. gettaDrainage({ pageNum: 1, pageSize: 10, ...values })
  296. }
  297. });
  298. }
  299. const { getFieldDecorator } = props.form;
  300. const { visible, confirmLoading, ModalText, title } = date;
  301. return (
  302. <>
  303. <div>
  304. <Form layout="inline" onSubmit={handleSubmit}>
  305. <Form.Item>
  306. {getFieldDecorator('drainageId')(
  307. <Input
  308. // prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
  309. placeholder="H5项目编号"
  310. />,
  311. // {getFieldDecorator('name', {
  312. // })(<Input/>)}
  313. )}
  314. </Form.Item>
  315. <Form.Item>
  316. {getFieldDecorator('name')(
  317. <Input
  318. // prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
  319. placeholder="H5项目名称"
  320. />,
  321. )}
  322. </Form.Item>
  323. <Form.Item >
  324. <Button type="primary" htmlType="submit" className={styles.searchBtn} onClick>
  325. 搜索
  326. </Button>
  327. <Button style={{ marginLeft: 8 }} onClick={handleReset}>
  328. 重置
  329. </Button>
  330. </Form.Item>
  331. </Form>
  332. <AuthButton name="admin.taDrainage.add.post" noRight={null}>
  333. <Button type="danger" className={styles.addBtn} onClick={showModal}>新增</Button>
  334. </AuthButton>
  335. <Modal
  336. title={title}
  337. visible={visible}
  338. // onOk={handleOk}
  339. confirmLoading={confirmLoading}
  340. onCancel={handleCancel}
  341. footer={null}
  342. >
  343. <Formss formsDate={formsdate} />
  344. </Modal>
  345. <Table columns={columns} dataSource={datas.records} pagination={false} rowKey="drainageList" />
  346. <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
  347. <Pagination showQuickJumper defaultCurrent={1} total={datas.total} onChange={(e) => changePageNum(e)} current={datas.current} />
  348. </div>
  349. </div>
  350. </>
  351. )
  352. }
  353. const WrappedHeader = Form.create({ name: 'header' })(header);
  354. export default WrappedHeader