AddSeal.jsx 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import React, { PureComponent, useState, useEffect } from 'react'
  2. import { Modal, Row, Col, Table, Pagination, Button, Form, Input,message, Icon, notification } from 'antd'
  3. import ImageUpload from './ImageUpload';
  4. import apis from '../../../../services/apis';
  5. import router from 'umi/router';
  6. import request from '../../../../utils/request';
  7. const AddSeal = props => {
  8. const companyId = props.companyId
  9. function close(e){
  10. props.onCancel(e)
  11. }
  12. function handleSubmit (e) {
  13. e.preventDefault();
  14. props.form.validateFields((err, values) => {
  15. if (!err){
  16. request({ ...apis.seal.addSeal, data: { ...values, companyId: companyId },}).then((data) => {
  17. message.info("保存成功")
  18. props.onSuccess({visable:false, companyId: companyId});
  19. }).catch((err) => {
  20. message.info(err.msg || err.message)
  21. })
  22. }
  23. });
  24. }
  25. function openNotificationWithIcon(type, message) {
  26. notification[type]({
  27. message,
  28. description:
  29. '',
  30. });
  31. }
  32. function checkImageWH(file, width, height) {
  33. let self = this;
  34. return new Promise(function (resolve, reject) {
  35. let filereader = new FileReader();
  36. filereader.onload = e => {
  37. let src = e.target.result;
  38. const image = new Image();
  39. image.onload = function () {
  40. if (width && this.width != width && height && this.height != height) {
  41. message.error('图片尺寸不符合要求')
  42. reject();
  43. } else {
  44. resolve();
  45. }
  46. };
  47. image.onerror = reject;
  48. image.src = src;
  49. };
  50. filereader.readAsDataURL(file);
  51. });
  52. }
  53. const handleBeforeUpload = (file) => {
  54. //限制图片 格式、分辨率
  55. const isPNG = file.type === 'image/png';
  56. if (! isPNG){
  57. message.error('请上传PNG格式图片')
  58. }
  59. return (isPNG ) && checkImageWH(file, 166, 166);
  60. }
  61. const { getFieldDecorator } = props.form
  62. return (
  63. <Modal footer={null} title="新增印章" visible={props.visible} onCancel={() => close({visable:false})} width={800}>
  64. <Form labelCol={{ span: 7 }} wrapperCol={{ span: 12 }} onSubmit={handleSubmit}>
  65. <Form.Item label="印章名称">
  66. {getFieldDecorator('sealName',{
  67. rules: [
  68. {
  69. required: true,
  70. message: '请填写印章名称',
  71. },
  72. ],
  73. })(<Input maxLength={10}/>)}
  74. </Form.Item>
  75. <Form.Item label="印章图" help="166*166 像素,PNG格式透明底 ">
  76. {getFieldDecorator('sealImg', {
  77. rules: [{ required: true, message: '请选择印章图' }],
  78. })(
  79. <ImageUpload beforeUpload={handleBeforeUpload} />,
  80. )}
  81. </Form.Item>
  82. <Form.Item style={{ width: '400px', margin: 'auto', display: 'flex', justifyContent: 'space-between' }}>
  83. <Button type="primary" htmlType="submit">确定</Button>
  84. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  85. <Button onClick={() => close({visable:false})}>取消</Button>
  86. </Form.Item>
  87. </Form>
  88. </Modal>
  89. );
  90. }
  91. const WrappedBase = Form.create({ name: 'AddSeal' })(AddSeal);
  92. export default WrappedBase