Commit cd0765ef authored by 李纪文's avatar 李纪文

Merge branch 'dev' into 'master'

合并dev内容 See merge request !29
parents 7fa415fc 21aefbe0
Pipeline #26282 failed with stages
in 15 seconds
...@@ -71,7 +71,15 @@ export default { ...@@ -71,7 +71,15 @@ export default {
}, },
{ {
title: '通用', title: '通用',
children: ['ImageSelect', 'QuotaSelect', 'TimeRangePicker', 'MqttView'], children: [
'BasicTable',
'BasicTools',
'ImageSelect',
'QuotaSelect',
'TimeRangePicker',
'MqttView',
'ExportExcel',
],
}, },
{ {
title: '数据录入', title: '数据录入',
......
...@@ -137,15 +137,18 @@ ...@@ -137,15 +137,18 @@
"registry": "https://g.civnet.cn:4873" "registry": "https://g.civnet.cn:4873"
}, },
"dependencies": { "dependencies": {
"@wisdom-components/Empty": "^1.0.1", "@wisdom-components/Empty": "^1.3.3",
"@wisdom-components/timerangepicker": "^1.2.0", "@wisdom-components/basictable": "^1.2.0",
"@wisdom-components/timerangepicker": "^1.3.4",
"classnames": "^2.2.6", "classnames": "^2.2.6",
"cross-spawn": "^7.0.3", "cross-spawn": "^7.0.3",
"form-render": "^0.9.12", "form-render": "^0.9.12",
"highcharts": "^9.0.1", "highcharts": "^9.0.1",
"highcharts-react-official": "^3.0.0", "highcharts-react-official": "^3.0.0",
"js-export-excel": "^1.1.4",
"jszip": "^3.5.0",
"mqtt-client": "^1.0.11", "mqtt-client": "^1.0.11",
"parseForm": "0.0.7" "parseForm": "0.0.8"
}, },
"size-limit": [ "size-limit": [
{ {
......
# Change Log
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.4.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictable@1.3.0...@wisdom-components/basictable@1.4.2) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.4.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictable@1.4.0...@wisdom-components/basictable@1.4.1) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
# 1.4.0 (2021-04-09)
### Bug Fixes
- update table ([dcf8ae6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/dcf8ae65818c903c9bf08080b26250c79b26c4b7))
### Features
- 新增标准表格组件 ([f0b0666](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f0b0666a246761fd3debe0f3d8a3b3ca4df5a568))
# 1.3.0 (2021-04-09)
### Bug Fixes
- update table ([dcf8ae6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/dcf8ae65818c903c9bf08080b26250c79b26c4b7))
### Features
- 新增标准表格组件 ([f0b0666](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f0b0666a246761fd3debe0f3d8a3b3ca4df5a568))
# 1.2.0 (2021-04-09)
### Bug Fixes
- update table ([dcf8ae6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/dcf8ae65818c903c9bf08080b26250c79b26c4b7))
### Features
- 新增标准表格组件 ([f0b0666](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f0b0666a246761fd3debe0f3d8a3b3ca4df5a568))
# 1.1.0 (2021-04-07)
### Features
- 新增标准表格组件 ([f0b0666](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f0b0666a246761fd3debe0f3d8a3b3ca4df5a568))
# `@wisdom-components/BasicTable`
> TODO: description
## Usage
```
const basicTable = require('@wisdom-components/BasicTable');
// TODO: DEMONSTRATE API
```
{
"name": "@wisdom-components/basictable",
"version": "1.4.2",
"description": "> TODO: description",
"author": "tuqian <webtuqian@163.com>",
"homepage": "",
"license": "ISC",
"main": "lib/index.js",
"directories": {
"lib": "lib",
"test": "__tests__"
},
"files": [
"lib"
],
"publishConfig": {
"registry": "https://g.civnet.cn:4873/"
},
"repository": {
"type": "git",
"url": "https://g.civnet.cn:8443/ReactWeb5/wisdom-components.git"
},
"scripts": {
"test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6"
}
}
---
title: BasicTable - 标准表格
nav:
title: 组件
path: /components
group:
path: /
---
# BasicTable 标准表格
基础业务组件
- 展示行列数据
## 何时使用
- 当有大量结构化的数据需要展现时;
- 当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。
## 代码演示
<code src="./demos/Basic.tsx">
## API
api 参考 Antd Table 组件 https://ant.design/components/table-cn/#API
import React, { useEffect, useState } from 'react';
import Empty from '@wisdom-components/empty';
import BasicTable from '../index';
import request from 'umi-request';
const Demo = () => {
const [columns, setColumns] = useState([]);
const [dataSource, setDataSource] = useState([]);
useEffect(() => {
fetchData();
}, []);
const fetchData = (params = {}) => {
request(`${baseUrl}/AcrossTable/GetEquipmentDataReport`, {
method: 'get',
params: {},
}).then(function (response) {
const data = response.data;
let column = data.map((item, index) => {
return {
title: `${item.DName + item.DType}(${item.Unit})`,
dataIndex: `name${index}`,
key: `name${index}`,
};
});
column.unshift({
title: '时间',
dataIndex: 'time',
key: 'time',
});
let dataSource = data[0].NameDate.map((item, index) => ({ key: index, time: item.Time }));
data.forEach((item, index) => {
item.NameDate.forEach((child) => {
dataSource.forEach((v) => {
if (child.Time === v.time) v[`name${index}`] = child.Value;
});
});
});
setColumns(column);
setDataSource(dataSource);
});
};
return (
<div style={{ height: '400px' }}>
{!!dataSource.length && (
<BasicTable dataSource={dataSource} columns={columns} bordered={true} />
)}
{!dataSource.length && <Empty description={'暂无数据'} />}
</div>
);
};
export default Demo;
const baseUrl = 'https://www.fastmock.site/mock/162c15dca15c4dba9ba51e0a0b76929b/api';
import React, { useContext } from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { Table, ConfigProvider } from 'antd';
import './index.less';
const BasicTable = (props) => {
const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
const prefixCls = getPrefixCls('basic-table');
return <Table className={classNames(prefixCls)} scroll={{ y: 'calc(100% - 40px)' }} {...props} />;
};
BasicTable.defaultProps = {
columns: [],
dataSource: [],
};
BasicTable.propTypes = {
columns: PropTypes.array,
dataSource: PropTypes.array,
};
export default BasicTable;
@import (reference) '~antd/es/style/themes/default';
@basic-table-prefix-cls: ~'@{ant-prefix}-basic-table';
.@{basic-table-prefix-cls} {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
.ant-table-wrapper,
.ant-spin-nested-loading,
.ant-spin-container,
.ant-table,
.ant-table-container,
.ant-table-content {
display: flex;
flex: 1;
flex-direction: column;
overflow: hidden;
}
.ant-table-tbody > tr {
background: rgba(255, 255, 255, 0);
}
.ant-table-tbody > tr > td {
background: rgba(255, 255, 255, 0);
}
.ant-table-thead > tr > th {
font-weight: 600;
background: white;
border-bottom: 2px solid #dbe7fb;
}
.ant-table-thead > tr > th,
.ant-table-tbody > tr > td,
.ant-table tfoot > tr > th,
.ant-table tfoot > tr > td {
padding: 8px 8px;
}
.ant-table-tbody > tr:hover:not(.ant-table-expanded-row) > td {
background: rgba(255, 255, 255, 0);
}
.ant-table-tbody > tr:nth-child(2n-1) {
background: #f6f9fe;
}
.ant-table-tbody > tr:hover {
background: #edf2ff;
}
.ant-table-tbody > tr > td {
border-bottom: 1px solid #dbe7fb;
}
.ant-table.ant-table-bordered
> .ant-table-container
> .ant-table-content
> table
> thead
> tr
> th,
.ant-table.ant-table-bordered
> .ant-table-container
> .ant-table-header
> table
> thead
> tr
> th,
.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr > th,
.ant-table.ant-table-bordered
> .ant-table-container
> .ant-table-content
> table
> tbody
> tr
> td,
.ant-table.ant-table-bordered
> .ant-table-container
> .ant-table-header
> table
> tbody
> tr
> td,
.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td,
.ant-table.ant-table-bordered
> .ant-table-container
> .ant-table-content
> table
> tfoot
> tr
> th,
.ant-table.ant-table-bordered
> .ant-table-container
> .ant-table-header
> table
> tfoot
> tr
> th,
.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > th,
.ant-table.ant-table-bordered
> .ant-table-container
> .ant-table-content
> table
> tfoot
> tr
> td,
.ant-table.ant-table-bordered
> .ant-table-container
> .ant-table-header
> table
> tfoot
> tr
> td,
.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > td {
border-right: 1px solid #dbe7fb;
}
.ant-table.ant-table-bordered > .ant-table-container {
border: 1px solid #dbe7fb;
border-right: 0;
border-bottom: 0;
}
}
# Change Log
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.2.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictools@1.2.5...@wisdom-components/basictools@1.2.7) (2021-04-20)
### Bug Fixes
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.2.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictools@1.2.2...@wisdom-components/basictools@1.2.6) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/basictools
## [1.2.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictools@1.2.2...@wisdom-components/basictools@1.2.5) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/basictools
## [1.2.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictools@1.2.2...@wisdom-components/basictools@1.2.4) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/basictools
## [1.2.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictools@1.2.2...@wisdom-components/basictools@1.2.3) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/basictools
## [1.2.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictools@1.2.1...@wisdom-components/basictools@1.2.2) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/basictools
## [1.2.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/basictools@1.2.0...@wisdom-components/basictools@1.2.1) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/basictools
# 1.2.0 (2021-04-02)
### Features
- add basic tools ([c7313da](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c7313daaf6584524603e6a53c117c182aa4914dc))
# `@wisdom-components/BasicTools`
> TODO: description
## Usage
```
const basicTools = require('@wisdom-components/BasicTools');
// TODO: DEMONSTRATE API
```
{
"name": "@wisdom-components/basictools",
"version": "1.2.7",
"description": "> TODO: description",
"author": "tuqian <webtuqian@163.com>",
"homepage": "",
"license": "ISC",
"main": "lib/index.js",
"directories": {
"lib": "lib",
"test": "__tests__"
},
"files": [
"lib"
],
"publishConfig": {
"registry": "https://g.civnet.cn:4873/"
},
"repository": {
"type": "git",
"url": "https://g.civnet.cn:8443/ReactWeb5/wisdom-components.git"
},
"scripts": {
"test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"moment": "^2.27.0"
}
}
---
title: BasicTools - 通用工具库
nav:
title: 组件
path: /components
group:
path: /
---
# BasicTools 通用工具库
## 代码演示
<code src="./demos/Basic.tsx">
## 使用说明
```javascript
import { getTimeRange, getRange } from '@wisdom-components/BasicTools';
let result1 = getTimeRange('lastYear');
let result2 = getTimeRange('nextWeek');
let result3 = getRange(new Date(), 'day');
let result4 = getRange('', 'month');
```
import React from 'react';
import { getTimeRange, getRange } from '../index';
const Demo = () => {
return (
<div>
<h2>getTimeRange(type):</h2>
<div>
<b>全部:</b> {JSON.stringify(getTimeRange())}
</div>
<div>
<b>今年-thisYear:</b> {JSON.stringify(getTimeRange('thisYear'))}
</div>
<div>
<b>去年-lastYear:</b> {JSON.stringify(getTimeRange('lastYear'))}
</div>
<div>
<b>明年-nextYear:</b> {JSON.stringify(getTimeRange('nextYear'))}
</div>
<div>
<b>上季度-lastQuarter:</b> {JSON.stringify(getTimeRange('lastQuarter'))}
</div>
<div>
<b>本季度-thisQuarter:</b> {JSON.stringify(getTimeRange('thisQuarter'))}
</div>
<div>
<b>下季度-nextQuarter:</b> {JSON.stringify(getTimeRange('nextQuarter'))}
</div>
<div>
<b>上月-lastMonth:</b> {JSON.stringify(getTimeRange('lastMonth'))}
</div>
<div>
<b>本月-thisMonth:</b> {JSON.stringify(getTimeRange('thisMonth'))}
</div>
<div>
<b>下月-nextMonth:</b> {JSON.stringify(getTimeRange('nextMonth'))}
</div>
<div>
<b>上周-lastWeek:</b> {JSON.stringify(getTimeRange('lastWeek'))}
</div>
<div>
<b>本周-thisWeek:</b> {JSON.stringify(getTimeRange('thisWeek'))}
</div>
<div>
<b>下周-nextWeek:</b> {JSON.stringify(getTimeRange('nextWeek'))}
</div>
<div>
<b>昨天-lastDay:</b> {JSON.stringify(getTimeRange('lastDay'))}
</div>
<div>
<b>今天-thisDay:</b> {JSON.stringify(getTimeRange('thisDay'))}
</div>
<div>
<b>明天-nextDay:</b> {JSON.stringify(getTimeRange('nextDay'))}
</div>
<br />
<h2>getRange(date, type):</h2>
<div>
<b>type:</b> {JSON.stringify(getRange())}
</div>
<div>
<b>type-day:</b> {JSON.stringify(getRange(new Date(), 'day'))}
</div>
<div>
<b>type-week:</b> {JSON.stringify(getRange(new Date(), 'week'))}
</div>
<div>
<b>type-month:</b> {JSON.stringify(getRange(new Date(), 'month'))}
</div>
<div>
<b>type-year:</b> {JSON.stringify(getRange(new Date(), 'year'))}
</div>
</div>
);
};
export default Demo;
import moment from 'moment';
// 根据设定查询条件 返回时间范围
const getTimeRange = (type) => {
let start = '',
end = '';
switch (type) {
case 'thisYear': // 今年
start = moment().startOf('year');
end = moment().endOf('year');
break;
case 'lastYear': // 去年
start = moment()
.year(moment().year() - 1)
.startOf('year');
end = moment()
.year(moment().year() - 1)
.endOf('year');
break;
case 'nextYear': // 明年
start = moment()
.year(moment().year() + 1)
.startOf('year');
end = moment()
.year(moment().year() + 1)
.endOf('year');
break;
case 'lastQuarter': // 上季度
start = moment()
.quarter(moment().quarter() - 1)
.startOf('quarter');
end = moment()
.quarter(moment().quarter() - 1)
.endOf('quarter');
break;
case 'thisQuarter': // 本季度
start = moment().startOf('quarter');
end = moment().endOf('quarter');
break;
case 'nextQuarter': // 下季度
start = moment()
.quarter(moment().quarter() + 1)
.startOf('quarter');
end = moment()
.quarter(moment().quarter() + 1)
.endOf('quarter');
break;
case 'lastMonth': // 上月
start = moment()
.month(moment().month() - 1)
.startOf('month');
end = moment()
.month(moment().month() - 1)
.endOf('month');
break;
case 'thisMonth': // 本月
start = moment().startOf('month');
end = moment().endOf('month');
break;
case 'nextMonth': // 下月
start = moment()
.month(moment().month() + 1)
.startOf('month');
end = moment()
.month(moment().month() + 1)
.endOf('month');
break;
case 'lastWeek': // 上周
start = moment().subtract(14, 'days');
end = moment().subtract(7, 'days');
break;
case 'thisWeek': // 本周
start = moment().subtract(6, 'days');
end = moment();
break;
case 'nextWeek': // 下周
start = moment().subtract(-1, 'days');
end = moment().subtract(-7, 'days');
break;
case 'lastDay': // 昨天
start = moment().subtract(1, 'days');
end = moment().subtract(1, 'days');
break;
case 'thisDay': // 今天
start = moment();
end = moment();
break;
case 'nextDay': // 明天
start = moment().subtract(-1, 'days');
end = moment().subtract(-1, 'days');
break;
default:
start = moment();
end = moment();
break;
}
if (!!start && !!end) {
start = start.format(startFormat);
end = end.format(endFormat);
}
return { startTime: start, endTime: end };
};
const getRange = (date, type) => {
let start = '',
end = '';
switch (type) {
case 'day':
start = moment(date);
end = moment(date);
break;
case 'week':
start = moment(date).startOf('week');
end = moment(date).endOf('week');
break;
case 'month':
start = moment(date).startOf('month');
end = moment(date).endOf('month');
break;
case 'year':
start = moment(date).startOf('year');
end = moment(date).endOf('year');
break;
default:
start = moment(date);
end = moment(date);
break;
}
if (!!start && !!end) {
start = start.format(startFormat);
end = end.format(endFormat);
}
return { startTime: start, endTime: end };
};
export { getTimeRange, getRange };
const startFormat = 'YYYY-MM-DD 00:00:00';
const endFormat = 'YYYY-MM-DD 23:59:59';
...@@ -2,6 +2,73 @@ ...@@ -2,6 +2,73 @@
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.3.8](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.3.5...@wisdom-components/devicetree@1.3.8) (2021-04-20)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.3.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.3.6...@wisdom-components/devicetree@1.3.7) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.3.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.3.2...@wisdom-components/devicetree@1.3.6) (2021-04-09)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.3.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.3.2...@wisdom-components/devicetree@1.3.5) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/devicetree
## [1.3.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.3.2...@wisdom-components/devicetree@1.3.4) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/devicetree
## [1.3.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.3.2...@wisdom-components/devicetree@1.3.3) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/devicetree
## [1.3.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.3.1...@wisdom-components/devicetree@1.3.2) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/devicetree
## [1.3.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.3.0...@wisdom-components/devicetree@1.3.1) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/devicetree
# [1.3.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/devicetree@1.2.0...@wisdom-components/devicetree@1.3.0) (2021-04-02)
### Bug Fixes
- update device tree ([8e84527](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/8e8452714309191c85e4d5cad628490e5bce00d1))
- update history info ([8bd3df6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/8bd3df63fda2c553db561eb885284d1862268ab5))
### Features
- add basic tools ([c7313da](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c7313daaf6584524603e6a53c117c182aa4914dc))
# 1.2.0 (2021-03-30)
### Bug Fixes
- 修改文件格式 ([dd58b0a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/dd58b0a40bc4a812ba46cf0b0046ad1189494bf5))
- 修改样式写法 ([d670487](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d670487dc174b747af9a8bdc22099bb40aa1c976))
- document code preview ([043017c](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/043017c30e6d5b9315f0092a9e1763a244b7746b))
- update mock api ([c5636d4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c5636d496341d2349c83b266fc78ca7ceb8416ae))
### Features
- 设备树组件 ([792058c](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/792058cab251539912bde580e0ed5a7e742f92f1))
# 1.1.0 (2021-03-24) # 1.1.0 (2021-03-24)
### Bug Fixes ### Bug Fixes
......
{ {
"name": "@wisdom-components/devicetree", "name": "@wisdom-components/devicetree",
"version": "1.1.0", "version": "1.3.8",
"description": "> TODO: description", "description": "> TODO: description",
"author": "tuqian <webtuqian@163.com>", "author": "tuqian <webtuqian@163.com>",
"homepage": "", "homepage": "",
...@@ -22,5 +22,8 @@ ...@@ -22,5 +22,8 @@
}, },
"scripts": { "scripts": {
"test": "echo \"Error: run tests from root\" && exit 1" "test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6"
} }
} }
...@@ -15,8 +15,8 @@ const Demo = () => { ...@@ -15,8 +15,8 @@ const Demo = () => {
request(`${baseUrl}/Publish/Monitor/Device/DeviceTree`, { request(`${baseUrl}/Publish/Monitor/Device/DeviceTree`, {
method: 'post', method: 'post',
data: { data: {
PageIndex: 1, pageIndex: 1,
PageSize: 500, pageSize: 500,
deviceTypes: '二供泵房,二供机组', deviceTypes: '二供泵房,二供机组',
getChild: true, getChild: true,
userID: 1, userID: 1,
...@@ -79,6 +79,7 @@ const Demo = () => { ...@@ -79,6 +79,7 @@ const Demo = () => {
}; };
return ( return (
<div style={{ width: '300px', height: '400px', border: '1px solid #eee' }}>
<PandaDeviceTree <PandaDeviceTree
onSearch={onSearch} onSearch={onSearch}
checkable checkable
...@@ -91,6 +92,7 @@ const Demo = () => { ...@@ -91,6 +92,7 @@ const Demo = () => {
selectedKeys={selectedKeys} selectedKeys={selectedKeys}
treeData={treeData} treeData={treeData}
/> />
</div>
); );
}; };
......
...@@ -22,9 +22,11 @@ const DeviceTree = (props) => { ...@@ -22,9 +22,11 @@ const DeviceTree = (props) => {
onPressEnter={onSearch} onPressEnter={onSearch}
/> />
<Divider /> <Divider />
<div className={classNames(`${prefixCls}-content`)}>
{!!treeData.length && <Tree {...props} />} {!!treeData.length && <Tree {...props} />}
{!treeData.length && <Empty />} {!treeData.length && <Empty />}
</div> </div>
</div>
); );
}; };
......
...@@ -2,9 +2,18 @@ ...@@ -2,9 +2,18 @@
@device-tree-prefix-cls: ~'@{ant-prefix}-device-tree'; @device-tree-prefix-cls: ~'@{ant-prefix}-device-tree';
.@{device-tree-prefix-cls} { .@{device-tree-prefix-cls} {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
padding: 5px; padding: 5px;
.ant-divider { .ant-divider {
margin: 6px 0 12px 0; margin: 6px 0 12px 0;
} }
&-content {
flex: 1;
overflow-y: scroll;
}
} }
...@@ -2,6 +2,78 @@ ...@@ -2,6 +2,78 @@
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.3.9](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.5...@wisdom-components/empty@1.3.9) (2021-04-20)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.3.8](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.6...@wisdom-components/empty@1.3.8) (2021-04-20)
### Bug Fixes
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.3.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.6...@wisdom-components/empty@1.3.7) (2021-04-09)
### Bug Fixes
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.3.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.2...@wisdom-components/empty@1.3.6) (2021-04-09)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
- update empty ([195dc64](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/195dc64e73585e3205f28784e1cd53e61feca9b0))
## [1.3.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.2...@wisdom-components/empty@1.3.5) (2021-04-09)
### Bug Fixes
- update empty ([195dc64](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/195dc64e73585e3205f28784e1cd53e61feca9b0))
## [1.3.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.2...@wisdom-components/empty@1.3.4) (2021-04-09)
### Bug Fixes
- update empty ([195dc64](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/195dc64e73585e3205f28784e1cd53e61feca9b0))
## [1.3.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.2...@wisdom-components/empty@1.3.3) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/empty
## [1.3.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.1...@wisdom-components/empty@1.3.2) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/empty
## [1.3.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.3.0...@wisdom-components/empty@1.3.1) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/empty
# [1.3.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/empty@1.2.0...@wisdom-components/empty@1.3.0) (2021-04-02)
### Features
- add basic tools ([c7313da](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c7313daaf6584524603e6a53c117c182aa4914dc))
# 1.2.0 (2021-03-30)
### Bug Fixes
- 修改版本 ([04fc188](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/04fc18827700cf165c0ad9df1ee0078a1f596a97))
- 修改文件格式 ([dd58b0a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/dd58b0a40bc4a812ba46cf0b0046ad1189494bf5))
- 修改样式写法 ([d670487](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d670487dc174b747af9a8bdc22099bb40aa1c976))
- 修改 props ([568aaef](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/568aaefdc22a2e7afb23fbd19627d421b3615001))
- document code preview ([043017c](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/043017c30e6d5b9315f0092a9e1763a244b7746b))
### Features
- 无数据展示组件 ([b048c94](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/b048c948bfaf96e1465e08b4a9d5d88095a8fb42))
# 1.1.0 (2021-03-24) # 1.1.0 (2021-03-24)
### Bug Fixes ### Bug Fixes
......
{ {
"name": "@wisdom-components/empty", "name": "@wisdom-components/empty",
"version": "1.1.0", "version": "1.3.9",
"description": "@wisdom-components/empty", "description": "@wisdom-components/empty",
"author": "tuqian <webtuqian@163.com>", "author": "tuqian <webtuqian@163.com>",
"homepage": "", "homepage": "",
...@@ -23,5 +23,8 @@ ...@@ -23,5 +23,8 @@
}, },
"scripts": { "scripts": {
"test": "echo \"Error: run tests from root\" && exit 1" "test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6"
} }
} }
...@@ -2,8 +2,8 @@ import React, { useContext } from 'react'; ...@@ -2,8 +2,8 @@ import React, { useContext } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import { ConfigProvider } from 'antd'; import { ConfigProvider } from 'antd';
import noDataLight from './assets/noDataLight.svg'; import noDataLight from './assets/noDataLight.png';
import noDataDark from './assets/noDataDark.svg'; import noDataDark from './assets/noDataDark.png';
import errorLight from './assets/errorLight.png'; import errorLight from './assets/errorLight.png';
import errorDark from './assets/errorDark.png'; import errorDark from './assets/errorDark.png';
......
# Change Log
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.0.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/exportexcel@1.0.5...@wisdom-components/exportexcel@1.0.7) (2021-04-20)
### Bug Fixes
- 修改导出表格控件 ([df21b80](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/df21b808af7bc4ecade41e8696fbab7efe1ff0d7))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.0.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/exportexcel@1.0.2...@wisdom-components/exportexcel@1.0.6) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/exportexcel
## [1.0.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/exportexcel@1.0.2...@wisdom-components/exportexcel@1.0.5) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/exportexcel
## [1.0.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/exportexcel@1.0.2...@wisdom-components/exportexcel@1.0.4) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/exportexcel
## [1.0.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/exportexcel@1.0.2...@wisdom-components/exportexcel@1.0.3) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/exportexcel
## [1.0.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/exportexcel@1.0.1...@wisdom-components/exportexcel@1.0.2) (2021-04-06)
### Bug Fixes
- Excel 表格组件 ([b84f198](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/b84f198ee75a276c70a94f4977e22e79787a5af8))
## 1.0.1 (2021-04-06)
### Bug Fixes
- Excel 表格组件 ([903bbe6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/903bbe638982ac534f4e99c6a3cb006e90381be9))
- Excel 表格组件 ([a6789b8](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/a6789b859c7efd9ccb3def4587daadd1c54cd242))
# `@wisdom-components/ExportExcel`
> TODO: description
## Usage
```
const {ExportExcel, ExportExcelZip} = require('@wisdom-components/ExportExcel');
// TODO: DEMONSTRATE API
```
{
"name": "@wisdom-components/exportexcel",
"version": "1.0.7",
"description": "> TODO: description",
"author": "lijiwen <961370825@qq.com>",
"homepage": "",
"license": "ISC",
"main": "lib/index.js",
"directories": {
"lib": "lib",
"test": "__tests__"
},
"files": [
"lib"
],
"publishConfig": {
"registry": "https://g.civnet.cn:4873/"
},
"repository": {
"type": "git",
"url": "https://g.civnet.cn:8443/ReactWeb5/wisdom-components.git"
},
"scripts": {
"test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"js-export-excel": "^1.1.4",
"jszip": "^3.5.0"
}
}
---
title: ExportExcel - Excel表格导出
nav:
title: 组件
path: /components
group:
path: /
---
# PandaExportExcel Excel 表格导出
<code src="./demos/Base.tsx">
## API
| 参数 | 说明 | 类型 | 默认值 |
| ------- | ------------------------------------- | ------ | ------- |
| name | Excel 表格名称 | string | 'excel' |
| content | Excel 表格内容,支持多个 sheet[{},{}] | array | [] |
## content
| 名称 | 描述 | 类型 |
| ------------ | ------------------- | ------- |
| sheetData | 数据 | array |
| sheetName | sheet 名字 | string |
| sheetFilter | 列过滤 | array[] |
| sheetHeader | 表头 | array[] |
| columnWidths | 列宽 需与列顺序对应 | array[] |
## 方法
| 名称 | 描述 |
| ----------------------------- | ------------------- |
| {ExportExcel, ExportExcelZip} | -- |
| ExportExcel | 导出 Excel 表格 |
| ExportExcelZip | 导出压缩 Excel 文件 |
import React, { useEffect } from 'react';
import { ExportExcel, ExportExcelZip } from '../index';
import { Button } from 'antd';
const ExportExcelDemo = (props) => {
const exportExcelBtn = () => {
ExportExcel({
name: '下载Excel',
content: [
{
sheetData: [
{ one: '一行一列', two: '一行二列' },
{ one: '二行一列', two: '二行二列' },
],
sheetName: 'sheet1',
sheetFilter: ['two', 'one'],
sheetHeader: ['第一列', '第二列'],
columnWidths: [20, 20],
},
{
sheetData: [
{ one: '一行一列', two: '一行二列' },
{ one: '二行一列', two: '二行二列' },
],
sheetName: 'sheet2',
sheetFilter: ['one', 'two'],
sheetHeader: ['第一列', '第二列'],
columnWidths: [20, 20],
},
],
});
};
const exportExcelZipBtn = () => {
ExportExcelZip({
name: '下载Excel',
content: [
{
sheetData: [
{ one: '一行一列', two: '一行二列' },
{ one: '二行一列', two: '二行二列' },
],
sheetName: 'sheet1',
sheetFilter: ['two', 'one'],
sheetHeader: ['第一列', '第二列'],
columnWidths: [20, 20],
},
{
sheetData: [
{ one: '一行一列', two: '一行二列' },
{ one: '二行一列', two: '二行二列' },
],
sheetName: 'sheet2',
sheetFilter: ['one', 'two'],
sheetHeader: ['第一列', '第二列'],
columnWidths: [20, 20],
},
],
});
};
return (
<>
<Button onClick={exportExcelBtn} style={{ marginRight: '10px' }}>
下载Excel
</Button>
<Button onClick={exportExcelZipBtn}>下载压缩Excel</Button>
</>
);
};
export default ExportExcelDemo;
import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import ExportJsonExcel from 'js-export-excel';
import JSZip from 'jszip';
// 导出Excel表格
const ExportExcel = (props) => {
var option = {};
option.fileName = props.name;
option.datas = props.content;
var toExcel = new ExportJsonExcel(option); //new
toExcel.saveExcel();
};
ExportExcel.defaultProps = {
name: 'excel',
content: [],
};
ExportExcel.propTypes = {
name: PropTypes.string, // 下载文件名称
content: PropTypes.array, // 下载文件内容
};
// 导出压缩Excel表格
const ExportExcelZip = (props) => {
var option = {};
option.fileName = props.name;
option.saveAsBlob = true;
option.datas = props.content;
var toExcel = new ExportJsonExcel(option); //new
let file = toExcel.saveExcel();
// 压缩文件
var zip = new JSZip();
// 多个excel 依次加入(fileName不能相同)
zip.file(file.name, file);
zip.generateAsync({ type: 'blob' }).then(function (content) {
// see FileSaver.js
saveAs(content, `${props.name}.zip`); // 下载文件
});
};
ExportExcelZip.defaultProps = {
name: 'excel',
content: [],
};
ExportExcelZip.propTypes = {
name: PropTypes.string, // 下载文件名称
content: PropTypes.array, // 下载文件内容
};
export { ExportExcel, ExportExcelZip };
...@@ -2,6 +2,70 @@ ...@@ -2,6 +2,70 @@
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.4.8](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.4.5...@wisdom-components/historyinfo@1.4.8) (2021-04-20)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.4.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.4.6...@wisdom-components/historyinfo@1.4.7) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.4.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.4.2...@wisdom-components/historyinfo@1.4.6) (2021-04-09)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
- update historyinfo and realtimeinfo ([d937324](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d937324eb5daf4a55bea700f0c186b4ae95d98e2))
## [1.4.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.4.2...@wisdom-components/historyinfo@1.4.5) (2021-04-09)
### Bug Fixes
- update historyinfo and realtimeinfo ([d937324](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d937324eb5daf4a55bea700f0c186b4ae95d98e2))
## [1.4.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.4.2...@wisdom-components/historyinfo@1.4.4) (2021-04-09)
### Bug Fixes
- update historyinfo and realtimeinfo ([d937324](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d937324eb5daf4a55bea700f0c186b4ae95d98e2))
## [1.4.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.4.2...@wisdom-components/historyinfo@1.4.3) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/historyinfo
## [1.4.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.4.1...@wisdom-components/historyinfo@1.4.2) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/historyinfo
## [1.4.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.4.0...@wisdom-components/historyinfo@1.4.1) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/historyinfo
# [1.4.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.3.1...@wisdom-components/historyinfo@1.4.0) (2021-04-02)
### Bug Fixes
- update history info ([8bd3df6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/8bd3df63fda2c553db561eb885284d1862268ab5))
### Features
- add basic tools ([c7313da](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c7313daaf6584524603e6a53c117c182aa4914dc))
## [1.3.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.3.0...@wisdom-components/historyinfo@1.3.1) (2021-03-30)
### Bug Fixes
- update mock api ([c5636d4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c5636d496341d2349c83b266fc78ca7ceb8416ae))
# [1.3.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.2.0...@wisdom-components/historyinfo@1.3.0) (2021-03-24) # [1.3.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/historyinfo@1.2.0...@wisdom-components/historyinfo@1.3.0) (2021-03-24)
### Features ### Features
......
{ {
"name": "@wisdom-components/historyinfo", "name": "@wisdom-components/historyinfo",
"version": "1.3.0", "version": "1.4.8",
"description": "> TODO: description", "description": "> TODO: description",
"author": "tuqian <webtuqian@163.com>", "author": "tuqian <webtuqian@163.com>",
"homepage": "", "homepage": "",
...@@ -22,5 +22,11 @@ ...@@ -22,5 +22,11 @@
}, },
"scripts": { "scripts": {
"test": "echo \"Error: run tests from root\" && exit 1" "test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6",
"highcharts": "^9.0.1",
"highcharts-react-official": "^3.0.0",
"moment": "^2.27.0"
} }
} }
...@@ -29,8 +29,9 @@ group: ...@@ -29,8 +29,9 @@ group:
api 参考 Antd Table 组件 https://ant.design/components/table-cn/#API api 参考 Antd Table 组件 https://ant.design/components/table-cn/#API
| 参数 | 说明 | 类型 | 默认值 | | 参数 | 说明 | 类型 | 默认值 |
| ------------ | ---------------------------------------------- | ------------------ | -------- | | -------------- | ---------------------------------------------- | ------------------ | -------- |
| title | 标题 | string | 指标曲线 | | title | 标题 | string | 指标曲线 |
| defaultChecked | 默认选中自定义时间 key | string | oneHour |
| columns | 表格列的配置描述 | array | [ ] | | columns | 表格列的配置描述 | array | [ ] |
| dataSource | 表格数据源 | array | [ ] | | dataSource | 表格数据源 | array | [ ] |
| tableProps | 表格其他 props | object | { } | | tableProps | 表格其他 props | object | { } |
......
...@@ -11,6 +11,7 @@ const Demo = () => { ...@@ -11,6 +11,7 @@ const Demo = () => {
title: '采集时间', title: '采集时间',
dataIndex: 'time', dataIndex: 'time',
key: 'time', key: 'time',
width: 160,
}, },
]); ]);
...@@ -52,15 +53,16 @@ const Demo = () => { ...@@ -52,15 +53,16 @@ const Demo = () => {
let seriesData = []; let seriesData = [];
resData.forEach((item) => { resData.forEach((item) => {
let data = []; let data = [];
let obj = {};
obj.name = item.EquipmentName + item.sensorName;
item.dataModel.forEach((child) => { item.dataModel.forEach((child) => {
data.push({ data.push([moment(child.PT).valueOf(), child.PV]);
x: moment(child.PT).valueOf(),
y: child.PV,
}); });
}); let obj = {
obj.data = data; name: item.EquipmentName + item.sensorName,
sensorName: item.sensorName,
decimalPoint: item.decimalPoint,
unit: item.unit,
data: data,
};
seriesData.push(obj); seriesData.push(obj);
}); });
setSeries(seriesData); setSeries(seriesData);
...@@ -97,6 +99,7 @@ const Demo = () => { ...@@ -97,6 +99,7 @@ const Demo = () => {
chartOptions={{ series }} chartOptions={{ series }}
tableProps={{ bordered: true }} tableProps={{ bordered: true }}
onChange={onChangeParams} onChange={onChangeParams}
defaultChecked={'roundClock'}
/> />
); );
}; };
......
...@@ -3,9 +3,10 @@ import PropTypes from 'prop-types'; ...@@ -3,9 +3,10 @@ import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import Highcharts from 'highcharts/highstock'; import Highcharts from 'highcharts/highstock';
import HighchartsReact from 'highcharts-react-official'; import HighchartsReact from 'highcharts-react-official';
import { Tabs, Select, Radio, Checkbox, Table, ConfigProvider, DatePicker } from 'antd'; import { Tabs, Select, Radio, Checkbox, ConfigProvider, DatePicker } from 'antd';
import { PlusCircleOutlined } from '@ant-design/icons'; import { PlusCircleOutlined } from '@ant-design/icons';
import TimeRangePicker from '@wisdom-components/timerangepicker'; import TimeRangePicker from '@wisdom-components/timerangepicker';
import BasicTable from '@wisdom-components/basictable';
import Empty from '@wisdom-components/Empty'; import Empty from '@wisdom-components/Empty';
import moment from 'moment'; import moment from 'moment';
import './index.less'; import './index.less';
...@@ -89,10 +90,10 @@ const updateTime = (key) => { ...@@ -89,10 +90,10 @@ const updateTime = (key) => {
const unique = (arr) => { const unique = (arr) => {
let unique = {}; let unique = {};
arr.forEach(function (item) { arr.forEach((item) => {
unique[JSON.stringify(item)] = item; unique[JSON.stringify(item)] = item;
}); });
arr = Object.keys(unique).map(function (v) { arr = Object.keys(unique).map((v) => {
return JSON.parse(v); return JSON.parse(v);
}); });
return arr; return arr;
...@@ -106,7 +107,7 @@ const HistoryInfo = (props) => { ...@@ -106,7 +107,7 @@ const HistoryInfo = (props) => {
const [timeValue, setTimeValue] = useState('customer'); const [timeValue, setTimeValue] = useState('customer');
const [contrastOption, setContrastOption] = useState('day'); const [contrastOption, setContrastOption] = useState('day');
const [customerChecked, setCustomerChecked] = useState(null); const [customerChecked, setCustomerChecked] = useState(props.defaultChecked || 'oneHour');
const [customerTime, setCustomerTime] = useState(null); const [customerTime, setCustomerTime] = useState(null);
const [datePickerArr, setDatePickerArr] = useState(DataPickerArr); const [datePickerArr, setDatePickerArr] = useState(DataPickerArr);
const [checkboxData, setCheckboxData] = useState(CheckboxData); const [checkboxData, setCheckboxData] = useState(CheckboxData);
...@@ -131,12 +132,12 @@ const HistoryInfo = (props) => { ...@@ -131,12 +132,12 @@ const HistoryInfo = (props) => {
const onCustomerRangeChange = (value) => { const onCustomerRangeChange = (value) => {
setCustomerTime(value); setCustomerTime(value);
dispatch({ type: 'updateTime', payload: value }); dispatch({ type: UPDATE_TIME.UPDATE_TIME, payload: value });
}; };
const onCustomerTimeChange = (key) => { const onCustomerTimeChange = (key) => {
setCustomerChecked(key); setCustomerChecked(key);
dispatch({ type: 'updateTime', payload: key }); dispatch({ type: UPDATE_TIME.UPDATE_TIME, payload: key });
}; };
const handleBatchTime = (arr, contrastOption) => { const handleBatchTime = (arr, contrastOption) => {
...@@ -150,7 +151,7 @@ const HistoryInfo = (props) => { ...@@ -150,7 +151,7 @@ const HistoryInfo = (props) => {
} }
}); });
newArr = unique(newArr); newArr = unique(newArr);
dispatch({ type: 'updateBatchTime', payload: newArr }); dispatch({ type: UPDATE_TIME.UPDATE_BATCH_TIME, payload: newArr });
}; };
const onContrastPickerChange = (date, dateString, item) => { const onContrastPickerChange = (date, dateString, item) => {
...@@ -202,7 +203,7 @@ const HistoryInfo = (props) => { ...@@ -202,7 +203,7 @@ const HistoryInfo = (props) => {
const onTimeIntervalChange = (value, { unit }) => { const onTimeIntervalChange = (value, { unit }) => {
let data = checkboxData.filter((item) => item.key === 'dataThin'); let data = checkboxData.filter((item) => item.key === 'dataThin');
if (data[0].checked) { if (data[0].checked) {
dispatch({ type: 'updateDataThin', payload: { zoom: value, unit: unit } }); dispatch({ type: UPDATE_TIME.UPDATE_DATA_THIN, payload: { zoom: value, unit: unit } });
} }
setDataThinKey(value); setDataThinKey(value);
}; };
...@@ -287,6 +288,165 @@ const HistoryInfo = (props) => { ...@@ -287,6 +288,165 @@ const HistoryInfo = (props) => {
); );
}; };
const getSeriesType = (sensorName) => {
return sensorName ? (sensorName.indexOf('流量') > -1 ? 'area' : 'spline') : 'spline';
};
// 处理图表options
const handleChartOptions = () => {
const { series } = chartOptions;
let _series = [];
let _yAxis = [];
let uniqueUnit = [];
series.forEach((item, index) => {
// 处理series
let _s = {
name: item.name,
type: getSeriesType(item.sensorName),
data: item.data,
zIndex: 1,
tooltip: { valueSuffix: item.unit ? item.unit : '' },
color: colors[index],
decimalPoint: item.decimalPoint,
navigatorOptions: {
enabled: true,
},
};
if (_s.type === 'area' || _s.type === 'areaspline') {
_s.fillColor = {
linearGradient: {
x1: 0,
y1: 0,
x2: 0,
y2: 1,
},
stops: [
[0, Highcharts.Color(_s.color).setOpacity(0.1).get('rgba')],
[1, '#fff'],
],
};
_s.threshold = 0;
}
// 处理yAxis
if (!uniqueUnit.includes(item.unit)) {
uniqueUnit.push(item.unit);
let _length = uniqueUnit.length - 1;
let _y = {
title: {
text: item.unit,
align: 'high',
offset: 0,
rotation: 0,
y: -25,
x: 0,
},
gridLineWidth: 1,
gridLineDashStyle: 'dash',
lineWidth: 1,
tickAmount: 10,
crosshair: true,
floor: 0,
num: _length,
opposite: _length % 2 === 0,
offset: Math.floor(_length / 2) * 40,
style: {
color: '',
},
labels: {
style: {
color: '',
},
x: -2,
},
};
_yAxis.push(_y);
}
// 处理series
_s.yAxis = uniqueUnit.findIndex((child) => child === item.unit);
_series.push(_s);
});
Highcharts.setOptions({
global: { timezoneOffset: -8 * 60 },
});
let options = { ...defaultOptions };
if (CheckboxData[0].checked) {
_yAxis = setYaxisMin(_yAxis, _series);
} else {
_yAxis = _yAxis.map((item) => ({ ...item, max: null, min: null }));
}
if (_yAxis.length > 0) {
options = {
...defaultOptions,
...chartOptions,
yAxis: _yAxis,
series: _series,
};
}
return options;
};
const setYaxisMin = (y, data) => {
let result = y.concat();
data.forEach((val) => {
let min = 999999999;
let showMin = 999999999;
let max = -999999999;
let showMax = -999999999;
val.data.forEach((item) => {
if (item[1]) {
min = Math.min(min, item[1]);
showMin = Math.min(min, item[1]);
max = Math.max(max, item[1]);
showMax = Math.max(max, item[1]);
}
});
let k = 0;
let same = false;
for (let i = 0; i < val.data.length; i++) {
// 判断是否全为0
if (val.data[i][1] !== 0) {
k = 1;
}
// 判断是否全相等
if (i >= 1 && val.data[i][1] !== val.data[i - 1][1]) {
same = true;
}
}
if (k === 0) {
result[val.yAxis].min = result[val.yAxis].min
? Math.min(result[val.yAxis].min, -0.2)
: -0.2;
result[val.yAxis].max = result[val.yAxis].max ? Math.max(result[val.yAxis].max, 0.2) : 0.2;
} else if (!same) {
min = val.data[0][1] > 0 ? val.data[0][1] * 0.5 : val.data[0][1] * 1.5;
max = val.data[0][1] > 0 ? val.data[0][1] * 1.5 : val.data[0][1] * 0.5;
result[val.yAxis].min = result[val.yAxis].min
? Math.min(result[val.yAxis].min, showMin)
: min;
result[val.yAxis].max = result[val.yAxis].max ? Math.max(result[val.yAxis].max, max) : max;
} else {
result[val.yAxis].min = result[val.yAxis].min
? Math.min(result[val.yAxis].min, min)
: showMin;
result[val.yAxis].max = result[val.yAxis].max
? Math.max(result[val.yAxis].max, max)
: showMax;
}
});
return result;
};
return ( return (
<div className={classNames(prefixCls)}> <div className={classNames(prefixCls)}>
<Tabs <Tabs
...@@ -305,13 +465,14 @@ const HistoryInfo = (props) => { ...@@ -305,13 +465,14 @@ const HistoryInfo = (props) => {
<div> <div>
{item.key === 'curve' && ( {item.key === 'curve' && (
<HighchartsReact <HighchartsReact
immutable={true}
highcharts={Highcharts} highcharts={Highcharts}
constructorType={'stockChart'} constructorType={'stockChart'}
options={{ ...defaultOptions, ...chartOptions }} options={handleChartOptions()}
/> />
)} )}
{item.key === 'table' && ( {item.key === 'table' && (
<Table dataSource={dataSource} columns={columns} {...tableProps} /> <BasicTable dataSource={dataSource} columns={columns} {...tableProps} />
)} )}
</div> </div>
)} )}
...@@ -325,6 +486,7 @@ const HistoryInfo = (props) => { ...@@ -325,6 +486,7 @@ const HistoryInfo = (props) => {
HistoryInfo.defaultProps = { HistoryInfo.defaultProps = {
title: '指标曲线', title: '指标曲线',
defaultChecked: 'oneHour',
columns: [], columns: [],
dataSource: [], dataSource: [],
tableProps: {}, tableProps: {},
...@@ -334,6 +496,7 @@ HistoryInfo.defaultProps = { ...@@ -334,6 +496,7 @@ HistoryInfo.defaultProps = {
HistoryInfo.propTypes = { HistoryInfo.propTypes = {
title: PropTypes.string, title: PropTypes.string,
defaultChecked: PropTypes.string,
columns: PropTypes.array, columns: PropTypes.array,
dataSource: PropTypes.array, dataSource: PropTypes.array,
tableProps: PropTypes.object, tableProps: PropTypes.object,
...@@ -369,7 +532,8 @@ const colors = [ ...@@ -369,7 +532,8 @@ const colors = [
const defaultOptions = { const defaultOptions = {
chart: { chart: {
type: 'area', zoomType: 'x',
backgroundColor: 'rgba(255, 255, 255, 0.5)',
}, },
colors: colors, colors: colors,
title: null, title: null,
...@@ -377,42 +541,50 @@ const defaultOptions = { ...@@ -377,42 +541,50 @@ const defaultOptions = {
rangeSelector: { rangeSelector: {
enabled: false, enabled: false,
}, },
xAxis: { xAxis: [
labels: { {
formatter: function () { lineWidth: 0,
return moment(this.value).format('LT'); crosshair: true,
}, type: 'datetime',
gridLineDashStyle: 'dash',
gridLineWidth: 1,
dateTimeLabelFormats: {
second: '%H:%M:%S',
minute: '%H:%M',
hour: '%H:%M',
day: '%d',
week: '%d',
month: '%d',
year: '%Y',
}, },
}, },
yAxis: { ],
title: null, yAxis: [],
labels: { tooltip: {
shared: true,
split: false,
valueDecimals: 3,
formatter: function () { formatter: function () {
return this.value; let _html = `<b>${Highcharts.dateFormat('%Y/%m/%d %H:%M', this.x)}</b><br/>`;
}, this.points.forEach((item) => {
}, _html += `<span style={{color: ${item.series.color}}}>${item.series.name}</span>:
scrollbar: { <b>${
enabled: true, item.point.y.toFixed(
showFull: false, item.series.userOptions.decimalPoint
}, ? item.series.userOptions.decimalPoint
: 2,
) * 1
}${item.series.userOptions.tooltip.valueSuffix}</b>
<br/>`;
});
return _html;
}, },
tooltip: {
pointFormat: '<b>{series.name}-{point.y}</b>',
}, },
plotOptions: { plotOptions: {
area: { series: {
fillOpacity: 0.3, // 指定所有面积图的透明度 showInNavigator: true,
pointStart: 1940, connectNulls: false,
marker: { zoneAxis: 'x',
enabled: false,
symbol: 'circle',
radius: 2,
states: {
hover: {
enabled: true,
},
},
},
}, },
}, },
legend: { legend: {
......
...@@ -2,6 +2,72 @@ ...@@ -2,6 +2,72 @@
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.3.8](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.3.5...@wisdom-components/imageselect@1.3.8) (2021-04-20)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.3.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.3.6...@wisdom-components/imageselect@1.3.7) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.3.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.3.2...@wisdom-components/imageselect@1.3.6) (2021-04-09)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.3.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.3.2...@wisdom-components/imageselect@1.3.5) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/imageselect
## [1.3.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.3.2...@wisdom-components/imageselect@1.3.4) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/imageselect
## [1.3.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.3.2...@wisdom-components/imageselect@1.3.3) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/imageselect
## [1.3.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.3.1...@wisdom-components/imageselect@1.3.2) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/imageselect
## [1.3.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.3.0...@wisdom-components/imageselect@1.3.1) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/imageselect
# [1.3.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/imageselect@1.2.0...@wisdom-components/imageselect@1.3.0) (2021-04-02)
### Bug Fixes
- update ImageSelect and TimeRangePicker ([0daf77f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0daf77f282594f051e7de63d6e57b44c12302fdd))
### Features
- add basic tools ([c7313da](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c7313daaf6584524603e6a53c117c182aa4914dc))
# 1.2.0 (2021-03-30)
### Bug Fixes
- 修改文件格式 ([dd58b0a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/dd58b0a40bc4a812ba46cf0b0046ad1189494bf5))
- 修改样式写法 ([d670487](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d670487dc174b747af9a8bdc22099bb40aa1c976))
- document code preview ([043017c](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/043017c30e6d5b9315f0092a9e1763a244b7746b))
- update mock api ([c5636d4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c5636d496341d2349c83b266fc78ca7ceb8416ae))
### Features
- 图片选择组件 ([2499ae3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/2499ae3518801ada048106f80deea8257d3647dd))
# 1.1.0 (2021-03-24) # 1.1.0 (2021-03-24)
### Bug Fixes ### Bug Fixes
......
{ {
"name": "@wisdom-components/imageselect", "name": "@wisdom-components/imageselect",
"version": "1.1.0", "version": "1.3.8",
"description": "> TODO: description", "description": "> TODO: description",
"author": "tuqian <webtuqian@163.com>", "author": "tuqian <webtuqian@163.com>",
"homepage": "", "homepage": "",
...@@ -22,5 +22,8 @@ ...@@ -22,5 +22,8 @@
}, },
"scripts": { "scripts": {
"test": "echo \"Error: run tests from root\" && exit 1" "test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6"
} }
} }
...@@ -38,24 +38,30 @@ ...@@ -38,24 +38,30 @@
color: #222222; color: #222222;
font-weight: 500; font-weight: 500;
font-size: 16px; font-size: 16px;
white-space: nowrap;
} }
&-search { .ant-input-affix-wrapper {
width: 313px; width: 313px;
height: 29px; height: 29px;
background: #eef1f9; background-color: #eef1f9;
border-radius: 15px; border-radius: 15px;
.ant-input-prefix { .ant-input-prefix {
color: #5a6c8a; color: #5a6c8a;
} }
input { .ant-input {
background: #eef1f9; background: #eef1f9;
} }
} }
.ant-input-affix-wrapper:hover {
background-color: #eef1f9;
}
&-folder { &-folder {
margin-bottom: 20px;
border-top: 1px solid #ccd6e1; border-top: 1px solid #ccd6e1;
} }
......
...@@ -2,6 +2,44 @@ ...@@ -2,6 +2,44 @@
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.2.9](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.7...@wisdom-components/mqttview@1.2.9) (2021-04-20)
### Bug Fixes
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.2.8](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.4...@wisdom-components/mqttview@1.2.8) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/mqttview
## [1.2.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.4...@wisdom-components/mqttview@1.2.7) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/mqttview
## [1.2.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.4...@wisdom-components/mqttview@1.2.6) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/mqttview
## [1.2.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.4...@wisdom-components/mqttview@1.2.5) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/mqttview
## [1.2.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.3...@wisdom-components/mqttview@1.2.4) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/mqttview
## [1.2.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.2...@wisdom-components/mqttview@1.2.3) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/mqttview
## [1.2.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.1...@wisdom-components/mqttview@1.2.2) (2021-04-02)
**Note:** Version bump only for package @wisdom-components/mqttview
## [1.2.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/mqttview@1.2.0...@wisdom-components/mqttview@1.2.1) (2021-03-30)
**Note:** Version bump only for package @wisdom-components/mqttview
# 1.2.0 (2021-03-24) # 1.2.0 (2021-03-24)
### Bug Fixes ### Bug Fixes
......
{ {
"name": "@wisdom-components/mqttview", "name": "@wisdom-components/mqttview",
"version": "1.2.0", "version": "1.2.9",
"description": "> TODO: description", "description": "> TODO: description",
"author": "lijiwen <961370825@qq.com>", "author": "lijiwen <961370825@qq.com>",
"homepage": "", "homepage": "",
......
# Change Log
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.2.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/parseform@1.2.5...parseform@1.2.7) (2021-04-20)
### Bug Fixes
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.2.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/parseform@1.2.2...parseform@1.2.6) (2021-04-09)
**Note:** Version bump only for package parseform
## [1.2.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/parseform@1.2.2...parseform@1.2.5) (2021-04-09)
**Note:** Version bump only for package parseform
## [1.2.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/parseform@1.2.2...parseform@1.2.4) (2021-04-09)
**Note:** Version bump only for package parseform
## [1.2.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/parseform@1.2.2...parseform@1.2.3) (2021-04-07)
**Note:** Version bump only for package parseform
## [1.2.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/parseform@1.2.1...parseform@1.2.2) (2021-04-06)
**Note:** Version bump only for package parseform
## [1.2.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/parseform@1.2.0...parseform@1.2.1) (2021-04-06)
**Note:** Version bump only for package parseform
# 1.2.0 (2021-04-02)
### Bug Fixes
- 发布版本 ([7ab0f76](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/7ab0f76d5d6cbb004cc80e8e87255b75bdf40c52))
- 台账解析文档编写 ([9a95c61](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9a95c61bbfdf4c6e12cac62aeb50e12e48c562da))
- 修改配置信息 ([f8c0239](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f8c02392c14573acc9650fe281f9d79d62a66d26))
- 修改台账解析 ([21606c0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/21606c05daeb532dfc518b879c22071fc0aca2d7))
- 修改台账解析配置 ([e155cd0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/e155cd01be5acca9a652b96b21223885e394312e))
- ParseForm demo render error ([d8ed41f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d8ed41ffd16ad277d92388966849eb5ba8a1e696))
### Features
- lerna add packages/ParaseForm ([6d7cf59](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/6d7cf592dc9e0784dc5c96b454df1c55f1612797))
# 1.1.0 (2021-03-30)
### Bug Fixes
- 台账解析文档编写 ([9a95c61](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9a95c61bbfdf4c6e12cac62aeb50e12e48c562da))
- 修改配置信息 ([f8c0239](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f8c02392c14573acc9650fe281f9d79d62a66d26))
- 修改台账解析 ([21606c0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/21606c05daeb532dfc518b879c22071fc0aca2d7))
- ParseForm demo render error ([d8ed41f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d8ed41ffd16ad277d92388966849eb5ba8a1e696))
### Features
- lerna add packages/ParaseForm ([6d7cf59](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/6d7cf592dc9e0784dc5c96b454df1c55f1612797))
{ {
"name": "parseform", "name": "parseform",
"version": "1.0.0", "version": "1.2.7",
"description": "> TODO: description", "description": "> TODO: description",
"author": "lijiwen <961370825@qq.com>", "author": "lijiwen <961370825@qq.com>",
"homepage": "", "homepage": "",
...@@ -25,6 +25,6 @@ ...@@ -25,6 +25,6 @@
}, },
"dependencies": { "dependencies": {
"form-render": "^0.9.12", "form-render": "^0.9.12",
"parseForm": "^0.0.6" "parseForm": "^0.0.8"
} }
} }
...@@ -2,6 +2,80 @@ ...@@ -2,6 +2,80 @@
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.7.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.6.0...@wisdom-components/quotaselect@1.7.2) (2021-04-20)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.7.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.7.0...@wisdom-components/quotaselect@1.7.1) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
# [1.7.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.3.2...@wisdom-components/quotaselect@1.7.0) (2021-04-09)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
- update QuotaSelect ([4952245](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/49522451da39fdd98cc87bb59929c9e176d21012))
### Features
- 新增标准表格组件 ([f0b0666](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f0b0666a246761fd3debe0f3d8a3b3ca4df5a568))
# [1.6.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.3.2...@wisdom-components/quotaselect@1.6.0) (2021-04-09)
### Bug Fixes
- update QuotaSelect ([4952245](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/49522451da39fdd98cc87bb59929c9e176d21012))
### Features
- 新增标准表格组件 ([f0b0666](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f0b0666a246761fd3debe0f3d8a3b3ca4df5a568))
# [1.5.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.3.2...@wisdom-components/quotaselect@1.5.0) (2021-04-09)
### Bug Fixes
- update QuotaSelect ([4952245](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/49522451da39fdd98cc87bb59929c9e176d21012))
### Features
- 新增标准表格组件 ([f0b0666](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f0b0666a246761fd3debe0f3d8a3b3ca4df5a568))
# [1.4.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.3.2...@wisdom-components/quotaselect@1.4.0) (2021-04-07)
### Features
- 新增标准表格组件 ([f0b0666](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/f0b0666a246761fd3debe0f3d8a3b3ca4df5a568))
## [1.3.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.3.1...@wisdom-components/quotaselect@1.3.2) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/quotaselect
## [1.3.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.3.0...@wisdom-components/quotaselect@1.3.1) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/quotaselect
# [1.3.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.2.1...@wisdom-components/quotaselect@1.3.0) (2021-04-02)
### Features
- add basic tools ([c7313da](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c7313daaf6584524603e6a53c117c182aa4914dc))
## [1.2.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/quotaselect@1.2.0...@wisdom-components/quotaselect@1.2.1) (2021-03-30)
### Bug Fixes
- update mock api ([c5636d4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c5636d496341d2349c83b266fc78ca7ceb8416ae))
# 1.2.0 (2021-03-24) # 1.2.0 (2021-03-24)
### Bug Fixes ### Bug Fixes
......
{ {
"name": "@wisdom-components/quotaselect", "name": "@wisdom-components/quotaselect",
"version": "1.2.0", "version": "1.7.2",
"description": "> TODO: description", "description": "> TODO: description",
"author": "tuqian <webtuqian@163.com>", "author": "tuqian <webtuqian@163.com>",
"homepage": "", "homepage": "",
...@@ -22,5 +22,8 @@ ...@@ -22,5 +22,8 @@
}, },
"scripts": { "scripts": {
"test": "echo \"Error: run tests from root\" && exit 1" "test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6"
} }
} }
...@@ -30,20 +30,20 @@ group: ...@@ -30,20 +30,20 @@ group:
已选指标树 props 参考 https://ant.design/components/tree-cn/#API 已选指标树 props 参考 https://ant.design/components/tree-cn/#API
| 参数 | 说明 | 类型 | 默认值 | | 参数 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- | | -------------- | ------------------------------ | ------------------ | -------------- |
| buttonProps | 指标选择按钮 | object | { } | | buttonProps | 指标选择按钮 | object | { } |
| width | 模态框宽度 | number | 900 | | width | 模态框宽度 | number | 900 |
| title | 模态框标题 | string | 选择显示字段 | | title | 模态框标题 | string | 选择显示字段 |
| cancelText | 模态框取消文本 | string | 取消选择 | | cancelText | 模态框取消按钮文字 | string | 取消选择 |
| okText | 模态框确认按钮文字 | string | 确定 |
| placeholder | 搜索框占位符 | string | 搜索关键词 | | placeholder | 搜索框占位符 | string | 搜索关键词 |
| searchPrefix | 搜索框前置图标 | ReactNode | SearchOutlined | | searchPrefix | 搜索框前置图标 | ReactNode | SearchOutlined |
| targetValue | 指标类型 | string | 重要指标 |
| maximum | 最多可选择指标数量 | number | 0 | | maximum | 最多可选择指标数量 | number | 0 |
| dataSource | 指标列表数据源 | array | [ ] | | dataSource | 指标列表数据源 | array | [ ] |
| selectData | 已选指标数据 | array | [ ] | | selectData | 已选指标数据 | array | [ ] |
| treeProps | 已选指标树 props | object | { } | | treeProps | 已选指标树 props | object | { } |
| onModalCancel | 点击模态框取消按钮的回调 | function(value){ } | - | | onModalCancel | 点击模态框取消按钮的回调 | function(value){ } | - |
| onModalOk | 模态框点击确定回调 | function(value){ } | - | | onModalOk | 模态框点击确定回调 | function(value){ } | - |
| onSearch | 搜索框输入事件的回调,会返回搜索框输入信息 | function(value){ } | - | | onModalClose | 模态框点击关闭回调 | function(value){ } | - |
| onRadioChange | 指标类型切换的回调 | function(value){ } | - | | onTreeDrop | 拖动选中树节点的回调 | function(value){ } | - |
| onCancelSelect | 点击已选指标树的删除按钮的回调 | function(value){ } | - | | onCancelSelect | 点击已选指标树的删除按钮的回调 | function(value){ } | - |
...@@ -18,12 +18,7 @@ const Demo = () => { ...@@ -18,12 +18,7 @@ const Demo = () => {
}) })
.then(function (response) { .then(function (response) {
if (response.code == '0') { if (response.code == '0') {
let curData = response.data.map((item) => ({ let curData = response.data;
title: item.Name,
key: item.Name,
checked: false,
...item,
}));
setQuotaList(curData); setQuotaList(curData);
} }
}) })
...@@ -40,115 +35,28 @@ const Demo = () => { ...@@ -40,115 +35,28 @@ const Demo = () => {
console.log('onModalOk'); console.log('onModalOk');
}; };
const onModalClose = () => {
console.log('onModalClose');
};
const onModalCancel = () => { const onModalCancel = () => {
let newQuotaList = [...quotaList];
newQuotaList.forEach((item) => {
item.checked = false;
});
setQuotaList(newQuotaList);
setSelectData([]); setSelectData([]);
console.log('onModalCancel'); console.log('onModalCancel');
}; };
const onCheckboxChange = (e) => { const onCheckboxChange = ({ selectList }) => {
let curData = [...selectData]; setSelectData(selectList);
let newQuotaList = [...quotaList]; console.log(selectList, 'onCheckboxChange');
let data = curData.filter((item) => item.title === e.target.value);
if (data.length) {
curData = curData.filter((item) => item.title !== e.target.value);
} else {
curData.push({ key: e.target.value, title: e.target.value });
}
newQuotaList.forEach((item) => {
if (item.title === e.target.value) item.checked = !item.checked;
});
setSelectData(curData);
setQuotaList(newQuotaList);
console.log(e.target.value, 'onCheckboxChange');
};
const onSearch = (e) => {
if (e.type === 'keydown') {
console.log(e.target.value, 'onSearch');
}
};
const onRadioChange = (e) => {
console.log(e, 'onRadioChange');
};
const onCancelSelect = ({ title }) => {
let curData = [...selectData];
let newQuotaList = [...quotaList];
let data = curData.filter((item) => item.title !== title);
newQuotaList.forEach((item) => {
if (item.title === title) item.checked = !item.checked;
});
setSelectData(data);
setQuotaList(newQuotaList);
console.log(title, 'onCancelSelect');
};
const onDragEnter = (info) => {
console.log(info, 'onDragEnter');
}; };
const onDrop = (info) => { const onCancelSelect = ({ selectList }) => {
console.log(info, 'onDrop'); setSelectData(selectList);
console.log(selectList, 'onCancelSelect');
const dropKey = info.node.key;
const dragKey = info.dragNode.key;
const dropPos = info.node.pos.split('-');
const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);
const loop = (data, key, callback) => {
for (let i = 0; i < data.length; i++) {
if (data[i].key === key) {
return callback(data[i], i, data);
}
if (data[i].children) {
loop(data[i].children, key, callback);
}
}
}; };
const data = [...selectData]; const onTreeDrop = ({ selectList }) => {
setSelectData(selectList);
let dragObj; console.log(selectList, 'onTreeDrop');
loop(data, dragKey, (item, index, arr) => {
arr.splice(index, 1);
dragObj = item;
});
if (!info.dropToGap) {
loop(data, dropKey, (item) => {
item.children = item.children || [];
item.children.unshift(dragObj);
});
} else if (
(info.node.props.children || []).length > 0 && // Has children
info.node.props.expanded && // Is expanded
dropPosition === 1 // On the bottom gap
) {
loop(data, dropKey, (item) => {
item.children = item.children || [];
item.children.unshift(dragObj);
});
} else {
let ar;
let i;
loop(data, dropKey, (item, index, arr) => {
ar = arr;
i = index;
});
if (dropPosition === -1) {
ar.splice(i, 0, dragObj);
} else {
ar.splice(i + 1, 0, dragObj);
}
}
setSelectData(data);
}; };
return ( return (
...@@ -159,20 +67,13 @@ const Demo = () => { ...@@ -159,20 +67,13 @@ const Demo = () => {
}} }}
onModalCancel={onModalCancel} onModalCancel={onModalCancel}
onModalOk={onModalOk} onModalOk={onModalOk}
onModalClose={onModalClose}
maximum={3} maximum={3}
targetValue={'emphasis'}
dataSource={quotaList} dataSource={quotaList}
selectData={selectData} selectData={selectData}
onSearch={onSearch}
searchPrefix={<SearchOutlined />}
onRadioChange={onRadioChange}
onCheckboxChange={onCheckboxChange} onCheckboxChange={onCheckboxChange}
onCancelSelect={onCancelSelect} onCancelSelect={onCancelSelect}
treeProps={{ onTreeDrop={onTreeDrop}
draggable: true,
onDragEnter,
onDrop,
}}
/> />
); );
}; };
......
import React, { useContext, useState } from 'react'; import React, { useContext, useEffect, useState } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import { Button, Input, Radio, Modal, Checkbox, Row, Col, Tree, ConfigProvider } from 'antd'; import { Button, Input, Radio, Modal, Checkbox, Row, Col, Tree, ConfigProvider } from 'antd';
...@@ -13,24 +13,67 @@ const QuotaSelect = ({ ...@@ -13,24 +13,67 @@ const QuotaSelect = ({
width, width,
title, title,
cancelText, cancelText,
okText,
onModalOk, onModalOk,
onModalCancel, onModalCancel,
onModalClose,
searchPrefix, searchPrefix,
placeholder, placeholder,
targetValue,
maximum, maximum,
dataSource, dataSource,
selectData, selectData,
onSearch,
onRadioChange,
onCheckboxChange, onCheckboxChange,
onCancelSelect, onCancelSelect,
treeProps, treeProps,
onTreeDrop,
}) => { }) => {
const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
const prefixCls = getPrefixCls('quota-select'); const prefixCls = getPrefixCls('quota-select');
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
const [targetValue, setTargetValue] = useState('emphasis');
const [allQuotaList, setAllQuotaList] = useState([]);
const [quotaList, setQuotaList] = useState([]);
useEffect(() => {
if (dataSource.length > 0) {
let data = dataSource.map((item) => ({
...item,
checked: false,
title: item.Name,
key: item.Name,
}));
setAllQuotaList(data);
}
}, [dataSource]);
useEffect(() => {
if (targetValue === 'emphasis') {
filterEmphasisQuota();
}
}, [allQuotaList]);
useEffect(() => {
let data = [...allQuotaList];
data.forEach((item) => {
item.checked = false;
if (selectData.length > 0) {
selectData.forEach((child) => {
if (child.key === item.key) {
item.checked = true;
}
});
}
});
setAllQuotaList(data);
}, [selectData]);
// 过滤重点指标
const filterEmphasisQuota = () => {
let newQuotaList = [...allQuotaList];
newQuotaList = newQuotaList.filter((item) => item.IsShow === '1');
setQuotaList(newQuotaList);
};
// 展示模态框 // 展示模态框
const showModal = () => { const showModal = () => {
...@@ -42,15 +85,139 @@ const QuotaSelect = ({ ...@@ -42,15 +85,139 @@ const QuotaSelect = ({
if (e.target.innerHTML === cancelText) { if (e.target.innerHTML === cancelText) {
onModalCancel && onModalCancel(); onModalCancel && onModalCancel();
} else { } else {
onModalClose && onModalClose();
setVisible(false); setVisible(false);
} }
}; };
const onOk = (e) => { const onOk = () => {
onModalOk && onModalOk(); onModalOk && onModalOk();
setVisible(false); setVisible(false);
}; };
// 切换重点与全部
const onRadioChange = (e) => {
if (e.target.value === 'all') {
setQuotaList(allQuotaList);
} else {
filterEmphasisQuota();
}
setTargetValue(e.target.value);
};
// 搜索指标
const onSearch = (e) => {
if (e.type === 'keydown' || e.target.value === '') {
if (e.target.value !== '') {
let newQuotaList = [];
quotaList.forEach((item) => {
if (item.Name.indexOf(e.target.value) > -1) newQuotaList.push(item);
});
setQuotaList(newQuotaList);
} else {
if (targetValue === 'all') {
setQuotaList(allQuotaList);
} else {
filterEmphasisQuota();
}
}
}
};
// 处理复选框点击事件
const handleCheckboxChange = (e) => {
let newQuotaList = [...allQuotaList];
let curSelectKey = [];
let curSelectList = [...selectData];
let data = curSelectList.filter((item) => item.title === e.target.value);
if (data.length) {
curSelectList = curSelectList.filter((item) => item.title !== e.target.value);
} else {
curSelectList.push({ key: e.target.value, title: e.target.value });
}
newQuotaList.forEach((item) => {
if (item.title === e.target.value) {
item.checked = !item.checked;
}
});
curSelectKey = curSelectList.map((item) => item.key);
onCheckboxChange({
selectKey: curSelectKey,
selectList: curSelectList,
});
setAllQuotaList(newQuotaList);
};
// 处理取消选择按钮点击事件
const handleCancelSelect = ({ title }) => {
let data = [...selectData];
data = data.filter((item) => item.title !== title);
onCancelSelect({
selectKey: data.map((item) => item.key),
selectList: data,
});
};
// 拖动选中树节点
const handleDrop = (info) => {
const dropKey = info.node.key;
const dragKey = info.dragNode.key;
const dropPos = info.node.pos.split('-');
const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);
const loop = (data, key, callback) => {
for (let i = 0; i < data.length; i++) {
if (data[i].key === key) {
return callback(data[i], i, data);
}
if (data[i].children) {
loop(data[i].children, key, callback);
}
}
};
const data = [...selectData];
let dragObj;
loop(data, dragKey, (item, index, arr) => {
arr.splice(index, 1);
dragObj = item;
});
if (!info.dropToGap) {
loop(data, dropKey, (item) => {
item.children = item.children || [];
item.children.unshift(dragObj);
});
} else if (
(info.node.props.children || []).length > 0 && // Has children
info.node.props.expanded && // Is expanded
dropPosition === 1 // On the bottom gap
) {
loop(data, dropKey, (item) => {
item.children = item.children || [];
item.children.unshift(dragObj);
});
} else {
let ar;
let i;
loop(data, dropKey, (item, index, arr) => {
ar = arr;
i = index;
});
if (dropPosition === -1) {
ar.splice(i, 0, dragObj);
} else {
ar.splice(i + 1, 0, dragObj);
}
}
onTreeDrop({
selectKey: data.map((item) => item.key),
selectList: data,
});
};
return ( return (
<div className={classNames(prefixCls)}> <div className={classNames(prefixCls)}>
<Button {...buttonProps} onClick={showModal} /> <Button {...buttonProps} onClick={showModal} />
...@@ -59,6 +226,7 @@ const QuotaSelect = ({ ...@@ -59,6 +226,7 @@ const QuotaSelect = ({
width={width} width={width}
title={title} title={title}
cancelText={cancelText} cancelText={cancelText}
okText={okText}
visible={visible} visible={visible}
onCancel={handleCancel} onCancel={handleCancel}
onOk={onOk} onOk={onOk}
...@@ -101,10 +269,10 @@ const QuotaSelect = ({ ...@@ -101,10 +269,10 @@ const QuotaSelect = ({
</div> </div>
</div> </div>
<div className={classNames(`${prefixCls}-modal-option-wrap`)}> <div className={classNames(`${prefixCls}-modal-option-wrap`)}>
{!dataSource.length && <Empty />} {!quotaList.length && <Empty />}
<Row gutter={[0, 6]}> <Row gutter={[0, 6]}>
{!!dataSource.length && {!!quotaList.length &&
dataSource.map((item) => ( quotaList.map((item) => (
<Col span={8} key={item.key}> <Col span={8} key={item.key}>
<Checkbox <Checkbox
value={item.title} value={item.title}
...@@ -113,7 +281,7 @@ const QuotaSelect = ({ ...@@ -113,7 +281,7 @@ const QuotaSelect = ({
(selectData.length > maximum || selectData.length === maximum) && (selectData.length > maximum || selectData.length === maximum) &&
!item.checked !item.checked
} }
onChange={onCheckboxChange} onChange={handleCheckboxChange}
> >
{item.title} {item.title}
</Checkbox> </Checkbox>
...@@ -127,14 +295,14 @@ const QuotaSelect = ({ ...@@ -127,14 +295,14 @@ const QuotaSelect = ({
已选:{selectData.length}/{maximum} 已选:{selectData.length}/{maximum}
</div> </div>
<div className={classNames(`${prefixCls}-modal-tree`)}> <div className={classNames(`${prefixCls}-modal-tree`)}>
<Tree {...treeProps}> <Tree draggable={true} onDrop={handleDrop} {...treeProps}>
{selectData.map((item) => ( {selectData.map((item) => (
<TreeNode <TreeNode
key={item.key} key={item.key}
title={ title={
<div className={classNames(`${prefixCls}-modal-tree-title`)}> <div className={classNames(`${prefixCls}-modal-tree-title`)}>
<div>{item.title}</div> <div>{item.title}</div>
<CloseOutlined onClick={() => onCancelSelect(item)} /> <CloseOutlined onClick={() => handleCancelSelect(item)} />
</div> </div>
} }
/> />
...@@ -153,18 +321,18 @@ QuotaSelect.defaultProps = { ...@@ -153,18 +321,18 @@ QuotaSelect.defaultProps = {
width: 900, width: 900,
title: '选择显示字段', title: '选择显示字段',
cancelText: '取消选择', cancelText: '取消选择',
okText: '确定',
placeholder: '搜索关键词', placeholder: '搜索关键词',
searchPrefix: <SearchOutlined />, searchPrefix: <SearchOutlined />,
targetValue: 'emphasis',
maximum: 0, maximum: 0,
dataSource: [], dataSource: [],
selectData: [], selectData: [],
treeProps: {}, treeProps: {},
onModalCancel: () => {}, onModalCancel: () => {},
onModalOk: () => {}, onModalOk: () => {},
onSearch: () => {}, onModalClose: () => {},
onRadioChange: () => {},
onCancelSelect: () => {}, onCancelSelect: () => {},
onTreeDrop: () => {},
}; };
QuotaSelect.propTypes = { QuotaSelect.propTypes = {
...@@ -172,18 +340,18 @@ QuotaSelect.propTypes = { ...@@ -172,18 +340,18 @@ QuotaSelect.propTypes = {
width: PropTypes.number, width: PropTypes.number,
title: PropTypes.string, title: PropTypes.string,
cancelText: PropTypes.string, cancelText: PropTypes.string,
okText: PropTypes.string,
placeholder: PropTypes.string, placeholder: PropTypes.string,
searchPrefix: PropTypes.node, searchPrefix: PropTypes.node,
targetValue: PropTypes.string,
maximum: PropTypes.number, maximum: PropTypes.number,
dataSource: PropTypes.array, dataSource: PropTypes.array,
selectData: PropTypes.array, selectData: PropTypes.array,
treeProps: PropTypes.object, treeProps: PropTypes.object,
onModalCancel: PropTypes.func, onModalCancel: PropTypes.func,
onModalOk: PropTypes.func, onModalOk: PropTypes.func,
onSearch: PropTypes.func, onModalClose: PropTypes.func,
onRadioChange: PropTypes.func,
onCancelSelect: PropTypes.func, onCancelSelect: PropTypes.func,
onTreeDrop: PropTypes.func,
}; };
export default QuotaSelect; export default QuotaSelect;
...@@ -2,6 +2,62 @@ ...@@ -2,6 +2,62 @@
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.2.8](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.2.5...@wisdom-components/realtimeinfo@1.2.8) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.2.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.2.6...@wisdom-components/realtimeinfo@1.2.7) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.2.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.2.2...@wisdom-components/realtimeinfo@1.2.6) (2021-04-09)
### Bug Fixes
- update historyinfo and realtimeinfo ([d937324](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d937324eb5daf4a55bea700f0c186b4ae95d98e2))
## [1.2.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.2.2...@wisdom-components/realtimeinfo@1.2.5) (2021-04-09)
### Bug Fixes
- update historyinfo and realtimeinfo ([d937324](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d937324eb5daf4a55bea700f0c186b4ae95d98e2))
## [1.2.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.2.2...@wisdom-components/realtimeinfo@1.2.4) (2021-04-09)
### Bug Fixes
- update historyinfo and realtimeinfo ([d937324](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/d937324eb5daf4a55bea700f0c186b4ae95d98e2))
## [1.2.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.2.2...@wisdom-components/realtimeinfo@1.2.3) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/realtimeinfo
## [1.2.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.2.1...@wisdom-components/realtimeinfo@1.2.2) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/realtimeinfo
## [1.2.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.2.0...@wisdom-components/realtimeinfo@1.2.1) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/realtimeinfo
# [1.2.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.1.1...@wisdom-components/realtimeinfo@1.2.0) (2021-04-02)
### Features
- add basic tools ([c7313da](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c7313daaf6584524603e6a53c117c182aa4914dc))
## [1.1.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/realtimeinfo@1.1.0...@wisdom-components/realtimeinfo@1.1.1) (2021-03-30)
### Bug Fixes
- update mock api ([c5636d4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c5636d496341d2349c83b266fc78ca7ceb8416ae))
# 1.1.0 (2021-03-24) # 1.1.0 (2021-03-24)
### Bug Fixes ### Bug Fixes
......
{ {
"name": "@wisdom-components/realtimeinfo", "name": "@wisdom-components/realtimeinfo",
"version": "1.1.0", "version": "1.2.8",
"description": "> TODO: description", "description": "> TODO: description",
"author": "tuqian <webtuqian@163.com>", "author": "tuqian <webtuqian@163.com>",
"homepage": "", "homepage": "",
...@@ -22,5 +22,8 @@ ...@@ -22,5 +22,8 @@
}, },
"scripts": { "scripts": {
"test": "echo \"Error: run tests from root\" && exit 1" "test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6"
} }
} }
import React, { useContext } from 'react'; import React, { useContext } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import { Input, Radio, Table, ConfigProvider } from 'antd'; import { Input, Radio, ConfigProvider } from 'antd';
import BasicTable from '@wisdom-components/basictable';
import './index.less'; import './index.less';
const RealTimeInfo = (props) => { const RealTimeInfo = (props) => {
...@@ -29,7 +30,7 @@ const RealTimeInfo = (props) => { ...@@ -29,7 +30,7 @@ const RealTimeInfo = (props) => {
<div>采集编码:{guid}</div> <div>采集编码:{guid}</div>
<div>更新时间:{updateTime}</div> <div>更新时间:{updateTime}</div>
</div> </div>
<Table {...props} /> <BasicTable {...props} />
</div> </div>
); );
}; };
......
...@@ -2,6 +2,63 @@ ...@@ -2,6 +2,63 @@
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.3.8](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.3.5...@wisdom-components/timerangepicker@1.3.8) (2021-04-20)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.3.7](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.3.6...@wisdom-components/timerangepicker@1.3.7) (2021-04-20)
### Bug Fixes
- package ([98cc2ff](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/98cc2ffae8f7ea2f90eceaa842a2a46a9bf143da))
- update empty ([9ff070a](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/9ff070a95febbd04726b2e330828b7a184d1ba21))
## [1.3.6](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.3.2...@wisdom-components/timerangepicker@1.3.6) (2021-04-09)
### Bug Fixes
- 解决冲突 ([c19528b](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c19528b108b9bf2268d7a765ffe04585e6ccedf7))
- update empty ([0fb8d9f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0fb8d9f60f47e216f45dd0d0d034b8931f05bbd3))
## [1.3.5](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.3.2...@wisdom-components/timerangepicker@1.3.5) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/timerangepicker
## [1.3.4](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.3.2...@wisdom-components/timerangepicker@1.3.4) (2021-04-09)
**Note:** Version bump only for package @wisdom-components/timerangepicker
## [1.3.3](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.3.2...@wisdom-components/timerangepicker@1.3.3) (2021-04-07)
**Note:** Version bump only for package @wisdom-components/timerangepicker
## [1.3.2](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.3.1...@wisdom-components/timerangepicker@1.3.2) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/timerangepicker
## [1.3.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.3.0...@wisdom-components/timerangepicker@1.3.1) (2021-04-06)
**Note:** Version bump only for package @wisdom-components/timerangepicker
# [1.3.0](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.2.1...@wisdom-components/timerangepicker@1.3.0) (2021-04-02)
### Bug Fixes
- update ImageSelect and TimeRangePicker ([0daf77f](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/0daf77f282594f051e7de63d6e57b44c12302fdd))
### Features
- add basic tools ([c7313da](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/commits/c7313daaf6584524603e6a53c117c182aa4914dc))
## [1.2.1](https://g.civnet.cn:8443/ReactWeb5/wisdom-components/compare/@wisdom-components/timerangepicker@1.2.0...@wisdom-components/timerangepicker@1.2.1) (2021-03-30)
**Note:** Version bump only for package @wisdom-components/timerangepicker
# 1.2.0 (2021-03-24) # 1.2.0 (2021-03-24)
### Bug Fixes ### Bug Fixes
......
{ {
"name": "@wisdom-components/timerangepicker", "name": "@wisdom-components/timerangepicker",
"version": "1.2.0", "version": "1.3.8",
"description": "> TODO: description", "description": "> TODO: description",
"author": "tuqian <webtuqian@163.com>", "author": "tuqian <webtuqian@163.com>",
"homepage": "", "homepage": "",
...@@ -22,5 +22,8 @@ ...@@ -22,5 +22,8 @@
}, },
"scripts": { "scripts": {
"test": "echo \"Error: run tests from root\" && exit 1" "test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6"
} }
} }
...@@ -56,7 +56,12 @@ const TimeRangePicker = ({ ...@@ -56,7 +56,12 @@ const TimeRangePicker = ({
const renderVertical = () => { const renderVertical = () => {
return !!dataSource.length ? ( return !!dataSource.length ? (
<Select value defaultValue={defaultValue} style={{ width: width }} onChange={onSelectChange}> <Select
value={value}
defaultValue={defaultValue}
style={{ width: width }}
onChange={onSelectChange}
>
{dataSource.map((item) => ( {dataSource.map((item) => (
<Option key={item.key} value={item.key}> <Option key={item.key} value={item.key}>
{item.name} {item.name}
......
...@@ -121,6 +121,7 @@ async function release() { ...@@ -121,6 +121,7 @@ async function release() {
pkgs.forEach((pkg, index) => { pkgs.forEach((pkg, index) => {
const pkgPath = join(cwd, 'packages', pkg.replace('pro-', '')); const pkgPath = join(cwd, 'packages', pkg.replace('pro-', ''));
const { name, version } = require(join(pkgPath, 'package.json')); const { name, version } = require(join(pkgPath, 'package.json'));
if (name === 'parseform') return false;
const isNext = isNextVersion(version); const isNext = isNextVersion(version);
let isPackageExist = null; let isPackageExist = null;
if (args.publishOnly) { if (args.publishOnly) {
......
...@@ -27,6 +27,7 @@ console.log(externals); ...@@ -27,6 +27,7 @@ console.log(externals);
const webPackConfigList = []; const webPackConfigList = [];
tailPkgs.forEach((pkg) => { tailPkgs.forEach((pkg) => {
if (pkg == 'ParseForm') return false;
const entry = {}; const entry = {};
entry[`${pkg}`] = `./packages/${pkg}/src/index.js`; entry[`${pkg}`] = `./packages/${pkg}/src/index.js`;
entry[`${pkg}.min`] = `./packages/${pkg}/src/index.js`; entry[`${pkg}.min`] = `./packages/${pkg}/src/index.js`;
......
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