edit.jsx 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { history } from 'umi';
  2. import { Input, Card, Form, Button, message, InputNumber } from 'antd';
  3. import { useEffect, useState } from 'react';
  4. import ProCard from '@ant-design/pro-card';
  5. import { UploadImage } from '@/components/Upload';
  6. import { addBanner, updateBanner } from '@/services/banner';
  7. const goBack = () => {
  8. history.goBack();
  9. };
  10. const FormItem = Form.Item;
  11. export default (props) => {
  12. const { data } = props.location;
  13. const [form] = Form.useForm();
  14. const [loading, setLoading] = useState(false);
  15. const [image, setImage] = useState();
  16. const formItemLayout = {
  17. //布局
  18. labelCol: { span: 6 },
  19. wrapperCol: { span: 14 },
  20. };
  21. const Submit = (values) => {
  22. setLoading(true);
  23. if (data) {
  24. updateBanner(data.bannerId, values)
  25. .then(() => {
  26. setLoading(false);
  27. message.success('数据更新成功');
  28. goBack();
  29. })
  30. .catch((err) => {
  31. setLoading(false);
  32. message.error(err.message || err);
  33. });
  34. } else {
  35. addBanner(values)
  36. .then((res) => {
  37. setLoading(false);
  38. message.success('数据保存成功');
  39. goBack();
  40. })
  41. .catch((err) => {
  42. setLoading(false);
  43. message.error(err.message || err);
  44. });
  45. }
  46. };
  47. useEffect(() => {
  48. if (data) {
  49. form.setFieldsValue(data);
  50. }
  51. }, [data]);
  52. return (
  53. <Card>
  54. <ProCard tabs={{ type: 'card' }} style={{ marginTop: '16px' }}>
  55. <ProCard.TabPane key={1} tab="轮播图编辑">
  56. <Form {...formItemLayout} onFinish={Submit} form={form}>
  57. <FormItem label="图片" name="image" rules={[{ required: true, message: '请选择' }]} tooltip='轮播图尺寸建议5:3这样小程序可以更好地显示'>
  58. <UploadImage value={image} onChange={setImage} />
  59. </FormItem>
  60. <FormItem label="排序" name="sortNo" rules={[{ required: true, message: '请输入' }]}>
  61. <InputNumber min={0} placeholder="请输入排序" style={{ width: '350px' }} />
  62. </FormItem>
  63. <FormItem label=" " colon={false}>
  64. <Button type="default" onClick={() => goBack()}>
  65. 返回
  66. </Button>
  67. <Button
  68. type="primary"
  69. loading={loading}
  70. htmlType="Submit"
  71. style={{ marginLeft: '4em' }}
  72. >
  73. 保存
  74. </Button>
  75. </FormItem>
  76. </Form>
  77. </ProCard.TabPane>
  78. </ProCard>
  79. </Card>
  80. );
  81. };