EditChannel.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import React, { useEffect, useState } from 'react';
  2. import { Button, Form, Header, Segment } from 'semantic-ui-react';
  3. import { useParams } from 'react-router-dom';
  4. import { API, showError, showSuccess } from '../../helpers';
  5. import { CHANNEL_OPTIONS } from '../../constants';
  6. const EditChannel = () => {
  7. const params = useParams();
  8. const channelId = params.id;
  9. const [loading, setLoading] = useState(true);
  10. const [inputs, setInputs] = useState({
  11. name: '',
  12. key: '',
  13. type: 1,
  14. base_url: '',
  15. });
  16. const handleInputChange = (e, { name, value }) => {
  17. setInputs((inputs) => ({ ...inputs, [name]: value }));
  18. };
  19. const loadChannel = async () => {
  20. let res = await API.get(`/api/channel/${channelId}`);
  21. const { success, message, data } = res.data;
  22. if (success) {
  23. data.password = '';
  24. setInputs(data);
  25. } else {
  26. showError(message);
  27. }
  28. setLoading(false);
  29. };
  30. useEffect(() => {
  31. loadChannel().then();
  32. }, []);
  33. const submit = async () => {
  34. if (inputs.base_url.endsWith('/')) {
  35. inputs.base_url = inputs.base_url.slice(0, inputs.base_url.length - 1);
  36. }
  37. let res = await API.put(`/api/channel/`, { ...inputs, id: parseInt(channelId) });
  38. const { success, message } = res.data;
  39. if (success) {
  40. showSuccess('渠道更新成功!');
  41. } else {
  42. showError(message);
  43. }
  44. };
  45. return (
  46. <>
  47. <Segment loading={loading}>
  48. <Header as='h3'>更新渠道信息</Header>
  49. <Form autoComplete='off'>
  50. <Form.Field>
  51. <Form.Select
  52. label='类型'
  53. name='type'
  54. options={CHANNEL_OPTIONS}
  55. value={inputs.type}
  56. onChange={handleInputChange}
  57. />
  58. </Form.Field>
  59. {
  60. inputs.type === 8 && (
  61. <Form.Field>
  62. <Form.Input
  63. label='Base URL'
  64. name='base_url'
  65. placeholder={'请输入新的自定义渠道的 Base URL'}
  66. onChange={handleInputChange}
  67. value={inputs.base_url}
  68. autoComplete='off'
  69. />
  70. </Form.Field>
  71. )
  72. }
  73. <Form.Field>
  74. <Form.Input
  75. label='名称'
  76. name='name'
  77. placeholder={'请输入新的名称'}
  78. onChange={handleInputChange}
  79. value={inputs.name}
  80. autoComplete='off'
  81. />
  82. </Form.Field>
  83. <Form.Field>
  84. <Form.Input
  85. label='密钥'
  86. name='key'
  87. placeholder={'请输入新的密钥'}
  88. onChange={handleInputChange}
  89. value={inputs.key}
  90. // type='password'
  91. autoComplete='off'
  92. />
  93. </Form.Field>
  94. <Button onClick={submit}>提交</Button>
  95. </Form>
  96. </Segment>
  97. </>
  98. );
  99. };
  100. export default EditChannel;