Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

printOne.vue 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs="crumbs"></bread-crumb>
  5. <el-row style="float:right;">
  6. <el-col :span="24">
  7. <el-button size="small" icon="el-icon-printer" type="primary" @click="printAction">打印</el-button>
  8. </el-col>
  9. </el-row>
  10. </div>
  11. <div class="app-container" style="background-color: white;">
  12. <div id="print_content">
  13. <div class="print_main_content" v-for="(item,index) in tableData" :key="index">
  14. <div class="order_title_panl">
  15. <span class="main_title">{{getTimeOne(item.schedule_date)}}&nbsp;
  16. <span v-if="item.schedule_type == 1">上午</span>
  17. <span v-if="item.schedule_type == 2">下午</span>
  18. <span v-if="item.schedule_type == 3">晚上</span>
  19. </span>
  20. </div>
  21. <div class="table_panel">
  22. <table class="table">
  23. <thead>
  24. <tr>
  25. <td :width="td_1_width">分区</td>
  26. <td :width="td_3_width">病人姓名</td>
  27. </tr>
  28. </thead>
  29. <tbody>
  30. <tr v-for="(it, i) in item.zones" :key="i">
  31. <td :width="td_1_width">{{getZoneName(it.partition_id)}} </td>
  32. <td :width="td_3_width" valign="top">
  33. <div style="min-height: 80px;">
  34. <div class="proj">
  35. <div class="proj_item">
  36. <span class="zone_name">
  37. {{getPatientName(item.schedule_type,it.partition_id)}}
  38. </span>
  39. </div>
  40. </div>
  41. </div>
  42. </td>
  43. </tr>
  44. </tbody>
  45. </table>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </template>
  52. <script>
  53. import { GetAllZone,getSchedualPrintList } from "@/api/dialysis";
  54. import { parseTime } from '@/utils'
  55. import { uParseTime } from '@/utils/tools'
  56. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  57. import print from 'print-js'
  58. export default {
  59. name: 'SchedulePrint',
  60. data() {
  61. return {
  62. crumbs: [
  63. { path: false, name: '排班管理' },
  64. { path: false, name: '排班打印' }
  65. ],
  66. td_1_width: '8%',
  67. td_2_width: '8%',
  68. td_3_width: '64%',
  69. td_4_width: '20%',
  70. month: 1,
  71. begin_day: 1,
  72. schedules: [
  73. {
  74. day: 1,
  75. weekday: '星期一',
  76. all: {
  77. am: { /* zone_name: [ schedule, ... ] */ },
  78. pm: { /* zone_name: [ schedule, ... ] */ },
  79. evening: { /* zone_name: [ schedule, ... ] */ }
  80. },
  81. hdf: [ /* schedule, ... */],
  82. hd_hp: [ /* schedule, ... */],
  83. new_hdf:{
  84. am: { /* zone_name: [ schedule, ... ] */ },
  85. pm: { /* zone_name: [ schedule, ... ] */ },
  86. evening: { /* zone_name: [ schedule, ... ] */ }
  87. },
  88. new_hd_hp:{
  89. am: { /* zone_name: [ schedule, ... ] */ },
  90. pm: { /* zone_name: [ schedule, ... ] */ },
  91. evening: { /* zone_name: [ schedule, ... ] */ }
  92. }
  93. },
  94. {
  95. day: 2,
  96. weekday: '星期二',
  97. all: {
  98. am: { /* zone_name: [ schedule, ... ] */ },
  99. pm: { /* zone_name: [ schedule, ... ] */ },
  100. evening: { /* zone_name: [ schedule, ... ] */ }
  101. },
  102. hdf: [ /* schedule, ... */],
  103. hd_hp: [ /* schedule, ... */],
  104. new_hdf:{
  105. am: { /* zone_name: [ schedule, ... ] */ },
  106. pm: { /* zone_name: [ schedule, ... ] */ },
  107. evening: { /* zone_name: [ schedule, ... ] */ }
  108. },
  109. new_hd_hp:{
  110. am: { /* zone_name: [ schedule, ... ] */ },
  111. pm: { /* zone_name: [ schedule, ... ] */ },
  112. evening: { /* zone_name: [ schedule, ... ] */ }
  113. }
  114. },
  115. {
  116. day: 3,
  117. weekday: '星期三',
  118. all: {
  119. am: { /* zone_name: [ schedule, ... ] */ },
  120. pm: { /* zone_name: [ schedule, ... ] */ },
  121. evening: { /* zone_name: [ schedule, ... ] */ }
  122. },
  123. hdf: [ /* schedule, ... */],
  124. hd_hp: [ /* schedule, ... */],
  125. new_hdf:{
  126. am: { /* zone_name: [ schedule, ... ] */ },
  127. pm: { /* zone_name: [ schedule, ... ] */ },
  128. evening: { /* zone_name: [ schedule, ... ] */ }
  129. },
  130. new_hd_hp:{
  131. am: { /* zone_name: [ schedule, ... ] */ },
  132. pm: { /* zone_name: [ schedule, ... ] */ },
  133. evening: { /* zone_name: [ schedule, ... ] */ }
  134. }
  135. },
  136. {
  137. day: 4,
  138. weekday: '星期四',
  139. all: {
  140. am: { /* zone_name: [ schedule, ... ] */ },
  141. pm: { /* zone_name: [ schedule, ... ] */ },
  142. evening: { /* zone_name: [ schedule, ... ] */ }
  143. },
  144. hdf: [ /* schedule, ... */],
  145. hd_hp: [ /* schedule, ... */],
  146. new_hdf:{
  147. am: { /* zone_name: [ schedule, ... ] */ },
  148. pm: { /* zone_name: [ schedule, ... ] */ },
  149. evening: { /* zone_name: [ schedule, ... ] */ }
  150. },
  151. new_hd_hp:{
  152. am: { /* zone_name: [ schedule, ... ] */ },
  153. pm: { /* zone_name: [ schedule, ... ] */ },
  154. evening: { /* zone_name: [ schedule, ... ] */ }
  155. }
  156. },
  157. {
  158. day: 5,
  159. weekday: '星期五',
  160. all: {
  161. am: { /* zone_name: [ schedule, ... ] */ },
  162. pm: { /* zone_name: [ schedule, ... ] */ },
  163. evening: { /* zone_name: [ schedule, ... ] */ }
  164. },
  165. hdf: [ /* schedule, ... */],
  166. hd_hp: [ /* schedule, ... */],
  167. new_hdf:{
  168. am: { /* zone_name: [ schedule, ... ] */ },
  169. pm: { /* zone_name: [ schedule, ... ] */ },
  170. evening: { /* zone_name: [ schedule, ... ] */ }
  171. },
  172. new_hd_hp:{
  173. am: { /* zone_name: [ schedule, ... ] */ },
  174. pm: { /* zone_name: [ schedule, ... ] */ },
  175. evening: { /* zone_name: [ schedule, ... ] */ }
  176. }
  177. },
  178. {
  179. day: 6,
  180. weekday: '星期六',
  181. all: {
  182. am: { /* zone_name: [ schedule, ... ] */ },
  183. pm: { /* zone_name: [ schedule, ... ] */ },
  184. evening: { /* zone_name: [ schedule, ... ] */ }
  185. },
  186. hdf: [ /* schedule, ... */],
  187. hd_hp: [ /* schedule, ... */],
  188. new_hdf:{
  189. am: { /* zone_name: [ schedule, ... ] */ },
  190. pm: { /* zone_name: [ schedule, ... ] */ },
  191. evening: { /* zone_name: [ schedule, ... ] */ }
  192. },
  193. new_hd_hp:{
  194. am: { /* zone_name: [ schedule, ... ] */ },
  195. pm: { /* zone_name: [ schedule, ... ] */ },
  196. evening: { /* zone_name: [ schedule, ... ] */ }
  197. }
  198. },
  199. {
  200. day: 7,
  201. weekday: '星期日',
  202. all: {
  203. am: { /* zone_name: [ schedule, ... ] */ },
  204. pm: { /* zone_name: [ schedule, ... ] */ },
  205. evening: { /* zone_name: [ schedule, ... ] */ }
  206. },
  207. hdf: [ /* schedule, ... */],
  208. hd_hp: [ /* schedule, ... */],
  209. new_hdf:{
  210. am: { /* zone_name: [ schedule, ... ] */ },
  211. pm: { /* zone_name: [ schedule, ... ] */ },
  212. evening: { /* zone_name: [ schedule, ... ] */ }
  213. },
  214. new_hd_hp:{
  215. am: { /* zone_name: [ schedule, ... ] */ },
  216. pm: { /* zone_name: [ schedule, ... ] */ },
  217. evening: { /* zone_name: [ schedule, ... ] */ }
  218. }
  219. }
  220. ],
  221. total:[],
  222. list:[],
  223. schedule_date:"",
  224. schedule_type:0,
  225. partition_type:0,
  226. keywords:"",
  227. loading:false,
  228. tableData:[],
  229. numberList:[],
  230. partitionArr:[],
  231. }
  232. },
  233. components: {
  234. BreadCrumb
  235. },
  236. created() {
  237. var date = new Date().getTime()
  238. if (this.$route.query.date) {
  239. date = this.$route.query.date
  240. }
  241. var date_str = parseTime(date, '{y}-{m}-{d}')
  242. this.month = parseInt(parseTime(date, '{m}'))
  243. this.getAllZone()
  244. this.getlist()
  245. },
  246. methods: {
  247. getAllZone() {
  248. GetAllZone().then(response => {
  249. if (response.data.state == 0) {
  250. this.$message.error(response.data.msg);
  251. return false;
  252. } else {
  253. this.partitionArr = response.data.data.zone;
  254. }
  255. });
  256. },
  257. getlist(){
  258. var params = {
  259. schedule_date:this.$route.query.schedule_date,
  260. schedule_type:parseInt(this.$route.query.schedule_type),
  261. partition_type:parseInt(this.$route.query.partition_type),
  262. keywords:this.$route.query.keywords,
  263. page:1,
  264. limit:5000,
  265. }
  266. this.loading = true;
  267. this.tableData = [];
  268. getSchedualPrintList(params).then(response => {
  269. if(response.data.state == 1){
  270. this.loading = false
  271. var list = response.data.data.list
  272. this.list = list
  273. var listOne = response.data.data.listOne
  274. if(list!=null && list.length > 0){
  275. let dataInfo = {}
  276. list.forEach((item, index) => {
  277. let { schedule_type } = item
  278. if (!dataInfo[schedule_type]) {
  279. dataInfo[schedule_type] = {
  280. schedule_type:item.schedule_type,
  281. schedule_date:item.schedule_date,
  282. zones: [],
  283. }
  284. }
  285. })
  286. let arr = Object.values(dataInfo)
  287. console.log("arr222",arr)
  288. if(arr!=null && arr.length > 0){
  289. for(let i=0;i<arr.length;i++){
  290. for(let j=0;j<listOne.length;j++){
  291. if(arr[i].schedule_type == listOne[j].schedule_type){
  292. arr[i].zones.push(listOne[j])
  293. }
  294. }
  295. }
  296. }
  297. console.log("arr23322332",arr)
  298. this.tableData = arr
  299. }
  300. this.numberList = response.data.data.numberList
  301. console.log("list2332233232wo",list)
  302. console.log("numberList",this.numberList)
  303. }
  304. });
  305. },
  306. getTimeOne(val) {
  307. if(val == ""){
  308. return ""
  309. }else {
  310. return uParseTime(val, '{y}-{m}-{d}')
  311. }
  312. },
  313. getPatientNum(week,type){
  314. if(week == '星期一'){
  315. week = 1
  316. }else if(week == '星期二'){
  317. week = 2
  318. }else if(week == '星期三'){
  319. week = 3
  320. }else if(week == '星期四'){
  321. week = 4
  322. }else if(week == '星期五'){
  323. week = 5
  324. }else if(week == '星期六'){
  325. week = 6
  326. }else if(week == '星期日'){
  327. week = 7
  328. }
  329. let num = 0
  330. this.total.map(item => {
  331. if(item.schedule_week == week && item.schedule_type == type){
  332. num = item.Count
  333. }
  334. })
  335. return num
  336. },
  337. patient_names: function(schedules) {
  338. var names = []
  339. for (let index = 0; index < schedules.length; index++) {
  340. const schedule = schedules[index]
  341. console.log(schedule)
  342. names.push(schedule.patient.name)
  343. }
  344. const obj = {}
  345. names = names.reduce((cur, next) => {
  346. obj[next] ? '' : obj[next] = true && cur.push(next)
  347. return cur
  348. }, []) // 设置cur默认类型为数组,并且初始值为空的数组
  349. console.log('names',names)
  350. return names.join('、')
  351. },
  352. patient_other_names: function(schedules) {
  353. let am = []
  354. let pm = []
  355. let evening = []
  356. var names = []
  357. for (let index = 0; index < schedules.length; index++) {
  358. const schedule = schedules[index]
  359. console.log(schedule)
  360. names.push(schedule.patient.name)
  361. if(schedule.schedule_type == 1){
  362. am.push(schedule.patient.name)
  363. }else if(schedule.schedule_type == 2){
  364. pm.push(schedule.patient.name)
  365. }else if(schedule.schedule_type == 3){
  366. evening.push(schedule.patient.name)
  367. }
  368. }
  369. const obj = {}
  370. names = names.reduce((cur, next) => {
  371. obj[next] ? '' : obj[next] = true && cur.push(next)
  372. return cur
  373. }, []) // 设置cur默认类型为数组,并且初始值为空的数组
  374. var str= ""
  375. if(am.length > 0){
  376. str = "上午:"+ am.length + '人' +"<br/>" + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + am.join("、") +"<br/>"
  377. }
  378. if(pm.length > 0){
  379. str = str + "下午:" + pm.length + '人' + "<br/>" + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + pm.join("、")+"<br/>"
  380. }
  381. if(evening.length > 0){
  382. str = str + "晚上:" + evening.length + '人' +"<br/>" + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + evening.join("、")
  383. }
  384. return str
  385. },
  386. printAction: function() {
  387. const style = '@media print { .print_main_content { background-color: white; width:960px; margin:0 auto; padding: 0 0 20px 0; } .order_title_panl { text-align: center; } .main_title { font-size: 18px; line-height: 40px; font-weight: 500; } .table_panel { } .table { width: 100%; border: 1px solid; border-collapse: collapse; padding: 2px; } thead tr td { border: 1px solid; text-align: center; font-size: 20px; padding: 15px 5px; } tbody tr td { border: 1px solid; text-align: center; font-size: 18px; padding: 10px 5px; } .proj { padding: 5px 0; text-align: left; } .proj_title { font-size: 16px; font-weight: 500; line-height: 25px; } .proj_item { font-size: 15px; line-height: 20px; } .zone_name { font-weight: 500; } }'
  388. printJS({
  389. printable: 'print_content',
  390. type: 'html',
  391. documentTitle: ' ',
  392. style: style,
  393. scanStyles: false
  394. })
  395. },
  396. getPatientName(schedule_type,partition_id){
  397. var str = ""
  398. var arr= []
  399. if(this.list!=null && this.list.length > 0){
  400. for(let i=0;i<this.list.length;i++){
  401. if(this.list[i].schedule_type == schedule_type && this.list[i].partition_id == partition_id){
  402. arr.push(this.list[i])
  403. }
  404. }
  405. }
  406. if(arr.length > 0){
  407. for(let i=0;i<arr.length;i++){
  408. str += arr[i].name + ","
  409. }
  410. }
  411. return str.slice(0,str.length-1)
  412. },
  413. getZoneName(id){
  414. var name = ""
  415. for(let i=0;i<this.partitionArr.length;i++){
  416. if(id == this.partitionArr[i].id){
  417. name = this.partitionArr[i].name
  418. }
  419. }
  420. return name
  421. }
  422. }
  423. }
  424. </script>
  425. <style rel="stylesheet/scss" lang="scss" scoped>
  426. .print_main_content {
  427. background-color: white;
  428. width: 960px;
  429. margin: 0 auto;
  430. padding: 0 0 20px 0;
  431. .order_title_panl {
  432. text-align: center;
  433. .main_title {
  434. font-size: 18px;
  435. line-height: 40px;
  436. font-weight: 500;
  437. }
  438. }
  439. .table_panel {
  440. .table {
  441. width: 100%;
  442. border: 1px solid;
  443. border-collapse: collapse;
  444. padding: 2px;
  445. thead {
  446. tr {
  447. td {
  448. border: 1px solid;
  449. text-align: center;
  450. font-size: 20px;
  451. padding: 15px 5px;
  452. }
  453. }
  454. }
  455. tbody {
  456. tr {
  457. td {
  458. border: 1px solid;
  459. text-align: center;
  460. font-size: 18px;
  461. padding: 10px 5px;
  462. .proj {
  463. padding: 5px 0;
  464. text-align: left;
  465. .proj_title {
  466. font-size: 16px;
  467. font-weight: 500;
  468. line-height: 25px;
  469. }
  470. .proj_item {
  471. font-size: 15px;
  472. line-height: 20px;
  473. .zone_name {
  474. font-weight: 500;
  475. }
  476. }
  477. }
  478. }
  479. }
  480. }
  481. }
  482. }
  483. }
  484. </style>