From 0a9b0fe0ee6a7bf75b2f94da86ff8257d2d35a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B2=E5=85=B8=E5=8D=93?= Date: Tue, 26 Nov 2024 16:43:31 +0800 Subject: [PATCH] =?UTF-8?q?flat:=20=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.ts | 9 +- src/pages/Area/Business/index.tsx | 61 +++ src/pages/Area/Subway/index.tsx | 61 +++ .../{Monitor => Logs}/Logininfor/edit.tsx | 28 +- .../{System => Logs}/Logininfor/index.tsx | 48 +- .../MobileLogininfor}/edit.tsx | 28 +- .../MobileLogininfor}/index.tsx | 12 +- .../{Monitor => Logs}/Mobilelog/detail.tsx | 4 +- .../{Monitor => Logs}/Mobilelog/index.tsx | 56 ++- .../{Monitor => Logs}/Operlog/detail.tsx | 4 +- src/pages/{Monitor => Logs}/Operlog/index.tsx | 32 +- src/pages/Management/List/edit.tsx | 123 +++++ src/pages/Management/List/index.tsx | 72 +++ src/pages/Monitor/Job/index.tsx | 2 +- src/pages/Monitor/JobLog/index.tsx | 2 +- src/pages/System/AdminDict/edit.tsx | 152 ++++++ .../System/{Operlog => AdminDict}/index.tsx | 249 +++++----- src/pages/System/AdminDictData/edit.tsx | 252 ++++++++++ src/pages/System/AdminDictData/index.tsx | 439 ++++++++++++++++++ src/pages/System/Config/index.tsx | 2 +- src/pages/System/Dept/index.tsx | 2 +- src/pages/System/Dict/index.tsx | 2 +- src/pages/System/DictData/index.tsx | 2 +- src/pages/System/Menu/index.tsx | 18 +- src/pages/System/Notice/index.tsx | 2 +- src/pages/System/Operlog/detail.tsx | 115 ----- src/pages/System/Post/index.tsx | 2 +- src/pages/System/Role/index.tsx | 6 +- src/pages/System/User/index.tsx | 6 +- src/pages/Tool/Gen/index.tsx | 10 +- src/services/Management/list.ts | 15 + src/services/area/business.ts | 11 + src/services/area/subway.ts | 11 + src/services/{monitor => logs}/logininfor.ts | 12 +- src/services/{monitor => logs}/mobilelog.ts | 10 +- src/services/logs/mobilelogininfor.ts | 68 +++ src/services/{monitor => logs}/operlog.ts | 12 +- src/services/system/admindicdata.ts | 65 +++ src/services/system/admindict.ts | 120 +++++ src/types/Management/list.d.ts | 38 ++ src/types/area/business.d.ts | 30 ++ src/types/area/subway.d.ts | 29 ++ src/types/{monitor => logs}/logininfor.d.ts | 10 +- src/types/{monitor => logs}/mobilelog.d.ts | 2 +- src/types/logs/mobilelogoninfor.ts | 43 ++ src/types/{monitor => logs}/operlog.d.ts | 10 +- 46 files changed, 1895 insertions(+), 392 deletions(-) create mode 100644 src/pages/Area/Business/index.tsx create mode 100644 src/pages/Area/Subway/index.tsx rename src/pages/{Monitor => Logs}/Logininfor/edit.tsx (88%) rename src/pages/{System => Logs}/Logininfor/index.tsx (90%) rename src/pages/{System/Logininfor => Logs/MobileLogininfor}/edit.tsx (88%) rename src/pages/{Monitor/Logininfor => Logs/MobileLogininfor}/index.tsx (95%) rename src/pages/{Monitor => Logs}/Mobilelog/detail.tsx (98%) rename src/pages/{Monitor => Logs}/Mobilelog/index.tsx (84%) rename src/pages/{Monitor => Logs}/Operlog/detail.tsx (98%) rename src/pages/{Monitor => Logs}/Operlog/index.tsx (90%) create mode 100644 src/pages/Management/List/edit.tsx create mode 100644 src/pages/Management/List/index.tsx create mode 100644 src/pages/System/AdminDict/edit.tsx rename src/pages/System/{Operlog => AdminDict}/index.tsx (58%) create mode 100644 src/pages/System/AdminDictData/edit.tsx create mode 100644 src/pages/System/AdminDictData/index.tsx delete mode 100644 src/pages/System/Operlog/detail.tsx create mode 100644 src/services/Management/list.ts create mode 100644 src/services/area/business.ts create mode 100644 src/services/area/subway.ts rename src/services/{monitor => logs}/logininfor.ts (75%) rename src/services/{monitor => logs}/mobilelog.ts (71%) create mode 100644 src/services/logs/mobilelogininfor.ts rename src/services/{monitor => logs}/operlog.ts (72%) create mode 100644 src/services/system/admindicdata.ts create mode 100644 src/services/system/admindict.ts create mode 100644 src/types/Management/list.d.ts create mode 100644 src/types/area/business.d.ts create mode 100644 src/types/area/subway.d.ts rename src/types/{monitor => logs}/logininfor.d.ts (83%) rename src/types/{monitor => logs}/mobilelog.d.ts (97%) create mode 100644 src/types/logs/mobilelogoninfor.ts rename src/types/{monitor => logs}/operlog.d.ts (89%) diff --git a/config/routes.ts b/config/routes.ts index ffad02f..e7ea339 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -55,6 +55,11 @@ export default [ path: '/system/dict-data/index/:id', component: './System/DictData', }, + { + name: '字典数据', + path: '/system/admin-dict-data/index/:id', + component: './System/AdminDictData', + }, { name: '分配用户', path: '/system/role-auth/user/:id', @@ -84,8 +89,8 @@ export default [ }, { name: '编辑表', - path: '/tool/gen/edit', - component: './Tool/Gen/edit', + path: '/tool/gen/edit.tsx', + component: './Tool/Gen/edit.tsx', }, ] }, diff --git a/src/pages/Area/Business/index.tsx b/src/pages/Area/Business/index.tsx new file mode 100644 index 0000000..a20f258 --- /dev/null +++ b/src/pages/Area/Business/index.tsx @@ -0,0 +1,61 @@ +import React, {Fragment, useRef, useState} from "react"; +import { useIntl, FormattedMessage, useAccess, history } from '@umijs/max'; +import { Dropdown, FormInstance, Space, Button, message, Modal } from 'antd'; +import { ActionType, FooterToolbar, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components'; +import { PlusOutlined, DeleteOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined } from '@ant-design/icons'; +import {getCmsAreaList} from "@/services/area/business"; +function ManagementList() { + const access = useAccess(); + + const formTableRef = useRef(); + const actionRef = useRef(); + + const [currentRow, setCurrentRow] = useState() + const [modalVisible, setModalVisible] = useState(false) + + const columns: ProColumns[] = [ + { + title: '商圈名称', + dataIndex: 'commercialAreaName', + valueType: 'text', + hideInSearch: true, + }, + ] + return ( + +
+ + // params 是需要自带的参数 + // 这个参数优先级更高,会覆盖查询表单的参数 + actionRef={actionRef} + formRef={formTableRef} + columns={columns} + request={(params) => + getCmsAreaList({ ...params } as API.AreaBusiness.CircleParams).then((res) => { + const result = { + data: res.rows, + total: res.total, + success: true, + }; + return result; + }) + } + toolBarRender={() => [ + , + ]} + /> +
+
+ ) +} +export default ManagementList diff --git a/src/pages/Area/Subway/index.tsx b/src/pages/Area/Subway/index.tsx new file mode 100644 index 0000000..a3bf47b --- /dev/null +++ b/src/pages/Area/Subway/index.tsx @@ -0,0 +1,61 @@ +import React, {Fragment, useRef, useState} from "react"; +import { useIntl, FormattedMessage, useAccess, history } from '@umijs/max'; +import { Dropdown, FormInstance, Space, Button, message, Modal } from 'antd'; +import { ActionType, FooterToolbar, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components'; +import { PlusOutlined, DeleteOutlined, ExclamationCircleOutlined, DownOutlined, EditOutlined } from '@ant-design/icons'; +import {getCmsLineList} from "@/services/area/subway"; +function ManagementList() { + const access = useAccess(); + + const formTableRef = useRef(); + const actionRef = useRef(); + + const [currentRow, setCurrentRow] = useState() + const [modalVisible, setModalVisible] = useState(false) + + const columns: ProColumns[] = [ + { + title: '线路名称', + dataIndex: 'lineName', + valueType: 'text', + hideInSearch: true, + }, + ] + return ( + +
+ + // params 是需要自带的参数 + // 这个参数优先级更高,会覆盖查询表单的参数 + actionRef={actionRef} + formRef={formTableRef} + columns={columns} + request={(params) => + getCmsLineList({ ...params } as API.AreaSubWay.LineParams).then((res) => { + const result = { + data: res.rows, + total: res.total, + success: true, + }; + return result; + }) + } + toolBarRender={() => [ + , + ]} + /> +
+
+ ) +} +export default ManagementList diff --git a/src/pages/Monitor/Logininfor/edit.tsx b/src/pages/Logs/Logininfor/edit.tsx similarity index 88% rename from src/pages/Monitor/Logininfor/edit.tsx rename to src/pages/Logs/Logininfor/edit.tsx index 5243191..d9429ce 100644 --- a/src/pages/Monitor/Logininfor/edit.tsx +++ b/src/pages/Logs/Logininfor/edit.tsx @@ -10,19 +10,19 @@ import { Form, Modal} from 'antd'; import { useIntl, FormattedMessage } from '@umijs/max'; import { DictValueEnumObj } from '@/components/DictTag'; -export type LogininforFormData = Record & Partial; +export type LogininforFormData = Record & Partial; export type LogininforFormProps = { onCancel: (flag?: boolean, formVals?: LogininforFormData) => void; onSubmit: (values: LogininforFormData) => Promise; open: boolean; - values: Partial; + values: Partial; statusOptions: DictValueEnumObj; }; const LogininforForm: React.FC = (props) => { const [form] = Form.useForm(); - + const { statusOptions, } = props; useEffect(() => { @@ -65,10 +65,10 @@ const LogininforForm: React.FC = (props) => { onOk={handleOk} onCancel={handleCancel} > - = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> @@ -98,7 +98,7 @@ const LogininforForm: React.FC = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> @@ -113,7 +113,7 @@ const LogininforForm: React.FC = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> @@ -128,7 +128,7 @@ const LogininforForm: React.FC = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> @@ -143,7 +143,7 @@ const LogininforForm: React.FC = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> @@ -158,7 +158,7 @@ const LogininforForm: React.FC = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> @@ -174,7 +174,7 @@ const LogininforForm: React.FC = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> @@ -189,7 +189,7 @@ const LogininforForm: React.FC = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> @@ -204,7 +204,7 @@ const LogininforForm: React.FC = (props) => { rules={[ { required: false, - message: , + message: , }, ]} /> diff --git a/src/pages/System/Logininfor/index.tsx b/src/pages/Logs/Logininfor/index.tsx similarity index 90% rename from src/pages/System/Logininfor/index.tsx rename to src/pages/Logs/Logininfor/index.tsx index ee5c1e5..f8648c2 100644 --- a/src/pages/System/Logininfor/index.tsx +++ b/src/pages/Logs/Logininfor/index.tsx @@ -5,16 +5,15 @@ import type { FormInstance } from 'antd'; import { Button, message, Modal } from 'antd'; import { ActionType, FooterToolbar, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components'; import { PlusOutlined, DeleteOutlined, ExclamationCircleOutlined, UnlockOutlined } from '@ant-design/icons'; -import { getLogininforList, removeLogininfor, exportLogininfor, unlockLogininfor, cleanLogininfor } from '@/services/monitor/logininfor'; +import { getLogininforList, removeLogininfor, exportLogininfor, unlockLogininfor, cleanLogininfor } from '@/services/logs/logininfor'; import DictTag from '@/components/DictTag'; -import { getDictValueEnum } from '@/services/system/dict'; /** * 删除节点 * * @param selectedRows */ -const handleRemove = async (selectedRows: API.Monitor.Logininfor[]) => { +const handleRemove = async (selectedRows: API.Logs.Logininfor[]) => { const hide = message.loading('正在删除'); if (!selectedRows) return true; try { @@ -93,21 +92,37 @@ const LogininforTableList: React.FC = () => { const formTableRef = useRef(); const actionRef = useRef(); - const [selectedRows, setSelectedRows] = useState([]); - const [statusOptions, setStatusOptions] = useState([]); + const [selectedRows, setSelectedRows] = useState([]); const access = useAccess(); + const statusOptions = { + 0: { + label: '成功', + key: '0', + value: '0', + text: '成功', + status: 'success', + listClass: 'success' + }, + 1: { + label: '失败', + key: '1', + value: '1', + text: '失败', + status: 'error', + listClass: 'danger' + }, + }; + /** 国际化配置 */ const intl = useIntl(); useEffect(() => { - getDictValueEnum('sys_common_status', true).then((data) => { - setStatusOptions(data); - }); + }, []); - const columns: ProColumns[] = [ + const columns: ProColumns[] = [ { title: , dataIndex: 'infoId', @@ -146,7 +161,6 @@ const LogininforTableList: React.FC = () => { title: , dataIndex: 'status', valueType: 'select', - valueEnum: statusOptions, render: (_, record) => { return (); }, @@ -167,7 +181,7 @@ const LogininforTableList: React.FC = () => { return (
- + headerTitle={intl.formatMessage({ id: 'pages.searchTable.title', defaultMessage: '信息', @@ -183,7 +197,7 @@ const LogininforTableList: React.FC = () => { , ]} request={(params) => - getLogininforList({ ...params } as API.Monitor.LogininforListParams).then((res) => { + getLogininforList({ ...params } as API.Logs.LogininforListParams).then((res) => { const result = { data: res.rows, total: res.total, @@ -293,7 +307,7 @@ const LogininforTableList: React.FC = () => { , ]} request={(params) => - getLogininforList({ ...params } as API.Monitor.LogininforListParams).then((res) => { + getLogininforList({ ...params } as API.Logs.MobileLogininforListParams).then((res) => { const result = { data: res.rows, total: res.total, diff --git a/src/pages/Monitor/Mobilelog/detail.tsx b/src/pages/Logs/Mobilelog/detail.tsx similarity index 98% rename from src/pages/Monitor/Mobilelog/detail.tsx rename to src/pages/Logs/Mobilelog/detail.tsx index 2c6e4a6..a40da45 100644 --- a/src/pages/Monitor/Mobilelog/detail.tsx +++ b/src/pages/Logs/Mobilelog/detail.tsx @@ -4,13 +4,13 @@ import { useIntl, FormattedMessage } from '@umijs/max'; import { DictValueEnumObj } from '@/components/DictTag'; import { getValueEnumLabel } from '@/utils/options'; -export type MobilelogFormData = Record & Partial; +export type MobilelogFormData = Record & Partial; export type MobilelogFormProps = { onCancel: (flag?: boolean, formVals?: MobilelogFormData) => void; onSubmit: (values: MobilelogFormData) => Promise; open: boolean; - values: Partial; + values: Partial; businessTypeOptions: DictValueEnumObj; operatorTypeOptions: DictValueEnumObj; statusOptions: DictValueEnumObj; diff --git a/src/pages/Monitor/Mobilelog/index.tsx b/src/pages/Logs/Mobilelog/index.tsx similarity index 84% rename from src/pages/Monitor/Mobilelog/index.tsx rename to src/pages/Logs/Mobilelog/index.tsx index c771c6a..bf1eb0b 100644 --- a/src/pages/Monitor/Mobilelog/index.tsx +++ b/src/pages/Logs/Mobilelog/index.tsx @@ -1,5 +1,12 @@ import React, { useState, useRef, useEffect, useMemo } from 'react'; -import {addMobilelog, getMobileLogList, removeMobilelog, updateMobilelog} from "@/services/monitor/mobilelog"; +import { + addMobilelog, + exportMobilelog, + getMobileLogList, + removeMobilelog, + updateMobilelog +} from "@/services/logs/mobilelog"; +import type { FormInstance } from 'antd'; import { ActionType, FooterToolbar, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components'; import { useIntl, FormattedMessage, useAccess } from '@umijs/max'; import { PlusOutlined, DeleteOutlined, ExclamationCircleOutlined } from '@ant-design/icons'; @@ -7,13 +14,13 @@ import { Button, message, Modal } from 'antd'; import DictTag from "@/components/DictTag"; import {getDictValueEnum} from "@/services/system/dict"; import UpdateForm from './detail'; -import {addOperlog, removeOperlog, updateOperlog} from "@/services/monitor/operlog"; +import {addOperlog, exportOperlog, removeOperlog, updateOperlog} from "@/services/logs/operlog"; /** * 添加节点 * * @param fields */ -const handleAdd = async (fields: API.Monitor.Operlog) => { +const handleAdd = async (fields: API.Logs.Operlog) => { const hide = message.loading('正在添加'); try { const resp = await addMobilelog({ ...fields }); @@ -35,7 +42,7 @@ const handleAdd = async (fields: API.Monitor.Operlog) => { * * @param fields */ -const handleUpdate = async (fields: API.Monitor.Operlog) => { +const handleUpdate = async (fields: API.Logs.Operlog) => { const hide = message.loading('正在更新'); try { const resp = await updateMobilelog(fields); @@ -58,7 +65,7 @@ const handleUpdate = async (fields: API.Monitor.Operlog) => { * * @param selectedRows */ -const handleRemove = async (selectedRows: API.Monitor.Operlog[]) => { +const handleRemove = async (selectedRows: API.Logs.Operlog[]) => { const hide = message.loading('正在删除'); if (!selectedRows) return true; try { @@ -76,6 +83,25 @@ const handleRemove = async (selectedRows: API.Monitor.Operlog[]) => { return false; } }; +/** + * 导出数据 + * + * + */ +const handleExport = async () => { + const hide = message.loading('正在导出'); + try { + await exportMobilelog(); + hide(); + message.success('导出成功'); + return true; + } catch (error) { + hide(); + message.error('导出失败,请重试'); + return false; + } +}; + const MobileLog: React.FC = () => { // ref @@ -85,8 +111,8 @@ const MobileLog: React.FC = () => { // status const [params, useParams] = useState({}) const [modalVisible, setModalVisible] = useState(false); - const [currentRow, setCurrentRow] = useState(); - const [selectedRows, setSelectedRows] = useState([]); + const [currentRow, setCurrentRow] = useState(); + const [selectedRows, setSelectedRows] = useState([]); // 枚举 const [businessTypeOptions, setBusinessTypeOptions] = useState([]); const [operatorTypeOptions, setOperatorTypeOptions] = useState([]); @@ -106,7 +132,7 @@ const MobileLog: React.FC = () => { }, []); - const columns: ProColumns[] = useMemo(() => [ + const columns: ProColumns[] = useMemo(() => [ { title: '日志主键', dataIndex: 'operId', @@ -180,7 +206,7 @@ const MobileLog: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('system:operlog:edit')} + hidden={!access.hasPerms('logs:mobilelog:edit.tsx')} onClick={() => { setModalVisible(true); setCurrentRow(record); @@ -211,7 +237,7 @@ const MobileLog: React.FC = () => { }, }} request={(params) => - getMobileLogList({ ...params } as API.Monitor.MobilelogListParams).then((res) => { + getMobileLogList({ ...params } as API.Logs.MobilelogListParams).then((res) => { const result = { data: res.rows, total: res.total, @@ -224,7 +250,7 @@ const MobileLog: React.FC = () => { // , ]} request={(params) => - getOperlogList({ ...params } as API.Monitor.OperlogListParams).then((res) => { + getOperlogList({ ...params } as API.Logs.OperlogListParams).then((res) => { const result = { data: res.rows, total: res.total, @@ -311,7 +311,7 @@ const OperlogTableList: React.FC = () => { , + ]} + /> +
+ { + console.log(values) + }} + onCancel={() => { + setModalVisible(false); + setCurrentRow(undefined); + }} + > + + ) +} +export default ManagementList diff --git a/src/pages/Monitor/Job/index.tsx b/src/pages/Monitor/Job/index.tsx index 43030d9..27774f2 100644 --- a/src/pages/Monitor/Job/index.tsx +++ b/src/pages/Monitor/Job/index.tsx @@ -217,7 +217,7 @@ const JobTableList: React.FC = () => { size="small" key="edit" icon = - hidden={!access.hasPerms('monitor:job:edit')} + hidden={!access.hasPerms('monitor:job:edit.tsx')} onClick={() => { setModalVisible(true); setCurrentRow(record); diff --git a/src/pages/Monitor/JobLog/index.tsx b/src/pages/Monitor/JobLog/index.tsx index 46e3313..04e1709 100644 --- a/src/pages/Monitor/JobLog/index.tsx +++ b/src/pages/Monitor/JobLog/index.tsx @@ -173,7 +173,7 @@ const JobLogTableList: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('monitor:job-log:edit')} + hidden={!access.hasPerms('monitor:job-log:edit.tsx')} onClick={() => { setModalOpen(true); setCurrentRow(record); diff --git a/src/pages/System/AdminDict/edit.tsx b/src/pages/System/AdminDict/edit.tsx new file mode 100644 index 0000000..882c1cb --- /dev/null +++ b/src/pages/System/AdminDict/edit.tsx @@ -0,0 +1,152 @@ +import React, { useEffect } from 'react'; +import { + ProForm, + ProFormDigit, + ProFormText, + ProFormRadio, + ProFormTextArea, + } from '@ant-design/pro-components'; +import { Form, Modal} from 'antd'; +import { useIntl, FormattedMessage } from '@umijs/max'; +import { DictValueEnumObj } from '@/components/DictTag'; + +export type DictTypeFormData = Record & Partial; + +export type DictTypeFormProps = { + onCancel: (flag?: boolean, formVals?: DictTypeFormData) => void; + onSubmit: (values: DictTypeFormData) => Promise; + open: boolean; + values: Partial; + statusOptions: DictValueEnumObj; +}; + +const DictTypeForm: React.FC = (props) => { + const [form] = Form.useForm(); + + const { statusOptions } = props; + + useEffect(() => { + form.resetFields(); + form.setFieldsValue({ + dictId: props.values.dictId, + dictName: props.values.dictName, + dictType: props.values.dictType, + status: props.values.status, + createBy: props.values.createBy, + createTime: props.values.createTime, + updateBy: props.values.updateBy, + updateTime: props.values.updateTime, + remark: props.values.remark, + }); + }, [form, props]); + + const intl = useIntl(); + const handleOk = () => { + form.submit(); + }; + const handleCancel = () => { + props.onCancel(); + }; + const handleFinish = async (values: Record) => { + props.onSubmit(values as DictTypeFormData); + }; + + return ( + + + + + ); +}; + +export default DictTypeForm; diff --git a/src/pages/System/Operlog/index.tsx b/src/pages/System/AdminDict/index.tsx similarity index 58% rename from src/pages/System/Operlog/index.tsx rename to src/pages/System/AdminDict/index.tsx index be46709..39aceb1 100644 --- a/src/pages/System/Operlog/index.tsx +++ b/src/pages/System/AdminDict/index.tsx @@ -1,13 +1,13 @@ import React, { useState, useRef, useEffect } from 'react'; -import { useIntl, FormattedMessage, useAccess } from '@umijs/max'; +import { useIntl, FormattedMessage, useAccess, history } from '@umijs/max'; import type { FormInstance } from 'antd'; import { Button, message, Modal } from 'antd'; import { ActionType, FooterToolbar, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components'; import { PlusOutlined, DeleteOutlined, ExclamationCircleOutlined } from '@ant-design/icons'; -import { getOperlogList, removeOperlog, addOperlog, updateOperlog, cleanAllOperlog, exportOperlog } from '@/services/monitor/operlog'; -import UpdateForm from './detail'; -import { getDictValueEnum } from '@/services/system/dict'; +import { getDictTypeList, removeDictType, addDictType, updateDictType, exportDictType } from '@/services/system/admindict'; +import UpdateForm from './edit'; +import { getDictValueEnum } from '@/services/system/admindict'; import DictTag from '@/components/DictTag'; /** @@ -15,10 +15,10 @@ import DictTag from '@/components/DictTag'; * * @param fields */ -const handleAdd = async (fields: API.Monitor.Operlog) => { +const handleAdd = async (fields: API.System.DictType) => { const hide = message.loading('正在添加'); try { - const resp = await addOperlog({ ...fields }); + const resp = await addDictType({ ...fields }); hide(); if (resp.code === 200) { message.success('添加成功'); @@ -38,10 +38,10 @@ const handleAdd = async (fields: API.Monitor.Operlog) => { * * @param fields */ -const handleUpdate = async (fields: API.Monitor.Operlog) => { +const handleUpdate = async (fields: API.System.DictType) => { const hide = message.loading('正在更新'); try { - const resp = await updateOperlog(fields); + const resp = await updateDictType(fields); hide(); if (resp.code === 200) { message.success('更新成功'); @@ -61,11 +61,31 @@ const handleUpdate = async (fields: API.Monitor.Operlog) => { * * @param selectedRows */ -const handleRemove = async (selectedRows: API.Monitor.Operlog[]) => { +const handleRemove = async (selectedRows: API.System.DictType[]) => { const hide = message.loading('正在删除'); if (!selectedRows) return true; try { - const resp = await removeOperlog(selectedRows.map((row) => row.operId).join(',')); + const resp = await removeDictType(selectedRows.map((row) => row.dictId).join(',')); + hide(); + if (resp.code === 200) { + message.success('删除成功,即将刷新'); + } else { + message.error(resp.msg); + } + return true; + } catch (error) { + hide(); + message.error('删除失败,请重试'); + return false; + } +}; + +const handleRemoveOne = async (selectedRow: API.System.DictType) => { + const hide = message.loading('正在删除'); + if (!selectedRow) return true; + try { + const params = [selectedRow.dictId]; + const resp = await removeDictType(params.join(',')); hide(); if (resp.code === 200) { message.success('删除成功,即将刷新'); @@ -80,29 +100,6 @@ const handleRemove = async (selectedRows: API.Monitor.Operlog[]) => { } }; -/** - * 清空所有记录 - * - */ -const handleCleanAll = async () => { - const hide = message.loading('正在清空'); - try { - const resp = await cleanAllOperlog(); - hide(); - if (resp.code === 200) { - message.success('清空成功,即将刷新'); - } else { - message.error(resp.msg); - } - return true; - } catch (error) { - hide(); - message.error('清空失败,请重试'); - return false; - } -}; - - /** * 导出数据 * @@ -111,7 +108,7 @@ const handleCleanAll = async () => { const handleExport = async () => { const hide = message.loading('正在导出'); try { - await exportOperlog(); + await exportDictType(); hide(); message.success('导出成功'); return true; @@ -123,17 +120,15 @@ const handleExport = async () => { }; -const OperlogTableList: React.FC = () => { +const DictTableList: React.FC = () => { const formTableRef = useRef(); const [modalVisible, setModalVisible] = useState(false); const actionRef = useRef(); - const [currentRow, setCurrentRow] = useState(); - const [selectedRows, setSelectedRows] = useState([]); + const [currentRow, setCurrentRow] = useState(); + const [selectedRows, setSelectedRows] = useState([]); - const [businessTypeOptions, setBusinessTypeOptions] = useState([]); - const [operatorTypeOptions, setOperatorTypeOptions] = useState([]); const [statusOptions, setStatusOptions] = useState([]); const access = useAccess(); @@ -142,98 +137,112 @@ const OperlogTableList: React.FC = () => { const intl = useIntl(); useEffect(() => { - getDictValueEnum('sys_oper_type', true).then((data) => { - setBusinessTypeOptions(data); - }); - getDictValueEnum('sys_oper_type', true).then((data) => { - setOperatorTypeOptions(data); - }); - getDictValueEnum('sys_common_status', true).then((data) => { + getDictValueEnum('sys_normal_disable').then((data) => { setStatusOptions(data); }); }, []); - const columns: ProColumns[] = [ + const columns: ProColumns[] = [ { - title: , - dataIndex: 'operId', + title: , + dataIndex: 'dictId', valueType: 'text', hideInSearch: true, }, { - title: , - dataIndex: 'title', + title: , + dataIndex: 'dictName', valueType: 'text', }, { - title: , - dataIndex: 'businessType', - valueType: 'select', - valueEnum: businessTypeOptions, - render: (_, record) => { - return (); + title: , + dataIndex: 'dictType', + valueType: 'text', + render: (dom, record) => { + return ( + { + history.push(`/system/admin-dict-data/index/${record.dictId}`); + }} + > + {dom} + + ); }, }, { - title: , - dataIndex: 'requestMethod', - valueType: 'text', - }, - { - title: , - dataIndex: 'operatorType', - valueType: 'select', - valueEnum: operatorTypeOptions, - render: (_, record) => { - return (); - }, - }, - { - title: , - dataIndex: 'operName', - valueType: 'text', - }, - { - title: , - dataIndex: 'operIp', - valueType: 'text', - }, - { - title: , - dataIndex: 'operLocation', - valueType: 'text', - }, - { - title: , + title: , dataIndex: 'status', valueType: 'select', valueEnum: statusOptions, render: (_, record) => { - return (); + return (); }, }, { - title: , - dataIndex: 'operTime', - valueType: 'dateTime', + title: , + dataIndex: 'remark', + valueType: 'textarea', + hideInSearch: true, + }, + { + title: , + dataIndex: 'createTime', + valueType: 'dateRange', + render: (_, record) => { + return ({record.createTime.toString()} ); + }, + search: { + transform: (value) => { + return { + 'params[beginTime]': value[0], + 'params[endTime]': value[1], + }; + }, + }, }, { title: , dataIndex: 'option', - width: '120px', + width: '220px', valueType: 'option', render: (_, record) => [ , + , ], }, @@ -242,15 +251,15 @@ const OperlogTableList: React.FC = () => { return (
- + headerTitle={intl.formatMessage({ id: 'pages.searchTable.title', defaultMessage: '信息', })} actionRef={actionRef} formRef={formTableRef} - rowKey="operId" - key="operlogList" + rowKey="dictId" + key="dictTypeList" search={{ labelWidth: 120, }} @@ -258,7 +267,7 @@ const OperlogTableList: React.FC = () => { , - , , ]} request={(params) => - getOperlogList({ ...params } as API.Monitor.OperlogListParams).then((res) => { + getDictTypeList({ ...params } as API.System.DictTypeListParams).then((res) => { const result = { data: res.rows, total: res.total, @@ -357,7 +342,7 @@ const OperlogTableList: React.FC = () => { , + , + ], + }, + ]; + + return ( + +
+ + headerTitle={intl.formatMessage({ + id: 'pages.searchTable.title', + defaultMessage: '信息', + })} + actionRef={actionRef} + formRef={formTableRef} + rowKey="dictCode" + key="dataList" + search={{ + labelWidth: 120, + }} + toolBarRender={() => [ + , + , + , + ]} + request={(params) => + getDictDataList({ ...params, dictType } as API.System.DictDataListParams).then((res) => { + const result = { + data: res.rows, + total: res.total, + success: true, + }; + return result; + }) + } + columns={columns} + rowSelection={{ + onChange: (_, selectedRows) => { + setSelectedRows(selectedRows); + }, + }} + /> +
+ {selectedRows?.length > 0 && ( + + + {selectedRows.length} + +
+ } + > + + + )} + { + let success = false; + if (values.dictCode) { + success = await handleUpdate({ ...values } as API.System.DictData); + } else { + success = await handleAdd({ ...values } as API.System.DictData); + } + if (success) { + setModalVisible(false); + setCurrentRow(undefined); + if (actionRef.current) { + actionRef.current.reload(); + } + } + }} + onCancel={() => { + setModalVisible(false); + setCurrentRow(undefined); + }} + open={modalVisible} + values={currentRow || {}} + statusOptions={statusOptions} + /> +
+ ); +}; + +export default DictDataTableList; diff --git a/src/pages/System/Config/index.tsx b/src/pages/System/Config/index.tsx index 1428891..be557a1 100644 --- a/src/pages/System/Config/index.tsx +++ b/src/pages/System/Config/index.tsx @@ -202,7 +202,7 @@ const ConfigTableList: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('system:config:edit')} + hidden={!access.hasPerms('system:config:edit.tsx')} onClick={() => { setModalVisible(true); setCurrentRow(record); diff --git a/src/pages/System/Dept/index.tsx b/src/pages/System/Dept/index.tsx index 3a1c5de..9545fa0 100644 --- a/src/pages/System/Dept/index.tsx +++ b/src/pages/System/Dept/index.tsx @@ -155,7 +155,7 @@ const DeptTableList: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('system:dept:edit')} + hidden={!access.hasPerms('system:dept:edit.tsx')} onClick={() => { getDeptListExcludeChild(record.deptId).then((res) => { if (res.code === 200) { diff --git a/src/pages/System/Dict/index.tsx b/src/pages/System/Dict/index.tsx index ccdbc2a..da398ee 100644 --- a/src/pages/System/Dict/index.tsx +++ b/src/pages/System/Dict/index.tsx @@ -211,7 +211,7 @@ const DictTableList: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('system:dictType:edit')} + hidden={!access.hasPerms('system:dictType:edit.tsx')} onClick={() => { setModalVisible(true); setCurrentRow(record); diff --git a/src/pages/System/DictData/index.tsx b/src/pages/System/DictData/index.tsx index 2bf1069..4b8d49d 100644 --- a/src/pages/System/DictData/index.tsx +++ b/src/pages/System/DictData/index.tsx @@ -256,7 +256,7 @@ const DictDataTableList: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('system:data:edit')} + hidden={!access.hasPerms('system:data:edit.tsx')} onClick={() => { setModalVisible(true); setCurrentRow(record); diff --git a/src/pages/System/Menu/index.tsx b/src/pages/System/Menu/index.tsx index 95ca2de..a50dd65 100644 --- a/src/pages/System/Menu/index.tsx +++ b/src/pages/System/Menu/index.tsx @@ -19,9 +19,9 @@ import DictTag from '@/components/DictTag'; const handleAdd = async (fields: API.System.Menu) => { const hide = message.loading('正在添加'); try { - await addMenu({ ...fields }); + const resData = await addMenu({ ...fields }); hide(); - message.success('添加成功'); + message.success(resData.msg || '添加成功'); return true; } catch (error) { hide(); @@ -38,9 +38,9 @@ const handleAdd = async (fields: API.System.Menu) => { const handleUpdate = async (fields: API.System.Menu) => { const hide = message.loading('正在配置'); try { - await updateMenu(fields); + const resData = await updateMenu(fields); hide(); - message.success('配置成功'); + message.success(resData.msg || '配置成功'); return true; } catch (error) { hide(); @@ -58,9 +58,9 @@ const handleRemove = async (selectedRows: API.System.Menu[]) => { const hide = message.loading('正在删除'); if (!selectedRows) return true; try { - await removeMenu(selectedRows.map((row) => row.menuId).join(',')); + const resData = await removeMenu(selectedRows.map((row) => row.menuId).join(',')); hide(); - message.success('删除成功,即将刷新'); + message.success(resData.msg || '删除成功,即将刷新'); return true; } catch (error) { hide(); @@ -74,9 +74,9 @@ const handleRemoveOne = async (selectedRow: API.System.Menu) => { if (!selectedRow) return true; try { const params = [selectedRow.menuId]; - await removeMenu(params.join(',')); + const resData = await removeMenu(params.join(',')); hide(); - message.success('删除成功,即将刷新'); + message.success(resData.msg || '删除成功,即将刷新'); return true; } catch (error) { hide(); @@ -161,7 +161,7 @@ const MenuTableList: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('system:menu:edit')} + hidden={!access.hasPerms('system:menu:edit.tsx')} onClick={() => { setModalVisible(true); setCurrentRow(record); diff --git a/src/pages/System/Notice/index.tsx b/src/pages/System/Notice/index.tsx index ea5b063..cb445d0 100644 --- a/src/pages/System/Notice/index.tsx +++ b/src/pages/System/Notice/index.tsx @@ -193,7 +193,7 @@ const NoticeTableList: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('system:notice:edit')} + hidden={!access.hasPerms('system:notice:edit.tsx')} onClick={() => { setModalVisible(true); setCurrentRow(record); diff --git a/src/pages/System/Operlog/detail.tsx b/src/pages/System/Operlog/detail.tsx deleted file mode 100644 index f5b4f65..0000000 --- a/src/pages/System/Operlog/detail.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import React from 'react'; -import { Descriptions, Modal } from 'antd'; -import { useIntl, FormattedMessage } from '@umijs/max'; -import { DictValueEnumObj } from '@/components/DictTag'; -import { getValueEnumLabel } from '@/utils/options'; - -export type OperlogFormData = Record & Partial; - -export type OperlogFormProps = { - onCancel: (flag?: boolean, formVals?: OperlogFormData) => void; - onSubmit: (values: OperlogFormData) => Promise; - open: boolean; - values: Partial; - businessTypeOptions: DictValueEnumObj; - operatorTypeOptions: DictValueEnumObj; - statusOptions: DictValueEnumObj; -}; - -const OperlogDetailForm: React.FC = (props) => { - - const { values, businessTypeOptions, operatorTypeOptions, statusOptions, } = props; - - const intl = useIntl(); - const handleOk = () => { - console.log("handle ok"); - }; - const handleCancel = () => { - props.onCancel(); - }; - - return ( - - - } - > - {`${values.title}/${getValueEnumLabel(businessTypeOptions, values.businessType)}`} - - } - > - {values.requestMethod} - - } - > - {`${values.operName}/${values.operIp}`} - - } - > - {getValueEnumLabel(operatorTypeOptions, values.operatorType)} - - } - > - {values.method} - - } - > - {values.operUrl} - - } - > - {values.operParam} - - } - > - {values.jsonResult} - - } - > - {values.errorMsg} - - } - > - {getValueEnumLabel(statusOptions, values.status)} - - } - > - {values.operTime?.toString()} - - - - ); -}; - -export default OperlogDetailForm; diff --git a/src/pages/System/Post/index.tsx b/src/pages/System/Post/index.tsx index ad98aae..2b6e7f7 100644 --- a/src/pages/System/Post/index.tsx +++ b/src/pages/System/Post/index.tsx @@ -183,7 +183,7 @@ const PostTableList: React.FC = () => { type="link" size="small" key="edit" - hidden={!access.hasPerms('system:post:edit')} + hidden={!access.hasPerms('system:post:edit.tsx')} onClick={() => { setModalVisible(true); setCurrentRow(record); diff --git a/src/pages/System/Role/index.tsx b/src/pages/System/Role/index.tsx index ea15b2e..e3b6e7c 100644 --- a/src/pages/System/Role/index.tsx +++ b/src/pages/System/Role/index.tsx @@ -241,7 +241,7 @@ const RoleTableList: React.FC = () => { size="small" key="edit" icon= - hidden={!access.hasPerms('system:role:edit')} + hidden={!access.hasPerms('system:role:edit.tsx')} onClick={() => { getRoleMenuList(record.roleId).then((res) => { if (res.code === 200) { @@ -293,12 +293,12 @@ const RoleTableList: React.FC = () => { { label: '数据权限', key: 'datascope', - disabled: !access.hasPerms('system:role:edit'), + disabled: !access.hasPerms('system:role:edit.tsx'), }, { label: '分配用户', key: 'authUser', - disabled: !access.hasPerms('system:role:edit'), + disabled: !access.hasPerms('system:role:edit.tsx'), }, ], onClick: ({ key }: any) => { diff --git a/src/pages/System/User/index.tsx b/src/pages/System/User/index.tsx index 6435787..6343708 100644 --- a/src/pages/System/User/index.tsx +++ b/src/pages/System/User/index.tsx @@ -255,7 +255,7 @@ const UserTableList: React.FC = () => { size="small" key="edit" icon= - hidden={!access.hasPerms('system:user:edit')} + hidden={!access.hasPerms('system:user:edit.tsx')} onClick={async () => { fetchUserInfo(record.userId); const treeData = await getDeptTree({}); @@ -299,12 +299,12 @@ const UserTableList: React.FC = () => { { label: , key: 'reset', - disabled: !access.hasPerms('system:user:edit'), + disabled: !access.hasPerms('system:user:edit.tsx'), }, { label: '分配角色', key: 'authRole', - disabled: !access.hasPerms('system:user:edit'), + disabled: !access.hasPerms('system:user:edit.tsx'), }, ], onClick: ({ key }) => { diff --git a/src/pages/Tool/Gen/index.tsx b/src/pages/Tool/Gen/index.tsx index 9db00d7..7a546ed 100644 --- a/src/pages/Tool/Gen/index.tsx +++ b/src/pages/Tool/Gen/index.tsx @@ -133,7 +133,7 @@ const GenCodeView: React.FC = () => { type="link" size="small" key="preview" - hidden={!access.hasPerms('tool:gen:edit')} + hidden={!access.hasPerms('tool:gen:edit.tsx')} onClick={() => { previewCode(record.tableId).then((res) => { if (res.code === 200) { @@ -151,7 +151,7 @@ const GenCodeView: React.FC = () => { type="link" size="small" key="config" - hidden={!access.hasPerms('tool:gen:edit')} + hidden={!access.hasPerms('tool:gen:edit.tsx')} onClick={() => { history.push(`/tool/gen/edit?id=${record.tableId}`); }} @@ -187,7 +187,7 @@ const GenCodeView: React.FC = () => { type="link" size="small" key="sync" - hidden={!access.hasPerms('tool:gen:edit')} + hidden={!access.hasPerms('tool:gen:edit.tsx')} onClick={() => { syncDbInfo(record.tableName).then((res) => { if (res.code === 200) { @@ -204,7 +204,7 @@ const GenCodeView: React.FC = () => { type="link" size="small" key="gencode" - hidden={!access.hasPerms('tool:gen:edit')} + hidden={!access.hasPerms('tool:gen:edit.tsx')} onClick={() => { if (record.genType === '1') { genCode(record.tableName).then((res) => { @@ -240,7 +240,7 @@ const GenCodeView: React.FC = () => {