You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

300 lines
9.2 KiB

2 years ago
3 weeks ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
3 weeks ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
3 weeks ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 weeks ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 weeks ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div style="background-color: #B9CEE9;">
  3. <div>
  4. <div class="contenttitle">
  5. 体检 /<span class="contenttitleBold">总检医生诊台</span>
  6. </div>
  7. <div style="display: flex">
  8. <div :style="'width:' + (window.pageWidth - 110 - 15) + 'px;'">
  9. <div>
  10. <PatientRegisterBase />
  11. </div>
  12. <div :style="`height: ${window.pageHeight < 600 ? 436 : window.pageHeight - 164}px;`">
  13. <el-tabs v-model="tabChoosed">
  14. <el-tab-pane label="综述建议" name="1">
  15. <div style="display: flex;">
  16. <!-- 综述建议 -->
  17. <div :style="'width:' + (window.pageWidth - 110 - 15) + 'px;'">
  18. <SumSug :patientRegisterId="dataTransOpts.tableS.patient_register.id" :tabChoosed="tabChoosed" />
  19. </div>
  20. <!-- 诊断 width:200px;
  21. <div v-if="false" style="width:200px;">
  22. <SumDiagnosis :patientRegisterId="dataTransOpts.tableS.patient_register.id" />
  23. </div>
  24. -->
  25. </div>
  26. <div>
  27. <!-- 总检状态 -->
  28. <SumPREdit />
  29. <!-- 检查情况 -->
  30. <div style="margin-top: -6px;">
  31. <SumAsbItemStatus :patientRegisterId="dataTransOpts.tableS.patient_register.id"
  32. :tabChoosed="tabChoosed" />
  33. </div>
  34. </div>
  35. </el-tab-pane>
  36. <el-tab-pane label="明细结果" name="2">
  37. <CheckDetails :patientRegisterId="dataTransOpts.tableS.patient_register.id" :tabChoosed="tabChoosed" :refParams="{ place: 'summary' }"/>
  38. </el-tab-pane>
  39. <el-tab-pane label="危急值和随访值" name="3">
  40. <AsbitemCriticalValue :tabChoosed="tabChoosed" :refParams="{ place: 'summary' }"/>
  41. </el-tab-pane>
  42. <!--
  43. <el-tab-pane label="项目对比" name="4">
  44. <SumItemsType :patientId="dataTransOpts.tableS.patient_register.patientId" />
  45. </el-tab-pane>
  46. -->
  47. <el-tab-pane label="本次图文报告" name="4">
  48. <ImageTextReport :refParams="{ place: 'summary' }"/>
  49. </el-tab-pane>
  50. <el-tab-pane label="历次结果" name="5">
  51. <SumItems :patientId="dataTransOpts.tableS.patient_register.patientId" :tabChoosed="tabChoosed" :refParams="{ place: 'summary' }"/>
  52. </el-tab-pane>
  53. <el-tab-pane label="历次综述" name="6">
  54. <SumHistory :patientId="dataTransOpts.tableS.patient_register.patientId" :tabChoosed="tabChoosed" :refParams="{ place: 'summary' }"/>
  55. </el-tab-pane>
  56. <!--
  57. <el-tab-pane label="职业病" name="7">
  58. <OccDiseaseConclusion :tabChoosed="tabChoosed" />
  59. </el-tab-pane>
  60. -->
  61. </el-tabs>
  62. </div>
  63. </div>
  64. <div style="width: 110px">
  65. <ButtonList />
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. </template>
  71. <script>
  72. import { mapState } from "vuex";
  73. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  74. import { tcdate } from "../../utlis/proFunc";
  75. import PatientRegisterBase from "../../components/doctorCheck/PatientRegisterBase.vue";
  76. import ButtonList from "../../components/sumDoctorCheck/ButtonList.vue";
  77. import SumSug from "../../components/sumDoctorCheck/SumSug.vue";
  78. import SumDiagnosis from "../../components/sumDoctorCheck/SumDiagnosis.vue";
  79. import SumPREdit from "../../components/sumDoctorCheck/SumPREdit.vue";
  80. import SumAsbItemStatus from "../../components/sumDoctorCheck/SumAsbItemStatus.vue";
  81. import CheckDetails from "../../components/sumDoctorCheck/CheckDetails.vue";
  82. import SumItemsType from "../../components/sumDoctorCheck/SumItemsType.vue";
  83. import SumItems from "../../components/sumDoctorCheck/SumItems.vue";
  84. import SumHistory from "../../components/sumDoctorCheck/SumHistory.vue";
  85. import ImageTextReport from "../../components/occDisease/ImageTextReport.vue";
  86. import AsbitemCriticalValue from "../../components/sumDoctorCheck/AsbitemCriticalValue.vue";
  87. export default {
  88. components: {
  89. PatientRegisterBase,
  90. ButtonList,
  91. SumSug,
  92. SumDiagnosis,
  93. SumPREdit,
  94. SumAsbItemStatus,
  95. CheckDetails,
  96. SumItemsType,
  97. SumItems,
  98. SumHistory,
  99. ImageTextReport,
  100. AsbitemCriticalValue
  101. },
  102. data() {
  103. return {
  104. tabChoosed: "1",
  105. };
  106. },
  107. created() {
  108. if (this.$route.query.patient_register) {
  109. this.dataTransOpts.tableS.patient_register = this.$route.query.patient_register
  110. } else {
  111. this.dataTransOpts.tableS.patient_register = { id: '', patientRegisterNo: '' }
  112. this.dataTransOpts.tableS.register_check = { id: '' }
  113. }
  114. },
  115. //挂载完成
  116. mounted() {
  117. this.dictInit();
  118. // document.addEventListener("contextmenu", (e) => {
  119. // if (this.$peisAPI) {
  120. // e.preventDefault();
  121. // this.$peisAPI.contextMenuForPeis()
  122. // }
  123. // })
  124. },
  125. computed: {
  126. ...mapState([
  127. "window",
  128. "dict",
  129. "dataTransOpts",
  130. "patientRegister",
  131. "customerOrg",
  132. "sumDoctorCheck",
  133. ]),
  134. },
  135. methods: {
  136. //数据初始化
  137. dictInit() {
  138. //性别
  139. getapi("/api/app/sex").then((res) => {
  140. if (res.code == 1) {
  141. this.dict.sex = res.data;
  142. }
  143. });
  144. //体检中心
  145. getapi("/api/app/organization-units/organization-unit-by-is-peis").then(
  146. (res) => {
  147. if (res.code == 1) {
  148. this.dict.organization = res.data;
  149. }
  150. }
  151. );
  152. //体检单位
  153. // getapi("/api/app/customer-org/in-filter").then((res) => {
  154. // if (res.code == 1) {
  155. // this.dict.customerOrg = res.data;
  156. // }
  157. // });
  158. //体检类别
  159. getapi("/api/app/medical-type/in-filter").then((res) => {
  160. if (res.code == 1) {
  161. this.dict.medicalType = res.data;
  162. }
  163. });
  164. //人员类别
  165. getapi("/api/app/personnel-type/in-filter").then((res) => {
  166. if (res.code == 1) {
  167. this.dict.personnelType = res.data;
  168. }
  169. });
  170. //婚姻状况
  171. getapi("/api/app/MaritalStatus/GetMaritalStatusList").then((res) => {
  172. if (res.code == 1) {
  173. this.dict.maritalStatus = res.data;
  174. }
  175. });
  176. //性激素期
  177. getapi("/api/app/sex-hormone-term/in-filter").then((res) => {
  178. if (res.code == 1) {
  179. this.dict.sexHormoneTerm = res.data;
  180. }
  181. });
  182. //民族
  183. getapi("/api/app/nation/in-filter").then((res) => {
  184. if (res.code == 1) {
  185. this.dict.nation = res.data;
  186. }
  187. });
  188. //籍惯 ,出生地
  189. getapi("/api/app/birth-place/in-filter").then((res) => {
  190. if (res.code == 1) {
  191. this.dict.birthPlace = res.data;
  192. }
  193. });
  194. //套餐
  195. postapi("/api/app/medicalpackage/GetBasicList", {}).then((res) => {
  196. if (res.code == 1) {
  197. this.dict.medicalPackage = res.data;
  198. }
  199. });
  200. //分组,所有分组,不限单位,不限次数
  201. // getapi("/api/app/customer-org-group").then((res) => {
  202. // if (res.code == 1) {
  203. // this.dict.customerOrgGroupAll = res.data.items;
  204. // }
  205. // });
  206. //支付方式
  207. // getapi("/api/app/pay-mode").then((res) => {
  208. // if (res.code == 1) {
  209. // this.dict.payMode = res.data;
  210. // }
  211. // });
  212. //体检类别 树结构
  213. getapi("/api/app/item-type/by-code-all").then((res) => {
  214. if (res.code == 1) {
  215. this.dict.itemTypeTree = res.data;
  216. tcdate(this.dict.itemTypeTree);
  217. }
  218. });
  219. postapi("/api/app/asbitem/GetBasicList", { isFilterActive: 'Y' }).then((res) => {
  220. if (res.code == 1) {
  221. this.dict.asbItemAll = res.data;
  222. }
  223. });
  224. console.log("dict", this.dict);
  225. },
  226. },
  227. //监听事件()
  228. watch: {
  229. "dataTransOpts.tableS.patient_register.id": {
  230. // immediate:true,
  231. handler(newVal, oldVal) {
  232. console.log(`watch 总检--patient_register_id newVal: ${newVal}, oldVal: ${oldVal} `);
  233. if (newVal != oldVal) {
  234. switch (this.tabChoosed) {
  235. case '1':
  236. break;
  237. case '4':
  238. this.dataTransOpts.plus.OccDisease++
  239. break;
  240. default:
  241. this.dataTransOpts.refresh.sumDoctor.M++
  242. break;
  243. }
  244. }
  245. }
  246. },
  247. "tabChoosed": {
  248. // immediate:true,
  249. handler(newVal, oldVal) {
  250. console.log(`watch 总检--tabs newVal: ${newVal}, oldVal: ${oldVal} `);
  251. if (newVal != oldVal && newVal != '1') {
  252. switch (newVal) {
  253. case '4':
  254. this.dataTransOpts.plus.OccDisease++
  255. break;
  256. default:
  257. this.dataTransOpts.refresh.sumDoctor.M++
  258. break;
  259. }
  260. }
  261. }
  262. },
  263. },
  264. };
  265. </script>
  266. <style scoped>
  267. @import '../../assets/css/global_card.css';
  268. @import '../../assets/css/global_input.css';
  269. @import '../../assets/css/global_table.css';
  270. @import '../../assets/css/global.css';
  271. </style>