checkout.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. <template>
  2. <!-- 检验报告单 -->
  3. <div id="checkoutA">
  4. <div class="checkout-cont" v-for="(dataObj, index) in dataObjArr" :key="index">
  5. <div class="cont-title-description">{{systemSetting.web_name}}检验报告单</div>
  6. <div class="examType">{{ dataObj.ExamType }}</div>
  7. <div class="checkout-cont-header"></div>
  8. <div class="checkout-cont-infortop">
  9. <div class="checkout-cont-infor-title cont-textbold">姓名:</div>
  10. <div class="checkout-cont-infor-list">
  11. <span>{{ dataObj.XM }}</span>
  12. </div>
  13. <div class="checkout-cont-infor-title cont-textbold">性别:</div>
  14. <div class="checkout-cont-infor-list">
  15. <span>{{ dataObj.XB }}</span>
  16. </div>
  17. <div class="checkout-cont-infor-title cont-textbold">年龄:</div>
  18. <div class="checkout-cont-infor-list">
  19. <span>{{ dataObj.NL }}</span>
  20. </div>
  21. <div class="checkout-cont-infor-title cont-textbold">病区:</div>
  22. <div class="checkout-cont-infor-list">
  23. <span>{{ dataObj.BQ }}</span>
  24. </div>
  25. <div class="checkout-cont-infor-title cont-textbold">住院号码:</div>
  26. <div class="checkout-cont-infor-list">
  27. <span>{{ dataObj.AAA28 }}</span>
  28. </div>
  29. </div>
  30. <div class="checkout-cont-infortop checkout-cont-inforbotm">
  31. <div class="checkout-cont-infor-title cont-textbold">采集时间:</div>
  32. <div class="checkout-cont-infor-list">
  33. <span>{{ dataObj.CJSJ }}</span>
  34. </div>
  35. <div class="checkout-cont-infor-title cont-textbold">接收时间:</div>
  36. <div class="checkout-cont-infor-list">
  37. <span>{{ dataObj.JSSJ }}</span>
  38. </div>
  39. <div class="checkout-cont-infor-title cont-textbold">审查目的:</div>
  40. <div class="checkout-cont-infor-list">
  41. <span></span>
  42. </div>
  43. </div>
  44. <div class="checkout-cont-infortop checkout-cont-inforbotm">
  45. <div class="checkout-cont-infor-title cont-textbold">样本类型:</div>
  46. <div class="checkout-cont-infor-list">
  47. <span>{{ dataObj.YBLX }}</span>
  48. </div>
  49. <div class="checkout-cont-infor-title cont-textbold">编号:</div>
  50. <div class="checkout-cont-infor-list">
  51. <span>{{ dataObj.NO }}</span>
  52. </div>
  53. <div class="checkout-cont-infor-title cont-textbold">申请人:</div>
  54. <div class="checkout-cont-infor-list">
  55. <span>{{ dataObj.SJYS }}</span>
  56. </div>
  57. </div>
  58. <div class="checkout-cont-infor-line"></div>
  59. <div class="checkout-cont-info" v-if="dataObj.template_type == 1">
  60. <div class="checkout-cont-chief checkout-cont-mg20">
  61. <div class="checkout-cont-chief-item checkout-cont-chief-bole">细菌培养结果</div>
  62. <div class="checkout-cont-chief-item checkout-cont-chief-bole">细菌名称</div>
  63. <div class="checkout-cont-chief-item checkout-cont-chief-bole">细菌数量</div>
  64. <div class="checkout-cont-chief-item checkout-cont-chief-bole">药敏名称</div>
  65. <div class="checkout-cont-chief-item checkout-cont-chief-bole">药敏结果</div>
  66. <div class="checkout-cont-chief-item checkout-cont-chief-bole">部位(样本类型)</div>
  67. </div>
  68. <div class="checkout-cont-chief checkout-cont-mg20" v-for="(item, index) in dataObj.JCXM" :key="index">
  69. <div class="checkout-cont-chief-item">{{ item.PYJG }}</div>
  70. <div class="checkout-cont-chief-item">{{ item.XJMC }}</div>
  71. <div class="checkout-cont-chief-item">{{ item.XJSL }}</div>
  72. <div class="checkout-cont-chief-item">{{ item.YMMC }}</div>
  73. <div class="checkout-cont-chief-item">{{ item.YMJG }}</div>
  74. <div class="checkout-cont-chief-item">{{ item.YMBW }}</div>
  75. </div>
  76. </div>
  77. <div class="checkout-cont-info" v-if="dataObj.template_type == 2">
  78. <div class="checkout-cont-chief checkout-cont-mg20">
  79. <div class="checkout-cont-chief-item checkout-cont-chief-bole checkout-cont-tc">序号</div>
  80. <div class="checkout-cont-chief-item checkout-cont-chief-bole" style="width: 25%">中文名称</div>
  81. <!-- <div class="checkout-cont-chief-item checkout-cont-chief-bole">英文名称</div> -->
  82. <div class="checkout-cont-chief-item checkout-cont-chief-bole">检验结果</div>
  83. <div class="checkout-cont-chief-item checkout-cont-chief-bole">异常结果提示</div>
  84. <div class="checkout-cont-chief-item checkout-cont-chief-bole">参考范围</div>
  85. <div class="checkout-cont-chief-item checkout-cont-chief-bole">单位</div>
  86. </div>
  87. <div class="checkout-cont-chief checkout-cont-mg20" v-for="(jitem, index) in dataObj.JCXM" :key="index">
  88. <div class="checkout-cont-chief-item checkout-cont-tc">{{ index + 1 }}</div>
  89. <div class="checkout-cont-chief-item" style="width: 25%">{{ jitem.JYXM }}</div>
  90. <!-- <div class="checkout-cont-chief-item">{{ jitem.YW }}</div> -->
  91. <div class="checkout-cont-chief-item">{{ jitem.JG }}</div>
  92. <div class="checkout-cont-chief-item">{{ jitem.TS }}</div>
  93. <div class="checkout-cont-chief-item">{{ jitem.CKFW }}</div>
  94. <div class="checkout-cont-chief-item">{{ jitem.DW }}</div>
  95. </div>
  96. </div>
  97. <div class="checkout-cont-infor-line"></div>
  98. <div class="checkout-cont-zd">
  99. <span class="checkout-cont-zd-title">临床诊断为</span>
  100. </div>
  101. <div class="checkout-cont-sign">
  102. <span class="checkout-cont-sign-bolb">报告时间:</span>
  103. <span class="checkout-cont-sign-cont">{{ dataObj.BGSJ }}</span>
  104. <span class="checkout-cont-sign-bolb">检 验 者:</span>
  105. <span class="checkout-cont-sign-cont">{{ dataObj.JYY }}</span>
  106. <span class="checkout-cont-sign-bolb">审 核 者:</span>
  107. <span class="checkout-cont-sign-cont">{{ dataObj.SHY }}</span>
  108. </div>
  109. <!-- <div class="checkout-cont-physique">
  110. <div class="checkout-cont-physique-text">
  111. 注:此报告仅对送检标本负责,供医师参考。标*项目为质评合格项目。如有疑问请在48小时内反馈至检验科。地址:烟台市牟平区金埠大街717号滨州医学院烟台附属医院门诊部3楼检验科。电话:0535-4770362。
  112. </div>
  113. </div> -->
  114. </div>
  115. </div>
  116. </template>
  117. <script>
  118. import { mapState } from 'vuex'
  119. export default {
  120. name: '',
  121. components: {
  122. // OtherComponent
  123. },
  124. directives: {},
  125. filters: {},
  126. extends: {},
  127. mixins: {},
  128. props: {
  129. dataObjArr: {
  130. type: null,
  131. default: false,
  132. },
  133. },
  134. data() {
  135. return {
  136. hospital: '',
  137. ifFile: false,
  138. };
  139. },
  140. computed: {
  141. ...mapState({
  142. systemSetting: (state) => state.app.systemSetting
  143. }),
  144. },
  145. watch: {},
  146. beforeCreate() {
  147. // 生命周期钩子:组件实例刚被创建,组件属性计算之前,如 data 属性等
  148. },
  149. created() {
  150. // 生命周期钩子:组件实例创建完成,属性已绑定,但 DOM 还未生成,el 属性还不存在
  151. // 初始化渲染页面
  152. },
  153. beforeMount() {
  154. // 生命周期钩子:模板编译/挂载之前
  155. },
  156. async mounted() {
  157. // 生命周期钩子:模板编译、挂载之后(此时不保证已在 document 中)
  158. },
  159. beforeUpate() {
  160. // 生命周期钩子:组件更新之前
  161. },
  162. updated() {
  163. // 生命周期钩子:组件更新之后
  164. },
  165. activated() {
  166. // 生命周期钩子:keep-alive 组件激活时调用
  167. },
  168. deactivated() {
  169. // 生命周期钩子:keep-alive 组件停用时调用
  170. },
  171. beforeDestroy() {
  172. // 生命周期钩子:实例销毁前调用
  173. },
  174. destroyed() {
  175. // 生命周期钩子:实例销毁后调用
  176. },
  177. errorCaptured(err, vm, info) {
  178. // 生命周期钩子:当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
  179. console.log(err, vm, info);
  180. },
  181. methods: {},
  182. };
  183. </script>
  184. <style lang="scss" scoped>
  185. #checkoutA {
  186. padding: 0;
  187. margin: 0 30px;
  188. .checkout-cont {
  189. width: 100%;
  190. display: flex;
  191. flex-direction: column;
  192. justify-content: flex-start;
  193. align-items: center;
  194. border: 1.5px solid #e2dfdf;
  195. margin-top: 30px;
  196. margin-bottom: 30px;
  197. .cont-title-description {
  198. margin: 20px;
  199. font-size: 24px;
  200. font-weight: bold;
  201. color: #2c3240;
  202. text-align: center;
  203. margin-top: 40px;
  204. }
  205. .cont-textbold {
  206. font-weight: bold;
  207. }
  208. .checkout-cont-header {
  209. height: 30px;
  210. width: 100%;
  211. display: flex;
  212. justify-content: flex-start;
  213. align-items: center;
  214. margin-top: 5px;
  215. padding-left: 50px;
  216. }
  217. .checkout-cont-mark {
  218. width: 100%;
  219. margin-top: 10px;
  220. display: flex;
  221. justify-content: space-between;
  222. padding-left: 50px;
  223. padding-right: 50px;
  224. .checkout-cont-mark-mint {
  225. width: 50%;
  226. .checkout-cont-mark-title {
  227. font-weight: bold;
  228. }
  229. .checkout-cont-mark-item {
  230. display: inline-block;
  231. width: 30%;
  232. }
  233. }
  234. }
  235. .checkout-cont-info {
  236. width: 100%;
  237. min-height: 300px;
  238. .checkout-cont-chief-proof {
  239. padding-left: 100px;
  240. margin-top: 20px;
  241. .checkout-cont-chief-pbold {
  242. font-weight: bold;
  243. }
  244. }
  245. }
  246. .checkout-cont-zd {
  247. width: 100%;
  248. margin-bottom: 20px;
  249. text-align: left;
  250. padding-left: 30px;
  251. .checkout-cont-zd-title {
  252. font-weight: bold;
  253. }
  254. }
  255. .checkout-cont-infortop {
  256. width: 100%;
  257. height: 30px;
  258. display: flex;
  259. justify-content: left;
  260. align-items: center;
  261. margin-top: 20px;
  262. padding-left: 5%;
  263. .checkout-cont-infor-list {
  264. width: 15%;
  265. }
  266. .checkout-cont-infor-title {
  267. width: 11%;
  268. text-align: right;
  269. }
  270. .checkout-cont-infor-text {
  271. text-align: right;
  272. }
  273. }
  274. .checkout-cont-inforbotm {
  275. justify-content: flex-start;
  276. padding-left: 2%;
  277. }
  278. .checkout-cont-infor-line {
  279. width: 100%;
  280. height: 2px;
  281. border-bottom: 1.5px solid #e2dfdf;
  282. margin-top: 20px;
  283. margin-bottom: 30px;
  284. }
  285. .checkout-cont-chief {
  286. width: 100%;
  287. min-height: 30px;
  288. display: flex;
  289. justify-content: center;
  290. align-items: center;
  291. .checkout-cont-chief-item {
  292. width: 15%;
  293. text-align: left;
  294. padding-right: 15px;
  295. box-sizing: border-box;
  296. }
  297. .checkout-cont-tc {
  298. text-align: center;
  299. }
  300. .checkout-cont-chief-bole {
  301. font-weight: bold;
  302. }
  303. }
  304. .checkout-cont-mg20 {
  305. margin-top: 5px;
  306. }
  307. .checkout-cont-sign {
  308. width: 100%;
  309. height: 30px;
  310. padding-left: 50px;
  311. display: flex;
  312. align-items: center;
  313. justify-content: center;
  314. .checkout-cont-sign-cont {
  315. width: 20%;
  316. }
  317. .checkout-cont-sign-bolb {
  318. font-weight: bold;
  319. }
  320. }
  321. .checkout-cont-physique {
  322. width: 100%;
  323. height: 30px;
  324. text-align: left;
  325. padding-left: 80px;
  326. padding-right: 80px;
  327. margin-top: 30px;
  328. margin-bottom: 50px;
  329. display: flex;
  330. justify-content: flex-start;
  331. .checkout-cont-physique-text {
  332. width: 100%;
  333. font-weight: bold;
  334. }
  335. }
  336. }
  337. }
  338. .examType {
  339. width: 100%;
  340. display: flex;
  341. justify-content: flex-end;
  342. padding-right: 50px;
  343. }
  344. </style>