index.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { Select, message, Modal } from "antd";
  2. import { connect } from "dva/index";
  3. import router from 'umi/router';
  4. import { Component } from "react";
  5. import { businessStateEnum } from "@/utils/utils";
  6. import styles from "./index.less";
  7. @connect(({ store }) => ({
  8. store,
  9. }))
  10. export default class BusinessStateSelector extends Component {
  11. constructor(props) {
  12. super(props);
  13. this.state = {
  14. stateList: Object.keys(businessStateEnum).map((key) => ({
  15. name: businessStateEnum[key],
  16. value: Number(key),
  17. })),
  18. currentBusinessState: "",
  19. visible: false,
  20. };
  21. }
  22. handleChange = (value) => {
  23. const { dispatch } = this.props;
  24. dispatch({
  25. type: "store/update_business_state",
  26. payload: {
  27. businessState: value
  28. },
  29. callback: (res) => {
  30. if (res.state === 200) {
  31. if (res.data) {
  32. this.setState({ visible: true })
  33. } else {
  34. message.success('设置成功')
  35. this.setState({ currentBusinessState: value });
  36. }
  37. } else {
  38. message.error(res.msg)
  39. }
  40. },
  41. });
  42. };
  43. componentDidMount() {
  44. const { dispatch } = this.props;
  45. dispatch({
  46. type: "store/get_business_state",
  47. callback: (res) => {
  48. if (res.state === 200) {
  49. this.setState({ currentBusinessState: res.data });
  50. } else {
  51. this.setState({ currentBusinessState: 2 });
  52. message.error(res.msg);
  53. }
  54. },
  55. });
  56. }
  57. confirmModal = () => {
  58. router.push({
  59. pathname: '/store/decorate_pc',
  60. query: {
  61. tab: '2'
  62. }
  63. });
  64. this.setState({visible: false})
  65. };
  66. cancelModel = () => {
  67. this.setState({visible: false})
  68. };
  69. render() {
  70. const { stateList, currentBusinessState, visible } = this.state;
  71. return stateList.length ? (
  72. <div className={`${styles.state_warp}`}>
  73. <span className={`${styles.label}`}>经营状态</span>
  74. <Select
  75. value={currentBusinessState}
  76. style={{ width: 150 }}
  77. onChange={this.handleChange}
  78. >
  79. {stateList.map((state) => (
  80. <Select.Option key={state.name} value={state.value}>
  81. {state.name}
  82. </Select.Option>
  83. ))}
  84. </Select>
  85. <Modal
  86. visible={visible}
  87. onOk={this.confirmModal}
  88. onCancel={this.cancelModel}
  89. okText="去启用"
  90. cancelText="取消"
  91. wrapClassName={styles.model_wrap}
  92. width={526}
  93. height={324}
  94. >
  95. <div className={styles.model_content}>
  96. <div className={styles.model_icon}>
  97. <img className={styles.model_img} src={require('../../assets/warning.png')} />
  98. </div>
  99. <div className={styles.model_tip}>请先在【店铺装修-首页装修】内,装修首页并将“启用状态”更改为“启用”</div>
  100. </div>
  101. </Modal>
  102. </div>
  103. ) : null;
  104. }
  105. }