From ece7c82a80ee8ead2523b6667b84329b552ec70c Mon Sep 17 00:00:00 2001 From: lq1405 <2769838458@qq.com> Date: Tue, 14 Jan 2025 14:44:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9Laitool=E7=9A=84=E8=BD=AF?= =?UTF-8?q?=E4=BB=B6=E6=8E=A7=E5=88=B6=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/access.ts | 2 +- src/pages/Machine/AddMachineForm/index.tsx | 46 ++-------- src/pages/Machine/MachineManagement/index.tsx | 87 ++++++++++++++----- src/pages/Machine/ModifyMachine/index.tsx | 6 +- src/services/services/machine.ts | 6 +- 5 files changed, 77 insertions(+), 70 deletions(-) diff --git a/src/access.ts b/src/access.ts index 581abd9..7a8a872 100644 --- a/src/access.ts +++ b/src/access.ts @@ -25,7 +25,7 @@ export default function access(initialState: { currentUser?: API.CurrentUser } | canAddMachine: true, canEditMachine: false, canDeleteMachine: false, - canUpgradeMachine: false, + canUpgradeMachine: true, canDisableMachine: true } as AccessType.AccessType; diff --git a/src/pages/Machine/AddMachineForm/index.tsx b/src/pages/Machine/AddMachineForm/index.tsx index b8c996a..af95d0b 100644 --- a/src/pages/Machine/AddMachineForm/index.tsx +++ b/src/pages/Machine/AddMachineForm/index.tsx @@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react'; import { Form, Input, Button, FormInstance, Spin, message, Select, DatePicker, InputNumber } from 'antd'; import moment from 'moment'; import { AddMachineData } from '@/services/services/machine'; -import { useModel } from '@umijs/max'; +import { useAccess, useModel } from '@umijs/max'; interface AddMachineModalProps { setFormRef: (form: FormInstance) => void; @@ -13,6 +13,7 @@ const AddMachineForm: React.FC = ({ setFormRef }) => { const [loading, setLoading] = useState(false); const [messageApi, messageHolder] = message.useMessage(); const { initialState } = useModel('@@initialState'); + const access = useAccess(); useEffect(() => { setFormRef(form); @@ -28,9 +29,8 @@ const AddMachineForm: React.FC = ({ setFormRef }) => { }, [form, setFormRef]); const onFinish = async (values: MachineModel.AddMachineParams) => { - if (values.useStatus == 0 && !values.deactivationTime) { - messageApi.error("试用机器码需要设置停用时间") - return; + if (values.userId == null) { + messageApi.error("请填写所属用户ID"); } setLoading(true); try { @@ -60,48 +60,12 @@ const AddMachineForm: React.FC = ({ setFormRef }) => { > - - label="使用状态" - name="useStatus" - rules={[{ required: true, message: 'Please input the role name!' }]} - > - - - - label="状态" - name="status" - rules={[{ required: true, message: 'Please input the role name!' }]} - > - - - - - label="停用时间" - name="deactivationTime" - > - - label="所属用户ID" name="userId" rules={[{ required: true, message: 'Please input the role name!' }]} > - + label="备注" diff --git a/src/pages/Machine/MachineManagement/index.tsx b/src/pages/Machine/MachineManagement/index.tsx index f72365f..4c23e98 100644 --- a/src/pages/Machine/MachineManagement/index.tsx +++ b/src/pages/Machine/MachineManagement/index.tsx @@ -4,13 +4,13 @@ import TemplateContainer from "@/pages/TemplateContainer"; import { DeactivationMachine, MachinePermanent, QueryMachineList } from "@/services/services/machine"; import { FormatDate } from "@/util/time"; import { useAccess, useModel } from "@umijs/max"; -import { Button, Form, Input, message, Modal, Select, SelectProps, Spin, Table, Tag } from "antd"; +import { Button, Dropdown, Form, Input, Menu, message, Modal, Select, SelectProps, Spin, Table, Tag } from "antd"; import { ColumnsType, TablePaginationConfig } from "antd/es/table"; import { FilterValue, SorterResult, TableCurrentDataSource } from "antd/es/table/interface"; import { delay, set } from "lodash"; import { useEffect, useState } from "react"; import ModifyMachine from "../ModifyMachine"; -import { PlusOutlined } from "@ant-design/icons"; +import { DownOutlined, EditOutlined, MenuOutlined, MoreOutlined, PlusOutlined, SafetyCertificateOutlined, StopOutlined } from "@ant-design/icons"; import AddMachineForm from "../AddMachineForm"; const MachineManagement: React.FC = () => { @@ -35,6 +35,7 @@ const MachineManagement: React.FC = () => { const [openAddModal, setOpenAddModal] = useState(false); const [spinning, setSpinning] = useState(false); const [spinTip, setSpinTip] = useState(''); + const [modal, modalHolder] = Modal.useModal(); useEffect(() => { QueryMachineList(tableParams, form.getFieldsValue()) @@ -57,12 +58,23 @@ const MachineManagement: React.FC = () => { }, []); async function SetMachinePermanent(id: string): Promise { - setSpinning(true); - setSpinTip('正在设置为永久。。。'); + try { - // + let cofirmRes = await modal.confirm({ + title: '激活提示', + content: '即将同步软件控制权限信息至绑定机器码,会消耗一次授权次数,是否继续?', + okText: '确定', + cancelText: '取消', + }); + if (!cofirmRes) { + messageApi.warning("取消操作"); + return; + } + + setSpinning(true); + setSpinTip('正在激活/同步。。。'); await MachinePermanent(id); - messageApi.success('设置为永久成功'); + messageApi.success('激活同步信息成功'); setSpinning(false); // 重新加载数据 await QueryMachineBasic(form.getFieldsValue(), tableParams.pagination); @@ -166,16 +178,14 @@ const MachineManagement: React.FC = () => { render: (text) => FormatDate(text), width: '160px', }, - { - title: '使用状态', - dataIndex: 'useStatus', - render: (text, record) => {record.useStatus === 1 ? '永久' : '试用'}, - width: '100px', - }, { title: '状态', dataIndex: 'status', - render: (text, record) => {record.status === 1 ? '激活' : '冻结'}, + render: (text, record) => ( + + {record.status === 1 ? '激活' : '冻结'} + + ), width: '100px', }, { @@ -190,17 +200,45 @@ const MachineManagement: React.FC = () => { }, { title: '操作', - width: '200px', - render: (text, record) => ( -
- - - -
- ), + width: 100, + render: (text, record) => { + const menuItems = [ + { + key: "edit", + icon: , + hidden: !access.isAdminOrSuperAdmin, + label: "编辑", + onClick: () => { + setOpenModal(true); + setFormRef(form); + setId(record.id); + }, + }, + { + key: "permanent", + icon: , + hidden: !access.canUpgradeMachine, + style: { + color: '#4caaff' + }, + label: "激活", + onClick: async () => await SetMachinePermanent(record.id), + }, + { + key: "disable", + icon: , + hidden: !access.canDisableMachine, + danger: true, + label: "停用", + onClick: async () => await ChangeDeactivationMachine(record.id), + }, + ].filter(Boolean); + return ( + +