import styles from './style.less'; import { Button, Form, Input, InputNumber, message, Space, Switch, Select, Divider, Anchor, Row, Col, } from 'antd'; import React, { useState, useEffect } from 'react'; import { getSystemConfig, saveSystemConfig } from '@/services/user'; import ProCard from '@ant-design/pro-card'; import SelectTMEPerson from '@/components/SelectTMEPerson'; import { SystemConfigParametersItem, SystemConfig } from './types'; import FormItemTitle from '@/components/FormHelper/FormItemTitle'; import { groupBy } from 'lodash'; const FormItem = Form.Item; const { TextArea } = Input; const System: React.FC = () => { const [systemConfig, setSystemConfig] = useState>( {}, ); const [anchorItems, setAnchorItems] = useState<{ key: string; href: string; title: string }[]>( [], ); const [configSource, setConfigSource] = useState(); const [paramDescMap, setParamDescMap] = useState>({}); useEffect(() => { querySystemConfig(); }, []); const [form] = Form.useForm(); const querySystemConfig = async () => { const { code, data, msg } = await getSystemConfig(); if (code === 200 && data) { const { parameters = [], admins = [] } = data; const groupByConfig = groupBy(parameters, 'module'); const anchor = Object.keys(groupByConfig).map((key: string) => { return { key, href: `#${key}`, title: key, }; }); setAnchorItems(anchor); setSystemConfig(groupByConfig); setInitData(admins, parameters); initDescMap(parameters); setConfigSource(data); } else { message.error(msg); } }; const initDescMap = (systemConfigParameters: SystemConfigParametersItem[]) => { const descData = systemConfigParameters.reduce( (descMap: Record, item: SystemConfigParametersItem) => { descMap[item.name] = item.description; return descMap; }, {}, ); setParamDescMap(descData); }; const setInitData = (admins: string[], systemConfigParameters: SystemConfigParametersItem[]) => { const fieldsValue = systemConfigParameters.reduce( (fields, item) => { const { name, value } = item; return { ...fields, [name]: value, }; }, { admins }, ); form.setFieldsValue(fieldsValue); }; const querySaveSystemConfig = async () => { const submitData = await form.validateFields(); const { code, msg } = await saveSystemConfig({ ...configSource, admins: submitData.admins, parameters: configSource!.parameters.map((item) => { const { name } = item; if (submitData[name] !== undefined) { return { ...item, value: submitData[name], description: paramDescMap[name], }; } return item; }), }); if (code === 200) { message.success('保存成功'); } else { message.error(msg); } }; return ( <>
} >
{Object.keys(systemConfig).map((key: string) => { const itemList = systemConfig[key]; return ( {key}} key={key} bordered id={key} > {itemList.map((item) => { const { dataType, name, comment } = item; let defaultItem = ; switch (dataType) { case 'string': defaultItem =