edit.jsx 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import React, { useState, useEffect } from 'react';
  2. import { Input, Menu, Dropdown, Button, Icon, message, Table, Divider, Tag, Select, Form, Alert, Radio } from 'antd';
  3. import { FormattedMessage } from 'umi-plugin-react/locale';
  4. import XForm, { FieldTypes } from '../../../components/XForm';
  5. import router from 'umi/router';
  6. import apis from '../../../services/apis';
  7. import request from '../../../utils/request';
  8. import Wangedit from '../../../components/Wangedit/Wangedit'
  9. import ImageUpload from '../../../components/XForm/ImageUpload'
  10. import SelectContact from './components/SelectContact';
  11. import moment from 'moment';
  12. const formItemLayout = {
  13. labelCol: {
  14. xs: { span: 24 },
  15. sm: { span: 2 },
  16. },
  17. wrapperCol: {
  18. xs: { span: 24 },
  19. sm: { span: 16 },
  20. },
  21. };
  22. const header = props => {
  23. const sampleId = props.location.query.id
  24. const [ data, setData ] = useState({})
  25. const [typeState, setTypeState] = useState("rich")
  26. if(sampleId){
  27. useEffect(() => {
  28. getH5Data(sampleId);
  29. },[])
  30. // 查询列表
  31. const getH5Data = (sampleId) => {
  32. request({
  33. ...apis.sample.get,
  34. urlData: { id: sampleId }
  35. }).then((data) => {
  36. setData(data)
  37. }).catch((err) => {
  38. message.error(err.msg || err.message)
  39. })
  40. }
  41. }
  42. const handleSubmit = (e) => {
  43. e.preventDefault();
  44. // e.stopPropagation();
  45. props.form.validateFieldsAndScroll((err, values) => {
  46. console.log(values,"valuesvaluesvaluesvaluesvaluesvaluesvalues")
  47. debugger
  48. if (!err) {
  49. console.log(values,"h5Sample/addh5Sample/add")
  50. if(sampleId){
  51. request({ ...apis.sample.update, urlData: { id: sampleId }, data: { ...values }}).then((data) => {
  52. cancelPage();
  53. }).catch((err) => {
  54. message.error(err.msg || err.message)
  55. })
  56. }else{
  57. request({ ...apis.sample.addh5, data: { ...values }}).then((data) => {
  58. cancelPage();
  59. }).catch((err) => {
  60. message.error(err.msg || err.message)
  61. })
  62. }
  63. }
  64. });
  65. }
  66. const cancelPage = () => {
  67. router.push({
  68. pathname: '/sample/h5/list',
  69. });
  70. }
  71. function sampleTypeChange(e) {
  72. setTypeState(e.target.value)
  73. }
  74. const { getFieldDecorator } = props.form;
  75. return (
  76. <Form {...formItemLayout} onSubmit={handleSubmit}>
  77. <Form.Item label="样例名" >
  78. {getFieldDecorator('sampleName',{
  79. rules: [{ required: true, message: '请输入样例名' },
  80. { max: 20, message: '样例名不超过20个字符' }],
  81. })(<Input placeholder="H5活动主题或目的,如植树节引流活动"/>)}
  82. </Form.Item>
  83. <Form.Item label="样例体验链接" >
  84. {getFieldDecorator('sampleTryLink',{
  85. rules: [{ max: 300, message: '样例体验链接不超过300个字符' }],
  86. })(<Input placeholder="若样例暂未发布到小程序,可直接粘贴网页链接"/>)}
  87. </Form.Item>
  88. <Form.Item label="样例体验二维码/小程序码" >
  89. {getFieldDecorator('sampleTryCode')(
  90. <ImageUpload />,
  91. )}
  92. </Form.Item>
  93. <Form.Item label="封面图" help="建议尺寸:495*330px,比例:3:2,格式:jpg,大小:不超过300KB,用于样例列表封面">
  94. {getFieldDecorator('coverImg', {
  95. rules: [{ required: true, message: '请选择列表图' }],
  96. })(
  97. <ImageUpload />,
  98. )}
  99. </Form.Item>
  100. <Form.Item label="方案/报价/技术联系人" >
  101. {getFieldDecorator('taContactList',{
  102. trigger: 'onSelected'
  103. })(<SelectContact />)}
  104. </Form.Item>
  105. <Form.Item label="发布状态" >
  106. {getFieldDecorator('status', {
  107. initialValue: "1",
  108. })(
  109. <Select style={{ width: '180px' }}>
  110. <Select.Option value="1">是</Select.Option>
  111. <Select.Option value="0">否</Select.Option>
  112. </Select>)}
  113. </Form.Item>
  114. <Form.Item label="权重" help="数值越大越靠前">
  115. {getFieldDecorator('orderNo')(<Input />)}
  116. </Form.Item>
  117. <Form.Item label="标签" help="标签长度6个字,最多3个标签">
  118. {getFieldDecorator('tags')(
  119. <Select mode="tags" placeholder="输入后选中" style={{ width: '1016px' }}>
  120. </Select>,
  121. )}
  122. </Form.Item>
  123. <Form.Item label="样例类型">
  124. {getFieldDecorator('sampleType',{
  125. initialValue: "rich",
  126. })(
  127. <Radio.Group onChange={e => sampleTypeChange(e)}>
  128. <Radio value="rich">富文本</Radio>
  129. <Radio value="link">外部链接</Radio>
  130. </Radio.Group>,
  131. )}
  132. </Form.Item>
  133. {typeState === 'link' && <Form.Item label="外部链接">
  134. {getFieldDecorator('sampleContentLink',{
  135. rules: [{ max: 300, message: '外部链接不超过300个字符' }],
  136. })(<Input placeholder="填写外部链接,如公众号链接或135编辑器生成的页面链接" />)}
  137. </Form.Item>}
  138. {typeState === 'rich' && <Form.Item label="样例内容" >
  139. {getFieldDecorator('sampleContent')(
  140. <Wangedit />,
  141. )}
  142. </Form.Item> }
  143. <Form.Item style={{ width: '400px', margin: 'auto', display: 'flex', justifyContent: 'space-between' }}>
  144. <Button type="primary" htmlType="submit">
  145. 确定
  146. </Button>
  147. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  148. <Button onClick={() => router.go(-1)}>
  149. 取消
  150. </Button>
  151. </Form.Item>
  152. </Form>
  153. )
  154. }
  155. const WrappedNormalLoginForm = Form.create({ name: 'header' })(header);
  156. export default WrappedNormalLoginForm