Form.vue 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284
  1. <template>
  2. <Dialog
  3. v-model="dialogVisible"
  4. title="健康档案"
  5. width="80%"
  6. class="health-record-form"
  7. scroll
  8. noPaddingEL="health-record-form"
  9. >
  10. <el-form ref="formRef" :model="dataForm" label-width="120px" :disabled="isDetail">
  11. <el-row :gutter="20">
  12. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  13. <el-form-item label="长者姓名" prop="elderId">
  14. <selectElder v-model="dataForm.elderId" :disabled="!!dataForm.id" />
  15. </el-form-item>
  16. </el-col>
  17. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  18. <el-form-item label="房号/床号">
  19. <el-input v-model="dataForm.bedName" disabled />
  20. </el-form-item>
  21. </el-col>
  22. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  23. <el-form-item label="性别" prop="elderSex">
  24. <el-select v-model="dataForm.elderSex" clearable :style="{ width: '100%' }" disabled>
  25. <el-option
  26. v-for="(item, index) in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
  27. :key="index"
  28. :label="item.label"
  29. :value="item.value"
  30. />
  31. </el-select>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  35. <el-form-item label="医疗支付方式" prop="medicalPaymentMethods">
  36. <el-select
  37. v-model="dataForm.medicalPaymentMethods"
  38. placeholder="请选择医疗保险"
  39. clearable
  40. :style="{ width: '100%' }"
  41. >
  42. <el-option
  43. v-for="(item, index) in getStrDictOptions(DICT_TYPE.MEDICAL_INSURANCE_ARR)"
  44. :key="index"
  45. :label="item.label"
  46. :value="item.value"
  47. />
  48. </el-select>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  52. <el-form-item label="电话" prop="phone">
  53. <el-input v-model="dataForm.phone" />
  54. </el-form-item>
  55. </el-col>
  56. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  57. <el-form-item label="居住情况" prop="liveType">
  58. <el-select
  59. v-model="dataForm.liveType"
  60. placeholder="请选择居住情况"
  61. clearable
  62. :style="{ width: '100%' }"
  63. >
  64. <el-option
  65. v-for="(item, index) in getStrDictOptions(DICT_TYPE.LIVE_ARR)"
  66. :key="index"
  67. :label="item.label"
  68. :value="item.value"
  69. />
  70. </el-select>
  71. </el-form-item>
  72. </el-col>
  73. </el-row>
  74. <div class="info-title">基本情况</div>
  75. <div class="info-wrap">
  76. <el-row :gutter="20">
  77. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  78. <el-form-item label="血型" prop="bloodType">
  79. <el-select
  80. v-model="dataForm.bloodType"
  81. placeholder="请选择"
  82. clearable
  83. :style="{ width: '100%' }"
  84. >
  85. <el-option
  86. v-for="(item, index) in getStrDictOptions(DICT_TYPE.BLOOD_TYPE)"
  87. :key="index"
  88. :label="item.label"
  89. :value="item.value"
  90. />
  91. </el-select>
  92. </el-form-item>
  93. </el-col>
  94. </el-row>
  95. <el-col :span="24">
  96. <el-divider />
  97. </el-col>
  98. <el-row :gutter="20">
  99. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="8">
  100. <el-form-item label="药物过敏史" prop="drugAllergyHistory">
  101. <!-- <el-select-->
  102. <!-- v-model="dataForm.drugAllergyHistoryFlag"-->
  103. <!-- placeholder="请选择"-->
  104. <!-- clearable-->
  105. <!-- @change="resetInput('drugAllergyHistory')"-->
  106. <!-- >-->
  107. <!-- <el-option-->
  108. <!-- v-for="(item, index) in getStrDictOptions(DICT_TYPE.COMMON_STATUS4)"-->
  109. <!-- :key="index"-->
  110. <!-- :label="item.label"-->
  111. <!-- :value="item.value"-->
  112. <!-- />-->
  113. <!-- </el-select>-->
  114. <el-input
  115. type="text"
  116. v-model="dataForm.drugAllergyHistory"
  117. :disabled="isDetail"
  118. placeholder="请输入药物过敏史"
  119. />
  120. </el-form-item>
  121. </el-col>
  122. <!-- <el-col :span="16" v-if="dataForm.drugAllergyHistoryFlag == '1'">-->
  123. <!-- <el-form-item label="过敏物质">-->
  124. <!-- <el-checkbox-group-->
  125. <!-- v-model="dataForm.drugAllergyHistory"-->
  126. <!-- @change="(arg) => handleChange(arg, 'drugAllergyHistory')"-->
  127. <!-- >-->
  128. <!-- <el-checkbox-->
  129. <!-- v-for="(item, index) in getStrDictOptions(DICT_TYPE.DRUG_ALLERGY_ARR)"-->
  130. <!-- :label="item.value"-->
  131. <!-- :key="index"-->
  132. <!-- >{{ item.label }}</el-checkbox-->
  133. <!-- >-->
  134. <!-- </el-checkbox-group>-->
  135. <!-- </el-form-item>-->
  136. <!-- </el-col>-->
  137. </el-row>
  138. <el-row :gutter="20">
  139. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="8">
  140. <el-form-item label="食物过敏史" prop="historyFoodAllergies">
  141. <!-- <el-select-->
  142. <!-- v-model="dataForm.historyFoodAllergiesFlag"-->
  143. <!-- placeholder="请选择"-->
  144. <!-- clearable-->
  145. <!-- @change="resetInput('historyFoodAllergies')"-->
  146. <!-- >-->
  147. <!-- <el-option-->
  148. <!-- v-for="(item, index) in getStrDictOptions(DICT_TYPE.COMMON_STATUS4)"-->
  149. <!-- :key="index"-->
  150. <!-- :label="item.label"-->
  151. <!-- :value="item.value"-->
  152. <!-- />-->
  153. <!-- </el-select>-->
  154. <el-input
  155. type="text"
  156. v-model="dataForm.historyFoodAllergies"
  157. :disabled="isDetail"
  158. placeholder="请输入食物过敏史"
  159. />
  160. </el-form-item>
  161. </el-col>
  162. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="8">
  163. <el-form-item label="照护要点" prop="careNote">
  164. <el-input
  165. type="text"
  166. v-model="dataForm.careNote"
  167. :disabled="isDetail"
  168. placeholder="请输入照护要点"
  169. />
  170. </el-form-item>
  171. </el-col>
  172. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="8">
  173. <el-form-item label="饮食要点" prop="dietaryGuidelines">
  174. <el-select v-model="dataForm.dietaryGuidelines" placeholder="请选择" clearable>
  175. <el-option
  176. v-for="(item, index) in [
  177. { label: '普食', value: '普食' },
  178. { label: '软食', value: '软食' },
  179. { label: '半流质', value: '半流质' },
  180. { label: '流质', value: '流质' },
  181. { label: '鼻饲', value: '鼻饲' }
  182. ]"
  183. :key="index"
  184. :label="item.label"
  185. :value="item.value"
  186. />
  187. </el-select>
  188. </el-form-item>
  189. </el-col>
  190. </el-row>
  191. <el-col :span="24">
  192. <el-divider />
  193. </el-col>
  194. <el-row :gutter="20">
  195. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  196. <el-form-item label="职业暴露情况" prop="exposureSituationFlag">
  197. <el-select
  198. v-model="dataForm.exposureSituationFlag"
  199. placeholder="请选择"
  200. clearable
  201. @change="resetForm('exposureSituation')"
  202. >
  203. <el-option
  204. v-for="(item, index) in getStrDictOptions(DICT_TYPE.COMMON_STATUS4)"
  205. :key="index"
  206. :label="item.label"
  207. :value="item.value"
  208. />
  209. </el-select>
  210. </el-form-item>
  211. </el-col>
  212. <template v-if="dataForm.exposureSituationFlag == '1'">
  213. <el-col :span="10">
  214. <el-form-item label="毒物种类">
  215. <el-checkbox-group v-model="dataForm.typesToxins">
  216. <el-checkbox
  217. v-for="(item, index) in getStrDictOptions(DICT_TYPE.POISONS_ARR)"
  218. :label="item.value"
  219. :key="index"
  220. >{{ item.label }}</el-checkbox
  221. >
  222. </el-checkbox-group>
  223. <input
  224. type="text"
  225. class="sInput"
  226. style="width: 45px"
  227. v-model="typesToxinsInput"
  228. :disabled="isDetail"
  229. />
  230. </el-form-item>
  231. </el-col>
  232. <el-col :span="6">
  233. <el-form-item label="防护措施">
  234. <el-radio-group v-model="dataForm.protectiveMeasuresFlag">
  235. <el-radio
  236. v-for="(item, index) in getStrDictOptions(DICT_TYPE.COMMON_STATUS4)"
  237. :key="index"
  238. :label="item.value"
  239. >{{ item.label }}</el-radio
  240. >
  241. </el-radio-group>
  242. </el-form-item>
  243. </el-col>
  244. </template>
  245. <el-col :span="24">
  246. <el-form-item label="情况描述" prop="exposureSituationDescribe">
  247. <el-input v-model="dataForm.exposureSituationDescribe" />
  248. </el-form-item>
  249. </el-col>
  250. </el-row>
  251. <el-col :span="24">
  252. <el-divider />
  253. </el-col>
  254. <el-row :gutter="20">
  255. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  256. <el-form-item label="残疾情况" prop="disabilitySituationFlag">
  257. <el-select
  258. v-model="dataForm.disabilitySituationFlag"
  259. placeholder="请选择"
  260. clearable
  261. :style="{ width: '100%' }"
  262. @change="resetInput('disabilitySituation')"
  263. >
  264. <el-option
  265. v-for="(item, index) in getStrDictOptions(DICT_TYPE.COMMON_STATUS4)"
  266. :key="index"
  267. :label="item.label"
  268. :value="item.value"
  269. />
  270. </el-select>
  271. </el-form-item>
  272. </el-col>
  273. <el-col :span="16" v-if="dataForm.disabilitySituationFlag == '1'">
  274. <el-checkbox-group v-model="dataForm.disabilitySituation">
  275. <el-checkbox
  276. v-for="(item, index) in getStrDictOptions(DICT_TYPE.DISABILITY_ARR)"
  277. :label="item.value"
  278. :key="index"
  279. >{{ item.label }}</el-checkbox
  280. >
  281. </el-checkbox-group>
  282. <input
  283. type="text"
  284. class="sInput"
  285. v-model="disabilitySituationInput"
  286. :disabled="isDetail"
  287. />
  288. </el-col>
  289. </el-row>
  290. </div>
  291. <div class="info-title">生活方式</div>
  292. <div class="info-wrap">
  293. <el-row :gutter="20">
  294. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  295. <el-form-item label="锻炼频率" prop="exerciseFrequency">
  296. <el-select v-model="dataForm.exerciseFrequency" placeholder="请选择" clearable>
  297. <el-option
  298. v-for="(item, index) in getStrDictOptions(DICT_TYPE.EXERCISE_FREQUENCY_ARR)"
  299. :key="index"
  300. :label="item.label"
  301. :value="item.value"
  302. />
  303. </el-select>
  304. </el-form-item>
  305. </el-col>
  306. </el-row>
  307. <el-row :gutter="20">
  308. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  309. <el-form-item label="饮食习惯" prop="dietetic">
  310. <el-select v-model="dataForm.dietetic" placeholder="请选择" clearable>
  311. <el-option
  312. v-for="(item, index) in getStrDictOptions(DICT_TYPE.EATING_HABITS_ARR)"
  313. :key="index"
  314. :label="item.label"
  315. :value="item.value"
  316. />
  317. </el-select>
  318. </el-form-item>
  319. </el-col>
  320. </el-row>
  321. <el-row :gutter="20">
  322. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  323. <el-form-item label="吸烟情况" prop="smokingStatus">
  324. <el-select v-model="dataForm.smokingStatus" placeholder="请选择" clearable>
  325. <el-option
  326. v-for="(item, index) in getStrDictOptions(DICT_TYPE.SMOKE_ARR)"
  327. :key="index"
  328. :label="item.label"
  329. :value="item.value"
  330. />
  331. </el-select>
  332. </el-form-item>
  333. </el-col>
  334. </el-row>
  335. <el-row :gutter="20">
  336. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  337. <el-form-item label="饮酒情况" prop="drinkLiquor">
  338. <el-select v-model="dataForm.drinkLiquor" placeholder="请选择" clearable>
  339. <el-option
  340. v-for="(item, index) in getStrDictOptions(DICT_TYPE.DRINK_ARR)"
  341. :key="index"
  342. :label="item.label"
  343. :value="item.value"
  344. />
  345. </el-select>
  346. </el-form-item>
  347. </el-col>
  348. </el-row>
  349. </div>
  350. <div class="info-title">既往史</div>
  351. <div class="info-wrap">
  352. <el-row :gutter="20">
  353. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
  354. <el-form-item label="既往病史" prop="preexistingDisease">
  355. <!-- <el-select-->
  356. <!-- v-model="dataForm.diseaseFree"-->
  357. <!-- placeholder="请选择"-->
  358. <!-- clearable-->
  359. <!-- @change="resetInput('preexistingDisease')"-->
  360. <!-- >-->
  361. <!-- <el-option-->
  362. <!-- v-for="(item, index) in getStrDictOptions(DICT_TYPE.COMMON_STATUS4)"-->
  363. <!-- :key="index"-->
  364. <!-- :label="item.label"-->
  365. <!-- :value="item.value"-->
  366. <!-- />-->
  367. <!-- </el-select>-->
  368. <el-input
  369. type="text"
  370. placeholder="请输入既往病史"
  371. v-model="dataForm.preexistingDisease"
  372. :disabled="isDetail"
  373. />
  374. </el-form-item>
  375. </el-col>
  376. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
  377. <el-form-item label="用药史" prop="medicationHistory">
  378. <el-input
  379. type="text"
  380. placeholder="请输入用药史"
  381. v-model="dataForm.medicationHistory"
  382. :disabled="isDetail"
  383. />
  384. </el-form-item>
  385. </el-col>
  386. </el-row>
  387. <el-row :gutter="20">
  388. <el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
  389. <el-form-item label="责任护士" prop="nurse">
  390. <el-input v-model="dataForm.nurse" placeholder="请输入" />
  391. </el-form-item>
  392. </el-col>
  393. <el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
  394. <el-form-item label="主管医生" prop="doctor">
  395. <el-input v-model="dataForm.doctor" placeholder="请输入" />
  396. </el-form-item>
  397. </el-col>
  398. <el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
  399. <el-form-item label="责任护理员" prop="nurseAssistant">
  400. <el-input v-model="dataForm.nurseAssistant" placeholder="请输入" />
  401. </el-form-item>
  402. </el-col>
  403. </el-row>
  404. <div class="risk-table-wrapper">
  405. <div style="margin-bottom: 12px; font-weight: bold">长者九防情况</div>
  406. <table class="risk-table">
  407. <thead>
  408. <tr>
  409. <th class="col-index">序号</th>
  410. <th class="col-project">项目</th>
  411. <th class="col-level">风险程度</th>
  412. <th class="col-remark">备注</th>
  413. </tr>
  414. </thead>
  415. <tbody>
  416. <tr v-for="(item, index) in riskTableItems" :key="index">
  417. <td class="col-index">{{ index + 1 }}</td>
  418. <td class="col-project">{{ item.name }}:</td>
  419. <td class="col-level">
  420. <el-select
  421. v-model="dataForm[item.field]"
  422. placeholder="请选择"
  423. style="width: 180px"
  424. :disabled="isDetail"
  425. >
  426. <el-option
  427. v-for="option in getRiskOptions(item.key)"
  428. :key="option.value"
  429. :label="option.label"
  430. :value="option.value"
  431. />
  432. </el-select>
  433. </td>
  434. <td class="col-remark">
  435. <span class="remark-text">风险程度:</span>
  436. <el-checkbox
  437. :model-value="dataForm[item.field] === 'low' || dataForm[item.field] === 'none'"
  438. :disabled="isDetail"
  439. size="small"
  440. @change="(val: any) => handleRiskCheckboxChange(item, 'low', val)"
  441. >低危</el-checkbox
  442. >
  443. <el-checkbox
  444. :model-value="dataForm[item.field] === 'medium'"
  445. :disabled="isDetail"
  446. size="small"
  447. @change="(val: any) => handleRiskCheckboxChange(item, 'medium', val)"
  448. >中危</el-checkbox
  449. >
  450. <el-checkbox
  451. :model-value="dataForm[item.field] === 'high'"
  452. :disabled="isDetail"
  453. size="small"
  454. @change="(val: any) => handleRiskCheckboxChange(item, 'high', val)"
  455. >高危</el-checkbox
  456. >
  457. </td>
  458. </tr>
  459. </tbody>
  460. </table>
  461. </div>
  462. </div>
  463. <div class="info-title">现存疾病</div>
  464. <div class="info-wrap">
  465. <el-row :gutter="70">
  466. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  467. <el-checkbox v-model="dataForm.hypertensionFlag" true-value="1" false-value="0"
  468. >高血压</el-checkbox
  469. >
  470. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.hypertension" />
  471. </el-col>
  472. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  473. <el-checkbox v-model="dataForm.diabetesFlag" true-value="1" false-value="0"
  474. >糖尿病</el-checkbox
  475. >
  476. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.diabetes" />
  477. </el-col>
  478. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  479. <el-checkbox v-model="dataForm.coronaryDiseaseFlag" true-value="1" false-value="0"
  480. >冠心病</el-checkbox
  481. >
  482. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.coronaryDisease" />
  483. </el-col>
  484. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  485. <el-checkbox v-model="dataForm.apoplexyFlag" true-value="1" false-value="0"
  486. >脑卒中</el-checkbox
  487. >
  488. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.apoplexy" />
  489. </el-col>
  490. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  491. <el-checkbox v-model="dataForm.tuberculosisFlag" true-value="1" false-value="0"
  492. >结核病</el-checkbox
  493. >
  494. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.tuberculosis" />
  495. </el-col>
  496. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  497. <el-checkbox v-model="dataForm.copdFlag" true-value="1" false-value="0"
  498. >慢性阻塞性肺疾病</el-checkbox
  499. >
  500. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.copd" />
  501. </el-col>
  502. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  503. <el-checkbox v-model="dataForm.malignantTumorsFlag" true-value="1" false-value="0"
  504. >恶性肿瘤</el-checkbox
  505. >
  506. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.malignantTumors" />
  507. </el-col>
  508. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  509. <el-checkbox v-model="dataForm.mentalIllnessFlag" true-value="1" false-value="0"
  510. >重性精神病</el-checkbox
  511. >
  512. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.mentalIllness" />
  513. </el-col>
  514. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  515. <el-checkbox v-model="dataForm.hepatitisFlag" true-value="1" false-value="0"
  516. >肝炎</el-checkbox
  517. >
  518. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.hepatitis" />
  519. </el-col>
  520. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="pb5">
  521. <el-checkbox
  522. v-model="dataForm.otherInfectiousDiseasesFlag"
  523. true-value="1"
  524. false-value="0"
  525. >其他法定传染病</el-checkbox
  526. >
  527. <el-input
  528. placeholder="请输入描述"
  529. class="pt10l20"
  530. v-model="dataForm.otherInfectiousDiseases"
  531. />
  532. </el-col>
  533. <el-col :span="24" class="pb5">
  534. <el-checkbox v-model="dataForm.otherDiseasesFlag" true-value="1" false-value="0"
  535. >其他</el-checkbox
  536. >
  537. <el-input placeholder="请输入描述" class="pt10l20" v-model="dataForm.otherDiseases" />
  538. </el-col>
  539. </el-row>
  540. </div>
  541. <div class="info-title">住院史</div>
  542. <div class="info-wrap">
  543. <el-button type="primary" @click="handleAddHospitalizationHistory"
  544. ><Icon icon="ep:zoom-in" class="mr-5px" />添加住院记录</el-button
  545. >
  546. <el-row
  547. :gutter="20"
  548. v-for="(item, index) in dataForm.hospitalizationHistory"
  549. :key="item.key"
  550. class="content"
  551. >
  552. <Icon
  553. :size="26"
  554. color="#f09d31"
  555. icon="ep:remove"
  556. @click="handleRemoveHistoryItem(index)"
  557. class="remove"
  558. :style="isDetail ? 'cursor: no-drop' : ''"
  559. />
  560. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  561. <el-form-item
  562. label="住院原因"
  563. :prop="`hospitalizationHistory[${index}].causeHospitalization`"
  564. :rules="{
  565. required: true,
  566. message: '住院原因不能为空',
  567. trigger: 'blur'
  568. }"
  569. >
  570. <el-input v-model="item.causeHospitalization" />
  571. </el-form-item>
  572. </el-col>
  573. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  574. <el-form-item label="住院日期" prop="dateHospitalization">
  575. <el-date-picker
  576. type="date"
  577. :style="{ width: '100%' }"
  578. v-model="item.dateHospitalization"
  579. value-format="YYYY-MM-DD"
  580. placeholder="选择日期时间"
  581. />
  582. </el-form-item>
  583. </el-col>
  584. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  585. <el-form-item label="住院时长" prop="hospitalStay">
  586. <el-input v-model="item.hospitalStay" />
  587. </el-form-item>
  588. </el-col>
  589. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  590. <el-form-item label="机构名称" prop="orgName">
  591. <el-input v-model="item.orgName" />
  592. </el-form-item>
  593. </el-col>
  594. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  595. <el-form-item label="档案号码" prop="fileNumber">
  596. <el-input v-model="item.fileNumber" />
  597. </el-form-item>
  598. </el-col>
  599. <el-col :span="24">
  600. <el-form-item label="备注" prop="remark">
  601. <el-input v-model="item.remark" />
  602. </el-form-item>
  603. </el-col>
  604. </el-row>
  605. </div>
  606. <div class="info-title">家族史</div>
  607. <div class="info-wrap">
  608. <el-row :gutter="20">
  609. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  610. <el-form-item label="有无家族史" prop="familyHistoryFlag">
  611. <el-select
  612. v-model="dataForm.familyHistoryFlag"
  613. placeholder="请选择"
  614. clearable
  615. @change="resetInput('familyDiseases')"
  616. >
  617. <el-option
  618. v-for="(item, index) in getStrDictOptions(DICT_TYPE.COMMON_STATUS4)"
  619. :key="index"
  620. :label="item.label"
  621. :value="item.value"
  622. />
  623. </el-select>
  624. </el-form-item>
  625. </el-col>
  626. <el-col :span="24" v-if="dataForm.familyHistoryFlag == '1'">
  627. <el-form-item label="家族疾病" prop="familyDiseases">
  628. <el-checkbox-group v-model="dataForm.familyDiseases">
  629. <el-checkbox
  630. v-for="(item, index) in getStrDictOptions(DICT_TYPE.SICK_ARR)"
  631. :label="item.value"
  632. :key="index"
  633. >{{ item.label }}</el-checkbox
  634. >
  635. </el-checkbox-group>
  636. <input
  637. type="text"
  638. class="sInput"
  639. v-model="familyDiseasesInput"
  640. :disabled="isDetail"
  641. />
  642. </el-form-item>
  643. </el-col>
  644. </el-row>
  645. <el-row :gutter="20">
  646. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  647. <el-form-item label="遗传病史" prop="geneticHistoryFlag">
  648. <el-select v-model="dataForm.geneticHistoryFlag" placeholder="请选择" clearable>
  649. <el-option
  650. v-for="(item, index) in getStrDictOptions(DICT_TYPE.COMMON_STATUS4)"
  651. :key="index"
  652. :label="item.label"
  653. :value="item.value"
  654. />
  655. </el-select>
  656. </el-form-item>
  657. </el-col>
  658. <template v-if="dataForm.geneticHistoryFlag == '1'">
  659. <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
  660. <el-form-item label="遗传病名称" prop="geneticDiseaseName">
  661. <el-input v-model="dataForm.geneticDiseaseName" />
  662. </el-form-item>
  663. </el-col>
  664. <el-col :span="24">
  665. <el-form-item label="备注" prop="familyHistoryRemarks">
  666. <el-input v-model="dataForm.familyHistoryRemarks" />
  667. </el-form-item>
  668. </el-col>
  669. </template>
  670. </el-row>
  671. </div>
  672. <div class="info-title">其他附件</div>
  673. <div class="info-wrap">
  674. <el-button @click="handleAddAnnex"
  675. ><Icon icon="ep:zoom-in" class="mr-5px" />添加更多附件</el-button
  676. >
  677. <div v-for="(item, index) in dataForm.attachmentArray" :key="item.key">
  678. <el-row class="row-item content" :gutter="20">
  679. <Icon
  680. :size="26"
  681. color="#f09d31"
  682. icon="ep:remove"
  683. @click="handleRemoveItem(index)"
  684. :style="isDetail ? 'cursor: no-drop' : ''"
  685. />
  686. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  687. <el-form-item
  688. label="附件名称"
  689. :prop="`attachmentArray[${index}].fileName`"
  690. :rules="{
  691. required: true,
  692. message: '附件名称不能为空',
  693. trigger: 'blur'
  694. }"
  695. >
  696. <el-input v-model="item.fileName" />
  697. </el-form-item>
  698. </el-col>
  699. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  700. <el-form-item
  701. label="上传附件"
  702. :prop="`attachmentArray[${index}].fileUrl`"
  703. :rules="{
  704. required: true,
  705. message: '上传附件不能为空',
  706. trigger: 'blur'
  707. }"
  708. >
  709. <SelectUpload
  710. v-model="item.fileUrl"
  711. :limit="1"
  712. fun-name="上传附件"
  713. :elder="{ elderId: dataForm.elderId, elderName: dataForm.elderName }"
  714. />
  715. </el-form-item>
  716. </el-col>
  717. </el-row>
  718. </div>
  719. </div>
  720. </el-form>
  721. <template #footer>
  722. <el-button @click="handleClosed">取消</el-button>
  723. <el-button v-loading="formLoading" type="primary" @click="submitForm" v-if="!isDetail"
  724. >确定</el-button
  725. >
  726. </template>
  727. </Dialog>
  728. </template>
  729. <script setup lang="ts">
  730. import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
  731. import {
  732. getElderHealthRecordById,
  733. editElderlyHealthRecord,
  734. addElderlyHealthRecord
  735. } from '@/api/elderly/elder/health-record'
  736. import { healthRecordFormType } from '../types'
  737. import { getElderInfoById } from '@/api/elderly/elder/elderly-Info'
  738. import {
  739. asphyxiationPage,
  740. pressureSoresPage,
  741. fallDownPage,
  742. fallPreventionPage,
  743. burnPreventionPage,
  744. wanderAwayPage,
  745. ngasrPage,
  746. entertainmentPage,
  747. mmseGetPage
  748. } from '@/api/social-work'
  749. defineOptions({ name: 'HealthRecordForm' })
  750. const message = useMessage() // 消息弹窗
  751. const { t } = useI18n() // 国际化
  752. const dialogVisible = ref(false) // 弹窗
  753. const formRef = ref() // 表单 Ref
  754. const isDetail = ref(false) // 是否详情打开
  755. const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  756. const dataForm = ref<healthRecordFormType>({
  757. // 表单字段
  758. tenantId: undefined,
  759. id: '',
  760. phone: '',
  761. elderId: '',
  762. elderName: '',
  763. elderSex: '',
  764. roomName: '',
  765. bedName: '',
  766. liveType: '',
  767. bloodType: '',
  768. exerciseFrequency: '',
  769. dietetic: '',
  770. smokingStatus: '',
  771. drinkLiquor: '',
  772. medicalPaymentMethods: '',
  773. drugAllergyHistoryFlag: '',
  774. drugAllergyHistory: '',
  775. historyFoodAllergiesFlag: '',
  776. historyFoodAllergies: '',
  777. exposureSituationFlag: '',
  778. typesToxins: [],
  779. protectiveMeasuresFlag: '',
  780. exposureSituationDescribe: '',
  781. disabilitySituationFlag: '',
  782. disabilitySituation: '',
  783. hypertensionFlag: '',
  784. hypertension: '',
  785. diabetesFlag: '',
  786. diabetes: '',
  787. coronaryDiseaseFlag: '',
  788. coronaryDisease: '',
  789. apoplexyFlag: '',
  790. apoplexy: '',
  791. tuberculosisFlag: '',
  792. tuberculosis: '',
  793. copdFlag: '',
  794. copd: '',
  795. malignantTumorsFlag: '',
  796. malignantTumors: '',
  797. mentalIllnessFlag: '',
  798. mentalIllness: '',
  799. hepatitisFlag: '',
  800. hepatitis: '',
  801. otherInfectiousDiseasesFlag: '',
  802. otherInfectiousDiseases: '',
  803. otherDiseasesFlag: '',
  804. otherDiseases: '',
  805. hospitalizationHistory: [],
  806. familyHistoryFlag: '',
  807. familyDiseases: [],
  808. diseaseFree: '',
  809. preexistingDisease: '', //既往病史
  810. geneticHistoryFlag: '',
  811. geneticDiseaseName: '',
  812. familyHistoryRemarks: '',
  813. attachmentArray: [],
  814. medicationHistory: '', // 用药史
  815. careNote: '', // 照护要点
  816. dietaryGuidelines: '', // 饮食要点
  817. nurse: '', // 责任护士
  818. doctor: '', // 主管医生
  819. nurseAssistant: '', // 责任护理员
  820. // 九防评估结果
  821. asphyxiationByChoking: '',
  822. pressureSores: '',
  823. fallPreventionMeasures: '',
  824. assessSimpleMentalState: '',
  825. empyrosis: '',
  826. fallDown: '',
  827. wanderAway: '',
  828. antiEntertainment: '',
  829. commitSuicide: ''
  830. })
  831. const resetField = ref<healthRecordFormType>(
  832. JSON.parse(JSON.stringify(Object.assign({}, dataForm)))
  833. )
  834. let state = reactive({
  835. drugAllergyHistoryInput: '', // 药物过敏-其他
  836. historyFoodAllergiesInput: '', // 食物过敏-其他
  837. typesToxinsInput: '', // 毒物种类-其他
  838. disabilitySituationInput: '', // 残疾情况-其他
  839. preexistingDiseaseInput: '', // 疾病-其他
  840. familyDiseasesInput: '' // 家族疾病-其他
  841. })
  842. // 风险项目表格数据(field 对应后端字段)
  843. const riskTableItems = ref([
  844. { key: 'asphyxiation', name: '防噎食', field: 'asphyxiationByChoking', api: asphyxiationPage },
  845. { key: 'pressureUlcer', name: '防压疮', field: 'pressureSores', api: pressureSoresPage },
  846. { key: 'bedFall', name: '防坠床', field: 'fallPreventionMeasures', api: fallPreventionPage },
  847. {
  848. key: 'foodDrug',
  849. name: '防误食(简易精神状态)',
  850. field: 'assessSimpleMentalState',
  851. api: mmseGetPage
  852. },
  853. { key: 'scald', name: '防烫伤', field: 'empyrosis', api: burnPreventionPage },
  854. { key: 'fall', name: '防跌倒', field: 'fallDown', api: fallDownPage },
  855. { key: 'wandering', name: '防走失', field: 'wanderAway', api: wanderAwayPage },
  856. {
  857. key: 'entertainment',
  858. name: '防文娱活动意外',
  859. field: 'antiEntertainment',
  860. api: entertainmentPage
  861. },
  862. { key: 'selfHarm', name: '防他伤和自伤', field: 'commitSuicide', api: ngasrPage }
  863. ])
  864. // 接口返回的风险数据选项
  865. const riskOptionsMap = ref<Record<string, any[]>>({
  866. asphyxiation: [],
  867. pressureUlcer: [],
  868. fall: [],
  869. bedFall: [],
  870. scald: [],
  871. wandering: [],
  872. selfHarm: [],
  873. foodDrug: [],
  874. entertainment: []
  875. })
  876. // 风险等级文本映射
  877. const riskLevelTextMap: Record<string, string> = {
  878. none: '低风险',
  879. low: '低风险',
  880. medium: '中风险',
  881. high: '高风险'
  882. }
  883. // 获取风险选项(从接口数据)
  884. const getRiskOptions = (key: string) => {
  885. return riskOptionsMap.value[key] || []
  886. }
  887. // 处理风险程度复选框变化
  888. const handleRiskCheckboxChange = (item: any, level: string, checked: boolean) => {
  889. if (checked) {
  890. dataForm.value[item.field] = level
  891. } else if (dataForm.value[item.field] === level) {
  892. dataForm.value[item.field] = ''
  893. }
  894. }
  895. // 加载长者风险数据(动态调用各九防接口)
  896. const loadElderRiskData = async (elderId: string) => {
  897. try {
  898. for (const item of riskTableItems.value) {
  899. if (item.api && typeof item.api === 'function') {
  900. try {
  901. const params = {
  902. pageNo: 1,
  903. pageSize: 100,
  904. elderId: elderId
  905. }
  906. const res = await item.api(params)
  907. if (res && res.list && res.list.length > 0) {
  908. const levelSet = new Set<string>()
  909. res.list.forEach((record: any) => {
  910. let riskLevel = record.riskLevel || 'low'
  911. if (record.assessData) {
  912. try {
  913. const assessData = JSON.parse(record.assessData)
  914. if (assessData.riskLevel) {
  915. riskLevel = assessData.riskLevel
  916. }
  917. } catch (e) {
  918. console.error('解析 assessData 失败', e)
  919. }
  920. }
  921. levelSet.add(riskLevel)
  922. })
  923. const options = Array.from(levelSet).map((level) => ({
  924. label: riskLevelTextMap[level] || level,
  925. value: level
  926. }))
  927. riskOptionsMap.value[item.key] = options
  928. } else {
  929. riskOptionsMap.value[item.key] = []
  930. }
  931. } catch (err) {
  932. console.error(`获取${item.name}数据失败`, err)
  933. }
  934. }
  935. }
  936. } catch (e) {
  937. console.error('获取风险数据失败', e)
  938. }
  939. }
  940. // 重置风险表格数据
  941. const resetRiskTableItems = () => {
  942. riskOptionsMap.value = {
  943. asphyxiation: [],
  944. pressureUlcer: [],
  945. fall: [],
  946. bedFall: [],
  947. scald: [],
  948. wandering: [],
  949. selfHarm: [],
  950. foodDrug: [],
  951. entertainment: []
  952. }
  953. }
  954. const {
  955. drugAllergyHistoryInput,
  956. historyFoodAllergiesInput,
  957. typesToxinsInput,
  958. disabilitySituationInput,
  959. familyDiseasesInput
  960. } = toRefs(state)
  961. /** 打开弹窗 */
  962. const open = async (row, elderId, detail) => {
  963. dialogVisible.value = true
  964. isDetail.value = detail
  965. if (row.id) {
  966. try {
  967. const res = await getElderHealthRecordById(elderId)
  968. let tempList = str2arr(res.attachmentArray)
  969. tempList.map((item) => {
  970. item.fileUrl = item.fileUrl ? [{ fileUrl: item.fileUrl, fileName: item.fileName }] : []
  971. })
  972. dataForm.value = {
  973. elderId: Number(res.elderId),
  974. elderName: res.elder.elderName,
  975. elderSex: res.elder.elderSex,
  976. bedName: res.elder.bedName,
  977. ...res,
  978. drugAllergyHistory: str2arr(res.drugAllergyHistory, 'drugAllergyHistoryInput'),
  979. historyFoodAllergies: str2arr(res.historyFoodAllergies, 'historyFoodAllergiesInput'),
  980. typesToxins: str2arr(res.typesToxins, 'typesToxinsInput'),
  981. disabilitySituation: str2arr(res.disabilitySituation, 'disabilitySituationInput'),
  982. hospitalizationHistory: str2arr(res.hospitalizationHistory), // 住院记录
  983. familyDiseases: str2arr(res.familyDiseases, 'familyDiseasesInput'),
  984. // preexistingDisease: str2arr(res.preexistingDisease, 'preexistingDiseaseInput'),
  985. attachmentArray: tempList // 附件上传
  986. }
  987. // 加载长者风险评估数据作为选项(dataForm 中字段已自动回显)
  988. await loadElderRiskData(res.elderId)
  989. } catch (err) {}
  990. } else {
  991. // 获取老人信息
  992. const res = await getElderInfoById(row.elder.id)
  993. dataForm.value.elderId = res.id
  994. dataForm.value.elderSex = res.elderSex
  995. dataForm.value.bedName = res.bedName
  996. dataForm.value.medicalPaymentMethods = res.medicalInsurance
  997. dataForm.value.liveType = res.liveSituation
  998. dataForm.value.phone = res.telPhone
  999. dataForm.value.tenantId = res.tenantId
  1000. // 加载长者风险评估数据
  1001. await loadElderRiskData(res.id)
  1002. }
  1003. }
  1004. defineExpose({ open }) // 提供 open 方法,用于打开弹窗
  1005. // 关闭
  1006. const handleClosed = () => {
  1007. formRef.value?.resetFields()
  1008. dataForm.value = {
  1009. ...resetField.value,
  1010. hospitalizationHistory: []
  1011. }
  1012. for (let key in state) {
  1013. state[key] = ''
  1014. }
  1015. resetRiskTableItems()
  1016. dialogVisible.value = false
  1017. }
  1018. /** 提交表单 */
  1019. const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
  1020. const submitForm = async () => {
  1021. // 校验表单
  1022. if (!formRef.value) return
  1023. const valid = await formRef.value.validate()
  1024. if (!valid) return
  1025. // 提交请求
  1026. formLoading.value = true
  1027. try {
  1028. let params = {
  1029. ...dataForm.value,
  1030. drugAllergyHistory: dataForm.value.drugAllergyHistory,
  1031. historyFoodAllergies: dataForm.value.historyFoodAllergies,
  1032. typesToxins: arr2str(dataForm.value.typesToxins, typesToxinsInput),
  1033. disabilitySituation: arr2str(dataForm.value.disabilitySituation, disabilitySituationInput),
  1034. hospitalizationHistory: arr2str(dataForm.value.hospitalizationHistory),
  1035. familyDiseases: arr2str(dataForm.value.familyDiseases, familyDiseasesInput),
  1036. preexistingDisease: dataForm.value.preexistingDisease,
  1037. attachmentArray: arr2str(dataForm.value.attachmentArray),
  1038. careNote: dataForm.value.careNote,
  1039. medicationHistory: dataForm.value.medicationHistory,
  1040. dietaryGuidelines: dataForm.value.dietaryGuidelines
  1041. }
  1042. const res = params.id
  1043. ? await editElderlyHealthRecord(params)
  1044. : await addElderlyHealthRecord(params)
  1045. if (res) {
  1046. message.success(t('common.updateSuccess'))
  1047. dialogVisible.value = false
  1048. // 发送操作成功的事件
  1049. emit('success')
  1050. }
  1051. } finally {
  1052. formLoading.value = false
  1053. }
  1054. }
  1055. // 重置输入框的值
  1056. const resetInput = (type: string) => {
  1057. dataForm.value[type] = []
  1058. state[`${type}Input`] = ''
  1059. }
  1060. // 添加住院记录
  1061. const handleAddHospitalizationHistory = () => {
  1062. dataForm.value.hospitalizationHistory.push({
  1063. causeHospitalization: '',
  1064. dateHospitalization: '',
  1065. hospitalStay: '',
  1066. orgName: '',
  1067. fileNumber: '',
  1068. remark: '',
  1069. key: Date.now()
  1070. })
  1071. }
  1072. // 删除住院记录
  1073. const handleRemoveHistoryItem = (index: number) => {
  1074. if (isDetail.value) return
  1075. dataForm.value.hospitalizationHistory.splice(index, 1)
  1076. }
  1077. // 添加附件
  1078. const handleAddAnnex = () => {
  1079. dataForm.value.attachmentArray.push({
  1080. fileName: '',
  1081. fileUrl: [],
  1082. key: Date.now()
  1083. })
  1084. }
  1085. const handleRemoveItem = (index: number) => {
  1086. if (isDetail.value) return
  1087. dataForm.value.attachmentArray.splice(index, 1)
  1088. }
  1089. // 数组转字符串
  1090. const arr2str = (arr, name?) => {
  1091. if (Array.isArray(arr) && arr.length > 0) {
  1092. // 如果arr是数组且有值,则返回原数组
  1093. if (arr.includes('0') && name) {
  1094. let temp = JSON.parse(JSON.stringify(arr))
  1095. const index = arr.findIndex((item) => item == '0')
  1096. temp[index] = '0-' + name.value
  1097. return JSON.stringify(temp)
  1098. }
  1099. return JSON.stringify(arr)
  1100. } else {
  1101. // 否则返回空字符串
  1102. return ''
  1103. }
  1104. }
  1105. // 字符串转数组
  1106. const str2arr = (str, name?) => {
  1107. let arr: string[] = []
  1108. if (str) {
  1109. if (Array.isArray(str)) {
  1110. arr = str.map((item) => String(item))
  1111. } else if (typeof str === 'string') {
  1112. try {
  1113. const parsed = JSON.parse(str)
  1114. if (Array.isArray(parsed)) {
  1115. arr = parsed.map((item) => String(item))
  1116. } else {
  1117. arr = str.split(/[,,]/).map((s) => s.trim()).filter(Boolean)
  1118. }
  1119. } catch (e) {
  1120. arr = str.split(/[,,]/).map((s) => s.trim()).filter(Boolean)
  1121. }
  1122. }
  1123. if (arr.some((item) => item.includes('0-'))) {
  1124. let index = -1
  1125. arr.map((item: string, i) => {
  1126. if (item.indexOf('0-') > -1) index = i
  1127. })
  1128. if (index > -1) {
  1129. let temp = arr.splice(index, 1)
  1130. arr.push('0')
  1131. state[name] = temp.join().split('-')[1]
  1132. }
  1133. }
  1134. }
  1135. return arr
  1136. }
  1137. const resetForm = (type) => {}
  1138. // watch(()=>dataForm.value.attachmentArray, (newValue) => {
  1139. // debugger
  1140. // console.log("value", newValue)
  1141. // }, {deep: true})
  1142. const handleChange = (val, type: any) => {
  1143. if (!val.includes('0')) {
  1144. let v = type + 'Input'
  1145. state[v] = ''
  1146. }
  1147. }
  1148. </script>
  1149. <style lang="scss" scoped>
  1150. .health-record-form {
  1151. .el-form {
  1152. padding: 15px !important;
  1153. }
  1154. .info-title {
  1155. margin-left: -15px;
  1156. min-width: 75px;
  1157. max-width: 150px;
  1158. padding: 15px;
  1159. font-weight: bolder;
  1160. background-color: #f3f6fb;
  1161. border-top-right-radius: 50px;
  1162. border-bottom-right-radius: 50px;
  1163. }
  1164. .info-wrap {
  1165. padding: 15px 0;
  1166. box-sizing: border-box;
  1167. .content {
  1168. padding-top: 10px;
  1169. margin-left: 0 !important;
  1170. margin-right: 0 !important;
  1171. .row-item {
  1172. position: relative;
  1173. }
  1174. .el-icon {
  1175. position: absolute;
  1176. font-size: 23px;
  1177. cursor: pointer;
  1178. color: #f09d31;
  1179. }
  1180. }
  1181. .el-divider {
  1182. margin-top: 6px !important;
  1183. background-color: #f5f5f5;
  1184. }
  1185. .el-checkbox + .el-checkbox {
  1186. margin-left: 0;
  1187. }
  1188. }
  1189. .el-checkbox-group {
  1190. display: inline;
  1191. }
  1192. .sInput {
  1193. border: none;
  1194. border-bottom: 1px solid #999;
  1195. outline: none;
  1196. }
  1197. // 风险表格样式
  1198. .risk-table-wrapper {
  1199. margin: 20px 0 0;
  1200. overflow-x: auto;
  1201. .risk-table {
  1202. width: 100%;
  1203. border-collapse: collapse;
  1204. font-size: 14px;
  1205. th,
  1206. td {
  1207. border: 1px solid #dcdfe6;
  1208. padding: 10px 8px;
  1209. text-align: center;
  1210. }
  1211. th {
  1212. background-color: #f5f7fa;
  1213. font-weight: bold;
  1214. }
  1215. .col-index {
  1216. width: 60px;
  1217. }
  1218. .col-project {
  1219. width: 180px;
  1220. text-align: left;
  1221. padding-left: 15px;
  1222. }
  1223. .col-level {
  1224. width: 140px;
  1225. }
  1226. .col-remark {
  1227. width: auto;
  1228. text-align: left;
  1229. padding-left: 15px;
  1230. .remark-text {
  1231. margin-right: 10px;
  1232. color: #606266;
  1233. }
  1234. :deep(.el-checkbox) {
  1235. margin-right: 15px;
  1236. }
  1237. }
  1238. }
  1239. }
  1240. }
  1241. </style>