Medicalhistory.vue 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. <template>
  2. <div style="border:1px solid gainsboro ;padding:10px">
  3. <div style="position: relative; left: 400px;width: 250px;margin: 20px 0;">
  4. <el-button type="primary" style="" @click="bianji">
  5. 编辑
  6. </el-button>
  7. <!-- <el-button type="danger" style="" @click="">
  8. 删除
  9. </el-button> -->
  10. <el-button type="success" style="" @click="printThisPage">
  11. 打印
  12. </el-button>
  13. </div>
  14. <div id="print_content">
  15. <div class="print_page_main_content">
  16. <div class="content">
  17. <h2 style="text-align: center;margin-bottom: 20px;">门诊血液透析治疗病历首页</h2>
  18. <div style="display: flex;padding: 0 5px 10px 5px">
  19. <div style="flex: 1;">门诊号<span class="unile">{{ patient.admission_number }}</span></div>
  20. <div style="flex: 1;">透析号 <span class="unile">{{ patient.dialysis_no }}</span></div>
  21. <div style="flex: 1.5;">首次治疗日期 <span class="unile">{{getTime(patient.first_dialysis_date) }}</span></div>
  22. </div>
  23. <div style="display: flex;padding: 0 5px 10px 5px">
  24. <div style="flex: 1;">姓名:<span class="unile">{{ patient.name }}</span></div>
  25. <div style="flex: 1;">性别:
  26. <input type="checkbox" v-model="nv" class="nv"/>女
  27. <input type="checkbox" v-model="nan" class="nan"/>男
  28. </div>
  29. </div>
  30. <div style="display: flex;padding: 0 5px 10px 5px">
  31. <div style="flex: 2;">
  32. 身份证号
  33. <span class="unile2">{{ patient.id_card_no }}</span>
  34. </div>
  35. </div>
  36. <div style='padding: 0 5px 10px 5px'>
  37. <div>
  38. 现住址(详填) <span class="unile2">{{ patient.home_address }}</span>
  39. </div>
  40. <!-- <div style="flex: 1;">邮编<span class="unile2"></span></div> -->
  41. </div>
  42. <div style='padding: 0 5px 10px 5px'>
  43. <div>
  44. 家庭住址<span class="unile2">{{ patient.home_address }}</span>
  45. </div>
  46. <!-- <div style="flex: 1;">邮编<span class="unile2"></span></div> -->
  47. </div>
  48. <div style="display: flex;padding: 0 5px 10px 5px">
  49. <div style="flex: 1;">
  50. 本人电话<span class="unile">{{ patient.home_telephone }}</span>
  51. </div>
  52. <!-- <div style="flex: 1;">
  53. 手机<span class="unile">{{ patient.phone }}</span>
  54. </div> -->
  55. <div style="flex: 1.5;">
  56. 亲属联系方式<span class="unile">{{ patient.relative_phone }}</span>
  57. </div>
  58. </div>
  59. <div style="padding: 0 5px 10px 5px">
  60. 工作单位<span class="unile2">{{ patient.work_unit }}</span>
  61. </div>
  62. <!-- <div style="padding: 10px 5px">
  63. 地址<span class="unile2"></span> 省(市)<span class="unile2"></span>路<span class="unile2"></span>号
  64. </div> -->
  65. <div style="padding: 0 5px 10px 5px">
  66. 诊断:<span style="border-bottom: 1px solid black;">{{ patient.diagnose }}</span>
  67. </div>
  68. <!-- <div style="padding: 10px 5px">
  69. 合并症或并发症 <span class="unile"></span>
  70. </div> -->
  71. <div V-html="content"></div>
  72. <div v-html="content"></div>
  73. <!-- <div>
  74. <table border="1" style="border-collapse: collapse;width: 100%;text-align: center;">
  75. <tr>
  76. <td colspan="2" class="tablepadd">干体重</td>
  77. <td colspan="2" class="tablepadd">血管通路</td>
  78. <td colspan="2" class="tablepadd">抗凝剂</td>
  79. </tr>
  80. <tr>
  81. <td class="tablepadd">日期</td>
  82. <td>体重(kg)</td>
  83. <td>日期</td>
  84. <td>名称</td>
  85. <td>日期</td>
  86. <td>种类</td>
  87. </tr>
  88. <tr v-for="item in 4">
  89. <td class="tablepadd"></td>
  90. <td></td>
  91. <td></td>
  92. <td></td>
  93. <td></td>
  94. <td></td>
  95. </tr>
  96. <tr>
  97. <td colspan="2" class="tablepadd">传染病登记</td>
  98. <td colspan="2" class="tablepadd">肿瘤登记</td>
  99. <td colspan="2" class="tablepadd">药物过敏史</td>
  100. </tr>
  101. <tr>
  102. <td class="tablepadd">日期</td>
  103. <td>名称</td>
  104. <td>日期</td>
  105. <td>名称</td>
  106. <td>日期</td>
  107. <td>药物名称</td>
  108. </tr>
  109. <tr v-for="item in 4">
  110. <td class="tablepadd"></td>
  111. <td ></td>
  112. <td></td>
  113. <td></td>
  114. <td></td>
  115. <td></td>
  116. </tr>
  117. <tr>
  118. <td colspan="6" class="tablepadd">血液透析治疗方案调整</td>
  119. </tr>
  120. <tr>
  121. <td class="tablepadd">治疗频率</td>
  122. <td>调整日期</td>
  123. <td>治疗方式</td>
  124. <td>调整日期</td>
  125. <td>透析液钙浓度</td>
  126. <td>调整日期</td>
  127. </tr>
  128. <tr v-for="item in 4">
  129. <td class="tablepadd"></td>
  130. <td></td>
  131. <td></td>
  132. <td></td>
  133. <td></td>
  134. <td></td>
  135. </tr>
  136. </table>
  137. </div> -->
  138. </div>
  139. </div>
  140. </div>
  141. <!-- 编辑 -->
  142. <el-dialog
  143. title="新增"
  144. :visible.sync="dialogVisible"
  145. width="60%">
  146. <div>
  147. <h2 style="text-align: center;margin-bottom: 20px;">门诊血液透析治疗病历首页</h2>
  148. <div style="display: flex;padding: 10px 5px">
  149. <div style="flex: 1;">门诊号
  150. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;">{{ patient.admission_number }}</span>
  151. </div>
  152. <div style="flex: 1;">透析号
  153. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;">{{ patient.admission_number }}</span>
  154. </div>
  155. <div style="flex: 1;">姓名:
  156. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;">{{ patient.name }}</span>
  157. </div>
  158. <div style="flex: 1;">性别:
  159. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;">
  160. <span v-if="sex==1">男</span>
  161. <span v-if="sex==2">女</span>
  162. </span>
  163. <!-- <input type="checkbox" v-model="nv" class="nv"/>女
  164. <input type="checkbox" v-model="nan" class="nan"/>男 -->
  165. </div>
  166. </div>
  167. <!-- <div style="display: flex;padding: 10px 5px">
  168. <div style="flex: 1;">姓名:<span class="unile">{{ patient.name }}</span></div>
  169. <div style="flex: 1;">性别:
  170. <span v-if="sex==1">男</span>
  171. <span v-if="sex==2">女</span>
  172. </div>
  173. </div> -->
  174. <div style="display: flex;padding: 10px 5px">
  175. <div style="flex: 1;">
  176. 身份证号
  177. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;">{{ patient.id_card_no }} </span>
  178. </div>
  179. </div>
  180. <div style='padding: 10px 5px'>
  181. <div>
  182. 现住址(详填)<span style="display: inline-block;border-bottom: 1px solid black;width: 60%;"> </span>
  183. </div>
  184. </div>
  185. <div style='padding: 10px 5px'>
  186. <div>
  187. 家庭住址<span style="display: inline-block;border-bottom: 1px solid black;width: 60%;"> </span>
  188. </div>
  189. </div>
  190. <div style="display: flex;padding: 10px 5px">
  191. <div style="flex: 1;">
  192. 本人电话
  193. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;"> </span>
  194. </div>
  195. <div style="flex: 1.5;">
  196. 亲属联系方式
  197. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;"> </span>
  198. </div>
  199. </div>
  200. <div style="padding: 10px 5px">
  201. 工作单位
  202. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;"> </span>
  203. </div>
  204. <div style="padding: 10px 5px">诊断:
  205. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;">{{ patient.diagnose }}</span>
  206. </div>
  207. <!-- <div style="padding: 10px 5px">合并症或并发症
  208. <span style="display: inline-block;border-bottom: 1px solid black;width: 60%;"></span>
  209. </div> -->
  210. <keep-alive>
  211. <editor ref="editor"
  212. id="editor"
  213. style="width: 100%"
  214. v-bind:r_content="content">
  215. </editor>
  216. </keep-alive>
  217. </div>
  218. <span slot="footer" class="dialog-footer">
  219. <el-button @click="dialogVisible = false">取 消</el-button>
  220. <el-button type="primary" @click="saveMedicalHistory">保 存</el-button>
  221. </span>
  222. </el-dialog>
  223. </div>
  224. </template>
  225. <script>
  226. import { getPatientDetailInformedconsent,saveMedicalHistory } from '@/api/patient'
  227. import print from "print-js";
  228. import Editor from '@/components/Editor'
  229. import { uParseTime } from '@/utils/tools'
  230. const content=`<div>
  231. <table border="1" style="border-collapse: collapse;width: 100%;text-align: center;">
  232. <tr>
  233. <td colspan="2" class="tablepadd">干体重</td><td colspan="2" class="tablepadd">血管通路</td>
  234. <td colspan="2" class="tablepadd">抗凝剂</td>
  235. </tr>
  236. <tr>
  237. <td class="tablepadd">日期</td><td>体重(kg)</td><td>日期</td>
  238. <td>名称</td><td>日期</td><td>种类</td>
  239. </tr>
  240. <tr>
  241. <td class="tablepadd"></td><td></td><td></td><td></td><td></td><td></td>
  242. </tr>
  243. <tr>
  244. <td class="tablepadd"></td><td></td><td></td><td></td><td></td><td></td>
  245. </tr>
  246. <tr>
  247. <td class="tablepadd"></td><td></td><td></td><td></td><td></td><td></td>
  248. </tr>
  249. <tr>
  250. <td class="tablepadd"></td><td></td><td></td><td></td><td></td><td></td>
  251. </tr>
  252. <tr>
  253. <td colspan="2" class="tablepadd">传染病登记</td><td colspan="2" class="tablepadd">肿瘤登记</td>
  254. <td colspan="2" class="tablepadd">药物过敏史</td>
  255. </tr>
  256. <tr>
  257. <td class="tablepadd">日期</td><td>名称</td><td>日期</td>
  258. <td>名称</td><td>日期</td><td>药物名称</td>
  259. </tr>
  260. <tr>
  261. <td class="tablepadd"></td><td ></td><td></td><td></td><td></td><td></td>
  262. </tr>
  263. <tr>
  264. <td class="tablepadd"></td><td ></td><td></td><td></td><td></td><td></td>
  265. </tr>
  266. <tr>
  267. <td class="tablepadd"></td><td ></td><td></td><td></td><td></td><td></td>
  268. </tr>
  269. <tr>
  270. <td class="tablepadd"></td><td ></td><td></td><td></td><td></td><td></td>
  271. </tr>
  272. <tr>
  273. <td colspan="6" class="tablepadd">血液透析治疗方案调整</td>
  274. </tr>
  275. <tr>
  276. <td class="tablepadd">治疗频率</td><td>调整日期</td><td>治疗方式</td>
  277. <td>调整日期</td><td>透析液钙浓度</td><td>调整日期</td>
  278. </tr>
  279. <tr>
  280. <td class="tablepadd"></td><td></td><td></td><td></td><td></td><td></td>
  281. </tr>
  282. <tr>
  283. <td class="tablepadd"></td><td ></td><td></td><td></td><td></td><td></td>
  284. </tr>
  285. <tr>
  286. <td class="tablepadd"></td><td ></td><td></td><td></td><td></td><td></td>
  287. </tr>
  288. <tr>
  289. <td class="tablepadd"></td><td ></td><td></td><td></td><td></td><td></td>
  290. </tr>
  291. </table>
  292. </div>`
  293. export default{
  294. props: {
  295. patient_id: {
  296. type: Number,
  297. },
  298. medicalList:{
  299. type:Object,
  300. }
  301. },
  302. components:{
  303. Editor
  304. },
  305. data(){
  306. return{
  307. patient:{},
  308. dialogVisible:false,
  309. content:content,
  310. number:'',
  311. sex:'',
  312. sheng:'',
  313. shi:'',
  314. xian:'',
  315. jie:'',
  316. hao:''
  317. }
  318. },
  319. created(){
  320. if(this.medicalList!=null && this.medicalList.id >0){
  321. this.content = ""
  322. this.content = this.medicalList.content
  323. }
  324. this.getlist()
  325. // this.number = 1233444
  326. // }
  327. },
  328. methods:{
  329. show(val){
  330. if(val!=null){
  331. console.log("valw233223",val)
  332. if(val.content!=""){
  333. this.content = ""
  334. this.content = val.content
  335. }
  336. }
  337. },
  338. getlist(){
  339. // console.log("owwwwwwwwwwwwwwwwwww",this.patient_id)
  340. getPatientDetailInformedconsent(this.patient_id).then(response=>{
  341. if(response.data.state == 1){
  342. var patient = response.data.data.patients
  343. console.log("patinet",patient)
  344. this.patient =patient
  345. this.sex=patient.gender
  346. console.log('2222', patient.home_address)
  347. if(patient.home_address != ''){
  348. var str = patient.home_address
  349. var reg = /.+?(省|市|自治区|自治州|县|区|乡|镇|街道|号)/g; // 省市区的正则
  350. const address = str.match(reg)
  351. for(let i in address){
  352. // console.log(i,address[i]);
  353. if(address[i].indexOf('省') != -1 || address[i].indexOf('自治区') != -1){
  354. this.sheng = address[i]
  355. }else if(address[i].indexOf('市') != -1 || address[i].indexOf('自治州') != -1){
  356. this.shi = address[i]
  357. }else if(address[i].indexOf('县') != -1 || address[i].indexOf('区') != -1){
  358. this.xian = address[i]
  359. }else if(address[i].indexOf('乡') != -1 || address[i].indexOf('街道') != -1 || address[i].indexOf('镇') != -1){
  360. this.jie = address[i]
  361. }else{
  362. this.hao =address[i]
  363. }
  364. }
  365. console.log('ffff',this.sheng,this.shi,this.xian,this.jie,this.hao);
  366. }
  367. }
  368. })
  369. },
  370. printThisPage(){
  371. const style = '@media print {.content p{font-size: 16px;font-family: 新宋体; padding-left: 20px; margin-bottom: 5px;}.unile{display: inline-block;border-bottom: 1px solid black;width: 60%;height:25px}.unile2{display: inline-block;border-bottom: 1px solid black;width: 80%;height:25px}.tablepadd{padding: 0 5px; height: 35px;}}'
  372. printJS({
  373. printable: 'print_content',
  374. type: 'html',
  375. documentTitle: ' ',
  376. style: style,
  377. scanStyles: false
  378. })
  379. },
  380. getTime(val) {
  381. if(val < 0){
  382. return ""
  383. }
  384. if(val == ""){
  385. return ""
  386. }else {
  387. return uParseTime(val, '{y}-{m}-{d}')
  388. }
  389. },
  390. // 编辑
  391. bianji(){
  392. this.dialogVisible = true
  393. },
  394. saveMedicalHistory(){
  395. console.log("adfadfaf")
  396. var params = {
  397. content:this.$refs.editor.content,
  398. patient_id:this.patient_id,
  399. }
  400. console.log("paramsm2222",params)
  401. saveMedicalHistory(params).then(response=>{
  402. if(response.data.state ==1){
  403. var medicalHistory = response.data.data.medicalHistory
  404. this.$message.success("保存成功!")
  405. this.dialogVisible =false
  406. this.$emit("getPatientMeDicalList","");
  407. }
  408. })
  409. }
  410. },
  411. computed:{
  412. nv(){
  413. const sex=document.getElementsByClassName('nv')
  414. if(this.sex==2){
  415. return sex.checked=true
  416. }else{
  417. return sex.checked=false
  418. }
  419. },
  420. nan(){
  421. const sex2=document.getElementsByClassName('nan')
  422. if(this.sex==1){
  423. return sex2.checked=true
  424. }else{
  425. return sex2.checked=false
  426. }
  427. }
  428. },
  429. mounted(){
  430. this.number = 1233444
  431. }
  432. }
  433. </script>
  434. <style lang="scss">
  435. .content{
  436. .unile{
  437. display: inline-block;
  438. border-bottom: 1px solid black;
  439. width: 60%;
  440. height:25px
  441. }
  442. .unile2{
  443. display: inline-block;
  444. border-bottom: 1px solid black;
  445. height: 25px;
  446. text-align: center;
  447. width: 80%;
  448. // padding: 15px 0;
  449. }
  450. .tablepadd{
  451. padding: 5px 0;
  452. height: 35px;
  453. }
  454. }
  455. input[type="checkbox"]{
  456. box-sizing: border-box;
  457. /* padding: 0; */
  458. -webkit-appearance: checkbox;
  459. }
  460. </style>