CashierProcessInfo.vue 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117
  1. <template>
  2. <div class="layout_container">
  3. <header>
  4. <PatientBaseList ref="patientBaseListRef" @selectPatientInfo="selectPatient"></PatientBaseList>
  5. </header>
  6. <div class="layout_main">
  7. <el-container>
  8. <el-header style="height: 90px">
  9. <div style="width: 100%" >
  10. <el-form label-width="100px" size="large">
  11. <el-row style="width: 100%">
  12. <el-col :span="4" >
  13. <el-form-item v-show="setShowFlag" label="结算类型:">
  14. <el-input v-model="settData.settleTypeName" disabled style="width: 100px"></el-input>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="4" >
  18. <el-form-item v-show="setShowFlag" label="自付:">
  19. <el-input v-model="settData.zfJe" disabled style="width: 100px"></el-input>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="4" >
  23. <el-form-item v-show="setShowFlag" :label="settData.settleName">
  24. <el-input v-model="settData.settle" disabled style="width: 100px"></el-input>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="4" >
  28. <el-form-item v-show="setShowFlag" label="实收:">
  29. <el-input-number v-model="settData.ssJe" :controls="false" :precision="2" :min="0" />
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="4" >
  33. <el-form-item v-show="setShowFlag" label="找还:">
  34. <el-input v-model="settData.zhje" disabled style="width: 80px"></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="4" v-if="fpVersion ==='0'">
  38. <el-form-item label="当前发票号:">
  39. <span style="display: inline-block;width: 110px;background-color: #0f5e0f;text-align: center;color: #2eff00;font-size: 18px">{{settData.currentNoStr}}</span>
  40. </el-form-item>
  41. </el-col>
  42. </el-row>
  43. </el-form>
  44. <div style="height:25px">
  45. <el-button :disabled="saveFlag" icon="Check" type="success" @click="saveCashData">保存</el-button>
  46. <el-button :disabled="qxFlag" icon="Minus" type="danger" @click="cancelCash">取消出纳</el-button>
  47. <el-button type="primary" icon="RefreshLeft" @click="chongZhiData" >重置</el-button>
  48. <el-button type="primary" icon="Money" @click="openPos" >智能POS工具包</el-button>
  49. </div>
  50. </div>
  51. </el-header>
  52. <el-container>
  53. <el-aside style="width: 60%">
  54. <div style="height: 60%">
  55. <div class="border_solid layout_overflow_auto" style="float: left;width: 40%;height: 100%">
  56. <el-divider border-style="dashed" content-position="left" >记账信息</el-divider>
  57. <el-table :data="jzInfoList" style="width: 100%" height="200">
  58. <el-table-column property="ybType" label="类型" />
  59. <el-table-column property="ybJzJe" label="金额" />
  60. </el-table>
  61. </div>
  62. <div class="border_solid layout_overflow_auto" style="float: right;width: 58%;height: 100%">
  63. <el-divider border-style="dashed" content-position="left" >交款信息</el-divider>
  64. <el-table :data="jkInfoList" style="width: 100%" height="180">
  65. <el-table-column width="80" label="操作" >
  66. <template #default="scope">
  67. <el-button v-if="scope.row.settType ==='交纳' && (scope.row.depoType==='3' || scope.row.depoType==='O') " type="primary" @click="shuaKa(scope.row,scope.$index)">刷卡/扫码</el-button>
  68. </template>
  69. </el-table-column>
  70. <el-table-column property="settType" width="50" />
  71. <el-table-column property="depoType" label="类型" >
  72. <template #default="scope">
  73. <el-select v-model="scope.row.depoType" style="width: 100px">
  74. <el-option v-for="item in zdChequeTypes" :key="item.code" :label="item.name" :value="item.code"></el-option>
  75. </el-select>
  76. </template>
  77. </el-table-column>
  78. <el-table-column property="depoAmount" label="金额" width="120">
  79. <template #default="scope">
  80. <el-input-number v-model="scope.row.depoAmount" @blur="calcJkJe" :controls="false" :precision="2" :min="0" size="small" style="width: 100px"/>
  81. </template>
  82. </el-table-column>
  83. <el-table-column property="chequeNo" label="凭证号" >
  84. <template #default="scope">
  85. <el-input v-model="scope.row.chequeNo" size="small" style="width: 100px"/>
  86. </template>
  87. </el-table-column>
  88. <el-table-column >
  89. <template #default="scope">
  90. <el-button icon="Plus" @click="addJkInfo"></el-button>
  91. <el-button icon="Minus" @click="delJkInfo(scope.$index)" ></el-button>
  92. </template>
  93. </el-table-column>
  94. </el-table>
  95. <div v-if="jkInfoList.length > 0" style="width: 200px;margin-left: 100px" class="layout_overflow_auto">
  96. <el-descriptions size="large" :column="1" border >
  97. <el-descriptions-item label="交纳:">
  98. <span class="f-size" style="color: blue" >{{jkHj.jnZj}} </span>
  99. </el-descriptions-item>
  100. <el-descriptions-item label="退款:">
  101. <span class="f-size" style="color: red">{{jkHj.tkZj}} </span>
  102. </el-descriptions-item>
  103. <el-descriptions-item label="总计:">
  104. <span class="f-size">{{jkHj.zj}} </span>
  105. </el-descriptions-item>
  106. </el-descriptions>
  107. </div>
  108. </div>
  109. </div>
  110. <div style="height: 30%">
  111. <el-divider border-style="dashed" content-position="left" >发票信息</el-divider>
  112. <div class="border_solid layout_overflow_auto" style="float: left;width: 50%;height: 100%">
  113. <el-table :data="zyInfoList" style="width: 100%" highlight-current-row @row-click="fetchZyData" height="180">
  114. <el-table-column property="ledgerSn" label="账页" />
  115. <el-table-column property="accountDate" label="结算日期" />
  116. <el-table-column label="类型" >
  117. <template #default="scope">
  118. {{getZySettType(scope.row)}}
  119. </template>
  120. </el-table-column>
  121. <el-table-column property="cashDate" label="出纳日期" />
  122. <el-table-column property="responceTypeName" label="结账身份" />
  123. </el-table>
  124. </div>
  125. <div class="border_solid layout_overflow_auto" style="float: right;width: 49%;height: 100%">
  126. <el-table :data="zyFpInfoList" style="width: 100%" height="180">
  127. <el-table-column label="操作" width="200" >
  128. <template #default="scope">
  129. <el-button v-if="scope.row.inpatientNo !=null && fpVersion==='0'" icon="Printer" type="success" @click="selectPrintZyFp(scope.row)">打印</el-button>
  130. <el-button v-if="scope.row.inpatientNo !=null && fpVersion==='1'" icon="Upload" title="上传电子发票" type="primary" @click="uploadZyFp(scope.row,3)"></el-button>
  131. <el-button v-if="scope.row.inpatientNo !=null && fpVersion==='1'" icon="Download" title="下载电子发票" type="primary" @click="openDzfp(scope.row,3)"></el-button>
  132. <el-button v-if="scope.row.inpatientNo !=null && fpVersion==='1'" icon="Delete" title="作废电子发票" type="danger" @click="uploadZyFp(scope.row,4)"></el-button>
  133. <el-button v-if="scope.row.inpatientNo !=null && fpVersion==='1'" icon="Download" title="下载已作废电子发票" type="danger" @click="downDzFp(scope.row,4,'0')"></el-button>
  134. </template>
  135. </el-table-column>
  136. <el-table-column property="ledgerSn" label="账页" />
  137. <el-table-column v-if="fpVersion === '0'" property="receiptNo" label="发票号" />
  138. <el-table-column property="responceUnitName" label="类型" />
  139. <el-table-column property="totalCharge" label="发票金额" />
  140. </el-table>
  141. </div>
  142. </div>
  143. </el-aside>
  144. <el-main style="width: 40%">
  145. <el-tabs v-model="activeName" @tab-change="tabClick">
  146. <el-tab-pane label="已交押金" name="one">
  147. <el-table :data="yjYjList" style="width: 100%;" :height="350">
  148. <el-table-column property="ledgerSn" label="账页" />
  149. <!-- <el-table-column label="打印操作" >-->
  150. <!-- <template #default="scope">-->
  151. <!-- <el-button v-if="scope.row.status ==='1'" icon="Printer" type="success" @click="printFp(scope.row)">打印</el-button>-->
  152. <!-- </template>-->
  153. <!-- </el-table-column>>-->
  154. <el-table-column property="depoDate" label="日期" />
  155. <el-table-column property="statusName" label="事务" />
  156. <el-table-column property="depoAmount" label="金额" />
  157. <el-table-column property="receiptNo" label="收据" />
  158. <el-table-column property="depoTypeName" label="类型" />
  159. <el-table-column property="chequeNo" label="支票号" />
  160. <el-table-column property="opIdCodeName" label="操作员" />
  161. </el-table>
  162. <div>
  163. <el-descriptions size="large" :column="2" border style="width:100%;" >
  164. <el-descriptions-item label="预交张数:">
  165. <span class="f-size">{{yjHz.yjZs}} </span>
  166. </el-descriptions-item>
  167. <el-descriptions-item label="预交合计:">
  168. <span class="f-size">{{yjHz.yjHj}} </span>
  169. </el-descriptions-item>
  170. <el-descriptions-item >
  171. </el-descriptions-item>
  172. <el-descriptions-item label="直退合计:">
  173. <span class="f-size" style="color: red">
  174. {{yjHz.ztHj}}
  175. </span>
  176. </el-descriptions-item>
  177. <el-descriptions-item >
  178. </el-descriptions-item>
  179. <el-descriptions-item label="实际预交:">
  180. <span class="f-size">{{yjHz.sjYj}} </span>
  181. </el-descriptions-item>
  182. </el-descriptions>
  183. </div>
  184. </el-tab-pane>
  185. <el-tab-pane label="可出纳列表" name="two">
  186. <div class="layout_overflow_auto" style="width: 100%;height: 100%">
  187. <el-table :data="kcnList" highlight-current-row @row-click="fetchCnPatient" style="width: 100%;" :height="450">
  188. <el-table-column property="actFlagName" label="在院/出院" />
  189. <el-table-column property="inpatientNo" label="住院号" />
  190. <el-table-column property="admissTimes" label="住院次数" />
  191. <el-table-column property="name" label="姓名" />
  192. <el-table-column property="bedNo" label="床号" />
  193. <el-table-column property="settle" label="补/退" />
  194. <el-table-column property="wardName" label="病房" />
  195. <el-table-column property="accountDate" label="结算时间" />
  196. <el-table-column property="admissDate" label="入院日期" />
  197. </el-table>
  198. </div>
  199. </el-tab-pane>
  200. </el-tabs>
  201. </el-main>
  202. </el-container>
  203. </el-container>
  204. </div>
  205. </div>
  206. <PosTransaction ref="posTransactionRef"></PosTransaction>
  207. <el-dialog v-model="zyFpPrintVisible" title="发票打印" width="800" center>
  208. <div style="width: 100%;height: 60px">
  209. <el-row>
  210. <el-col :span="12">
  211. 起始发票号: <span style="display: inline-block;width: 110px;background-color: #0f5e0f;text-align: center;color: #2eff00;font-size: 18px">{{settData.currentNoStr}}</span>
  212. </el-col>
  213. <el-col :span="6">
  214. <el-checkbox v-model="printFlag">更新发票号</el-checkbox>
  215. </el-col>
  216. <el-col :span="6">
  217. <el-button type="success" icon="Printer" @click="printZyFp">打印</el-button>
  218. </el-col>
  219. </el-row>
  220. </div>
  221. <div id="zyFpId" style="width: 640px;">
  222. <div style="width: 640px;border: 1px white solid">
  223. <div id="headDiv">
  224. <p style="margin-left: 478px;margin-top: 40px">
  225. {{settData.currentNoStr}}
  226. </p>
  227. <p style="margin-left: 170px;margin-top: -10px;">
  228. {{printZyFpInfo.responceTypeName}}
  229. </p>
  230. <p style="margin-left: 165px;margin-top: -10px">
  231. 住院总费用:{{printZyFpInfo.totalCharge}},其中医保统筹支付:{{printZyFpInfo.ybTcZfJe}}元,
  232. </p>
  233. <p style="margin-left: 165px;margin-top: -10px">
  234. 个人自付金额{{printZyFpInfo.grZfJe}},个人账户支付{{printZyFpInfo.grZhZfJe}}元
  235. </p>
  236. </div>
  237. <div style="height: 20px">
  238. <div style="margin-left: 40px">
  239. {{printZyFpInfo.name}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  240. {{printZyFpInfo.sexName}} <span style="display: inline-block;width: 270px"></span>
  241. {{printZyFpInfo.wardName}} <span style="display: inline-block;width: 40px"></span>
  242. {{printZyFpInfo.inpatientNo}}
  243. </div>
  244. </div>
  245. <div style="margin-left: 19px">
  246. {{getYeay(printZyFpInfo.startDate)}} <span style="display: inline-block;width: 25px"></span>
  247. {{getMoth(printZyFpInfo.startDate)}}<span style="display: inline-block;width: 29px"></span>
  248. {{getDay(printZyFpInfo.startDate)}}<span style="display: inline-block;width: 70px"></span>
  249. {{getYeay(printZyFpInfo.endDate)}}<span style="display: inline-block;width: 25px"></span>
  250. {{getMoth(printZyFpInfo.endDate)}}<span style="display: inline-block;width: 29px"></span>
  251. {{getDay(printZyFpInfo.endDate)}}<span style="display: inline-block;width: 65px"></span>
  252. {{printZyFpInfo.zyTs}}<span style="display: inline-block;width: 65px"></span>
  253. {{getYeay(getFormatDatetime(new Date()))}}<span style="display: inline-block;width: 25px"></span>
  254. {{getMoth(getFormatDatetime(new Date()))}}<span style="display: inline-block;width: 29px"></span>
  255. {{getDay(getFormatDatetime(new Date()))}}
  256. </div>
  257. <div class="comH"></div>
  258. <div class=" comH comM">
  259. <span class=" spanW " v-if="printZyFpInfo.charge1 !==0">{{printZyFpInfo.charge1}}</span>
  260. <span v-else class="spanW"></span>
  261. <span class="comSpan"></span>
  262. <span class="spanW" v-if="printZyFpInfo.charge9 !==0">{{printZyFpInfo.charge9}}</span>
  263. <span v-else class="spanW"></span>
  264. <span class="comSpan"></span>
  265. <span class="spanW" v-if="printZyFpInfo.charge17 !==0">{{printZyFpInfo.charge17}}</span>
  266. <span v-else class="spanW"></span>
  267. <span class="comSpan"></span>
  268. <span class="spanW" v-if="printZyFpInfo.charge25 !==0">{{printZyFpInfo.charge25}}</span>
  269. <span v-else class="spanW"></span>
  270. <span class="comSpan"></span>
  271. </div>
  272. <div class=" comH comM" >
  273. <span class=" spanW" v-if="printZyFpInfo.charge2 !==0">{{printZyFpInfo.charge2}}</span>
  274. <span v-else class="spanW"></span>
  275. <span class="comSpan"></span>
  276. <span class="spanW" v-if="printZyFpInfo.charge10 !==0">{{printZyFpInfo.charge10}}</span>
  277. <span v-else class="spanW"></span>
  278. <span class="comSpan"></span>
  279. <span class="spanW" v-if="printZyFpInfo.charge18 !==0">{{printZyFpInfo.charge18}}</span>
  280. <span v-else class="spanW"></span>
  281. <span class="comSpan" v-if="printZyFpInfo.charge26 !==0">其他</span>
  282. <span v-else class="comSpan"></span>
  283. <span class="spanW" v-if="printZyFpInfo.charge26 !==0">{{printZyFpInfo.charge26}}</span>
  284. <span v-else class="spanW"></span>
  285. <span class="comSpan"></span>
  286. <span class="spanW" v-if="printZyFpInfo.ysHjJe !==0">{{printZyFpInfo.ysHjJe}}</span>
  287. <span v-else class="spanW"></span>
  288. </div>
  289. <div class=" comH comM" >
  290. <span class=" spanW" v-if="printZyFpInfo.charge3 !==0">{{printZyFpInfo.charge3}}</span>
  291. <span v-else class="spanW"></span>
  292. <span class="comSpan"></span>
  293. <span class=" spanW" v-if="printZyFpInfo.charge11 !==0">{{printZyFpInfo.charge11}}</span>
  294. <span v-else class="spanW"></span>
  295. <span class="comSpan"></span>
  296. <span class="spanW" v-if="printZyFpInfo.charge19 !==0">{{printZyFpInfo.charge19}}</span>
  297. <span v-else class="spanW"></span>
  298. <span class="comSpan " v-if="printZyFpInfo.charge27 !==0">材料费</span>
  299. <span v-else class="comSpan"></span>
  300. <span class="spanW" v-if="printZyFpInfo.charge27 !==0">{{printZyFpInfo.charge27}}</span>
  301. <span v-else class="spanW"></span>
  302. </div>
  303. <div class=" comH comM" >
  304. <span class=" spanW" v-if="printZyFpInfo.charge4 !==0">{{printZyFpInfo.charge4}}</span>
  305. <span v-else class="spanW"></span>
  306. <span class="comSpan"></span>
  307. <span class="spanW" v-if="printZyFpInfo.charge12 !==0">{{printZyFpInfo.charge12}}</span>
  308. <span v-else class="spanW"></span>
  309. <span class="comSpan"></span>
  310. <span class="spanW" v-if="printZyFpInfo.charge20 !==0">{{printZyFpInfo.charge20}}</span>
  311. <span v-else class="spanW"></span>
  312. <span class="comSpan" v-if="printZyFpInfo.charge28 !==0">中成药</span>
  313. <span v-else class="comSpan"></span>
  314. <span class="spanW" v-if="printZyFpInfo.charge28 !==0">{{printZyFpInfo.charge28}}</span>
  315. <span v-else class="spanW"></span>
  316. <span class="comSpan"></span>
  317. <span class="spanW" v-if="printZyFpInfo.bsHjJe !==0">{{printZyFpInfo.bsHjJe}}</span>
  318. <span v-else class="spanW"></span>
  319. </div>
  320. <div class=" comH comM" >
  321. <span class=" spanW" v-if="printZyFpInfo.charge5 !==0">{{printZyFpInfo.charge5}}</span>
  322. <span v-else class="spanW"></span>
  323. <span class="comSpan"></span>
  324. <span class="spanW" v-if="printZyFpInfo.charge13 !==0">{{printZyFpInfo.charge13}}</span>
  325. <span v-else class="spanW"></span>
  326. <span class="comSpan"></span>
  327. <span class="spanW" v-if="printZyFpInfo.charge21 !==0">{{printZyFpInfo.charge21}}</span>
  328. <span v-else class="spanW"></span>
  329. <span class="comSpan" ></span>
  330. <span class="spanW" ></span>
  331. <span class="comSpan"></span>
  332. <span class="spanW" ></span>
  333. </div>
  334. <div class=" comH comM" >
  335. <span class=" spanW" v-if="printZyFpInfo.charge6 !==0">{{printZyFpInfo.charge6}}</span>
  336. <span v-else class="spanW"></span>
  337. <span class="comSpan"></span>
  338. <span class="spanW" v-if="printZyFpInfo.charge14 !==0">{{printZyFpInfo.charge14}}</span>
  339. <span v-else class="spanW"></span>
  340. <span class="comSpan"></span>
  341. <span class="spanW" v-if="printZyFpInfo.charge22 !==0">{{printZyFpInfo.charge22}}</span>
  342. <span v-else class="spanW"></span>
  343. <span class="comSpan" ></span>
  344. <span class="spanW" ></span>
  345. <span class="comSpan"></span>
  346. <span class="spanW" v-if="printZyFpInfo.tkHjJe !==0">{{printZyFpInfo.tkHjJe}}</span>
  347. <span v-else class="spanW"></span>
  348. </div>
  349. <div class=" comH comM" >
  350. <span class=" spanW" v-if="printZyFpInfo.charge7 !==0">{{printZyFpInfo.charge7}}</span>
  351. <span v-else class="spanW"></span>
  352. <span class="comSpan"></span>
  353. <span class="spanW" v-if="printZyFpInfo.charge15 !==0">{{printZyFpInfo.charge15}}</span>
  354. <span v-else class="spanW"></span>
  355. <span class="comSpan"></span>
  356. <span class="spanW" v-if="printZyFpInfo.charge23 !==0">{{printZyFpInfo.charge23}}</span>
  357. <span v-else class="spanW"></span>
  358. <span class="comSpan" ></span>
  359. <span class="spanW" ></span>
  360. <span class="comSpan"></span>
  361. <span class="spanW" ></span>
  362. </div>
  363. <div class=" comH comM" >
  364. <span class=" spanW" v-if="printZyFpInfo.charge8 !==0">{{printZyFpInfo.charge8}}</span>
  365. <span v-else class="spanW"></span>
  366. <span class="comSpan"></span>
  367. <span class="spanW" v-if="printZyFpInfo.charge16 !==0">{{printZyFpInfo.charge16}}</span>
  368. <span v-else class="spanW"></span>
  369. <span class="comSpan"></span>
  370. <span class="spanW" v-if="printZyFpInfo.charge24 !==0">{{printZyFpInfo.charge24}}</span>
  371. <span v-else class="spanW"></span>
  372. <span class="comSpan" ></span>
  373. <span class="spanW" ></span>
  374. <span class="comSpan"></span>
  375. <span class="spanW" ></span>
  376. </div>
  377. <div style="margin-left: 100px">
  378. 个人支付合计:{{printZyFpInfo.grZfHjJe}}<br/>
  379. {{printZyFpInfo.grZfHjJeChinese}}
  380. </div>
  381. </div>
  382. </div>
  383. <template #footer>
  384. <div class="dialog-footer">
  385. <el-button @click="zyFpPrintVisible = false">取消</el-button>
  386. </div>
  387. </template>
  388. </el-dialog>
  389. <el-dialog
  390. v-model="dzfpVisible"
  391. width="400"
  392. title="下载电子发票"
  393. @closed="clearSelectDzfp"
  394. >
  395. <template #footer>
  396. <div class="dialog-footer">
  397. <el-button type="success" @click="downDzFp(selectDzfpRow,selectDzfpTypeFlag,'1')">打印电子发票二维码</el-button>
  398. <el-button type="primary" @click="downDzFp(selectDzfpRow,selectDzfpTypeFlag,'0')">打印电子发票pdf文件</el-button>
  399. </div>
  400. </template>
  401. </el-dialog>
  402. </template>
  403. <script setup >
  404. import PatientBaseList from "@/components/zfsf/PatientInfoHead.vue"
  405. import PosTransaction from "@/components/zfsf/PosTransaction.vue"
  406. import {ref} from "vue";
  407. import {queryCurrentNo} from '@/api/zfsf/sfbillno.js'
  408. import {queryCashierProcessInfo,
  409. queryPatientZyLedgerFile,
  410. checkCashierProcess,
  411. queryKyCashierList,
  412. queryZyReceipt,
  413. queryZyDepositFileList,
  414. saveCashierData,
  415. queryZdChequeType,
  416. cancelCashierData,
  417. queryPrintZyFpData,
  418. updatePrintZyFpData,
  419. downDzInvoice,
  420. queryFpVersion
  421. } from '@/api/zfsf/cashier-process.js'
  422. import {getLodop, initLodop} from '@/utils/c-lodop'
  423. import {consume} from '@/api/zfsf/pos-transaction.js'
  424. import {stringIsBlank} from "@/utils/blank-utils";
  425. import { ElMessage, ElMessageBox } from 'element-plus'
  426. import {getDateTiffDays, getFormatDatetime} from "@/utils/date";
  427. import router from "@/router";
  428. const zyFpPrintVisible = ref(false)
  429. const saveFlag = ref(false)
  430. const qxFlag =ref(false)
  431. const activeName = ref('one')
  432. const patientInfo = ref({
  433. inpatientNo : "",
  434. admissTimes : null,
  435. ledgerSn : null,
  436. name : '',
  437. wardName : ''
  438. }
  439. )
  440. const dzfpVisible = ref(false)
  441. const setShowFlag = ref(false)
  442. const patientBaseListRef = ref(null)
  443. const posTransactionRef = ref(null)
  444. // 支付方式字典集合
  445. const zdChequeTypes = ref([])
  446. // 结算数据
  447. const settData = ref({
  448. settleTypeName:'',
  449. zfJe:0,
  450. settle:0,
  451. settleName:'',
  452. zhje:0,
  453. ssJe:0,
  454. currentNoStr:'',
  455. })
  456. const openPos = ()=>{
  457. posTransactionRef.value.openOuter()
  458. }
  459. const chongZhiData = ()=>{
  460. clearData(true)
  461. patientBaseListRef.value.clearAllData()
  462. }
  463. //保存出纳操作
  464. const saveCashData = ()=>{
  465. ElMessageBox.confirm('请确认是否要保存?', '提示', {
  466. type: 'warning',
  467. confirmButtonText: '是',
  468. cancelButtonText: '否',
  469. }).then(()=>{
  470. console.log('patientInfo',patientInfo.value)
  471. let param = {
  472. inpatientNo : patientInfo.value.inpatientNo,
  473. admissTimes : patientInfo.value.admissTimes,
  474. ledgerSn : patientInfo.value.ledgerSn,
  475. opId : userIdCode.value,
  476. depositFileList :[]
  477. }
  478. if(jzInfoList.value.length > 0){
  479. let ob = {
  480. status : '4',
  481. windowNo : '2',
  482. depoAmount : jzInfoList.value[jzInfoList.value.length-1].ybJzJe,
  483. depoType : '2',
  484. chequeNo : '',
  485. psordnum : '',
  486. agtordnum : '',
  487. transDate : '',
  488. parChannel : '',
  489. traceNo : '',
  490. receiptNo : '',
  491. }
  492. param.depositFileList.push(ob);
  493. }
  494. for (let i = 0; i < jkInfoList.value.length; i++) {
  495. let obj = {
  496. status : jkInfoList.value[i].settType === '退款' ? '2' : '4',
  497. windowNo : '2',
  498. depoAmount : jkInfoList.value[i].depoAmount,
  499. depoType : jkInfoList.value[i].depoType,
  500. chequeNo : jkInfoList.value[i].chequeNo,
  501. psordnum : '',
  502. agtordnum : '',
  503. transDate : '',
  504. parChannel : '',
  505. traceNo : '',
  506. receiptNo : '',
  507. }
  508. param.depositFileList.push(obj)
  509. }
  510. saveCashierData(param).then(res=> {
  511. queryFpAndYjj(param)
  512. selectPrintZyFp(param)
  513. })
  514. })
  515. }
  516. // 取消出纳
  517. const cancelCash = ()=>{
  518. ElMessageBox.confirm('请确认是否要取消出纳?', '提示', {
  519. type: 'warning',
  520. confirmButtonText: '是',
  521. cancelButtonText: '否',
  522. }).then(()=>{
  523. cancelCashierData(patientInfo.value).then(res=>{
  524. chongZhiData()
  525. })
  526. })
  527. }
  528. const getYeay = (val)=>{
  529. return val.substring(0,4)
  530. }
  531. const getMoth = (val)=>{
  532. return val.substring(5,7)
  533. }
  534. const getDay = (val)=>{
  535. return val.substring(8,10)
  536. }
  537. // 刷卡 支付
  538. const shuaKa = (row,index)=>{
  539. let obj = {
  540. chequeType : row.depoType,
  541. amt : row.depoAmount,
  542. type : 1
  543. }
  544. consume(obj).then(res=>{
  545. jkInfoList.value[index].psordnum = res.refNo
  546. jkInfoList.value[index].agtordnum = res.wxAliPayOrderNo
  547. jkInfoList.value[index].transDate = res.transDate
  548. jkInfoList.value[index].parChannel = res.payChannel
  549. jkInfoList.value[index].traceNo = res.traceNo
  550. jkInfoList.value[index].receiptNo = res.lsOrderNo
  551. })
  552. }
  553. const selectPatient =(val)=>{
  554. if(fpVersion.value ==='0'){
  555. queryCurrentNo({cashId:userIdCode.value}).then(res=>{
  556. settData.value.currentNoStr = res.currentNoStr
  557. })
  558. }
  559. // 查询账页信息
  560. queryPatientZyLedgerFile(val).then(res=>{
  561. zyInfoList.value = res
  562. if( res.length > 0){
  563. let index = getSettInfoIndex(res)
  564. if(index === -1){
  565. dealSettData(res[res.length-1].inpatientNo,res[res.length-1].admissTimes,res[res.length-1].ledgerSn)
  566. }else {
  567. dealSettData(res[index].inpatientNo,res[index].admissTimes,res[index].ledgerSn)
  568. }
  569. }else {
  570. ElMessage.error('没有结算账页信息!')
  571. }
  572. })
  573. }
  574. // 检查是否有结算信息 未出纳的 下标
  575. const getSettInfoIndex = (val)=>{
  576. for (let i = 0; i < val.length; i++) {
  577. if(!stringIsBlank(val[i].accountDate) && stringIsBlank(val[i].cashDate)){
  578. return i
  579. }
  580. }
  581. return -1;
  582. }
  583. const fetchZyData = (row)=>{
  584. dealSettData(row.inpatientNo,row.admissTimes,row.ledgerSn)
  585. }
  586. // 选择出纳病人
  587. const fetchCnPatient = (row)=>{
  588. ElMessageBox.confirm('是否要进行出纳操作?', '提示', {
  589. type: 'warning',
  590. confirmButtonText: '是',
  591. cancelButtonText: '否',
  592. }).then(()=>{
  593. patientBaseListRef.value.fetchPatientData({inpatientNo:row.inpatientNo,admissTimes:row.admissTimes,inOutStatusFlag:row.actFlag})
  594. })
  595. }
  596. const dealSettData = (inpatientNo,admissTimes,ledgerSn)=>{
  597. let param = {
  598. inpatientNo : inpatientNo,
  599. admissTimes : admissTimes,
  600. ledgerSn : ledgerSn
  601. }
  602. checkCashierProcess(param).then(res =>{
  603. if(res.mzByJz != null){
  604. ElMessageBox.confirm(`该病人存在门诊欠款${res.mzByJz}是否继续出纳`, {
  605. distinguishCancelAndClose: true,
  606. cancelButtonText: '否',
  607. confirmButtonText: '是',
  608. }).then(() => {
  609. getCashierProcessInfo(param,res.zyLedgerFile,res)
  610. })
  611. .catch(action=>{
  612. if(action === 'cancel'){
  613. clearData(true)
  614. }
  615. })
  616. }else {
  617. getCashierProcessInfo(param,res.zyLedgerFile,res)
  618. }
  619. })
  620. }
  621. const getCashierProcessInfo = (param,zyLedgerFile,checkParam)=>{
  622. if(zyLedgerFile && stringIsBlank(zyLedgerFile.accountDate)){
  623. setShowFlag.value = false
  624. clearData(false)
  625. ElMessage.error('不存在病人已结算待出纳信息!')
  626. patientBaseListRef.value.showCashName('未结算')
  627. }else {
  628. patientBaseListRef.value.showCashName('已结算')
  629. }
  630. if(zyLedgerFile && !stringIsBlank(zyLedgerFile.cashDate)){
  631. setShowFlag.value = false
  632. clearData(false)
  633. patientBaseListRef.value.showCashName('已出纳')
  634. ElMessage.error(`该病人已经在${zyLedgerFile.cashDate}做过出纳处理`)
  635. }
  636. if(checkParam.zYTotalFee != null){
  637. setShowFlag.value = false
  638. clearData(true)
  639. ElMessage.error(`该病人账页总费用${checkParam.zYTotalFee}和明细总费用${checkParam.mxTotalFee}不一致请重新结算再做出纳处理`)
  640. return
  641. }
  642. patientInfo.value.inpatientNo = param.inpatientNo
  643. patientInfo.value.admissTimes = param.admissTimes
  644. patientInfo.value.ledgerSn = param.ledgerSn
  645. queryFpAndYjj(param)
  646. if(!stringIsBlank(zyLedgerFile.accountDate) && stringIsBlank(zyLedgerFile.cashDate)){
  647. queryCashierProcessInfo(param).then(res=>{
  648. setSettData(res.settData)
  649. setJkInfoList(res.settData)
  650. setJzInfo(res.settData.ybJzJe)
  651. setShowFlag.value = true
  652. })
  653. }
  654. }
  655. const fpVersion = ref('0')
  656. const userIdCode = ref('')
  657. onMounted(()=>{
  658. initLodop()
  659. queryFpVersion().then((res)=>{
  660. fpVersion.value =res
  661. })
  662. try {
  663. let patInfo = JSON.parse(window.atob(router.currentRoute.value.params.patientInfo))
  664. userIdCode.value = patInfo.userIdCode
  665. }catch (e){
  666. }
  667. queryZdChequeType().then(res=>{
  668. zdChequeTypes.value = res
  669. })
  670. })
  671. // 查询发票和预交金
  672. const queryFpAndYjj = (param)=>{
  673. queryZyReceipt(param).then(res=>{
  674. zyFpInfoList.value = res
  675. })
  676. queryZyDepositFileList(param).then(res=>{
  677. yjYjList.value = res.yjYj
  678. yjHz.value.sjYj = res.sjYj
  679. yjHz.value.yjZs = res.yjZs
  680. yjHz.value.ztHj = res.ztHj
  681. yjHz.value.yjHj = res.yjHj
  682. patientInfo.value.name = res.patInfo.name
  683. patientInfo.value.wardName = res.patInfo.wardName
  684. })
  685. }
  686. const clearData = (zyFlag)=>{
  687. if(zyFlag){
  688. zyInfoList.value = []
  689. }
  690. jkHj.value.zj = 0
  691. jkHj.value.tkZj = 0
  692. jkHj.value.jnZj = 0
  693. jzInfoList.value = []
  694. jkInfoList.value = []
  695. zyFpInfoList.value = []
  696. yjYjList.value = []
  697. settData.value.settleTypeName = ''
  698. settData.value.zfJe = 0
  699. settData.value.settle = 0
  700. settData.value.settleName = ''
  701. settData.value.zhje = 0.00
  702. settData.value.ssJe = 0.00
  703. patientInfo.value.inpatientNo = ''
  704. patientInfo.value.admissTimes = null
  705. patientInfo.value.ledgerSn = null
  706. patientInfo.value.name = ''
  707. patientInfo.value.wardName = ''
  708. yjHz.value.sjYj = 0
  709. yjHz.value.yjHj = 0
  710. yjHz.value.yjZs = 0
  711. yjHz.value.ztHj = 0
  712. }
  713. const setSettData = (val)=>{
  714. settData.value.settleName = val.settleName
  715. settData.value.settleTypeName = val.settleTypeName
  716. settData.value.zhje = 0.00
  717. settData.value.ssJe = 0.00
  718. settData.value.settle = Math.abs(val.settle)
  719. settData.value.zfJe = val.lastBalance
  720. }
  721. const setJzInfo = (ybJzJe)=>{
  722. jzInfoList.value = []
  723. if(ybJzJe && ybJzJe != 0){
  724. jzInfoList.value.push({
  725. ybType : '医保记账',
  726. ybJzJe :ybJzJe
  727. })
  728. jzInfoList.value.push({
  729. ybType : '记账总计',
  730. ybJzJe :ybJzJe
  731. })
  732. }
  733. }
  734. // 新增交款信息
  735. const addJkInfo = ()=>{
  736. let obj = {
  737. settType : '',
  738. depoType : 'A',
  739. depoAmount : 0,
  740. chequeNo : '',
  741. psordnum : '',
  742. agtordnum : '',
  743. transDate : '',
  744. parChannel : '',
  745. traceNo : '',
  746. receiptNo : '',
  747. }
  748. let tkZj= jkInfoList.value.filter(item=>item.settType === '退款').reduce((pre,cur)=>{
  749. return pre + cur.depoAmount ;
  750. },0)
  751. let jnZj= jkInfoList.value.filter(item=>item.settType === '交纳').reduce((pre,cur)=>{
  752. return pre + cur.depoAmount ;
  753. },0)
  754. if(settData.value.settleName === '补交:'){
  755. if((jnZj - tkZj) <= Math.abs(settData.value.settle)){
  756. obj.settType ='交纳'
  757. obj.depoAmount = Math.abs(jnZj - tkZj -Math.abs(settData.value.settle))
  758. }else {
  759. obj.settType ='退款'
  760. obj.depoAmount = Math.abs(jnZj - tkZj -Math.abs(settData.value.settle))
  761. }
  762. }else {
  763. if((tkZj - jnZj) >= Math.abs(settData.value.settle)){
  764. obj.settType ='交纳'
  765. obj.depoAmount = Math.abs(tkZj - jnZj -Math.abs(settData.value.settle))
  766. }else {
  767. obj.settType ='退款'
  768. obj.depoAmount = Math.abs(tkZj - jnZj -Math.abs(settData.value.settle))
  769. }
  770. }
  771. jkInfoList.value.push(obj)
  772. calcJkJe()
  773. }
  774. const delJkInfo = (index)=>{
  775. if(jkInfoList.value.length === 1){
  776. ElMessage.error("交款信息不能为空")
  777. return
  778. }
  779. jkInfoList.value.splice(index, 1)
  780. calcJkJe()
  781. }
  782. const jkHj = ref({
  783. jnZj : 0,
  784. tkZj : 0,
  785. zj : 0
  786. })
  787. const calcJkJe = ()=>{
  788. let tkZj= jkInfoList.value.filter(item=>item.settType === '退款').reduce((pre,cur)=>{
  789. return pre + cur.depoAmount ;
  790. },0)
  791. let jnZj= jkInfoList.value.filter(item=>item.settType === '交纳').reduce((pre,cur)=>{
  792. return pre + cur.depoAmount ;
  793. },0)
  794. jkHj.value.jnZj = parseFloat(Number(jnZj).toFixed(2))
  795. jkHj.value.tkZj = parseFloat(Number(tkZj).toFixed(2))
  796. jkHj.value.zj = parseFloat(Number(Math.abs(jkHj.value.jnZj - jkHj.value.tkZj)).toFixed(2))
  797. }
  798. const setJkInfoList = (val)=>{
  799. jkInfoList.value = []
  800. let obj = {
  801. settType : '',
  802. depoType : 'A',
  803. depoAmount : 0,
  804. chequeNo : '',
  805. psordnum : '',
  806. agtordnum : '',
  807. transDate : '',
  808. parChannel : '',
  809. traceNo : '',
  810. receiptNo : '',
  811. }
  812. obj.settType = val.settle > 0 ? '退款' : '交纳'
  813. obj.depoAmount = Math.abs(val.settle)
  814. jkInfoList.value.push(obj)
  815. calcJkJe()
  816. }
  817. // 记账信息数据
  818. const jzInfoList = ref([])
  819. // 交款信息
  820. const jkInfoList = ref([])
  821. // 账页信息
  822. const zyInfoList = ref([])
  823. // 账页发票信息
  824. const zyFpInfoList = ref([])
  825. // 已交押金
  826. const yjYjList = ref([])
  827. // 预交汇总
  828. const yjHz = ref({
  829. yjZs : 0,
  830. sjYj : 0,
  831. yjHj : 0,
  832. ztHj : 0,
  833. })
  834. // 可出纳数据
  835. const kcnList = ref([])
  836. const tabClick = ()=>{
  837. if(activeName.value ==='two'){
  838. let startDate = getDateTiffDays(1).substring(0,10) + ' 00:00:00'
  839. let endDate = getDateTiffDays(1).substring(0,10) + ' 23:59:59'
  840. queryKyCashierList({startDate:startDate,endDate:endDate}).then(res=>{
  841. kcnList.value = res
  842. })
  843. }
  844. }
  845. //打印发票
  846. // const printFp = (row)=>{
  847. //
  848. // let LODOP = getLodop();
  849. // LODOP.PRINT_INIT('预交金')
  850. // LODOP.SET_PRINT_PAGESIZE(2, 0, 0, '')
  851. // LODOP.SET_PRINT_STYLE('FontSize', 9)
  852. // LODOP.ADD_PRINT_TEXT('8mm', '50mm', '220mm', '7mm', patientInfo.value.wardName)
  853. // LODOP.ADD_PRINT_TEXT('14mm', '50mm', '220mm', '7mm', patientInfo.value.name)
  854. // LODOP.ADD_PRINT_TEXT('20mm', '50mm', '220mm', '7mm', '紧急联系人:13908453983')
  855. // LODOP.ADD_PRINT_TEXT('30mm', '50mm', '220mm', '7mm', getYeay(row.depoDate)+'.'+getMoth(row.depoDate)+'.'+getDay(row.depoDate))
  856. // LODOP.ADD_PRINT_TEXT('40mm', '50mm', '220mm', '7mm', row.opIdCodeName)
  857. // LODOP.PREVIEW()
  858. //
  859. // }
  860. const zyFpCss = `
  861. #zyFpId{ width: 640px;}
  862. #headDiv p {
  863. line-height: 10px;
  864. }
  865. .comSpan{
  866. display: inline-block;
  867. width: 60px;
  868. }
  869. .spanW{
  870. display: inline-block;
  871. width: 60px;
  872. }
  873. .comH {
  874. height: 24px;
  875. }
  876. .comM{
  877. margin-left: 90px;
  878. }`
  879. const printZyFp = ()=>{
  880. let param = {
  881. inpatientNo :printZyFpInfo.value.inpatientNo,
  882. admissTimes :printZyFpInfo.value.admissTimes,
  883. ledgerSn :printZyFpInfo.value.ledgerSn,
  884. printFlag :printFlag.value ? '1' : '0',
  885. receiptNo : settData.value.currentNoStr,
  886. opId : userIdCode.value
  887. }
  888. updatePrintZyFpData(param).then(res=>{
  889. let LODOP = getLodop()
  890. LODOP.PRINT_INIT('住院发票') // 初始化打印机 名字
  891. LODOP.SET_PRINT_PAGESIZE(1, '256mm', '156mm', '') // 设置纸张大小
  892. LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
  893. LODOP.ADD_PRINT_HTM('1mm', '3mm', '100%', '100%', '<style>' + zyFpCss + '</style>' + '<body>' + document.getElementById('zyFpId').innerHTML + '</body>') //要打印的内容
  894. LODOP.PREVIEW() // 关闭
  895. })
  896. }
  897. const printZyFpInfo = ref({})
  898. const selectPrintZyFp = (row)=>{
  899. queryPrintZyFpData(row).then(res=>{
  900. zyFpPrintVisible.value = true
  901. printZyFpInfo.value = res
  902. })
  903. }
  904. const selectDzfpRow = ref({})
  905. const selectDzfpTypeFlag = ref(null)
  906. const openDzfp = (row,typeFlag)=>{
  907. selectDzfpRow.value = row
  908. selectDzfpTypeFlag.value = typeFlag
  909. dzfpVisible.value = true
  910. }
  911. const uploadZyFp=(row,typeFlag)=>{
  912. row['typeFlag'] = typeFlag
  913. let typeFlagStr = typeFlag == 3 ? '上传' : '作废'
  914. ElMessageBox.confirm("请确认是否"+typeFlagStr+"电子发票", {
  915. cancelButtonText: "取消",
  916. confirmButtonText: "确定",
  917. })
  918. .then(() => {
  919. queryPrintZyFpData(row).then(res=>{
  920. ElMessage.error(typeFlagStr+"电子发票成功!");
  921. })
  922. })
  923. }
  924. const clearSelectDzfp = ()=>{
  925. selectDzfpRow.value = {}
  926. selectDzfpTypeFlag.value = null
  927. }
  928. const downDzFp = (row,typeFlag,type)=>{
  929. row['typeFlag'] = typeFlag
  930. downDzInvoice(row).then(res=>{
  931. let LODOP = getLodop();
  932. if(stringIsBlank(type) || type === '0'){
  933. // const link = document.createElement("a");
  934. // // 获取数据量
  935. // const blob = new Blob([base64ToArrayBuffer(res.pdfFileStr)]);
  936. // // 下载文件
  937. // const objectUrl = URL.createObjectURL(blob);
  938. // link.href = objectUrl;
  939. // var timestamp = Date.parse(new Date());
  940. // link.download = timestamp + ".pdf";
  941. // link.click();
  942. // URL.revokeObjectURL(objectUrl);
  943. // link.remove();
  944. let height = "175mm"
  945. let bkimgWidth = "110mm"
  946. LODOP.PRINT_INITA(6, 0, bkimgWidth, height, "泰和门诊电子发票二维码打印");
  947. //设置默认打印机
  948. LODOP.SET_PRINTER_INDEX(-1);
  949. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", bkimgWidth);
  950. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", height);
  951. LODOP.SET_PRINT_PAGESIZE(2,bkimgWidth, height, "CreateCustomPage");
  952. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "门诊电子发票二维码");//对新建的纸张重命名
  953. LODOP.SET_PRINT_STYLE("FontSize", 11); //字体大小
  954. LODOP.ADD_PRINT_PDF(0,0,"100%","100%",res.pdfFileStr);
  955. LODOP.PRINT();
  956. // LODOP.PREVIEW();
  957. }else {
  958. //打印二维码
  959. let height = "70mm"
  960. let bkimgWidth = "110mm"
  961. LODOP.PRINT_INITA(6, 0, bkimgWidth, height, "泰和住院电子发票二维码打印");
  962. //设置默认打印机
  963. LODOP.SET_PRINTER_INDEX(-1);
  964. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", bkimgWidth);
  965. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", height);
  966. LODOP.SET_PRINT_PAGESIZE(1,bkimgWidth, height, "CreateCustomPage");
  967. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "住院电子发票二维码");//对新建的纸张重命名
  968. LODOP.SET_PRINT_STYLE("FontSize", 11); //字体大小
  969. LODOP.ADD_PRINT_TEXT("6mm", "3mm", "60mm", "3mm", "湖南泰和医院管理有限公司发票二维码");
  970. LODOP.ADD_PRINT_IMAGE("10mm", "3mm", "50mm", "50mm", "data:image/png;base64,"+res.qrcode);
  971. LODOP.PRINT();
  972. }
  973. dzfpVisible.value = false
  974. })
  975. }
  976. const base64ToArrayBuffer = (base64) => {
  977. var bloBString = window.atob(base64);
  978. var bloBLen = bloBString .length;
  979. var bytes = new Uint8Array(bloBLen);
  980. for (var i = 0; i < bloBLen; i++) {
  981. var ascii = bloBString .charCodeAt(i);
  982. bytes[i] = ascii;
  983. }
  984. return bytes;
  985. };
  986. const printFlag = ref(true)
  987. const getZySettType= (row)=>{
  988. console.log('row',row)
  989. if(stringIsBlank(row.accountDate)){
  990. return '未结算'
  991. }else {
  992. if(stringIsBlank(row.cashDate)){
  993. return '未出纳'
  994. }else {
  995. return '已出纳'
  996. }
  997. }
  998. }
  999. </script>
  1000. <style scoped >
  1001. .border_solid{
  1002. border: 1px #808080 solid
  1003. }
  1004. .f-size{
  1005. font-size: 18px;
  1006. }
  1007. .comSpan{
  1008. display: inline-block;
  1009. width: 60px;
  1010. }
  1011. .spanW{
  1012. display: inline-block;
  1013. width: 60px;
  1014. }
  1015. .comH {
  1016. height: 24px;
  1017. }
  1018. .comM{
  1019. margin-left: 90px;
  1020. }
  1021. #zyFpId p {
  1022. line-height: 10px;
  1023. }
  1024. </style>