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

inquiriesDetail.vue 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449
  1. <template>
  2. <div>
  3. <el-dialog
  4. title="详情"
  5. width="1000px"
  6. :visible.sync="visible"
  7. :before-close="_close"
  8. class="detailDialog"
  9. >
  10. <div style="position: absolute;right:20px;z-index:99">
  11. <el-button v-if="activeName == 'first'" @click="open(1)" type="primary">打印</el-button>
  12. <el-button v-if="activeName == 'second'" @click="open(2)" type="primary">打印</el-button>
  13. <el-button @click="open(3)" type="primary">打印清单</el-button>
  14. <el-button @click="open(4)" type="primary">打印汇总</el-button>
  15. </div>
  16. <el-tabs v-model="activeName">
  17. <el-tab-pane label="处方详情" name="first">
  18. <el-tabs class="preTabs" v-model="editableTabsValue" type="card" @tab-click="tabclickEvent">
  19. <el-tab-pane
  20. v-for="(item, index) in prescriptions"
  21. :key="index"
  22. :label="item.name"
  23. :name="item.name"
  24. >
  25. </el-tab-pane>
  26. <div class="RP">
  27. Rp
  28. </div>
  29. <new-prescription-table ref="prescription_tables" :prescription="curPrescriptions"></new-prescription-table>
  30. </el-tabs>
  31. </el-tab-pane>
  32. <el-tab-pane label="病历详情" name="second">
  33. <div class="commonCell">
  34. <p style="color:#409EFF;">基本信息</p>
  35. <div class="detailMain">
  36. <span style="width:270px;">处方号:{{order.prescription_number}}</span>
  37. <span style="width:180px;">姓名:{{order.patient.name}}</span>
  38. <span style="width:240px;">证件号:{{order.patient.id_card_no}}</span>
  39. <span style="width:180px;">联系电话:{{order.patient.phone}}</span>
  40. <span style="width:270px;">医生:{{order.doctor}}</span>
  41. <span style="width:180px;">科室:{{getDepartMent(order.departments)}}</span>
  42. <span style="width:240px;">创建时间: {{getTimes(order.ctime,"{y}-{m}-{d} {h}:{i}")}}</span>
  43. <!-- <span style="width:180px;">疾病名称:{{case_history.diagnostic}}</span>
  44. <span style="width:180px;">症状:{{case_history.diagnostic}}</span> -->
  45. </div>
  46. </div>
  47. <div class="commonCell">
  48. <p style="color:#409EFF;">体格信息</p>
  49. <div class="detailMain">
  50. <span style="width:140px;">体温:{{case_history.temperature}}℃</span>
  51. <span style="width:140px;">呼吸:{{case_history.breathing}} 次/分</span>
  52. <span style="width:140px;">脉搏:{{case_history.pulse}} 次/分</span>
  53. <span style="width:200px;">血压:{{case_history.sbp}}~{{case_history.dbp}} mmHg</span>
  54. </div>
  55. </div>
  56. <div class="commonCell">
  57. <p style="color:#409EFF;">病历信息</p>
  58. <div class="detailMain">
  59. <span style="width:260px;" v-if="case_history.is_infect== 1">是否传染:是</span>
  60. <span style="width:260px;" v-if="case_history.is_infect != 1">是否传染:否</span>
  61. <span style="width:180px;">发病日期:{{getTimes(case_history.sick_date,"{y}-{m}-{d}")}}</span>
  62. </div>
  63. </div>
  64. <div class="commonCell">
  65. <p>主诉</p>
  66. <div>{{case_history.chief_conplaint}}</div>
  67. </div>
  68. <div class="commonCell">
  69. <p>现病史</p>
  70. <div>{{case_history.history_of_present_illness}}</div>
  71. </div>
  72. <div class="commonCell">
  73. <p>门诊诊断</p>
  74. <div>{{case_history.diagnostic}}</div>
  75. </div>
  76. <div class="commonCell">
  77. <p>门诊医嘱</p>
  78. <div>{{case_history.doctor_advice}}</div>
  79. </div>
  80. <div class="commonCell">
  81. <p>过敏史</p>
  82. <div>{{case_history.past_history}}</div>
  83. </div>
  84. <div class="commonCell">
  85. <p>既往史</p>
  86. <div>{{case_history.past_history}}</div>
  87. </div>
  88. <div class="commonCell">
  89. <p>个人史</p>
  90. <div>{{case_history.personal_history}}</div>
  91. </div>
  92. <div class="commonCell">
  93. <p>家族史</p>
  94. <div>{{case_history.family_history}}</div>
  95. </div>
  96. </el-tab-pane>
  97. </el-tabs>
  98. <div slot="footer" class="dialog-footer">
  99. <el-button @click="hide">取 消</el-button>
  100. <!--<el-button type="primary" :loading="submitLoading" @click="hide">确定</el-button>-->
  101. </div>
  102. <el-dialog
  103. class="centerDialog detailDialog"
  104. width="600px"
  105. title="打印"
  106. :visible.sync="innerVisible"
  107. append-to-body>
  108. <print v-if="activeName == 'first'" :paramsObj='paramsObj' :showBtn='true'></print>
  109. <recordPrint v-if="activeName == 'second'" :patientid="patientid" :showBtn='true'></recordPrint>
  110. </el-dialog>
  111. <div >
  112. <el-dialog
  113. class="centerDialog"
  114. width="900px"
  115. title="打印"
  116. :visible.sync="listVisible" append-to-body>
  117. <hospital-list-print :paramsObj='paramsObjTwo'></hospital-list-print>
  118. </el-dialog>
  119. </div>
  120. <div >
  121. <el-dialog
  122. class="centerDialog"
  123. width="900px"
  124. title="打印"
  125. :visible.sync="allListVisible" append-to-body>
  126. <hospital-all-list-print :paramsObj='paramsObjTwo'></hospital-all-list-print>
  127. </el-dialog>
  128. </div>
  129. </el-dialog>
  130. </div>
  131. </template>
  132. <script>
  133. import { getHisPrescriptionInfo } from '@/api/his/his'
  134. import NewPrescriptionTable from './newPrescriptionTable'
  135. import { uParseTime } from '@/utils/tools'
  136. import { getAllDoctorList } from "@/api/project/project"
  137. import moment from 'moment';
  138. import print from '../print'
  139. import recordPrint from '../recordPrint'
  140. import HospitalListPrint from '../pastQuiriesPrint/hospitalListPrint.vue'
  141. import HospitalAllListPrint from '../pastQuiriesPrint/hospitalAllListPrint.vue'
  142. export default {
  143. components: { HospitalAllListPrint, HospitalListPrint, NewPrescriptionTable,print,recordPrint },
  144. data() {
  145. return {
  146. listVisible:false,
  147. allListVisible:false,
  148. visible: false,
  149. activeName: 'first',
  150. curPrescriptions: {},
  151. paramsObjTwo:{},
  152. prescriptions: [],
  153. record_date: '',
  154. editableTabsValue: '处方1',
  155. loadingone: false,
  156. editableTabs: [{
  157. title: '处方1',
  158. name: '1'
  159. }],
  160. tabIndex: 1,
  161. hisPatientInfo: {},
  162. loadingtwo: false,
  163. patientTableData: [{
  164. name: '杨美英',
  165. mdtrt_id: '1709946'
  166. }],
  167. patientInfo: { id: 0 },
  168. doctor: {},
  169. total: 0,
  170. state: '未收费',
  171. radio: 1,
  172. radioStatus: 1,
  173. search_input: '',
  174. case_history:{},
  175. order:{},
  176. doctorList:[],
  177. departmentList:[],
  178. innerVisible:false,
  179. paramsObj:{},
  180. patientid:''
  181. }
  182. },
  183. methods: {
  184. open(index){
  185. if(index == 1){
  186. var arr= [];
  187. for(let i=0;i<this.prescriptions.length;i++){
  188. arr.push(this.prescriptions[i].id)
  189. }
  190. var prescription_id = arr[0];
  191. var record_date = this.format(this.order.record_date);
  192. var ids = arr.toString();
  193. let obj = {
  194. record:record_date,
  195. prescription_id:prescription_id,
  196. ids:ids,
  197. patient_id:this.patientInfo.id
  198. };
  199. this.paramsObj = obj;
  200. this.innerVisible = true
  201. // this.$router.push("/outpatientDoctorStation/print?record="+record_date+"&prescription_id="+prescription_id+"&ids="+ids+"&patient_id="+this.patientInfo.id)
  202. } else if(index == 2){
  203. var record_date = this.format(this.case_history.sick_date);
  204. this.patientid = this.patientInfo.id;
  205. this.innerVisible = true
  206. // this.$router.push("/outpatientDoctorStation/recordPrint?record="+record_date+"&patient_id="+this.case_history.patient_id)
  207. }else if(index == 3){
  208. // var record_date = this.format(this.order.record_date);
  209. this.patientid = this.patientInfo.id;
  210. this.paramsObjTwo = {
  211. record_date:this.order.record_date,
  212. patient_id:this.patientid
  213. }
  214. this.listVisible = true
  215. }else if(index == 4){
  216. this.patientid = this.patientInfo.id;
  217. this.paramsObjTwo = {
  218. record_date:this.order.record_date,
  219. patient_id:this.patientid
  220. }
  221. this.allListVisible = true
  222. }
  223. },
  224. getTimes(time,temp) {
  225. return uParseTime(time, temp);
  226. },
  227. tabclickEvent(val) {
  228. for (let i = 0; i < this.prescriptions.length; i++) {
  229. if (this.prescriptions[i].name == val.name) {
  230. this.curPrescriptions = {};
  231. var temp = this.deepClone(this.prescriptions[i]);
  232. this.curPrescriptions = temp
  233. }
  234. }
  235. },
  236. deepClone(source) {
  237. if (!source && typeof source !== 'object') {
  238. throw new Error('error arguments', 'shallowClone')
  239. }
  240. const targetObj = source.constructor === Array ? [] : {};
  241. Object.keys(source).forEach((keys) => {
  242. if (source[keys] && typeof source[keys] === 'object') {
  243. targetObj[keys] = this.deepClone(source[keys])
  244. } else {
  245. targetObj[keys] = source[keys]
  246. }
  247. });
  248. return targetObj
  249. },
  250. moreState(tab, event) {
  251. if (tab == 'more') {
  252. return false
  253. }
  254. },
  255. _close: function(done) {
  256. // this.clear()
  257. done()
  258. },
  259. clear: function() {
  260. this.form.id = 0;
  261. this.form.name = '';
  262. this.form.intro = ''
  263. },
  264. show(id) {
  265. let params={
  266. id:id,
  267. };
  268. getHisPrescriptionInfo(params).then(response => {
  269. if (response.data.state == 0) {
  270. this.$message.error(response.data.msg);
  271. return false
  272. } else {
  273. this.patientInfo = response.data.data.order.patient;
  274. console.log("患者信息",this.patientInfo);
  275. this.hisPatientInfo = response.data.data.order.his_patient;
  276. this.case_history = response.data.data.order.case_history;
  277. console.log("历史详情",this.case_history);
  278. this.order = response.data.data.order;
  279. console.log('this.order',this.order);
  280. this.prescriptions = [];
  281. for (let i = 0; i < response.data.data.prescription.length; i++) {
  282. var prescription = response.data.data.prescription[i];
  283. let tempAdvice = [];
  284. let tempProject = [];
  285. for (let b = 0; b < prescription.advices.length; b++) {
  286. let obj = {
  287. advice_id: prescription.advices[b].id,
  288. drug_name: prescription.advices[b].advice_name,
  289. single_dose: prescription.advices[b].single_dose,
  290. delivery_way: prescription.advices[b].delivery_way,
  291. execution_frequency: prescription.advices[b].execution_frequency,
  292. retail_price: prescription.advices[b].price.toString(),
  293. remark: prescription.advices[b].remark,
  294. day: prescription.advices[b].day,
  295. prescribing_number: prescription.advices[b].prescribing_number.toString(),
  296. single_dose_unit: prescription.advices[b].single_dose_unit,
  297. prescribing_number_unit: prescription.advices[b].prescribing_number_unit,
  298. medical_insurance_number: prescription.advices[b].med_list_codg
  299. };
  300. tempAdvice.push(obj)
  301. }
  302. for (let b = 0; b < prescription.project.length; b++) {
  303. let obj = {
  304. id: prescription.project[b].id,
  305. project_id: prescription.project[b].project.id,
  306. project_name: prescription.project[b].project.project_name,
  307. statistical_classification: prescription.project[b].project.statistical_classification,
  308. single_dose: prescription.project[b].single_dose,
  309. delivery_way: prescription.project[b].delivery_way,
  310. execution_frequency: prescription.project[b].execution_frequency,
  311. number_days: prescription.project[b].day,
  312. total: prescription.project[b].count.toString(),
  313. price: prescription.project[b].price,
  314. remark: prescription.project[b].remark,
  315. medical_code: prescription.project[b].project.medical_code,
  316. unit:prescription.project[b].project.unit,
  317. };
  318. if(prescription.project[b].type == 2){
  319. obj['statistical_classification'] = prescription.project[b].team.project_team
  320. obj['medical_code'] = prescription.project[b].project.medical_code
  321. obj['project_name'] = prescription.project[b].project.project_name
  322. obj['type'] = 2
  323. }else if(prescription.project[b].type == 3){
  324. obj['statistical_classification'] = prescription.project[b].team.project_team
  325. obj['medical_code'] = prescription.project[b].good_info.medical_insurance_number
  326. obj['project_name'] = prescription.project[b].good_info.good_name
  327. obj['type'] = 3
  328. }
  329. tempProject.push(obj)
  330. }
  331. console.log(tempProject)
  332. let index = i + 1;
  333. let obj = {
  334. id: prescription.id,
  335. name: '处方' + index,
  336. advices: tempAdvice,
  337. project: tempProject,
  338. type: response.data.data.prescription[i].type
  339. };
  340. this.prescriptions.push(obj);
  341. this.curPrescriptions = this.prescriptions[0]
  342. }
  343. }
  344. });
  345. // this.clear()
  346. this.visible = true
  347. },
  348. hide() {
  349. // this.clear()
  350. this.visible = false
  351. },
  352. getAllDoctorList(){
  353. getAllDoctorList().then(response=>{
  354. if(response.data.state == 1){
  355. var doctor = response.data.data.doctor;
  356. this.doctorList = doctor;
  357. var department = response.data.data.department;
  358. console.log("department",department);
  359. this.departmentList = department
  360. }
  361. })
  362. },
  363. getDepartMent(id){
  364. var name = "";
  365. for(let i=0;i<this.departmentList.length;i++){
  366. if(id == this.departmentList[i].id){
  367. name = this.departmentList[i].name
  368. }
  369. }
  370. return name
  371. },
  372. format(time){
  373. moment.locale();
  374. var times = time*1000;
  375. times = moment(times).format('YYYY-MM-DD');
  376. return times
  377. }
  378. },
  379. created(){
  380. this.getAllDoctorList()
  381. }
  382. }
  383. </script>
  384. <style lang="scss">
  385. .detailDialog {
  386. .el-dialog__body {
  387. padding: 0 20px 30px;
  388. position: relative;
  389. }
  390. .detailMain {
  391. flex: 1;
  392. span {
  393. display: inline-block;
  394. }
  395. }
  396. .commonCell {
  397. display: flex;
  398. line-height: 40px;
  399. > p {
  400. font-weight: bold;
  401. color: #000;
  402. width: 80px;
  403. }
  404. }
  405. }
  406. </style>