DialogDiseases.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695
  1. <template>
  2. <span style="color:red;">患者数据来源病案首页</span>
  3. <el-button @click="newlyAddedClick" type="success" icon="Plus">新增</el-button>
  4. <div style="display: flex">
  5. <div style="width: 400px">
  6. <vxe-table :data="infectiousDiseasesList"
  7. @cell-click="rowClick"
  8. :height="getWindowSize.h / 1.2">
  9. <vxe-column title="名称" field="contagion">
  10. <template #default="{row}">
  11. {{ getClassName(row)?.name }}
  12. </template>
  13. </vxe-column>
  14. <vxe-column title="日期"
  15. field="reportDate"
  16. width="120"
  17. formatter="formatDate"/>
  18. <vxe-column>
  19. <template #default="{row}">
  20. <el-button v-el-btn="{func: deleteClick, value: row}" type="danger">删除</el-button>
  21. </template>
  22. </vxe-column>
  23. </vxe-table>
  24. </div>
  25. <div style="flex: 1;min-width: 800px">
  26. <el-scrollbar :height="getWindowSize.h / 1.2">
  27. <el-form ref="formRef"
  28. :model="sheetData"
  29. :rules="rules"
  30. label-width="100px" inline>
  31. <el-row>
  32. <el-col :span="12">
  33. <el-form-item label="报卡类别:" prop="cardNo">
  34. {{ sheetData.cardNo }}
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="12">
  38. <el-form-item label="报卡类别:" prop="illType">
  39. <el-select v-model="sheetData.illType">
  40. <el-option v-for="item in cardReportingType"
  41. :label="item.name"
  42. :value="item.code"/>
  43. </el-select>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="12">
  47. <el-form-item label="姓名:">
  48. {{ sheetData.name }}
  49. </el-form-item>
  50. </el-col>
  51. <el-col :span="12">
  52. <el-form-item label="家长姓名:">
  53. <el-input v-model="sheetData.genearch"/>
  54. </el-form-item>
  55. </el-col>
  56. <el-col :span="12">
  57. <el-form-item label="孕妇:">
  58. <el-input v-model="sheetData.yunDays">
  59. <template #prepend>孕</template>
  60. <template #append>
  61. </template>
  62. </el-input>
  63. </el-form-item>
  64. </el-col>
  65. <el-col :span="12">
  66. <el-form-item label="身份证号:">
  67. <el-input v-model="sheetData.socialNo"/>
  68. </el-form-item>
  69. </el-col>
  70. <el-col :span="12">
  71. <el-form-item label="性别:" prop="sex">
  72. <el-select v-model="sheetData.sex">
  73. <el-option v-for="item in sexes"
  74. :label="item.name"
  75. :value="item.code.toString()"/>
  76. </el-select>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="12">
  80. <el-form-item label="出生日期:">
  81. <el-date-picker
  82. v-model="sheetData.birthDate"
  83. format="YYYY-MM-DD"
  84. value-format="YYYY-MM-DD"/>
  85. </el-form-item>
  86. </el-col>
  87. <el-col :span="12">
  88. <el-form-item label="年龄:">
  89. {{ sheetData.age }}
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="12">
  93. <el-form-item label="工作单位:">
  94. <el-input v-model="sheetData.corporation"/>
  95. </el-form-item>
  96. </el-col>
  97. <el-col :span="12">
  98. <el-form-item label="联系电话:" prop="relationTel">
  99. <el-input v-model="sheetData.relationTel"/>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="12">
  103. <el-form-item label="病人属于:" prop="scopeFlag">
  104. <el-select v-model="sheetData.scopeFlag">
  105. <el-option v-for="item in thePatientBelongsTo"
  106. :label="item.name"
  107. :value="item.code"/>
  108. </el-select>
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="12">
  112. <el-form-item label="职业:" prop="occupationCode">
  113. <el-select v-model="sheetData.occupationCode">
  114. <el-option v-for="item in occupation"
  115. :label="item.name"
  116. :value="item.code"/>
  117. </el-select>
  118. </el-form-item>
  119. </el-col>
  120. <el-col :span="12">
  121. <el-form-item label="现住址:">
  122. <el-input v-model="sheetData.currentDistrict"/>
  123. </el-form-item>
  124. </el-col>
  125. <el-col :span="12">
  126. <el-form-item label="现街道:" prop="currentStreet">
  127. <el-input v-model="sheetData.currentStreet"/>
  128. </el-form-item>
  129. </el-col>
  130. <el-col :span="24">
  131. <el-alert title="病历分类(乙型肝类、血吸虫病填写)"
  132. show-icon
  133. type="warning"
  134. :closable="false"/>
  135. </el-col>
  136. <el-col :span="12">
  137. <el-form-item label="分类(1):" prop="vaccinate">
  138. <el-select v-model="sheetData.vaccinate">
  139. <el-option v-for="item in medicalRecordClassification1"
  140. :label="item.name"
  141. :value="item.code"/>
  142. </el-select>
  143. </el-form-item>
  144. </el-col>
  145. <el-col :span="12">
  146. <el-form-item label="分类(2):" prop="vaccinate2">
  147. <el-select v-model="sheetData.vaccinate2">
  148. <el-option v-for="item in medicalRecordClassification2"
  149. :label="item.name"
  150. :value="item.code"/>
  151. </el-select>
  152. </el-form-item>
  153. </el-col>
  154. <el-col :span="12">
  155. <el-form-item label="发病日期:" prop="illStartDate">
  156. <el-date-picker
  157. type="datetime"
  158. v-model="sheetData.illStartDate"
  159. format="YYYY-MM-DD HH:mm:ss"
  160. value-format="YYYY-MM-DD HH:mm:ss"/>
  161. </el-form-item>
  162. </el-col>
  163. <el-col :span="12">
  164. <el-form-item label="诊断日期:" prop="illFirstDate">
  165. <el-date-picker
  166. type="datetime"
  167. v-model="sheetData.illFirstDate"
  168. format="YYYY-MM-DD HH:mm:ss"
  169. value-format="YYYY-MM-DD HH:mm:ss"/>
  170. </el-form-item>
  171. </el-col>
  172. <el-col :span="24">
  173. <el-form-item label="死亡日期:">
  174. <el-date-picker
  175. type="datetime"
  176. v-model="sheetData.deathDate"
  177. format="YYYY-MM-DD HH:mm:ss"
  178. value-format="YYYY-MM-DD HH:mm:ss"/>
  179. </el-form-item>
  180. </el-col>
  181. <el-col :span="24">
  182. <el-alert title="传染病"
  183. show-icon
  184. type="warning"
  185. :closable="false"/>
  186. </el-col>
  187. <el-col :span="8">
  188. <el-form-item label="甲类:" prop="contagion">
  189. <el-select v-model="sheetData.contagion"
  190. @change="changesInInfectiousDiseases('contagion')">
  191. <el-option v-for="item in classA"
  192. :label="item.name"
  193. :value="item.code"/>
  194. </el-select>
  195. </el-form-item>
  196. </el-col>
  197. <el-col :span="8">
  198. <el-form-item label="乙类:" prop="contagion2">
  199. <el-select v-model="sheetData.contagion2"
  200. @change="changesInInfectiousDiseases('contagion2')">
  201. <el-option v-for="item in classB"
  202. :label="item.name"
  203. :value="item.code"/>
  204. </el-select>
  205. </el-form-item>
  206. </el-col>
  207. <el-col :span="8">
  208. <el-form-item label="丙类:" prop="contagion3">
  209. <el-select v-model="sheetData.contagion3"
  210. @change="changesInInfectiousDiseases('contagion3')">
  211. <el-option v-for="item in classC"
  212. :label="item.name"
  213. :value="item.code"/>
  214. </el-select>
  215. </el-form-item>
  216. </el-col>
  217. <el-col :span="24">
  218. <el-alert title="其他法定管理以及重点临测传染病"
  219. show-icon
  220. type="warning"
  221. :closable="false"/>
  222. </el-col>
  223. <el-col :span="24">
  224. <el-form-item label="其他" prop="contagionQt">
  225. <el-select v-model="sheetData.contagionQt"
  226. @change="changesInInfectiousDiseases('contagionQt')">
  227. <el-option v-for="item in otherInfections"
  228. :label="item.name"
  229. :value="item.code"/>
  230. </el-select>
  231. </el-form-item>
  232. </el-col>
  233. <el-col :span="24">
  234. <el-alert title="梅毒检测结果"
  235. show-icon
  236. type="warning"
  237. :closable="false"/>
  238. </el-col>
  239. <el-col :span="24">
  240. <el-alert title="成人/患儿生母填写"
  241. show-icon
  242. type="info"
  243. :closable="false"/>
  244. </el-col>
  245. <el-col :span="12">
  246. <el-form-item label="TRUST/RPR:">
  247. <el-select v-model="sheetData.mtrust">
  248. <el-option v-for="item in testing"
  249. :label="item.name"
  250. :value="item.code"/>
  251. </el-select>
  252. </el-form-item>
  253. </el-col>
  254. <el-col :span="12">
  255. <el-form-item label="滴度::">
  256. <el-select v-model="sheetData.mrpr">
  257. <el-option v-for="item in other"
  258. :label="item.name"
  259. :value="item.code"/>
  260. </el-select>
  261. </el-form-item>
  262. </el-col>
  263. <el-col :span="12">
  264. <el-form-item label="TPPA/TPHA:">
  265. <el-select v-model="sheetData.mtppa">
  266. <el-option v-for="item in testing"
  267. :label="item.name"
  268. :value="item.code"/>
  269. </el-select>
  270. </el-form-item>
  271. </el-col>
  272. <el-col :span="12">
  273. <el-form-item label="其他:">
  274. <el-select v-model="sheetData.mother">
  275. <el-option v-for="item in testOther"
  276. :label="item.name"
  277. :value="item.code"/>
  278. </el-select>
  279. </el-form-item>
  280. </el-col>
  281. <el-col :span="24">
  282. <el-alert title="患儿填写"
  283. show-icon
  284. type="info"
  285. :closable="false"/>
  286. </el-col>
  287. <el-col :span="12">
  288. <el-form-item label="TRUST/RPR:">
  289. <el-select v-model="sheetData.ctrust">
  290. <el-option v-for="item in testing"
  291. :label="item.name"
  292. :value="item.code"/>
  293. </el-select>
  294. </el-form-item>
  295. </el-col>
  296. <el-col :span="12">
  297. <el-form-item label="滴度::">
  298. <el-select v-model="sheetData.crpr">
  299. <el-option v-for="item in other"
  300. :label="item.name"
  301. :value="item.code"/>
  302. </el-select>
  303. </el-form-item>
  304. </el-col>
  305. <el-col :span="12">
  306. <el-form-item label="TPPA/TPHA:">
  307. <el-select v-model="sheetData.ctppa">
  308. <el-option v-for="item in testing"
  309. :label="item.name"
  310. :value="item.code"/>
  311. </el-select>
  312. </el-form-item>
  313. </el-col>
  314. <el-col :span="12">
  315. <el-form-item label="19S-IgM-TPHA:">
  316. <el-select v-model="sheetData.ctpha">
  317. <el-option v-for="item in testing"
  318. :label="item.name"
  319. :value="item.code"/>
  320. </el-select>
  321. </el-form-item>
  322. </el-col>
  323. <el-col :span="12">
  324. <el-form-item label="订正病名:" prop="contagionText">
  325. <el-input v-model="sheetData.contagionText"/>
  326. </el-form-item>
  327. </el-col>
  328. <el-col :span="12">
  329. <el-form-item label="诊断依据:" prop="disDiagType">
  330. <el-select v-model="sheetData.disDiagType">
  331. <el-option v-for="item in diagnosticBasis"
  332. :label="item.name"
  333. :value="item.code"/>
  334. </el-select>
  335. </el-form-item>
  336. </el-col>
  337. <el-col :span="12">
  338. <el-form-item label="报告单位:">
  339. 长沙泰和医院
  340. </el-form-item>
  341. </el-col>
  342. <el-col :span="12">
  343. <el-form-item label="退卡原因:" prop="cardRet">
  344. <el-input v-model="sheetData.cardRet"/>
  345. </el-form-item>
  346. </el-col>
  347. <el-col :span="12">
  348. <el-form-item label="报告医生:">
  349. {{ userData.name }}
  350. </el-form-item>
  351. </el-col>
  352. <el-col :span="12">
  353. <el-form-item label="联系电话:" prop="reportTel">
  354. <el-input v-model="sheetData.reportTel"/>
  355. </el-form-item>
  356. </el-col>
  357. <el-col :span="12">
  358. <el-form-item label="报告日期:" prop="reportDate">
  359. {{ sheetData.reportDate }}
  360. </el-form-item>
  361. </el-col>
  362. <el-col :span="12">
  363. <el-form-item label="填卡日期:" prop="inputDt">
  364. {{ sheetData.inputDt }}
  365. </el-form-item>
  366. </el-col>
  367. <el-col :span="24">
  368. <el-form-item label="备注:" prop="remark" style="width: 80%">
  369. <el-input v-model="sheetData.remark"/>
  370. </el-form-item>
  371. </el-col>
  372. <el-col :span="12">
  373. <el-form-item label="既往史:" prop="anamnesis">
  374. <el-select v-model="sheetData.anamnesis">
  375. <el-option v-for="item in pastHistory"
  376. :label="item.name"
  377. :value="item.code"/>
  378. </el-select>
  379. </el-form-item>
  380. </el-col>
  381. <el-col :span="24">
  382. <el-form-item label="本次就诊:" prop="visitType">
  383. <el-select v-model="sheetData.visitType">
  384. <el-option v-for="item in visitType"
  385. :label="item.name"
  386. :value="item.code"/>
  387. </el-select>
  388. </el-form-item>
  389. </el-col>
  390. <el-col :span="24">
  391. <el-alert title="病毒性肝炎专报"
  392. show-icon
  393. type="warning"
  394. :closable="false"/>
  395. </el-col>
  396. <el-col :span="12">
  397. <el-form-item label="临床分型:" prop="gyLcfx">
  398. <el-select v-model="sheetData.gyLcfx">
  399. <el-option v-for="item in gyLcfx"
  400. :label="item.name"
  401. :value="item.code"/>
  402. </el-select>
  403. </el-form-item>
  404. </el-col>
  405. <el-col :span="12">
  406. <el-form-item label="病原分型:" prop="gyByfx">
  407. <el-select v-model="sheetData.gyByfx">
  408. <el-option v-for="item in gyByfx"
  409. :label="item.name"
  410. :value="item.code"/>
  411. </el-select>
  412. </el-form-item>
  413. </el-col>
  414. <!-- 第一行 -->
  415. <el-col :span="6">
  416. <el-form-item label="ALT:" prop="valt">
  417. <el-input v-model="sheetData.valt"/>
  418. </el-form-item>
  419. </el-col>
  420. <el-col :span="6">
  421. <el-form-item label="总胆红质:" prop="vzdhz">
  422. <el-input v-model="sheetData.vzdhz"/>
  423. </el-form-item>
  424. </el-col>
  425. <el-col :span="6">
  426. <el-form-item label="抗-HAVIgM:" prop="vkhavigm">
  427. <el-input v-model="sheetData.vkhavigm"/>
  428. </el-form-item>
  429. </el-col>
  430. <el-col :span="6">
  431. <el-form-item label="HAV-RNA:" prop="vhavRna">
  432. <el-input v-model="sheetData.vhavRna"/>
  433. </el-form-item>
  434. </el-col>
  435. <!-- 第2行 -->
  436. <el-col :span="6">
  437. <el-form-item label="HbsAg:" prop="vhbsag">
  438. <el-input v-model="sheetData.vhbsag"/>
  439. </el-form-item>
  440. </el-col>
  441. <el-col :span="6">
  442. <el-form-item label="抗-HBs:" prop="vkhbs">
  443. <el-input v-model="sheetData.vkhbs"/>
  444. </el-form-item>
  445. </el-col>
  446. <el-col :span="6">
  447. <el-form-item label="HBeAg:" prop="vhbeag">
  448. <el-input v-model="sheetData.vhbeag"/>
  449. </el-form-item>
  450. </el-col>
  451. <el-col :span="6">
  452. <el-form-item label="抗-HBe:" prop="vkhbe">
  453. <el-input v-model="sheetData.vkhbe"/>
  454. </el-form-item>
  455. </el-col>
  456. <!-- 第3行 -->
  457. <el-col :span="6">
  458. <el-form-item label="抗-HBc:" prop="vkhbc">
  459. <el-input v-model="sheetData.vkhbc"/>
  460. </el-form-item>
  461. </el-col>
  462. <el-col :span="6">
  463. <el-form-item label="抗-HBcIgM:" prop="vkhbcigm">
  464. <el-input v-model="sheetData.vkhbcigm"/>
  465. </el-form-item>
  466. </el-col>
  467. <el-col :span="6">
  468. <el-form-item label="HBV-DNA:" prop="vhbvDna">
  469. <el-input v-model="sheetData.vhbvDna"/>
  470. </el-form-item>
  471. </el-col>
  472. <el-col :span="6">
  473. <el-form-item label="抗-HCV:" prop="vkhcv">
  474. <el-input v-model="sheetData.vkhcv"/>
  475. </el-form-item>
  476. </el-col>
  477. <!-- 第4行 -->
  478. <el-col :span="6">
  479. <el-form-item label="HCV-RNA:" prop="vhcvrna">
  480. <el-input v-model="sheetData.vhcvrna"/>
  481. </el-form-item>
  482. </el-col>
  483. <el-col :span="6">
  484. <el-form-item label="抗-HDVIgM:" prop="vkhdvigm">
  485. <el-input v-model="sheetData.vkhdvigm"/>
  486. </el-form-item>
  487. </el-col>
  488. <el-col :span="6">
  489. <el-form-item label="抗HDV:" prop="vkhdv">
  490. <el-input v-model="sheetData.vkhdv"/>
  491. </el-form-item>
  492. </el-col>
  493. <el-col :span="6">
  494. <el-form-item label="HDV-RNA:" prop="vhdvRna">
  495. <el-input v-model="sheetData.vhdvRna"/>
  496. </el-form-item>
  497. </el-col>
  498. <!-- 第5行 -->
  499. <el-col :span="6">
  500. <el-form-item label="抗-HEVIgM:" prop="vkhevigm">
  501. <el-input v-model="sheetData.vkhevigm"/>
  502. </el-form-item>
  503. </el-col>
  504. <el-col :span="6">
  505. <el-form-item label="抗HEV:" prop="vkhev">
  506. <el-input v-model="sheetData.vkhev"/>
  507. </el-form-item>
  508. </el-col>
  509. <el-col :span="6">
  510. <el-form-item label="HEV-RNA:" prop="vhevrna">
  511. <el-input v-model="sheetData.vhevrna"/>
  512. </el-form-item>
  513. </el-col>
  514. <el-col :span="6">
  515. <el-form-item label="订正病名:" prop="gyDzbm">
  516. <el-input v-model="sheetData.gyDzbm"/>
  517. </el-form-item>
  518. </el-col>
  519. </el-row>
  520. </el-form>
  521. </el-scrollbar>
  522. </div>
  523. </div>
  524. </template>
  525. <script setup name='DialogDiseases'>
  526. import {getSheetInfo} from "@/api/case-front-sheet";
  527. import {sexes} from "@/data";
  528. import {
  529. cardReportingType, classA, classB, classC, diagnosticBasis, getClassName, gyByfx, gyLcfx,
  530. medicalRecordClassification1, medicalRecordClassification2,
  531. occupation, other, otherInfections, pastHistory, testing, testOther,
  532. thePatientBelongsTo, visitType
  533. } from "@/data/infectious-diseases-data";
  534. import {getWindowSize} from "@/utils/window-size";
  535. import store from "@/store";
  536. import {getServerDateApi} from "@/api/public-api";
  537. import {stringIsBlank} from "@/utils/blank-utils";
  538. import {
  539. confirmCrb, delCrb,
  540. getContagiousDiseaseByPatNo,
  541. updateCrb
  542. } from "@/api/zhu-yuan-yi-sheng/infectious-diseasest";
  543. import {xcMessage} from "@/utils/xiaochan-element-plus";
  544. import {ElMessageBox} from "element-plus";
  545. const props = defineProps({
  546. patNo: {
  547. type: String,
  548. default: '0406942'
  549. },
  550. times: {
  551. type: Number,
  552. default: 1
  553. }
  554. })
  555. const emits = defineEmits(['confirm'])
  556. let userData = store.state.user.info
  557. const sheetData = ref({})
  558. let patInfo = {}
  559. const infectiousDiseasesList = ref([])
  560. const setDefault = async () => {
  561. let date = await getServerDateApi()
  562. sheetData.value.name = patInfo.name
  563. sheetData.value.socialNo = patInfo.socialNo
  564. sheetData.value.sex = patInfo.sex
  565. sheetData.value.birthDate = patInfo.birthDate
  566. sheetData.value.age = patInfo.age
  567. sheetData.value.corporation = patInfo.unitName
  568. sheetData.value.relationTel = patInfo.phone
  569. sheetData.value.occupationCode = patInfo.occupation
  570. sheetData.value.currentDistrict = patInfo.livePlaceCombo
  571. sheetData.value.reportDate = date
  572. sheetData.value.inputDt = date
  573. sheetData.value.patientId = props.patNo
  574. sheetData.value.times = props.times
  575. sheetData.value.ageUnit = '岁'
  576. sheetData.value.reportDept = patInfo.admissWardCode
  577. sheetData.value.reportHospital = '长沙泰和医院'
  578. }
  579. const changesInInfectiousDiseases = (val) => {
  580. let temp = ['contagion', 'contagion2', 'contagion3', 'contagionQt']
  581. temp.forEach(item => {
  582. if (item !== val) {
  583. sheetData.value[item] = null
  584. }
  585. })
  586. }
  587. const contagionFunc = (rule, value, callback) => {
  588. if (stringIsBlank(sheetData.value.contagion)
  589. && stringIsBlank(sheetData.value.contagion2)
  590. && stringIsBlank(sheetData.value.contagion3)
  591. && stringIsBlank(sheetData.value.contagionQt)) {
  592. callback(new Error('至少选择一项'));
  593. } else {
  594. callback()
  595. }
  596. }
  597. const vaccinateFunc = (rule, value, callback) => {
  598. if (stringIsBlank(sheetData.value.vaccinate) && stringIsBlank(sheetData.value.vaccinate2)) {
  599. callback(new Error('至少选择一项'));
  600. } else {
  601. callback()
  602. }
  603. }
  604. const contagionMessage = '丙类,乙类,丙类,其他,任选其一'
  605. const rules = reactive({
  606. name: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  607. illType: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  608. sex: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  609. birthDate: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  610. relationTel: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  611. scopeFlag: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  612. occupationCode: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  613. currentStreet: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  614. vaccinate: [{validator: vaccinateFunc, message: '该项不能为空', trigger: 'blur'}],
  615. vaccinate2: [{validator: vaccinateFunc, message: '该项不能为空', trigger: 'blur'}],
  616. illStartDate: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  617. illFirstDate: [{required: true, message: '该项不能为空', trigger: 'blur'}],
  618. contagion: [{message: contagionMessage, validator: contagionFunc, trigger: 'blur'}],
  619. contagion2: [{message: contagionMessage, validator: contagionFunc, trigger: 'blur'}],
  620. contagion3: [{message: contagionMessage, validator: contagionFunc, trigger: 'blur'}],
  621. contagionQt: [{message: contagionMessage, validator: contagionFunc, trigger: 'blur'}],
  622. })
  623. const rowClick = ({row}) => {
  624. sheetData.value = row
  625. }
  626. const newlyAddedClick = async () => {
  627. sheetData.value = {}
  628. await setDefault()
  629. }
  630. const query = async () => {
  631. infectiousDiseasesList.value = await getContagiousDiseaseByPatNo(props.patNo)
  632. }
  633. onMounted(async () => {
  634. await query()
  635. patInfo = await getSheetInfo({
  636. bah: props.patNo,
  637. times: props.times,
  638. inOutFlag: 1
  639. })
  640. await setDefault()
  641. })
  642. const formRef = ref(null)
  643. const confirm = async () => {
  644. try {
  645. await formRef.value.validate();
  646. if (stringIsBlank(sheetData.value.cardNo)) {
  647. await confirmCrb(sheetData.value)
  648. } else {
  649. await updateCrb(sheetData.value)
  650. }
  651. await query()
  652. await newlyAddedClick()
  653. } catch {
  654. xcMessage.error('有必填项不能为空。')
  655. }
  656. }
  657. const deleteClick = async (row) => {
  658. await ElMessageBox.confirm('是否要删除', '提示', {
  659. type: 'error',
  660. });
  661. let {patientId, times, cardNo} = row;
  662. await delCrb(patientId, times, cardNo);
  663. await query();
  664. await newlyAddedClick();
  665. }
  666. defineExpose({
  667. confirm
  668. })
  669. </script>
  670. <style scoped lang="scss">
  671. </style>