model.ts 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. /*
  2. * @Author: your name
  3. * @Date: 2021-09-14 10:46:45
  4. * @LastEditTime: 2022-03-09 18:17:18
  5. * @LastEditors: Please set LastEditors
  6. * @Description: In User Settings Edit
  7. * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/articleManagement/model.ts
  8. */
  9. import { useState, useEffect } from 'react';
  10. import {
  11. getTreeFileTableData,
  12. getDepartmentList,
  13. settingArticle,
  14. batchSettingArticle,
  15. getSelfEvaluation,
  16. uploadFilePost,
  17. selfEvolutionCommit,
  18. getUploadLedgerSelectableType,
  19. getCurrentHospSelfScore,
  20. getRuleChildrens,
  21. getTaizhangImplementation,
  22. commitTaizhangImplementation,
  23. commitTaizhangDataDirectoryTableList,
  24. } from './server';
  25. import { getTreeList, getMaterialListGrades } from '@/pages/GradeHospitalAccreditation/accreditationDetail/service';
  26. import {
  27. getScoreLevelData,
  28. getAccreditationTypeData,
  29. getLedgerType
  30. } from '@/pages/PlatformMana/generalSetting/serve';
  31. import { notification } from 'antd';
  32. export interface ImplementationDataItem {
  33. level: string;
  34. note: string;
  35. }
  36. export type ImplementationDataItemCache = Record<string, ImplementationDataItem[]>;
  37. // articleManagement
  38. const articleManagement = () => {
  39. const [treeData, setTreeData] = useState<any[]>([]);
  40. const [currentActivedTree, setCurrentActivedTree] = useState<MccsFileTree.childTree>();
  41. const [isLeaf, setIsLeaf] = useState(false);
  42. const [scoreList, setScoreList] = useState<{ label: string; value: string }[]>([]);
  43. const [leafData, setLeafData] = useState<API.LeafDataType>(); // 叶子结点数据
  44. const [departmentManagers, setDepartmentManagers] = useState<{ label: string; value: number }[]>(
  45. [],
  46. );
  47. const [targetScores, setTargetScores] = useState<MccsClickableTabs.TabType[]>([]);
  48. const [ruleTypes, setRuleTypes] = useState<MccsClickableTabs.TabType[]>([]);
  49. const [selfEvaluationRecords, setSelfEvaluationRecords] = useState<MccsRecordList.MccsRecordListType>([]); // 自评记录
  50. const [selectedRowKeys, setSelectedRowKeys] = useState<number[] | string[]>([]);
  51. const [drawerVisible, setDrawerVisible] = useState(false);
  52. /**
  53. * ARTICLE_SET 条文设置
  54. * BATCHSETTING 批量设置
  55. */
  56. const [drawerFormType, setDrawerFormType] = useState<'ARTICLE_SET' | 'BATCHSETTING' | undefined>(undefined);
  57. const [reloadRightContent, setReloadRightContent] = useState(false);
  58. const [moduleMode, setModuleMode] = useState(false); // true台账上传 false条文管理
  59. const [modalVisible, setModalVisible] = useState(false);
  60. const [uploadFormInitValue, setUploadFormInitValue] = useState<any>();
  61. const [selectedSelfEvolution, setSelectedSelfEvolution] =
  62. useState<{ label: string; value: any }>(); // MccsClickableTabs value值
  63. const [currentSelectedSelefEvolution, setCurrentSelectedSelefEvolution] =
  64. useState<{ label: string; value: any }>(); // 当前选中自评 点击对象
  65. const [uploadLedgerTypeList, setUploadLedgerTypeList] = useState<MccsClickableTabs.TabType[]>([]); // 上传台账可选类型
  66. const [currentHospSelfScoreAndOthers, setCurrentHospSelfScoreAndOthers] = useState<string>(); // 当前医院评分及自评结果
  67. const [editMode, setEditMode] = useState(false); // 编辑模式,台帐上传页面用到
  68. const [implementationData, setImplementationData] = useState<ImplementationDataItemCache>({}); // 执行情况说明数据
  69. const [taizhangDataDirectoryCommitList, setTaizhangDataDirectoryCommitList] = useState<
  70. API.TaizhangDataDirectoryCommitListItem[]
  71. >([]);
  72. const [isShowMineOnly, setIsShowMineOnly] = useState(false); // 左侧树形结构是否只展示当前用户所属的
  73. const [hasEditAuthority, setHasEditAuthority] = useState(false); // 是否有编辑权限
  74. const [gradeOptions, setGradeOptions] = useState<{ label: string, value: string | number }[]>([]);
  75. const [accountTypeOptions, setAccountTypeOptions] = useState<{ label: string, value: string | number }[]>([]);
  76. const [articleSettingFormInit, setArticleSettingFormInit] = useState<{}>({}); //条文设置表单回显默认值
  77. const [currentSelectedActObj, setCurrentSelectedActObj] = useState<any>(undefined); //当前正在操作的对象,例如当前选中的树中层级数据,点击详情的的行数据
  78. const [detailDrawerVisible, setdetailDrawerVisible] = useState(false); //条文详情抽屉
  79. const getArticleTreeData = async (keyword?: string | number) => {
  80. // 获取树数据
  81. const { list = [] } = await getTreeList(isShowMineOnly, keyword);
  82. setTreeData(list);
  83. };
  84. const getTableData = async (params?: any, sorter?: any, filter?: any) => {
  85. // 根据选中树结构的id获取对应的详情
  86. let specifyId: number | null = null;
  87. if (params && params.id) {
  88. // 当存在指定id
  89. specifyId = params.id;
  90. }
  91. if (currentActivedTree || specifyId) {
  92. const resp = await getTreeFileTableData(
  93. specifyId
  94. ? {
  95. // 传入树结构id指定获取某一节点对应数据
  96. pageSize: 10,
  97. ...params,
  98. id: specifyId,
  99. }
  100. : {
  101. // 直接拿树结构id
  102. pageSize: 10,
  103. ...params,
  104. id: currentActivedTree ? currentActivedTree.id : 0,
  105. },
  106. moduleMode,
  107. );
  108. if (resp) {
  109. const { page, leafData, isLeaf } = resp;
  110. setIsLeaf(isLeaf);
  111. if (!isLeaf && page) {
  112. // 非叶子结点返回table数据
  113. const { list = [], totalCount } = page;
  114. return {
  115. data: list,
  116. success: true,
  117. total: totalCount,
  118. };
  119. }
  120. setLeafData(undefined);
  121. if (isLeaf && leafData) {
  122. setLeafData(leafData);
  123. } else {
  124. setLeafData({
  125. reviewArticle: {
  126. id: -1,
  127. ruleId: -1,
  128. numStr: '',
  129. version: '',
  130. selfEvaluation: '',
  131. targetEvaluation: '',
  132. systemEvaluation: '',
  133. siteEvaluation: '',
  134. responsibilityDepartmentId: -1,
  135. responsibilityDepartmentName: '-',
  136. responsibilityUserId: -1,
  137. responsibilityUserName: '-',
  138. accountType: '-',
  139. hospId: -1,
  140. userId: -1
  141. },
  142. pfmViewRuleDetailDataVoList: [],
  143. pfmImplementations: [],
  144. });
  145. }
  146. }
  147. return [];
  148. }
  149. };
  150. const getDepartmentRequest = async () => {
  151. // 获取单位列表
  152. const resp = await getDepartmentList();
  153. if (resp) {
  154. const { list = [] } = resp;
  155. return list.map((item: any) => ({
  156. label: item.name,
  157. value: item.id,
  158. }));
  159. }
  160. return [];
  161. };
  162. type FormValueType = {
  163. articleType: { label: string; value: any };
  164. responsibilityDepartment: { label: string; value: number;[key: string]: any };
  165. responsibilityUser: { label: string; value: number;[key: string]: any };
  166. targetScores: { label: string; value: any };
  167. };
  168. const batchSetting = async (values: FormValueType) => {
  169. // 批量设置
  170. const resp = await batchSettingArticle({
  171. ruleIds: selectedRowKeys,
  172. responsibilityDepartmentId: values.responsibilityDepartment.value,
  173. responsibilityDepartmentName: values.responsibilityDepartment.label,
  174. responsibilityUserId: values.responsibilityUser.value,
  175. responsibilityUserName: values.responsibilityUser.label,
  176. targetEvaluation: values.targetScores.value,
  177. articleType: values.articleType.value,
  178. });
  179. if (resp) {
  180. // 重新刷新表格
  181. if (!detailDrawerVisible) {
  182. //当条文详情抽屉存在时,暂不刷新table,交给抽屉关闭时判断刷新
  183. setReloadRightContent(true);
  184. }
  185. return true;
  186. }
  187. };
  188. const setArticle = async (values: FormValueType) => {
  189. // 条文设置
  190. // console.log({values});
  191. if (currentActivedTree && leafData) {
  192. let ruleId = 0;
  193. if (detailDrawerVisible) {
  194. //在条文抽屉详情里条文设置
  195. ruleId = currentSelectedActObj.id;
  196. } else {
  197. //正常在详情页设置条文
  198. ruleId = Number(currentActivedTree.id)
  199. }
  200. const { id } = leafData.reviewArticle;
  201. const paramsData = {
  202. id,
  203. ruleId: ruleId,
  204. responsibilityDepartmentId: values.responsibilityDepartment.value,
  205. responsibilityDepartmentName: values.responsibilityDepartment.label,
  206. responsibilityUserId: values.responsibilityUser.value,
  207. responsibilityUserName: values.responsibilityUser.label,
  208. targetEvaluation: values.targetScores.value,
  209. articleType: values.articleType.value,
  210. };
  211. const resp = await settingArticle(paramsData);
  212. if (resp) {
  213. // 更新界面信息
  214. if (!detailDrawerVisible) {
  215. //当条文详情抽屉存在时,暂不刷新table,交给抽屉关闭时判断刷新
  216. getTableData();
  217. }
  218. return true;
  219. }
  220. }
  221. };
  222. const getDepartment = async (item: any, option: any) => {
  223. // 获取责任单位
  224. const resp = await getDepartmentList({ responsibilityDepartmentId: item.value });
  225. if (resp) {
  226. const { list = [] } = resp;
  227. if (list.length > 0) {
  228. const tempPeople = list[0].sysEmployeeVOList.map((item) => ({
  229. label: item ? item.name : 'null',
  230. value: item ? item.id : 0,
  231. }));
  232. setDepartmentManagers(tempPeople);
  233. }
  234. }
  235. };
  236. const getSelfEvaluationRecordList = async (id: number) => {
  237. const resp = await getSelfEvaluation(id);
  238. if (resp) {
  239. const { list }: { list: API.GetSelfEvaluationRequestType } = resp;
  240. const tempArr = list.map((t) => ({
  241. evaluation: t.selfEvaluation,
  242. details: [
  243. {
  244. name: t.userName,
  245. fileName: t.selfEvaluation,
  246. fileUrl: '',
  247. historyRecords: [],
  248. // recordTypeName:t.selfEvaluation,
  249. createTime: t.createDate,
  250. },
  251. ],
  252. }));
  253. setSelfEvaluationRecords(tempArr);
  254. }
  255. };
  256. const uploadFile = async (values: any) => {
  257. console.log({ 表单: values });
  258. if (leafData) {
  259. // console.log({'上传表单':values});
  260. try {
  261. const {
  262. files: { fileList = [] },
  263. tab,
  264. publicCateId,
  265. } = values;
  266. const { id, accountType } = leafData.reviewArticle;
  267. const formData = new FormData();
  268. fileList.map((t: MccsUpload.UploadFile) => {
  269. formData.append('file', t.originFileObj);
  270. });
  271. formData.append('id', id.toString());
  272. formData.append('categoryType', accountType);
  273. // 应产品要求‘制度’是不可变,根据制度获取对应关系
  274. tab.value.label == '制度' && formData.append('publicCateId', publicCateId);
  275. if (uploadFormInitValue && JSON.stringify(uploadFormInitValue) != '{}') {
  276. // 重新上传不允许修改类型
  277. const { tab } = uploadFormInitValue;
  278. formData.append('accountType', tab.label);
  279. formData.append('accountName', tab.value.label);
  280. } else {
  281. formData.append('accountType', tab.label);
  282. formData.append('accountName', tab.value.label);
  283. }
  284. const resp = await uploadFilePost(formData);
  285. if (resp) {
  286. // 上传成功,获取最新台账记录
  287. getTableData();
  288. }
  289. setModalVisible(false);
  290. // 每次提交完清空表单默认值
  291. setUploadFormInitValue(undefined);
  292. } catch (err) {
  293. console.log({ err });
  294. }
  295. }
  296. };
  297. const compalier = (data: ImplementationDataItem[], base: any[]) => {
  298. const result: ImplementationDataItem[] = [];
  299. const hasDataKeys = data.map((item) => item.level); // 找出已经请求到数据的集合
  300. const difference = hasDataKeys
  301. .concat(base)
  302. .filter((v) => !hasDataKeys.includes(v) || !base.includes(v)); // 找出缺失的项
  303. // console.log({difference});
  304. const needAddImplementationData = difference.map((item) => ({ level: item, note: '' }));
  305. const lastimplementationData = [...data, ...needAddImplementationData]; // 将需要新增的项添加
  306. lastimplementationData.forEach((item) => {
  307. // 数据排序,A>B>C
  308. switch (item.level) {
  309. case 'A':
  310. result[2] = item;
  311. break;
  312. case 'B':
  313. result[1] = item;
  314. break;
  315. case 'C':
  316. result[0] = item;
  317. break;
  318. }
  319. });
  320. return result;
  321. };
  322. const implementationDataFilter = (data: ImplementationDataItem[]) => {
  323. if (editMode && moduleMode) {
  324. if (selectedSelfEvolution?.label == 'A') {
  325. /**
  326. * 根据业务逻辑,当选中的值为A时,需要提供A,B,C三个的数据,若没有则需要添加
  327. */
  328. if (data.length == 3) return data; // 存在三个值时,直接返回
  329. return compalier(data, ['A', 'B', 'C']);
  330. }
  331. if (selectedSelfEvolution?.label == 'B') {
  332. /**
  333. * 根据业务逻辑,当选中的值为B时,需要提供B,C两个的数据,若没有则需要添加
  334. */
  335. if (data.length == 2) return data; // 存在2个值时,直接返回
  336. return compalier(data, ['B', 'C']);
  337. }
  338. if (selectedSelfEvolution?.label == 'C') {
  339. /**
  340. * 根据业务逻辑,当选中的值为C时,需要提供C一个个的数据,若没有则需要添加
  341. */
  342. if (data.length == 1) return data; // 存在1个值时,直接返回
  343. return compalier(data, ['C']);
  344. }
  345. }
  346. return data;
  347. };
  348. const getImplementationForEdit = async ({
  349. numStr,
  350. version,
  351. level,
  352. }: {
  353. numStr: string;
  354. version: string;
  355. level: string;
  356. }) => {
  357. // 或区指定等级的执行情况说明数据,同时根据返回的数据自行添加需要补充的项
  358. if (implementationData[level]) return; // implementationData集合里已经有了该等级对应的数据时,不请求,为了保证编辑的数据缓存
  359. const data = await getTaizhangImplementation({ numStr, version, level });
  360. const implementData: ImplementationDataItem[] = data.map((item) => ({
  361. level: item.level,
  362. note: item.note,
  363. }));
  364. const resultData = implementationDataFilter(implementData); // 得到改造过的数据
  365. /**
  366. *
  367. * 应业务要求,自评等级切换时保留之前填写数据
  368. * 所以额外建立一个键值对象进行缓存
  369. */
  370. setImplementationData({ ...implementationData, [level]: resultData });
  371. };
  372. const onSelfEvolutionTabChange = (value: { label: string; value: any }) => {
  373. // 自评tab切换回调
  374. value && setCurrentSelectedSelefEvolution(value);
  375. value && setSelectedSelfEvolution(value);
  376. };
  377. const commitSelfEvolution = async () => {
  378. // 提交自评
  379. if (leafData && currentSelectedSelefEvolution) {
  380. // 存在详情信息,且已选择评分
  381. const { id } = leafData.reviewArticle;
  382. const _userData = localStorage.getItem('userData');
  383. if (_userData) {
  384. const userData: { name: string; userId: number } = JSON.parse(_userData);
  385. const params = {
  386. id: Number(id),
  387. selfEvaluation: `${currentSelectedSelefEvolution ? currentSelectedSelefEvolution.value : 'null'
  388. }`,
  389. userId: userData?.userId,
  390. userName: userData?.name,
  391. };
  392. const resp = await selfEvolutionCommit(params);
  393. if (resp && currentActivedTree) {
  394. // 刷新自评记录
  395. getSelfEvaluationRecordList(Number(currentActivedTree.id));
  396. setSelectedSelfEvolution({ label: 'null', value: 'null' }); // 清空选中项
  397. setCurrentSelectedSelefEvolution(undefined);
  398. }
  399. }
  400. } else {
  401. notification.info({
  402. message: '请选择评分!',
  403. });
  404. }
  405. };
  406. const getScoreList = async () => {
  407. // 条文评级
  408. const data = await getScoreLevelData();
  409. const tempArr = data.map((t: any) => ({
  410. label: t.levelNumber,
  411. value: t.levelNumber,
  412. configStatus: t.configStatus,
  413. }));
  414. return Promise.resolve(tempArr);
  415. };
  416. const accreditationGroupType = async () => {
  417. // 获取条文组别
  418. const data = await getAccreditationTypeData();
  419. console.log({ data });
  420. const tempArr = data.map((t: any) => ({ label: t.categoryType, value: t.categoryType }));
  421. return Promise.resolve(tempArr);
  422. };
  423. const getUploadLedgerType = async () => {
  424. // 台账类型
  425. const data = await getUploadLedgerSelectableType();
  426. if (data) {
  427. const tempArr = data.map((t: API.RuleChildsItemType) => {
  428. const tempList = t.generalNameList.map((a) => {
  429. return {
  430. label: a.generalName,
  431. value: a.id,
  432. };
  433. });
  434. return { label: t.levelNumber, list: tempList };
  435. });
  436. return Promise.resolve(tempArr);
  437. }
  438. };
  439. const getCurrentHospScore = async () => {
  440. // 获取医院评分及自评信息
  441. const resp = await getCurrentHospSelfScore();
  442. setCurrentHospSelfScoreAndOthers(resp);
  443. };
  444. const getSelectableSelfScoreList = async () => {
  445. // 获取自评可选列表
  446. const resp = await getScoreLevelData();
  447. const listFilted = resp.filter((t: any) => t.configStatus != 0);
  448. const list = listFilted.map((t: any) => ({ label: t.levelNumber, value: t.levelNumber }));
  449. setTargetScores(list.reverse());
  450. };
  451. const getSelectableRuleChilds = async (id: number) => {
  452. // 获取台账上传时可选下拉类型
  453. const resp = await getRuleChildrens(id);
  454. return resp.map((t: { id: number; name: string }) => ({ label: t.name, value: t.id }));
  455. };
  456. const commitTaizhangImplementationHandle = async () => {
  457. // console.log({taizhangDataDirectoryCommitList});
  458. if (leafData) {
  459. const selfEvo = selectedSelfEvolution ? selectedSelfEvolution.label : '';
  460. const list = implementationData[selfEvo].map((item) => ({
  461. selfEvaluation: item.level,
  462. node: item.note,
  463. }));
  464. // 提交台账执行情况说明
  465. const respImplementation = await commitTaizhangImplementation({
  466. hospId: `${leafData.reviewArticle.hospId}`,
  467. id: leafData.reviewArticle.id,
  468. numStr: leafData.reviewArticle.numStr,
  469. selfEvaluation: selfEvo,
  470. version: leafData.reviewArticle.version,
  471. implementationDtoList: list,
  472. });
  473. const respDataDirectoryTable = await commitTaizhangDataDirectoryTableList(
  474. taizhangDataDirectoryCommitList,
  475. );
  476. setEditMode(false);
  477. // console.log({respDataDirectoryTable,respImplementation})
  478. if (respDataDirectoryTable && respImplementation) {
  479. // 每次服务保存数据成功后,清空台账上传的缓存数据
  480. setImplementationData({}); // 清空执行情况说明
  481. setTaizhangDataDirectoryCommitList([]); // 清空台账上传资料目录
  482. getTableData(); // 两个保存都成功时刷新数据
  483. }
  484. }
  485. };
  486. const getGradeOptions = async () => {
  487. if (leafData) {
  488. const { numStr, version } = leafData.reviewArticle;
  489. const resp = await getMaterialListGrades({ numStr, version });
  490. if (resp) {
  491. const options = resp.map(item => ({ label: item.grade, value: item.grade }));
  492. setGradeOptions(options);
  493. }
  494. }
  495. }
  496. const getAccoutTypeOptions = async () => {
  497. const resp = await getLedgerType();
  498. if (resp) {
  499. const options = resp.map(item => ({ label: item.generalName, value: item.generalName }));
  500. setAccountTypeOptions(options);
  501. }
  502. }
  503. useEffect(() => {
  504. if (!drawerVisible) {
  505. setDrawerFormType(undefined);
  506. }
  507. }, [drawerVisible]);
  508. useEffect(() => {
  509. // 叶子结点数据变化后相关回调
  510. if (leafData) {
  511. const { systemEvaluation, targetEvaluation, selfEvaluation, userId } =
  512. leafData.reviewArticle;
  513. const tempScoreList = [
  514. {
  515. label: '目标',
  516. value: targetEvaluation || '-',
  517. },
  518. {
  519. label: '自评',
  520. value: selfEvaluation || '-',
  521. },
  522. {
  523. label: '系统评分',
  524. value: systemEvaluation || '-',
  525. },
  526. ];
  527. /**
  528. * 默认加载页面时执行获取执行情况说明数据
  529. */
  530. const t = localStorage.getItem('userData') ? localStorage.getItem('userData') : '';
  531. const userData = JSON.parse(t as string);
  532. setHasEditAuthority(userId == userData.userId);
  533. setImplementationData({ [selfEvaluation]: leafData.pfmImplementations });
  534. const selfEvolution = leafData.reviewArticle.selfEvaluation;
  535. setSelectedSelfEvolution({ label: selfEvolution, value: selfEvolution });
  536. setScoreList(tempScoreList);
  537. getSelectableSelfScoreList();
  538. }
  539. }, [leafData]);
  540. console.log({ drawerFormType });
  541. useEffect(() => {
  542. // 当抽屉类型改变时
  543. console.log('drawerFormType changed');
  544. if (drawerFormType == 'BATCHSETTING' || drawerFormType == 'ARTICLE_SET') {
  545. getScoreList().then((data) => {
  546. const dataFilted = data.filter((t: any) => t.configStatus != 0); // 去掉不启动
  547. setTargetScores(dataFilted);
  548. });
  549. accreditationGroupType().then((data) => {
  550. setRuleTypes(data);
  551. });
  552. }
  553. }, [drawerFormType]);
  554. useEffect(() => {
  555. // 左侧树结构只看我的开关切换时,重新获取树结构数据
  556. getArticleTreeData();
  557. }, [isShowMineOnly]);
  558. useEffect(() => {
  559. // console.log({ leafData, selectedSelfEvolution });
  560. if (leafData && selectedSelfEvolution) {
  561. // 更新台账页面编辑下的执行情况说明
  562. getImplementationForEdit({
  563. level: selectedSelfEvolution.label,
  564. /**
  565. * 不能拿currentActivedTree里的version,numStr,
  566. * 因为台账上传页面详情抽屉读不到准确的四码和版本
  567. */
  568. version: leafData?.reviewArticle.version,
  569. numStr: leafData?.reviewArticle.numStr,
  570. });
  571. }
  572. }, [selectedSelfEvolution]);
  573. useEffect(() => {
  574. if (!editMode && leafData) {
  575. // 取消编辑时,将原自评等级设为默认
  576. const selfEvolution = leafData.reviewArticle.selfEvaluation;
  577. setSelectedSelfEvolution({ label: selfEvolution, value: selfEvolution });
  578. }
  579. }, [editMode]);
  580. useEffect(() => {
  581. // 切换页面类型时做相关处理,如清除之前页面的默认数据
  582. if (!moduleMode) {
  583. setEditMode(false); // 条文管理界面无需编辑
  584. setIsShowMineOnly(false); // 条文管理界面关闭
  585. }
  586. }, [moduleMode]);
  587. return {
  588. isLeaf,
  589. treeData,
  590. setTreeData,
  591. getArticleTreeData,
  592. getTableData,
  593. currentActivedTree,
  594. setCurrentActivedTree,
  595. scoreList, // 评分
  596. getDepartmentRequest,
  597. departmentManagers,
  598. getDepartment,
  599. targetScores,
  600. ruleTypes,
  601. leafData,
  602. setArticle,
  603. batchSetting,
  604. drawerFormType,
  605. setDrawerFormType,
  606. drawerVisible,
  607. setDrawerVisible,
  608. setSelectedRowKeys,
  609. reloadRightContent,
  610. setReloadRightContent,
  611. setModuleMode,
  612. moduleMode,
  613. selfEvaluationRecords,
  614. modalVisible,
  615. setModalVisible,
  616. uploadFile,
  617. uploadFormInitValue,
  618. setUploadFormInitValue,
  619. onSelfEvolutionTabChange,
  620. commitSelfEvolution,
  621. selectedSelfEvolution,
  622. getSelfEvaluationRecordList,
  623. getUploadLedgerType,
  624. uploadLedgerTypeList,
  625. setUploadLedgerTypeList,
  626. currentHospSelfScoreAndOthers,
  627. getCurrentHospScore,
  628. getSelectableRuleChilds,
  629. editMode,
  630. setEditMode,
  631. implementationData,
  632. setImplementationData,
  633. commitTaizhangImplementationHandle,
  634. taizhangDataDirectoryCommitList,
  635. setTaizhangDataDirectoryCommitList,
  636. setIsShowMineOnly,
  637. isShowMineOnly,
  638. setSelectedSelfEvolution,
  639. hasEditAuthority,
  640. gradeOptions,
  641. accountTypeOptions,
  642. getGradeOptions,
  643. getAccoutTypeOptions,
  644. articleSettingFormInit, setArticleSettingFormInit,
  645. setCurrentSelectedActObj,
  646. currentSelectedActObj,
  647. detailDrawerVisible,
  648. setdetailDrawerVisible,
  649. };
  650. };
  651. export default articleManagement;