DialecticalQ.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970
  1. <template>
  2. <div class="dialecticalq">
  3. <div class="flex flex-row-left flex-col-top top-questions">
  4. <div class="dialectical-left" v-if="!isShrink">
  5. <!-- 标题信息 -->
  6. <div class="pre-title">
  7. <div class="flex-vertical-center-l title-container">
  8. <span></span>
  9. <div>患者信息</div>
  10. </div>
  11. </div>
  12. <div class="patiens-msg" v-if="Object.keys(patiensMsg).length>0">
  13. <p v-if="patiensMsg.sex">患者性别:{{patiensMsg.sex}}</p>
  14. <p v-if="patiensMsg.age">患者年龄:{{patiensMsg.age}}</p>
  15. <p
  16. v-if="patiensMsg.isGravidity && patiensMsg.isGravidity=='2'"
  17. >是否怀孕:{{patiensMsg.isGravidity=='1'?'否':patiensMsg.isGravidity=='2'?'是':'无'}}</p>
  18. <p
  19. v-if="patiensMsg.isBreastFeeding && patiensMsg.isBreastFeeding==1"
  20. >是否哺乳:{{patiensMsg.isBreastFeeding==1?'是':patiensMsg.isBreastFeeding==2?'否':'无'}}</p>
  21. </div>
  22. <div class="pre-title mr-t10">
  23. <div class="flex-vertical-center-l title-container">
  24. <span></span>
  25. <div>中医电子病历</div>
  26. </div>
  27. </div>
  28. <div class="patiens-msg" v-if="patiensMsg.outpatientElectronicmedicalrecord">
  29. <p v-if="patiensMsg.outpatientElectronicmedicalrecord.chiefcomplaint">
  30. <span>主诉:</span>
  31. {{patiensMsg.outpatientElectronicmedicalrecord.chiefcomplaint}}
  32. </p>
  33. <p v-if="patiensMsg.outpatientElectronicmedicalrecord.historypresent">
  34. <span>现病史:</span>
  35. {{patiensMsg.outpatientElectronicmedicalrecord.historypresent}}
  36. </p>
  37. <p v-if="patiensMsg.outpatientElectronicmedicalrecord.pasthistory">
  38. <span>既往史:</span>
  39. {{patiensMsg.outpatientElectronicmedicalrecord.pasthistory}}
  40. </p>
  41. <p v-if="patiensMsg.outpatientElectronicmedicalrecord.fourmedicine">
  42. <span>中医四诊:</span>
  43. {{patiensMsg.outpatientElectronicmedicalrecord.fourmedicine}}
  44. </p>
  45. <p v-if="patiensMsg.outpatientElectronicmedicalrecord.physicalexamination">
  46. <span>体格检查:</span>
  47. {{patiensMsg.outpatientElectronicmedicalrecord.physicalexamination}}
  48. </p>
  49. <p v-if="patiensMsg.outpatientElectronicmedicalrecord.supplementaryexamination">
  50. <span>辅助检查:</span>
  51. {{patiensMsg.outpatientElectronicmedicalrecord.supplementaryexamination}}
  52. </p>
  53. <div v-if="patiensMsg.outpatientElectronicmedicalrecord.image1.length>0">
  54. <div style="margin: 4px 0 8px;">报告上传:</div>
  55. <el-image
  56. :preview-src-list="patiensMsg.outpatientElectronicmedicalrecord.image1"
  57. :src="item"
  58. :key="index"
  59. style="width:64px;height: 64px;margin-right: 10px;"
  60. alt
  61. v-for="(item,index) in patiensMsg.outpatientElectronicmedicalrecord.image1"
  62. />
  63. </div>
  64. </div>
  65. </div>
  66. <div class="dialectical-center">
  67. <div class="now-title">
  68. <!-- 扩展icon -->
  69. <div class="kz-icon" @click="setShrink">
  70. <i class="el-icon-d-arrow-right" v-if="!isShrink"></i>
  71. <i class="el-icon-d-arrow-left" v-if="isShrink"></i>
  72. </div>
  73. 当前疾病:
  74. <span>{{info.groupname}}</span>
  75. </div>
  76. <div class="continue-time flex-vertical-center-l">
  77. <div class="time-left">
  78. <span>*</span>
  79. 【{{info.groupname}}】持续时间
  80. </div>
  81. <div class="time-right flex-vertical-center-l">
  82. <div class="time-input">
  83. <el-input size="mini" v-model="year" placeholder></el-input>
  84. </div>
  85. <span>年</span>
  86. <div class="time-input">
  87. <el-input size="mini" v-model="month" placeholder></el-input>
  88. </div>
  89. <span>月</span>
  90. <div class="time-input">
  91. <el-input size="mini" v-model="day" placeholder></el-input>
  92. </div>
  93. <span>天</span>
  94. <div class="time-input">
  95. <el-input size="mini" v-model="hour" placeholder></el-input>
  96. </div>
  97. <span>小时</span>
  98. </div>
  99. </div>
  100. <!-- 问题列表 -->
  101. <div class="question-list">
  102. <div class="question-item" v-for="(item,index) in info.asks" :key="index">
  103. <div class="question-name">
  104. <!-- <span class="time-left1">*</span> -->
  105. {{index+1}}.{{item.askname}}
  106. </div>
  107. <div class="question-answer flex-vertical-center-l">
  108. <!-- <el-checkbox-group v-model="form.checkList"> -->
  109. <div class="flex-wrap flex-vertical-center-l">
  110. <div
  111. v-for="item1 in item.answers"
  112. :key="item1.answerseqn"
  113. class="question-answer-item"
  114. >
  115. <el-checkbox
  116. @change="answerClick(item1,item)"
  117. v-model="item1.checked"
  118. :label="item1.answername"
  119. ></el-checkbox>
  120. <el-popover placement="top-start" trigger="click" width="250">
  121. <img
  122. src="../../assets/new-icon/wenhao.png"
  123. slot="reference"
  124. class="msg"
  125. v-if="item1.pulseInfos || item1.tongueInfos"
  126. />
  127. <div class="popover">
  128. <!-- 舌相 -->
  129. <template v-if="item1.tongueInfos">
  130. <div
  131. class="popover-body"
  132. v-for="(item2,index2) in item1.tongueInfos"
  133. :key="index2"
  134. >
  135. <div class="popover-title">{{ item2.tongue_NAME }}</div>
  136. <el-image
  137. class="popover-img"
  138. :src="item2.image_URL"
  139. :preview-src-list="[item2.image_URL]"
  140. ></el-image>
  141. <div class="popover-content">
  142. <div class="name">舌象特征:</div>
  143. <div class="values">{{ item2.tongue_FEATURES }}</div>
  144. </div>
  145. <div class="popover-content">
  146. <div class="name">临床意义:</div>
  147. <div class="values">{{ item2.signality }}</div>
  148. </div>
  149. </div>
  150. </template>
  151. <!--脉相 -->
  152. <template v-if="item1.pulseInfos">
  153. <div
  154. class="popover-body"
  155. v-for="(item2,index2) in item1.pulseInfos"
  156. :key="index2"
  157. >
  158. <div class="popover-title">{{ item2.pulse_NAME }}</div>
  159. <el-image
  160. class="popover-img"
  161. :src="item2.image_URL"
  162. :preview-src-list="[item2.image_URL]"
  163. ></el-image>
  164. <div class="popover-content">
  165. <div class="name">脉象特征:</div>
  166. <div class="values">{{ item2.pulse_FEATURE }}</div>
  167. </div>
  168. <div class="popover-content">
  169. <div class="name">临床意义:</div>
  170. <div class="values">{{ item2.signality }}</div>
  171. </div>
  172. </div>
  173. </template>
  174. </div>
  175. </el-popover>
  176. </div>
  177. </div>
  178. <!-- </el-checkbox-group> -->
  179. </div>
  180. </div>
  181. <div class="question-item flex-vertical-center-l">
  182. <span>其他:</span>
  183. <div class="input">
  184. <el-input v-model="other" placeholder="请输入"></el-input>
  185. </div>
  186. </div>
  187. </div>
  188. </div>
  189. <div class="dialectical-right">
  190. <div class="title flex-vertical-center-l">
  191. <span></span>
  192. <div>症状采集</div>
  193. </div>
  194. <div class="list mr-t20 flex-vertical-between flex-wrap">
  195. <div class="item flex-center" v-for="(item,index) in form.checkList" :key="index">
  196. <div class="ellipsis-line2">{{item.answername}}</div>
  197. </div>
  198. </div>
  199. </div>
  200. </div>
  201. <div class="mr-t20 bottom-btn">
  202. <el-button type="warning" @click="backPage" size="small">返回</el-button>
  203. <el-button type="primary" @click="submit" size="small" v-if="pageType!=3">推导</el-button>
  204. <el-button type="primary" @click="submit" size="small" v-if="pageType==3">自动生成病历</el-button>
  205. </div>
  206. <Emr ref="emr" v-if="hack__show_EMR" style="display: none"></Emr>
  207. </div>
  208. </template>
  209. <script>
  210. import { mapState, mapGetters, mapActions, mapMutations } from "vuex";
  211. import { getDialecticalq, submitDialetQ } from "@/api/knowledge.js";
  212. import {
  213. getPatiensBasisM,
  214. addDiagnosisData,
  215. znQuestionSave,
  216. znQusetionShow
  217. } from "@/api/diagnosis.js";
  218. import { addRecipeFrom } from "@/api/dataAnalysis.js";
  219. import { setTimeout } from "timers";
  220. import Emr from "@/views/diagnosis/Emr.vue";
  221. import {formatPicture} from "@/utils/picture";
  222. export default {
  223. components: {Emr},
  224. data() {
  225. return {
  226. hack__show_EMR: false,
  227. isShrink: false, // 是否是收缩状态
  228. patiensMsg: {}, // 患者信息
  229. year: "",
  230. month: "",
  231. day: "",
  232. hour: "",
  233. other: "",
  234. form: {
  235. checkList: [],
  236. checkList1: []
  237. },
  238. info: {},
  239. isEdit: false, // 是否编辑,
  240. pageType: 1
  241. };
  242. },
  243. watch: {
  244. year() {
  245. this.isEdit = true;
  246. },
  247. month() {
  248. this.isEdit = true;
  249. },
  250. day() {
  251. this.isEdit = true;
  252. },
  253. hour() {
  254. this.isEdit = true;
  255. },
  256. form: {
  257. deep: true,
  258. handler: function() {
  259. this.isEdit = true;
  260. }
  261. }
  262. },
  263. created() {
  264. this.pageType = this.$route.query.type;
  265. this.loaded();
  266. if (this.getPatiensInfo.pid) this.getPatiensBasisM();
  267. },
  268. mounted() {
  269. this.isShrink = window.sessionStorage.getItem('dia_isShrink') == 1
  270. },
  271. beforeRouteLeave(to, from, next) {
  272. if (this.isEdit) {
  273. this.$confirm("当前操作尚未保存,是否保存", "提示", {
  274. confirmButtonText: "保存",
  275. cancelButtonText: "不保存",
  276. type: "warning"
  277. })
  278. .then(() => {
  279. this._znQuestionSave(next);
  280. })
  281. .catch(() => {
  282. next();
  283. });
  284. } else {
  285. next();
  286. }
  287. },
  288. methods: {
  289. async loaded() {
  290. await this.getDialecticalq();
  291. if (+this.pageType === 2) await this._znQusetionShow();
  292. },
  293. // 设置收缩模式
  294. setShrink() {
  295. this.isShrink = !this.isShrink
  296. window.sessionStorage.setItem('dia_isShrink', this.isShrink ? 1 : 0)
  297. },
  298. // 获取病人 左侧信息
  299. async getPatiensBasisM() {
  300. let res = await getPatiensBasisM({
  301. patientId: this.getPatiensInfo.pid
  302. });
  303. if (res.ResultCode == 0) {
  304. this.agree_key1 = res.Data.maindiagnosis
  305. ? res.Data.maindiagnosis.namemedicine
  306. ? res.Data.maindiagnosis.namemedicine
  307. : ""
  308. : "";
  309. res.Data.secondarydiagnosis = res.Data.secondarydiagnosis
  310. ? res.Data.secondarydiagnosis
  311. : [];
  312. this.patiensMsg = res.Data;
  313. this.patiensMsg.outpatientElectronicmedicalrecord.image1 = formatPicture(this.patiensMsg.outpatientElectronicmedicalrecord.image1);
  314. }
  315. },
  316. // 返回
  317. backPage() {
  318. // this.$router.go(-1)
  319. this.$router.replace("/index/dialectical");
  320. },
  321. //
  322. submit() {
  323. if (
  324. this.year == "" &&
  325. this.month == "" &&
  326. this.day == "" &&
  327. this.hour == ""
  328. ) {
  329. this.$message({
  330. message: "病状持续时间不能为空",
  331. showClose: true,
  332. type: "error"
  333. });
  334. return;
  335. }
  336. // if (this.month == '') {
  337. // this.$message({
  338. // message: '月份不能为空',
  339. // showClose: true,
  340. // type: 'error'
  341. // })
  342. // return
  343. // }
  344. // if (this.day == '') {
  345. // this.$message({
  346. // message: '日不能为空',
  347. // showClose: true,
  348. // type: 'error'
  349. // })
  350. // return
  351. // }
  352. // if (this.hour == '') {
  353. // this.$message({
  354. // message: '小时不能为空',
  355. // showClose: true,
  356. // type: 'error'
  357. // })
  358. // return
  359. // }
  360. if (this.form.checkList1.length == 0) {
  361. this.$message({
  362. message: "请至少填写一条问题",
  363. showClose: true,
  364. type: "error"
  365. });
  366. return;
  367. }
  368. this.submitDialetQ();
  369. },
  370. // 问卷答案选择
  371. answerClick(item, fitem) {
  372. let arr = [];
  373. let arr1 = [];
  374. try {
  375. this.info.asks.forEach(item1 => {
  376. item1.answers.forEach(item2 => {
  377. if (item2.checked) {
  378. arr.push(item2);
  379. arr1.push(item1.askname);
  380. }
  381. });
  382. });
  383. } catch (e) {}
  384. let set = new Set(arr1);
  385. let arr2 = Array.from(set);
  386. // return
  387. this.form.checkList = arr;
  388. this.form.checkList1 = arr2;
  389. },
  390. // 获取问卷
  391. async getDialecticalq() {
  392. let res = await getDialecticalq({
  393. groupid: this.$route.query.id,
  394. // groupid: 35,
  395. asktype: 1
  396. });
  397. if (res.ResultCode == 0) {
  398. res.Data.asks.forEach(item => {
  399. item.answers.forEach(item1 => {
  400. item1.checked = false;
  401. });
  402. });
  403. if (!res.Data.groupname) res.Data.groupname = this.$route.query.name;
  404. this.info = res.Data;
  405. }
  406. },
  407. // 提交问卷
  408. async submitDialetQ() {
  409. let ids = [];
  410. this.form.checkList.forEach(item => {
  411. ids.push(item.answered);
  412. });
  413. let duration = "";
  414. if (this.year) {
  415. duration = duration + this.year + "年";
  416. }
  417. if (this.month) {
  418. duration = duration + this.month + "月";
  419. }
  420. if (this.day) {
  421. duration = duration + this.day + "天";
  422. }
  423. if (this.hour) {
  424. duration = duration + this.hour + "小时";
  425. }
  426. let params = {
  427. groupid: this.info.groupid,
  428. groupname: this.info.groupname,
  429. itemids: ids.join(","),
  430. duration,
  431. tcmElectronicMedicalRecordId: this.getPatiensInfo.pid,
  432. other: this.other
  433. };
  434. const loading = this.$loading({
  435. lock: true,
  436. text: this.pageType == 3 ? "正在保存" : "正在推导",
  437. spinner: "el-icon-loading",
  438. background: "rgba(0, 0, 0, 0.7)"
  439. });
  440. let res = await submitDialetQ(params).catch(err => {});
  441. if (res && res.ResultCode == 0) {
  442. this.addRecipeFrom();
  443. if (this.pageType != 3) {
  444. await this.hackLoadEMR();
  445. this.addDiagnosisData(res.Data, loading);
  446. this._znQuestionSave(null);
  447. } else {
  448. this.isEdit = false;
  449. loading.close();
  450. setTimeout(() => {
  451. this.$router.push({
  452. path: "/index/emr"
  453. // path: '/index/diagnosis'
  454. });
  455. }, 1000);
  456. return;
  457. }
  458. }
  459. loading.close();
  460. },
  461. // 提交中医诊断
  462. async addDiagnosisData(obj, loading) {
  463. let params = {
  464. mainDiagnosis: {
  465. maindiagnosis: "0",
  466. disCode: obj.disCode,
  467. symptomCode: obj.synSymCode,
  468. therapyCode: obj.therapyCode,
  469. disid: obj.disId,
  470. symptomid: obj.synSymCode || obj.symId,
  471. treatment: obj.threapy,
  472. recordsid: this.getPatiensInfo.pid,
  473. namemedicine: obj.disname,
  474. syndrometypes: obj.symName
  475. }
  476. };
  477. let res = await addDiagnosisData(params).catch(err => {
  478. loading.close();
  479. });
  480. if (res.ResultCode == 0) {
  481. loading.close();
  482. this.$message.success("提交成功");
  483. this.isEdit = false;
  484. if (this.pageType == 3) {
  485. setTimeout(() => {
  486. this.$router.push({
  487. path: "/index/emr"
  488. // path: '/index/diagnosis'
  489. });
  490. }, 3000);
  491. return;
  492. }
  493. setTimeout(() => {
  494. this.$router.push({
  495. path: "/index/prescribing?type=tuidao"
  496. // path: '/index/diagnosis'
  497. });
  498. }, 3000);
  499. } else {
  500. loading.close();
  501. this.$message.error(res.ResultInfo);
  502. }
  503. },
  504. // 添加 处方来源
  505. async addRecipeFrom() {
  506. let res = await addRecipeFrom({
  507. type: "0"
  508. });
  509. },
  510. // 问卷临时存储
  511. async _znQuestionSave(next) {
  512. let ids = [];
  513. this.form.checkList.forEach(item => {
  514. ids.push(item.answered);
  515. });
  516. let params = {
  517. recordId: this.getPatiensInfo.pid,
  518. itemids: ids.join(","),
  519. groupids: this.info.groupid,
  520. year: this.year,
  521. month: this.month,
  522. day: this.day,
  523. hour: this.hour
  524. };
  525. let res = await znQuestionSave(params);
  526. if (res.ResultCode == 0) {
  527. this.isEdit = false;
  528. if (next) {
  529. next();
  530. }
  531. } else {
  532. if (next) {
  533. next();
  534. }
  535. }
  536. },
  537. // 获取回显数据
  538. async _znQusetionShow() {
  539. let res = await znQusetionShow({
  540. recordId: this.getPatiensInfo.pid
  541. }).catch(errr => {});
  542. if (res.ResultCode == 0) {
  543. this.year = res.Data.year;
  544. this.month = res.Data.month;
  545. this.day = res.Data.day;
  546. this.hour = res.Data.hour;
  547. // this.form.checkList1 = res.Data.itemids.split(',')
  548. let ids = res.Data.itemids.split(",");
  549. try {
  550. this.info.asks.forEach(item1 => {
  551. item1.answers.forEach(item2 => {
  552. if (ids.indexOf(item2.answered) != -1) {
  553. item2.checked = true;
  554. }
  555. });
  556. });
  557. } catch (e) { }
  558. this.answerClick();
  559. setTimeout(() => {
  560. this.isEdit = false;
  561. }, 300);
  562. } else {
  563. this.$message.error(res.ResultInfo);
  564. }
  565. },
  566. async hackLoadEMR() {
  567. this.hack__show_EMR = true;
  568. const event = (type) => new Promise((resolve) => this.$nextTick(() => {
  569. this.$refs.emr.$on(type, (payload) => resolve({ref: this.$refs.emr, payload}));
  570. }))
  571. let { ref } = await event('hack_loaded');
  572. ref.isSkip = false;
  573. ref.submit(null);
  574. await event('hack_save');
  575. this.hack__show_EMR = false;
  576. }
  577. },
  578. computed: {
  579. ...mapGetters(["getPatiensInfo"])
  580. }
  581. };
  582. </script>
  583. <style lang="scss" scoped>
  584. @import "../../style/common.scss";
  585. .top-questions {
  586. height: 72vh;
  587. }
  588. .dialecticalq {
  589. height: 100%;
  590. .dialectical-center {
  591. flex: 1;
  592. height: 100%;
  593. min-height: 420px;
  594. overflow-y: auto;
  595. padding: 10px 10px;
  596. background: #fff;
  597. border-radius: 5px;
  598. box-sizing: border-box;
  599. .now-title {
  600. display: flex;
  601. font-size: 18px;
  602. font-family: PingFang SC;
  603. font-weight: 400;
  604. color: #333333;
  605. margin-bottom: 18px;
  606. span {
  607. color: #5386f6;
  608. }
  609. }
  610. .continue-time {
  611. .time-left {
  612. font-size: 16px;
  613. font-family: PingFang SC;
  614. font-weight: 400;
  615. color: #333;
  616. span {
  617. color: #ff3a3a;
  618. }
  619. }
  620. .time-right {
  621. margin-left: 15px;
  622. .time-input {
  623. width: 28px;
  624. }
  625. span {
  626. font-size: 16px;
  627. font-family: PingFang SC;
  628. font-weight: 400;
  629. color: #333333;
  630. margin-left: 7px;
  631. margin-right: 15px;
  632. }
  633. }
  634. }
  635. .question-list {
  636. .question-item {
  637. margin-top: 22px;
  638. span {
  639. font-size: 16px;
  640. font-family: PingFang SC;
  641. font-weight: 400;
  642. color: #333333;
  643. }
  644. .input {
  645. flex: 1;
  646. }
  647. .question-name {
  648. font-size: 14px;
  649. font-family: PingFang SC;
  650. font-weight: 400;
  651. color: #333333;
  652. margin-bottom: 20px;
  653. .time-left1 {
  654. color: #ff3a3a;
  655. }
  656. }
  657. .question-answer {
  658. &-item {
  659. margin-bottom: 10px;
  660. margin-right: 20px;
  661. display: flex;
  662. align-items: center;
  663. }
  664. .msg {
  665. margin-left: 5px;
  666. width: 18px;
  667. cursor: pointer;
  668. }
  669. }
  670. }
  671. }
  672. .submit {
  673. cursor: pointer;
  674. margin-top: 54px;
  675. width: 100px;
  676. height: 46px;
  677. background: #5386f6;
  678. border-radius: 4px;
  679. font-size: 16px;
  680. font-family: PingFang SC;
  681. font-weight: 400;
  682. color: #ffffff;
  683. }
  684. }
  685. .kz-icon {
  686. margin-right: 8px;
  687. }
  688. .dialectical-left {
  689. height: 100%;
  690. width: 200px;
  691. padding: 10px 12px;
  692. background: #fff;
  693. box-sizing: border-box;
  694. margin-right: 20px;
  695. overflow-y: auto;
  696. .patiens-msg {
  697. font-size: 14px;
  698. font-family: PingFang SC;
  699. font-weight: 400;
  700. color: #333333;
  701. h4 {
  702. font-size: 16px;
  703. font-family: PingFang SC;
  704. font-weight: 500;
  705. color: #333333;
  706. margin-bottom: 5px;
  707. }
  708. p {
  709. span {
  710. display: inline-block;
  711. width: 70px;
  712. text-align: right;
  713. }
  714. margin-bottom: 5px;
  715. }
  716. }
  717. .pre-steps {
  718. .find-more {
  719. cursor: pointer;
  720. img {
  721. width: 12px;
  722. }
  723. span {
  724. font-size: 12px;
  725. font-family: PingFang SC;
  726. font-weight: 400;
  727. color: #ffae45;
  728. margin-left: 7px;
  729. }
  730. }
  731. .icon {
  732. width: 22px;
  733. }
  734. .step-body:hover {
  735. background: #d8d8d8;
  736. }
  737. .step-name {
  738. font-size: 14px;
  739. font-family: PingFang SC;
  740. font-weight: 400;
  741. color: #333333;
  742. cursor: pointer;
  743. }
  744. }
  745. .pre-title {
  746. margin-bottom: 10px;
  747. .title-container {
  748. span {
  749. width: 3px;
  750. height: 14px;
  751. background: #5386f6;
  752. border-radius: 1px;
  753. display: inline-block;
  754. }
  755. div {
  756. font-size: 18px;
  757. font-family: PingFang SC;
  758. font-weight: 400;
  759. color: #5386f6;
  760. margin-left: 9px;
  761. }
  762. }
  763. .patiens-msg {
  764. font-size: 14px;
  765. font-family: PingFang SC;
  766. font-weight: 400;
  767. color: #333333;
  768. .p {
  769. margin-bottom: 5px;
  770. cursor: default;
  771. .patiens-name {
  772. color: #5386f6;
  773. font-weight: bold;
  774. font-size: 16px;
  775. }
  776. .patiens-desc {
  777. display: inline-block;
  778. .matname {
  779. color: #5386f6;
  780. }
  781. }
  782. .patiens-cate {
  783. font-weight: bold;
  784. }
  785. }
  786. }
  787. }
  788. }
  789. .dialectical-right {
  790. height: 100%;
  791. min-height: 420px;
  792. width: 230px;
  793. box-sizing: border-box;
  794. padding: 29px 10px;
  795. background: #ffffff;
  796. border-radius: 5px;
  797. margin-left: 20px;
  798. overflow: auto;
  799. .title {
  800. span {
  801. width: 3px;
  802. height: 14px;
  803. background: #5386f6;
  804. border-radius: 1px;
  805. margin-right: 5px;
  806. }
  807. div {
  808. font-size: 18px;
  809. font-family: PingFang SC;
  810. font-weight: 400;
  811. color: #5386f6;
  812. }
  813. }
  814. .list {
  815. .item {
  816. width: 92px;
  817. height: 46px;
  818. background: #f5f5f5;
  819. border-radius: 4px;
  820. // font-size: 16px;
  821. font-size: 14px;
  822. font-weight: 400;
  823. color: #333333;
  824. box-sizing: border-box;
  825. padding: 8px 10px;
  826. cursor: pointer;
  827. margin-bottom: 10px;
  828. background: url("../../assets/bg-kuang.png") no-repeat;
  829. background-position: center;
  830. background-size: 100% 100%;
  831. div {
  832. text-align: center;
  833. }
  834. }
  835. }
  836. }
  837. }
  838. .popover {
  839. max-height: 200px;
  840. overflow: auto;
  841. &-title {
  842. font-size: 14px;
  843. text-align: center;
  844. }
  845. .popover-img {
  846. max-width: 100%;
  847. width: auto;
  848. display: block;
  849. margin: 5px auto;
  850. }
  851. &-content {
  852. display: flex;
  853. align-items: flex-start;
  854. margin-bottom: 10px;
  855. .name {
  856. font-weight: 600;
  857. width: 70px;
  858. }
  859. .values {
  860. flex: 1;
  861. }
  862. }
  863. }
  864. .bottom-btn {
  865. background: #fff;
  866. padding: 10px;
  867. margin-top: 10px;
  868. }
  869. .time-input::v-deep .el-input__inner {
  870. padding: 0 0;
  871. text-align: center;
  872. }
  873. </style>
  874. <style lang="scss" scoped>
  875. @media screen and(min-width: 1681px) and(max-width: 1920px) {
  876. .top-questions {
  877. height: 82vh;
  878. }
  879. }
  880. @media screen and(min-width: 1601px) and(max-width: 1680px) {
  881. .top-questions {
  882. height: 82vh;
  883. }
  884. }
  885. @media screen and(min-width: 1440px) and(max-width: 1600px) {
  886. .top-questions {
  887. height: 78vh;
  888. }
  889. }
  890. @media screen and(min-width: 1360px) and(max-width: 1439px) {
  891. .top-questions {
  892. height: 74vh;
  893. }
  894. }
  895. </style>