SettlementDialog.mgDcPrD0.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import{a as O,f as p,r as w,w as z,ao as m,K as C,o as f,L as r,b as t,T as i,c as V,O as E,R as s,S as U,a9 as $,M as A,am as K,Q as D}from"./vue.fY72QXCX.js";import{R as Q}from"./api.C7LFT2hd.js";import{E as _}from"./index.Ib81wAC-.js";import{_ as Y}from"./_plugin-vue_export-helper.DlAUqK2U.js";const j={class:"form-content"},G={class:"form-content"},H={class:"form-content"},J={class:"form-content"},X={class:"form-content"},Z={class:"form-content"},ee={class:"table-container"},te={class:"detail-table"},oe={class:"accessories-info"},le={class:"form-content"},ne={class:"remark-info"},ae={class:"form-content"},re={key:0},ie=O({__name:"SettlementDialog",props:{visible:{type:Boolean},settlementData:{},modelValue:{}},emits:["update:visible","update:modelValue"],setup(S,{emit:q}){const u=S,b=q,W=p(()=>{var o;return((o=u.modelValue)==null?void 0:o.mode)==="settlement"}),T=p(()=>{var o;return((o=u.modelValue)==null?void 0:o.mode)==="renew"}),h=w(!1),n=w({}),x=w("");z(()=>u.visible,o=>{h.value=o,o&&(n.value=u.modelValue||u.settlementData||{})}),z(()=>u.modelValue,o=>{console.log("val:::",o),o&&(n.value=o,console.log("formData.value:::",n.value))},{immediate:!0});const F=p(()=>{var o,e,l,a;return((e=(o=n.value)==null?void 0:o.app_user_borrower)==null?void 0:e.name)||((a=(l=n.value)==null?void 0:l.borrower_info)==null?void 0:a.name)||""}),I=p(()=>{var o,e,l,a;return((e=(o=n.value)==null?void 0:o.app_user_borrower)==null?void 0:e.user_code)||((a=(l=n.value)==null?void 0:l.borrower_info)==null?void 0:a.user_code)||""}),M=p(()=>{var o,e;return((o=n.value)==null?void 0:o.borrow_type_label)||((e=n.value)==null?void 0:e.borrow_type)||""}),g=p(()=>{var o,e;return((e=(o=n.value)==null?void 0:o.items)==null?void 0:e.filter(l=>(l==null?void 0:l.device)!==null))||[]}),B=()=>{b("update:visible",!1),b("update:modelValue",n.value)};async function P(){console.log("filteredItems::",g.value.length),console.log("formData.value::",n.value);for(let o=0;o<g.value.length;o++){const e=g.value[o],l={device:e.device,quantity:e.quantity,return_remark:x.value,id:n.value.id};try{const a=await Q(l);a.code===2e3&&(console.log(`设备 ${l.device} 续借成功`,a),b("update:visible",!1),b("update:modelValue",n.value),_.success("续借成功"))}catch(a){console.error(`设备 ${l.device} 续借失败`,a),_.success("续借失败")}}}const y=w(null),R=()=>{try{if(!y.value){_.error("打印区域未找到");return}const o=y.value.cloneNode(!0),e=document.createElement("iframe");if(e.style.position="absolute",e.style.width="0px",e.style.height="0px",e.style.left="-9999px",document.body.appendChild(e),!e.contentWindow||!e.contentWindow.document)throw new Error("iframe初始化失败");const l=e.contentWindow.document;l.write(`
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <title>设备借用单打印</title>
  7. <style>
  8. /* 打印样式 */
  9. @media print {
  10. body {
  11. font-family: Arial, sans-serif;
  12. padding: 20px;
  13. margin: 0;
  14. }
  15. .no-print {
  16. display: none !important;
  17. }
  18. /* 表单布局优化 */
  19. .el-form {
  20. width: 100%;
  21. }
  22. .el-row {
  23. display: flex !important;
  24. flex-wrap: nowrap !important;
  25. margin: 0 -8px;
  26. }
  27. .el-col {
  28. padding: 0 8px;
  29. flex: 1;
  30. }
  31. /* 表单项样式 */
  32. .el-form-item {
  33. margin-bottom: 12px;
  34. page-break-inside: avoid;
  35. }
  36. .el-form-item__label {
  37. font-weight: bold;
  38. margin-bottom: 4px;
  39. display: block;
  40. }
  41. .el-form-item__content {
  42. line-height: 1.5;
  43. }
  44. /* 表格样式优化 */
  45. table {
  46. page-break-inside: auto;
  47. width: 100% !important;
  48. border-collapse: collapse;
  49. margin: 20px 0;
  50. table-layout: fixed;
  51. }
  52. tr {
  53. page-break-inside: avoid;
  54. page-break-after: auto;
  55. }
  56. th, td {
  57. border: 1px solid #000;
  58. padding: 8px;
  59. text-align: center;
  60. word-break: break-all;
  61. }
  62. /* 隐藏Element Plus的默认样式 */
  63. .el-input__inner {
  64. border: none !important;
  65. padding: 0 !important;
  66. }
  67. .el-form--label-top .el-form-item__label {
  68. padding: 0;
  69. }
  70. /* 标题样式 */
  71. h2 {
  72. text-align: center;
  73. margin-bottom: 30px;
  74. font-size: 24px;
  75. }
  76. /* 明细表标题 */
  77. .detail-title {
  78. font-weight: bold;
  79. margin: 20px 0 10px;
  80. font-size: 16px;
  81. }
  82. /* 配件信息和备注 */
  83. .accessories-info,
  84. .remark-info {
  85. margin-top: 20px;
  86. }
  87. .accessories-info .el-input,
  88. .remark-info .el-input {
  89. width: 100%;
  90. }
  91. }
  92. /* 屏幕预览样式 */
  93. @media screen {
  94. body {
  95. background-color: #fff;
  96. padding: 20px;
  97. }
  98. }
  99. </style>
  100. </head>
  101. <body>
  102. <h2 style="text-align: center; margin-bottom: 30px;">设备借用单</h2>
  103. </body>
  104. </html>
  105. `);const a=l.body;a.appendChild(o);const c=l.createElement("button");if(c.className="no-print",c.textContent="打印",c.style.cssText=`
  106. position: fixed;
  107. top: 20px;
  108. right: 20px;
  109. padding: 10px 20px;
  110. background: #409EFF;
  111. color: white;
  112. border: none;
  113. border-radius: 4px;
  114. cursor: pointer;
  115. z-index: 9999;
  116. `,c.onclick=()=>{try{if(e.contentWindow)e.contentWindow.print();else throw new Error("打印窗口未准备好")}catch(v){console.error("打印过程出错:",v),_.error("打印失败,请重试")}},a.appendChild(c),e.contentWindow)e.contentWindow.focus(),setTimeout(()=>{try{if(e.contentWindow)e.contentWindow.print();else throw new Error("打印窗口未准备好")}catch(v){console.error("打印过程出错:",v),_.error("打印失败,请重试")}finally{document.body.removeChild(e)}},500);else throw new Error("打印窗口未准备好")}catch(o){console.error("打印准备过程出错:",o),_.error("打印准备失败,请重试")}};return(o,e)=>{const l=m("el-form-item"),a=m("el-col"),c=m("el-row"),v=m("el-form"),k=m("el-button"),L=m("el-dialog");return f(),C(L,{modelValue:h.value,"onUpdate:modelValue":e[1]||(e[1]=d=>h.value=d),title:W.value?"领取设备结算单":"续借",width:"75%","close-on-click-modal":!1,onClose:B},{footer:r(()=>[i(k,{onClick:B},{default:r(()=>e[7]||(e[7]=[D("关闭",-1)])),_:1,__:[7]}),W.value?(f(),C(k,{key:0,type:"primary",onClick:R},{default:r(()=>e[8]||(e[8]=[D("打印",-1)])),_:1,__:[8]})):E("",!0),T.value?(f(),C(k,{key:1,type:"primary",onClick:P},{default:r(()=>e[9]||(e[9]=[D("提交",-1)])),_:1,__:[9]})):E("",!0)]),default:r(()=>[t("div",{ref_key:"printContent",ref:y,class:"print-container"},[i(v,{model:n.value,"label-width":"110px","label-position":"top",class:"print-form"},{default:r(()=>[i(c,{gutter:16},{default:r(()=>[i(a,{span:8},{default:r(()=>[i(l,{label:"借用单编号"},{default:r(()=>[t("div",j,s(n.value.application_no),1)]),_:1})]),_:1}),i(a,{span:8},{default:r(()=>[i(l,{label:"借用人"},{default:r(()=>[t("div",G,s(F.value),1)]),_:1})]),_:1}),i(a,{span:8},{default:r(()=>[i(l,{label:"学号/工号"},{default:r(()=>[t("div",H,s(I.value),1)]),_:1})]),_:1})]),_:1}),i(c,{gutter:16},{default:r(()=>[i(a,{span:8},{default:r(()=>[i(l,{label:"借用性质"},{default:r(()=>[t("div",J,s(M.value),1)]),_:1})]),_:1}),i(a,{span:8},{default:r(()=>[i(l,{label:"借出时间"},{default:r(()=>[t("div",X,s(n.value.expected_start_time),1)]),_:1})]),_:1}),i(a,{span:8},{default:r(()=>[i(l,{label:"预计归还时间"},{default:r(()=>[t("div",Z,s(n.value.expected_end_time),1)]),_:1})]),_:1})]),_:1}),e[6]||(e[6]=t("div",{class:"detail-title"},"借用明细表",-1)),t("div",ee,[t("table",te,[e[2]||(e[2]=t("thead",null,[t("tr",null,[t("th",{width:"60"},"序号"),t("th",null,"设备编号"),t("th",null,"设备分类"),t("th",null,"设备名称"),t("th",null,"借用数量"),t("th",null,"规格型号"),t("th",null,"存放位置"),t("th",null,"备注")])],-1)),t("tbody",null,[(f(!0),V(U,null,$(g.value,(d,N)=>(f(),V("tr",{key:N},[t("td",null,s(N+1),1),t("td",null,s(d.device_code),1),t("td",null,s(d.device_category_name),1),t("td",null,s(d.device_name),1),t("td",null,s(d.quantity),1),t("td",null,s(d.device_specification),1),t("td",null,s(d.device_storage_location||"-"),1),t("td",null,s(d.remark||"-"),1)]))),128))])])]),t("div",oe,[e[3]||(e[3]=t("div",{class:"detail-title"},"配件信息",-1)),t("div",le,s(n.value.accessories||"-"),1)]),t("div",ne,[e[4]||(e[4]=t("div",{class:"detail-title"},"备注",-1)),t("div",ae,s(n.value.remark||"-"),1)]),T.value?(f(),V("div",re,[e[5]||(e[5]=t("div",{style:{"margin-bottom":"8px","font-weight":"bold"}},"续借理由",-1)),A(t("textarea",{"onUpdate:modelValue":e[0]||(e[0]=d=>x.value=d),placeholder:"请输入续借理由",rows:"3",style:{width:"100%",border:"1px solid #dcdfe6",padding:"8px",resize:"vertical","box-sizing":"border-box"}},null,512),[[K,x.value]])])):E("",!0)]),_:1,__:[6]},8,["model"])],512)]),_:1},8,["modelValue","title"])}}}),pe=Y(ie,[["__scopeId","data-v-d4b97af3"]]);export{pe as default};