feat(前端):终端绑定用户
parent
36f8dca46f
commit
f95d382c30
|
@ -159,7 +159,7 @@ const UserListPage: React.FC = () => {
|
||||||
try {
|
try {
|
||||||
const { id } = device || {};
|
const { id } = device || {};
|
||||||
const payload = {
|
const payload = {
|
||||||
ids: id ? id : selectedRowKeys,
|
id: id ? id : selectedRowKeys,
|
||||||
};
|
};
|
||||||
const res: any = await deleteDevice(payload);
|
const res: any = await deleteDevice(payload);
|
||||||
const { code } = res || {};
|
const { code } = res || {};
|
||||||
|
@ -390,6 +390,14 @@ const UserListPage: React.FC = () => {
|
||||||
getDataSource();
|
getDataSource();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onBindImageSave = () => {
|
||||||
|
setBindImageDta({
|
||||||
|
recordData: {},
|
||||||
|
visible: false,
|
||||||
|
});
|
||||||
|
getDataSource();
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.user_content}>
|
<div className={styles.user_content}>
|
||||||
<div className={styles.left_content}>
|
<div className={styles.left_content}>
|
||||||
|
@ -552,7 +560,9 @@ const UserListPage: React.FC = () => {
|
||||||
visible: false,
|
visible: false,
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
onOk={() => {onBindUserSave()}}
|
onOk={() => {
|
||||||
|
onBindUserSave();
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{bindImageDta.visible && (
|
{bindImageDta.visible && (
|
||||||
|
@ -564,7 +574,9 @@ const UserListPage: React.FC = () => {
|
||||||
visible: false,
|
visible: false,
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
onOk={() => {}}
|
onOk={() => {
|
||||||
|
onBindImageSave();
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* eslint-disable @typescript-eslint/no-use-before-define */
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
||||||
import type { PopoverProps } from 'antd';
|
import type { PopoverProps } from 'antd';
|
||||||
import { Button, Popconfirm, Popover, Space } from 'antd';
|
import { Button, Popconfirm, Popover, Space, Tooltip } from 'antd';
|
||||||
import type { ColumnsType } from 'antd/es/table';
|
import type { ColumnsType } from 'antd/es/table';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import CustomTable from '../selectedTable/table';
|
import CustomTable from '../selectedTable/table';
|
||||||
|
@ -50,14 +50,13 @@ const SelectedTable: React.FC<SelectedTableProps> = (props) => {
|
||||||
|
|
||||||
const onHandleOk = () => {
|
const onHandleOk = () => {
|
||||||
const list: any[] = [];
|
const list: any[] = [];
|
||||||
// 用户
|
// 镜像
|
||||||
(selectedRows || []).forEach((item) => {
|
(selectedRows || []).forEach((item) => {
|
||||||
list.push({
|
list.push({
|
||||||
id: item.image_id,
|
record_id: item.id,
|
||||||
name: item.image_name,
|
image_name: item.image_name,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
setTableData(list);
|
setTableData(list);
|
||||||
onBindImageChange(list);
|
onBindImageChange(list);
|
||||||
onHnadleCancel();
|
onHnadleCancel();
|
||||||
|
@ -75,13 +74,13 @@ const SelectedTable: React.FC<SelectedTableProps> = (props) => {
|
||||||
const handleDelete = (record?: any) => {
|
const handleDelete = (record?: any) => {
|
||||||
if (record) {
|
if (record) {
|
||||||
// 单个删除
|
// 单个删除
|
||||||
const { id } = record || {};
|
const { record_id } = record || {};
|
||||||
const newData = tableData.filter((item) => item.id !== id);
|
const newData = tableData.filter((item) => item.record_id !== record_id);
|
||||||
setTableData(newData);
|
setTableData(newData);
|
||||||
} else {
|
} else {
|
||||||
// 批量删除
|
// 批量删除
|
||||||
const newData = tableData.filter(
|
const newData = tableData.filter(
|
||||||
(item) => !bindTableKeys.includes(item.id),
|
(item) => !bindTableKeys.includes(item.record_id),
|
||||||
);
|
);
|
||||||
setTableData(newData);
|
setTableData(newData);
|
||||||
setSelectedRowKeys([]);
|
setSelectedRowKeys([]);
|
||||||
|
@ -129,12 +128,16 @@ const SelectedTable: React.FC<SelectedTableProps> = (props) => {
|
||||||
title: '镜像名称',
|
title: '镜像名称',
|
||||||
dataIndex: 'image_name',
|
dataIndex: 'image_name',
|
||||||
key: 'image_name',
|
key: 'image_name',
|
||||||
|
render: (text) => {
|
||||||
|
return <Tooltip>{text || '--'}</Tooltip>;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
key: 'action',
|
key: 'action',
|
||||||
|
width: 150,
|
||||||
render: (_, record) => (
|
render: (_, record) => (
|
||||||
<Button type="link" danger onClick={() => handleDelete(record)}>
|
<Button type="link" onClick={() => handleDelete(record)}>
|
||||||
删除
|
删除
|
||||||
</Button>
|
</Button>
|
||||||
),
|
),
|
||||||
|
@ -181,7 +184,7 @@ const SelectedTable: React.FC<SelectedTableProps> = (props) => {
|
||||||
onDelete={handleDelete}
|
onDelete={handleDelete}
|
||||||
columns={getColumns()}
|
columns={getColumns()}
|
||||||
scrollY={400}
|
scrollY={400}
|
||||||
rowKey="id"
|
rowKey="record_id"
|
||||||
pagination={false}
|
pagination={false}
|
||||||
rowSelection={{
|
rowSelection={{
|
||||||
bindTableKeys,
|
bindTableKeys,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// index.tsx
|
// index.tsx
|
||||||
import { ERROR_CODE } from '@/constants/constants';
|
import { ERROR_CODE } from '@/constants/constants';
|
||||||
import { getBindImageList } from '@/services/terminal';
|
import { getBindImageAdd, getBindImageList } from '@/services/terminal';
|
||||||
import { Button, Form, message, Modal } from 'antd';
|
import { Button, Form, message, Modal } from 'antd';
|
||||||
import React, { useEffect } from 'react';
|
import React, { useEffect } from 'react';
|
||||||
import SelectedTable from '../ImageSelectedTable/index';
|
import SelectedTable from '../ImageSelectedTable/index';
|
||||||
|
@ -21,7 +21,7 @@ const BindUserModal: React.FC<UserEditModalProps> = ({
|
||||||
dataDetial,
|
dataDetial,
|
||||||
}) => {
|
}) => {
|
||||||
const { recordData, visible, selectedOrg } = dataDetial || {};
|
const { recordData, visible, selectedOrg } = dataDetial || {};
|
||||||
const { id: device_id } = recordData || {};
|
const { device_id } = recordData || {};
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -40,8 +40,34 @@ const BindUserModal: React.FC<UserEditModalProps> = ({
|
||||||
const handleOk = async () => {
|
const handleOk = async () => {
|
||||||
try {
|
try {
|
||||||
const values = await form.validateFields();
|
const values = await form.validateFields();
|
||||||
|
const { image_list } = values || {};
|
||||||
|
if (image_list && image_list.length > 0) {
|
||||||
|
const list: any[] = [];
|
||||||
|
image_list.forEach((item: any) => {
|
||||||
|
list.push({
|
||||||
|
id: item.id,
|
||||||
|
device_id: device_id,
|
||||||
|
image_id: item.record_id,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const payload: any = {
|
||||||
|
data: list,
|
||||||
|
};
|
||||||
|
|
||||||
|
getBindImageAdd(payload).then((res: any) => {
|
||||||
|
const { code } = res || {};
|
||||||
|
if (code === ERROR_CODE) {
|
||||||
|
message.success('绑定成功');
|
||||||
|
onOk();
|
||||||
|
} else {
|
||||||
|
message.error('绑定失败');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
message.info('请先选择绑定的镜像');
|
||||||
|
}
|
||||||
console.log('values=====', values);
|
console.log('values=====', values);
|
||||||
onOk(values);
|
// onOk(values);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('请检查表单字段');
|
message.error('请检查表单字段');
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ const BindUserModal: React.FC<UserEditModalProps> = ({
|
||||||
dataDetial,
|
dataDetial,
|
||||||
}) => {
|
}) => {
|
||||||
const { recordData, visible } = dataDetial || {};
|
const { recordData, visible } = dataDetial || {};
|
||||||
const { device_id } = recordData || {};
|
const { device_id,device_group_id } = recordData || {};
|
||||||
const [orgTreeData, setOrgTreeData] = useState<User.OrganizationNode[]>([]);
|
const [orgTreeData, setOrgTreeData] = useState<User.OrganizationNode[]>([]);
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
|
|
||||||
|
@ -96,6 +96,7 @@ const BindUserModal: React.FC<UserEditModalProps> = ({
|
||||||
user_id: record_id,
|
user_id: record_id,
|
||||||
id: id,
|
id: id,
|
||||||
device_id,
|
device_id,
|
||||||
|
device_group_id,
|
||||||
type: type,
|
type: type,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -104,6 +105,7 @@ const BindUserModal: React.FC<UserEditModalProps> = ({
|
||||||
user_group_id: record_id,
|
user_group_id: record_id,
|
||||||
id: id,
|
id: id,
|
||||||
device_id: device_id,
|
device_id: device_id,
|
||||||
|
device_group_id,
|
||||||
type: type,
|
type: type,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ const SelectedTable: React.FC<SelectedTableProps> = (props) => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
setTableData(list);
|
setTableData(list);
|
||||||
onBindUserChange(list);
|
if (onBindUserChange) onBindUserChange(list);
|
||||||
onHnadleCancel();
|
onHnadleCancel();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -120,12 +120,14 @@ const SelectedTable: React.FC<SelectedTableProps> = (props) => {
|
||||||
const { record_id } = record || {};
|
const { record_id } = record || {};
|
||||||
const newData = tableData.filter((item) => item.record_id !== record_id);
|
const newData = tableData.filter((item) => item.record_id !== record_id);
|
||||||
setTableData(newData);
|
setTableData(newData);
|
||||||
|
if (onBindUserChange) onBindUserChange(newData);
|
||||||
} else {
|
} else {
|
||||||
// 批量删除
|
// 批量删除
|
||||||
const newData = tableData.filter(
|
const newData = tableData.filter(
|
||||||
(item) => !bindTableKeys.includes(item.record_id),
|
(item) => !bindTableKeys.includes(item.record_id),
|
||||||
);
|
);
|
||||||
setTableData(newData);
|
setTableData(newData);
|
||||||
|
if (onBindUserChange) onBindUserChange(newData);
|
||||||
setSelectedRowKeys([]);
|
setSelectedRowKeys([]);
|
||||||
setSelectedRows([]);
|
setSelectedRows([]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue