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

computer_dialog.vue 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. <template>
  2. <div>
  3. <el-dialog title="透析上机" class="newDialog" :visible.sync="visible" width="854px" :modal-append-to-body="false">
  4. <div class="warnTxt" v-if="showTxt != ''">{{ showTxt }}</div>
  5. <el-form :model="form" label-width="100px">
  6. <el-form-item label="班次" v-if="isShowFiled('班次')">
  7. <el-select v-model="schedual_type" placeholder="请选择班次" @change="changeSchedualType">
  8. <el-option v-for="(item, index) in schedules_type" :key="index" :value="item.id"
  9. :label="item.name"></el-option>
  10. </el-select>
  11. </el-form-item>
  12. <el-form-item label="上机床位" v-if="isShowFiled('上机床位')">
  13. <el-select v-model="form.bed_id" placeholder="请选择上机床位">
  14. <el-option v-for="(bed, index) in zone_beds" :key="index" :value="bed.id" :label="bed.number"></el-option>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item label="上机护士" v-if="isShowFiled('上机护士')">
  18. <el-select v-model="form.nurse_id" placeholder="请选择上机护士">
  19. <el-option v-for="(admin, index) in admins" :key="index" :value="admin.id" :label="admin.name"></el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="穿刺者" v-if="isShowFiled('穿刺者')">
  23. <el-select v-model="form.puncture_nurse_id" placeholder="请选择穿刺护士">
  24. <el-option v-for="(admin, index) in adminRoles" :key="index" :value="admin.id" :label="admin.name"></el-option>
  25. </el-select>
  26. </el-form-item>
  27. <el-form-item label="换药护士" v-if="isShowFiled('换药护士')">
  28. <el-select v-model="form.change_nurse" placeholder="换药护士">
  29. <el-option v-for="(admin, index) in adminRoles" :key="index" :value="admin.id" :label="admin.name"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="冲管护士" v-if="isShowFiled('冲管护士')">
  33. <el-select v-model="form.washpipe_nurse" placeholder="请选择冲管护士">
  34. <el-option v-for="(admin, index) in admins" :key="index" :value="admin.id" :label="admin.name"></el-option>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item label="疑难穿刺护士" v-if="isShowFiled('疑难穿刺护士')">
  38. <el-select v-model="form.difficult_puncture_nurse" placeholder="请选择疑难穿刺护士">
  39. <el-option v-for="(admin, index) in adminRoles" :key="index" :value="admin.id" :label="admin.name"></el-option>
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item label="新开瘘护士" v-if="isShowFiled('新开瘘护士')">
  43. <el-select v-model="form.new_fistula_nurse" placeholder="请选择新开瘘护士">
  44. <el-option v-for="(admin, index) in adminRoles" :key="index" :value="admin.id" :label="admin.name"></el-option>
  45. </el-select>
  46. </el-form-item>
  47. <el-form-item label="引血(ml/min)" v-if="isShowFiled('引血')">
  48. <el-input type="number" v-model="form.blood_drawing" style="width:200px;"></el-input>
  49. </el-form-item>
  50. <el-form-item label="上机时间 :" style="width:300px" v-if="isShowFiled('上机时间')">
  51. <el-date-picker
  52. type="datetime"
  53. format="yyyy-MM-dd HH:mm"
  54. value-format="yyyy-MM-dd HH:mm"
  55. placeholder="选择时间"
  56. v-model="form.start_time"
  57. style="width:100%;"
  58. ></el-date-picker>
  59. </el-form-item>
  60. <el-form-item>
  61. <el-button v-if="dialysis_order.id == 0" @click="submit" type="primary" :loading="loading">执行上机</el-button>
  62. <el-button v-else type="info" :disabled="true">已上机</el-button>
  63. <el-button
  64. v-if="dialysis_order.id > 0"
  65. type="primary" @click="editOrder">修改上机
  66. </el-button>
  67. </el-form-item>
  68. </el-form>
  69. </el-dialog>
  70. </div>
  71. </template>
  72. <script>
  73. import axios from 'axios'
  74. import { GetSchedualNumber, PostModifyStartDialysis, startDialysis } from '@/api/dialysis_record'
  75. import { parseTime } from '@/utils'
  76. import store from '@/store'
  77. import request from '@/utils/request'
  78. export default {
  79. name: 'ComputerDialog',
  80. data() {
  81. return {
  82. showTxt:'',
  83. hasPermission:true,
  84. zone_beds: [],
  85. visible: false,
  86. loading: false,
  87. template_id: 0,
  88. patient_id: 0,
  89. schedule_date: 0,
  90. start_time: 0,
  91. creator: 0,
  92. form: {
  93. washpipe_nurse:'',
  94. bed_id: '',
  95. nurse_id: '',
  96. start_time: '',
  97. puncture_nurse_id: '',
  98. blood_drawing: 100,
  99. change_nurse:"",
  100. difficult_puncture_nurse:"",
  101. new_fistula_nurse:"",
  102. },
  103. schedual_type: 0,
  104. schedules_type: [
  105. { id: 1, name: '上午' },
  106. { id: 2, name: '下午' },
  107. { id: 3, name: '晚上' }
  108. ], // 该排班的区里的床位
  109. isPremission: false,
  110. adminRoles:[{id:0,name:"请选择"}],
  111. org_id:0
  112. }
  113. },
  114. props: {
  115. dialysis_order: {
  116. type: Object
  117. },
  118. schedule: {
  119. type: Object
  120. },
  121. admins: {
  122. type: Array
  123. },
  124. device_numbers: {
  125. type: Array
  126. },
  127. special_premission: {
  128. type: Array
  129. },
  130. patient:{
  131. type: Object
  132. }
  133. }, mounted() {
  134. },
  135. created() {
  136. this.template_id = this.$store.getters.xt_user.template_info.template_id
  137. this.org_id = this.$store.getters.xt_user.template_info.org_id
  138. this.patient_id = this.$route.query.patient_id
  139. this.schedule_date = this.$route.query.date
  140. this.form.nurse_id = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.start_nurse
  141. this.form.puncture_nurse_id = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.puncture_nurse
  142. this.form.washpipe_nurse = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.washpipe_nurse
  143. if (this.form.puncture_nurse_id == 0) {
  144. this.form.puncture_nurse_id = this.$store.getters.xt_user.user.id
  145. }
  146. },
  147. watch: {
  148. patient:{
  149. handler(newVal){
  150. this.patient_id = newVal.id
  151. },
  152. deep:true
  153. },
  154. 'schedule.id': function() {
  155. },
  156. 'dialysis_order.id': function() {
  157. this.form.nurse_id = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.start_nurse
  158. this.form.puncture_nurse_id = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.puncture_nurse
  159. this.form.washpipe_nurse = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.washpipe_nurse
  160. this.form.change_nurse = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id : this.dialysis_order.change_nurse
  161. this.form.difficult_puncture_nurse = this.dialysis_order.id == 0 ? this.$store.getters.xt_user.user.id:this.dialysis_order.difficult_puncture_nurse
  162. this.form.new_fistula_nurse = this.dialysis_order.id ==0?this.$store.getters.xt_user.user.id:this.dialysis_order.new_fistula_nurse
  163. var nowDate = new Date()
  164. var nowYear = nowDate.getFullYear()
  165. var nowMonth = nowDate.getMonth() + 1
  166. var nowDay = nowDate.getDate()
  167. var nowHours = nowDate.getHours()
  168. var nowMinutes = nowDate.getMinutes()
  169. var nowSeconds = nowDate.getSeconds()
  170. var time =
  171. nowYear +
  172. '-' +
  173. (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
  174. '-' +
  175. (nowDay < 10 ? '0' + nowDay : nowDay) + ' ' + (nowHours < 10 ? '0' + nowHours : nowHours) + ':' + (nowMinutes < 10 ? '0' + nowMinutes : nowMinutes)
  176. this.form.start_time = this.dialysis_order.id == 0 ? time : this.getTime(this.dialysis_order.start_time, '{y}-{m}-{d} {h}:{i}')
  177. },
  178. admins:function(){
  179. console.log("admins",this.admins)
  180. if(this.admins.length > 0 ){
  181. for(let i=0;i<this.admins.length;i++){
  182. this.adminRoles.push(this.admins[i])
  183. }
  184. }
  185. console.log("人员",this.adminRoles)
  186. }
  187. },
  188. computed: {},
  189. methods: {
  190. isShowFiled(name) {
  191. var filedList = store.getters.xt_user.fileds
  192. for (let i = 0; i < filedList.length; i++) {
  193. if (filedList[i].module == 7 && filedList[i].filed_name_cn == name && filedList[i].is_show == 1) {
  194. return true
  195. }
  196. }
  197. return false
  198. },
  199. changeSchedualType: function(schedual_type) {
  200. let ParamsQuery = {}
  201. ParamsQuery['schedual_type'] = schedual_type
  202. ParamsQuery['record_date'] = this.$route.query.date
  203. GetSchedualNumber(ParamsQuery).then(response => {
  204. if (response.data.state == 0) {
  205. return false
  206. } else {
  207. this.temp_device_numbers = response.data.data.number
  208. for (let index = 0; index < this.temp_device_numbers.length; index++) {
  209. const device_number = this.temp_device_numbers[index]
  210. this.temp_device_numbers[index]['number'] = device_number['zone_name'] + '-' + device_number['number']
  211. }
  212. this.zone_beds = this.temp_device_numbers
  213. this.form.bed_id = this.zone_beds[0].id
  214. }
  215. })
  216. },
  217. GetSchedualNumber: function() {
  218. let ParamsQuery = {}
  219. ParamsQuery['schedual_type'] = this.schedual_type
  220. ParamsQuery['record_date'] = this.$route.query.date
  221. console.log("列表33333333333333333333",ParamsQuery)
  222. // console.log("路由",this.$route.query.date)
  223. GetSchedualNumber(ParamsQuery).then(response => {
  224. if (response.data.state == 0) {
  225. this.$message.error(response.data.msg)
  226. return false
  227. } else {
  228. this.temp_device_numbers = response.data.data.number
  229. for (let index = 0; index < this.temp_device_numbers.length; index++) {
  230. const device_number = this.temp_device_numbers[index]
  231. this.temp_device_numbers[index]['number'] = device_number['zone_name'] + '-' + device_number['number']
  232. }
  233. this.zone_beds = this.temp_device_numbers
  234. this.form.bed_id = this.dialysis_order.id == 0 ? this.schedule.bed_id : this.dialysis_order.bed_id
  235. if (this.dialysis_order.id == 0) {
  236. let isFilter = true
  237. for (let i = 0; i < this.zone_beds.length; i++) {
  238. if (this.zone_beds[i].id == this.schedule.bed_id) {
  239. isFilter = false
  240. }
  241. }
  242. if (isFilter) {
  243. this.form.bed_id = this.zone_beds[0].id
  244. }
  245. } else {
  246. for (let i = 0; i < this.device_numbers.length; i++) {
  247. if (this.device_numbers[i].id == this.dialysis_order.bed_id) {
  248. let obj = {}
  249. obj = this.device_numbers[i]
  250. if (obj['number'].indexOf(this.device_numbers[i]['zone_name']) == -1) {
  251. obj['number'] = this.device_numbers[i]['zone_name'] + '-' + this.device_numbers[i]['number']
  252. }
  253. this.zone_beds.unshift(obj)
  254. this.zone_beds.sort((a, b) => a.id - b.id)
  255. }
  256. }
  257. }
  258. }
  259. })
  260. },
  261. getTime(value, temp) {
  262. if (value != undefined) {
  263. return parseTime(value, temp)
  264. }
  265. return ''
  266. },
  267. show: function(dialysis) {
  268. this.record = dialysis
  269. console.log("上机",dialysis)
  270. this.getPermission()
  271. this.visible = true
  272. var nowDate = new Date()
  273. var nowYear = nowDate.getFullYear()
  274. var nowMonth = nowDate.getMonth() + 1
  275. var nowDay = nowDate.getDate()
  276. var nowHours = nowDate.getHours()
  277. var nowMinutes = nowDate.getMinutes()
  278. var nowSeconds = nowDate.getSeconds()
  279. if (this.dialysis_order.id != 0) {
  280. this.form.start_time = this.getTime(this.dialysis_order.start_time, '{y}-{m}-{d} {h}:{i}')
  281. } else {
  282. this.form.start_time =
  283. nowYear +
  284. '-' +
  285. (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
  286. '-' +
  287. (nowDay < 10 ? '0' + nowDay : nowDay) + ' ' + (nowHours < 10 ? '0' + nowHours : nowHours) + ':' + (nowMinutes < 10 ? '0' + nowMinutes : nowMinutes)
  288. }
  289. if (this.dialysis_order.id == 0) {
  290. let now = new Date()
  291. let hour = now.getHours()
  292. if (hour >= 6 && hour < 12) {
  293. this.schedual_type = 1
  294. } else if (hour >= 12 && hour < 18) {
  295. this.schedual_type = 2
  296. } else if (hour >= 18) {
  297. this.schedual_type = 3
  298. }
  299. } else {
  300. this.schedual_type = this.dialysis_order.schedual_type
  301. }
  302. if (this.dialysis_order.id > 0) {
  303. if (this.dialysis_order.creator == 0) {
  304. this.creator = this.dialysis_order.start_nurse
  305. } else {
  306. this.creator = this.dialysis_order.creator
  307. }
  308. }
  309. this.GetSchedualNumber()
  310. },
  311. hide: function() {
  312. this.visible = false
  313. },
  314. submit: function() {
  315. if (this.form.start_time == '' || this.form.start_time == null) {
  316. this.$message.error('开始时间不能为空')
  317. return
  318. }
  319. console.log(this.dialysis_order)
  320. this.loading = true
  321. let mode = '1'
  322. var blood_drawing = this.form.blood_drawing.toString()
  323. startDialysis(this.patient_id, this.schedule_date ? parseTime(this.schedule_date, '{y}-{m}-{d}') : parseTime(new Date(), '{y}-{m}-{d}'), this.form.nurse_id, this.form.bed_id, this.form.lood_drawing, this.form.puncture_nurse_id, this.form.start_time, this.schedual_type, mode,this.form.washpipe_nurse,this.form.change_nurse,this.form.difficult_puncture_nurse,this.form.new_fistula_nurse,blood_drawing).then(rs => {
  324. this.loading = false
  325. var resp = rs.data
  326. if (resp.state == 1) {
  327. var resp_dialysis_order = resp.data.dialysis_order
  328. var this_order = this.dialysis_order
  329. for (const key in resp_dialysis_order) {
  330. this.$set(this_order, key, resp_dialysis_order[key])
  331. }
  332. let orgId = parseInt(sessionStorage.getItem("org_id"));
  333. // axios.get('/api/index/uppatient?org_id='+ orgId + '&admin_user_id='+ this.form.nurse_id + '&patient_id=' + this.patient_id + '&up_time=' + (new Date(this.form.start_time).getTime() / 1000)).then((res) => {
  334. // console.log('res',res.data)
  335. // })
  336. this.hide()
  337. this.$emit('monitor', resp.data.monitor)
  338. this.$message.success('上机成功')
  339. } else {
  340. this.$message.error(resp.msg)
  341. }
  342. })
  343. },
  344. editOrder() {
  345. let ParamsQuery = {}
  346. ParamsQuery['schedual_type'] = this.schedual_type
  347. ParamsQuery['id'] = this.dialysis_order.id
  348. ParamsQuery['nurse'] = this.form.nurse_id
  349. ParamsQuery['bed'] = this.form.bed_id
  350. ParamsQuery['start_time'] = this.form.start_time
  351. ParamsQuery['puncture_nurse'] = this.form.puncture_nurse_id
  352. ParamsQuery['washpipe_nurse'] = this.form.washpipe_nurse
  353. ParamsQuery['change_nurse'] = this.form.change_nurse
  354. ParamsQuery['difficult_puncture_nurse'] = this.form.difficult_puncture_nurse
  355. ParamsQuery['new_fistula_nurse'] = this.form.new_fistula_nurse
  356. ParamsQuery["blood_drawing"] = this.form.blood_drawing
  357. ParamsQuery['mode'] = "2"
  358. if (this.dialysis_order.creator != this.$store.getters.xt_user.user.id) {
  359. ParamsQuery['mode'] = "3"
  360. }
  361. PostModifyStartDialysis(ParamsQuery).then(rs => {
  362. var resp = rs.data
  363. if (resp.state == 1) {
  364. this.$message.success('修改成功')
  365. var resp_dialysis_order = resp.data.dialysis_order
  366. var this_order = this.dialysis_order
  367. for (const key in resp_dialysis_order) {
  368. this.$set(this_order, key, resp_dialysis_order[key])
  369. this.$emit('assessmentAfterDislysis', resp.data.after)
  370. }
  371. } else {
  372. this.$message.error(resp.msg)
  373. }
  374. })
  375. },
  376. getPermission(){
  377. request.get("/api/func_per/get",{
  378. params:{
  379. create_url:"/api/dialysis/start_record?mode=1",
  380. modify_url:"/api/start_dialysis/modify?mode=2",
  381. modify_other_url:"/api/start_dialysis/modify?mode=3",
  382. module:0
  383. }
  384. }).then(res => {
  385. console.log(res)
  386. console.log("上机",this.record)
  387. if(res.data.state == 0){
  388. this.hasPermission = false
  389. }else if(res.data.state == 1){
  390. if(this.record.id != "" && this.record.creater != 0){//有数据
  391. if(this.record.creater == this.$store.getters.xt_user.user.id){//创建人是自己
  392. if(res.data.data.is_has_modify == false){
  393. this.hasPermission = false
  394. this.showTxt = "你没有修改执行上机权限"
  395. }
  396. }else{//创建人不是自己
  397. if(res.data.data.is_has_modify_other == false){
  398. this.hasPermission = false
  399. this.showTxt = "你没有修改他人执行上机权限"
  400. }
  401. }
  402. }else if(this.record.id == "" || this.record.creater == 0){
  403. if(res.data.data.is_has_create == false){
  404. this.hasPermission = false
  405. this.showTxt = "你没有执行上机权限"
  406. }
  407. }
  408. }
  409. })
  410. }
  411. }
  412. }
  413. </script>
  414. <style scoped>
  415. .txsj {
  416. text-align: center;
  417. margin-bottom: 20px;
  418. }
  419. .warnTxt{
  420. text-align: center;
  421. margin: 0 auto;
  422. background: #faa331;
  423. max-width: 240px;
  424. padding: 10px 20px;
  425. border-radius: 4px;
  426. margin-bottom: 10px;
  427. color:#fff;
  428. }
  429. </style>
  430. <style lang="scss">
  431. .newDialog{
  432. .el-dialog__body{
  433. padding: 10px 20px 30px;
  434. }
  435. }
  436. </style>