Kaynağa Gözat

Merge remote-tracking branch 'origin/dev' into dev

zhouna 3 yıl önce
ebeveyn
işleme
89fe6e3f46

Dosya farkı çok büyük olduğundan ihmal edildi
+ 21039 - 22
package-lock.json


+ 1 - 2
src/api/request.js

@@ -129,7 +129,6 @@ const request = {
     getColumnResultNumber:'/daqe-center/columnResultManagement/getColumnResultNumber',//字段校验问题明细数量
     dataCheck:'/daqe-center/columnResultManagement/dataCheck',//数据校验
     updateColumnResult:'/daqe-center/columnResultManagement/updateColumnResult',//修改
-    
 
     getBlockLossPage:'/daqe-center/blockLossManage/getBlockLossPage',//病历数据丢失明细列表
     upBlockLossById:'/daqe-center/blockLossManage/upBlockLossById',//病历数据丢失明细修改
@@ -140,7 +139,7 @@ const request = {
     getRegularPage:'/daqe-center/regularManage/getRegularPage',//正则式维护列表
     addRegular:'/daqe-center/regularManage/addRegular',//新增正则
     upRegularById:'/daqe-center/regularManage/upRegularById',//修改正则
-    delRegularById:'/daqe-center/regularManage/delRegularById',//修改正则
+    delRegularById:'/daqe-center/regularManage/delRegularById',//删除正则
     
 }
 

+ 25 - 1
src/common/common.less

@@ -110,13 +110,37 @@ body{
   background: #FE9748;
   border-radius: 50%;
 }
-
+.Delete::before{
+  content: "";
+  width: 5px;
+  height: 5px;
+  display: block;
+  position: absolute;
+  left: 8px;
+  top: 24px;
+  background: #FF4D4D;
+  border-radius: 50%;
+}
+.Adopt::before{
+  content: "";
+  width: 5px;
+  height: 5px;
+  display: block;
+  position: absolute;
+  left: 8px;
+  top: 24px;
+  background: #FF4D4D;
+  border-radius: 50%;
+}
 .disable{
   color: #FB8537 ;
 }
 .delete{
   color:#FF4D4D
 }
+.adopt{
+  color:#22AC76
+}
 .menuItem:hover{
   color: @primary-color;
   background: #DBEEFF;

+ 23 - 10
src/components/BlockLossManage/editBlock.js

@@ -13,9 +13,9 @@ function EditBlock(props) {
     useEffect(() => {
     }, []);
     const [form] = Form.useForm();
+    const [dates, setDates] = useState([]);
     const { blockDetail, type } = useContext(BlockContext);
     const initialValues = blockDetail;
-    console.log(initialValues);
     const onFinish = values => {
         if (type == 1) {
 
@@ -42,6 +42,14 @@ function EditBlock(props) {
             }
         })
     }
+    function disabledDate(current) {
+        if (!dates || dates.length === 0) {
+            return current && current >= moment().endOf('day');
+        }
+        const tooLate = dates[0] && current.diff(dates[0], 'days') > 30;
+        const tooEarly = dates[1] && dates[1].diff(current, 'days') > 30;
+        return current && current >= moment().endOf('day') || tooEarly || tooLate;
+    };
     //数据对比
     function dataCompare(values) {
         values.startDate = moment(values.time[0]).format('YYYY-MM-DD 00:00:00');
@@ -74,6 +82,7 @@ function EditBlock(props) {
                 layout={type == 3 ? 'inline' : 'horizontal'}
                 onFinish={onFinish}
                 initialValues={initialValues}
+                className='block'
             >
                 <Col span={12} hidden={type != 3}>
                     <Form.Item
@@ -150,12 +159,18 @@ function EditBlock(props) {
                         />
                     </Form.Item>
                 </Col>
+
+
                 <Col span={24} hidden={type == 3}>
-                    <Form.Item label="日期" name="time" rules={[{ required: true }]} labelAlign="right">
-                        <RangePicker
-                            placeholder={['开始时间', '结束时间']}
-                        />
-                    </Form.Item>
+                    {type != 3 ?
+                        <Form.Item label="日期" name="time" rules={[{ required: true }]} labelAlign="right">
+                            <RangePicker
+                                placeholder={['开始时间', '结束时间']}
+                                disabledDate={disabledDate}
+                                onCalendarChange={val => setDates(val)}
+                            />
+                        </Form.Item>
+                        : ''}
                 </Col>
                 <Col span={24} hidden={type == 3} style={{ marginTop: 15 }}>
                     <Form.Item label="住院序号" name="behospitalCode">
@@ -164,7 +179,7 @@ function EditBlock(props) {
                 </Col>
                 {
                     type == 1 ?
-                        <div>
+                        <div style={{color:'#1690FF'}}>
                             提示:<br />
                             1、补录时间范围限制为30天,每一天数据量的同步时间约为1分钟。<br />
                             时间范围以患者入院时间为准。<br />
@@ -172,13 +187,11 @@ function EditBlock(props) {
                         </div>
                         :
                         type == 2 ?
-                            <div>
+                            <div style={{color:'#1690FF'}}>
                                 提示:将比对所有【已丢失】状态数据和患者入院在时间范围内的数据。
                             </div>
                             : ''
                 }
-
-
                 <Form.Item wrapperCol={type == 3 ? { offset: 24, span: 16 } : { offset: 8, span: 16 }} style={{ marginTop: 15 }}>
                     <Space size="middle" >
                         <Button htmlType="button" onClick={e => cancel()}>

+ 49 - 63
src/components/BlockLossManage/index.js

@@ -7,6 +7,7 @@ import './index.less'
 import apiObj from '@api/index';
 import EditBlock from './editBlock';
 import BlockContext from './block-context';
+import { disabledDate } from '@utils/index'
 const { post, api, xPost } = apiObj;
 const { RangePicker } = DatePicker;
 const { Option } = Select;
@@ -22,6 +23,11 @@ function BlockLossManage() {
     const [size, setSize] = useState(15);
     const [current, setCurrent] = useState(1);
     const [type, setType] = useState(null);
+    const [blockData, setBlockData] = useState({
+        pages: 1,
+        current: 1,
+        size: 15
+    });
     const [blockDetail, setBlockDetail] = useState(null);//详情数据
     const [params, setParams] = useState({
         pages: 1,
@@ -49,8 +55,11 @@ function BlockLossManage() {
         post(api.blockLossTypeGather, { startDate: startDate || params.startDate, endDate: endDate || params.endDate }).then((res) => {
             if (res.data.code === 200) {
                 const data = res.data.data;
-                setBlockList(data.records);
-                setTotal(data.total)
+                let arr = {}
+                arr = data
+                console.log(data);
+                setBlockData(data)
+                console.log(blockData);
             }
         })
     }
@@ -76,29 +85,7 @@ function BlockLossManage() {
         setCurrent(page)
         getBlockLossPage()
     }
-    const disabledDate = (current) => {
-        return current && current >= moment().endOf('day'); // 选择时间要大于等于当前天。若今天不能被选择,去掉等号即可。
-    }
-    const range = (start, end) => {
-        const result = [];
-        for (let i = start; i <= end; i++) {
-            result.push(i);
-        }
-        return result;
-    };
-    const disabledDateTime = (dates, partial) => {
-        let hours = moment().hours();//0~23
-        let minutes = moment().minutes();//0~59
-        let seconds = moment().seconds();//0~59
-        //当日只能选择当前时间之后的时间点
-        if (dates && moment(dates[1]).date() === moment().date() && partial == 'end') {
-            return {
-                disabledHours: () => range(hours + 1, 23),
-                disabledMinutes: () => range(minutes + 1, 59),
-                disabledSeconds: () => range(seconds + 1, 59),
-            };
-        }
-    }
+    
     //返回
     function cancel() {
         setVisible(false)
@@ -148,12 +135,12 @@ function BlockLossManage() {
         { title: '更新时间', dataIndex: 'auditTime', key: 'auditTime' },
         {
             title: '状态', key: 'status', render: (text, record) => {
-                return (<span className={(record.status === '已恢复') ? 'Enable' : 'Disable'}>{record.status == 0 ? '已丢失' : record.status == 1 ? '已恢复' : ''}</span>);
+                return (<span className={(record.status === '已恢复') ? 'Adopt' : 'Delete'}>{record.status == 0 ? '已丢失' : record.status == 1 ? '已恢复' : ''}</span>);
             }
         },
         {
             title: '审核结果', key: 'isAudited', render: (text, record) => {
-                return (<span className={(record.isAudited === '0') ? 'delete' : (record.isAudited === '1') ? 'disable' : ''}>{record.isAudited == 0 ? '未通过' : record.isAudited == 1 ? '已通过' : record.isAudited == 2 ? '未核查' : ''}</span>);
+                return (<span className={(record.isAudited === '0') ? 'delete' : (record.isAudited === '1') ? 'adopt' : 'disable'}>{record.isAudited == 0 ? '审核未通过' : record.isAudited == 1 ? '审核通过' : record.isAudited == 2 ? '未核查' : ''}</span>);
             }
         },
         {
@@ -179,7 +166,6 @@ function BlockLossManage() {
                             <Form.Item label="日期" name="time">
                                 <RangePicker
                                     disabledDate={disabledDate} // 限制日期不可选
-                                    disabledTime={disabledDateTime}
                                     placeholder={['开始时间', '结束时间']}
                                 />
                             </Form.Item>
@@ -274,57 +260,57 @@ function BlockLossManage() {
                 </div>
                 <div className="table-data">
                     <Row className="data-box">
-                        <Col span={6} order={4} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
-                        </Col>
-                        <Col span={6} order={3} className="data-item">
-                            <p>1000</p>
+                        <Col span={6} order={1} className="data-item">
+                            <p>{blockData.hisNum || '-'}</p>
                             <p>His</p>
                         </Col>
                         <Col span={6} order={2} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                            <p>{blockData.logNum || '-'}</p>
+                            <p>接口日志</p>
                         </Col>
-                        <Col span={6} order={1} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={3} className="data-item">
+                            <p>{blockData.realNum || '-'}</p>
+                            <p>实际</p>
+                        </Col>
+                        <Col span={6} order={4} className="data-item item" >
+                            <p>{blockData.allLossNum || '-'}</p>
+                            <p>合计丢失</p>
                         </Col>
                     </Row>
                     <Row className="data-box">
-                        <Col span={6} order={4} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={1} className="box-item">
+                            <p>{blockData.outRecNum || '-'}</p>
+                            <p>文书丢失</p>
                         </Col>
-                        <Col span={6} order={3} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={2} className="box-item">
+                            <p>{blockData.outHomePageNum || '-'}</p>
+                            <p>病案首页丢失</p>
                         </Col>
-                        <Col span={6} order={2} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={3} className="box-item">
+                            <p>{blockData.outCodeNum || '-'}</p>
+                            <p>病历号丢失</p>
                         </Col>
-                        <Col span={6} order={1} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={4} className="box-item box">
+                            <p>{blockData.outLossNum || '-'}</p>
+                            <p>外部丢失</p>
                         </Col>
                     </Row>
                     <Row className="data-box">
-                        <Col span={6} order={4} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={1} className="box-item">
+                            <p>{blockData.inRecNum || '-'}</p>
+                            <p>文书丢失</p>
                         </Col>
-                        <Col span={6} order={3} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={2} className="box-item">
+                            <p>{blockData.inHomePageNum || '-'}</p>
+                            <p>病案首页丢失</p>
                         </Col>
-                        <Col span={6} order={2} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={3} className="box-item">
+                            <p>{blockData.inCodeNum || '-'}</p>
+                            <p>病历号丢失</p>
                         </Col>
-                        <Col span={6} order={1} className="data-item">
-                            <p>1000</p>
-                            <p>His</p>
+                        <Col span={6} order={4} className="box-item box">
+                            <p>{blockData.inLossNum || '-'}</p>
+                            <p>内部丢失</p>
                         </Col>
                     </Row>
                 </div>

+ 54 - 22
src/components/BlockLossManage/index.less

@@ -9,30 +9,62 @@
     box-shadow: 0px 2px 4px 0px rgba(208, 208, 208, 0.5);
     border-radius: 2px;
     border: 1px solid #e2e5ef;
-    .data-item{
-        display: flex;
-        flex-flow: column;
-        justify-content: center;
-        align-items: center;
-        & p{
-            margin-bottom: 0;
-        }
+    .data-item {
+      display: flex;
+      flex-flow: column;
+      justify-content: center;
+      align-items: center;
+      & p {
+        margin-bottom: 0;
+      }
     }
     .data-item::after {
-        content: '';
-        display: block;
-        width: 6px;
-        height: 12px;
-        background: url(../../images/icon-right.png) no-repeat;
-        background-size: 6px 12px;
-        position: absolute;
-        right: 0;
-        top: 18px;
-    }
-    .data-item :first-child::after {
-        
-        display: none;
-       
+      content: "";
+      display: block;
+      width: 6px;
+      height: 12px;
+      background: url(../../images/icon-right.png) no-repeat;
+      background-size: 6px 12px;
+      position: absolute;
+      right: 0;
+      top: 18px;
     }
+    .item {
+      color: #e34d59;
+    }
+    .item::after {
+      display: none;
+    }
+
+    .box-item{
+      display: flex;
+      flex-flow: column;
+      justify-content: center;
+      align-items: center;
+      & p {
+        margin-bottom: 0;
+      }
+    }
+    .box-item::after {
+      content: "";
+      display: block;
+      width: 1px;
+      background: #E2E5EF;
+      height: 12px;
+      position: absolute;
+      right: 0;
+      top: 18px;
+    }
+    .box::after {
+      display: none;
+    }
+    .box {
+      color: #1690FF;
+    }
+  }
+}
+.block {
+  .ant-form-item-label {
+    width: 70px;
   }
 }

+ 209 - 205
src/components/DutyRecord/index.js

@@ -1,225 +1,229 @@
 import React, { useState, useEffect, useRef } from 'react';
-import { Form, Input, Button, Table, Pagination, Row, Col, Select, Modal,DatePicker } from 'antd';
+import { Form, Input, Button, Table, Pagination, Row, Col, Select, Modal, DatePicker } from 'antd';
 import '@common/common.less';
 import apiObj from '@api/index';
 import moment from "moment";
 import "moment/locale/zh-cn"
-import {message} from "antd/lib/index";
+import { message } from "antd/lib/index";
+import { disabledDate } from '@utils/index'
 const { post, api, xPost } = apiObj;
 const { RangePicker } = DatePicker;
 const { Option } = Select;
 function DutyRecord() {
-  useEffect(() => {
-	getDutyRecord();
-  }, []);
-  const [logList, setLogList] = useState([]);
-  const [total, setTotal] = useState(0);
-  const [visible, setVisible] = useState(false);
-  const [size, setSize] = useState(15);
-  const [current, setCurrent] = useState(1);
-  const [selectedRowKeys, setSelectedRowKeys] = useState([]);
-  const [params, setParams] = useState({
-	pages: 1,
-	current: 1,
-	size: 15
-  });
-  const [form] = Form.useForm();
-  const typeMap = {
-    '1':'职务变更',
-	'2':'职称变更'
-  };
-  let data = {
-	pages: 1,
-	current: 1,
-	size: size
-  }
-  //表格数据
-  function getDutyRecord(param) {
-	post(api.getOfficialCapacityPage, param || params).then((res) => {
-	  if (res.data.code === 200) {
-		const data = res.data.data;
-		setLogList(data.records);
-		setTotal(data.total)
-	  }
-	})
-  }
-  //删除记录
-  function delRecord(){
-	post(api.delOfficialCapacityPage, {id:selectedRowKeys}).then((res) => {
-	  if (res.data.code === 200) {
-	    //刷新列表
-		getDutyRecord()
-	  }else{
-		message.warning(res.data.msg||'操作失败,请重试~');
-	  }
+	useEffect(() => {
+		getDutyRecord();
+	}, []);
+	const [logList, setLogList] = useState([]);
+	const [total, setTotal] = useState(0);
+	const [visible, setVisible] = useState(false);
+	const [size, setSize] = useState(15);
+	const [current, setCurrent] = useState(1);
+	const [selectedRowKeys, setSelectedRowKeys] = useState([]);
+	const [params, setParams] = useState({
+		pages: 1,
+		current: 1,
+		size: 15
 	});
-	showDelModal(false);
-  }
-  //删除弹窗确认
-  function showDelModal(flag){
-	  console.log(selectedRowKeys)
-    if(flag&&!selectedRowKeys.length){
-	  message.warning("请先选择要删除的记录~",1);
-	  return;
+	const [form] = Form.useForm();
+	const typeMap = {
+		'1': '职务变更',
+		'2': '职称变更'
+	};
+	let data = {
+		pages: 1,
+		current: 1,
+		size: size
+	}
+	//表格数据
+	function getDutyRecord(param) {
+		post(api.getOfficialCapacityPage, param || params).then((res) => {
+			if (res.data.code === 200) {
+				const data = res.data.data;
+				setLogList(data.records);
+				setTotal(data.total)
+			}
+		})
+	}
+	//删除记录
+	function delRecord() {
+		post(api.delOfficialCapacityPage, { id: selectedRowKeys }).then((res) => {
+			if (res.data.code === 200) {
+				//刷新列表
+				getDutyRecord()
+			} else {
+				message.warning(res.data.msg || '操作失败,请重试~');
+			}
+		});
+		showDelModal(false);
+	}
+	//删除弹窗确认
+	function showDelModal(flag) {
+		console.log(selectedRowKeys)
+		if (flag && !selectedRowKeys.length) {
+			message.warning("请先选择要删除的记录~", 1);
+			return;
+		}
+		setVisible(flag)
 	}
-	setVisible(flag)
-  }
-
-  function onSizeChange(current, pageSize) {
-	params.current = current
-	params.size = pageSize
-	setSize(pageSize)
-	setCurrent(current)
-	setParams(params)
-	getDutyRecord()
-  }
-  function changePage(page, pageSize) {
-	params.current = page
-	params.size = pageSize
-	setParams(params)
-	setCurrent(page)
-	getDutyRecord()
-  }
-	function onTypeChange(){
 
+	function onSizeChange(current, pageSize) {
+		params.current = current
+		params.size = pageSize
+		setSize(pageSize)
+		setCurrent(current)
+		setParams(params)
+		getDutyRecord()
 	}
-  function onSelectChange(selectedRowKeys){
-	setSelectedRowKeys(selectedRowKeys);
-  };
-  const onFinish = (value) => {
-	if (value.changeTime){
-	  value.changeTimeStart = moment(value.changeTime[0]).format('YYYY-MM-DD 00:00:00')
-	  value.changeTimeEnd = moment(value.changeTime[1]).format('YYYY-MM-DD 23:23:59')
+	function changePage(page, pageSize) {
+		params.current = page
+		params.size = pageSize
+		setParams(params)
+		setCurrent(page)
+		getDutyRecord()
 	}
-	const param = {
-	  ...data,
-	  ...value,
+	function onTypeChange() {
+
 	}
-	setCurrent(1)
-	setParams(param)
-	getDutyRecord(param);
-  };
-  const onReset = () => {
-	setCurrent(1)
-	setParams(data)
-	form.resetFields();
-	getDutyRecord(data);
-  };
-  const columns = [
-	{ title: '医生姓名', dataIndex: 'doctorName', key: 'doctorName' },
-	{ title: '科室', dataIndex: 'deptName', key: 'deptName' },
-	{ title: '工号', dataIndex: 'doctorCode', key: 'doctorCode' },
-	{ title: '变更时间', dataIndex: 'changeTime', key: 'changeTime' },
-	{ title: '职务/职称名称', dataIndex: 'name', key: 'name' },
-	{ title: '变更类型', dataIndex: 'type', key: 'type',render:(text,record)=>{
-	  return typeMap[record.type];
-  } },
-  ];
-  const rowSelection = {
-	selectedRowKeys,
-	onChange: onSelectChange,
-  };
-  return (
-	  <div className="wrapper">
-		<div className="filter-box">
-		  <Form
-			  form={form}
-			  name="normal_login"
-			  onFinish={onFinish}
-		  >
-			<Row gutter={24}>
-			  <Col span={5} key={0}>
-				<Form.Item label="医生姓名" name="doctorName">
-				  <Input placeholder="请输入" autoComplete='off'/>
-				</Form.Item>
-			  </Col>
-			  <Col span={5} key={1}>
-				<Form.Item label="科室" name="deptName">
-				  <Input placeholder="请输入" autoComplete='off'/>
-				</Form.Item>
-			  </Col>
-			  <Col span={5} key={2}>
-				<Form.Item label="工号" name="doctorCode">
-				  <Input placeholder="请输入" autoComplete='off'/>
-				</Form.Item>
-			  </Col>
-			  <Col span={5} key={3}>
-				<Form.Item label="职务/职称名称" name="name">
-				  <Input placeholder="请输入" autoComplete='off'/>
-				</Form.Item>
-			  </Col>
-			  <Col span={5} key={4}>
-				<Form.Item label="变更类型" name="type">
-				  <Select
-					  placeholder="请选择"
-					  onChange={onTypeChange}
-					  allowClear
-				  >
-					<Option value="0" key={0}>全部</Option>
-					<Option value="1" key={1}>{typeMap['1']}</Option>
-					<Option value="2" key={2}>{typeMap['2']}</Option>
-				  </Select>
-				</Form.Item>
-			  </Col>
-			  <Col span={7} key={5}>
-				<Form.Item label="变更时间" name="changeTime">
-				  <RangePicker
-					  placeholder={['开始时间', '结束时间']}
-				  />
-				</Form.Item>
-			  </Col>
-			  <Col span={6} key={6}>
-				<Form.Item>
-				  <Button type="primary" htmlType="submit">
-					查询
-				  </Button>
-				  <Button onClick={onReset}>
-					重置
-				  </Button>
-				</Form.Item>
-			  </Col>
-			</Row>
-		  </Form>
-		</div>
+	function onSelectChange(selectedRowKeys) {
+		setSelectedRowKeys(selectedRowKeys);
+	};
+	const onFinish = (value) => {
+		if (value.changeTime) {
+			value.changeTimeStart = moment(value.changeTime[0]).format('YYYY-MM-DD 00:00:00')
+			value.changeTimeEnd = moment(value.changeTime[1]).format('YYYY-MM-DD 23:23:59')
+		}
+		const param = {
+			...data,
+			...value,
+		}
+		setCurrent(1)
+		setParams(param)
+		getDutyRecord(param);
+	};
+	const onReset = () => {
+		setCurrent(1)
+		setParams(data)
+		form.resetFields();
+		getDutyRecord(data);
+	};
+	const columns = [
+		{ title: '医生姓名', dataIndex: 'doctorName', key: 'doctorName' },
+		{ title: '科室', dataIndex: 'deptName', key: 'deptName' },
+		{ title: '工号', dataIndex: 'doctorCode', key: 'doctorCode' },
+		{ title: '变更时间', dataIndex: 'changeTime', key: 'changeTime' },
+		{ title: '职务/职称名称', dataIndex: 'name', key: 'name' },
+		{
+			title: '变更类型', dataIndex: 'type', key: 'type', render: (text, record) => {
+				return typeMap[record.type];
+			}
+		},
+	];
+	const rowSelection = {
+		selectedRowKeys,
+		onChange: onSelectChange,
+	};
+	return (
+		<div className="wrapper">
+			<div className="filter-box">
+				<Form
+					form={form}
+					name="normal_login"
+					onFinish={onFinish}
+				>
+					<Row gutter={24}>
+						<Col span={5} key={0}>
+							<Form.Item label="医生姓名" name="doctorName">
+								<Input placeholder="请输入" autoComplete='off' />
+							</Form.Item>
+						</Col>
+						<Col span={5} key={1}>
+							<Form.Item label="科室" name="deptName">
+								<Input placeholder="请输入" autoComplete='off' />
+							</Form.Item>
+						</Col>
+						<Col span={5} key={2}>
+							<Form.Item label="工号" name="doctorCode">
+								<Input placeholder="请输入" autoComplete='off' />
+							</Form.Item>
+						</Col>
+						<Col span={5} key={3}>
+							<Form.Item label="职务/职称名称" name="name">
+								<Input placeholder="请输入" autoComplete='off' />
+							</Form.Item>
+						</Col>
+						<Col span={5} key={4}>
+							<Form.Item label="变更类型" name="type">
+								<Select
+									placeholder="请选择"
+									onChange={onTypeChange}
+									allowClear
+								>
+									<Option value="0" key={0}>全部</Option>
+									<Option value="1" key={1}>{typeMap['1']}</Option>
+									<Option value="2" key={2}>{typeMap['2']}</Option>
+								</Select>
+							</Form.Item>
+						</Col>
+						<Col span={7} key={5}>
+							<Form.Item label="变更时间" name="changeTime">
+								<RangePicker
+									disabledDate={disabledDate}
+									placeholder={['开始时间', '结束时间']}
+								/>
+							</Form.Item>
+						</Col>
+						<Col span={6} key={6}>
+							<Form.Item>
+								<Button type="primary" htmlType="submit">
+									查询
+								</Button>
+								<Button onClick={onReset}>
+									重置
+								</Button>
+							</Form.Item>
+						</Col>
+					</Row>
+				</Form>
+			</div>
 
-		<div className="table">
-		  <div className="table-header">
-			<h2 className="table-title">职务职称变更记录</h2>
-			<Button type="primary" onClick={()=>showDelModal(true)}>删除</Button>
-		  </div>
+			<div className="table">
+				<div className="table-header">
+					<h2 className="table-title">职务职称变更记录</h2>
+					<Button type="primary" onClick={() => showDelModal(true)}>删除</Button>
+				</div>
 
-		  <Table
-			  columns={columns}
-			  rowSelection={rowSelection}
-			  scroll={{ y: 'calc(100vh - 360px)' }}
-			  dataSource={logList}
-			  rowKey={record => record.id}
-			  pagination={{
-				pageSize: size,
-				size: 'small',
-				current: current,
-				showSizeChanger: true,
-				pageSizeOptions: ['15', '30', '60', '120'],
-				showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条数据`,
-				onShowSizeChange: (current, pageSize) => onSizeChange(current, pageSize), // 改变每页数量时更新显示
-				onChange: (page, pageSize) => changePage(page, pageSize),//点击页码事件
-				total: total
-			  }} />
-		</div>
-		<Modal
-			title="删除职务职称变更记录"
-			okText='确定'
-			cancelText='取消'
-			width={400}
-			visible={visible}
-			onOk={delRecord}
-			/*confirmLoading={confirmLoading}*/
-			onCancel={()=>showDelModal(false)}
-		>
-		  <p>职务职称变更记录删除后将无法恢复,确认删除这{selectedRowKeys.length}条变更记录?</p>
-		</Modal>
-	  </div >
-  )
+				<Table
+					columns={columns}
+					rowSelection={rowSelection}
+					scroll={{ y: 'calc(100vh - 360px)' }}
+					dataSource={logList}
+					rowKey={record => record.id}
+					pagination={{
+						pageSize: size,
+						size: 'small',
+						current: current,
+						showSizeChanger: true,
+						pageSizeOptions: ['15', '30', '60', '120'],
+						showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条数据`,
+						onShowSizeChange: (current, pageSize) => onSizeChange(current, pageSize), // 改变每页数量时更新显示
+						onChange: (page, pageSize) => changePage(page, pageSize),//点击页码事件
+						total: total
+					}} />
+			</div>
+			<Modal
+				title="删除职务职称变更记录"
+				okText='确定'
+				cancelText='取消'
+				width={400}
+				visible={visible}
+				onOk={delRecord}
+				/*confirmLoading={confirmLoading}*/
+				onCancel={() => showDelModal(false)}
+			>
+				<p>职务职称变更记录删除后将无法恢复,确认删除这{selectedRowKeys.length}条变更记录?</p>
+			</Modal>
+		</div >
+	)
 }
 
 export default DutyRecord;

+ 31 - 32
src/components/FieldProblem/editProblem.js

@@ -1,7 +1,7 @@
 import React, {
     useState, useEffect, useContext
 } from 'react';
-import { Form, Col, DatePicker, Button, Radio, TreeSelect, message, Space, Input } from 'antd';
+import { Form, Col, DatePicker, Button, message, Space, Input } from 'antd';
 import apiObj from '@api/index';
 import BlockContext from './problem-context';
 import moment from "moment";
@@ -13,13 +13,12 @@ function EditBlock(props) {
     useEffect(() => {
     }, []);
     const [form] = Form.useForm();
+    const [dates, setDates] = useState([]);
     const { problemDetail, type } = useContext(BlockContext);
     const initialValues = problemDetail;
     const onFinish = values => {
         if (type == 1) {
-
-        } else if (type == 2) {
-            dataCompare(values)
+            dataCheck(values)
         } else {
             editProblem(values)
         }
@@ -41,15 +40,15 @@ function EditBlock(props) {
         })
     }
     //数据对比
-    function dataCompare(values) {
+    function dataCheck(values) {
         values.startDate = moment(values.time[0]).format('YYYY-MM-DD 00:00:00');
         values.endDate = moment(values.time[1]).format('YYYY-MM-DD 23:23:59');
         let params = {
             behospitalCode: values.behospitalCode,
-            endDate: values.endDate,
-            startDate: values.startDate
+            dateEnd: values.endDate,
+            dateStart: values.startDate
         }
-        post(api.dataCompare, params).then((res) => {
+        post(api.dataCheck, params).then((res) => {
             if (res.data.code === 200) {
                 props.userChange()
                 message.success(res.data.message);
@@ -59,24 +58,34 @@ function EditBlock(props) {
             }
         })
     }
+    function disabledDate(current) {
+        if (!dates || dates.length === 0) {
+            return current && current >= moment().endOf('day');
+        }
+        const tooLate = dates[0] && current.diff(dates[0], 'days') > 30;
+        const tooEarly = dates[1] && dates[1].diff(current, 'days') > 30;
+        return current && current >= moment().endOf('day') || tooEarly || tooLate;
+    };
     function cancel() {
         props.userChange()
     }
     return (
         <>
             <Form
-                labelCol={type == 3 ? { span: 8 } : { span: 4 }}
+                labelCol={type == 3 ? { span: 16 } : { span: 4 }}
                 wrapperCol={{ span: 16 }}
                 form={form}
                 name="register"
                 layout={type == 3 ? 'inline' : 'horizontal'}
                 onFinish={onFinish}
                 initialValues={initialValues}
+                className='problem'
             >
                 <Col span={12} hidden={type != 3}>
                     <Form.Item
                         name="behospitalCode"
                         label="住院序号"
+                        labelAlign="right"
                     >
                         <span>{initialValues.behospitalCode}</span>
                     </Form.Item>
@@ -168,20 +177,6 @@ function EditBlock(props) {
 
                     </Form.Item>
                 </Col>
-                <Col span={24} hidden={type != 3}>
-                    <Form.Item
-                        name="isAudited"
-                        label="核查结果"
-                        wrapperCol={{ span: 18 }}
-                    >
-                        <Radio.Group>
-                            <Space size={70} >
-                                <Radio value={1}>核查通过</Radio>
-                                <Radio value={0}>核查未通过</Radio>
-                            </Space>
-                        </Radio.Group>
-                    </Form.Item>
-                </Col>
                 <Col span={24} hidden={type != 3}>
                     <Form.Item
                         name="description"
@@ -194,11 +189,15 @@ function EditBlock(props) {
                     </Form.Item>
                 </Col>
                 <Col span={24} hidden={type == 3}>
-                    <Form.Item label="日期" name="time" rules={[{ required: true }]} labelAlign="right">
-                        <RangePicker
-                            placeholder={['开始时间', '结束时间']}
-                        />
-                    </Form.Item>
+                    {type != 3 ?
+                        <Form.Item label="日期" name="time" rules={[{ required: true }]} labelAlign="right">
+                            <RangePicker
+                                placeholder={['开始时间', '结束时间']}
+                                disabledDate={disabledDate}
+                                onCalendarChange={val => setDates(val)}
+                            />
+                        </Form.Item>
+                        : ''}
                 </Col>
                 <Col span={24} hidden={type == 3} style={{ marginTop: 15 }}>
                     <Form.Item label="住院序号" name="behospitalCode">
@@ -207,13 +206,13 @@ function EditBlock(props) {
                 </Col>
                 {
                     type == 1 ?
-                        <div>
+                        <div style={{color:'#1690FF'}}>
                             提示:<br />
-                            1、补录时间范围限制为30天,每一天数据量的同步时间约为1分钟。<br />
+                            1、校验时间范围限制为30天,每一天数据量的校验时间约为1分钟。<br />
                             时间范围以患者入院时间为准。<br />
-                            2、当输入住院序号时,补录将不受时间范围限制。<br />
+                            2、当输入住院序号时,校验将不受时间范围限制。<br />
                         </div>
-                        :''
+                        : ''
                 }
 
 

+ 7 - 23
src/components/FieldProblem/index.js

@@ -1,10 +1,10 @@
 import React, { useState, useEffect, useRef } from 'react';
 import { Form, Input, Button, Table, Row, Col, Select, Modal, DatePicker, Space, message } from 'antd';
-import { DeleteOutlined, PlusOutlined } from '@ant-design/icons';
-import { getCookie } from '@utils/index'
+import { getCookie,disabledDate } from '@utils/index'
 import '@common/common.less';
 import moment from "moment";
 import "moment/locale/zh-cn"
+import './index.less'
 import apiObj from '@api/index';
 import EditProblem from './editProblem';
 import ProblemContext from './problem-context';
@@ -16,7 +16,6 @@ function FieldProblem() {
         getColumnResultPage();
         getColumnResultNumber()
     }, []);
-    const [addVisible, setAddVisible] = useState(false);         //新增页面显示
     const [logList, setLogList] = useState([]);
     const [total, setTotal] = useState(0);
     const [type, setType] = useState(0);//1新增 2修改
@@ -25,10 +24,6 @@ function FieldProblem() {
     const [current, setCurrent] = useState(1);
     const [problemDetail, setProblemDetail] = useState(null);//详情数据
     const [title, setTitle] = useState();//正则式数据
-    const [regularList, setRegularList] = useState([]);//正则式数据
-    const [tableList, setTableList] = useState([]);//表名称
-    const [colList, setColList] = useState([]);//字段名称
-    const [filedDetail, setFiledDetail] = useState(null);//详情数据
     const [params, setParams] = useState({
         pages: 1,
         current: 1,
@@ -57,19 +52,6 @@ function FieldProblem() {
             }
         })
     }
-    //获取正则式名称
-    function getRegular(name) {
-        const param = {
-            name: name || ''
-        }
-        post(api.getRegular, param).then((res) => {
-            if (res.data.code === 200) {
-                const data = res.data.data;
-                setRegularList(data);
-            }
-        })
-    }
-    
 
     //修改
     function showModal(title, row, type) {
@@ -161,11 +143,13 @@ function FieldProblem() {
                     form={form}
                     name="normal_login"
                     onFinish={onFinish}
+                    initialValues={{isSolved:'',type:''}}
                 >
                     <Row gutter={24}>
                         <Col span={6} key={0}>
                             <Form.Item label="日期" name="time">
                                 <RangePicker
+                                    disabledDate={disabledDate}
                                     placeholder={['开始时间', '结束时间']}
                                 />
                             </Form.Item>
@@ -187,7 +171,7 @@ function FieldProblem() {
                         </Col>
                         <Col span={5} key={4}>
                             <Form.Item label="质控模块名称" name="modeName">
-                            <Input placeholder="请输入" autoComplete='off' />
+                                <Input placeholder="请输入" autoComplete='off' />
                             </Form.Item>
                         </Col>
                         <Col span={5} key={5}>
@@ -233,7 +217,7 @@ function FieldProblem() {
                 <div className="table-header">
                     <h2 className="table-title">字段校验问题明细</h2>
                     <Space size="middle">
-                        <Button type="primary" onClick={() => showModal(1)}>数据校验</Button>
+                        <Button type="primary" onClick={() => showModal('数据校验设置', { behospitalCode: '', time: '' }, 1)}>数据校验</Button>
                     </Space>
 
                 </div>
@@ -242,7 +226,7 @@ function FieldProblem() {
                     columns={columns}
                     scroll={{ y: 'calc(100vh - 400px)' }}
                     dataSource={logList}
-                    rowKey={record => record.columnId}
+                    rowKey={record => record.id}
                     pagination={{
                         pageSize: size,
                         size: 'small',

+ 5 - 0
src/components/FieldProblem/index.less

@@ -0,0 +1,5 @@
+.problem {
+  .ant-form-item-label {
+    width: 130px;
+  }
+}

+ 18 - 7
src/components/FieldRules/addRules.js

@@ -63,7 +63,6 @@ function ContentForm(props) {
     const { type,detail } = useContext(FiledContext);
     const { back, form, cancel } = props;
     const initialValues = detail
-    console.log(initialValues);
     const vilidateRules = {
         required: '${label}不能为空!',
     };
@@ -90,6 +89,17 @@ function ContentForm(props) {
                 });
                 setTableList(columnList);
                 setList(data)
+                if(type == 2){
+                    data.forEach((item, i) => {
+                        detail.columnList.forEach(it => {
+                            if (item.getTableNameDTO.tableCname == it.tableCname) {
+                                let colList = data[i].getColumnNameDTOList
+                                setColList([...colList])
+                            }
+                        });
+        
+                    });
+                }
             }
         })
     }
@@ -140,7 +150,6 @@ function ContentForm(props) {
     }
     //正则式选择获取id
     function onChange(value, options) {
-        console.log(options);
         form.setFieldsValue({
             regularId: options ? options.key : ''
         });
@@ -185,9 +194,11 @@ function ContentForm(props) {
             setStandardValueList(standardValueList)
             seIsChange(false)
             list.forEach((item, i) => {
-                columnList.forEach(it => {
+                detail.columnList.forEach(it => {
+                    console.log(456);
                     if (item.getTableNameDTO.tableCname == it.tableCname) {
                         let colList = list[i].getColumnNameDTOList
+                        console.log(colList);
                         setColList([...colList])
                     }
                 });
@@ -214,7 +225,7 @@ function ContentForm(props) {
                                     <div className='item'>
                                         <div className='item-box'>
                                             <Form.Item label="表名称(中文)" rules={[{ required: true }]} style={{ width: '50%' }} name={['columnList', i, 'tableCname']} labelAlign="right" >
-                                                <Select showSearch allowClear onChange={tablechange} style={{ width: 160 }} placeholder="请选择">
+                                                <Select allowClear onChange={tablechange} style={{ width: 160 }} placeholder="请选择">
                                                     {tableList.map((item) => {
                                                         return (
                                                             <Option value={item.tableCname} key={item.index}>{item.tableCname}</Option>
@@ -223,7 +234,7 @@ function ContentForm(props) {
                                                 </Select>
                                             </Form.Item>
                                             <Form.Item label="表名称(英文)" rules={[{ required: true }]} name={['columnList', i, 'tableEname']} labelAlign="right">
-                                                <Select showSearch allowClear onChange={tablechange} style={{ width: 160 }} placeholder="请选择" >
+                                                <Select allowClear onChange={tablechange} style={{ width: 160 }} placeholder="请选择" >
                                                     {tableList.map((item) => {
                                                         return (
                                                             <Option value={item.tableEname} key={item.index}>{item.tableEname}</Option>
@@ -234,7 +245,7 @@ function ContentForm(props) {
                                         </div>
                                         <div className='item-box'>
                                             <Form.Item label="字段名称(中文)" rules={[{ required: true }]} style={{ width: '50%' }} name={['columnList', i, 'columnCname']} labelAlign="right">
-                                                <Select showSearch allowClear style={{ width: 160 }} placeholder="请选择" disabled={isChange}>
+                                                <Select allowClear style={{ width: 160 }} placeholder="请选择" disabled={isChange}>
                                                     {colList.map((item) => {
                                                         return (
                                                             <Option value={item.columnCname} key={item.columnCname}>{item.columnCname}</Option>
@@ -243,7 +254,7 @@ function ContentForm(props) {
                                                 </Select>
                                             </Form.Item>
                                             <Form.Item label="字段名称(英文)" rules={[{ required: true }]} name={['columnList', i, 'columnEname']} labelAlign="right">
-                                                <Select showSearch allowClear style={{ width: 160 }} placeholder="请选择" disabled={isChange}>
+                                                <Select allowClear style={{ width: 160 }} placeholder="请选择" disabled={isChange}>
                                                     {colList.map((item) => {
                                                         return (
                                                             <Option value={item.columnEname} key={item.columnEname}>{item.columnEname}</Option>

+ 7 - 5
src/components/OperationLog/index.js

@@ -4,6 +4,7 @@ import '@common/common.less';
 import apiObj from '@api/index';
 import moment from "moment";
 import "moment/locale/zh-cn"
+import { disabledDate } from '@utils/index'
 const { post, api, xPost } = apiObj;
 const { RangePicker } = DatePicker;
 function OperationLog() {
@@ -54,9 +55,9 @@ function OperationLog() {
   }
 
   const onFinish = (value) => {
-    if (value.time){
+    if (value.time) {
       value.startDate = moment(value.time[0]).format('YYYY-MM-DD')
-      value.endDate = moment(value.time[1]).format('YYYY-MM-DD') 
+      value.endDate = moment(value.time[1]).format('YYYY-MM-DD')
     }
     const param = {
       ...data,
@@ -98,13 +99,14 @@ function OperationLog() {
           <Row gutter={24}>
             <Col span={5} key={0}>
               <Form.Item label="操作人" name="operationName">
-                <Input placeholder="用户名" autoComplete='off'/>
+                <Input placeholder="用户名" autoComplete='off' />
               </Form.Item>
             </Col>
             <Col span={5} key={1}>
-              <Form.Item name="time">
+              <Form.Item name="time" label="操作日期">
                 <RangePicker
-                  placeholder={['开始时间', '结束时间']} 
+                  disabledDate={disabledDate}
+                  placeholder={['开始时间', '结束时间']}
                 />
               </Form.Item>
             </Col>

+ 9 - 8
src/components/RegularManage/index.js

@@ -19,6 +19,7 @@ function RegularManage() {
     const [title, setTitle] = useState(0);
     const [type, setType] = useState(0);//1新增 2修改
     const [visible, setVisible] = useState(false);
+    const [delvisible, setDelVisible] = useState(false);
     const [selectedRowKeys, setSelectedRowKeys] = useState([]);
     const [size, setSize] = useState(15);
     const [current, setCurrent] = useState(1);
@@ -50,17 +51,17 @@ function RegularManage() {
             message.warning("请先选择要删除的记录~", 1);
             return;
         }
-        setVisible(flag)
+        setDelVisible(flag)
     }
     //删除记录
-    function delColumnVerify() {
-        post(api.delColumnVerify, { ids: selectedRowKeys }).then((res) => {
+    function delRegularById() {
+        post(api.delRegularById, { ids: selectedRowKeys }).then((res) => {
             if (res.data.code === 200) {
                 //刷新列表
                 getRegularPage()
-                message.success(res.data.msg);
+                message.success(res.data.message);
             } else {
-                message.warning(res.data.msg || '操作失败,请重试~');
+                message.warning(res.data.message || '操作失败,请重试~');
             }
         });
         showDelModal(false);
@@ -161,7 +162,7 @@ function RegularManage() {
                 <div className="table-header">
                     <h2 className="table-title">正则式维护</h2>
                     <Space size="middle">
-                        <Button type="primary" icon={<PlusOutlined />} onClick={() => showModal('新增正则式', 1)}>新增</Button>
+                        <Button type="primary" icon={<PlusOutlined />} onClick={() => showModal('新增正则式', 1,{})}>新增</Button>
                         <Button type="primary" icon={<DeleteOutlined />} onClick={() => showDelModal(true)} danger>删除</Button>
                     </Space>
 
@@ -209,8 +210,8 @@ function RegularManage() {
                 okText='确定'
                 cancelText='取消'
                 width={400}
-                visible={visible}
-                onOk={delColumnVerify}
+                visible={delvisible}
+                onOk={delRegularById}
                 /*confirmLoading={confirmLoading}*/
                 onCancel={() => showDelModal(false)}
             >

+ 21 - 15
src/utils/index.js

@@ -1,4 +1,6 @@
 import { message } from 'antd';
+import moment from "moment";
+import "moment/locale/zh-cn"
 //统一处理请求成功、失败
 
 export function handleResponse(res, callback, error) {
@@ -67,34 +69,38 @@ export function getValueFromEvent(e) {
     return e.target.value.replace(/(^\s*)|(\s*$)/g, '');
 }
 //存取cookie
-export function setCookie(cname,cvalue){
-    if(!cname){     //删除cookie
+export function setCookie(cname, cvalue) {
+    if (!cname) {     //删除cookie
         document.cookie = 'userId=;expires=Thu, 01 Jan 1970 00:00:00 GMT;';
         return;
     }
-    const text = cname+"="+cvalue;
+    const text = cname + "=" + cvalue;
     document.cookie = text;
 }
-export function getCookie(cname){
+export function getCookie(cname) {
     var name = cname + "=";
     var ca = document.cookie.split(';');
-    for(var i=0; i<ca.length; i++) {
+    for (var i = 0; i < ca.length; i++) {
         var c = ca[i].trim();
-        if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
+        if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); }
     }
     return "";
 }
 //从对象数组中遍历出id
-export function filterIds(arr,str){    //arr需遍历的数组;str需拼接的字段数组
-    let tempStr = '',temp='';
-    return arr.map((it)=>{
-        if(str){
-            str.map((t,i)=>{
-                temp = it[t]||'';
-                tempStr = i===0?temp:(tempStr +(tempStr?"-"+temp:temp));
+export function filterIds(arr, str) {    //arr需遍历的数组;str需拼接的字段数组
+    let tempStr = '', temp = '';
+    return arr.map((it) => {
+        if (str) {
+            str.map((t, i) => {
+                temp = it[t] || '';
+                tempStr = i === 0 ? temp : (tempStr + (tempStr ? "-" + temp : temp));
             });
             return tempStr;
         }
-        return it.id+''
+        return it.id + ''
     })
-}
+}
+
+export function disabledDate(current){
+    return current && current >= moment().endOf('day'); // 选择时间要大于等于当前天。若今天不能被选择,去掉等号即可。
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 11442 - 10230
yarn.lock