1178232204@qq.com 3 years atrás
parent
commit
caecfff441

+ 1 - 1
src/api/request.js

@@ -135,7 +135,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;

+ 9 - 7
src/components/BlockLossManage/editBlock.js

@@ -150,12 +150,16 @@ 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={['开始时间', '结束时间']}
+                            />
+                        </Form.Item>
+                        : ''}
                 </Col>
                 <Col span={24} hidden={type == 3} style={{ marginTop: 15 }}>
                     <Form.Item label="住院序号" name="behospitalCode">
@@ -177,8 +181,6 @@ function EditBlock(props) {
                             </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()}>

+ 47 - 39
src/components/BlockLossManage/index.js

@@ -22,6 +22,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 +54,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);
             }
         })
     }
@@ -148,12 +156,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>);
             }
         },
         {
@@ -274,57 +282,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;
     }
   }
 }
+.ant-form-inline .ant-form-item > .ant-form-item-label {
+  flex: none;
+  text-align: right;
+  width: 70px;
+}

+ 34 - 25
src/components/FieldProblem/editProblem.js

@@ -6,6 +6,7 @@ import apiObj from '@api/index';
 import BlockContext from './problem-context';
 import moment from "moment";
 import "moment/locale/zh-cn"
+import { calcMinus, calcAdd } from '@utils/index'
 const { RangePicker } = DatePicker;
 const { post, api, xPost } = apiObj;
 const { TextArea } = Input;
@@ -13,12 +14,11 @@ function EditBlock(props) {
     useEffect(() => {
     }, []);
     const [form] = Form.useForm();
+    const [selectDate, setSelectDate] = useState(null);
     const { problemDetail, type } = useContext(BlockContext);
     const initialValues = problemDetail;
     const onFinish = values => {
         if (type == 1) {
-
-        } else if (type == 2) {
             dataCompare(values)
         } else {
             editProblem(values)
@@ -59,24 +59,42 @@ function EditBlock(props) {
             }
         })
     }
+    /* 控制下单时间选择范围30天 */
+    const disabledTaskDate = (current) => {
+        if (!current || !selectDate) return false;
+        const offsetV = 2592000000;                 //30天转换成ms
+        const selectV = selectDate.valueOf();
+        const currenV = current.valueOf();
+        return (calcMinus(currenV, offsetV) > selectV || calcAdd(currenV, offsetV) < selectV) ? true : false;
+    }
+    /* 选择任务时间变化 */
+    const onDateChange = (dates) => {
+        if (!dates || !dates.length) return;
+        setSelectDate(dates[0]);
+    }
+    const onDateOpenChange = () => {
+        setSelectDate(null);
+    }
     function cancel() {
         props.userChange()
     }
     return (
         <>
             <Form
-                labelCol={type == 3 ? { span: 8 } : { span: 4 }}
+                labelCol={type == 3 ? { span: 12 } : { 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 +186,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 +198,16 @@ 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={disabledTaskDate}
+                                onCalendarChange={onDateChange}
+                                onOpenChange={onDateOpenChange}
+                            />
+                        </Form.Item>
+                        : ''}
                 </Col>
                 <Col span={24} hidden={type == 3} style={{ marginTop: 15 }}>
                     <Form.Item label="住院序号" name="behospitalCode">
@@ -209,11 +218,11 @@ function EditBlock(props) {
                     type == 1 ?
                         <div>
                             提示:<br />
-                            1、补录时间范围限制为30天,每一天数据量的同步时间约为1分钟。<br />
+                            1、校验时间范围限制为30天,每一天数据量的校验时间约为1分钟。<br />
                             时间范围以患者入院时间为准。<br />
-                            2、当输入住院序号时,补录将不受时间范围限制。<br />
+                            2、当输入住院序号时,校验将不受时间范围限制。<br />
                         </div>
-                        :''
+                        : ''
                 }
 
 

+ 4 - 3
src/components/FieldProblem/index.js

@@ -5,6 +5,7 @@ import { getCookie } 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';
@@ -51,7 +52,7 @@ function FieldProblem() {
         })
     }
     function getColumnResultNumber() {
-        post(api.getColumnResultNumber, { hospitalId: getCookie('hospitalId') }).then((res) => {
+        post(api.getColumnResultNumber, { hospitalId: 4 }).then((res) => {
             if (res.data.code === 200) {
                 const data = res.data.data;
             }
@@ -233,7 +234,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 +243,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',

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

@@ -0,0 +1,7 @@
+.problem {
+  /deep/.ant-form-inline .ant-form-item > .ant-form-item-label {
+    flex: none;
+    text-align: right;
+    width: 130px;
+  }
+}

+ 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)}
             >

+ 52 - 15
src/utils/index.js

@@ -67,34 +67,71 @@ 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 calcMinus(num1, num2) {
+    num1 = Number(num1);
+    num2 = Number(num2);
+    if (isNaN(num1) || isNaN(num2)) return 0;
+
+    const num1Digits = (num1.toString().split(".")[1] || "").length;
+    const num2Digits = (num2.toString().split(".")[1] || "").length;
+    const baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));
+    return (calcMulti(num1, baseNum) - calcMulti(num2, baseNum)) / baseNum;
+};
+
+export function calcAdd(num1, num2) {
+    num1 = Number(num1);
+    num2 = Number(num2);
+    if (isNaN(num1) || isNaN(num2)) return 0;
+    const num1Digits = (num1.toString().split(".")[1] || "").length;
+    const num2Digits = (num2.toString().split(".")[1] || "").length;
+    const baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));
+    return (calcMulti(num1, baseNum) + calcMulti(num2, baseNum)) / baseNum;
+}
+/* 两个浮点数相乘 */
+export function calcMulti(num1, num2) {
+    num1 = Number(num1);
+    num2 = Number(num2);
+    if (isNaN(num1) || isNaN(num2)) return 0;
+    const num1String = num1.toString();
+    const num2String = num2.toString();
+    const num1Digits = (num1String.split(".")[1] || "").length;
+    const num2Digits = (num2String.split(".")[1] || "").length;
+    const baseNum = Math.pow(10, num1Digits + num2Digits);
+    return (
+        (Number(num1String.replace(".", "")) *
+            Number(num2String.replace(".", ""))) /
+        baseNum
+    );
+};