vdi/web-fe/src/pages/terminal/mod/bindUser/index.tsx

189 lines
5.2 KiB
TypeScript
Raw Normal View History

2025-08-11 09:19:58 +00:00
/* eslint-disable array-callback-return */
2025-08-07 10:15:11 +00:00
// index.tsx
2025-08-11 09:19:58 +00:00
import { ERROR_CODE } from '@/constants/constants';
import { bindUserAdd, getBindUserList } from '@/services/terminal';
import { getGroupTree } from '@/services/userList';
import { Button, Form, message, Modal } from 'antd';
import React, { useEffect, useState } from 'react';
2025-08-07 10:15:11 +00:00
import SelectedTable from '../selectedTable';
import styles from './index.less';
interface UserEditModalProps {
// visible: boolean;
2025-08-11 09:19:58 +00:00
// orgTreeData?: User.OrganizationNode[];
2025-08-07 10:15:11 +00:00
onCancel: () => void;
2025-08-11 09:19:58 +00:00
onOk: (values?: any) => void;
2025-08-07 10:15:11 +00:00
confirmLoading?: boolean;
dataDetial?: Termial.ModalBaseNode;
selectedOrg?: number;
}
const BindUserModal: React.FC<UserEditModalProps> = ({
2025-08-11 09:19:58 +00:00
// orgTreeData,
2025-08-07 10:15:11 +00:00
onCancel,
onOk,
confirmLoading = false,
dataDetial,
}) => {
2025-08-11 09:19:58 +00:00
const { recordData, visible } = dataDetial || {};
const { device_id, device_group_id } = recordData || {};
const [orgTreeData, setOrgTreeData] = useState<User.OrganizationNode[]>([]);
2025-08-07 10:15:11 +00:00
const [form] = Form.useForm();
2025-08-11 09:19:58 +00:00
const getGroupList = async () => {
const params = {
type: 1,
};
try {
const result = await getGroupTree(params);
console.log('result=====', result);
const { code, data = [] } = result || {};
if (code === ERROR_CODE) {
if (data.length > 0) {
const { children = [] } = data[0] || {};
setOrgTreeData(children);
}
} else {
message.error(result.message || '获取终端分组失败');
}
} catch (err) {
message.error('获取终端分组失败');
}
};
2025-08-07 10:15:11 +00:00
useEffect(() => {
2025-08-11 09:19:58 +00:00
getGroupList();
}, [visible]);
useEffect(() => {
if (!device_id) return;
const payload = { device_id: device_id };
getBindUserList(payload).then((res: any) => {
console.log('res========', res);
const { code, data = [] } = res || {};
if (code === ERROR_CODE) {
if (data && data.length > 0) {
const list: any[] = [];
data.map((item: any) => {
const { type, user_id, user_name, user_group_id, user_group_name } =
item || {};
if (type === 1) {
list.push({ record_id: user_id, name: user_name, ...item });
} else {
list.push({
record_id: user_group_id,
name: user_group_name,
...item,
});
}
});
const initialValues = { user_list: list, status: 1 };
form.setFieldsValue(initialValues);
}
}
});
}, [visible, form, recordData]);
2025-08-07 10:15:11 +00:00
const handleOk = async () => {
try {
const values = await form.validateFields();
2025-08-11 09:19:58 +00:00
const { user_list = [] } = values || {};
const list: any[] = [];
if (user_list && user_list.length > 0) {
user_list.forEach((item: any) => {
const { record_id, type, id } = item || {};
if (type === 1) {
// 用户
list.push({
user_id: record_id,
id: id,
device_id,
device_group_id,
type: type,
});
} else {
//用户分组
list.push({
user_group_id: record_id,
id: id,
device_id: device_id,
device_group_id,
type: type,
});
}
});
const payload = {
data: list,
};
bindUserAdd(payload)
.then(() => {
message.success('绑定成功');
onOk();
})
.catch(() => {});
}
console.log('list=====', list);
onOk(list);
2025-08-07 10:15:11 +00:00
} catch (error) {
message.error('请检查表单字段');
}
};
return (
<Modal
title={'绑定用户'}
open={visible}
onCancel={onCancel}
onOk={handleOk}
confirmLoading={confirmLoading}
width={1200}
maskClosable={false}
centered={true}
destroyOnHidden={true}
cancelText="取消"
okText="确定"
footer={
<div style={{ display: 'flex', justifyContent: 'right' }}>
<Button
type="primary"
onClick={handleOk}
style={{ marginRight: '20px' }}
>
</Button>
<Button onClick={onCancel} style={{ marginRight: '20px' }}>
</Button>
</div>
}
>
<div className={styles.model_content}>
<Form
form={form}
labelCol={{ span: 4 }}
wrapperCol={{ span: 19 }}
layout="horizontal"
style={{ paddingTop: '20px', paddingBottom: '20px' }}
>
<Form.Item
name="user_list"
label="选择用户"
2025-08-11 09:19:58 +00:00
rules={[{ required: true, message: '请选择绑定用户' }]}
2025-08-07 10:15:11 +00:00
>
<SelectedTable orgTreeData={orgTreeData} />
</Form.Item>
2025-08-11 09:19:58 +00:00
{/* <Form.Item
2025-08-07 10:15:11 +00:00
name="description"
label="描述内容"
rules={[{ required: false, message: '请输入描述内容' }]}
>
<Input.TextArea rows={4} />
2025-08-11 09:19:58 +00:00
</Form.Item> */}
2025-08-07 10:15:11 +00:00
</Form>
</div>
</Modal>
);
};
export default BindUserModal;