| | |
| | | import { history, useAccess, useParams } from '@umijs/max'; |
| | | import { Avatar, Button, Form, Input, Select, message } from 'antd'; |
| | | import { PlusOutlined } from '@ant-design/icons'; |
| | | import { Button, Form, Input, Select, Upload, message } from 'antd'; |
| | | import React, { useEffect, useState } from 'react'; |
| | | import RegionCascader from '@/components/RegionCascader'; |
| | | import { getClinicDetail, getProvincialAgentOptions, updateClinic } from './service'; |
| | | import { getClinicDetail, getProvincialAgentOptions, updateClinic, uploadClinicImage } from './service'; |
| | | import './manage.less'; |
| | | |
| | | type FormValues = { avatar?: string; name?: string; loginAccount?: string; regionCodes?: string[]; address?: string; businessLicenseUrl?: string; status?: number; agentId?: number; bankName?: string; accountHolder?: string; accountNumber?: string; branchName?: string }; |
| | | const ClinicManagePage: React.FC = () => { |
| | |
| | | try { const [provinceCode, cityCode, districtCode] = values.regionCodes || []; await updateClinic(params.id, { ...values, provinceCode, cityCode, districtCode }); message.success('保存成功'); history.push(`/member/user/clinic/${params.id}`); } |
| | | finally { setLoading(false); } |
| | | }; |
| | | return <div style={{ padding: 24, background: '#fff' }}><h2>编辑诊所</h2> |
| | | return <div className="clinic-edit-page"><div className="clinic-edit-panel"><h2>编辑诊所</h2> |
| | | <Form form={form} labelCol={{ span: 4 }} wrapperCol={{ span: 10 }}> |
| | | <Form.Item shouldUpdate noStyle>{() => <div style={{ marginBottom: 20 }}><Avatar size={72} src={form.getFieldValue("avatar")} /></div>}</Form.Item> |
| | | <Form.Item shouldUpdate noStyle>{() => <div style={{ marginBottom: 20 }}><div className="clinic-edit-upload" /></div>}</Form.Item> |
| | | <Form.Item name="avatar" label="头像"><Input placeholder="请输入头像地址" /></Form.Item> |
| | | <Form.Item name="name" label="诊所名称"><Input maxLength={100} placeholder="请输入诊所名称" /></Form.Item> |
| | | <Form.Item name="loginAccount" label="登录账号"><Input maxLength={50} placeholder="请输入登录账号" /></Form.Item> |
| | | <Form.Item name="regionCodes" label="诊所地址"><RegionCascader placeholder="请选择省/市/区" /></Form.Item> |
| | | <Form.Item name="address" label="详细地址"><Input maxLength={255} placeholder="请输入详细地址" /></Form.Item> |
| | | <Form.Item name="businessLicenseUrl" label="营业执照"><Input placeholder="请输入营业执照图片地址" /></Form.Item> |
| | | <Form.Item label="营业执照" shouldUpdate>{() => <Upload accept="image/*" showUploadList={false} beforeUpload={async (file) => { const response = await uploadClinicImage(file); form.setFieldValue("businessLicenseUrl", response.data?.url || response.data); return false; }}><div className="clinic-edit-upload clinic-edit-upload--license">{form.getFieldValue("businessLicenseUrl") ? <img src={form.getFieldValue("businessLicenseUrl")} alt="营业执照" /> : <div><PlusOutlined /><span>上传营业执照</span></div>}</div></Upload>}</Form.Item> |
| | | <Form.Item name="status" label="状态"><Select options={[{ label: "启用", value: 1 }, { label: "禁用", value: 0 }]} placeholder="请选择状态" /></Form.Item> |
| | | <Form.Item name="agentId" label="所属省区代理"><Select allowClear showSearch optionFilterProp="label" options={agentOptions} placeholder="请选择省区代理" /></Form.Item> |
| | | <Form.Item name="bankName" label="银行名称"><Input maxLength={100} placeholder="请输入银行名称" /></Form.Item> |
| | | <Form.Item name="accountHolder" label="账号名称"><Input maxLength={50} placeholder="请输入账号名称" /></Form.Item> |
| | | <Form.Item name="accountNumber" label="账号"><Input maxLength={30} placeholder="请输入账号" /></Form.Item> |
| | | <Form.Item name="branchName" label="支行名称"><Input maxLength={100} placeholder="请输入支行名称" /></Form.Item> |
| | | <Form.Item name="agentId" label="所属省区代理"><Select allowClear showSearch optionFilterProp="label" options={agentOptions} placeholder="请选择省区代理" /></Form.Item> |
| | | <Form.Item wrapperCol={{ offset: 4 }}><Button onClick={() => history.back()}>取消</Button><Button type="primary" loading={loading} onClick={submit} style={{ marginLeft: 8 }}>保存</Button></Form.Item> |
| | | </Form></div>; |
| | | </Form></div></div>; |
| | | }; |
| | | export default ClinicManagePage; |