血透系统PC前端

One.vue 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641
  1. <template>
  2. <div class="app-container ">
  3. <div class="basicInfo">
  4. <div class="headline">基本资料</div>
  5. <div class="information">
  6. <div class="row">
  7. <div class="rowOne">
  8. <p class="rowName">首次诊治时间:</p>
  9. <el-input placeholder="请输入内容" v-model="form.first_treatment_date" :disabled="true">
  10. </el-input>
  11. <div class="btn" v-clipboard:copy="form.first_treatment_date"
  12. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  13. </div>
  14. <div class="rowOne">
  15. <p class="rowName1">
  16. 首次肾脏替代治疗时间 :
  17. </p>
  18. <el-input placeholder="请输入内容" v-model="form.firstDialysisDate" :disabled="true">
  19. </el-input>
  20. <div class="btn" v-clipboard:copy="form.firstDialysisDate"
  21. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  22. </div>
  23. <div class="rowOne">
  24. <p class="rowName">创建者:</p>
  25. <el-input placeholder="请输入内容" v-model="form.registrars" :disabled="true">
  26. </el-input>
  27. <div class="btn" v-clipboard:copy="form.registrars"
  28. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  29. </div>
  30. <div class="rowOne">
  31. <p class="rowName">创建日期:</p>
  32. <el-input placeholder="请输入内容" v-model="form.create_time" :disabled="true">
  33. </el-input>
  34. <div class="btn" v-clipboard:copy="form.create_time"
  35. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  36. </div>
  37. </div>
  38. <div class="row">
  39. <div class="rowOne">
  40. <p class="rowName">姓名:</p>
  41. <el-input placeholder="请输入内容" v-model="form.name" :disabled="true">
  42. </el-input>
  43. <div class="btn" v-clipboard:copy="form.name"
  44. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  45. </div>
  46. <div class="rowOne">
  47. <p class="rowName">性别:</p>
  48. <div class="radioOne">
  49. <template>
  50. <el-radio v-model="form.gender" label="1">男</el-radio>
  51. <el-radio v-model="form.gender" label="2">女</el-radio>
  52. </template>
  53. </div>
  54. </div>
  55. <div class="rowOne">
  56. <p class="rowName">证件类型:</p>
  57. <el-input placeholder="请输入内容" :disabled="true" v-model="form.id_type">
  58. </el-input>
  59. <div class="btn" v-clipboard:copy="form.id_type"
  60. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  61. </div>
  62. </div>
  63. <div class="row">
  64. <div class="rowOne">
  65. <p class="rowName">身份证号:</p>
  66. <el-input placeholder="请输入内容" style="width: 200px;" v-model="form.idCardNo" :disabled="true">
  67. </el-input>
  68. <div class="btn" v-clipboard:copy="form.idCardNo"
  69. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  70. </div>
  71. </div>
  72. <div class="row">
  73. <div class="rowOne">
  74. <p class="rowName">民族:</p>
  75. <el-input placeholder="请输入内容" v-model="form.nation" :disabled="true">
  76. </el-input>
  77. </div>
  78. <div class="rowOne">
  79. <p class="rowName">
  80. 婚姻状况:
  81. </p>
  82. <el-input placeholder="请输入内容" :disabled="true" v-model="form.maritalStatus">
  83. </el-input>
  84. </div>
  85. <div class="rowOne">
  86. <p class="rowName">年龄:</p>
  87. <el-input placeholder="请输入内容" v-model="form.age" :disabled="true">
  88. </el-input>
  89. <div class="btn" v-clipboard:copy="form.age"
  90. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  91. </div>
  92. <div class="rowOne">
  93. <p class="rowName">出生日期:</p>
  94. <el-input placeholder="请输入内容" v-model="form.birth" :disabled="true">
  95. </el-input>
  96. </div>
  97. </div>
  98. <div class="row">
  99. <div class="rowOne">
  100. <p class="rowName">教育程度:</p>
  101. <el-input placeholder="请输入内容" style="width: 270px;" v-model="form.education" :disabled="true">
  102. </el-input>
  103. </div>
  104. <div class="rowOne">
  105. <p class="rowName">
  106. 职业:
  107. </p>
  108. <el-input placeholder="请输入内容" style="width: 270px;" v-model="form.profession" :disabled="true">
  109. </el-input>
  110. </div>
  111. </div>
  112. <div class="row">
  113. <div class="rowOne">
  114. <p class="rowName">门诊号:</p>
  115. <el-input placeholder="请输入内容" v-if="form.source == 1" v-model="form.admissionNumber" :disabled="true">
  116. </el-input>
  117. <el-input placeholder="请输入内容" v-if="form.source == 2" :disabled="true">
  118. </el-input>
  119. <div class="btn" v-clipboard:copy="form.admissionNumber"
  120. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  121. </div>
  122. <div class="rowOne">
  123. <p class="rowName">
  124. 住院号:
  125. </p>
  126. <el-input placeholder="请输入内容" v-if="form.source == 2" v-model="form.admissionNumber" :disabled="true">
  127. </el-input>
  128. <el-input placeholder="请输入内容" v-if="form.source == 1" :disabled="true">
  129. </el-input>
  130. <div class="btn" v-clipboard:copy="form.admissionNumber"
  131. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  132. </div>
  133. <div class="rowOne">
  134. <p class="rowName">透析病案号:</p>
  135. <el-input placeholder="请输入内容" v-model="form.dialysisNo" :disabled="true">
  136. </el-input>
  137. <div class="btn" v-clipboard:copy="form.dialysisNo"
  138. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  139. </div>
  140. <div class="rowOne">
  141. <p class="rowName">透析龄(月):</p>
  142. <el-input placeholder="请输入内容" v-model="form.dialysis_age" :disabled="true">
  143. </el-input>
  144. <div class="btn" v-clipboard:copy="form.dialysis_age"
  145. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  146. </div>
  147. </div>
  148. <div class="row1">
  149. <div class="line">
  150. <p class="rowName">费别:</p>
  151. <div class="radioOne">
  152. <template>
  153. <el-radio v-model="form.expense_kind" label="1">基本医保</el-radio>
  154. <el-radio v-model="form.expense_kind" label="2">新农合</el-radio>
  155. <el-radio v-model="form.expense_kind" label="3">自费医疗</el-radio>
  156. <el-radio v-model="form.expense_kind" label="4">公费医疗</el-radio>
  157. <el-radio v-model="form.expense_kind" label="5">商业保险</el-radio>
  158. <el-radio v-model="form.expense_kind" label="6">军队医疗</el-radio>
  159. <el-radio v-model="form.expense_kind" label="7">其他</el-radio>
  160. </template>
  161. </div>
  162. </div>
  163. </div>
  164. <div class="row1">
  165. <div class="line">
  166. <p class="rowName">通信地址:</p>
  167. <el-input placeholder="请输入内容" :disabled="true">
  168. </el-input
  169. ><el-input placeholder="请输入内容" :disabled="true">
  170. </el-input
  171. ><el-input placeholder="请输入内容" :disabled="true">
  172. </el-input>
  173. </div>
  174. <div class="rowOne">
  175. <p class="rowName">具体地址:</p>
  176. <el-input placeholder="请输入内容" v-model="form.homeAddress" :disabled="true">
  177. </el-input>
  178. <div class="btn" v-clipboard:copy="form.homeAddress"
  179. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  180. </div>
  181. </div>
  182. <div class="row">
  183. <div class="rowOne">
  184. <p class="rowName">联系人姓名:</p>
  185. <el-input placeholder="请输入内容" v-model="form.contact_name" :disabled="true">
  186. </el-input>
  187. <div class="btn" v-clipboard:copy="form.contact_name"
  188. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  189. </div>
  190. <div class="rowTwo">
  191. <p class="rowName1">
  192. 固定电话 &ensp;&ensp;&ensp;&ensp;(电话):
  193. </p>
  194. <el-input placeholder="请输入内容" v-model="form.tell_phone" :disabled="true">
  195. </el-input>
  196. <div class="btn" v-clipboard:copy="form.tell_phone"
  197. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  198. </div>
  199. <div class="rowOne">
  200. <p class="rowName1">
  201. 联系电话 &ensp;&ensp;&ensp;&ensp;(电话):
  202. </p>
  203. <el-input placeholder="请输入内容" v-model="form.homeTelephone" :disabled="true">
  204. </el-input>
  205. <div class="btn" v-clipboard:copy="form.homeTelephone"
  206. v-clipboard:success="onCopy" v-clipboard:error="onError">复制</div>
  207. </div>
  208. </div>
  209. </div>
  210. </div>
  211. </div>
  212. </template>
  213. <script>
  214. import { getDataConfig } from '@/utils/data'
  215. import {
  216. uParseTime
  217. } from '@/utils/tools'
  218. import {
  219. fetchPatient
  220. } from '@/api/patient'
  221. import { fetchAllAdminUsers } from '@/api/doctor'
  222. const defaultForm = {
  223. avatar: '',
  224. patientType: '',
  225. dialysisNo: '',
  226. admissionNumber: '',
  227. source: '',
  228. lapseto: '',
  229. partition: '',
  230. bed: '',
  231. name: '',
  232. gender: '',
  233. nation: '',
  234. native_place: '',
  235. maritalStatus: '',
  236. idCardNo: '',
  237. birth: '',
  238. age: '',
  239. reimbursementWayID: '',
  240. healthCareNo: '',
  241. healthCareDueDate: '',
  242. height: '',
  243. blood: '',
  244. rh: '',
  245. healthCareDueAlertDate: '',
  246. education: '',
  247. profession: '',
  248. phone: '',
  249. homeTelephone: '',
  250. homeAddress: '',
  251. work: '',
  252. receivingDate: '',
  253. firstDialysisDate: '',
  254. dialysisAge: '',
  255. induction: '',
  256. initial: '',
  257. dialysisTotal: '',
  258. contagions: [],
  259. doctor: '',
  260. nurse: '',
  261. assessment: '',
  262. diseases: [],
  263. diagnose: '',
  264. registrars: '',
  265. patient_complains: '',
  266. present_history: '',
  267. past_history: '',
  268. temperature: '',
  269. pulse: '',
  270. respiratory: '',
  271. sbp: '',
  272. dbp: '',
  273. record_date: '',
  274. response_result: '',
  275. is_infectious: '',
  276. formItem: [],
  277. tell_phone:'',
  278. first_treatment_date:'',
  279. dialysis_age:'',
  280. expense_kind:'',
  281. contact_name:'',
  282. create_time:'',
  283. id_type:"身份证"
  284. }
  285. export default {
  286. name: 'One',
  287. components: { },
  288. data() {
  289. return {
  290. expenseOptions:[
  291. {id:1,name:"基本医保"},
  292. {id:2,name:"新农合"},
  293. {id:3,name:"自费医疗"},
  294. {id:4,name:"公费医疗"},
  295. {id:5,name:"商业保险"},
  296. {id:6,name:"军队医疗"},
  297. {id:7,name:"其他"},
  298. ],
  299. form: Object.assign({}, defaultForm),
  300. adminUserOptions:[],
  301. maritalOptions:[],
  302. educationOptions: [],
  303. professionOptions:[],
  304. }
  305. },
  306. created() {
  307. this.maritalOptions = getDataConfig('patient', 'marital_options')
  308. this.educationOptions = getDataConfig('patient', 'education_types')
  309. this.professionOptions = getDataConfig('patient', 'profession_options')
  310. this.fetchAllAdminUsers()
  311. },
  312. methods: {
  313. getTime(val){
  314. return uParseTime(val, '{y}年{m}月{d}日')
  315. },
  316. getZones() {
  317. getZones().then(response => {
  318. if (response.data.state === 1) {
  319. this.partitionOptions = response.data.data.zones
  320. }
  321. })
  322. },
  323. fetchPatient(id) {
  324. fetchPatient(id)
  325. .then(response => {
  326. if (response.data.state === 1) {
  327. var patietInfo = response.data.data.patient
  328. this.form.avatar = patietInfo.avatar
  329. this.form.name = patietInfo.name
  330. this.form.alias = patietInfo.alias
  331. this.form.lapseto = patietInfo.lapseto
  332. this.form.idCardNo = patietInfo.id_card_no
  333. this.form.dialysisNo = patietInfo.dialysis_no
  334. this.form.gender = patietInfo.gender
  335. this.form.is_infectious = patietInfo.is_infectious
  336. // this.form.record_date = patietInfo.is_infectious
  337. this.form.response_result = patietInfo.response_result
  338. this.form.remind_cycle = patietInfo.remind_cycle
  339. this.infections = response.data.data.infections
  340. this.form.formItem = this.infections
  341. if (patietInfo.gender === 1 || patietInfo.gender === 2) {
  342. this.form.gender = patietInfo.gender.toString()
  343. }
  344. this.form.nation = patietInfo.nation
  345. this.form.native_place = patietInfo.native_place
  346. this.form.birth = uParseTime(patietInfo.birthday, '{y}-{m}-{d}')
  347. this.form.create_time = uParseTime(patietInfo.created_time, '{y}-{m}-{d}')
  348. this.form.firstDialysisDate = uParseTime(patietInfo.first_dialysis_date, '{y}-{m}-{d}')
  349. this.form.height = patietInfo.height + ''
  350. if (patietInfo.marital_status > 0) {
  351. this.form.maritalStatus = patietInfo.marital_status
  352. }
  353. this.form.children = patietInfo.children
  354. this.form.admissionNumber = patietInfo.admission_number
  355. if (patietInfo.reimbursement_way_id > 0) {
  356. this.form.reimbursementWayID = patietInfo.reimbursement_way_id
  357. }
  358. this.form.healthCareNo = patietInfo.health_care_no
  359. this.form.phone = patietInfo.phone
  360. this.form.homeTelephone = patietInfo.home_telephone
  361. this.form.relative_phone = patietInfo.relative_phone
  362. this.form.relative_relations = patietInfo.relative_relations
  363. this.form.homeAddress = patietInfo.home_address
  364. this.form.work = patietInfo.work_unit
  365. this.form.unit_address = patietInfo.unit_address
  366. if (patietInfo.age == 0) {
  367. this.form.age = jsGetAge(this.form.birth, '-')
  368. } else {
  369. this.form.age = patietInfo.age
  370. }
  371. if (patietInfo.profession > 0) {
  372. this.form.profession = patietInfo.profession
  373. }
  374. if (patietInfo.education_level > 0) {
  375. this.form.education = patietInfo.education_level
  376. }
  377. if (patietInfo.source === 1 || patietInfo.source === 2) {
  378. this.form.source = patietInfo.source
  379. }
  380. console.log("source:"+this.form.source)
  381. if (patietInfo.lapseto === 1 || patietInfo.lapseto === 2) {
  382. this.form.lapseto = patietInfo.lapseto
  383. }
  384. if (patietInfo.is_hospital_first_dialysis === 1 || patietInfo.is_hospital_first_dialysis === 2) {
  385. this.form.is_hospital_first_dialysis = patietInfo.is_hospital_first_dialysis
  386. }
  387. if (patietInfo.first_dialysis_date !== 0) {
  388. this.form.firstDialysisDate = uParseTime(
  389. patietInfo.first_dialysis_date,
  390. '{y}-{m}-{d}'
  391. )
  392. }
  393. this.form.first_dialysis_hospital = patietInfo.first_dialysis_hospital
  394. if (patietInfo.predialysis_condition.length > 0) {
  395. this.form.predialysis_condition = patietInfo.predialysis_condition.split(',')
  396. }
  397. this.form.pre_hospital_dialysis_frequency = patietInfo.pre_hospital_dialysis_frequency
  398. this.form.pre_hospital_dialysis_times = patietInfo.pre_hospital_dialysis_times
  399. if (patietInfo.hospital_first_dialysis_date !== 0) {
  400. this.form.hospital_first_dialysis_date = uParseTime(
  401. patietInfo.hospital_first_dialysis_date,
  402. '{y}-{m}-{d}'
  403. )
  404. }
  405. this.form.contagions = response.data.data.contagions
  406. this.form.diseases = response.data.data.diseases
  407. this.form.remark = patietInfo.remark
  408. this.form.diagnose = patietInfo.diagnose
  409. this.form.patient_complains = patietInfo.patient_complains
  410. this.form.present_history = patietInfo.present_history
  411. this.form.past_history = patietInfo.past_history
  412. this.form.temperature = patietInfo.temperature
  413. this.form.pulse = patietInfo.pulse
  414. this.form.respiratory = patietInfo.respiratory
  415. this.form.sbp = patietInfo.sbp
  416. this.form.dbp = patietInfo.dbp
  417. this.form.contact_name = patietInfo.contact_name
  418. this.form.tell_phone = patietInfo.tell_phone
  419. this.form.dialysis_age = patietInfo.dialysis_age
  420. if( patietInfo.expense_kind == 0){
  421. this.form.expense_kind = ""
  422. }else{
  423. this.form.expense_kind = patietInfo.expense_kind.toString()
  424. }
  425. this.form.first_treatment_date = uParseTime(
  426. patietInfo.first_treatment_date,
  427. '{y}-{m}-{d}'
  428. )
  429. if (patietInfo.registrars_id > 0) {
  430. var eLen = this.adminUserOptions.length
  431. for (let index = 0; index < eLen; index++) {
  432. if (this.adminUserOptions[index].id === patietInfo.registrars_id) {
  433. this.form.registrars = this.adminUserOptions[index].name
  434. break
  435. }
  436. }
  437. } else {
  438. this.form.registrars = ''
  439. }
  440. this.form.maritalStatus = this.getMaritalType(patietInfo.marital_status)
  441. this.form.education = this.getEducationType(patietInfo.education_level)
  442. this.form.profession = this.getProfessionType(patietInfo.profession)
  443. } else {
  444. console.log('patient get err state')
  445. this.$notify.error({
  446. title: '错误',
  447. message: '网络异常'
  448. })
  449. }
  450. }).catch(err => {
  451. this.$notify.error({
  452. title: '错误',
  453. message: '网络异常'
  454. })
  455. })
  456. },
  457. fetchAllAdminUsers() {
  458. fetchAllAdminUsers().then(response => {
  459. if (response.data.state === 1) {
  460. this.adminUserOptions = response.data.data.users
  461. }
  462. })
  463. },getMaritalType(id){
  464. for(let i = 0; i < this.maritalOptions.length; i++){
  465. if(this.maritalOptions[i].id == id){
  466. return this.maritalOptions[i].name
  467. }
  468. }
  469. },getEducationType(id){
  470. for(let i = 0; i < this.educationOptions.length; i++){
  471. if(this.educationOptions[i].id == id){
  472. return this.educationOptions[i].name
  473. }
  474. }
  475. },getProfessionType(id){
  476. for(let i = 0; i < this.professionOptions.length; i++){
  477. if(this.professionOptions[i].id == id){
  478. return this.professionOptions[i].name
  479. }
  480. }
  481. },onCopy(){
  482. this.$message.success('复制成功')
  483. },onError(){
  484. this.$message.success('复制失败,请重试')
  485. },
  486. }
  487. }
  488. </script>
  489. <style lang="scss">
  490. .basicInfo {
  491. float: left;
  492. width: 86%;
  493. padding-left: 20px;
  494. .headline {
  495. height: 30px;
  496. line-height: 30px;
  497. margin-bottom: 10px;
  498. }
  499. .information {
  500. overflow: hidden;
  501. }
  502. .row {
  503. width: 100%;
  504. float: left;
  505. min-height: 56px;
  506. // overflow: hidden;
  507. .rowOne {
  508. float: left;
  509. height: 36px;
  510. width: 350px;
  511. // line-height: 36px;
  512. margin-right: 12px;
  513. margin-bottom: 20px;
  514. }
  515. .rowTwo {
  516. float: left;
  517. height: 36px;
  518. margin-right: 12px;
  519. margin-bottom: 20px;
  520. .btn {
  521. margin-right: 10px;
  522. }
  523. }
  524. .rowName {
  525. float: left;
  526. width: 76px;
  527. line-height: 36px;
  528. font-size: 12px;
  529. }
  530. .rowName1 {
  531. float: left;
  532. width: 76px;
  533. margin-top: 5px;
  534. font-size: 12px;
  535. }
  536. .el-input {
  537. float: left;
  538. width: 130px;
  539. }
  540. .btn {
  541. width: 50px;
  542. height: 36px;
  543. line-height: 36px;
  544. color: #fff;
  545. background-color: #409eff;
  546. float: left;
  547. font-size: 12px;
  548. text-align: center;
  549. border-radius: 4px;
  550. margin-left: 6px;
  551. }
  552. .radioOne {
  553. float: left;
  554. height: 36px;
  555. line-height: 36px;
  556. // margin-right: 76px;
  557. }
  558. .line {
  559. height: 56px;
  560. }
  561. }
  562. .row1 {
  563. width: 100%;
  564. // display: block;
  565. // height: 56px;
  566. float: left;
  567. .line {
  568. float: left;
  569. height: 56px;
  570. }
  571. .rowName {
  572. float: left;
  573. width: 76px;
  574. line-height: 36px;
  575. font-size: 12px;
  576. }
  577. .radioOne {
  578. float: left;
  579. height: 56px;
  580. line-height: 36px;
  581. }
  582. .el-input {
  583. float: left;
  584. width: 130px;
  585. margin-right: 10px;
  586. }
  587. .rowOne {
  588. float: left;
  589. height: 36px;
  590. width: 262px;
  591. // line-height: 36px;
  592. margin-right: 12px;
  593. margin-bottom: 20px;
  594. .el-input {
  595. margin-right: 0;
  596. }
  597. }
  598. .btn {
  599. width: 50px;
  600. height: 36px;
  601. line-height: 36px;
  602. color: #fff;
  603. background-color: #409eff;
  604. float: left;
  605. font-size: 12px;
  606. text-align: center;
  607. border-radius: 4px;
  608. margin-left: 6px;
  609. }
  610. }
  611. }
  612. </style>