index.tsx 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. /*
  2. * @Author: your name
  3. * @Date: 2021-09-14 10:22:09
  4. * @LastEditTime: 2021-10-28 15:41:40
  5. * @LastEditors: Please set LastEditors
  6. * @Description: In User Settings Edit
  7. * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/articleManagement/index.tsx
  8. */
  9. import React, { useEffect,useState } from 'react'
  10. import {useModel} from 'umi';
  11. import { Form,Tabs,Button } from 'antd'
  12. import {
  13. ProFormText,
  14. ProFormDateRangePicker,
  15. } from '@ant-design/pro-form';
  16. import ArticleManagementCopy from '@/pages/GradeHospitalAccreditation/articleManagement/index';
  17. import MccsDrawerForm from '@/components/MccsDrawerForm/index';
  18. import './index.less';
  19. import MccsScoreBanner from '@/components/MccsScoreBanner';
  20. import MccsRecordList from '@/components/MccsRecordList/index';
  21. import MccsClickableTabs from '@/components/MccsClickableTabs/index';
  22. import 'moment/locale/zh-cn';
  23. import locale from 'antd/es/date-picker/locale/zh_CN';
  24. type LedgerUploadPropsType = {
  25. }
  26. const { TabPane } = Tabs;
  27. //条文管理
  28. const LedgerUpload: React.FC<LedgerUploadPropsType> = (props) => {
  29. const columns = [
  30. // {
  31. // key: 'articleType',
  32. // hideInTable: true,
  33. // renderFormItem: (item: any, { type }: any, form: any) => {
  34. // if (type === 'form') {
  35. // return null;
  36. // }
  37. // return (
  38. // <ProFormSelect
  39. // width='sm'
  40. // options={[
  41. // { label: '全部', value: 'all' },
  42. // { label: '未解决', value: 'open' },
  43. // { label: '已解决', value: 'closed' },
  44. // { label: '解决中', value: 'processing' },
  45. // ]}
  46. // placeholder="台账状态"
  47. // />
  48. // )
  49. // },
  50. // },
  51. {
  52. hideInTable: true,
  53. renderFormItem: (item: any, { type }: any, form: any) => {
  54. if (type === 'form') {
  55. return null;
  56. }
  57. return (
  58. <ProFormDateRangePicker name='date' placeholder={['开始时间','结束时间']} fieldProps={{locale:locale}} />
  59. )
  60. },
  61. },
  62. {
  63. key: 'keyword',
  64. hideInTable: true,
  65. renderFormItem: (item: any, { type }: any, form: any) => {
  66. if (type === 'form') {
  67. return null;
  68. }
  69. return (
  70. <Form.Item name='keyword'>
  71. <ProFormText placeholder='条文/条款' />
  72. </Form.Item>
  73. )
  74. },
  75. },
  76. {
  77. title: '条款',
  78. key: 'numStr',
  79. dataIndex: 'numStr',
  80. hideInSearch: true,
  81. },
  82. {
  83. title: '条文',
  84. dataIndex: 'name',
  85. hideInSearch: true,
  86. width: '35%'
  87. },
  88. {
  89. title: '负责单位',
  90. dataIndex: 'responsibilityDepartmentName',
  91. hideInSearch: true,
  92. },
  93. {
  94. title: '负责人',
  95. dataIndex: 'responsibilityUserName',
  96. hideInSearch: true,
  97. },
  98. {
  99. title: '自评',
  100. hideInSearch: true,
  101. dataIndex: 'selfEvaluation',
  102. },
  103. // {
  104. // title: '现场查核',
  105. // hideInSearch: true,
  106. // dataIndex: 'siteEvaluation',
  107. // },
  108. {
  109. title: '目标',
  110. dataIndex: 'targetEvaluation',
  111. hideInSearch: true,
  112. },
  113. {
  114. title: '系统评分',
  115. dataIndex: 'systemEvaluation',
  116. hideInSearch: true,
  117. },
  118. {
  119. title: '操作',
  120. width: 100,
  121. valueType: 'option',
  122. render: (_:any, record:any) =>{
  123. return [<a key="1" onClick={()=>openDrawerHandle(record)}>详情</a>, <a key="2" onClick={()=>del(record)}>删除</a>]
  124. },
  125. },
  126. ]
  127. const { articleManagement,ledgerUpload } = useModel('allModels',model=>{
  128. return {articleManagement:model.articleManagement,ledgerUpload:model.ledgerUpload};
  129. });
  130. const {
  131. currentActivedTree,
  132. ...restArticleManagementModelData
  133. } = articleManagement;
  134. const {...restLedgerUploadModelData} = ledgerUpload;
  135. const [tabKey,setTabKey] = useState<string|number>(); //antd Tab切换
  136. const openDrawerHandle = (record:any)=>{
  137. // console.log({record});
  138. restLedgerUploadModelData.setCurrentRecord(record)
  139. restLedgerUploadModelData.setDrawerVisible(true);
  140. restArticleManagementModelData.getTableData({id:record.id});
  141. }
  142. const del = (record:any)=>{
  143. const {id} = record;
  144. restLedgerUploadModelData.delRuleHandle(id);
  145. restArticleManagementModelData.getArticleTreeData(); //刷新树结构
  146. restArticleManagementModelData.setReloadRightContent(true); //刷新表格数据
  147. }
  148. const onVisibleChangeHandle = (visible: boolean) => {
  149. restLedgerUploadModelData.setDrawerVisible(visible);
  150. }
  151. const upLoadFileHandle = (formInitData?:any) => {
  152. //因为modalForm开启了request+params获取表单默认值,
  153. //所以必须先设置默认值才能开启弹窗
  154. if(formInitData){
  155. const { fileUrl, recordTypeName, fileName } = formInitData;
  156. restArticleManagementModelData.setUploadFormInitValue({
  157. tab: recordTypeName,
  158. files: [{
  159. uid: new Date().getTime(),
  160. name: fileName,
  161. status: 'done',
  162. url: fileUrl
  163. }]
  164. });
  165. }else {
  166. restArticleManagementModelData.setUploadFormInitValue({})
  167. }
  168. restArticleManagementModelData.getUploadLedgerType().then(data=>{
  169. //设置上传台账可选类型
  170. restArticleManagementModelData.setUploadLedgerTypeList(data);
  171. })
  172. restArticleManagementModelData.setModalVisible(true);
  173. }
  174. const actionNodeFunc = (data: any) => {
  175. //渲染记录列表操作按钮
  176. // console.log({ data });
  177. const reupload = () => {
  178. upLoadFileHandle(data);
  179. }
  180. return <a onClick={reupload}>重新上传</a>
  181. }
  182. useEffect(()=>{
  183. //tab切换时
  184. //tab切换时重置
  185. // restArticleManagementModelData.setSelectedSelfEvolution(['null']);
  186. // restArticleManagementModelData.setCurrentSelectedSelefEvolution(undefined);
  187. if(tabKey==2){
  188. //切换为自评记录
  189. if(restLedgerUploadModelData.currentRecord){
  190. restLedgerUploadModelData.getSelfEvaluationRecordList(restLedgerUploadModelData.currentRecord.id); //获取自评记录列表
  191. }
  192. }
  193. },[tabKey]);
  194. return (
  195. <React.Fragment>
  196. <ArticleManagementCopy
  197. columnsFromProps={columns}
  198. isModeTwo={true}
  199. />
  200. <MccsDrawerForm
  201. title={restLedgerUploadModelData.currentRecord?.name}
  202. visible = {restLedgerUploadModelData.drawerVisible}
  203. onVisibleChange={onVisibleChangeHandle}
  204. >
  205. <div className='leafContent'>
  206. <div className='peopleGroup'>
  207. <span>条文组别:</span>
  208. <span>{restLedgerUploadModelData.currentRecord?.accountType}</span>
  209. <span>负责单位:</span>
  210. <span>{restLedgerUploadModelData.currentRecord?.responsibilityDepartmentName}</span>
  211. <span>负责人:</span>
  212. <span>{restLedgerUploadModelData.currentRecord?.responsibilityUserName}</span>
  213. </div>
  214. <MccsScoreBanner list={restLedgerUploadModelData.scoreList} />
  215. <div style={{ marginTop: 5 }}>
  216. <Tabs defaultActiveKey="1" centered size='large' onChange={(key) => {key == '2'&&restLedgerUploadModelData.getSelectableSelfScoreList();setTabKey(key);}}>
  217. <TabPane tab="台账记录" key="1">
  218. <div className='articleSetBtn'>
  219. <span onClick={()=>upLoadFileHandle()}>上传文件</span>
  220. </div>
  221. <MccsRecordList
  222. title='台账记录'
  223. list={restArticleManagementModelData.records}
  224. actionNode={(data) => actionNodeFunc(data)}
  225. />
  226. </TabPane>
  227. <TabPane tab="自评结果" key="2">
  228. <div className='selfEvolutionTitle'>开始自评</div>
  229. <div className='selfEvolutionArea'>
  230. <MccsClickableTabs
  231. classNames='tabWrap'
  232. onChange={(value:{label:string,value:any})=>restLedgerUploadModelData.onSelfEvolutionTabChange(value)}
  233. data={restLedgerUploadModelData.targetScores}
  234. value={restLedgerUploadModelData.selectedSelfEvolution}
  235. />
  236. <Button onClick={()=>restLedgerUploadModelData.commitSelfEvolution()}>提交自评</Button>
  237. </div>
  238. <MccsRecordList
  239. title='自评记录'
  240. list={restLedgerUploadModelData.selfEvaluationRecords}
  241. />
  242. </TabPane>
  243. </Tabs>
  244. </div>
  245. </div>
  246. </MccsDrawerForm>
  247. </React.Fragment>
  248. )
  249. }
  250. export default LedgerUpload