Emr copy.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923
  1. <template>
  2. <div class="emr">
  3. <div class="header flex flex-col-center flex-row-center">
  4. <span>通用模板</span>
  5. <div class="button">
  6. <el-button type="primary" size="mini" @click="submit()">保存病历</el-button>
  7. </div>
  8. </div>
  9. <div class="flex flex-col-top flex-row-left emr-main-body">
  10. <div class="emr-template">
  11. <div class="emr-template-header flex felx-col-center flex-row-left">
  12. <img src="~@/assets/book.png" alt />
  13. <div>电子病历模板</div>
  14. </div>
  15. <div v-for="(item,index) in templateList" :key="index">
  16. <div class="emr-tem-item title ellipsis-line1">{{item.name}}</div>
  17. <div
  18. class="emr-tem-item ftitle ellipsis-line1"
  19. v-for="(item1,index1) in item.temList"
  20. :key="index1"
  21. >{{item1.name}}</div>
  22. </div>
  23. </div>
  24. <div class="emr-form">
  25. <div class="form-item flex flex-row-left flex-col-center">
  26. <div class="item-left flex-vertical-center-l">
  27. <span>*</span>
  28. <div>主诉:</div>
  29. </div>
  30. <div class="item-right">
  31. <el-input size="small" placeholder="请输入主诉" v-model="form.zhusu"></el-input>
  32. </div>
  33. </div>
  34. <div class="form-item flex flex-row-left flex-col-center">
  35. <div class="item-left flex-vertical-center-l">
  36. <span></span>
  37. <div>现病史:</div>
  38. </div>
  39. <div class="item-right">
  40. <el-input size="small" placeholder="请输入现病史" v-model="form.xian"></el-input>
  41. </div>
  42. </div>
  43. <div class="form-item flex flex-row-left flex-col-center">
  44. <div class="item-left flex-vertical-center-l">
  45. <span></span>
  46. <div>既往史:</div>
  47. </div>
  48. <div class="item-right">
  49. <el-input size="small" placeholder="请输入既往史" v-model="form.jiwang"></el-input>
  50. </div>
  51. </div>
  52. <div class="form-item flex flex-row-left flex-col-center">
  53. <div class="item-left flex-vertical-center-l">
  54. <span></span>
  55. <div>中医四诊:</div>
  56. </div>
  57. <div class="item-right">
  58. <el-input size="small" placeholder="请输入中医四诊" v-model="form.four"></el-input>
  59. </div>
  60. </div>
  61. <div class="form-item flex flex-row-left flex-col-top">
  62. <div class="item-left1 flex-vertical-center-l">
  63. <span></span>
  64. <div>舌象:</div>
  65. </div>
  66. <div class="item-right">
  67. <!-- <el-cascader :options="shexiangList" v-model="form.shexiang" :props="props" clearable
  68. @change='shexiangChange'>
  69. </el-cascader>-->
  70. <div
  71. class="flex flex-col-top flex-row-left item-shexiang"
  72. v-for="(item,index) in shexiangList"
  73. :key="index"
  74. >
  75. <div class="item-shexiang-l">{{item.content}}:</div>
  76. <div class="item-shexiang-r">
  77. <!-- <el-checkbox-group v-model="form.shexiang" @change="shexiangChange"> -->
  78. <el-checkbox
  79. @change="shexiangChange(index,index1)"
  80. :label="item1.content"
  81. v-model="item1.isChecked"
  82. v-for="(item1,index1) in item.chlidren"
  83. :key="index1"
  84. ></el-checkbox>
  85. <!-- </el-checkbox-group> -->
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. <div class="form-item flex flex-row-left flex-col-top">
  91. <div class="item-left1 flex-vertical-center-l">
  92. <span></span>
  93. <div>脉象:</div>
  94. </div>
  95. <div class="item-right">
  96. <!-- <el-select v-model="form.maixiang" placeholder="请选择" multiple @change="maixiangChange">
  97. <el-option :label="item.content" :value="item.id" v-for="(item,index) in maixiangList"
  98. :key="index"></el-option>
  99. </el-select>-->
  100. <!-- <el-checkbox-group v-model="form.maixiang"> -->
  101. <el-checkbox
  102. :label="item1.content"
  103. v-model="item1.isChecked"
  104. @change="maixiangChange(index1)"
  105. v-for="(item1,index1) in maixiangList"
  106. :key="index1"
  107. ></el-checkbox>
  108. <!-- </el-checkbox-group> -->
  109. </div>
  110. </div>
  111. <div class="form-item flex flex-row-left flex-col-center">
  112. <div class="item-left flex-vertical-center-l">
  113. <span></span>
  114. <div>体格检查:</div>
  115. </div>
  116. <div class="item-right">
  117. <el-input size="small" placeholder="请输入体格检查" v-model="form.tige"></el-input>
  118. </div>
  119. </div>
  120. <div class="form-item flex flex-row-left flex-col-center">
  121. <div class="item-left flex-vertical-center-l">
  122. <span></span>
  123. <div>辅助检查:</div>
  124. </div>
  125. <div class="item-right">
  126. <el-input size="small" placeholder="请输入辅助检查" v-model="form.fuzhu"></el-input>
  127. </div>
  128. </div>
  129. <div class="form-item flex flex-row-left flex-col-top flex-wrap mr-t20">
  130. <div class="item-left flex-vertical-center-l">
  131. <span></span>
  132. <div>报告上传:</div>
  133. </div>
  134. <div class="item-right flex flex-col-top flex-row-left flex-wrap">
  135. <div class="img-body" v-for="(item,index) in form.imageUrls" :key="index">
  136. <!-- <img :src="item.imageUrl" alt="" class="show-img" @click="priviewImg(item.imageUrl)"> -->
  137. <el-image
  138. style="width: 66px; height: 66px"
  139. :src="item"
  140. :preview-src-list="form.imageUrls"
  141. ></el-image>
  142. <img src="../../assets/close-img.png" class="close-img" alt @click="deleteImg(index)" />
  143. </div>
  144. <uploadFile
  145. ref="upload"
  146. width="66px"
  147. height="66px"
  148. iconWidth="34px"
  149. @fileChange="upload"
  150. ></uploadFile>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. </template>
  157. <script>
  158. import { getPulseSelect, getTongueSelect } from "@/api/knowledge.js";
  159. import { addEMR, getEmrShowMsg, editEMR } from "@/api/diagnosis.js";
  160. import { fileUpload } from "@/api/upload.js";
  161. import { mapState, mapGetters, mapActions, mapMutations } from "vuex";
  162. import uploadFile from "@/components/UploadFile.vue";
  163. export default {
  164. components: {
  165. uploadFile
  166. },
  167. data() {
  168. return {
  169. isEdit: false, // 是否修改
  170. props: {
  171. multiple: true,
  172. value: "id",
  173. label: "content",
  174. children: "chlidren"
  175. },
  176. shexiangList: [], // 舌象列表
  177. maixiangList: [], //脉象列表
  178. form: {
  179. zhusu: "",
  180. maixiang: [],
  181. shexiang: [],
  182. xian: "",
  183. jiwang: "",
  184. four: "",
  185. tige: "",
  186. fuzhu: "",
  187. // photos: []
  188. imageUrls: [],
  189. uploadUrls: []
  190. },
  191. imageUrl: "",
  192. shexiangtext: "",
  193. maixiangtext: "",
  194. pid: "",
  195. templateList: [
  196. {
  197. name: "医共体",
  198. temList: [
  199. {
  200. name: "通用基础模板"
  201. }
  202. ]
  203. },
  204. {
  205. name: "全院",
  206. temList: [
  207. {
  208. name: "全院模板"
  209. },
  210. {
  211. name: "胃脘痛病模板(专)"
  212. }
  213. ]
  214. },
  215. {
  216. name: "全院",
  217. temList: [
  218. {
  219. name: "全院模板"
  220. },
  221. {
  222. name: "胃脘痛病模板(专)"
  223. }
  224. ]
  225. },
  226. {
  227. name: "科室",
  228. temList: [
  229. {
  230. name: "内科模板"
  231. },
  232. {
  233. name: "咳嗽病模板(专)"
  234. }
  235. ]
  236. },
  237. {
  238. name: "个人",
  239. temList: [
  240. {
  241. name: "个人模板"
  242. }
  243. ]
  244. }
  245. ]
  246. };
  247. },
  248. created() {
  249. this.getPulseSelect();
  250. this.getTongueSelect();
  251. setTimeout(() => {
  252. this.getEmrShowMsg();
  253. }, 500);
  254. },
  255. watch: {
  256. form: {
  257. deep: true,
  258. // immediate:true,
  259. handler: function() {
  260. this.isEdit = true;
  261. }
  262. }
  263. },
  264. beforeRouteLeave(to, from, next) {
  265. if (!this.isEdit) {
  266. next();
  267. } else {
  268. this.$confirm("当前修改内容尚未保存,是否要保存?", "提示", {
  269. confirmButtonText: "保存",
  270. cancelButtonText: "不保存",
  271. type: "warning"
  272. })
  273. .then(() => {
  274. this.submit();
  275. })
  276. .catch(() => {
  277. next();
  278. });
  279. }
  280. },
  281. methods: {
  282. submit() {
  283. if (this.form.zhusu == "") {
  284. this.$message({
  285. message: "请输入主诉信息",
  286. showClose: true,
  287. type: "error"
  288. });
  289. return;
  290. }
  291. if (this.pid) {
  292. this.editEMR();
  293. return;
  294. }
  295. this.addEMR();
  296. },
  297. maixiangChange1(e) {
  298. let arr = [];
  299. e.forEach(item => {
  300. this.maixiangList.forEach(item1 => {
  301. if (item1.id == item) {
  302. arr.push(item1.content);
  303. }
  304. });
  305. });
  306. this.maixiangtext =
  307. arr.length > 0 ? "脉象:" + arr.join(",") + ";" : "";
  308. let text = this.form.four.split(";");
  309. this.form.four =
  310. this.shexiangtext + this.maixiangtext + text[text.length - 1];
  311. },
  312. maixiangChange(index) {
  313. // console.log(e, '舌向改变')
  314. if (this.maixiangList[index].isChecked) {
  315. this.form.maixiang.push({
  316. id: this.maixiangList[index].id,
  317. content: this.maixiangList[index].content
  318. });
  319. } else {
  320. this.form.maixiang.forEach((item, current) => {
  321. if (item.id == this.maixiangList[index].id) {
  322. this.form.maixiang.splice(current, 1);
  323. }
  324. });
  325. }
  326. setTimeout(() => {
  327. this.form.four = this.dealFour();
  328. }, 100);
  329. },
  330. // 老版本
  331. shexiangChange1(e) {
  332. // console.log(e, 'ee');
  333. // console.log(this.form.shexiang, 's');
  334. let arr = [];
  335. e.forEach(item => {
  336. this.shexiangList.forEach(item1 => {
  337. item1.chlidren.forEach(item2 => {
  338. item2.chlidren.forEach(item3 => {
  339. if (item3.id == item[2]) {
  340. arr.push(item3.content);
  341. }
  342. });
  343. });
  344. });
  345. });
  346. this.shexiangtext =
  347. arr.length > 0 ? "舌象:" + arr.join(",") + ";" : "";
  348. let text = this.form.four.split(";");
  349. this.form.four =
  350. this.shexiangtext + this.maixiangtext + text[text.length - 1];
  351. return;
  352. },
  353. shexiangChange(index, index1) {
  354. // console.log(e, '舌向改变')
  355. if (this.shexiangList[index].chlidren[index1].isChecked) {
  356. this.form.shexiang.push({
  357. id: this.shexiangList[index].chlidren[index1].id,
  358. content: this.shexiangList[index].chlidren[index1].content
  359. });
  360. } else {
  361. this.form.shexiang.forEach((item, current) => {
  362. if (item.id == this.shexiangList[index].chlidren[index1].id) {
  363. this.form.shexiang.splice(current, 1);
  364. }
  365. });
  366. }
  367. setTimeout(() => {
  368. this.form.four = this.dealFour();
  369. }, 100);
  370. },
  371. // 处理中医四诊
  372. dealFour() {
  373. let four = this.form.four.split(";");
  374. let content = "";
  375. let sx = [];
  376. let mx = [];
  377. this.form.shexiang.forEach((item, index) => {
  378. sx.push(item.content);
  379. });
  380. this.form.maixiang.forEach((item, index) => {
  381. mx.push(item.content);
  382. });
  383. let sxText = sx.length > 0 ? "舌象:" + sx.join(",") + ";" : "";
  384. let mxText = mx.length > 0 ? "脉象:" + mx.join(",") + ";" : "";
  385. content = sxText + mxText + four[four.length - 1];
  386. return content;
  387. },
  388. // 删除当前图片
  389. deleteImg(index) {
  390. this.$confirm("确定要删除当前图片吗", "提示", {
  391. confirmButtonText: "确定",
  392. cancelButtonText: "取消",
  393. type: "warning"
  394. })
  395. .then(() => {
  396. this.form.imageUrls.splice(index, 1);
  397. this.form.uploadUrls.splice(index, 1);
  398. })
  399. .catch(() => {});
  400. },
  401. upload(e) {
  402. let files = e.target.files[0];
  403. if (this.form.imageUrls.length > 5) {
  404. this.$message({
  405. type: "error",
  406. message: "最多上传五张图片",
  407. showClose: true
  408. });
  409. return;
  410. }
  411. if (files.type.indexOf("image") == -1) {
  412. this.$message({
  413. type: "error",
  414. message: "文件格式选择有误",
  415. showClose: true
  416. });
  417. return;
  418. }
  419. let formData = new FormData();
  420. formData.append("file", files);
  421. this.fileUpload(formData);
  422. },
  423. // 获取 脉象
  424. async getPulseSelect() {
  425. let res = await getPulseSelect();
  426. if (res.code == 0) {
  427. res.data.pulse.forEach(item => {
  428. item.isChecked = false;
  429. });
  430. this.maixiangList = res.data.pulse;
  431. }
  432. },
  433. // 获取舌象
  434. async getTongueSelect() {
  435. let res = await getTongueSelect();
  436. if (res.code == 0) {
  437. res.data.tongue.forEach(item => {
  438. item.chlidren.forEach(item1 => {
  439. item1.isChecked = false;
  440. });
  441. });
  442. this.shexiangList = res.data.tongue;
  443. }
  444. },
  445. //上传 图片
  446. async fileUpload(data) {
  447. let res = await fileUpload(data);
  448. if (res.ResultCode == 0) {
  449. this.$message({
  450. type: "success",
  451. message: "上传成功",
  452. showClose: true
  453. });
  454. // this.form.imageUrls.push(res.url)
  455. // this.form.uploadUrls.push(res.fileName)
  456. this.form.imageUrls.push(
  457. process.env.VUE_APP_UPLOAD + "file/" + res.ResultInfo
  458. );
  459. this.form.uploadUrls.push(res.ResultInfo);
  460. this.$refs.upload.$refs.file.value = null;
  461. }
  462. },
  463. // 提交数据
  464. async addEMR() {
  465. let sxIds = [];
  466. this.form.shexiang.forEach(item => {
  467. sxIds.push(item.id);
  468. });
  469. let mxids = [];
  470. this.form.maixiang.forEach(item => {
  471. mxids.push(item.id);
  472. });
  473. let params = {
  474. chiefcomplaint: this.form.zhusu,
  475. fourmedicine: this.form.four,
  476. historypresent: this.form.xian,
  477. pasthistory: this.form.jiwang,
  478. physicalexamination: this.form.tige,
  479. supplementaryexamination: this.form.fuzhu,
  480. image1: this.form.uploadUrls.join(","),
  481. // 缺少id
  482. recordsid: this.getPatiensInfo.pid,
  483. // tongueIds: this.form.shexiang.join(','),
  484. // tongueIds: JSON.stringify(this.form.shexiang),
  485. tongueIds: JSON.stringify(sxIds),
  486. // pluseIds: this.form.maixiang.join(','),
  487. pluseIds: mxids.join(",")
  488. };
  489. const loading = this.$loading({
  490. lock: true,
  491. text: "正在保存",
  492. spinner: "el-icon-loading",
  493. background: "rgba(0, 0, 0, 0.7)"
  494. });
  495. let res = await addEMR(params).catch(err => {
  496. loading.close();
  497. });
  498. if (res.ResultCode == 0) {
  499. loading.close();
  500. this.$message({
  501. type: "success",
  502. message: "保存成功",
  503. showClose: true
  504. });
  505. this.isEdit = false;
  506. setTimeout(() => {
  507. this.$router.push({
  508. path: "/index/diagnosis"
  509. });
  510. }, 1500);
  511. }
  512. },
  513. // 回显展示
  514. async getEmrShowMsg() {
  515. let _self = this;
  516. let params = {
  517. recordsId: this.getPatiensInfo.pid
  518. };
  519. let res = await getEmrShowMsg(params);
  520. if (res.ResultCode == 0) {
  521. if (res.Data.length == 0) {
  522. return;
  523. }
  524. this.form = {
  525. zhusu: res.Data[0].chiefcomplaint,
  526. xian: res.Data[0].historypresent,
  527. jiwang: res.Data[0].pasthistory,
  528. four: res.Data[0].fourmedicine,
  529. tige: res.Data[0].physicalexamination,
  530. fuzhu: res.Data[0].supplementaryexamination,
  531. imageUrls: [],
  532. uploadUrls: [],
  533. shexiang: [],
  534. maixiang: []
  535. // shexiang: res.Data[0].tongueIds ? res.Data[0].tongueIds.split(',') : [],
  536. // maixiang: res.Data[0].pluseIds ? res.Data[0].pluseIds.split(',') : [],
  537. // shexiang: res.Data[0].tongueIds ? JSON.parse(res.Data[0].tongueIds) : [],
  538. // shexiang: res.Data[0].tongueIds ? res.Data[0].tongueIds.split(',') : [],
  539. };
  540. // this.shexiangtext = res.Data[0].tongueIds ? res.Data[0].fourmedicine.split(';')[0] + ';' : ''
  541. // this.maixiangtext = res.Data[0].pluseIds ? res.Data[0].fourmedicine.split(';')[1] + ';' : ""
  542. this.pid = res.Data[0].pid;
  543. let xsIDS = res.Data[0].tongueIds
  544. ? JSON.parse(res.Data[0].tongueIds)
  545. : [];
  546. let mxIDS = res.Data[0].pluseIds ? res.Data[0].pluseIds.split(",") : [];
  547. this.shexiangList.forEach(item => {
  548. item.chlidren.forEach(item1 => {
  549. if (xsIDS.indexOf(item1.id) != -1) {
  550. item1.isChecked = true;
  551. _self.form.shexiang.push({
  552. content: item1.content,
  553. id: item1.id
  554. });
  555. }
  556. });
  557. });
  558. this.maixiangList.forEach(item => {
  559. if (mxIDS.indexOf(item.id) != -1) {
  560. item.isChecked = true;
  561. this.form.maixiang.push({
  562. content: item.content,
  563. id: item.id
  564. });
  565. }
  566. });
  567. this.form.four = this.dealFour();
  568. setTimeout(() => {
  569. this.isEdit = false;
  570. }, 100);
  571. if (res.Data[0].image1 == "") return;
  572. res.Data[0].image1 = res.Data[0].image1.split(",");
  573. res.Data[0].image1.forEach(item => {
  574. this.form.imageUrls.push(process.env.VUE_APP_UPLOAD + "file/" + item);
  575. this.form.uploadUrls.push(item);
  576. });
  577. }
  578. },
  579. // 修改 中医电子病历
  580. async editEMR() {
  581. let sxIds = [];
  582. this.form.shexiang.forEach(item => {
  583. sxIds.push(item.id);
  584. });
  585. let mxids = [];
  586. this.form.maixiang.forEach(item => {
  587. mxids.push(item.id);
  588. });
  589. let params = {
  590. chiefcomplaint: this.form.zhusu,
  591. fourmedicine: this.form.four,
  592. historypresent: this.form.xian,
  593. pasthistory: this.form.jiwang,
  594. physicalexamination: this.form.tige,
  595. supplementaryexamination: this.form.fuzhu,
  596. image1: this.form.uploadUrls.join(","),
  597. // 缺少id
  598. recordsid: this.getPatiensInfo.pid,
  599. pid: this.pid,
  600. // tongueIds: this.form.shexiang.join(','),
  601. // tongueIds: JSON.stringify(this.form.shexiang),
  602. tongueIds: JSON.stringify(sxIds),
  603. // pluseIds: this.form.maixiang.join(','),
  604. pluseIds: mxids.join(",")
  605. };
  606. const loading = this.$loading({
  607. lock: true,
  608. text: "正在保存",
  609. spinner: "el-icon-loading",
  610. background: "rgba(0, 0, 0, 0.7)"
  611. });
  612. let res = await editEMR(params).catch(err => {
  613. loading.close();
  614. });
  615. if (res.ResultCode == 0) {
  616. loading.close();
  617. this.$message({
  618. type: "success",
  619. message: "保存成功",
  620. showClose: true,
  621. duration: 1000
  622. });
  623. this.isEdit = false;
  624. this.$router.push({
  625. path: "/index/diagnosis"
  626. });
  627. // setTimeout(() => {
  628. // }, 2000);
  629. }
  630. }
  631. },
  632. computed: {
  633. ...mapGetters(["getPatiensInfo"])
  634. }
  635. };
  636. </script>
  637. <style lang="scss" scoped>
  638. @import "../../style/common.scss";
  639. .emr-main-body {
  640. height: 73vh;
  641. }
  642. .emr {
  643. // background: #FFFFFF;
  644. border-radius: 5px;
  645. padding: 0px 0px;
  646. .header {
  647. background: #fff;
  648. height: 40px;
  649. position: relative;
  650. margin-bottom: 5px;
  651. span {
  652. font-size: 20px;
  653. font-weight: bold;
  654. color: #000;
  655. }
  656. .button {
  657. position: absolute;
  658. top: 6px;
  659. right: 16px;
  660. }
  661. }
  662. .emr-title {
  663. span {
  664. width: 3px;
  665. height: 14px;
  666. background: #5386f6;
  667. border-radius: 1px;
  668. display: inline-block;
  669. }
  670. div {
  671. font-size: 18px;
  672. font-family: PingFang SC;
  673. font-weight: 400;
  674. color: #5386f6;
  675. margin-left: 9px;
  676. }
  677. }
  678. .emr-template {
  679. width: 260px;
  680. margin-right: 8px;
  681. height: 100%;
  682. min-height: 430px;
  683. background: #fff;
  684. box-sizing: border-box;
  685. padding: 8px 0;
  686. overflow-y: auto;
  687. .emr-template-header {
  688. padding: 0 8px 8px;
  689. border-bottom: 1px solid #f4f7f9;
  690. img {
  691. width: 30px;
  692. }
  693. div {
  694. color: #000;
  695. font-size: 16px;
  696. font-weight: 600;
  697. margin-left: 5px;
  698. }
  699. }
  700. .emr-tem-item {
  701. padding: 8px;
  702. border-bottom: 1px solid #f4f7f9;
  703. cursor: pointer;
  704. }
  705. .title {
  706. color: #000;
  707. font-size: 16px;
  708. font-weight: 600;
  709. // margin-left: 5px;
  710. }
  711. .ftitle {
  712. color: #000;
  713. font-size: 14px;
  714. }
  715. }
  716. .emr-form {
  717. flex: 1;
  718. // margin-top: 20px;
  719. height: 100%;
  720. min-height: 430px;
  721. overflow-y: auto;
  722. background: #fff;
  723. box-sizing: border-box;
  724. padding: 8px;
  725. .form-item {
  726. margin-bottom: 10px;
  727. }
  728. .item-left {
  729. font-size: 16px;
  730. font-family: PingFang SC;
  731. font-weight: 600;
  732. color: #333333;
  733. // margin-bottom: 12px;
  734. width: 100px;
  735. text-align: right;
  736. justify-content: flex-end;
  737. span {
  738. color: #ff3a3a;
  739. }
  740. }
  741. .item-left1 {
  742. width: 100px;
  743. font-size: 16px;
  744. font-family: PingFang SC;
  745. font-weight: 600;
  746. color: #333333;
  747. text-align: right;
  748. justify-content: flex-end;
  749. span {
  750. color: #ff3a3a;
  751. }
  752. }
  753. .item-right {
  754. flex: 1;
  755. margin-left: 10px;
  756. }
  757. .item-shexiang {
  758. margin-bottom: 10px;
  759. .item-shexiang-l {
  760. width: 70px;
  761. font-size: 14px;
  762. text-align: right;
  763. }
  764. .item-shexiang-r {
  765. flex: 1;
  766. margin-left: 10px;
  767. }
  768. }
  769. }
  770. .submit {
  771. width: 101px;
  772. height: 46px;
  773. background: #5386f6;
  774. border-radius: 4px;
  775. font-size: 16px;
  776. font-family: PingFang SC;
  777. font-weight: 400;
  778. color: #ffffff;
  779. cursor: pointer;
  780. }
  781. }
  782. .item-right::v-deep .el-select {
  783. width: 100%;
  784. }
  785. .avatar-uploader::v-deep .el-upload {
  786. width: 88px;
  787. height: 88px;
  788. border: 1px solid #d8d8d8;
  789. border-radius: 6px;
  790. cursor: pointer;
  791. position: relative;
  792. overflow: hidden;
  793. display: flex;
  794. align-items: center;
  795. justify-content: center;
  796. flex-direction: column;
  797. }
  798. .icon {
  799. width: 34px;
  800. }
  801. .text {
  802. font-size: 14px;
  803. font-family: PingFang SC;
  804. font-weight: 400;
  805. color: #b1b1b1;
  806. margin-top: 11px;
  807. }
  808. .avatar-uploader::v-deep .el-upload:hover {
  809. border-color: #5386f6;
  810. }
  811. .img-body {
  812. width: 66px;
  813. height: 66px;
  814. margin-right: 20px;
  815. position: relative;
  816. // margin-left: 10px;
  817. .show-img {
  818. width: 100%;
  819. height: 100%;
  820. }
  821. .close-img {
  822. width: 20px;
  823. position: absolute;
  824. top: -10px;
  825. right: -10px;
  826. }
  827. }
  828. .item-right ::v-deep .el-cascader {
  829. width: 100%;
  830. }
  831. .item-right::v-deep .el-checkbox {
  832. margin-bottom: 10px;
  833. }
  834. </style>
  835. <style lang="scss" scoped>
  836. @media screen and(min-width: 1681px) and(max-width: 1920px) {
  837. .emr-main-body {
  838. height: 84vh;
  839. }
  840. }
  841. @media screen and(min-width: 1601px) and(max-width: 1680px) {
  842. .emr-main-body {
  843. height: 83vh;
  844. }
  845. }
  846. @media screen and(min-width: 1440px) and(max-width: 1600px) {
  847. .emr-main-body {
  848. height: 80vh;
  849. }
  850. }
  851. @media screen and(min-width: 1360px) and(max-width: 1439px) {
  852. .emr-main-body {
  853. height: 76vh;
  854. }
  855. }
  856. </style>