|
@@ -2,11 +2,30 @@ import React from 'react';
|
|
import { Input, Button, DatePicker } from 'antd';
|
|
import { Input, Button, DatePicker } from 'antd';
|
|
import { SearchOutlined } from '@ant-design/icons';
|
|
import { SearchOutlined } from '@ant-design/icons';
|
|
import { useIntl, FormattedMessage } from 'react-intl';
|
|
import { useIntl, FormattedMessage } from 'react-intl';
|
|
|
|
+import { useDispatch, useSelector } from 'react-redux';
|
|
|
|
+import dayjs from 'dayjs';
|
|
|
|
+import {
|
|
|
|
+ setId,
|
|
|
|
+ setName,
|
|
|
|
+ setAccNo,
|
|
|
|
+ setStartTime,
|
|
|
|
+ setEndTime,
|
|
|
|
+ setStatus,
|
|
|
|
+ setPage,
|
|
|
|
+ setPageSize,
|
|
|
|
+} from '../../../states/patient/worklist/slices/searchSlice';
|
|
|
|
+import { RootState } from '../../../states/store';
|
|
|
|
|
|
const { RangePicker } = DatePicker;
|
|
const { RangePicker } = DatePicker;
|
|
|
|
|
|
const SearchPanel: React.FC = () => {
|
|
const SearchPanel: React.FC = () => {
|
|
const intl = useIntl();
|
|
const intl = useIntl();
|
|
|
|
+ const dispatch = useDispatch();
|
|
|
|
+ const id = useSelector((state: RootState) => state.search.id);
|
|
|
|
+ const name = useSelector((state: RootState) => state.search.name);
|
|
|
|
+ const accNo = useSelector((state: RootState) => state.search.acc_no);
|
|
|
|
+ const startTime = useSelector((state: RootState) => state.search.start_time);
|
|
|
|
+ const endTime = useSelector((state: RootState) => state.search.end_time);
|
|
|
|
|
|
return (
|
|
return (
|
|
<div className="flex flex-col gap-2 w-full">
|
|
<div className="flex flex-col gap-2 w-full">
|
|
@@ -17,6 +36,8 @@ const SearchPanel: React.FC = () => {
|
|
})}
|
|
})}
|
|
prefix={<SearchOutlined />}
|
|
prefix={<SearchOutlined />}
|
|
size="small"
|
|
size="small"
|
|
|
|
+ value={name}
|
|
|
|
+ onChange={(e) => dispatch(setName(e.target.value))}
|
|
/>
|
|
/>
|
|
<Input
|
|
<Input
|
|
placeholder={intl.formatMessage({
|
|
placeholder={intl.formatMessage({
|
|
@@ -25,6 +46,8 @@ const SearchPanel: React.FC = () => {
|
|
})}
|
|
})}
|
|
prefix={<SearchOutlined />}
|
|
prefix={<SearchOutlined />}
|
|
size="small"
|
|
size="small"
|
|
|
|
+ value={id}
|
|
|
|
+ onChange={(e) => dispatch(setId(e.target.value))}
|
|
/>
|
|
/>
|
|
<Input
|
|
<Input
|
|
placeholder={intl.formatMessage({
|
|
placeholder={intl.formatMessage({
|
|
@@ -33,6 +56,8 @@ const SearchPanel: React.FC = () => {
|
|
})}
|
|
})}
|
|
prefix={<SearchOutlined />}
|
|
prefix={<SearchOutlined />}
|
|
size="small"
|
|
size="small"
|
|
|
|
+ value={accNo}
|
|
|
|
+ onChange={(e) => dispatch(setAccNo(e.target.value))}
|
|
/>
|
|
/>
|
|
<RangePicker
|
|
<RangePicker
|
|
className="w-full"
|
|
className="w-full"
|
|
@@ -47,8 +72,23 @@ const SearchPanel: React.FC = () => {
|
|
}),
|
|
}),
|
|
]}
|
|
]}
|
|
size="small"
|
|
size="small"
|
|
|
|
+ value={[dayjs(startTime), dayjs(endTime)]}
|
|
|
|
+ onChange={(dates) => {
|
|
|
|
+ if (dates && dates[0] && dates[1]) {
|
|
|
|
+ dispatch(setStartTime(dates[0].toISOString()));
|
|
|
|
+ dispatch(setEndTime(dates[1].toISOString()));
|
|
|
|
+ }
|
|
|
|
+ }}
|
|
/>
|
|
/>
|
|
- <Button type="primary" icon={<SearchOutlined />}>
|
|
|
|
|
|
+ <Button
|
|
|
|
+ type="primary"
|
|
|
|
+ icon={<SearchOutlined />}
|
|
|
|
+ onClick={() => {
|
|
|
|
+ dispatch(setStatus('Arrived,InProgress'));
|
|
|
|
+ dispatch(setPage(1));
|
|
|
|
+ dispatch(setPageSize(10));
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
<FormattedMessage
|
|
<FormattedMessage
|
|
id="searchPanel.search"
|
|
id="searchPanel.search"
|
|
defaultMessage="searchPanel.search"
|
|
defaultMessage="searchPanel.search"
|