caseViews.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967
  1. <template>
  2. <div id="MyDiv" :class="{ nocopy: $route.query.status }">
  3. <el-row type="flex" justify="space-between" style="margin-bottom: 10px;">
  4. <el-tabs v-model="currentTab">
  5. <el-tab-pane label="未编目首页" name="1" />
  6. <el-tab-pane label="已编目首页" name="2" />
  7. </el-tabs>
  8. <div v-if="$route.query.from == 'review'">
  9. <el-button type="primary" @click="caseShow = !caseShow">申诉问题</el-button>
  10. </div>
  11. <div v-else>
  12. <el-button type="primary" @click="toExamine" :disabled="review_status == 2">审核通过</el-button>
  13. <el-button type="primary" @click="caseShow = !caseShow">病历智审结果</el-button>
  14. </div>
  15. </el-row>
  16. <div class="cont_container">
  17. <!-- 左侧点击列表部分 -->
  18. <div class="cont-left-tiem">
  19. <ul class="el-menu-vertical-demo el-menu">
  20. <li class="li-left-item" :class="is_active == 0 ? 'is-active' : ''" @click="clickTree(0, '住院病案')">
  21. <span>住院病案</span>
  22. </li>
  23. <li v-for="(item, index) in treeList" :key="index"
  24. :class="[is_active == item.bllb && item.bllb != 49 ? 'is-active' : '', item.bllb == 49 || [2000002, 294, 303, 329, 288, 34, 87].includes(item.bllb) ? 'li-left-itemyz' : 'li-left-item']"
  25. @click="clickTree(item.bllb, item.name, item)">
  26. <span>{{ item.name }}</span>
  27. <div v-if="item.bllb == 49">
  28. <div :class="['li-left-item-li', is_active == '长期医嘱' ? 'is-active' : '']" data-li="49-1" :id="item.bllb">
  29. 长期医嘱</div>
  30. <div :class="['li-left-item-li', is_active == '临时医嘱' ? 'is-active' : '']" data-li="49-2" :id="item.bllb">
  31. 临时医嘱</div>
  32. </div>
  33. <div v-if="item.bllb == 2000002">
  34. <div v-for="(jitem, jindex) in item.list" :id="jitem.type" :key="jindex"
  35. :class="['li-left-item-li', is_active == jitem.ExamType ? 'is-active' : '']">
  36. {{ jitem.name }}
  37. </div>
  38. </div>
  39. <!-- 病程记录、手术记录 -->
  40. <div v-if="[294, 303, 329, 288, 34, 87].includes(item.bllb)">
  41. <div v-for="(jitem, jindex) in item.list" :id="`${jitem.blbh}`" :key="jindex"
  42. :class="['li-left-item-li', is_active == jitem.blbh ? 'is-active' : '']" :title="jitem.name.trim()">
  43. {{ jitem.name.trim() }}
  44. </div>
  45. </div>
  46. </li>
  47. </ul>
  48. </div>
  49. <div class="cont-left-file" @mouseup.prevent="handleMouseupHandle" @contextmenu.prevent="openMenu($event)">
  50. <div v-if="is_active == 0">
  51. <mainHomePage ref="main" :data="mainHomeData" :if-file="ifFile" />
  52. </div>
  53. <div v-else-if="parentType == 292">
  54. <!-- 入院记录 -->
  55. <admissionRecord :data="admissionRecord" :if-file="ifFile" />
  56. </div>
  57. <div v-else-if="parentType == '1' && is_active == 1">
  58. <!-- 出院记录 -->
  59. <OutHospitalRecord :data="outHospitalRecordData" />
  60. </div>
  61. <div v-else-if="parentType == 294">
  62. <!-- 病程记录 -->
  63. <div>病程记录</div>
  64. <CaseRecord v-if="caseRecodeInfo.is_format === 1" :data="caseRecodeInfo" />
  65. <NoFormatText v-else :text="caseRecodeInfo.content" :data="caseRecodeInfo" name="" />
  66. </div>
  67. <div v-else-if="parentType == 303">
  68. <!-- 手术记录 -->
  69. <template v-if="surgeryData.is_format">
  70. <ShouShuRecord1 v-if="surgeryData.type === 1" :data="surgeryData" />
  71. <ShouShuRecord2 v-if="surgeryData.type === 2" :data="surgeryData" />
  72. <ShouShuRecord4 v-if="surgeryData.type === 4" :data="surgeryData" />
  73. </template>
  74. <NoFormatText v-else :text="surgeryData.content" :data="surgeryData" :name="blname_title" />
  75. </div>
  76. <div v-else-if="is_active == '长期医嘱'">
  77. <!-- 长期医嘱 -->
  78. <medicalAdvice :data-obj="longAdvice" />
  79. </div>
  80. <div v-else-if="is_active == '临时医嘱'">
  81. <!-- 临时医嘱 -->
  82. <medicalTemporary :data-obj="happensAdvice" />
  83. </div>
  84. <div v-else-if="parentType == '2000002' && is_active == '1'">
  85. <!-- 病历图文报告 -->
  86. <caseImageText :data-obj-arr="pacsDetail" />
  87. </div>
  88. <div v-else-if="parentType == '2000002' && is_active == '2'">
  89. <!-- 超声诊断 -->
  90. <ultrasound :data-obj-arr="pacsDetail" />
  91. </div>
  92. <div v-else-if="parentType == '2000002' && is_active == '3'">
  93. <!-- 影像诊断 -->
  94. <imaging :data-obj-arr="pacsDetail" />
  95. </div>
  96. <div v-else-if="parentType == '2000002' && is_active == '4'">
  97. <!-- 为心电 -->
  98. <electrocar :data-obj-arr="pacsDetail" />
  99. </div>
  100. <div v-else-if="parentType == '2000002' && is_active == '5'">
  101. <!-- 检验报告单 病理 -->
  102. <checkout :data-obj-arr="pacsDetail" />
  103. </div>
  104. <div v-else-if="parentType == '2000002' && is_active == '6'">
  105. <!-- 內窥镜检查报告 病理 -->
  106. <sightGlass :data-obj-arr="pacsDetail" />
  107. </div>
  108. <div v-else-if="is_active == 288 || is_active == 18">
  109. <!-- 死亡记录 或者 24小时内入院记录 -->
  110. <DeathText :data-obj-arr="dataObj" v-if="update" />
  111. </div>
  112. <div v-else>
  113. <div v-if="update">
  114. <newContFile v-for="(item, index) of text" :key="index" :text="item.HJNR" :name="name_title" />
  115. </div>
  116. </div>
  117. </div>
  118. <div class="case-content" v-show="caseShow">
  119. <!-- status 不存在 意味着不脱敏、医院自助查询 -->
  120. <template v-if="!$route.query.status">
  121. <!-- 住院病案质控 -->
  122. <CaseQualityBox v-if="results.data" @clickAppealBtn="clickAppealBtn" :width="340"
  123. :height="820" ref="CaseQualityBox" :caseShow="caseShow" @close="handleClose"
  124. :MED_REC_ID="mainHomeData.MED_REC_ID" :CWH="mainHomeData.CWH" :AAA29="mainHomeData.AAA29" @changeTab="(e) => currentTab = e"/>
  125. </template>
  126. </div>
  127. <!-- 添加质控结果 -->
  128. <CreateControlResultDialogVue v-if="dialogData.bSwitch" :AAA28="mainHomeData.AAA28" :data="dialogData"
  129. @refresh="handelRefreshResults" :MED_REC_ID="mainHomeData.MED_REC_ID" :CWH="mainHomeData.CWH"
  130. :AAA29="mainHomeData.AAA29" :JSKS="mainHomeData.AAC11C" @close="handleUpdate" :currentTreeItem="currentTreeItem"/>
  131. <!-- 右键菜单 -->
  132. <div class="dialog-box">
  133. <el-dialog title="通知" :show-close="false" :visible.sync="gridCustomizeVisible" width='350px'>
  134. 请确认是否编辑整改通知
  135. <span slot="footer" class="dialog-footer">
  136. <el-button @click="gridCustomizeVisible = false">取 消</el-button>
  137. <el-button type="primary" @click="onCreate">确 认</el-button>
  138. </span>
  139. </el-dialog>
  140. </div>
  141. <!-- <ul v-show="gridCustomizeVisible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu">
  142. <li @click="onCreate">添加</li>
  143. </ul> -->
  144. </div>
  145. <!-- 审核申诉弹窗 -->
  146. <div class="dialog-box">
  147. <el-dialog title="审核结果" :visible.sync="dialogVisible" :close-on-click-modal="false" width="340px">
  148. <el-form ref="form" :model="alertForm">
  149. <el-form-item label="驳回原因:">
  150. <el-input v-model="alertForm.describe" type="textarea" placeholder="请输入驳回原因" />
  151. </el-form-item>
  152. <el-form-item label="审核科室:">
  153. <el-input v-model="alertForm.case_document" placeholder="审核科室" />
  154. <!-- <el-select v-model="alertForm.case_document">
  155. <el-option v-for="(v,k) in groupList" :key="k" :label="v.name" :value="v.name"/>
  156. </el-select> -->
  157. </el-form-item>
  158. <el-form-item label="审核医师:">
  159. <el-input v-model="alertForm.case_docter" placeholder="审核医师" />
  160. </el-form-item>
  161. <el-form-item label="手机号">
  162. <el-input v-model="alertForm.case_docter_mobile" placeholder="手机号" />
  163. </el-form-item>
  164. </el-form>
  165. <span slot="footer" class="dialog-footer">
  166. <el-button type="primary" @click="editSubmit">确 定</el-button>
  167. <el-button @click="dialogVisible = false">取 消</el-button>
  168. </span>
  169. </el-dialog>
  170. </div>
  171. </div>
  172. </template>
  173. <script>
  174. import Mmenu from '@/components/m-menu'
  175. import mainHomePage from './contFile/mainHomePage'
  176. import newContFile from './contFile/newContFile'
  177. import admissionRecord from './contFile/admissionRecord'
  178. import medicalAdvice from './contFile/medicalAdvice'
  179. import medicalTemporary from './contFile/medicalTemporary'
  180. import caseImageText from './report/caseImageText'
  181. import ultrasound from './report/ultrasound'
  182. import imaging from './report/imaging'
  183. import electrocar from './report/electrocar'
  184. import checkout from './report/checkout'
  185. import sightGlass from './report/sightGlass'
  186. import CaseRecord from './components/CaseRecord2.vue'
  187. import ShouShuRecord1 from './components/ShouShuRecord1.vue'
  188. import ShouShuRecord2 from './components/ShouShuRecord2.vue'
  189. import ShouShuRecord4 from './components/ShouShuRecord4.vue'
  190. import NoFormatText from './components/NoFormatText.vue'
  191. import OutHospitalRecord from './components/OutHospitalRecord.vue'
  192. import CaseQualityBox from './components/CaseQualityBox2.vue'
  193. import DeathText from './components/DeathText.vue'
  194. import CreateControlResultDialogVue from './components/CreateControlResultDialog.vue'
  195. import { getTreeList, getBlMenuList, getCaseQuality, getCasePlatform, getAllCase, getLong, getTemporary, getPacsData, getBcData, getHomeData, getSurgeryData, applyForReview } from '@/api/qc'
  196. import { getCaseExamineAppeal } from '@/api/admin'
  197. import { getToken, removeToken } from '@/utils/auth'
  198. export default {
  199. components: {
  200. Mmenu,
  201. mainHomePage,
  202. newContFile,
  203. admissionRecord,
  204. medicalAdvice,
  205. medicalTemporary,
  206. caseImageText,
  207. ultrasound,
  208. imaging,
  209. electrocar,
  210. sightGlass,
  211. checkout,
  212. CaseRecord,
  213. ShouShuRecord1,
  214. ShouShuRecord2,
  215. ShouShuRecord4,
  216. NoFormatText,
  217. OutHospitalRecord,
  218. CaseQualityBox,
  219. DeathText,
  220. CreateControlResultDialogVue
  221. },
  222. directives: {},
  223. filters: {},
  224. extends: {},
  225. mixins: {},
  226. props: {},
  227. data() {
  228. return {
  229. currentTreeItem: null,
  230. currentTab: "1",
  231. mainHomeData: {},
  232. admissionRecord: {},
  233. longAdvice: {},
  234. happensAdvice: {},
  235. valData: '',
  236. ifFile: false,
  237. treeList: [],
  238. is_active_blbh: 0,
  239. is_active: 0,
  240. parentType: 0,
  241. name_title: '',
  242. text: [],
  243. update: true,
  244. titleName: '住院病案',
  245. pacsDetail: {},
  246. // 病程记录详情
  247. caseRecodeInfo: {
  248. is_format: 1
  249. },
  250. surgeryData: {
  251. mzfj: [],
  252. ssqk: [],
  253. sscxsj: [],
  254. sslb: [],
  255. is_format: 0
  256. },
  257. outHospitalRecordData: {
  258. name: {},
  259. ry_time: {},
  260. sex: {},
  261. age: {},
  262. cy_time: {},
  263. zyts: {},
  264. ryqk: {},
  265. cbzd: {},
  266. zljg: {},
  267. cyqk: {},
  268. cyzd: {},
  269. cyyz: {}
  270. },
  271. dataObj: [],
  272. results: null,
  273. dialogData: {
  274. bSwitch: false,
  275. text: '',
  276. blbh: ''
  277. },
  278. top: 0,
  279. left: 0,
  280. gridCustomizeVisible: false,
  281. dialogVisible: false,
  282. alertForm: {},
  283. appealInfo: {},
  284. review_status: 0,
  285. caseShow: false,
  286. resultsData: null,
  287. }
  288. },
  289. computed: {
  290. bcjlLiIds() {
  291. // 病程记录子项数据
  292. const arr = Object.values(this.treeList).filter(item => item.bllb === 294)
  293. const liIds = []
  294. if (arr.length) {
  295. if (arr[0].list) {
  296. for (let i = 0; i < arr[0].list.length; i++) {
  297. liIds.push(arr[0].list[i].blbh)
  298. }
  299. }
  300. }
  301. return liIds
  302. },
  303. shoushuLiIds() {
  304. // 病程记录子项数据
  305. const arr = Object.values(this.treeList).filter(item => item.bllb === 303)
  306. const liIds = []
  307. if (arr.length) {
  308. if (arr[0].list) {
  309. for (let i = 0; i < arr[0].list.length; i++) {
  310. liIds.push(arr[0].list[i].blbh)
  311. }
  312. }
  313. }
  314. return liIds
  315. },
  316. blname_title() {
  317. let title
  318. const type = this.surgeryData.type
  319. if (type === 1) {
  320. title = '手术风险评估表'
  321. } else if (type === 2) {
  322. title = '手术安全核查表'
  323. } else if (type === 3) {
  324. title = '手术同意书'
  325. } else if (type === 4) {
  326. title = '手术记录'
  327. }
  328. return title
  329. }
  330. },
  331. watch: {
  332. //变量名
  333. gridCustomizeVisible(val) {
  334. if (val) {
  335. //点击事件,调用方法
  336. document.body.addEventListener("click", this.closeMenu);
  337. } else {
  338. document.body.removeEventListener("click", this.closeMenu);
  339. }
  340. },
  341. currentTab() {
  342. this.funQuery()
  343. }
  344. },
  345. mounted() {
  346. this.getInitData();
  347. },
  348. methods: {
  349. getInitData() {
  350. this.valData = this.$route.query.ZYH
  351. if (this.valData) {
  352. this.funQuery()
  353. this.getCaseQualityResults()
  354. }
  355. this.getTree();
  356. this.getDataExamine();
  357. },
  358. //申述提交
  359. editSubmit() {
  360. let that = this;
  361. let params = {
  362. id: that.appealInfo.id,
  363. status: that.appealInfo.status,
  364. describe: that.alertForm.describe,
  365. case_document: that.alertForm.case_document,
  366. case_docter: that.alertForm.case_docter,
  367. case_docter_mobile: that.alertForm.case_docter_mobile,
  368. }
  369. let index = that.appealInfo.index;
  370. getCaseExamineAppeal(params).then(res => {
  371. const { c } = res
  372. if (c == 0) {
  373. that.$message('提交成功');
  374. that.dialogVisible = false;
  375. that.alertForm = {};
  376. that.$refs.CaseQualityBox.editSubmit(index);
  377. that.$refs.CaseQualityBox.qualityBazb(index);
  378. } else {
  379. that.$message('提交失败');
  380. }
  381. })
  382. },
  383. clickAppealBtn(e) {
  384. let that = this;
  385. that.appealInfo = e;
  386. that.alertForm.case_document = localStorage.getItem('KSMC');
  387. that.alertForm.case_docter = localStorage.getItem('realname');
  388. if (e.status == 1) {
  389. // 通过
  390. that.editSubmit();
  391. } else {
  392. that.dialogVisible = true;
  393. }
  394. },
  395. // 刷新质控结果
  396. handelRefreshResults() {
  397. this.getCaseQualityResults()
  398. if (this.$refs.CaseQualityBox) {
  399. this.$refs.CaseQualityBox.getTabsData();
  400. }
  401. },
  402. // 鼠标右击事件
  403. openMenu(e) {
  404. //获取右击时得坐标
  405. var x = e.pageX;
  406. var y = e.pageY;
  407. //top,left在data种定义,初始值为0
  408. //top,left是右键菜单得坐标值,可以通过运算调整
  409. this.top = y - 80;
  410. this.left = x - 200;
  411. if (this.dialogData.text) {
  412. this.gridCustomizeVisible = true;
  413. }
  414. },
  415. closeMenu() {
  416. this.gridCustomizeVisible = false;
  417. },
  418. // 鼠标右击事件
  419. onCreate() {
  420. this.dialogData.bSwitch = true
  421. },
  422. // 鼠标事件
  423. handleMouseupHandle() {
  424. const text = window.getSelection().toString()
  425. if (text.trim().length) {
  426. this.dialogData.blbh = this.is_active_blbh
  427. this.dialogData.text = text
  428. }
  429. },
  430. // 获取新病案指控结果
  431. getCaseQualityResults() {
  432. let that = this;
  433. const params = {
  434. id: that.valData
  435. }
  436. getCaseQuality(params).then(res => {
  437. that.results = null;
  438. that.$nextTick(() => {
  439. that.results = res.data;
  440. })
  441. }).catch(e => {
  442. console.log(e)
  443. })
  444. },
  445. reload() {
  446. // 移除组件
  447. this.update = false
  448. // 在组件移除后,重新渲染组件
  449. // this.$nextTick可实现在DOM 状态更新后,执行传入的方法。
  450. this.$nextTick(() => {
  451. this.update = true
  452. })
  453. },
  454. funEdit() {
  455. this.ifFile = true
  456. this.$message('errer:功能待开发')
  457. },
  458. getback() {
  459. this.$router.go(-1)
  460. },
  461. /**
  462. * 跳转对应病历首页
  463. */
  464. getBlankIndexss(item) {
  465. this.$refs.main.getBlankIndex(item)
  466. },
  467. funQuery() {
  468. const params = {
  469. [this.currentTab == '1' ? 'ZYH' : 'id']: this.valData
  470. }
  471. if (this.$route.query.status) {
  472. params.is_tm = 1
  473. }
  474. if(this.currentTab == '1') {
  475. this.$axios.post('/home_sz_quality/blInfo', params).then(res => {
  476. this.mainHomeData = res.data
  477. this.is_active_blbh = this.mainHomeData.MED_REC_ID
  478. })
  479. } else {
  480. getHomeData(params).then(res => {
  481. this.mainHomeData = res.data
  482. this.is_active_blbh = this.mainHomeData.MED_REC_ID
  483. })
  484. }
  485. },
  486. getTree() {
  487. const that = this
  488. const pramse = {
  489. id: this.valData
  490. }
  491. this.$axios.post('/getTree', pramse).then(res => {
  492. that.treeList = res.data
  493. })
  494. },
  495. clickTree(b, n, item) {
  496. console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', item)
  497. this.currentTreeItem = {...item}
  498. if (item) {
  499. if (item.blbh) {
  500. this.is_active_blbh = item.blbh
  501. } else {
  502. this.is_active_blbh = event.target.id
  503. }
  504. } else {
  505. // this.is_active_blbh = this.mainHomeData.MED_REC_ID
  506. this.is_active = 0;
  507. this.funQuery();
  508. }
  509. this.titleName = n
  510. this.parentType = b
  511. const that = this
  512. // 判断点击的
  513. if (event.target.id || !item?.list) {
  514. if (event.target.outerText == '长期医嘱' || event.target.outerText == '临时医嘱') {
  515. that.is_active = event.target.outerText;
  516. } else if (b == 2000002) {
  517. that.is_active = event.target.id;
  518. } else if (b == 294) {
  519. that.is_active = event.target.id;
  520. } else if (b == 303) {
  521. that.is_active = event.target.id;
  522. } else {
  523. that.is_active = b;
  524. }
  525. }
  526. that.name_title = n
  527. if (b != 0 && b != 292 && b != 1) {
  528. const params = {
  529. MED_REC_ID: that.valData,
  530. bllb: b
  531. }
  532. if (this.$route.query.status) {
  533. params.is_tm = 1
  534. }
  535. this.$axios.post('/getAllCase', params).then(res => {
  536. that.text = res.data
  537. that.dataObj = res.data
  538. that.reload()
  539. })
  540. } else if (b == 292) {
  541. // 获取详情
  542. const params = {
  543. id: this.valData,
  544. bllb: b
  545. }
  546. if (this.$route.query.status) {
  547. params.is_tm = '1'
  548. }
  549. getCasePlatform(params).then(res => {
  550. this.admissionRecord = res.data
  551. })
  552. } else if (b == 1) {
  553. // 获取详情
  554. const params = {
  555. id: this.valData,
  556. bllb: b
  557. }
  558. if (this.$route.query.status) {
  559. params.is_tm = 1
  560. }
  561. getCasePlatform(params).then(res => {
  562. this.outHospitalRecordData = res.data;
  563. })
  564. }
  565. if (that.is_active == '长期医嘱') {
  566. // 长期医嘱
  567. const params = {
  568. AAA28: that.valData
  569. }
  570. if (this.$route.query.status) {
  571. params.is_tm = 1
  572. }
  573. getLong(params).then(res => {
  574. this.longAdvice = res.data
  575. })
  576. }
  577. if (that.is_active == '临时医嘱') {
  578. // 临时医嘱
  579. const params = {
  580. AAA28: that.valData
  581. }
  582. if (this.$route.query.status) {
  583. params.is_tm = 1
  584. }
  585. getTemporary(params).then(res => {
  586. this.happensAdvice = res.data
  587. })
  588. }
  589. if (that.parentType == '2000002' && that.is_active != '') {
  590. // 报告单 相关
  591. const parm = {
  592. type: Number(that.is_active)
  593. }
  594. if (this.$route.query.status) {
  595. parm.is_tm = 1
  596. }
  597. const treeListArr = Object.values(that.treeList)
  598. treeListArr.forEach((item, index) => {
  599. if (item.bllb == 2000002) {
  600. parm.zyh = Number(item.list[0].ZYH)
  601. }
  602. })
  603. getPacsData(parm).then(res => {
  604. this.pacsDetail = res.data
  605. })
  606. }
  607. // 病程记录
  608. if (item.bllb === 294) {
  609. if (that.is_active) {
  610. // 请求前先重置之前的数据
  611. that.caseRecodeInfo = {}
  612. const parm = { blbh: that.is_active }
  613. if (this.$route.query.status) {
  614. parm.is_tm = 1
  615. }
  616. getBcData(parm).then(res => {
  617. that.caseRecodeInfo = res.data[0].bc_data
  618. that.caseRecodeInfo.is_format = res.data[0].is_format
  619. })
  620. }
  621. }
  622. // 手术记录
  623. if (item.bllb === 303) {
  624. if (that.is_active) {
  625. // 请求前先重置之前的数据
  626. that.surgeryData = {}
  627. const parm = { blbh: that.is_active }
  628. if (this.$route.query.status) {
  629. parm.is_tm = 1
  630. }
  631. getSurgeryData(parm).then(res => {
  632. that.surgeryData = res.p[0].surgery_data
  633. that.surgeryData.is_format = res.p[0].is_format
  634. })
  635. }
  636. }
  637. },
  638. /**
  639. * 批量审核
  640. */
  641. toExamine() {
  642. this.$confirm('是否确认通过?', '提示', {
  643. confirmButtonText: '是',
  644. cancelButtonText: '否',
  645. type: 'warning'
  646. }).then(() => {
  647. var ZYH = [this.valData];
  648. applyForReview({ ZYH: ZYH, status: 2 }).then(res => {
  649. this.$message.success(res.msg || '申请成功');
  650. this.getDataExamine();
  651. this.$router.back();
  652. }).catch(error => {
  653. console.log(error);
  654. })
  655. }).catch(() => {
  656. });
  657. },
  658. /**
  659. * 获取审核状态
  660. */
  661. getDataExamine() {
  662. var ZYH = this.valData;
  663. this.$axios.post('/getDataExamine', { ZYH: ZYH }).then(res => {
  664. this.review_status = res.data.review_status ?? 0;
  665. })
  666. },
  667. handleAnimationEnd(event) {
  668. if (event.animationName === 'casehidden' && !this.caseShow) {
  669. // 动画结束后隐藏元素
  670. this.caseShow = false;
  671. }
  672. },
  673. handleClose() {
  674. this.caseShow = false; // 关闭弹框
  675. },
  676. handleUpdate() {
  677. this.dialogData.bSwitch = false
  678. this.getInitData();
  679. this.caseShow = true
  680. }
  681. }
  682. }
  683. </script>
  684. <style lang="scss" scoped>
  685. #MyDiv {
  686. margin: 0;
  687. padding: 0 !important;
  688. }
  689. .nocopy {
  690. user-select: none;
  691. }
  692. .header {
  693. margin: 10px 20px;
  694. text-align: right;
  695. display: flex;
  696. justify-content: flex-end;
  697. }
  698. .cont_container {
  699. display: flex;
  700. justify-content: center;
  701. height: calc(100% - 64px)
  702. }
  703. .cont-left-tiem {
  704. width: 250px;
  705. // margin: 0 0 0 15px;
  706. // min-height: 650px;
  707. height: 100%;
  708. overflow-y: scroll;
  709. background: #ffffff;
  710. }
  711. .cont-left-file {
  712. flex: 1;
  713. // min-height: 650px;
  714. margin: 0 5px;
  715. height: 100%;
  716. overflow-y: scroll;
  717. background: #ffffff;
  718. border: 1px solid #e2e2e2;
  719. padding: 10px;
  720. }
  721. .li-router {
  722. display: inline-block;
  723. width: 100%;
  724. height: 100%;
  725. }
  726. .li-left-item {
  727. line-height: 56px;
  728. font-size: 14px;
  729. color: #303133;
  730. padding: 0 20px;
  731. cursor: pointer;
  732. -webkit-transition: border-color 0.3s, background-color 0.3s, color 0.3s;
  733. transition: border-color 0.3s, background-color 0.3s, color 0.3s;
  734. -webkit-box-sizing: border-box;
  735. box-sizing: border-box;
  736. }
  737. .li-left-itemyz {
  738. line-height: 56px;
  739. font-size: 14px;
  740. color: #303133;
  741. padding-left: 20px;
  742. -webkit-transition: border-color 0.3s, background-color 0.3s, color 0.3s;
  743. transition: border-color 0.3s, background-color 0.3s, color 0.3s;
  744. -webkit-box-sizing: border-box;
  745. box-sizing: border-box;
  746. .li-left-item-li {
  747. width: 100%;
  748. line-height: 36px;
  749. padding: 0 20px;
  750. cursor: pointer;
  751. white-space: nowrap;
  752. overflow: hidden;
  753. text-overflow: ellipsis;
  754. }
  755. .li-left-item-li:hover {
  756. outline: 0;
  757. background-color: #ecf5ff;
  758. }
  759. }
  760. .li-left-item:focus,
  761. .li-left-item:hover {
  762. outline: 0;
  763. background-color: #ecf5ff;
  764. }
  765. .is-active {
  766. color: #409eff;
  767. }
  768. .dialog-box {
  769. ::v-deep .el-dialog__header {
  770. padding: 10px 20px;
  771. background: rgb(27, 100, 169);
  772. color: #fff !important;
  773. .el-dialog__title {
  774. color: #fff;
  775. }
  776. .el-dialog__headerbtn {
  777. top: 14px;
  778. }
  779. }
  780. ::v-deep .el-dialog__body {
  781. .el-form-item {
  782. background: #fff;
  783. }
  784. .el-input {
  785. width: 100%;
  786. input {
  787. height: 35px;
  788. border: 1px solid #C0C4CC;
  789. border-radius: 6px;
  790. }
  791. }
  792. }
  793. }
  794. </style>
  795. <style>
  796. /* ================================== 文本形式样式 ↓ ======================== */
  797. .refachInput span {
  798. height: auto;
  799. line-height: 1;
  800. padding: 10px 0;
  801. }
  802. .refachInput span.refachInput-text {
  803. padding-left: 12px;
  804. }
  805. .el-row--flex.is-justify-space-around {
  806. justify-content: flex-start;
  807. }
  808. .member-infobox {
  809. width: 100%;
  810. }
  811. .member-infobox .info-box-1 {
  812. /* display: flex;
  813. flex-wrap: wrap; */
  814. margin-top: 20px;
  815. }
  816. .infoBox-items {
  817. width: auto;
  818. display: flex;
  819. align-items: center;
  820. padding: 8px 0;
  821. }
  822. .padding-left20 {
  823. padding-left: 20px;
  824. }
  825. .padding-right20 {
  826. padding-right: 20px;
  827. }
  828. .infoBox-title {
  829. color: #333;
  830. font-size: 12px;
  831. font-weight: bold;
  832. }
  833. .infoBox-items-text {
  834. color: #666;
  835. font-size: 12px;
  836. padding-left: 5px;
  837. padding-right: 20px;
  838. }
  839. .title-ff0000 {
  840. color: #ff0000;
  841. }
  842. /* 高亮 */
  843. .choose-twinkle {
  844. font-size: 20px;
  845. color: red;
  846. font-weight: 600;
  847. background: yellow;
  848. }
  849. .table-value-look {
  850. padding-left: 12px;
  851. color: #ff0000;
  852. cursor: pointer;
  853. }
  854. /* 右键菜单 */
  855. .contextmenu {
  856. margin: 0;
  857. background: #fff;
  858. z-index: 3000;
  859. position: absolute;
  860. list-style-type: none;
  861. padding: 5px 0;
  862. border-radius: 4px;
  863. font-size: 12px;
  864. font-weight: 400;
  865. color: #333;
  866. box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3);
  867. }
  868. .contextmenu li {
  869. margin: 0;
  870. padding: 7px 16px;
  871. cursor: pointer;
  872. }
  873. .contextmenu li:hover {
  874. background: #eee;
  875. }
  876. .case-content {
  877. width: 340px;
  878. background-color: #fff;
  879. }
  880. .case-content-hidden {
  881. width: 0px;
  882. animation: casehidden 1.4s ease;
  883. /*动画名称:loading  动画时长:1.4s  动画循环:infinite*/
  884. }
  885. .case-content-show {
  886. width: 340px;
  887. /*初始宽度*/
  888. animation: caseshow 1.4s ease;
  889. /*动画名称:loading  动画时长:1.4s  动画循环:infinite*/
  890. }
  891. @keyframes caseshow {
  892. 0% {
  893. width: 0px;
  894. /*初始宽度*/
  895. }
  896. 100% {
  897. width: 340px;
  898. /*结束宽度*/
  899. }
  900. }
  901. @keyframes casehidden {
  902. 0% {
  903. width: 340px;
  904. /*初始宽度*/
  905. }
  906. 100% {
  907. width: 0px;
  908. /*结束宽度*/
  909. }
  910. }
  911. </style>