|
@@ -1,14 +1,11 @@
|
|
|
-import { DownOutlined, PlusOutlined } from '@ant-design/icons';
|
|
|
-import { Button, Divider, Dropdown, Menu, message } from 'antd';
|
|
|
-import React, { useState, useRef } from 'react';
|
|
|
-import { PageHeaderWrapper } from '@ant-design/pro-layout';
|
|
|
-import ProTable, { ProColumns, ActionType } from '@ant-design/pro-table';
|
|
|
-import { SorterResult } from 'antd/es/table/interface';
|
|
|
-
|
|
|
-import CreateForm from './components/CreateForm';
|
|
|
-import UpdateForm, { FormValueType } from './components/UpdateForm';
|
|
|
-import { TableListItem } from './data.d';
|
|
|
-import { queryRule, updateRule, addRule, removeRule } from './service';
|
|
|
+import {PlusOutlined} from '@ant-design/icons';
|
|
|
+import {Button, Divider, message, Modal, Radio} from 'antd';
|
|
|
+import React, {useRef, useState} from 'react';
|
|
|
+import {PageHeaderWrapper} from '@ant-design/pro-layout';
|
|
|
+import ProTable, {ActionType, ProColumns} from '@ant-design/pro-table';
|
|
|
+import {SorterResult} from 'antd/es/table/interface';
|
|
|
+import {TableListItem} from './data.d';
|
|
|
+import service from './service';
|
|
|
|
|
|
/**
|
|
|
* 添加节点
|
|
@@ -17,7 +14,7 @@ import { queryRule, updateRule, addRule, removeRule } from './service';
|
|
|
const handleAdd = async (fields: TableListItem) => {
|
|
|
const hide = message.loading('正在添加');
|
|
|
try {
|
|
|
- await addRule({ ...fields });
|
|
|
+ await service.addModel({...fields});
|
|
|
hide();
|
|
|
message.success('添加成功');
|
|
|
return true;
|
|
@@ -32,12 +29,11 @@ const handleAdd = async (fields: TableListItem) => {
|
|
|
* 更新节点
|
|
|
* @param fields
|
|
|
*/
|
|
|
-const handleUpdate = async (fields: FormValueType) => {
|
|
|
+const handleUpdate = async (fields: TableListItem) => {
|
|
|
const hide = message.loading('正在配置');
|
|
|
try {
|
|
|
- await updateRule(fields);
|
|
|
+ await service.updateModel(fields);
|
|
|
hide();
|
|
|
-
|
|
|
message.success('配置成功');
|
|
|
return true;
|
|
|
} catch (error) {
|
|
@@ -45,19 +41,17 @@ const handleUpdate = async (fields: FormValueType) => {
|
|
|
message.error('配置失败请重试!');
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 删除节点
|
|
|
- * @param selectedRows
|
|
|
+ * @param fields
|
|
|
*/
|
|
|
-const handleRemove = async (selectedRows: TableListItem[]) => {
|
|
|
+const handleRemove = async (fields: TableListItem) => {
|
|
|
const hide = message.loading('正在删除');
|
|
|
- if (!selectedRows) return true;
|
|
|
try {
|
|
|
- await removeRule({
|
|
|
- key: selectedRows.map((row) => row.id),
|
|
|
- });
|
|
|
+ await service.removeModel(fields);
|
|
|
hide();
|
|
|
message.success('删除成功,即将刷新');
|
|
|
return true;
|
|
@@ -68,53 +62,109 @@ const handleRemove = async (selectedRows: TableListItem[]) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+
|
|
|
const TableList: React.FC<{}> = () => {
|
|
|
+
|
|
|
+
|
|
|
const [sorter, setSorter] = useState<string>('');
|
|
|
- const [createModalVisible, handleModalVisible] = useState<boolean>(false);
|
|
|
- const [updateModalVisible, handleUpdateModalVisible] = useState<boolean>(false);
|
|
|
+ const [modelVisible, setModalVisible] = useState<boolean>(false);
|
|
|
const [formValues, setFormValues] = useState({});
|
|
|
const actionRef = useRef<ActionType>();
|
|
|
const columns: ProColumns<TableListItem>[] = [
|
|
|
{
|
|
|
- title: '规则名称',
|
|
|
- dataIndex: 'name',
|
|
|
+ title: '模型类型',
|
|
|
+ dataIndex: 'modelType',
|
|
|
+ hideInSearch: true,
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
|
- message: '规则名称为必填项',
|
|
|
+ message: '模型类型为必填项',
|
|
|
},
|
|
|
],
|
|
|
+ renderFormItem: () => {
|
|
|
+ return (
|
|
|
+ <Radio.Group>
|
|
|
+ <Radio value={0}>albert</Radio>
|
|
|
+ <Radio value={1}>Blstm</Radio>
|
|
|
+ </Radio.Group>
|
|
|
+ );
|
|
|
+ },
|
|
|
+ valueEnum: {
|
|
|
+ 0: {text: 'albert'},
|
|
|
+ 1: {text: 'Blstm'}
|
|
|
+ },
|
|
|
},
|
|
|
{
|
|
|
- title: '描述',
|
|
|
- dataIndex: 'desc',
|
|
|
- valueType: 'textarea',
|
|
|
+ title: '模型名称',
|
|
|
+ dataIndex: 'modelName',
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '模型名称为必填项',
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
{
|
|
|
- title: '服务调用次数',
|
|
|
- dataIndex: 'callNo',
|
|
|
- sorter: true,
|
|
|
- hideInForm: true,
|
|
|
- renderText: (val: string) => `${val} 万`,
|
|
|
+ title: '模型文件',
|
|
|
+ dataIndex: 'modelFile',
|
|
|
+ hideInSearch: true,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '模型名称为必填项',
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
{
|
|
|
- title: '状态',
|
|
|
- dataIndex: 'status',
|
|
|
- hideInForm: true,
|
|
|
- valueEnum: {
|
|
|
- 0: { text: '关闭', status: 'Default' },
|
|
|
- 1: { text: '运行中', status: 'Processing' },
|
|
|
- 2: { text: '已上线', status: 'Success' },
|
|
|
- 3: { text: '异常', status: 'Error' },
|
|
|
- },
|
|
|
+ title: '词向量文件',
|
|
|
+ dataIndex: 'vocabFile',
|
|
|
+ hideInSearch: true,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '词向量文件为必填项',
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
{
|
|
|
- title: '上次调度时间',
|
|
|
- dataIndex: 'updatedAt',
|
|
|
- sorter: true,
|
|
|
- valueType: 'dateTime',
|
|
|
- hideInForm: true,
|
|
|
+ title: '标签文件',
|
|
|
+ dataIndex: 'labelFile',
|
|
|
+ hideInSearch: true,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '标签文件为必填项',
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
+ {
|
|
|
+ title: '必包含',
|
|
|
+ dataIndex: 'mustTag',
|
|
|
+ hideInSearch: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '必不包含',
|
|
|
+ dataIndex: 'mustTag',
|
|
|
+ hideInSearch: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '纯文本',
|
|
|
+ dataIndex: 'onlyWord',
|
|
|
+ hideInSearch: true,
|
|
|
+ renderFormItem: () => {
|
|
|
+ return (
|
|
|
+ <Radio.Group>
|
|
|
+ <Radio value="true">是</Radio>
|
|
|
+ <Radio value="false">否</Radio>
|
|
|
+ </Radio.Group>
|
|
|
+ );
|
|
|
+ },
|
|
|
+ valueEnum: {
|
|
|
+ "true": {text: '是'},
|
|
|
+ "false": {text: '否'}
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
{
|
|
|
title: '操作',
|
|
|
dataIndex: 'option',
|
|
@@ -123,80 +173,78 @@ const TableList: React.FC<{}> = () => {
|
|
|
<>
|
|
|
<a
|
|
|
onClick={() => {
|
|
|
- handleUpdateModalVisible(true);
|
|
|
+ setModalVisible(true);
|
|
|
setFormValues(record);
|
|
|
console.log(record)
|
|
|
}}
|
|
|
>
|
|
|
配置
|
|
|
</a>
|
|
|
- <Divider type="vertical" />
|
|
|
- <a href="">订阅警报</a>
|
|
|
+ <Divider type="vertical"/>
|
|
|
+ <a
|
|
|
+ onClick={() => {
|
|
|
+ handleRemove(record);
|
|
|
+ console.log(record)
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 删除
|
|
|
+ </a>
|
|
|
</>
|
|
|
),
|
|
|
},
|
|
|
];
|
|
|
|
|
|
+ const [searchForm,setSearchForm] = useState({});
|
|
|
+
|
|
|
return (
|
|
|
<PageHeaderWrapper>
|
|
|
<ProTable<TableListItem>
|
|
|
headerTitle="查询表格"
|
|
|
actionRef={actionRef}
|
|
|
- rowKey="key"
|
|
|
+ rowKey="id"
|
|
|
onChange={(_, _filter, _sorter) => {
|
|
|
const sorterResult = _sorter as SorterResult<TableListItem>;
|
|
|
if (sorterResult.field) {
|
|
|
setSorter(`${sorterResult.field}_${sorterResult.order}`);
|
|
|
}
|
|
|
}}
|
|
|
+ pagination={{
|
|
|
+ defaultPageSize: 10
|
|
|
+ }}
|
|
|
params={{
|
|
|
sorter,
|
|
|
}}
|
|
|
- toolBarRender={(action, { selectedRows }) => [
|
|
|
- <Button type="primary" onClick={() => handleModalVisible(true)}>
|
|
|
- <PlusOutlined /> 新建
|
|
|
- </Button>,
|
|
|
- selectedRows && selectedRows.length > 0 && (
|
|
|
- <Dropdown
|
|
|
- overlay={
|
|
|
- <Menu
|
|
|
- onClick={async (e) => {
|
|
|
- if (e.key === 'remove') {
|
|
|
- await handleRemove(selectedRows);
|
|
|
- action.reload();
|
|
|
- }
|
|
|
- }}
|
|
|
- selectedKeys={[]}
|
|
|
- >
|
|
|
- <Menu.Item key="remove">批量删除</Menu.Item>
|
|
|
- <Menu.Item key="approval">批量审批</Menu.Item>
|
|
|
- </Menu>
|
|
|
- }
|
|
|
- >
|
|
|
- <Button>
|
|
|
- 批量操作 <DownOutlined />
|
|
|
- </Button>
|
|
|
- </Dropdown>
|
|
|
- ),
|
|
|
+ /* eslint-disable */
|
|
|
+ toolBarRender={(action, {selectedRows}) => [
|
|
|
+ <Button type="primary" onClick={() => {
|
|
|
+ setModalVisible(true);
|
|
|
+ setFormValues({});
|
|
|
+ }}>
|
|
|
+ <PlusOutlined/> 新建
|
|
|
+ </Button>
|
|
|
]}
|
|
|
- tableAlertRender={(selectedRowKeys, selectedRows) => (
|
|
|
- <div>
|
|
|
- 已选择 <a style={{ fontWeight: 600 }}>{selectedRowKeys.length}</a> 项
|
|
|
- <span>
|
|
|
- {/*服务调用次数总计 {selectedRows.reduce((pre, item) => pre + item.callNo, 0)} 万*/}
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- )}
|
|
|
- request={(params) => queryRule(params)}
|
|
|
+ request={(params) => service.queryModel(params)}
|
|
|
columns={columns}
|
|
|
rowSelection={{}}
|
|
|
/>
|
|
|
- <CreateForm onCancel={() => handleModalVisible(false)} modalVisible={createModalVisible}>
|
|
|
+ <Modal
|
|
|
+ destroyOnClose
|
|
|
+ title={"id" in formValues ? "编辑" : "新建"}
|
|
|
+ visible={modelVisible}
|
|
|
+ onCancel={() => setModalVisible(false)}
|
|
|
+ footer={null}
|
|
|
+ >
|
|
|
<ProTable<TableListItem, TableListItem>
|
|
|
onSubmit={async (value) => {
|
|
|
- const success = await handleAdd(value);
|
|
|
+ let success = false;
|
|
|
+ if (value.id) {
|
|
|
+ success = await handleAdd(value);
|
|
|
+ } else {
|
|
|
+ success = await handleUpdate(value);
|
|
|
+ }
|
|
|
+
|
|
|
if (success) {
|
|
|
- handleModalVisible(false);
|
|
|
+ setModalVisible(false);
|
|
|
if (actionRef.current) {
|
|
|
actionRef.current.reload();
|
|
|
}
|
|
@@ -206,28 +254,10 @@ const TableList: React.FC<{}> = () => {
|
|
|
type="form"
|
|
|
columns={columns}
|
|
|
rowSelection={{}}
|
|
|
+ form={{initialValues: formValues}}
|
|
|
/>
|
|
|
- </CreateForm>
|
|
|
- {formValues && Object.keys(formValues).length ? (
|
|
|
- <UpdateForm
|
|
|
- onSubmit={async (value) => {
|
|
|
- const success = await handleUpdate(value);
|
|
|
- if (success) {
|
|
|
- handleUpdateModalVisible(false);
|
|
|
- setFormValues({});
|
|
|
- if (actionRef.current) {
|
|
|
- actionRef.current.reload();
|
|
|
- }
|
|
|
- }
|
|
|
- }}
|
|
|
- onCancel={() => {
|
|
|
- handleUpdateModalVisible(false);
|
|
|
- setFormValues({});
|
|
|
- }}
|
|
|
- updateModalVisible={updateModalVisible}
|
|
|
- values={formValues}
|
|
|
- />
|
|
|
- ) : null}
|
|
|
+ </Modal>
|
|
|
+
|
|
|
</PageHeaderWrapper>
|
|
|
);
|
|
|
};
|