知与行后台管理端

editGoods.jsx 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. import React, { useState, useEffect } from 'react';
  2. import { Input, Menu, Dropdown, Button, Icon, message, Table, Divider, Tag, Select, Form, Alert } from 'antd';
  3. import { FormattedMessage } from 'umi-plugin-react/locale';
  4. import channels from '../channel/channelList.less';
  5. import BuildSelect from '../../components/SelectButton/BuildSelect'
  6. import XForm, { FieldTypes } from '../../components/XForm';
  7. import Wangedit from '../../components/Wangedit/Wangedit'
  8. import router from 'umi/router';
  9. import apis from '../../services/apis';
  10. import request from '../../utils/request'
  11. const { TextArea } = Input;
  12. const { Option } = Select;
  13. const header = props => {
  14. const goodsId = props.location.query.goodsId
  15. const [ goodsData, setGoodsData ] = useState({})
  16. if(goodsId){
  17. useEffect(() => {
  18. getGoodsData(goodsId);
  19. },[])
  20. // 查询列表
  21. const getGoodsData = (goodsId) => {
  22. request({ ...apis.integralMall.taGoods, urlData: { id: goodsId },}).then((data) => {
  23. console.log(data)
  24. setGoodsData(data)
  25. })
  26. }
  27. }
  28. const fields = [
  29. {
  30. label: '所属项目',
  31. name: 'buildingId',
  32. render: <BuildSelect />,
  33. value: goodsData.buildingId,
  34. rules: [
  35. {required: true, message: '请选择所属项目'},
  36. ]
  37. },
  38. {
  39. label: '商品封面图',
  40. name: 'imgUrl',
  41. type: FieldTypes.ImageUploader,
  42. value: goodsData.imgUrl,
  43. help: '建议图片尺寸:320*320px,比例1:1,格式:jpg,用于商品封面图',
  44. rules: [
  45. {required: true, message: '请选择商品封面图'},
  46. ]
  47. },
  48. {
  49. label: '商品主图',
  50. name: 'detailImgUrl',
  51. type: FieldTypes.ImageUploader,
  52. value: goodsData.detailImgUrl,
  53. help: '建议图片尺寸:750*750px,比例1:1,格式:jpg,用于商品主图',
  54. rules: [
  55. {required: true, message: '请选择商品主图'},
  56. ]
  57. },
  58. {
  59. label: '商品名称',
  60. name: 'goodsName',
  61. type: FieldTypes.Text,
  62. value: goodsData.goodsName,
  63. rules: [
  64. {required: true, message: '请输入商品名称'},
  65. ]
  66. },
  67. {
  68. label: '所需积分',
  69. name: 'pointPrice',
  70. type: FieldTypes.Text,
  71. value: goodsData.pointPrice,
  72. rules: [
  73. {required: true, message: '请输入所需积分'},
  74. ]
  75. },
  76. {
  77. label: '商品数量',
  78. name: 'totalNum',
  79. type: FieldTypes.Text,
  80. value: goodsData.totalNum,
  81. rules: [
  82. {required: true, message: '请输入商品数量'},
  83. ]
  84. },
  85. {
  86. label: '剩余数量',
  87. name: 'inventory',
  88. type: FieldTypes.Text,
  89. value: goodsData.inventory,
  90. rules: [
  91. {required: true, message: '请输入剩余数量'},
  92. ]
  93. },
  94. {
  95. label: '商品详情',
  96. name: 'goodsDescription',
  97. render: <Wangedit />,
  98. value: goodsData.goodsDescription,
  99. },
  100. {
  101. label: '状态',
  102. name: 'status',
  103. type: FieldTypes.Select,
  104. dict: [{label:"已上架",value:1},{label:"已下架",value:0}],
  105. value: goodsData.status != null ? goodsData.status : 1,
  106. },
  107. {
  108. label: '领取地址',
  109. name: 'address',
  110. type: FieldTypes.Text,
  111. value: goodsData.address,
  112. rules: [
  113. {required: true, message: '请输入领取地址'},
  114. ]
  115. },
  116. ]
  117. const handleSubmit = (values) => {
  118. if(goodsId){
  119. values.goodsId = goodsId
  120. request({ ...apis.integralMall.updateTaGoods, data: values,}).then((data) => {
  121. cancelPage()
  122. }).catch((err) => {
  123. message.info(err.msg || err.message)
  124. })
  125. }else{
  126. request({ ...apis.integralMall.addTaGoods, data: values,}).then((data) => {
  127. cancelPage()
  128. }).catch((err) => {
  129. message.info(err.msg || err.message)
  130. })
  131. }
  132. }
  133. const cancelPage = () => {
  134. router.push({
  135. pathname: '/integralMall/GoodsList',
  136. });
  137. }
  138. return (
  139. <XForm onSubmit={handleSubmit} onCancel={cancelPage} fields={fields}></XForm>
  140. )
  141. }
  142. const WrappedNormalLoginForm = Form.create({ name: 'header' })(header);
  143. export default WrappedNormalLoginForm