Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

hospitalSummary.vue 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  1. <template>
  2. <div class="patient-container">
  3. <patient-sidebar :id="patient_id" defaultActive="1-9"></patient-sidebar>
  4. <div v-loading="loading">
  5. <div class="patient-app-container advice-container app-container">
  6. <div>
  7. <span style="margin-left: 10px;float:right;">
  8. <el-button type="primary" icon="el-icon-circle-plus-outline" size="small"
  9. @click="show_dialog = true">新增</el-button>
  10. <el-button type="primary" icon="el-icon-edit-outline" size="small"
  11. @click="showEdit">修改</el-button>
  12. <el-button type="primary" icon="el-icon-printer" size="small"
  13. @click="print">打印</el-button>
  14. <el-button size="small" type="danger" @click="deleteAction">删除</el-button>
  15. </span>
  16. </div>
  17. <div class="cell clearfix">
  18. <label class="title"><span class="name">日期查询</span> : </label>
  19. <el-date-picker v-model="start_time" prefix-icon="el-icon-date" :editable="false" style="width: 196px;"
  20. type="date" placeholder="选择日期时间" align="right" format="yyyy-MM-dd"
  21. value-format="yyyy-MM-dd" @change="startTimeChange"></el-date-picker>
  22. <span class="">-</span>
  23. <el-date-picker v-model="end_time" prefix-icon="el-icon-date" :editable="false" style="width: 196px;"
  24. type="date" placeholder="选择日期时间" align="right" format="yyyy-MM-dd"
  25. value-format="yyyy-MM-dd" @change="endTimeChange"></el-date-picker>
  26. </div>
  27. <div class="record">
  28. <el-row :gutter="15">
  29. <el-col :span="10">
  30. <el-table :header-cell-style="{
  31. backgroundColor: 'rgb(245, 247, 250)',
  32. color: '#606266'
  33. }"
  34. :row-style="{ color: '#303133' }" ref="inspection_table" :data="tableData"
  35. border highlight-current-row @current-change="changeCurrentRecordTwo"
  36. @selection-change="selectSummary"
  37. :row-class-name="tableRow"
  38. >
  39. <el-table-column type="selection" width="60" align="center"></el-table-column>
  40. <el-table-column label="住院小结名称" align="center">
  41. <template slot-scope="scope">
  42. </template>
  43. </el-table-column>
  44. <el-table-column label="记录时间" align="center">
  45. <template slot-scope="scope">
  46. </template>
  47. </el-table-column>
  48. <el-table-column label="记录医生" align="center">
  49. <template slot-scope="scope">
  50. </template>
  51. </el-table-column>
  52. </el-table>
  53. </el-col>
  54. <el-col :span="14">
  55. <div class="record_content_panel">
  56. <div style="background-color:rgb(245, 247, 250)" class="title">住院小结内容</div>
  57. <div style="padding:10px;border-bottom:1px solid #DCDFE6;">住院小结时间:
  58. </div>
  59. <div style="padding:10px;border-bottom:1px solid #DCDFE6;line-height:20px;">阶段小结总结:
  60. </div>
  61. <div style="padding:10px;border-bottom:1px solid #DCDFE6;line-height:20px;">阶段小结化验结果:
  62. <div>
  63. </div>
  64. </div>
  65. </div>
  66. </el-col>
  67. </el-row>
  68. </div>
  69. </div>
  70. <el-dialog title="新增住院小结" width="60%" top="5vh" :visible.sync="show_dialog">
  71. <div>
  72. <div class="new_record_form">
  73. <div class="cell clearfix">
  74. <label class="title"><span class="name">标题</span> : </label>
  75. <el-input v-model="form.title" style="width:200px"></el-input>
  76. <label class="title"><span class="name">入院时间</span> : </label>
  77. <el-date-picker v-model="form.admission_time"
  78. prefix-icon="el-icon-date"
  79. style="width: 200px;"
  80. type="date" placeholder="选择日期时间" align="right" format="yyyy-MM-dd"
  81. value-format="yyyy-MM-dd">
  82. </el-date-picker>
  83. <label class="title"><span class="name">出院时间</span> : </label>
  84. <el-date-picker v-model="form.discharge_time"
  85. prefix-icon="el-icon-date"
  86. style="width: 200px;"
  87. type="date" placeholder="选择日期时间" align="right" format="yyyy-MM-dd"
  88. value-format="yyyy-MM-dd">
  89. </el-date-picker>
  90. </div>
  91. <div class="cell clearfix" style="margin-top:10px">
  92. <label class="title"><span class="name">上级医师签名</span>:</label>
  93. <el-select v-model="form.dean" placeholder="请选择">
  94. <el-option
  95. v-for="item in docList"
  96. :key="item.admin_user_id"
  97. :label="item.user_name"
  98. :value="item.admin_user_id">
  99. </el-option>
  100. </el-select>
  101. <label class="title"><span class="name">住院医师签名</span>:</label>
  102. <el-select v-model="form.doctor" placeholder="请选择">
  103. <el-option
  104. v-for="item in docList"
  105. :key="item.admin_user_id"
  106. :label="item.user_name"
  107. :value="item.admin_user_id">
  108. </el-option>
  109. </el-select>
  110. <label class="title"><span class="name">记录日期</span> : </label>
  111. <el-date-picker v-model="form.record_date"
  112. prefix-icon="el-icon-date"
  113. style="width: 200px;"
  114. type="date" placeholder="选择日期时间" align="right" format="yyyy-MM-dd"
  115. value-format="yyyy-MM-dd">
  116. </el-date-picker>
  117. </div>
  118. <div class="cell clearfix" style="margin-top:10px">
  119. <label class="title"><span class="name">病案号:</span> : </label>
  120. <el-input v-model="form.sick_personnel" style="width:200px"></el-input>
  121. <label class="title"><span class="name">X线</span> : </label>
  122. <el-input v-model="form.xray" style="width:200px"></el-input>
  123. <label class="title"><span class="name">CT</span> : </label>
  124. <el-input v-model="form.connecticut" style="width:200px"></el-input>
  125. </div>
  126. <div class="cell clearfix" style="margin-top:10px">
  127. <label class="title"><span class="name">MRI</span> : </label>
  128. <el-input v-model="form.nuclear_magnetic_resonance" style="width:200px"></el-input>
  129. <label class="title"><span class="name">超声</span> : </label>
  130. <el-input v-model="form.ultrasound" style="width:200px"></el-input>
  131. <label class="title"><span class="name">病理</span> : </label>
  132. <el-input v-model="form.pathology" style="width:200px"></el-input>
  133. </div>
  134. <div class="cell clearfix" style="margin-top:10px">
  135. <label class="title"><span class="name">入院诊断</span> : </label>
  136. <el-select v-model="form.admitting_diagnosis_id" placeholder="可选择病程模板" @change="changeAmittDiagnosis">
  137. <el-option v-for="(option, index) in templates" :key="index" :label="option.title"
  138. :value="option.content"></el-option>
  139. </el-select>
  140. <div class="textarea_panel">
  141. <keep-alive>
  142. <editor ref="editor"
  143. id="editors"
  144. style="width: 800px"
  145. v-bind:r_content="form.admitting_diagnosis">
  146. </editor>
  147. </keep-alive>
  148. </div>
  149. </div>
  150. <div class="cell clearfix" style="margin-top:10px">
  151. <label class="title"><span class="name">出院诊断</span> : </label>
  152. <el-select v-model="form.discharge_diagnosis_id" placeholder="可选择病程模板" @change="changeDischargeDiagnosis">
  153. <el-option v-for="(option, index) in templatesOne" :key="index" :label="option.title"
  154. :value="option.content"></el-option>
  155. </el-select>
  156. <div class="textarea_panel">
  157. <keep-alive>
  158. <editor ref="editorOne"
  159. id="editorsOne"
  160. style="width: 800px"
  161. v-bind:r_content="form.discharge_diagnosis">
  162. </editor>
  163. </keep-alive>
  164. </div>
  165. </div>
  166. <div class="cell clearfix" style="margin-top:10px">
  167. <label class="title"><span class="name">入院时病情</span> : </label>
  168. <el-select v-model="form.diagnosis_admission_id" placeholder="可选择病程模板" @change="changeDiagnosisAdmission">
  169. <el-option v-for="(option, index) in templatesTwo" :key="index" :label="option.title"
  170. :value="option.content"></el-option>
  171. </el-select>
  172. <div class="textarea_panel">
  173. <keep-alive>
  174. <editor ref="editorTwo"
  175. id="editorsTwo"
  176. style="width: 800px"
  177. v-bind:r_content="form.diagnosis_admission">
  178. </editor>
  179. </keep-alive>
  180. </div>
  181. </div>
  182. <div class="cell clearfix" style="margin-top:10px">
  183. <label class="title"><span class="name">诊断经过</span> : </label>
  184. <el-select v-model="form.treatment_id" placeholder="可选择病程模板" @change="changeTreatment">
  185. <el-option v-for="(option, index) in templatesThree" :key="index" :label="option.title"
  186. :value="option.content"></el-option>
  187. </el-select>
  188. <div class="textarea_panel">
  189. <keep-alive>
  190. <editor ref="editorFour"
  191. id="editorsFour"
  192. style="width: 800px"
  193. v-bind:r_content="form.treatment">
  194. </editor>
  195. </keep-alive>
  196. </div>
  197. </div>
  198. <div class="cell clearfix" style="margin-top:10px">
  199. <label class="title"><span class="name">出院时病情</span> : </label>
  200. <el-select v-model="form.illness_discharge_id" placeholder="可选择病程模板" @change="changeillnessDisCharge">
  201. <el-option v-for="(option, index) in templatesFour" :key="index" :label="option.title"
  202. :value="option.content"></el-option>
  203. </el-select>
  204. <div class="textarea_panel">
  205. <keep-alive>
  206. <editor ref="editorFive"
  207. id="editorsFive"
  208. style="width: 800px"
  209. v-bind:r_content="form.illness_discharge">
  210. </editor>
  211. </keep-alive>
  212. </div>
  213. </div>
  214. <div class="cell clearfix" style="margin-top:10px">
  215. <label class="title"><span class="name">出院医嘱</span> : </label>
  216. <el-select v-model="form.discharge_advice_id" placeholder="可选择病程模板" @change="changeDischargeAdvice">
  217. <el-option v-for="(option, index) in templatesFive" :key="index" :label="option.title"
  218. :value="option.content"></el-option>
  219. </el-select>
  220. <div class="textarea_panel">
  221. <keep-alive>
  222. <editor ref="editorSix"
  223. id="editorsSix"
  224. style="width: 800px"
  225. v-bind:r_content="form.discharge_advice">
  226. </editor>
  227. </keep-alive>
  228. </div>
  229. </div>
  230. <div style="text-align: right; padding-right: 0px; padding-top: 10px; padding-bottom: 10px;">
  231. <el-button @click="show_dialog = false">取消</el-button>
  232. <el-button type="primary"
  233. @click="createAction" :loading="uploading_new_record">保存
  234. </el-button>
  235. </div>
  236. </div>
  237. </div>
  238. </el-dialog>
  239. <multi-select-box
  240. :propsForm="InnerDialogProps"
  241. v-on:dialog-comfirm="innerDialogComfirm"
  242. v-on:dialog-cancle="innerDialogCancle"
  243. ></multi-select-box>
  244. </div>
  245. </div>
  246. </template>
  247. <script>
  248. import PatientSidebar from './components/PatientSidebar'
  249. import Editor from '@/components/Editor'
  250. import { } from '@/api/patient'
  251. import { parseTime } from '@/utils'
  252. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  253. import { uParseTime } from '@/utils/tools'
  254. import { getDataConfig } from '@/utils/data'
  255. import multiSelectBox from '../dialysis/details/dialog/MultiSelectBox'
  256. import MsgTip from '../dialysis/details/dialog/MsgTip'
  257. const moment = require('moment')
  258. export default {
  259. name: 'hospitalSummary',
  260. components: {
  261. PatientSidebar,
  262. BreadCrumb,
  263. Editor,
  264. MsgTip,
  265. multiSelectBox,
  266. },
  267. data() {
  268. return {
  269. InnerDialogProps: {
  270. values: [],
  271. visibility: false,
  272. isShowTextArea: true,
  273. customContent: '',
  274. titles: '',
  275. type: '' // 不同弹框类型,用来匹配数据
  276. },
  277. loading: false,
  278. title: '',
  279. patient_id: 0,
  280. date: [],
  281. start_time: '',
  282. end_time: '',
  283. course_of_disease_time: '',
  284. records: [],
  285. doctors: [],
  286. current_select_record: null,
  287. show_dialog: false,
  288. show_edit_dialog: false,
  289. uploading_new_record: false,
  290. templates: this.$store.getters.configlist.admitting_diagnosis,
  291. templatesOne:this.$store.getters.configlist.discharge_diagnosis,
  292. templatesTwo:this.$store.getters.configlist.diagnosis_admission,
  293. templatesThree:this.$store.getters.configlist.treatment,
  294. templatesFour:this.$store.getters.configlist.illness_discharge,
  295. templatesFive:this.$store.getters.configlist.discharge_advice,
  296. select_template: '',
  297. new_content: '',
  298. edit_new_content: '',
  299. edit_course_of_disease_time: '',
  300. selectingRows: [],
  301. table_current_index: -1,
  302. edit_current_id: 0,
  303. edit_title: '',
  304. value:'',
  305. form:{
  306. id:0,
  307. title:"",
  308. admission_time:new Date(),
  309. discharge_time:new Date(),
  310. sick_personnel:"",
  311. xray:"",
  312. admitting_diagnosis_id:"",
  313. admitting_diagnosis:"",
  314. discharge_diagnosis_id:"",
  315. discharge_diagnosis:"",
  316. treatment:"",
  317. treatment_id:"",
  318. diagnosis_admission_id:"",
  319. diagnosis_admission:"",
  320. illness_discharge_id:"",
  321. illness_discharge:"",
  322. dean:"",
  323. doctor:"",
  324. record_date:new Date(),
  325. discharge_advice_id:"",
  326. discharge_advice:"",
  327. },
  328. tableData:[],
  329. docList:[],
  330. }
  331. },
  332. created() {
  333. console.log("this.$store.getters.xt_user.user.id",this.$store.getters.xt_user.user.id)
  334. this.patient_id = this.$route.params && this.$route.params.id
  335. var now = new Date()
  336. this.date = [now.getTime() - (7 * 24 * 60 * 60 * 1000), now.getTime()]
  337. var nowDate = new Date()
  338. var nowYear = nowDate.getFullYear()
  339. var nowMonth = nowDate.getMonth() + 1
  340. var nowDay = nowDate.getDate()
  341. this.end_time =
  342. nowYear +
  343. '-' +
  344. (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
  345. '-' +
  346. (nowDay < 10 ? '0' + nowDay : nowDay)
  347. nowDate.setMonth(nowDate.getMonth() - 1)
  348. nowYear = nowDate.getFullYear()
  349. nowMonth = nowDate.getMonth() + 1
  350. nowDay = nowDate.getDate()
  351. this.start_time =
  352. nowYear +
  353. '-' +
  354. (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
  355. '-' +
  356. (nowDay < 10 ? '0' + nowDay : nowDay)
  357. this.other_start_time = nowYear +'-' +(nowMonth < 10 ? '0' + nowMonth : nowMonth) +'-' + (nowDay < 10 ? '0' + nowDay : nowDay)
  358. },
  359. methods: {
  360. getTime(val) {
  361. if(val == "" || val == undefined){
  362. return ""
  363. }else {
  364. return uParseTime(val, '{y}-{m}-{d}')
  365. }
  366. },
  367. getTimeTwo(val) {
  368. if(val == ""){
  369. return ""
  370. }else {
  371. return uParseTime(val, '{y}-{m}-{d} {h}:{i}:{s}')
  372. }
  373. },
  374. getTimeOne(val) {
  375. if(val < 0){
  376. return ""
  377. }
  378. if(val == ""){
  379. return ""
  380. }else {
  381. return uParseTime(val, '{m}')
  382. }
  383. },
  384. startTimeChange(val){
  385. console.log("val",val)
  386. this.start_time = val
  387. this.getTemplateSummaryList()
  388. },
  389. endTimeChange(val){
  390. this.end_time = val
  391. this.getTemplateSummaryList()
  392. },
  393. print(){
  394. this.$router.push({path:"/patient/patient/templateSummary/print?id="+this.form.id})
  395. },
  396. tableRow(){
  397. },
  398. getTime(val) {
  399. if(val < 0){
  400. return ""
  401. }
  402. if(val == ""){
  403. return ""
  404. }else {
  405. return uParseTime(val, '{y}-{m}-{d}')
  406. }
  407. },
  408. changeCurrentRecordTwo(){
  409. },
  410. changeAmittDiagnosis(content){
  411. this.form.admitting_diagnosis = content
  412. },
  413. changeDischargeDiagnosis(content){
  414. this.form.discharge_diagnosis = content
  415. },
  416. changeDiagnosisAdmission(content){
  417. this.form.diagnosis_admission = content
  418. },
  419. changeTreatment(content){
  420. this.form.treatment = content
  421. },
  422. changeillnessDisCharge(content){
  423. this.form.illness_discharge = content
  424. },
  425. changeDischargeAdvice(content){
  426. this.form.discharge_advice = content
  427. },
  428. // title:"",
  429. // admission_time:new Date(),
  430. // discharge_time:new Date(),
  431. // sick_personnel:"",
  432. // xray:"",
  433. // admitting_diagnosis_id:"",
  434. // admitting_diagnosis:"",
  435. // discharge_diagnosis_id:"",
  436. // discharge_diagnosis:"",
  437. // treatment:"",
  438. // treatment_id:"",
  439. // diagnosis_admission_id:"",
  440. // diagnosis_admission:"",
  441. // illness_discharge_id:"",
  442. // illness_discharge:"",
  443. // dean:"",
  444. // doctor:"",
  445. // record_date:new Date(),
  446. // discharge_advice_id:"",
  447. // discharge_advice:"",
  448. createAction(){
  449. var admitting_diagnosis_id = 0
  450. var discharge_diagnosis_id = 0
  451. var diagnosis_admission_id = 0
  452. var illness_discharge_id = 0
  453. for(let i=0;i<this.templates.length;i++){
  454. if(this.templates[i].content == this.form.admitting_diagnosis){
  455. admitting_diagnosis_id = this.templates[i].value
  456. }
  457. }
  458. for(let i=0;i<this.templatesOne.length;i++){
  459. if(this.templates[i].content == this.form.discharge_diagnosis){
  460. discharge_diagnosis_id = this.templates[i].value
  461. }
  462. }
  463. for(let i=0;i<this.templatesTwo.length;i++){
  464. if(this.templates[i].content == this.form.diagnosis_admission){
  465. diagnosis_admission_id = this.templates[i].value
  466. }
  467. }
  468. var params = {
  469. title:this.form.title,
  470. admission_time:this.form.admission_time,
  471. discharge_time:this.form.discharge_time,
  472. sick_personnel:this.form.sick_personnel,
  473. xray:this.form.xray,
  474. admitting_diagnosis_id:admitting_diagnosis_id,
  475. }
  476. createHospitalSummary().then(response=>{
  477. })
  478. }
  479. }
  480. }
  481. </script>
  482. <style rel="stylesheet/css" lang="scss" scoped>
  483. .borderBox{
  484. border: 1px solid #DCDFE6;
  485. padding: 10px;
  486. margin-top: 10px;
  487. border-radius: 4px;
  488. p{
  489. font-weight: bold;
  490. font-size: 20px;
  491. margin: 10px 0;
  492. }
  493. }
  494. .container {
  495. margin-left: 180px;
  496. padding: 20px;
  497. background: #fff;
  498. min-height: calc(100vh - 173px);
  499. margin-bottom: 15px;
  500. .record {
  501. padding-top: 20px;
  502. }
  503. }
  504. .record_content_panel {
  505. border-width: 1px;
  506. border-style: solid;
  507. border-color: #ebeef5;
  508. min-height: 200px;
  509. .title {
  510. font-size: 14px;
  511. font-weight: 500;
  512. color: #909399;
  513. line-height: 44px;
  514. height: 44px;
  515. text-align: center;
  516. border-bottom-width: 1px;
  517. border-bottom-style: solid;
  518. border-bottom-color: #ebeef5;
  519. }
  520. .content {
  521. padding: 12px 15px;
  522. font-size: 15px;
  523. color: gray;
  524. line-height: 22px;
  525. }
  526. }
  527. .new_record_form {
  528. /*/ / padding: 10 px, 25 px;*/
  529. .textarea_panel {
  530. margin-top: 10px;
  531. }
  532. }
  533. </style>
  534. <style>
  535. .el-table td,
  536. .el-table th.is-leaf,
  537. .el-table--border,
  538. .el-table--group {
  539. border-color: #d0d3da;
  540. }
  541. .el-table--border::after,
  542. .el-table--group::after,
  543. .el-table::before {
  544. background-color: #d0d3da;
  545. }
  546. .el-select-dropdown {
  547. max-width: 1000px !important;
  548. }
  549. </style>