Browse Source

设备下发列表

master
zhaoy 11 months ago
parent
commit
376086d8bb
3 changed files with 301 additions and 0 deletions
  1. +22
    -0
      src/pages/device/devicepush/components/PushFrom.jsx
  2. +254
    -0
      src/pages/device/devicepush/index.jsx
  3. +25
    -0
      src/pages/device/devicepush/services.js

+ 22
- 0
src/pages/device/devicepush/components/PushFrom.jsx View File

@@ -0,0 +1,22 @@
import React from 'react';
import { Modal, Form, Input, Button, Select,InputNumber,TreeSelect } from 'antd';

const PushFrom = (props) => {
const { Option, OptGroup } = Select;
return (
<Modal
title={props.values.id ? '编辑' : '新建'}
width={640}
visible={props.createModalVisible}
bodyStyle={{ padding: '32px 40px 1px 48px' }}
footer={null}
onCancel={() => {
props.onCancel();
}}
destroyOnClose
>
</Modal>
);
};

export default PushFrom;

+ 254
- 0
src/pages/device/devicepush/index.jsx View File

@@ -0,0 +1,254 @@
import { PlusOutlined } from '@ant-design/icons';
import { Button, message, Input, Drawer, Popconfirm } from 'antd';
import React, { useState, useRef, useEffect } from 'react';
import { PageContainer, FooterToolbar } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import ProDescriptions from '@ant-design/pro-descriptions';
import PushFrom from './components/PushFrom';

import {
GetDevicePushRecodePage,
DevicePushRecodeDelete
} from './service';



const DevicePush = () => {
/** 新建/更新窗口的弹窗 */
const [createModalVisible, handleModalVisible] = useState(false);
/** 分布更新窗口的弹窗 */
const [showDetail, setShowDetail] = useState(false);
const actionRef = useRef();
const [currentRow, setCurrentRow] = useState();
const [selectedRowsState, setSelectedRows] = useState([]);
/** 国际化修改 */
useEffect(() => {
}, []);

/**
* 批量删除
*
* @param selectedRows
*/
const handleRemove = async (selectedRows) => {
const hide = message.loading('正在删除');
if (!selectedRows) return true;
await DevicePushRecodeDelete(selectedRows.map((row) => row.id)).then((r) => {
if (r.succeeded) {
message.success('删除成功');
actionRef.current.reload();
} else {
message.error(r.errors);
}
});
hide();
return true;
};
const columns = [
{
title: '主键',
dataIndex: 'id',
hideInSearch: true,
hideInTable: true,
tip: '规则名称是唯一的 key',
render: (dom, entity) => {
return (
<a
onClick={() => {
setCurrentRow(entity);
setShowDetail(true);
}}
>
{dom}
</a>
);
},
},
{
title: '下发设备',
dataIndex: 'deviceName',
valueType: 'textarea',
ellipsis: true,
},

{
title: '下发数据',
dataIndex: 'type',
ellipsis: true,
valueEnum: {
1: {
text: '商品',
},
2: {
text: '物料',
},
3: {
text: '工艺',
},
4: {
text: '配方',
},
},
},
{
title: '下发时间',
dataIndex: 'ceateAt',
hideInSearch: true,
},
{
title: '操作',
dataIndex: 'option',
valueType: 'option',
render: (_, record) => [
<a
key="config"
onClick={() => {
handleModalVisible(true);
setCurrentRow(record);
}}
>
下发详情
</a>,
<Popconfirm
type="primary"
key="primary"
title="确认删除吗?"
okText="是"
cancelText="否"
onConfirm={async () => {
await DeleteGoodsType(record.id).then((r) => {
if (r.succeeded) {
message.success('删除成功');
actionRef.current.reload();
} else {
message.error(r.errors);
}
});
}}
onCancel={() => {}}
>
<a href="#">删除</a>
</Popconfirm>,
],
},
];

return (
<PageContainer host header={{
title: '',
breadcrumb: {},
}}>
<ProTable
headerTitle=""
actionRef={actionRef}
rowKey="id"
pagination={{ defaultPageSize: 10 }}
search={{
labelWidth: 120,
}}
toolBarRender={() => [
<Button
type="primary"
key="primary"
onClick={() => {
handleModalVisible(true);
}}
>
<PlusOutlined /> 新建
</Button>,
]}
request={async (params) => {
var goodsData = [];
var total = 0;
await GetDevicePushRecodePage(params).then((r) => {
goodsData = r.data.data;
total = r.data.total;
});
return {
data: goodsData,
success: true,
total: total,
};
}}
columns={columns}
rowSelection={{
onChange: (_, selectedRows) => {
setSelectedRows(selectedRows);
},
}}
/>
{selectedRowsState?.length > 0 && (
<FooterToolbar
extra={
<div>
已选择{' '}
<a
style={{
fontWeight: 600,
}}
>
{selectedRowsState.length}
</a>{' '}
项 &nbsp;&nbsp;
{/* <span>
服务调用次数总计 {selectedRowsState.reduce((pre, item) => pre + item.id, 0)} 万
</span> */}
</div>
}
>
<Button
onClick={async () => {
await handleRemove(selectedRowsState);
setSelectedRows([]);
actionRef.current?.reloadAndRest?.();
}}
>
删除
</Button>
{/* <Button type="primary">批量审批</Button> */}
</FooterToolbar>
)}

<PushFrom
onFinish={async (value) => {
}}
onCancel={() => {
handleModalVisible(false);
setCurrentRow(undefined);
}}
createModalVisible={createModalVisible}
values={currentRow || {}}
/>

<Drawer
width={600}
visible={showDetail}
onClose={() => {
setCurrentRow(undefined);
setShowDetail(false);
}}
closable={false}
>
{currentRow?.name && (
<ProDescriptions
column={2}
title={currentRow?.name}
request={async () => ({
data: currentRow || {},
})}
params={{
id: currentRow?.name,
}}
columns={columns}
/>
)}
</Drawer>
</PageContainer>
);
};

export default DevicePush;

+ 25
- 0
src/pages/device/devicepush/services.js View File

@@ -0,0 +1,25 @@
import { request } from 'umi';
export async function GetDevicePushRecodePage(data) {
return request(`/saasstore/api/devicepushrecode/page`, {
method: 'POST',
data: data,
});
}
export async function DevicePushRecodeAdd(data) {
return request(`/saasstore/api/devicepushrecode/add`, {
method: 'POST',
data: data,
});
}
export async function DevicePushRecodeUpdate(data) {
return request(`/saasstore/api/devicepushrecode/update`, {
method: 'POST',
data: data,
});
}
export async function DevicePushRecodeDelete(data) {
return request(`/saasstore/api/devicepushrecode/delete`, {
method: 'POST',
data: data,
});
}

Loading…
Cancel
Save