AdmRegistration.vue 41 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382
  1. <template>
  2. <div class="layout_display_flex_y">
  3. <div>
  4. <el-button icon="Location" type="primary" @click="beforeFetchAssigninfo"
  5. >定点信息
  6. </el-button>
  7. <el-button icon="Check" type="primary" @click="submitPatientInfo">
  8. 保存
  9. </el-button>
  10. <ReadCard
  11. :pat-no="patient.inpatientNo"
  12. biztype="01103"
  13. @success="afterReadCard"
  14. />
  15. <el-button icon="Top" type="success" @click="checkRegisterDatetime"
  16. >医保入院登记
  17. </el-button>
  18. <el-button icon="Bottom" type="danger" @click="beforeCancelRegister"
  19. >撤销入院登记
  20. </el-button>
  21. <el-button icon="Coin" type="success" @click="xiangMuLuRuRouter"
  22. >项目录入
  23. </el-button>
  24. <generate-medicine-return-order />
  25. <el-button type="danger" @click="chronicDiseaseRegister"
  26. >慢病登记
  27. </el-button>
  28. </div>
  29. <div style="margin-bottom: 8px">
  30. <el-divider content-position="left" class="el-divider_shorter"
  31. >患者基本信息
  32. </el-divider>
  33. <el-descriptions :column="3" border>
  34. <el-descriptions-item>
  35. <template #label> 住院号</template>
  36. {{ patient.inpatientNo }}
  37. </el-descriptions-item>
  38. <el-descriptions-item>
  39. <template #label> 住院次数</template>
  40. {{ patient.admissTimes }}
  41. </el-descriptions-item>
  42. <el-descriptions-item>
  43. <template #label> 出生日期</template>
  44. {{ patient.birthDate }}
  45. </el-descriptions-item>
  46. <el-descriptions-item>
  47. <template #label>入院日期</template>
  48. {{ patient.admissDate }}
  49. </el-descriptions-item>
  50. <el-descriptions-item>
  51. <template #label> 病区</template>
  52. {{ patient.admissWardName }}
  53. </el-descriptions-item>
  54. <el-descriptions-item>
  55. <template #label> 入院诊断</template>
  56. <div
  57. style="width: 180px"
  58. class="ellipsis-text"
  59. :title="patient.admissDiagStr"
  60. >
  61. {{ patient.admissDiagStr }}
  62. </div>
  63. </el-descriptions-item>
  64. <el-descriptions-item>
  65. <template #label> 小科室</template>
  66. {{ patient.smallDeptName }}
  67. </el-descriptions-item>
  68. <el-descriptions-item>
  69. <template #label> 入院医生</template>
  70. {{ patient.admissPhysicianName }}
  71. </el-descriptions-item>
  72. <el-descriptions-item>
  73. <template #label> 登记日期</template>
  74. <el-date-picker
  75. v-model="patient.ybRegisterDate"
  76. placeholder="选择日期时间"
  77. style="width: 180px"
  78. type="datetime"
  79. @change="formatYbRegisterDate"
  80. ></el-date-picker>
  81. </el-descriptions-item>
  82. <el-descriptions-item>
  83. <template #label> 证件类型</template>
  84. <el-select
  85. v-model="patient.psnCertType"
  86. :clearable="true"
  87. placeholder="请选择"
  88. style="width: 180px"
  89. >
  90. <el-option
  91. v-for="item in psnCertTypes"
  92. :key="item.code"
  93. :label="item.name"
  94. :value="item.code"
  95. >
  96. <span style="color: #8492a6; font-size: 12px">{{
  97. item.code
  98. }}</span>
  99. <el-divider direction="vertical"></el-divider>
  100. <span>{{ item.name }}</span>
  101. </el-option>
  102. </el-select>
  103. </el-descriptions-item>
  104. <el-descriptions-item>
  105. <template #label>证件号码</template>
  106. <el-input
  107. v-model="patient.socialNo"
  108. style="width: 180px"
  109. clearable
  110. ></el-input>
  111. </el-descriptions-item>
  112. <el-descriptions-item>
  113. <template #label> 姓名</template>
  114. <el-input v-model="patient.name" style="width: 180px"></el-input>
  115. </el-descriptions-item>
  116. <el-descriptions-item>
  117. <template #label> 性别</template>
  118. <el-select v-model="patient.sex" placeholder=" " style="width: 180px">
  119. <el-option
  120. v-for="item in sexes"
  121. :key="item.code"
  122. :label="item.name"
  123. :value="item.code"
  124. ></el-option>
  125. </el-select>
  126. </el-descriptions-item>
  127. <el-descriptions-item>
  128. <template #label> 联系电话</template>
  129. <el-input v-model="patient.homeTel" style="width: 180px"></el-input>
  130. </el-descriptions-item>
  131. <el-descriptions-item>
  132. <template #label> 管床医生</template>
  133. <el-input
  134. v-model="patient.referPhysicianName"
  135. readonly
  136. @click="searchPhysician(1)"
  137. style="width: 180px"
  138. ></el-input>
  139. </el-descriptions-item>
  140. <el-descriptions-item>
  141. <template #label> 责任护士</template>
  142. <el-input
  143. v-model="patient.dutyNurseName"
  144. readonly
  145. @click="searchPhysician(2)"
  146. style="width: 180px"
  147. ></el-input>
  148. </el-descriptions-item>
  149. <el-descriptions-item>
  150. <template #label> 国籍</template>
  151. <el-select
  152. v-model="patient.country"
  153. style="width: 180px"
  154. :filterable="true"
  155. >
  156. <el-option
  157. v-for="item in countries"
  158. :key="item.code"
  159. :label="item.name"
  160. :value="item.code"
  161. >
  162. <span style="color: #8492a6; font-size: 12px">{{
  163. item.code
  164. }}</span>
  165. <el-divider direction="vertical"></el-divider>
  166. <span>{{ item.name }}</span>
  167. </el-option>
  168. </el-select>
  169. </el-descriptions-item>
  170. <el-descriptions-item>
  171. <template #label> 民族</template>
  172. <el-select
  173. v-model="patient.nation"
  174. style="width: 180px"
  175. :filterable="true"
  176. >
  177. <el-option
  178. v-for="item in nations"
  179. :key="item.code"
  180. :label="item.name"
  181. :value="item.code"
  182. >
  183. <span style="color: #8492a6; font-size: 12px">{{
  184. item.code
  185. }}</span>
  186. <el-divider direction="vertical"></el-divider>
  187. <span>{{ item.name }}</span>
  188. </el-option>
  189. </el-select>
  190. </el-descriptions-item>
  191. <el-descriptions-item>
  192. <template #label> 联系人姓名</template>
  193. <el-input
  194. v-model="patient.contactName"
  195. style="width: 180px"
  196. ></el-input>
  197. </el-descriptions-item>
  198. <el-descriptions-item>
  199. <template #label> 联系人关系</template>
  200. <el-select
  201. v-model="patient.contactRelation"
  202. style="width: 180px"
  203. :filterable="true"
  204. >
  205. <el-option
  206. v-for="item in relations"
  207. :key="item.code"
  208. :label="item.name"
  209. :value="item.code"
  210. >
  211. <span style="color: #8492a6; font-size: 12px">{{
  212. item.code
  213. }}</span>
  214. <el-divider direction="vertical"></el-divider>
  215. <span>{{ item.name }}</span>
  216. </el-option>
  217. </el-select>
  218. </el-descriptions-item>
  219. <el-descriptions-item>
  220. <template #label> 联系人地址</template>
  221. <el-input
  222. v-model="patient.contactAddrName"
  223. style="width: 180px"
  224. ></el-input>
  225. </el-descriptions-item>
  226. <el-descriptions-item>
  227. <template #label> 联系人电话</template>
  228. <el-input
  229. v-model="patient.contactPhone"
  230. style="width: 180px"
  231. ></el-input>
  232. </el-descriptions-item>
  233. <el-descriptions-item>
  234. <template #label> 参保地区</template>
  235. <el-cascader
  236. v-model="patient.admdvsCascader"
  237. clearable
  238. filterable
  239. placeholder="请选择"
  240. :options="allAdmdvses"
  241. :disabled="injuryMode"
  242. @change="handleAdmdvsChange"
  243. ></el-cascader>
  244. </el-descriptions-item>
  245. <el-descriptions-item>
  246. <template #label> 医疗类别</template>
  247. <el-select
  248. v-model="patient.medType"
  249. :clearable="true"
  250. placeholder="请选择"
  251. @change="handleSelectMedType"
  252. style="width: 180px"
  253. >
  254. <el-option
  255. v-for="item in medTypes"
  256. :key="item.code"
  257. :disabled="item.disabled"
  258. :label="item.name"
  259. :value="item.code"
  260. >
  261. <span style="color: #8492a6; font-size: 12px">{{
  262. item.code
  263. }}</span>
  264. <el-divider direction="vertical"></el-divider>
  265. <span>{{ item.name }}</span>
  266. </el-option>
  267. </el-select>
  268. </el-descriptions-item>
  269. <span v-if="patient.medType === '52'">
  270. <el-descriptions-item>
  271. <template #label>生育类别</template>
  272. <el-select
  273. v-model="patient.matnType"
  274. placeholder="请选择"
  275. style="width: 180px"
  276. >
  277. <el-option
  278. v-for="item in matnTypes"
  279. :key="item.code"
  280. :label="item.name"
  281. :value="item.code"
  282. ></el-option>
  283. </el-select>
  284. </el-descriptions-item>
  285. <el-descriptions-item>
  286. <template #label>是否晚育</template>
  287. <el-select
  288. v-model="patient.latechbFlag"
  289. placeholder="请选择"
  290. style="width: 180px"
  291. >
  292. <el-option label="否" value="0"></el-option>
  293. <el-option label="是" value="1"></el-option>
  294. </el-select>
  295. </el-descriptions-item>
  296. <el-descriptions-item>
  297. <template #label>是否早产</template>
  298. <el-select
  299. v-model="patient.pretFlag"
  300. placeholder="请选择"
  301. style="width: 180px"
  302. >
  303. <el-option label="否" value="0"></el-option>
  304. <el-option label="是" value="1"></el-option>
  305. </el-select>
  306. </el-descriptions-item>
  307. </span>
  308. <el-descriptions-item
  309. v-if="patient.medType === '2102' || patient.medType === '52'"
  310. >
  311. <template #label>患者病种</template>
  312. <el-input
  313. v-model="patient.diseName"
  314. readonly
  315. style="width: 180px"
  316. @click="openDiseInput"
  317. ></el-input>
  318. </el-descriptions-item>
  319. <el-descriptions-item>
  320. <template #label>就诊人群类型</template>
  321. <el-select
  322. v-model="expContent.MDTRT_GRP_TYPE"
  323. placeholder="普通患者无需填写"
  324. clearable
  325. style="width: 180px"
  326. >
  327. <el-option
  328. v-for="item in mdtrtGrpTypes"
  329. :key="item.key"
  330. :label="item.name"
  331. :value="item.code"
  332. ></el-option>
  333. </el-select>
  334. </el-descriptions-item>
  335. <el-descriptions-item>
  336. <template #label>外伤标志</template>
  337. <el-select
  338. v-model="expContent.TRUM_FLAG"
  339. placeholder="请选择"
  340. style="width: 180px"
  341. >
  342. <el-option label="否" value="0" key="trumFlag-0"></el-option>
  343. <el-option label="是" value="1" key="trumFlag-1"></el-option>
  344. </el-select>
  345. </el-descriptions-item>
  346. <el-descriptions-item>
  347. <template #label>涉及第三方标志</template>
  348. <el-select
  349. v-model="expContent.REL_TTP_FLAG"
  350. placeholder="请选择"
  351. style="width: 180px"
  352. >
  353. <el-option label="否" value="0" key="relTtpFlag-0"></el-option>
  354. <el-option label="是" value="1" key="relTtpFlag-1"></el-option>
  355. </el-select>
  356. </el-descriptions-item>
  357. <el-descriptions-item>
  358. <template #label>住院类型</template>
  359. <el-select
  360. v-model="expContent.IPT_TYPE"
  361. placeholder="请选择"
  362. style="width: 180px"
  363. >
  364. <el-option label="普通住院" value="1" key="iptType-1"></el-option>
  365. <el-option
  366. label="急诊或者请求住院"
  367. value="2"
  368. key="iptType-2"
  369. ></el-option>
  370. <el-option label="转院住院" value="3" key="iptType-3"></el-option>
  371. </el-select>
  372. </el-descriptions-item>
  373. <el-descriptions-item>
  374. <template #label>慢病类型</template>
  375. <div>{{ patient.crmName }}</div>
  376. </el-descriptions-item>
  377. </el-descriptions>
  378. </div>
  379. <div class="layout_flex_1-y layout_display_flex_y">
  380. <el-divider content-position="left" class="el-divider_shorter">
  381. 医保入院诊断(*自费患者无需填写*)
  382. <el-button
  383. circle
  384. icon="Plus"
  385. title="添加入院诊断"
  386. type="primary"
  387. @click="openDiagDialog"
  388. ></el-button>
  389. <el-button
  390. :disabled="zyInYbDiags.length === 0"
  391. circle
  392. icon="Check"
  393. title="保存入院诊断"
  394. type="success"
  395. @click="saveYbDiags"
  396. ></el-button>
  397. </el-divider>
  398. <div class="layout_flex_1-y">
  399. <el-table :data="zyInYbDiags" height="100%" stripe>
  400. <el-table-column label="诊断序号" prop="diagNo"></el-table-column>
  401. <el-table-column label="诊断属性" prop="property"></el-table-column>
  402. <el-table-column label="诊断编码" prop="icdCode"></el-table-column>
  403. <el-table-column label="诊断名称" prop="icdText"></el-table-column>
  404. <el-table-column label="诊断类别">
  405. <template #default="scope">
  406. {{ getDiagTypeName(scope.row.diagType) }}
  407. </template>
  408. </el-table-column>
  409. <el-table-column label="诊断时间" prop="opDate"></el-table-column>
  410. <el-table-column label="操作">
  411. <template #default="scope">
  412. <el-button
  413. circle
  414. icon="Delete"
  415. type="danger"
  416. @click="deleteYbDiag(scope.$index)"
  417. ></el-button>
  418. </template>
  419. </el-table-column>
  420. </el-table>
  421. </div>
  422. </div>
  423. </div>
  424. <Assignmentinfo
  425. v-if="showAssigninfo"
  426. :admdvs="patient.admdvs"
  427. :social-no="patient.socialNo"
  428. @close="showAssigninfo = false"
  429. />
  430. <el-dialog
  431. v-model="showSearchSpecialDiag"
  432. :close-on-click-modal="false"
  433. title="医保患者病种录入"
  434. width="60%"
  435. >
  436. <div style="margin: -16px 0 4px 2px; height: 22px; line-height: 22px">
  437. 患者当前病种:
  438. <span
  439. style="
  440. padding: 2px 6px;
  441. background: #005279;
  442. border-radius: 4px;
  443. color: white;
  444. "
  445. >
  446. {{
  447. patient.diseCode ? patient.diseCode + " | " + patient.diseName : "无"
  448. }}
  449. </span>
  450. </div>
  451. <el-tag>可选病种</el-tag>&nbsp;&nbsp;
  452. <el-input
  453. v-model="specialDiagName"
  454. clearable
  455. placeholder="请输入病种名称"
  456. style="width: 260px"
  457. ></el-input>
  458. <el-table
  459. :data="cptSpecialDiags.slice((currentPage - 1) * 10, currentPage * 10)"
  460. height="400"
  461. highlight-current-row
  462. stripe
  463. >
  464. <el-table-column label="病种编码" prop="newCode"></el-table-column>
  465. <el-table-column label="病种名称" prop="newName"></el-table-column>
  466. <el-table-column label="限额方式" prop="limitWay"></el-table-column>
  467. <el-table-column
  468. label="限额额度计算方式"
  469. prop="limitAmountCalculateWay"
  470. ></el-table-column>
  471. <el-table-column label="疾病限额" prop="limitAmount"></el-table-column>
  472. <el-table-column>
  473. <template #default="scope">
  474. <el-button type="primary" @click="addDiseInfo(scope.row)"
  475. >选择此病种
  476. </el-button>
  477. </template>
  478. </el-table-column>
  479. </el-table>
  480. <el-pagination
  481. :current-page="currentPage"
  482. :page-size="10"
  483. :total="cptSpecialDiags.length"
  484. :layout="'total, prev, pager, next, jumper'"
  485. style="margin-top: 6px"
  486. @current-change="handleCurrentChange"
  487. ></el-pagination>
  488. </el-dialog>
  489. <el-dialog
  490. v-model="showAdmissApplyForm"
  491. title="医保入院登记申请"
  492. width="500px"
  493. >
  494. <div style="margin-bottom: 20px">
  495. 登记时间:
  496. <el-date-picker
  497. v-model="admissApply.admissDatetime"
  498. placeholder="请选择医保登记开始时间"
  499. type="datetime"
  500. ></el-date-picker>
  501. </div>
  502. <el-input
  503. v-model="admissApply.inputComment"
  504. placeholder="请输入申请理由"
  505. type="textarea"
  506. ></el-input>
  507. <div style="width: 450px; text-align: right; margin-top: 30px">
  508. <el-button icon="Close" type="info" @click="cancelAdmissApply"
  509. >取消
  510. </el-button>
  511. <el-button icon="Check" type="success" @click="confirmAdmissApply"
  512. >提交
  513. </el-button>
  514. </div>
  515. </el-dialog>
  516. <el-dialog v-model="showPsnInsuinfo" title="人员信息" width="65%">
  517. <el-tag>{{ injuryMode ? "工伤信息" : "参保信息" }}</el-tag>
  518. <div v-if="injuryMode">
  519. <el-table
  520. :data="injuryinfo"
  521. height="180"
  522. stripe
  523. @row-click="handleClickInjuryinfo"
  524. >
  525. <el-table-column label="证件号码" prop="aac002"></el-table-column>
  526. <el-table-column label="姓名" prop="aac003"></el-table-column>
  527. <el-table-column label="单位名称" prop="aab004"></el-table-column>
  528. <el-table-column label="受伤时间" prop="alc020"></el-table-column>
  529. <el-table-column label="认定申请时间" prop="alc017"></el-table-column>
  530. <el-table-column label="认定ID" prop="aaz127"></el-table-column>
  531. <el-table-column label="个人编号" prop="aac001"></el-table-column>
  532. <el-table-column label="参保统筹区" prop="baa027Name"></el-table-column>
  533. </el-table>
  534. </div>
  535. <div v-else>
  536. <el-table
  537. :data="psnBaseinfo.insuinfo"
  538. height="180"
  539. stripe
  540. @row-click="handleClickInsuinfo"
  541. >
  542. <el-table-column label="余额" prop="balc"></el-table-column>
  543. <el-table-column label="险种类型" prop="insutypeName"></el-table-column>
  544. <el-table-column label="人员类别" prop="psnTypeName"></el-table-column>
  545. <el-table-column
  546. label="参保状态"
  547. prop="psnInsuStasName"
  548. ></el-table-column>
  549. <el-table-column
  550. label="个人参保日期"
  551. prop="psnInsuDate"
  552. ></el-table-column>
  553. <el-table-column
  554. label="暂停参保日期"
  555. prop="pausInsuDate"
  556. ></el-table-column>
  557. <el-table-column
  558. label="公务员标志"
  559. prop="cvlservFlagName"
  560. ></el-table-column>
  561. <el-table-column
  562. label="参保地医保区划"
  563. prop="insuplcAdmdvs"
  564. ></el-table-column>
  565. <el-table-column
  566. label="参保地名称"
  567. prop="insuplcAdmdvsName"
  568. ></el-table-column>
  569. <el-table-column label="单位名称" prop="empName"></el-table-column>
  570. </el-table>
  571. <div style="height: 16px"></div>
  572. <el-tag>身份信息</el-tag>
  573. <el-table :data="psnBaseinfo.idetinfo" height="180" stripe>
  574. <el-table-column
  575. label="人员身份类别"
  576. prop="psnIdetTypeName"
  577. ></el-table-column>
  578. <el-table-column
  579. label="人员类别等级"
  580. prop="psnTypeLv"
  581. ></el-table-column>
  582. <el-table-column label="备注" prop="memo"></el-table-column>
  583. <el-table-column label="开始时间" prop="begntime"></el-table-column>
  584. <el-table-column label="结束时间" prop="endtime"></el-table-column>
  585. </el-table>
  586. </div>
  587. </el-dialog>
  588. <Search
  589. v-if="searchParams.showSearch"
  590. :med-type="patient.medType"
  591. :target="searchParams.target"
  592. :title="searchParams.title"
  593. :show-emp-dept="searchParams.target === 'physician'"
  594. :show-yb-code="searchParams.target === 'physician'"
  595. @close="searchParams.showSearch = false"
  596. @click-item="handleClickSearchItem"
  597. />
  598. </template>
  599. <script setup>
  600. import {
  601. computed,
  602. onActivated,
  603. onDeactivated,
  604. onMounted,
  605. reactive,
  606. ref,
  607. watchEffect,
  608. } from "vue";
  609. import {
  610. getZyInYbDiags,
  611. saveZyInYbDiags,
  612. submitSiPatientInfo,
  613. } from "@/api/inpatient/patient";
  614. import { getAllSpecialDiags } from "@/api/inpatient/dictionary";
  615. import {
  616. fetchCountryDictionary,
  617. fetchNationDictionary,
  618. fetchRelationDictionary,
  619. } from "@/api/dictionary/fetch-dictionaries";
  620. import { diagTypes, sexes } from "@/data";
  621. import { allAdmdvses } from "@/data/admdvs";
  622. import { nullPatient } from "@/utils/validate";
  623. import { ElMessage, ElMessageBox } from "element-plus";
  624. import {
  625. admissRegister,
  626. revokeAdmission,
  627. } from "@/api/medical-insurance/si-inpatient";
  628. import { formatDatetime, getDatetime } from "@/utils/date";
  629. import { clone } from "@/utils/clone";
  630. import {
  631. getMatnTypes,
  632. getMedTypesByFlag,
  633. getPsnCertTypes,
  634. } from "@/api/medical-insurance/si-dict";
  635. import {
  636. checkRegisterDate,
  637. obtainBasicPersonInfo,
  638. } from "@/api/medical-insurance/si-query";
  639. import {
  640. inpatientRegister,
  641. revokeInpatientRegister,
  642. employeeInfoInquiry,
  643. } from "@/api/medical-insurance/si-injury";
  644. import {
  645. selectAdmissApply,
  646. submitAdmissApply,
  647. } from "@/api/medical-insurance/si-admiss-apply";
  648. import { baseinfo } from "@/data/inpatient";
  649. import XmlrV2 from "@/components/xmlr/index.vue";
  650. import Assignmentinfo from "@/components/medical-insurance/assigninfo/Index.vue";
  651. import Search from "@/components/search/Index.vue";
  652. import ReadCard from "@/components/medical-insurance/readcard/Index.vue";
  653. import GenerateMedicineReturnOrder from "@/components/medical-insurance/medicine-return-order/GenerateMedicineReturnOrder.vue";
  654. import { CyMessageBox } from "@/utils/cy-message-box";
  655. import sleep from "@/utils/sleep";
  656. import XEUtils from "xe-utils";
  657. import router from "@/router";
  658. import { useMedinsStore } from "@/pinia/medins-store";
  659. import { useDialog } from "@/components/cy/CyDialog/index";
  660. const patient = computed(() => {
  661. const patientInfo = baseinfo();
  662. const pContent = patientInfo.expContent
  663. ? JSON.parse(patientInfo.expContent)
  664. : {};
  665. expContent.MDTRT_GRP_TYPE = pContent.MDTRT_GRP_TYPE;
  666. expContent.TRUM_FLAG = pContent.TRUM_FLAG;
  667. expContent.REL_TTP_FLAG = pContent.REL_TTP_FLAG;
  668. expContent.IPT_TYPE = pContent.IPT_TYPE;
  669. return patientInfo;
  670. });
  671. const fetchZyYbDiags = () => {
  672. if (nullPatient()) {
  673. return;
  674. }
  675. getZyInYbDiags(patient.value.inpatientNo, patient.value.admissTimes).then(
  676. res => {
  677. zyInYbDiags.value = res;
  678. }
  679. );
  680. };
  681. const medinsStore = useMedinsStore();
  682. const injuryMode = computed(() => {
  683. return medinsStore.isInjuryMode;
  684. });
  685. const handleSelectMedType = val => {
  686. medinsStore.setInjuryMode((val === "gs21") || (val === "gs22") || (val === "gs23"));
  687. };
  688. const actived = ref(false);
  689. onActivated(() => {
  690. actived.value = true;
  691. });
  692. onDeactivated(() => {
  693. actived.value = false;
  694. });
  695. const currentPatNo = ref(null);
  696. watchEffect(() => {
  697. if (actived.value) {
  698. if (
  699. patient.value.inpatientNo &&
  700. patient.value.inpatientNo !== currentPatNo.value
  701. ) {
  702. currentPatNo.value = patient.value.inpatientNo;
  703. fetchZyYbDiags();
  704. }
  705. }
  706. });
  707. const searchParams = reactive({
  708. showSearch: false,
  709. title: "",
  710. target: "",
  711. });
  712. const psnCertTypes = ref([]);
  713. const medTypes = ref([]);
  714. const countries = ref([]);
  715. const nations = ref([]);
  716. const relations = ref([]);
  717. const diagItem = ref({});
  718. const showSearchSpecialDiag = ref(false);
  719. const zyInYbDiags = ref([]);
  720. const specialDiags = ref([]);
  721. const specialDiagName = ref("");
  722. const cptSpecialDiags = computed(() => {
  723. return specialDiags.value.filter(item => {
  724. return (
  725. (item.oldName + "" + item.newName).indexOf(specialDiagName.value) !== -1
  726. );
  727. });
  728. });
  729. const matnTypes = ref([]);
  730. const expContent = reactive({
  731. MDTRT_GRP_TYPE: "",
  732. TRUM_FLAG: "",
  733. REL_TTP_FLAG: "",
  734. IPT_TYPE: "",
  735. });
  736. const mdtrtGrpTypes = [
  737. { code: "1", name: "新冠肺炎确诊患者", key: "mdtrtGrpTypes-1" },
  738. { code: "2", name: "其他国家突发公共事件", key: "mdtrtGrpTypes-2" },
  739. { code: "3", name: "新冠肺炎疑似患者", key: "mdtrtGrpTypes-3" },
  740. { code: "4", name: "无症状感染者", key: "mdtrtGrpTypes-4" },
  741. ];
  742. const handleAdmdvsChange = val => {
  743. patient.value.admdvs = val[1];
  744. };
  745. const openDiagDialog = () => {
  746. if (nullPatient()) {
  747. return;
  748. }
  749. if (!patient.value.medType) {
  750. ElMessage({
  751. message: "请先选择医疗类别!",
  752. type: "warning",
  753. duration: 2500,
  754. showClose: true,
  755. });
  756. return;
  757. }
  758. searchParams.title = "医保入院诊断";
  759. searchParams.target = injuryMode.value ? "injurydiag" : "diag";
  760. searchParams.showSearch = true;
  761. };
  762. const openDiseInput = () => {
  763. getAllSpecialDiags(patient.value.medType).then(res => {
  764. specialDiags.value = res;
  765. showSearchSpecialDiag.value = true;
  766. });
  767. };
  768. const addDiseInfo = row => {
  769. patient.value.diseCode = row.newCode;
  770. patient.value.diseName = row.newName;
  771. showSearchSpecialDiag.value = false;
  772. };
  773. const getDiagTypeName = val => {
  774. for (let i = 0; i < diagTypes.length; i++) {
  775. if (diagTypes[i].code === val) {
  776. return diagTypes[i].name;
  777. }
  778. }
  779. };
  780. const deleteYbDiag = index => {
  781. zyInYbDiags.value.splice(index, 1);
  782. for (let i = 0; i < zyInYbDiags.value.length; i++) {
  783. const element = zyInYbDiags.value[i];
  784. element.diagNo = i + 1;
  785. if (i === 0) {
  786. element.property = "主要诊断";
  787. }
  788. }
  789. };
  790. const saveYbDiags = () => {
  791. const param = {
  792. inpatientNo: patient.value.inpatientNo,
  793. admissTimes: patient.value.admissTimes,
  794. diags: zyInYbDiags.value,
  795. };
  796. saveZyInYbDiags(param).then(() => {
  797. ElMessage({
  798. message: "医保入院诊断保存成功。",
  799. type: "success",
  800. duration: 2500,
  801. showClose: true,
  802. });
  803. showSearchSpecialDiag.value = false;
  804. });
  805. };
  806. const submitPatientInfo = () => {
  807. if (nullPatient()) {
  808. return;
  809. }
  810. ElMessageBox.confirm("确定保存患者信息?", "提示", {
  811. confirmButtonText: "确定",
  812. cancelButtonText: "取消",
  813. type: "warning",
  814. }).then(() => {
  815. patient.value.expContent = JSON.stringify(expContent);
  816. submitSiPatientInfo({
  817. patient: patient.value,
  818. diags: zyInYbDiags.value,
  819. }).then(() => {
  820. ElMessage({
  821. message: "保存患者信息成功。",
  822. type: "success",
  823. duration: 2500,
  824. showClose: true,
  825. });
  826. });
  827. });
  828. };
  829. const searchPhysician = flag => {
  830. switch (flag) {
  831. case 1:
  832. searchParams.title = "管床医生";
  833. break;
  834. case 2:
  835. searchParams.title = "责任护士";
  836. break;
  837. }
  838. searchParams.target = "physician";
  839. searchParams.showSearch = true;
  840. };
  841. const handleClickSearchItem = item => {
  842. if (searchParams.target === "physician") {
  843. if (!item.ybCode) {
  844. ElMessage({
  845. message: "请选择有医保赋码的人员。",
  846. type: "warning",
  847. duration: 2500,
  848. showClose: true,
  849. });
  850. return;
  851. }
  852. switch (searchParams.title) {
  853. case "管床医生":
  854. if (!item.ybCode.startsWith("D")) {
  855. ElMessage({
  856. message: "医师医保编码首字母为D,请重新选择。",
  857. type: "warning",
  858. duration: 2500,
  859. showClose: true,
  860. });
  861. return;
  862. }
  863. patient.value.referPhysician = item.code;
  864. patient.value.referPhysicianName = item.name;
  865. break;
  866. case "责任护士":
  867. if (!item.ybCode.startsWith("N")) {
  868. ElMessage({
  869. message: "护士医保编码首字母为N,请重新选择。",
  870. type: "warning",
  871. duration: 2500,
  872. showClose: true,
  873. });
  874. return;
  875. }
  876. patient.value.dutyNurse = item.code;
  877. patient.value.dutyNurseName = item.name;
  878. break;
  879. }
  880. } else if (
  881. searchParams.target === "diag" ||
  882. searchParams.target === "injurydiag"
  883. ) {
  884. diagItem.value.icdCode = item.icdCode;
  885. diagItem.value.icdText = item.icdText;
  886. diagItem.value.diagType = item.diagType;
  887. diagItem.value.property =
  888. zyInYbDiags.value.length === 0 ? "主要诊断" : "次要诊断";
  889. diagItem.value.diagNo = zyInYbDiags.value.length + 1;
  890. diagItem.value.opDate = getDatetime();
  891. zyInYbDiags.value.push(clone(diagItem.value));
  892. }
  893. searchParams.showSearch = false;
  894. };
  895. const afterReadCard = result => {
  896. patient.value.mdtrtCertType = result.mdtrtCertType;
  897. patient.value.readCardResult = result.readCardResult;
  898. patient.value.busCardInfo = result.busCardInfo;
  899. patient.value.readCardBizType = result.readCardBizType;
  900. };
  901. const formatYbRegisterDate = () => {
  902. patient.value.ybRegisterDate = formatDatetime(patient.value.ybRegisterDate);
  903. };
  904. const admissApply = ref({});
  905. const showAdmissApplyForm = ref(false);
  906. const checkRegisterDatetime = () => {
  907. if (nullPatient()) {
  908. return;
  909. }
  910. if(!(patient.value && patient.value.mdtrtCertType && patient.value.readCardResult)) {
  911. ElMessage({
  912. message: "请进行读卡操作!",
  913. type: "warning",
  914. duration: 2600,
  915. showClose: true,
  916. });
  917. return;
  918. }
  919. if(patient.value.mdtrtCertType === "sicard"){
  920. if(!(patient.value.name && patient.value.readCardResult && patient.value.readCardResult.includes(patient.value.name))) {
  921. // 社保卡读卡成功,但姓名不匹配!
  922. ElMessage({
  923. message: "社保卡读卡成功,但姓名不匹配!",
  924. type: "warning",
  925. duration: 2500,
  926. showClose: true,
  927. });
  928. return;
  929. }
  930. if(!(patient.value.socialNo && patient.value.readCardResult && patient.value.readCardResult.includes(patient.value.socialNo))) {
  931. // 社保卡读卡成功,但身份证不匹配!
  932. ElMessage({
  933. message: "社保卡读卡成功,但身份证不匹配!",
  934. type: "warning",
  935. duration: 2500,
  936. showClose: true,
  937. });
  938. return;
  939. }
  940. }else if(patient.value.mdtrtCertType === "qrcode"){
  941. // 电子凭证读卡逻辑 - JSON格式数据
  942. try {
  943. const cardData = JSON.parse(patient.value.readCardResult);
  944. if (!(patient.value.name && cardData.userName === patient.value.name)) {
  945. ElMessage({
  946. message: "电子凭证读卡成功,但姓名不匹配!",
  947. type: "warning",
  948. duration: 2500,
  949. showClose: true,
  950. });
  951. return;
  952. }
  953. if (!(patient.value.socialNo && cardData.idNo === patient.value.socialNo)) {
  954. ElMessage({
  955. message: "电子凭证读卡成功,但身份证不匹配!",
  956. type: "warning",
  957. duration: 2500,
  958. showClose: true,
  959. });
  960. return;
  961. }
  962. } catch (error) {
  963. ElMessage({
  964. message: "电子凭证读卡数据格式错误!",
  965. type: "error",
  966. duration: 2500,
  967. showClose: true,
  968. });
  969. return;
  970. }
  971. }else if(patient.value.mdtrtCertType === "face"){
  972. // 刷脸读卡逻辑 - JSON格式数据
  973. try {
  974. const cardData = JSON.parse(patient.value.readCardResult);
  975. if (!(patient.value.name && cardData.userName === patient.value.name)) {
  976. ElMessage({
  977. message: "刷脸读卡成功,但姓名不匹配!",
  978. type: "warning",
  979. duration: 2500,
  980. showClose: true,
  981. });
  982. return;
  983. }
  984. if (!(patient.value.socialNo && cardData.idNo === patient.value.socialNo)) {
  985. ElMessage({
  986. message: "刷脸读卡成功,但身份证不匹配!",
  987. type: "warning",
  988. duration: 2500,
  989. showClose: true,
  990. });
  991. return;
  992. }
  993. } catch (error) {
  994. ElMessage({
  995. message: "刷脸读卡数据格式错误!",
  996. type: "error",
  997. duration: 2500,
  998. showClose: true,
  999. });
  1000. return;
  1001. }
  1002. }
  1003. patient.value.expContent = JSON.stringify(expContent);
  1004. submitSiPatientInfo({
  1005. patient: patient.value,
  1006. diags: zyInYbDiags.value,
  1007. }).then(() => {
  1008. checkRegisterDate(
  1009. patient.value.inpatientNo,
  1010. patient.value.admissTimes
  1011. ).then(() => {
  1012. selectAdmissApply(patient.value).then(res => {
  1013. if (null === res.status) {
  1014. admissApply.value.patNo = patient.value.inpatientNo;
  1015. admissApply.value.times = patient.value.admissTimes;
  1016. admissApply.value.ledgerSn = patient.value.ledgerSn;
  1017. admissApply.value.admissDatetime = patient.value.ybRegisterDate;
  1018. admissApply.value.inputComment = "人证相符。";
  1019. showAdmissApplyForm.value = true;
  1020. } else {
  1021. switch (res.status) {
  1022. case 0:
  1023. ElMessageBox.alert(
  1024. "医保科尚未处理此患者的医保入院申请,请耐心等候或者致电医保科(内线电话:2102)。",
  1025. "提示",
  1026. {
  1027. type: "warning",
  1028. }
  1029. );
  1030. break;
  1031. case 1:
  1032. getPsnInsuinfo();
  1033. break;
  1034. case 2:
  1035. ElMessageBox.confirm(
  1036. "医保科驳回了此患者的医保入院申请,驳回意见为【" +
  1037. res.handleComment +
  1038. "】",
  1039. "提示",
  1040. {
  1041. type: "error",
  1042. distinguishCancelAndClose: true,
  1043. confirmButtonText: "我知道了",
  1044. cancelButtonText: "重新提交",
  1045. showCancelButton: true,
  1046. }
  1047. ).catch(action => {
  1048. if (action === "cancel") {
  1049. admissApply.value.patNo = patient.value.inpatientNo;
  1050. admissApply.value.times = patient.value.admissTimes;
  1051. admissApply.value.ledgerSn = patient.value.ledgerSn;
  1052. admissApply.value.admissDatetime =
  1053. patient.value.ybRegisterDate;
  1054. showAdmissApplyForm.value = true;
  1055. }
  1056. });
  1057. break;
  1058. }
  1059. }
  1060. });
  1061. });
  1062. });
  1063. };
  1064. const cancelAdmissApply = () => {
  1065. admissApply.value = {};
  1066. showAdmissApplyForm.value = false;
  1067. };
  1068. const confirmAdmissApply = () => {
  1069. if (!admissApply.value.admissDatetime) {
  1070. ElMessage({
  1071. message: "医保入院登记时间不能为空!",
  1072. type: "error",
  1073. duration: 2500,
  1074. showClose: true,
  1075. });
  1076. return;
  1077. }
  1078. if (!admissApply.value.inputComment) {
  1079. ElMessage({
  1080. message: "申请理由不能为空!",
  1081. type: "error",
  1082. duration: 2500,
  1083. showClose: true,
  1084. });
  1085. return;
  1086. }
  1087. admissApply.value.admissDatetime = formatDatetime(
  1088. admissApply.value.admissDatetime
  1089. );
  1090. ElMessageBox.confirm("是否确认提交入院登记申请?", "提示", {
  1091. type: "warning",
  1092. confirmButtonText: "确定",
  1093. cancelButtonText: "取消",
  1094. })
  1095. .then(() => {
  1096. submitAdmissApply(admissApply.value).then(res => {
  1097. ElMessage({
  1098. message: res,
  1099. type: "success",
  1100. duration: 2500,
  1101. showClose: true,
  1102. });
  1103. showAdmissApplyForm.value = false;
  1104. });
  1105. })
  1106. .catch(() => {});
  1107. };
  1108. const psnBaseinfo = ref({});
  1109. const showPsnInsuinfo = ref(false);
  1110. const injuryinfo = ref([]);
  1111. const getPsnInsuinfo = () => {
  1112. if (nullPatient()) {
  1113. return;
  1114. }
  1115. if (!patient.value.medType) {
  1116. ElMessage({
  1117. message: "请选择患者的医疗类别!",
  1118. type: "warning",
  1119. showClose: true,
  1120. });
  1121. return;
  1122. }
  1123. if (injuryMode.value) {
  1124. employeeInfoInquiry(patient.value).then(res => {
  1125. injuryinfo.value = res;
  1126. showPsnInsuinfo.value = true;
  1127. });
  1128. } else {
  1129. const param = {
  1130. medType: patient.value.medType,
  1131. patNo: patient.value.inpatientNo,
  1132. times: patient.value.admissTimes,
  1133. ledgerSn: patient.value.ledgerSn,
  1134. socialNo: patient.value.socialNo,
  1135. name: patient.value.name,
  1136. admdvs: patient.value.admdvs,
  1137. psnCertType: patient.value.psnCertType,
  1138. needSaving: 1,
  1139. };
  1140. obtainBasicPersonInfo(param).then(res => {
  1141. patient.value.psnNo = res.psnNo;
  1142. psnBaseinfo.value = res;
  1143. showPsnInsuinfo.value = true;
  1144. if (XEUtils.toNumber(res.gend) !== patient.value.sex) {
  1145. sleep(800).then(() => {
  1146. CyMessageBox.alert({
  1147. message: `患者医保性别<span style="color:red">${res.gendName}</span>,与HIS信息不一致,请核实。`,
  1148. type: "warning",
  1149. dangerouslyUseHTMLString: true,
  1150. });
  1151. });
  1152. }
  1153. });
  1154. }
  1155. };
  1156. const handleClickInjuryinfo = row => {
  1157. ElMessageBox.confirm("确定进行工伤入院登记?", "提示", {
  1158. type: "warning",
  1159. confirmButtonText: "确定",
  1160. cancelButtonText: "取消",
  1161. })
  1162. .then(() => {
  1163. row.patNo = patient.value.inpatientNo;
  1164. row.times = patient.value.admissTimes;
  1165. row.ledgerSn = patient.value.ledgerSn;
  1166. row.aka130 = "42";
  1167. row.bka003 = "420";
  1168. inpatientRegister(row).then(res => {
  1169. ElMessage({
  1170. message: "审核已通过,医保入院登记成功。",
  1171. type: "success",
  1172. duration: 2500,
  1173. showClose: true,
  1174. });
  1175. showPsnInsuinfo.value = false;
  1176. });
  1177. })
  1178. .catch(() => {});
  1179. };
  1180. const handleClickInsuinfo = row => {
  1181. ElMessageBox.confirm("确定进行医保入院登记?", "提示", {
  1182. type: "warning",
  1183. confirmButtonText: "确定",
  1184. cancelButtonText: "取消",
  1185. })
  1186. .then(() => {
  1187. patient.value.balc = row.balc;
  1188. patient.value.insutype = row.insutype;
  1189. patient.value.psnType = row.psnType;
  1190. patient.value.insuplcAdmdvs = row.insuplcAdmdvs;
  1191. patient.value.insuplcAdmdvsName = row.insuplcAdmdvsName;
  1192. patient.value.empName = row.empName;
  1193. admissRegister(patient.value).then(() => {
  1194. ElMessage({
  1195. message: "医保入院登记成功。",
  1196. type: "success",
  1197. duration: 2500,
  1198. showClose: true,
  1199. });
  1200. showPsnInsuinfo.value = false;
  1201. });
  1202. })
  1203. .catch(() => {});
  1204. };
  1205. const beforeCancelRegister = () => {
  1206. if (nullPatient()) return;
  1207. ElMessageBox.prompt("请输入撤销入院登记的原因:", "提示", {
  1208. confirmButtonText: "确定",
  1209. cancelButtonText: "取消",
  1210. })
  1211. .then(({ value }) => {
  1212. if (!value) {
  1213. ElMessage({
  1214. message: "撤销入院登记的原因不能为空!",
  1215. type: "warning",
  1216. duration: 2500,
  1217. showClose: true,
  1218. });
  1219. return;
  1220. }
  1221. ElMessageBox.confirm(
  1222. "撤销医保入院登记的原因为【" + value + "】确定撤销?",
  1223. "提示",
  1224. {
  1225. type: "warning",
  1226. }
  1227. ).then(() => {
  1228. patient.value.revokeRemark = value;
  1229. if (injuryMode.value) {
  1230. revokeInpatientRegister(patient.value).then(() => {
  1231. ElMessageBox.alert("撤销入院登记成功。", "提示", {
  1232. type: "success",
  1233. });
  1234. });
  1235. } else {
  1236. revokeAdmission(patient.value).then(() => {
  1237. ElMessageBox.alert("撤销入院登记成功。", "提示", {
  1238. type: "success",
  1239. });
  1240. });
  1241. }
  1242. });
  1243. })
  1244. .catch(() => {});
  1245. };
  1246. const showAssigninfo = ref(false);
  1247. const beforeFetchAssigninfo = () => {
  1248. if (nullPatient()) {
  1249. return;
  1250. }
  1251. if (!patient.value.socialNo) {
  1252. ElMessage({
  1253. message: "患者身份证不能为空!",
  1254. type: "warning",
  1255. duration: 2500,
  1256. showClose: true,
  1257. });
  1258. return;
  1259. }
  1260. if (!patient.value.admdvs) {
  1261. ElMessage({
  1262. message: "患者参保地不能为空!",
  1263. type: "warning",
  1264. duration: 2500,
  1265. showClose: true,
  1266. });
  1267. return;
  1268. }
  1269. showAssigninfo.value = true;
  1270. };
  1271. function chronicDiseaseRegister() {
  1272. if (nullPatient()) {
  1273. return;
  1274. }
  1275. router.push(
  1276. "/outpatient/chronicDisease/chronicDiseaseRegister/" +
  1277. patient.value.inpatientNo
  1278. );
  1279. }
  1280. const xiangMuLuRuRouter = () => {
  1281. if (nullPatient()) {
  1282. return;
  1283. }
  1284. useDialog(XmlrV2, {
  1285. dialogProps: {
  1286. fullscreen: true,
  1287. showClose: false,
  1288. },
  1289. showFooter: false,
  1290. hideHeader: true,
  1291. params: { patNo: patient.value.inpatientNo },
  1292. });
  1293. };
  1294. const currentPage = ref(1);
  1295. const handleCurrentChange = val => {
  1296. currentPage.value = val;
  1297. };
  1298. onMounted(() => {
  1299. getPsnCertTypes().then(res => {
  1300. psnCertTypes.value = res;
  1301. });
  1302. getMedTypesByFlag("hospitalization").then(res => {
  1303. medTypes.value = res;
  1304. });
  1305. fetchCountryDictionary().then(res => {
  1306. countries.value = res;
  1307. });
  1308. fetchNationDictionary().then(res => {
  1309. nations.value = res;
  1310. });
  1311. fetchRelationDictionary().then(res => {
  1312. relations.value = res;
  1313. });
  1314. getMatnTypes().then(res => {
  1315. matnTypes.value = res;
  1316. });
  1317. });
  1318. </script>
  1319. <style scoped>
  1320. .el-date-editor.el-input,
  1321. .el-date-editor.el-input__inner {
  1322. width: 100%;
  1323. }
  1324. .el-collapse-item__content {
  1325. padding-bottom: 0;
  1326. }
  1327. .el-collapse-item__header {
  1328. height: 30px;
  1329. line-height: 30px;
  1330. }
  1331. .el-collapse-item__header,
  1332. .el-collapse-item__wrap {
  1333. background-color: inherit;
  1334. }
  1335. .el-autocomplete-suggestion li {
  1336. line-height: normal !important;
  1337. }
  1338. </style>