lapsoSummary.vue 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. <template>
  2. <div class="patient-container">
  3. <patient-sidebar :id="patientID" defaultActive="1-12" v-on:tran-patient="onTranPatient"></patient-sidebar>
  4. <div class="patient-app-container advice-container app-container">
  5. <div style="display:flex;justify-content: space-between;align-items: center;margin-bottom: 12px;">
  6. <span style="font-weight:bold;">转归记录列表</span>
  7. <el-button size="medium" type="primary" @click="dialogVisible =true">新增</el-button>
  8. </div>
  9. <el-table class="oictable" :data="tableData" border style="width:100%">
  10. <el-table-column prop="start_time" label="转出日期" align="center">
  11. <template slot-scope="scope">
  12. <span>{{ getTime(scope.row.record_date)}}</span>
  13. </template>
  14. </el-table-column>
  15. <el-table-column prop="blood_access_part_opera_id" label="转归类型" align="center">
  16. <template slot-scope="scope">
  17. <span v-if="scope.row.lapse_type == 1">转出</span>
  18. <span v-if="scope.row.lapse_type == 2">院内转诊</span>
  19. </template>
  20. </el-table-column>
  21. <el-table-column prop="blood_access_part_id" label="转归分类" align="center">
  22. <template slot-scope="scope">
  23. <span v-if="scope.row.lapse_class == 1">终止透析</span>
  24. <span v-if="scope.row.lapse_class == 2">转出院外</span>
  25. <span v-if="scope.row.lapse_class == 3">回居住地透析</span>
  26. <span v-if="scope.row.lapse_class == 4">临时透析</span>
  27. <span v-if="scope.row.lapse_class == 5">转腹膜透析</span>
  28. <span v-if="scope.row.lapse_class == 6">其他</span>
  29. <span v-if="scope.row.lapse_class == 7">变更透析医院</span>
  30. </template>
  31. </el-table-column>
  32. <el-table-column prop="inflow_pass" label="转归原因" align="center">
  33. <template slot-scope="scope">
  34. {{ scope.row.lapse_reason }}
  35. </template>
  36. </el-table-column>
  37. <el-table-column prop="date" label="备注" align="center">
  38. <template slot-scope="scope">
  39. {{ scope.row.remark }}
  40. </template>
  41. </el-table-column>
  42. <el-table-column prop="date" label="操作" align="center">
  43. <template slot-scope="scope">
  44. <el-tooltip class="item" effect="dark" content="编辑" placement="top">
  45. <el-button
  46. type="primary"
  47. size="small"
  48. icon="el-icon-edit-outline"
  49. @click="handleUpdateAdviceTemplate(scope.row.id)"
  50. >
  51. </el-button>
  52. </el-tooltip>
  53. <el-tooltip class="item" effect="dark" content="删除" placement="top">
  54. <el-button
  55. size="small"
  56. type="danger"
  57. icon="el-icon-delete"
  58. @click="handleDeleteAdviceTemplate(scope.row.id, scope.$index)"
  59. >
  60. </el-button>
  61. </el-tooltip>
  62. </template>
  63. </el-table-column>
  64. </el-table>
  65. <el-pagination
  66. @size-change="handleSizeChange"
  67. @current-change="handleCurrentChange"
  68. :page-sizes="[10,20,50,100]"
  69. :page-size="10"
  70. background
  71. style="margin-top:20px;"
  72. align="right"
  73. layout="total, sizes, prev, pager, next, jumper"
  74. :total="total"></el-pagination>
  75. <el-dialog
  76. title="新增"
  77. :visible.sync="dialogVisible"
  78. width="65%"
  79. center>
  80. <el-form label-width="150px" :model="form" ref="form" :rules="rules" >
  81. <el-row :gutter="24">
  82. <el-col :span="24">
  83. <el-form-item label="透析号:" >
  84. <el-input style="width:200px" v-model="dialysis_no" :disabled="true"></el-input>
  85. </el-form-item>
  86. </el-col>
  87. </el-row>
  88. <el-row :gutter="24" >
  89. <el-col :span="24">
  90. <el-form-item label="姓名:">
  91. <el-input style="width:200px" v-model="name" :disabled="true"></el-input>
  92. </el-form-item>
  93. </el-col>
  94. </el-row>
  95. <el-row :gutter="24">
  96. <el-col :span="24">
  97. <el-form-item label="转归类型:">
  98. <el-radio-group style="padding: 10px;" v-model="lapse_type">
  99. <el-radio label="1">转出</el-radio>
  100. <el-radio label="2">院内转诊</el-radio>
  101. </el-radio-group>
  102. </el-form-item>
  103. </el-col>
  104. </el-row>
  105. <el-row :gutter="24">
  106. <el-col :span="24">
  107. <el-form-item label="转归分类:">
  108. <el-radio-group style="padding: 10px;" v-model="lapse_class">
  109. <el-radio label="1">终止透析</el-radio>
  110. <el-radio label="2">转出院外</el-radio>
  111. <el-radio label="3">回居住地透析</el-radio>
  112. <el-radio label="4">临时透析</el-radio>
  113. <el-radio label="5">转腹膜透析</el-radio>
  114. <el-radio label="6">其他</el-radio>
  115. <el-radio label="7">变更透析医院</el-radio>
  116. </el-radio-group>
  117. </el-form-item>
  118. </el-col>
  119. </el-row>
  120. <el-row :gutter="24">
  121. <el-col :span="24">
  122. <el-form-item label="转出原因:">
  123. <el-input style="width: 300px;height: 50px;" type="textarea" v-model="lapse_reason"></el-input>
  124. </el-form-item>
  125. </el-col>
  126. </el-row>
  127. <el-row :gutter="24">
  128. <el-col :span="24">
  129. <el-form-item label="转出日期:">
  130. <el-date-picker
  131. v-model="record_date"
  132. type="date"
  133. value-format="yyyy-MM-dd"
  134. placeholder="选择日期">
  135. </el-date-picker>
  136. </el-form-item>
  137. </el-col>
  138. </el-row>
  139. <el-row :gutter="24">
  140. <el-col :span="24">
  141. <el-form-item label="操作人:">
  142. <el-select v-model="admin_user_id" placeholder="请选择">
  143. <el-option
  144. v-for="item in adminUserList"
  145. :key="item.admin_user_id"
  146. :label="item.user_name"
  147. :value="item.admin_user_id">
  148. </el-option>
  149. </el-select>
  150. </el-form-item>
  151. </el-col>
  152. </el-row>
  153. <el-row :gutter="24">
  154. <el-col :span="24">
  155. <el-form-item label="备注:">
  156. <el-input style="width: 300px;height: 50px;" type="textarea" v-model="remark"></el-input>
  157. </el-form-item>
  158. </el-col>
  159. </el-row>
  160. </el-form>
  161. <span slot="footer" class="dialog-footer">
  162. <el-button @click="dialogVisible = false">取 消</el-button>
  163. <el-button type="primary" @click="savePatientLapse('form')">保存</el-button>
  164. </span>
  165. </el-dialog>
  166. <el-dialog
  167. title="编辑"
  168. :visible.sync="editDialogVisible"
  169. width="65%"
  170. center>
  171. <el-form label-width="150px" :model="form" ref="form" :rules="rules" >
  172. <el-row :gutter="24">
  173. <el-col :span="24">
  174. <el-form-item label="透析号:" >
  175. <el-input style="width:200px" v-model="dialysis_no" :disabled="true"></el-input>
  176. </el-form-item>
  177. </el-col>
  178. </el-row>
  179. <el-row :gutter="24" >
  180. <el-col :span="24">
  181. <el-form-item label="姓名:">
  182. <el-input style="width:200px" v-model="name" :disabled="true"></el-input>
  183. </el-form-item>
  184. </el-col>
  185. </el-row>
  186. <el-row :gutter="24">
  187. <el-col :span="24">
  188. <el-form-item label="转归类型:">
  189. <el-radio-group style="padding: 10px;" v-model="lapse_type">
  190. <el-radio label="1">转出</el-radio>
  191. <el-radio label="2">院内转诊</el-radio>
  192. </el-radio-group>
  193. </el-form-item>
  194. </el-col>
  195. </el-row>
  196. <el-row :gutter="24">
  197. <el-col :span="24">
  198. <el-form-item label="转归分类:">
  199. <el-radio-group style="padding: 10px;" v-model="lapse_class">
  200. <el-radio label="1">终止透析</el-radio>
  201. <el-radio label="2">转出院外</el-radio>
  202. <el-radio label="3">回居住地透析</el-radio>
  203. <el-radio label="4">临时透析</el-radio>
  204. <el-radio label="5">转腹膜透析</el-radio>
  205. <el-radio label="6">其他</el-radio>
  206. <el-radio label="7">变更透析医院</el-radio>
  207. </el-radio-group>
  208. </el-form-item>
  209. </el-col>
  210. </el-row>
  211. <el-row :gutter="24">
  212. <el-col :span="24">
  213. <el-form-item label="转出原因:">
  214. <el-input style="width: 300px;height: 50px;" type="textarea" v-model="lapse_reason"></el-input>
  215. </el-form-item>
  216. </el-col>
  217. </el-row>
  218. <el-row :gutter="24">
  219. <el-col :span="24">
  220. <el-form-item label="转出日期:">
  221. <el-date-picker
  222. v-model="record_date"
  223. type="date"
  224. value-format="yyyy-MM-dd"
  225. placeholder="选择日期">
  226. </el-date-picker>
  227. </el-form-item>
  228. </el-col>
  229. </el-row>
  230. <el-row :gutter="24">
  231. <el-col :span="24">
  232. <el-form-item label="操作人:">
  233. <el-select v-model="admin_user_id" placeholder="请选择">
  234. <el-option
  235. v-for="item in adminUserList"
  236. :key="item.admin_user_id"
  237. :label="item.user_name"
  238. :value="item.admin_user_id">
  239. </el-option>
  240. </el-select>
  241. </el-form-item>
  242. </el-col>
  243. </el-row>
  244. <el-row :gutter="24">
  245. <el-col :span="24">
  246. <el-form-item label="备注:">
  247. <el-input style="width: 300px;height: 50px;" type="textarea" v-model="remark"></el-input>
  248. </el-form-item>
  249. </el-col>
  250. </el-row>
  251. </el-form>
  252. <span slot="footer" class="dialog-footer">
  253. <el-button @click="editDialogVisible = false">取 消</el-button>
  254. <el-button type="primary" @click="updatePatientLapse('form')">保存</el-button>
  255. </span>
  256. </el-dialog>
  257. </div>
  258. </div>
  259. </template>
  260. <script>
  261. const moment = require('moment')
  262. import PatientSidebar from './components/PatientSidebar'
  263. import { savePatientLapse,getAllDoctor,deletePatientLapsoRrecord,getPatientById,getPatientLapseRecord,getPatientLapsoSummary,updatePatientLapseRecord} from '@/api/patient'
  264. import { jsGetAge, uParseTime } from '@/utils/tools'
  265. import { getDataConfig } from '@/utils/data'
  266. import multiSelectBox from '../dialysis/details/dialog/MultiSelectBox'
  267. import sitemap from './Sitemap'
  268. export default {
  269. name: 'doctorAdvice',
  270. components: {
  271. PatientSidebar,
  272. multiSelectBox,
  273. sitemap
  274. },
  275. data() {
  276. return {
  277. tableData: [],
  278. nowtime: moment(new Date()).format('YYYY-MM-DD'),
  279. page: 1,
  280. limit: 10,
  281. total: 0,
  282. rules: {
  283. start_time: [{ required: true, message: '请输入建立日期' }],
  284. access_project: [{ required: true, message: '请选择通路项目' }],
  285. blood_access_part_opera_id:[{required:true,message:'请选择血管通路类型'}],
  286. blood_access_part_id:[{required:true,message:"请选择血管通路"}],
  287. // first_start_time:[{required:true,message:"请选择首次启用日期"}],
  288. user_status:[{required:true,message:"请选择使用状态"}]
  289. },
  290. dialogVisible:false,
  291. editDialogVisible:false,
  292. form:{
  293. id:0,
  294. access_project:"1",
  295. blood_access_part_id:"",
  296. blood_access_part_opera_id:"",
  297. inflow_pass:"",
  298. start_time:moment(new Date()).format('YYYY-MM-DD'),
  299. first_start_time:moment(new Date()).format('YYYY-MM-DD'),
  300. stop_reason:"",
  301. user_status:1,
  302. remark:"",
  303. stop_time:"",
  304. other_vascular:"",
  305. ci_type:"",//导管感染转归
  306. blood_cultupe:"", //血培养检查结果
  307. sequelae_type:"",//患者导管转归类型
  308. },
  309. options:[
  310. {id:1,name:"启用"},
  311. {id:2,name:"停用"},
  312. {id:3,name:"备用"}
  313. ],
  314. optionsPass:[
  315. {id:1,name:"流入-动脉"},
  316. {id:2,name:"流出-静脉"},
  317. ],
  318. blood_access_part_opera:[],
  319. blood_access_part:[],
  320. show:false,
  321. doctorList:[],
  322. InnerDialogProps: {
  323. values: [],
  324. visibility: false,
  325. isShowTextArea: true,
  326. customContent: '',
  327. titles: '',
  328. type: '' // 不同弹框类型,用来匹配数据
  329. },
  330. new_blood_access_part_opera:[],
  331. new_blood_access_part:[],
  332. // 导管感染类型
  333. optionsOne:[
  334. {id:1,name:"局部感染"},
  335. {id:2,name:"静脉炎"},
  336. {id:3,name:"导管细菌定植"},
  337. {id:4,name:"导管相关血型感染"},
  338. ],
  339. // 导管转归类型
  340. optionsTwo:[
  341. {id:1,name:"拔管"},
  342. {id:2,name:"治愈"},
  343. {id:3,name:"死亡"},
  344. {id:4,name:"放弃"},
  345. {id:9,name:"其它"},
  346. ],
  347. // 血培养检查结果
  348. optionsThree:[
  349. {id:0,name:"阴性"},
  350. {id:1,name:"阳性"},
  351. {id:9,name:"未查"}
  352. ],
  353. showOne:false,
  354. name:"",
  355. dialysis_no:"",
  356. lapse_type:"1",
  357. lapse_class:"1",
  358. lapse_reason:"",
  359. record_date:"",
  360. remark:"",
  361. adminUserList:[],
  362. limit:10,
  363. page:1,
  364. total:0,
  365. id:0,
  366. admin_user_id:this.$store.getters.xt_user.user.id
  367. }
  368. },
  369. methods: {
  370. clickuseradvicecell(row, column, cell, event) {
  371. },
  372. onTranPatient: function(tranPatient) {
  373. this.currentPatient = tranPatient
  374. },
  375. CreateTime(time) {
  376. return uParseTime(time, '{y}-{m}-{d} {h}:{i}:{s}')
  377. },
  378. handleSizeChange(limit) {
  379. this.limit = limit
  380. this.getlist()
  381. },
  382. handleCurrentChange(page) {
  383. this.page = page
  384. this.getlist()
  385. },
  386. changeStatus(val){
  387. if(val == 1 ){
  388. this.show = false
  389. }
  390. if(val == 2){
  391. this.show = true
  392. }
  393. },
  394. getTime(val) {
  395. if(val < 0){
  396. return ""
  397. }
  398. if(val == ""){
  399. return ""
  400. }else {
  401. return uParseTime(val, '{y}-{m}-{d}')
  402. }
  403. },
  404. getDoctor(id){
  405. var name = ""
  406. for(let i=0;i<this.doctorList.length;i++){
  407. if(id == this.doctorList[i].admin_user_id){
  408. name = this.doctorList[i].user_name
  409. }
  410. }
  411. return name
  412. },
  413. getPatientById(id){
  414. getPatientById(id).then(response=>{
  415. if(response.data.state ==1){
  416. var patient = response.data.data.patients
  417. this.dialysis_no = patient.dialysis_no
  418. this.name = patient.name
  419. }
  420. })
  421. },
  422. getAllDoctor() {
  423. getAllDoctor().then(response => {
  424. if (response.data.state == 1) {
  425. var appRole = response.data.data.appRole
  426. this.adminUserList = appRole
  427. }
  428. })
  429. },
  430. savePatientLapse(){
  431. var params = {
  432. patient_id:this.patientID,
  433. lapse_type:parseInt(this.lapse_type),
  434. lapse_class:parseInt(this.lapse_class),
  435. lapse_reason:this.lapse_reason,
  436. record_date:this.record_date,
  437. admin_user_id:this.admin_user_id,
  438. remark:this.remark,
  439. }
  440. console.log("params=====",params)
  441. savePatientLapse(params).then(response=>{
  442. if(response.data.state==1){
  443. var record = response.data.data.record
  444. this.$message.success("保存成功!")
  445. this.dialogVisible = false
  446. this.remark = ""
  447. this.lapse_reason = ""
  448. this.getlist()
  449. }
  450. })
  451. },
  452. getlist(){
  453. var params = {
  454. patient_id:this.patientID,
  455. limit:this.limit,
  456. page:this.page,
  457. }
  458. getPatientLapseRecord(params).then(response=>{
  459. if(response.data.state == 1){
  460. var total = response.data.data.total
  461. this.total = total
  462. var record = response.data.data.record
  463. this.tableData = record
  464. }
  465. })
  466. },
  467. handleUpdateAdviceTemplate(id){
  468. getPatientLapsoSummary(id).then(response=>{
  469. if(response.data.state == 1){
  470. var lapsorecord = response.data.data.lapsorecord
  471. console.log("lapsorecord",lapsorecord)
  472. this.lapse_type = lapsorecord.lapse_type.toString()
  473. this.lapse_class = lapsorecord.lapse_class.toString()
  474. this.lapse_reason = lapsorecord.lapse_reason
  475. this.record_date = this.getTime(lapsorecord.record_date)
  476. this.remark = lapsorecord.remark
  477. this.admin_user_id = lapsorecord.admin_user_id
  478. this.id = lapsorecord.id
  479. this.editDialogVisible = true
  480. }
  481. })
  482. },
  483. updatePatientLapse(){
  484. var params = {
  485. patient_id:this.patientID,
  486. lapse_type:parseInt(this.lapse_type),
  487. lapse_class:parseInt(this.lapse_class),
  488. lapse_reason:this.lapse_reason,
  489. record_date:this.record_date,
  490. admin_user_id:this.admin_user_id,
  491. remark:this.remark,
  492. id:this.id,
  493. }
  494. updatePatientLapseRecord(params).then(response=>{
  495. if(response.data.state== 1){
  496. var record = response.data.data.record
  497. this.editDialogVisible = false
  498. this.$message.success("保存成功!")
  499. this.getlist()
  500. }
  501. })
  502. },
  503. handleDeleteAdviceTemplate(id,index){
  504. deletePatientLapsoRrecord(id).then(response=>{
  505. if(response.data.state==1){
  506. var msg = response.data.data.msg
  507. this.$message.success("保存成功")
  508. this.tableData.splice(index,1)
  509. }
  510. })
  511. }
  512. },
  513. created() {
  514. this.record_date = moment(new Date()).format('YYYY-MM-DD')
  515. const id = this.$route.params && this.$route.params.id
  516. console.log('id是设么', id)
  517. this.patientID = parseInt(id)
  518. this.getPatientById(id)
  519. this.getAllDoctor()
  520. this.getlist()
  521. },
  522. }
  523. </script>
  524. <style>
  525. .oictable ::-webkit-scrollbar {
  526. height: 15px;
  527. }
  528. </style>
  529. <style rel="stylesheet/scss" lang="scss">
  530. ::-webkit-scrollbar{
  531. height:15px;
  532. }
  533. </style>