知与行后台管理端

list.jsx 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  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 { FormattedMessage } from 'umi-plugin-react/locale';
  4. import styles from '../../style/GoodsList.less';
  5. import router from 'umi/router';
  6. import moment from 'moment';
  7. import SelectCity from '../../../components/SelectButton/CitySelect'
  8. import BuildSelect from '../../../components/SelectButton/BuildSelect'
  9. import apis from '../../../services/apis';
  10. import request from '../../../utils/request';
  11. import AuthButton from '@/components/AuthButton';
  12. const { Option } = Select;
  13. const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
  14. const header = props => {
  15. const [ data, setData ] = useState({})
  16. // const [page, changePage] = useState({})
  17. useEffect(() => {
  18. getList({ pageNum: 1, pageSize: 10 });
  19. },[])
  20. // 查询列表
  21. const getList = (params) => {
  22. console.log(params);
  23. request({ ...apis.groupActivity.list, params: { ...params } }).then((data) => {
  24. console.log(data)
  25. setData(data)
  26. })
  27. }
  28. // 跳转到拼团活动新增
  29. const toEditActivity = (groupActivityId) => () => {
  30. router.push({
  31. pathname: '/activity/groupActivity/editGroupActivity',
  32. query: {
  33. groupActivityId
  34. },
  35. });
  36. }
  37. /**
  38. *
  39. *
  40. * @param {*} props
  41. * @returns
  42. */
  43. const columns = [
  44. {
  45. title: '活动标题',
  46. dataIndex: 'activityName',
  47. key: 'activityName',
  48. align: 'center',
  49. },
  50. {
  51. title: '活动时间',
  52. dataIndex: 'startTime',
  53. key: 'startTime',
  54. align: 'center',
  55. render: (x, row) => <><span>{`${moment(row.startTime).format('YYYY-MM-DD HH:mm:ss')} —— ${moment(row.endTime).format('YYYY-MM-DD HH:mm:ss')}`}</span></>
  56. },
  57. {
  58. title: '所需积分',
  59. dataIndex: 'integral',
  60. key: 'integral',
  61. align: 'center',
  62. },
  63. {
  64. title: '已参与人数',
  65. dataIndex: 'participateNum',
  66. key: 'participateNum',
  67. align: 'center',
  68. },
  69. {
  70. title: '成团数',
  71. dataIndex: 'groupBuyPeople',
  72. key: 'groupBuyPeople',
  73. align: 'center',
  74. },
  75. {
  76. title: '状态',
  77. dataIndex: 'activityStatus',
  78. key: 'activityStatus',
  79. align: 'center',
  80. render: (text, records) => {
  81. if (records.activityStatus === 0) { return '进行中' }
  82. if (records.activityStatus === 1) { return '未开始' }
  83. if (records.activityStatus === 2) { return '已结束' }
  84. },
  85. },
  86. {
  87. title: '操作',
  88. dataIndex: 'handle',
  89. key: 'handle',
  90. align: 'center',
  91. render: (x, row) => (
  92. <>
  93. {row.activityStatus === 0 &&
  94. <AuthButton name="admin.taShareActivity.list.get" noRight={null}>
  95. <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={ getSignList.bind(this, row.groupActivityId)}>拼团记录<Icon type="snippets" className={styles.shoppingCart} /></span>
  96. <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={endGroupActivity(row)}>结束活动<Icon type="poweroff" className={styles.edit} /></span>
  97. <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={topGroupActivity(row, row.weight)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
  98. <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={recommendGroupActivity(row)}>{ row.sort === true ? '取消推荐首页' : '推荐首页' }<Icon type="vertical-align-top" className={styles.edit} /></span>
  99. </AuthButton> }
  100. {row.activityStatus === 1 &&
  101. <AuthButton name="admin.taShareActivity.list.get" noRight={null}>
  102. <span style={{ color: '#FF925C', cursor: 'pointer' }} onClick={toEditActivity(row.groupActivityId)}>编辑<Icon type="form" className={styles.edit} /></span>
  103. <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={endGroupActivity(row)}>结束活动<Icon type="poweroff" className={styles.edit} /></span>
  104. <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={topGroupActivity(row, row.weight)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
  105. <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={recommendGroupActivity(row)}>{ row.sort === true ? '取消推荐首页' : '推荐首页' }<Icon type="vertical-align-top" className={styles.edit} /></span>
  106. </AuthButton>
  107. }
  108. {row.activityStatus === 2 &&
  109. <AuthButton name="admin.taShareActivity.list.get" noRight={null}>
  110. <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={ getSignList.bind(this, row.groupActivityId)}>拼团记录<Icon type="snippets" className={styles.shoppingCart} /></span>
  111. <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={topGroupActivity(row, row.weight)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
  112. <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={recommendGroupActivity(row)}>{ row.sort === true ? '取消推荐首页' : '推荐首页' }<Icon type="vertical-align-top" className={styles.edit} /></span>
  113. </AuthButton>
  114. }
  115. </>
  116. ),
  117. },
  118. ];
  119. const getSignList = groupActivityId => {
  120. router.push({
  121. pathname: '/activity/groupActivity/helpRecord',
  122. query: {
  123. groupActivityId,
  124. },
  125. });
  126. }
  127. const finishDynamic = (row) => {
  128. Modal.confirm({
  129. title: '结束以后将无法编辑, 是否继续?',
  130. okText: '确定',
  131. cancelText: '取消',
  132. onOk() {
  133. request({ ...apis.activity.finish, data: {dynamicId: row.dynamicId, top: ""} }).then((data) => {
  134. console.log(data)
  135. message.info('操作成功!')
  136. getList({ pageNum: 1, pageSize: 10 })
  137. }).catch((err) => {
  138. console.log(err)
  139. message.info(err.msg || err.message)
  140. })
  141. },
  142. });
  143. }
  144. //结束活动
  145. const endGroupActivity = (row) => () => {
  146. request({ ...apis.groupActivity.finish, urlData: { id: row.groupActivityId} }).then((data) => {
  147. console.log(data)
  148. message.info('操作成功!')
  149. getList({ pageNum: 1, pageSize: 10 })
  150. }).catch((err) => {
  151. console.log(err)
  152. message.info(err.msg || err.message)
  153. })
  154. }
  155. //置顶
  156. const topGroupActivity = (row, weight) => () => {
  157. request({ ...apis.groupActivity.top, data: { groupActivityId: row.groupActivityId, weight: weight } }).then((data) => {
  158. console.log(data)
  159. message.info('操作成功!')
  160. getList({ pageNum: 1, pageSize: 10 })
  161. }).catch((err) => {
  162. console.log(err)
  163. message.info(err.msg || err.message)
  164. })
  165. }
  166. //首页推荐
  167. const recommendGroupActivity = (row, code) => () => {
  168. request({ ...apis.groupActivity.top, data: { groupActivityId: row.groupActivityId, sort: row.sort } }).then((data) => {
  169. console.log(data)
  170. message.info('操作成功!')
  171. getList({ pageNum: 1, pageSize: 10 })
  172. }).catch((err) => {
  173. console.log(err)
  174. message.info(err.msg || err.message)
  175. })
  176. }
  177. //发布活动
  178. const sendDynamic = (row) => {
  179. request({ ...apis.activity.send, urlData: {id: row.dynamicId}}).then((data) => {
  180. message.info('操作成功!')
  181. getList({ pageNum: 1, pageSize: 10 });
  182. }).catch(err => {
  183. console.log(err)
  184. message.info(err.msg || err.message)
  185. })
  186. }
  187. const changePageNum = pageNumber => {
  188. getList({ pageNum: pageNumber, pageSize: 10 })
  189. }
  190. // 提交事件
  191. const handleSubmit = (e, props) => {
  192. e.preventDefault();
  193. props.form.validateFields((err, values) => {
  194. if (!err) {
  195. console.log('提交数据: ', values)
  196. getList({ pageNum: 1, pageSize: 10, ...values })
  197. }
  198. });
  199. }
  200. //重置搜索
  201. function handleReset() {
  202. props.form.resetFields();
  203. }
  204. const { getFieldDecorator } = props.form
  205. return (
  206. <>
  207. <Form layout="inline" onSubmit={e => handleSubmit(e, props)}>
  208. <Form.Item>
  209. {getFieldDecorator('cityId')(
  210. <SelectCity />,
  211. )}
  212. </Form.Item>
  213. <Form.Item>
  214. {getFieldDecorator('buildingId')(
  215. <BuildSelect />,
  216. )}
  217. </Form.Item>
  218. <Form.Item>
  219. {getFieldDecorator('activityName')(
  220. <Input
  221. prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
  222. placeholder="请输入标题"
  223. />,
  224. )}
  225. </Form.Item>
  226. <Form.Item>
  227. {getFieldDecorator('activityStatus')(
  228. <Select style={{ width: '180px' }} placeholder="活动状态">
  229. <Option value="0">进行中</Option>
  230. <Option value="1">未开始</Option>
  231. <Option value="2">已结束</Option>
  232. </Select>,
  233. )}
  234. </Form.Item>
  235. <Form.Item>
  236. <Button type="primary" htmlType="submit" className={styles.searchBtn}>
  237. 搜索
  238. </Button>
  239. <Button style={{ marginLeft: 8 }} onClick={handleReset}>
  240. 重置
  241. </Button>
  242. </Form.Item>
  243. </Form>
  244. <AuthButton name="admin.taShareActivity.post" noRight={null}>
  245. <Button type="danger" className={styles.addBtn} onClick={toEditActivity()}>新增</Button>
  246. </AuthButton>
  247. <Table dataSource={data.records} columns={columns} pagination={false} rowKey="activityList"/>
  248. <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
  249. <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={changePageNum} current={data.current} />
  250. </div>
  251. </>
  252. )
  253. }
  254. const WrappedHeader = Form.create({ name: 'header' })(header);
  255. export default WrappedHeader