|
@@ -1,441 +0,0 @@
|
|
|
-/*
|
|
|
- * @Author: your name
|
|
|
- * @Date: 2021-12-30 18:57:21
|
|
|
- * @LastEditTime: 2022-01-05 10:21:17
|
|
|
- * @LastEditors: Please set LastEditors
|
|
|
- * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
|
- * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/ledgerUpload/detail.tsx
|
|
|
- */
|
|
|
-
|
|
|
-
|
|
|
-import React, { useEffect, useState,useRef} from 'react';
|
|
|
-import { useModel } from 'umi';
|
|
|
-import { Select, Input, Switch } from 'antd'
|
|
|
-import { getScoreColor } from '@/constant';
|
|
|
-import MccsLightTable from '@/components/MccsLightTable';
|
|
|
-
|
|
|
-import MccsEditableTable from '@/components/MccsEditableTable/index';
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-import { getCurrentLevelTable, getTaizhangDirectoryTable } from '@/pages/GradeHospitalAccreditation/articleManagement/server';
|
|
|
-
|
|
|
-
|
|
|
-import './style.less';
|
|
|
-
|
|
|
-const { TextArea } = Input;
|
|
|
-const {Option} = Select;
|
|
|
-
|
|
|
-enum ActType {
|
|
|
- 'NOACT', // 不操作
|
|
|
- 'ADD',
|
|
|
- 'EDIT',
|
|
|
- 'DEL'
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-const DetailModule = () => {
|
|
|
-
|
|
|
- const { articleManagement } = useModel('allModels', model => {
|
|
|
- return { articleManagement: model.articleManagement, ledgerUpload: model.ledgerUpload };
|
|
|
- });
|
|
|
-
|
|
|
- const {
|
|
|
- currentActivedTree,
|
|
|
- scoreList,
|
|
|
- accountTypeOptions,
|
|
|
- gradeOptions,
|
|
|
- ...restModelData
|
|
|
- } = articleManagement;
|
|
|
-
|
|
|
- const [idEditMode, setIfEditMode] = useState(false);
|
|
|
-
|
|
|
- const [isModeTwo, setIsModeTwo] = useState(true);
|
|
|
-
|
|
|
- const [scrollAreaH,setScrollAreaH] = useState(100);
|
|
|
- const leafContentRef = useRef<HTMLDivElement>(null);
|
|
|
-
|
|
|
- const MccsLightTableColumns = [
|
|
|
- {
|
|
|
- key: 'gradeLevel',
|
|
|
- title: '档次',
|
|
|
- width: 10
|
|
|
- },
|
|
|
- {
|
|
|
- key: 'directory',
|
|
|
- title: '名称',
|
|
|
- width: 60
|
|
|
- },
|
|
|
- {
|
|
|
- key: 'accountType',
|
|
|
- title: '类型',
|
|
|
- },
|
|
|
- {
|
|
|
- key: 'accountStatus',
|
|
|
- title: '需要台账',
|
|
|
- render: (record: any) => {
|
|
|
- return record.accountStatus == 0 ? '否' : '是'
|
|
|
- }
|
|
|
- },
|
|
|
- ]
|
|
|
-
|
|
|
-
|
|
|
- const mccsEditableTableColumns = [
|
|
|
- {
|
|
|
- title: '名称',
|
|
|
- dataIndex: 'directory',
|
|
|
- width: '50%',
|
|
|
- align: 'center',
|
|
|
- formItemProps: () => {
|
|
|
- return {
|
|
|
- rules: [{ required: true, message: '此项为必填项' }],
|
|
|
- };
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- title: '档次',
|
|
|
- dataIndex: 'grade',
|
|
|
- width: '15%',
|
|
|
- align: 'center',
|
|
|
- formItemProps: () => {
|
|
|
- return {
|
|
|
- rules: [{ required: true, message: '此项为必填项' }],
|
|
|
- };
|
|
|
- },
|
|
|
- renderFormItem: (_: any, config: any, form: any) => {
|
|
|
-
|
|
|
- const { isEditable } = config;
|
|
|
-
|
|
|
- return isEditable ? (
|
|
|
- <Select
|
|
|
- mode='multiple'
|
|
|
- placeholder='请选择'
|
|
|
- >
|
|
|
- {
|
|
|
- gradeOptions.map((item, index) => (
|
|
|
- <Option value={item.value} key={index}>{item.label}</Option>
|
|
|
- ))
|
|
|
- }
|
|
|
- </Select>
|
|
|
-
|
|
|
- ) : <Input />;
|
|
|
- },
|
|
|
- render: (_: any, row: any) => {
|
|
|
- // console.log({ _, row });
|
|
|
- return typeof _ === 'object' ? _.join(',') : _;
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- title: '类型',
|
|
|
- dataIndex: 'accountType',
|
|
|
- align: 'center',
|
|
|
- width: '15%',
|
|
|
- formItemProps: () => {
|
|
|
- return {
|
|
|
- rules: [{ required: true, message: '此项为必填项' }],
|
|
|
- };
|
|
|
- },
|
|
|
- renderFormItem: (_: any, { isEditable }: { isEditable: boolean }, form: any) => {
|
|
|
-
|
|
|
- return isEditable ? (
|
|
|
- <Select
|
|
|
- placeholder='请选择'
|
|
|
- >
|
|
|
- {
|
|
|
- accountTypeOptions.map((item, index) => (
|
|
|
- <Option value={item.value} key={index}>{item.label}</Option>
|
|
|
- ))
|
|
|
- }
|
|
|
- </Select>
|
|
|
- ) : <Input />;
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
- },
|
|
|
- {
|
|
|
- title: '台账上传',
|
|
|
- align: 'center',
|
|
|
- dataIndex: 'accountStatus',
|
|
|
- width: '10%',
|
|
|
- valueType: 'switch',
|
|
|
- renderFormItem: (_: any, { isEditable }: { isEditable: boolean }) => {
|
|
|
- return isEditable ? (
|
|
|
- // <Form.Item name='accountStatus' valuePropName='checked'>
|
|
|
- <Switch size='small' />
|
|
|
- // </Form.Item>
|
|
|
- ) : <Input />
|
|
|
- },
|
|
|
- render: (_: any, row: any) => {
|
|
|
- return (
|
|
|
- <Switch size='small' disabled checked={row.accountStatus} />
|
|
|
- )
|
|
|
- },
|
|
|
- },
|
|
|
-
|
|
|
- ]
|
|
|
-
|
|
|
-
|
|
|
- const setEditStatus = () => {
|
|
|
- setIfEditMode(true);
|
|
|
- restModelData.setEditMode(true);
|
|
|
- }
|
|
|
-
|
|
|
- const followWindowResize = ()=>{
|
|
|
-
|
|
|
- if(leafContentRef.current){
|
|
|
- const leafContentH = leafContentRef.current.clientHeight + 50; // 加上padding
|
|
|
- const headerH = 0;
|
|
|
- const scoreH = isModeTwo?(60+32):0;
|
|
|
- const h = window.innerHeight - (leafContentH + headerH + scoreH);
|
|
|
- setScrollAreaH(h);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- const taizhangDataDerectoryEditHandle = (data: any, actType: ActType) => {
|
|
|
- // 台账资料目录编辑回调
|
|
|
- const version = restModelData.leafData?.reviewArticle.version;
|
|
|
- let prevData = restModelData.taizhangDataDirectoryCommitList;
|
|
|
- const numStr = restModelData.leafData?.reviewArticle.numStr;
|
|
|
-
|
|
|
- if (actType == ActType.DEL && data.id == '-') {
|
|
|
- // 如果是删除操作且删除的不是数据库已有数据时,剔除之前暂时保留数据
|
|
|
- prevData = prevData.filter(item => item.directory != data.directory);
|
|
|
- restModelData.setTaizhangDataDirectoryCommitList([...prevData]);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- restModelData.setTaizhangDataDirectoryCommitList([...prevData, { ...data, dataStatus: actType, version: version || '', grade: data.grade.join(','), numStr, accountStatus: data.accountStatus ? '1' : '0' }])
|
|
|
- }
|
|
|
-
|
|
|
- const onTextAreaChange = (e: React.ChangeEvent<HTMLTextAreaElement>, level: string) => {
|
|
|
- // 更改执行情况说明数据
|
|
|
- // 首先找出要更新的项,再进行整体替换
|
|
|
-
|
|
|
- if (restModelData.selectedSelfEvolution) {
|
|
|
-
|
|
|
- const editTargetLevel = restModelData.selectedSelfEvolution.label; // 目标等级
|
|
|
- // 找出目标等级下正在更新的level
|
|
|
- const editImplementationDataItemIndex = restModelData.implementationData[editTargetLevel].findIndex(item => item.level == level);
|
|
|
- // 拷贝旧的目标等级数据
|
|
|
- const _cpOldImplemetationItem = restModelData.implementationData[editTargetLevel];
|
|
|
- // 将新的编辑内容赋值给正在编辑的目标下的level
|
|
|
- _cpOldImplemetationItem[editImplementationDataItemIndex].note = e.target.value;
|
|
|
-
|
|
|
- if (editImplementationDataItemIndex != -1) {
|
|
|
- restModelData.setImplementationData({
|
|
|
- ...restModelData.implementationData,
|
|
|
- // 插入更新
|
|
|
- [editTargetLevel]: _cpOldImplemetationItem
|
|
|
- }
|
|
|
- )
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- useEffect(() => {
|
|
|
- const {leafData} = restModelData;
|
|
|
- if (leafData) {
|
|
|
- restModelData.setSelectedSelfEvolution({
|
|
|
- label: leafData.reviewArticle.selfEvaluation,
|
|
|
- value: leafData.reviewArticle.selfEvaluation
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- restModelData.getAccoutTypeOptions();
|
|
|
- restModelData.getGradeOptions();
|
|
|
-
|
|
|
- window.addEventListener("resize",followWindowResize);
|
|
|
-
|
|
|
- setTimeout(()=>{
|
|
|
- // 首次加载叶子节点内容触发一次
|
|
|
- const myEvent = new Event('resize');
|
|
|
- window.dispatchEvent(myEvent);
|
|
|
- document.body.style.overflowY = 'hidden'; // 叶子节点下锁住页面滚动
|
|
|
- },100);
|
|
|
-
|
|
|
- return ()=>{
|
|
|
- window.removeEventListener("resize",followWindowResize);
|
|
|
- }
|
|
|
-
|
|
|
- }, [])
|
|
|
-
|
|
|
-
|
|
|
- return (
|
|
|
- <div className='DetailModule'>
|
|
|
- <div ref={leafContentRef}>
|
|
|
- <div className='leafContentTitle'>{currentActivedTree ? currentActivedTree.title : ''}</div>
|
|
|
- <div className='peopleGroup'>
|
|
|
- <span>条文组别:</span>
|
|
|
- <span>{restModelData.leafData?.reviewArticle?.accountType}</span>
|
|
|
- <span>负责单位:</span>
|
|
|
- <span>{restModelData.leafData?.reviewArticle?.responsibilityDepartmentName}</span>
|
|
|
- <span>负责人:</span>
|
|
|
- <span>{restModelData.leafData?.reviewArticle?.responsibilityUserName}</span>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div className='scoreRow'>
|
|
|
- <div className='scoreInfo'>
|
|
|
- {
|
|
|
- scoreList.map((item, index) => {
|
|
|
- return (
|
|
|
- <div key={index} className='scoreBlock'>
|
|
|
- {item.label}
|
|
|
- {item.value && item.value != '-' ? (<span style={{ color: getScoreColor(item.value) }}>{item.value}</span>) : ' -'}
|
|
|
- </div>
|
|
|
- )
|
|
|
- })
|
|
|
- }
|
|
|
- </div>
|
|
|
-
|
|
|
- {
|
|
|
- // 台账上传页面且非编辑状态下
|
|
|
- !restModelData.editMode && restModelData.hasEditAuthority && <div className='editPageBtn' onClick={() => setEditStatus()}>{restModelData.editMode ? '取消编辑' : '开启编辑'}</div>
|
|
|
- }
|
|
|
- </div>
|
|
|
-
|
|
|
- <div className='scoreGradeDetail'>
|
|
|
-
|
|
|
- {
|
|
|
- restModelData.leafData?.pfmViewRuleDetailDataVoList.map((item, index) => (
|
|
|
- <div className='scoreGradeDetailList' key={index}>
|
|
|
- <div className='head'>{item.evaluation}</div>
|
|
|
- <div className='detail'>
|
|
|
- {
|
|
|
- item.viewRuleAndLevelVos && item.viewRuleAndLevelVos.map((v, k) => (
|
|
|
- <div className='textLine' key={k}>{`${v.grade} ${v.detail}`}</div>
|
|
|
- ))
|
|
|
- }
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- ))
|
|
|
- }
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- {
|
|
|
- true && (
|
|
|
- <div className='selfEvaluationWrap'>
|
|
|
- <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', width: '100%', }}>
|
|
|
- <div className='selfEvaluation'>
|
|
|
- 自评等级
|
|
|
- {!restModelData.editMode && (
|
|
|
- <span style={{ color: getScoreColor(restModelData.leafData ? restModelData.leafData.reviewArticle.selfEvaluation : '') }}>{restModelData.leafData?.reviewArticle.selfEvaluation ? restModelData.leafData?.reviewArticle.selfEvaluation : '-'}</span>
|
|
|
- )}
|
|
|
- </div>
|
|
|
- {
|
|
|
- restModelData.editMode && (
|
|
|
- <div className='wrap' style={{ width: '60%', display: 'flex', flexDirection: 'row', justifyContent: 'flex-end' }}>
|
|
|
- {
|
|
|
- restModelData.targetScores.map((item, index) => (
|
|
|
- <div className={restModelData.selectedSelfEvolution?.label == item.label ? 'tab on' : 'tab'} key={index} onClick={() => restModelData.onSelfEvolutionTabChange(item)}>{item.label}</div>
|
|
|
- ))
|
|
|
- }
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
- {
|
|
|
- restModelData.leafData && (
|
|
|
- // 台账上传页面时,背景色统一白色,cardWrap提供容器实现上下滑动
|
|
|
- <div className={isModeTwo ? 'cardWrap isModeTwo' : 'cardWrap'} style={{height:`${scrollAreaH}px`}}>
|
|
|
- <div>
|
|
|
- {
|
|
|
- // 渲染执行情况说明
|
|
|
- /**
|
|
|
- * 满足条件:
|
|
|
- * 1.存在自评等级从接口获取或手动点击选择
|
|
|
- * 2.implementationData里有当前等级的数据
|
|
|
- */
|
|
|
- (restModelData.selectedSelfEvolution && restModelData.implementationData[restModelData.selectedSelfEvolution.label])
|
|
|
- && restModelData.implementationData[restModelData.selectedSelfEvolution.label].map((item, index) => {
|
|
|
-
|
|
|
- return (
|
|
|
- <div className='card' key={index} style={{ marginBottom: isModeTwo ? 0 : '16px', paddingBottom: isModeTwo ? 0 : '16px', paddingTop: isModeTwo ? 0 : '16px' }}>
|
|
|
- <div className='cardTitle' style={{ marginBottom: isModeTwo ? '8px' : '16px' }}>{`执行情况说明(等级${item.level})`}</div>
|
|
|
-
|
|
|
- <TextArea allowClear showCount maxLength={2000}
|
|
|
- autoSize={{
|
|
|
- minRows: 5,
|
|
|
- maxRows: 20
|
|
|
- }}
|
|
|
- disabled={!restModelData.editMode} value={item.note}
|
|
|
- onChange={e => onTextAreaChange(e, item.level)}
|
|
|
- style={{ marginBottom: 20 }} />
|
|
|
-
|
|
|
- {
|
|
|
- !isModeTwo && (
|
|
|
- <MccsLightTable
|
|
|
- columns={MccsLightTableColumns}
|
|
|
- request={(current, pageSize) => getCurrentLevelTable({
|
|
|
- level: item.level,
|
|
|
- numStr: currentActivedTree ? currentActivedTree.code : 'null',
|
|
|
- version: restModelData.leafData ? (restModelData.leafData.reviewArticle.version) : 'null',
|
|
|
- current,
|
|
|
- pageSize
|
|
|
- })}
|
|
|
- />
|
|
|
- )
|
|
|
- }
|
|
|
- </div>
|
|
|
- )
|
|
|
- })
|
|
|
- }
|
|
|
- <div >
|
|
|
- {
|
|
|
- // 台帐下展示
|
|
|
- (isModeTwo && restModelData.leafData) && (
|
|
|
- <MccsEditableTable
|
|
|
- bordered={true}
|
|
|
- edit={restModelData.editMode}
|
|
|
- pagination={true}
|
|
|
- addHandle={
|
|
|
- (data: any) => taizhangDataDerectoryEditHandle(data, ActType.ADD)
|
|
|
- }
|
|
|
- editHandle={
|
|
|
- (data: any) => taizhangDataDerectoryEditHandle(data, ActType.EDIT)
|
|
|
- }
|
|
|
- delHandle={
|
|
|
- (data: any) => taizhangDataDerectoryEditHandle(data, ActType.DEL)
|
|
|
- }
|
|
|
- request={async (current, pageSize) => {
|
|
|
- console.log('leafData', restModelData.leafData)
|
|
|
- if (restModelData.leafData) {
|
|
|
- const { numStr, version } = restModelData.leafData.reviewArticle;
|
|
|
- const resp = await getTaizhangDirectoryTable({ numStr, version, current, pageSize });
|
|
|
- const { list = [] } = resp;
|
|
|
- return {
|
|
|
- data: list.map(item => ({ ...item, grade: item.grade ? item.grade.split(',') : [], accountStatus: item.accountStatus != '0' })), // 多选下拉需传数组值
|
|
|
- total: resp.totalCount,
|
|
|
- current: resp.current,
|
|
|
- success: true
|
|
|
- };
|
|
|
- }
|
|
|
- return {
|
|
|
- data: [],
|
|
|
- total: 0,
|
|
|
- success: false
|
|
|
- }
|
|
|
- }}
|
|
|
- columns={mccsEditableTableColumns}
|
|
|
- />
|
|
|
- )
|
|
|
- }
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
- </div>
|
|
|
- )
|
|
|
-}
|
|
|
-
|
|
|
-export default DetailModule;
|