mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 04:27:39 +00:00
* [improvement][semantic-fe] Add model alias setting & Add view permission restrictions to the model permission management tab. [improvement][semantic-fe] Add permission control to the action buttons for the main domain; apply high sensitivity filtering to the authorization of metrics/dimensions. [improvement][semantic-fe] Optimize the editing mode in the dimension/metric/datasource components to use the modelId stored in the database for data, instead of relying on the data from the state manager. * [improvement][semantic-fe] Add time granularity setting in the data source configuration. * [improvement][semantic-fe] Dictionary import for dimension values supported in Q&A visibility * [improvement][semantic-fe] Modification of data source creation prompt wording" * [improvement][semantic-fe] metric market experience optimization * [improvement][semantic-fe] enhance the analysis of metric trends * [improvement][semantic-fe] optimize the presentation of metric trend permissions * [improvement][semantic-fe] add metric trend download functionality * [improvement][semantic-fe] fix the dimension initialization issue in metric correlation * [improvement][semantic-fe] Fix the issue of database changes not taking effect when creating based on an SQL data source. * [improvement][semantic-fe] Optimizing pagination logic and some CSS styles * [improvement][semantic-fe] Fixing the API for the indicator list by changing "current" to "pageNum" * [improvement][semantic-fe] Fixing the default value setting for the indicator list * [improvement][semantic-fe] Adding batch operations for indicators/dimensions/models * [improvement][semantic-fe] Replacing the single status update API for indicators/dimensions with a batch update API * [improvement][semantic-fe] Redesigning the indicator homepage to incorporate trend charts and table functionality for indicators * [improvement][semantic-fe] Optimizing the logic for setting dimension values and editing data sources, and adding system settings functionality * [improvement][semantic-fe] Upgrading antd version to 5.x, extracting the batch operation button component, optimizing the interaction for system settings, and expanding the configuration generation types for list-to-select component.
111 lines
3.1 KiB
TypeScript
111 lines
3.1 KiB
TypeScript
import React, { useState } from 'react';
|
|
import { Form, Button, Modal, Input, Switch } from 'antd';
|
|
import styles from './style.less';
|
|
import { useMounted } from '@/hooks/useMounted';
|
|
import { message } from 'antd';
|
|
import { formLayout } from '@/components/FormHelper/utils';
|
|
import { EnumTransModelType } from '@/enum';
|
|
|
|
const FormItem = Form.Item;
|
|
|
|
export type ProjectInfoFormProps = {
|
|
basicInfo: any;
|
|
onCancel: () => void;
|
|
onSubmit: (values: any) => Promise<any>;
|
|
};
|
|
|
|
const ProjectInfoForm: React.FC<ProjectInfoFormProps> = (props) => {
|
|
const { basicInfo, onSubmit: handleUpdate, onCancel } = props;
|
|
const { type, modelType } = basicInfo;
|
|
|
|
const isMounted = useMounted();
|
|
const [formVals, setFormVals] = useState<any>(basicInfo);
|
|
const [saveLoading, setSaveLoading] = useState(false);
|
|
const [form] = Form.useForm();
|
|
|
|
const handleConfirm = async () => {
|
|
const fieldsValue = await form.validateFields();
|
|
const columnsValue = { ...fieldsValue, isUnique: 1 };
|
|
setFormVals({ ...formVals, ...columnsValue });
|
|
setSaveLoading(true);
|
|
try {
|
|
await handleUpdate({ ...formVals, ...columnsValue });
|
|
if (isMounted()) {
|
|
setSaveLoading(false);
|
|
}
|
|
} catch (error) {
|
|
message.error('接口调用出错');
|
|
setSaveLoading(false);
|
|
}
|
|
};
|
|
|
|
const footer = (
|
|
<>
|
|
<Button onClick={onCancel}>取消</Button>
|
|
<Button type="primary" loading={saveLoading} onClick={handleConfirm}>
|
|
确定
|
|
</Button>
|
|
</>
|
|
);
|
|
|
|
const titleRender = () => {
|
|
let str = EnumTransModelType[modelType];
|
|
if (type === 'top') {
|
|
str += '顶级';
|
|
} else if (modelType === 'add') {
|
|
str += '子';
|
|
}
|
|
str += '主题域';
|
|
return str;
|
|
};
|
|
|
|
return (
|
|
<Modal
|
|
width={640}
|
|
styles={{ padding: '32px 40px 48px' }}
|
|
destroyOnClose
|
|
title={titleRender()}
|
|
open={true}
|
|
footer={footer}
|
|
onCancel={onCancel}
|
|
>
|
|
<Form
|
|
{...formLayout}
|
|
form={form}
|
|
initialValues={{
|
|
...formVals,
|
|
}}
|
|
className={styles.form}
|
|
>
|
|
{type !== 'top' && modelType === 'add' && (
|
|
<FormItem name="parentName" label="父主题域名称">
|
|
<Input disabled placeholder="父主题域名称" />
|
|
</FormItem>
|
|
)}
|
|
<FormItem
|
|
name="name"
|
|
label="主题域名称"
|
|
rules={[{ required: true, message: '请输入主题域名称!' }]}
|
|
>
|
|
<Input placeholder="主题域名称不可重复" />
|
|
</FormItem>
|
|
<FormItem
|
|
name="bizName"
|
|
label="主题域英文名称"
|
|
rules={[{ required: true, message: '请输入主题域英文名称!' }]}
|
|
>
|
|
<Input placeholder="请输入主题域英文名称" />
|
|
</FormItem>
|
|
<FormItem name="description" label="主题域描述" hidden={true}>
|
|
<Input.TextArea placeholder="主题域描述" />
|
|
</FormItem>
|
|
<FormItem name="isUnique" label="是否唯一" hidden={true}>
|
|
<Switch size="small" checked={true} />
|
|
</FormItem>
|
|
</Form>
|
|
</Modal>
|
|
);
|
|
};
|
|
|
|
export default ProjectInfoForm;
|