index.jsx 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. import React, { useMemo, useRef, useCallback, useState } from 'react';
  2. import { Button, Avatar, Radio, Modal, message } from 'antd';
  3. import moment from 'moment';
  4. import apis from '@/services/apis';
  5. import request from '@/utils/request';
  6. import AuthButton from '@/components/AuthButton';
  7. import QueryTable from '@/components/QueryTable';
  8. import BuildingSelect from '@/components/SelectButton/BuildSelect';
  9. import OperButton from '@/components/OperButton';
  10. import withActions from '@/components/ActionList';
  11. import { router } from 'umi';
  12. import { getImgURL } from '@/utils/image';
  13. import Navigate from '@/components/Navigate';
  14. export default props => {
  15. const ref = useRef();
  16. const toEdit = useCallback(row => {
  17. //跳转到编辑页面
  18. router.push({
  19. pathname: '/course/Edit',
  20. query: {
  21. curriculumId: row?.curriculumId || undefined,
  22. },
  23. });
  24. }, []);
  25. const onDelete = data => {
  26. request({
  27. ...apis.course.deleteCourse,
  28. urlData: { id: data.curriculumId },
  29. // data: { ...data, isPublish: 0 },
  30. }).then(res => {
  31. message.info('删除成功');
  32. ref.current.reload(); //
  33. });
  34. };
  35. onDelete;
  36. const confirm = data => {
  37. // {...data,isPublish}
  38. if (data.isPublish === 1) {
  39. const titleCourse = data.isPublish ? '确认取消发布此课程吗?' : '确认发布此课程吗?';
  40. Modal.confirm({
  41. title: titleCourse,
  42. okText: '确认',
  43. cancelText: '取消',
  44. onOk() {
  45. request({
  46. ...apis.course.alterCourse,
  47. urlData: { id: data.curriculumId },
  48. data: { ...data, isPublish: 0 },
  49. }).then(res => {
  50. message.info('操作成功');
  51. ref.current.reload(); //
  52. });
  53. },
  54. });
  55. } else {
  56. const titleCourse = data.isPublish ? '确认取消发布此课程吗?' : '确认发布此课程吗?';
  57. Modal.confirm({
  58. title: titleCourse,
  59. okText: '确认',
  60. cancelText: '取消',
  61. onOk() {
  62. request({
  63. ...apis.course.alterCourse,
  64. urlData: { id: data.curriculumId },
  65. data: { ...data, isPublish: 1 },
  66. }).then(res => {
  67. message.info('操作成功');
  68. ref.current.reload(); //
  69. });
  70. },
  71. });
  72. }
  73. };
  74. const searchFields = [
  75. {
  76. name: 'name',
  77. label: '课程标题',
  78. placeholder: '请输入课程标题',
  79. },
  80. {
  81. name: 'roleId',
  82. label: '阅读对象',
  83. placeholder: '请选阅读对象',
  84. type: 'select',
  85. options: [
  86. { label: '经纪人', value: '1' },
  87. { label: '置业顾问', value: '2' },
  88. { label: '置业顾问&经纪人', value: '3' },
  89. ],
  90. },
  91. ];
  92. const tableColumns = [
  93. {
  94. title: '课程标题',
  95. dataIndex: 'name',
  96. key: 'name',
  97. align: 'center',
  98. render: (text, row) => (
  99. <Button type="link" onClick={() => toEdit(row)}>
  100. {text}
  101. </Button>
  102. ),
  103. },
  104. {
  105. title: '课程主图',
  106. dataIndex: 'curriculumImg',
  107. key: 'curriculumImg',
  108. align: 'center',
  109. render: (_, record) => (
  110. <img src={getImgURL(record.curriculumImg)} style={{ width: '165px', height: '104px' }} />
  111. ),
  112. // render:(_,record)=>(record.curriculumImg)==''?<img src={require(record)}/>:<img src={getImgURL(record.curriculumImg)} style={{ width: '165px', height: '104px' }} />
  113. },
  114. {
  115. title: '阅读人数',
  116. dataIndex: 'lookNum',
  117. key: 'lookNum',
  118. align: 'center',
  119. render: x => x || 0,
  120. },
  121. {
  122. title: '阅读对象',
  123. dataIndex: 'roleId',
  124. key: 'roleId',
  125. align: 'center',
  126. render: text => (text === '2' ? '置业顾问' : text === '1' ? '经纪人' : '置业顾问&经纪人'),
  127. },
  128. {
  129. //权重---
  130. title: '权重',
  131. dataIndex: 'weight',
  132. key: 'weight',
  133. align: 'center',
  134. // render: (_, record) => <><span>{record.numear = '20'}</span></>,
  135. },
  136. {
  137. title: '操作',
  138. dataIndex: 'isPublish',
  139. key: 'isPublish',
  140. //isPublish
  141. align: 'center',
  142. render: withActions(
  143. (_, row) => [
  144. <AuthButton name="course.publish" noRight={null}>
  145. <OperButton onClick={() => confirm(row)}>
  146. {row.isPublish === 0 ? '发布' : '取消发布'}
  147. </OperButton>
  148. </AuthButton>,
  149. <AuthButton name="course.edit" noRight={null}>
  150. <OperButton onClick={() => toEdit(row)}>编辑</OperButton>
  151. </AuthButton>,
  152. <AuthButton name="courseg.delete" noRight={null}>
  153. <OperButton.Confirm
  154. title="确认删除?"
  155. content="删除之后不可恢复"
  156. onClick={() => onDelete(row)}
  157. >
  158. 删除
  159. </OperButton.Confirm>
  160. </AuthButton>,
  161. ],
  162. { noMargin: true },
  163. ),
  164. },
  165. ];
  166. const actionRender = () => {
  167. return (
  168. <AuthButton name="course.add" noRight={null}>
  169. <Button type="primary" icon="plus" onClick={() => toEdit()}>
  170. 新增
  171. </Button>
  172. </AuthButton>
  173. );
  174. };
  175. return (
  176. <>
  177. <QueryTable
  178. ref={ref}
  179. rowKey="curriculumId"
  180. api={apis.course.Tablecourse}
  181. columns={tableColumns}
  182. searchFields={searchFields}
  183. actionRender={actionRender}
  184. />
  185. </>
  186. );
  187. };