Commit 6816cd67 authored by littleforest's avatar littleforest

feat: add API

parent a95cf7e2
...@@ -38,3 +38,4 @@ screenshot ...@@ -38,3 +38,4 @@ screenshot
.eslintcache .eslintcache
build build
node_modules
import { CreatedAccount, getRole, getUserMessage } from '@/services/chatGLM/api';
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import type { ActionType } from '@ant-design/pro-components'; import type { ActionType } from '@ant-design/pro-components';
import { PageContainer } from '@ant-design/pro-components'; import { PageContainer } from '@ant-design/pro-components';
import { ProTable } from '@ant-design/pro-components'; import { ProTable } from '@ant-design/pro-components';
import { Button } from 'antd'; import { Button, Col, Divider, Form, Input, Modal, Radio, Row, Switch, message } from 'antd';
import { useRef } from 'react'; import { isEmpty } from 'lodash';
import { useRef, useState } from 'react';
import request from 'umi-request'; import request from 'umi-request';
const { Item } = Form;
const columns: any[] = [ const columns: any[] = [
{ {
title: '用户', title: '用户',
...@@ -65,29 +69,180 @@ const columns: any[] = [ ...@@ -65,29 +69,180 @@ const columns: any[] = [
const UserManage = () => { const UserManage = () => {
const actionRef = useRef<ActionType>(); const actionRef = useRef<ActionType>();
const [isModalOpen, setIsModalOpen] = useState(false);
const [accountForm] = useState({
id: '',
Name: '',
Phone: '',
Role: '',
IsActive: true,
Password: '',
});
const [roles, setRoles] = useState([]);
const [loading, setLoading] = useState(false);
const [accountModalName, setAccountModalName] = useState('新建账号');
const [form] = Form.useForm();
const layout = {
labelCol: { span: 4 },
wrapperCol: { span: 18 },
};
const showModal = () => {
getRole()
.then((res) => {
console.log(res);
if (!isEmpty(res)) {
setRoles(res);
setIsModalOpen(true);
}
})
.catch((err) => {
message.error('获取用户权限失败,请重试');
});
};
const handleOk = () => {
setIsModalOpen(false);
};
const handleModalCancel = () => {
form.resetFields();
setIsModalOpen(false);
};
const createdAccount = (values: any) => {
setLoading(true);
const data = {
role: values.roles,
Phone: values.phoneNumber,
Password: values,
};
CreatedAccount(values)
.then((res) => {
setLoading(false);
})
.catch((error) => {
setLoading(false);
});
};
const onHandleClickAccountFinish = (values: any) => {
if (accountModalName === '添加账号') {
createdAccount(values);
}
};
const onHandleClickAccountChange = (values: any) => {
console.log(values);
};
const validatePhoneNumber = (_, value: any) => {
const phoneNumberRegex = /^1[3456789]\d{9}$/;
if (!value || phoneNumberRegex.test(value)) {
return Promise.resolve();
}
return Promise.reject(new Error('请输入有效的手机号码!'));
};
const validatePassword = (_, value: any) => {
const letterNumberRegex = /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^0-9a-zA-Z])([a-zA-Z0-9\S]+)$/;
const lowercaseRegex = /[a-z]/;
const uppercaseRegex = /[A-Z]/;
const specialCharacterRegex = /[^0-9a-zA-Z]/;
if (
letterNumberRegex.test(value) &&
lowercaseRegex.test(value) &&
uppercaseRegex.test(value) &&
specialCharacterRegex.test(value)
) {
return Promise.resolve();
}
return Promise.reject(new Error('密码格式不正确!'));
};
return ( return (
<PageContainer> <PageContainer>
<Modal
title={`${accountModalName}`}
open={isModalOpen}
onOk={handleOk}
onCancel={handleModalCancel}
footer={null}
maskClosable={false}
>
<Form
{...layout}
form={form}
onFinish={onHandleClickAccountFinish}
onValuesChange={onHandleClickAccountChange}
labelAlign="right"
name="accountSetting"
initialValues={accountForm}
>
<Item
name={'Phone'}
label="用户账号"
rules={[
{ required: true, message: '请输入手机号!' },
{ validator: validatePhoneNumber },
]}
>
<Input />
</Item>
<Item
name={'Password'}
label="密码"
rules={[{ required: true, message: '请输入密码!' }, { validator: validatePassword }]}
>
<Input />
</Item>
<Item name={'Role'} label="角色" rules={[{ required: true, message: '请设置你的角色' }]}>
<Radio.Group>
{roles.map((item) => {
return (
<Radio key={item} value={`${item}`}>
{item}
</Radio>
);
})}
</Radio.Group>
</Item>
<Item name={'Name'} label="姓名" rules={[{ required: true, message: '请输入你的姓名' }]}>
<Input placeholder="请输入(必填)" />
</Item>
<Item name={'isActive'} label="是否启用">
<Switch />
</Item>
<Divider />
<Row justify={'end'} gutter={8}>
<Col>
<Item key={'cancelButton'} noStyle={true}>
<Button key="back" onClick={handleModalCancel}>
取消
</Button>
</Item>
</Col>
<Col>
<Item key={'saveButton'} noStyle={true}>
<Button key="submit" type="primary" loading={loading} htmlType="submit">
保存
</Button>
</Item>
</Col>
</Row>
</Form>
</Modal>
<ProTable <ProTable
columns={columns} columns={columns}
actionRef={actionRef} actionRef={actionRef}
cardBordered cardBordered
request={async (params = {}, sort, filter) => { request={async (params = {}, sort, filter) => {
const defaultParams = { const defaultParams = {
name: '', Name: '',
Enabled: false, Enabled: null,
PageSize: 9, PageSize: 10,
PageIndex: 1, PageIndex: 1,
}; };
return request<{ return getUserMessage(defaultParams);
data: any[];
}>('https://glm-mangement-api.baibaomen.com/User/page', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
__tenant: '3a0a90fe-9a0d-70f4-200d-a80a41fb6195',
},
data: defaultParams,
});
}} }}
rowKey="id" rowKey="id"
pagination={{ pagination={{
...@@ -102,6 +257,8 @@ const UserManage = () => { ...@@ -102,6 +257,8 @@ const UserManage = () => {
key="button" key="button"
icon={<PlusOutlined />} icon={<PlusOutlined />}
onClick={() => { onClick={() => {
setAccountModalName('添加账号');
showModal();
actionRef.current?.reload(); actionRef.current?.reload();
}} }}
type="primary" type="primary"
......
...@@ -46,3 +46,25 @@ export function GetChatGLMToken(): Promise<string> { ...@@ -46,3 +46,25 @@ export function GetChatGLMToken(): Promise<string> {
method: 'POST', method: 'POST',
}); });
} }
export const CreatedAccount = (params: any): Promise<string> => {
return request('https://glm-mangement-api.baibaomen.com/User/create', {
method: 'POST',
params
});
}
export const getRole = (params?: any): Promise<string> => {
return request('https://glm-mangement-api.baibaomen.com/User/roles', {
method: 'POST',
params
})
}
export const getUserMessage = (params?: any): Promise<string> => {
return request('https://glm-mangement-api.baibaomen.com/User/page', {
method: 'POST',
data: params
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment