AdvancePaymentDeal.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829
  1. <template>
  2. <div class="layout_container">
  3. <header>
  4. <el-button type="success" icon="Plus" @click="openShouFee"
  5. >收费</el-button
  6. >
  7. <el-button type="primary" icon="Delete" @click="clearData"
  8. >清空</el-button
  9. >
  10. <el-button type="success" icon="Plus" @click="openSjh"
  11. >设置收据号</el-button
  12. >
  13. <el-button type="danger" icon="Money" @click="openPos"
  14. >智能POS工具包</el-button
  15. >
  16. </header>
  17. <div class="layout_main">
  18. <div class="demo-collapse">
  19. <el-form
  20. ref="ruleFormRef"
  21. label-width="127px"
  22. :model="formData"
  23. class="demo-ruleForm"
  24. :size="formSize"
  25. >
  26. <el-collapse v-model="activeName">
  27. <el-collapse-item title="基本信息" name="1" disabled>
  28. <el-row>
  29. <el-col :span="6">
  30. <el-form-item label="住院号" prop="inpatientNo">
  31. <el-input
  32. v-model="formData.inpatientNo"
  33. clearable
  34. @keyup.enter="queryPatientList(formData.inpatientNo)"
  35. >
  36. <template #append>
  37. <el-button
  38. icon="Search"
  39. @click="queryPatientList(formData.inpatientNo)"
  40. />
  41. </template>
  42. </el-input>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="6">
  46. <el-form-item label="门诊号" prop="patientId">
  47. <el-input
  48. v-model="formData.patientId"
  49. clearable
  50. @keyup.enter="queryPatientList(formData.patientId)"
  51. >
  52. <template #append>
  53. <el-button
  54. icon="Search"
  55. @click="queryPatientList(formData.patientId)"
  56. />
  57. </template>
  58. </el-input>
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="6">
  62. <el-form-item label="姓名" prop="name">
  63. <el-input
  64. v-model="formData.name"
  65. clearable
  66. @keyup.enter="queryPatientList(formData.name)"
  67. >
  68. <template #append>
  69. <el-button
  70. icon="Search"
  71. @click="queryPatientList(formData.name)"
  72. />
  73. </template>
  74. </el-input>
  75. </el-form-item>
  76. </el-col>
  77. <el-col :span="6">
  78. <el-form-item label="性别" prop="sexName">
  79. <el-input v-model="formData.sexName" disabled />
  80. </el-form-item>
  81. </el-col>
  82. </el-row>
  83. <el-row>
  84. <el-col :span="6">
  85. <el-form-item label="床号" prop="bedNo">
  86. <el-input v-model="formData.bedNo" disabled />
  87. </el-form-item>
  88. </el-col>
  89. <el-col :span="6">
  90. <el-form-item label="病房" prop="wardName">
  91. <el-input v-model="formData.wardName" disabled />
  92. </el-form-item>
  93. </el-col>
  94. <el-col :span="6">
  95. <el-form-item label="入院日期" prop="admissDate">
  96. <el-input v-model="formData.admissDate" disabled />
  97. </el-form-item>
  98. </el-col>
  99. <el-col :span="6">
  100. <el-form-item label="身份" prop="responceTypeName">
  101. <el-input v-model="formData.responceTypeName" disabled />
  102. </el-form-item>
  103. </el-col>
  104. </el-row>
  105. <el-row>
  106. <el-col :span="6">
  107. <el-form-item label="总费用" prop="totalAmount">
  108. <el-input v-model="formData.totalCharge" disabled />
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="6">
  112. <el-form-item label="余额" prop="wardName">
  113. <el-input v-model="formData.balance" disabled />
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="12">
  117. <el-form-item label="" prop="inpatientNoType">
  118. <el-radio-group v-model="formData.inOutFlag">
  119. <el-radio-button label="在院病人" :value="0" />
  120. <el-radio-button label="出院病人" :value="1" />
  121. </el-radio-group>
  122. </el-form-item>
  123. </el-col>
  124. <!-- <el-col :span="12">
  125. <el-form-item label="" prop="inpatientNoType">
  126. <button @click="printSjNew">打印</button>
  127. </el-form-item>
  128. </el-col> -->
  129. </el-row>
  130. </el-collapse-item>
  131. </el-collapse>
  132. </el-form>
  133. </div>
  134. <div class="layout_el-table">
  135. <el-table :data="tableData" stripe style="width: 100%">
  136. <el-table-column
  137. align="center"
  138. property="admissTimes"
  139. label="住院次数"
  140. />
  141. <el-table-column align="center" property="ledgerSn" label="账页号" />
  142. <el-table-column
  143. align="center"
  144. width="150"
  145. property="depoDate"
  146. label="时间"
  147. />
  148. <el-table-column align="center" property="statusName" label="事务" />
  149. <el-table-column align="center" property="depoAmount" label="金额" />
  150. <el-table-column align="center" property="receiptNo" label="收据号" />
  151. <el-table-column
  152. align="center"
  153. property="depoTypeName"
  154. label="收费方式"
  155. >
  156. </el-table-column>
  157. <el-table-column align="center" property="chequeNo" label="凭证号" />
  158. <el-table-column align="center" property="opIdName" label="操作员" />
  159. <el-table-column label="操作" width="200">
  160. <template #default="scope">
  161. <el-button
  162. v-if="
  163. formData.inOutFlag === 0 &&
  164. scope.row.settleType === '0' &&
  165. scope.row.status === '1' &&
  166. scope.row.reportFlag !== '1'
  167. "
  168. size="small"
  169. type="danger"
  170. icon="Back"
  171. @click="openRefund(scope.row)"
  172. >退费</el-button
  173. >
  174. <el-button
  175. v-if="
  176. formData.inOutFlag === 0 &&
  177. scope.row.printed !== 1 &&
  178. scope.row.status === '1' &&
  179. scope.row.reportFlag !== '1'
  180. "
  181. size="small"
  182. type="primary"
  183. icon="Printer"
  184. @click="
  185. printShouJu(scope.row.inpatientNo, scope.row.receiptNo, false)
  186. "
  187. >打印收据</el-button
  188. >
  189. <el-button
  190. v-if="
  191. formData.inOutFlag === 0 &&
  192. scope.row.status === '1' &&
  193. scope.row.printed === 1 &&
  194. scope.row.reportFlag !== '1'
  195. "
  196. size="small"
  197. type="primary"
  198. icon="Printer"
  199. @click="
  200. printShouJu(scope.row.inpatientNo, scope.row.receiptNo, true)
  201. "
  202. >重打收据</el-button
  203. >
  204. </template>
  205. </el-table-column>
  206. </el-table>
  207. <div
  208. style="
  209. width: 100%;
  210. height: 50px;
  211. margin-top: 10px;
  212. margin-left: 20px;
  213. font-size: 18px;
  214. "
  215. >
  216. <el-row>
  217. <el-col :span="12">预交金合计: {{ formData.yjjHj }}</el-col>
  218. <el-col :span="12">直退押金合计: {{ formData.ztYjjHj }}</el-col>
  219. </el-row>
  220. </div>
  221. </div>
  222. </div>
  223. </div>
  224. <el-dialog v-model="patientVisible" title="病人信息" width="500" draggable>
  225. <el-table
  226. :data="patientTableData"
  227. style="width: 100%"
  228. height="300"
  229. stripe
  230. border
  231. @row-click="fetchPatient"
  232. >
  233. <el-table-column align="center" prop="name" label="姓名" />
  234. <el-table-column align="center" prop="inpatientNo" label="住院号" />
  235. <el-table-column align="center" prop="admissTimes" label="住院次数" />
  236. <el-table-column align="center" prop="sexName" label="性别" />
  237. </el-table>
  238. <template #footer>
  239. <div class="dialog-footer">
  240. <el-button @click="patientVisible = false">关闭</el-button>
  241. </div>
  242. </template>
  243. </el-dialog>
  244. <el-dialog
  245. v-model="shouFeeVisible"
  246. title="缴费"
  247. width="400"
  248. @closed="clearShouFeeForm"
  249. draggable
  250. >
  251. <el-form class="demo-ruleForm" label-width="127px" :size="formSize">
  252. <el-row>
  253. <el-col :span="24">
  254. <el-form-item label="收费方式*">
  255. <el-select v-model="shouFeeForm.depoType">
  256. <el-option
  257. v-for="item in zdChequeTypes"
  258. :key="item.code"
  259. :label="item.name"
  260. :value="item.code"
  261. ></el-option>
  262. </el-select>
  263. </el-form-item>
  264. </el-col>
  265. </el-row>
  266. <el-row>
  267. <el-col :span="24">
  268. <el-form-item label="金额">
  269. <el-input-number
  270. v-model="shouFeeForm.depoAmount"
  271. :controls="false"
  272. :precision="2"
  273. :min="0"
  274. />
  275. </el-form-item>
  276. </el-col>
  277. </el-row>
  278. <el-row>
  279. <el-col :span="24">
  280. <el-form-item label="凭证号">
  281. <el-input v-model="shouFeeForm.chequeNo" />
  282. </el-form-item>
  283. </el-col>
  284. </el-row>
  285. </el-form>
  286. <template #footer>
  287. <div class="dialog-footer">
  288. <el-button type="primary" @click="shuaKa">刷卡/扫码</el-button>
  289. <el-button type="success" icon="Check" @click="saveShouFee"
  290. >保存</el-button
  291. >
  292. <el-button @click="shouFeeVisible = false">关闭</el-button>
  293. </div>
  294. </template>
  295. </el-dialog>
  296. <el-dialog v-model="refundVisible" title="退费" width="400" draggable>
  297. <el-form class="demo-ruleForm" label-width="127px">
  298. <el-row>
  299. <el-col :span="24">
  300. <el-form-item label="支付方式*">
  301. <el-select v-model="refundForm.depoType">
  302. <el-option
  303. v-for="item in zdChequeTypes"
  304. :key="item.code"
  305. :label="item.name"
  306. :value="item.code"
  307. ></el-option>
  308. </el-select>
  309. </el-form-item>
  310. </el-col>
  311. </el-row>
  312. <el-row>
  313. <el-col :span="24">
  314. <el-form-item label="金额">
  315. <el-input v-model="refundForm.depoAmount" disabled />
  316. </el-form-item>
  317. </el-col>
  318. </el-row>
  319. <el-row>
  320. <el-col :span="24">
  321. <el-form-item label="收据号">
  322. <el-input v-model="refundForm.receiptNo" disabled />
  323. </el-form-item>
  324. </el-col>
  325. </el-row>
  326. </el-form>
  327. <template #footer>
  328. <div class="dialog-footer">
  329. <el-button type="primary" @click="refundYjj(0)">普通退费</el-button>
  330. <el-button type="success" @click="refundYjj(1)">原路退费</el-button>
  331. <el-button @click="refundVisible = false">关闭</el-button>
  332. </div>
  333. </template>
  334. </el-dialog>
  335. <el-dialog v-model="sjhVisible" title="设置收据号" width="400" draggable>
  336. <el-form class="demo-ruleForm" label-width="127px">
  337. <el-row>
  338. <el-col :span="24">
  339. <el-form-item label="当前收据号:">
  340. <el-input-number v-model="currentNo" :min="1" />
  341. </el-form-item>
  342. </el-col>
  343. </el-row>
  344. </el-form>
  345. <template #footer>
  346. <div class="dialog-footer">
  347. <el-button type="primary" @click="saveSjh">保存</el-button>
  348. <el-button @click="sjhVisible = false">关闭</el-button>
  349. </div>
  350. </template>
  351. </el-dialog>
  352. <div
  353. id="report_table"
  354. v-show="false"
  355. style="
  356. width: 192mm;
  357. height: 97mm;
  358. margin: 0 auto;
  359. border: 1px solid #337ab7;
  360. font-size: 10px;
  361. padding-top: 5mm;
  362. overflow-y: auto;
  363. overflow-x: hidden;
  364. "
  365. >
  366. <div id="report_table_1">
  367. <div style="text-align: center; font-weight: 700; padding-top: -8mm">
  368. {{ hospitalName }}
  369. </div>
  370. <div style="text-align: center; font-weight: 700; margin-top: 5px">
  371. 预交金收据
  372. </div>
  373. <div>
  374. <span>收据日期:</span
  375. ><span style="margin-left: 4mm" id="printDate">{{
  376. getFormatDatetime(new Date(), "YYYY-MM-DD HH:mm:ss")
  377. }}</span>
  378. <span style="margin-left: 40mm">收据号:</span
  379. ><span style="margin-left: 4mm">{{ printData.receiptNo }}</span
  380. ><span style="margin-left: 2mm">{{ printData.cdFlag }}</span>
  381. </div>
  382. <table class="pageTable" style="width: 170mm">
  383. <tbody>
  384. <tr>
  385. <td style="width: 15mm">病人ID</td>
  386. <td style="width: 20mm">{{ printData.patientId }}</td>
  387. <td>住院号</td>
  388. <td style="width: 20mm">{{ printData.inpatientNo }}</td>
  389. <td colspan="3">姓名</td>
  390. <td colspan="2">{{ printData.name }}</td>
  391. </tr>
  392. <tr>
  393. <td>住院科室</td>
  394. <td colspan="2">{{ printData.admissDeptName }}</td>
  395. <td>支付方式</td>
  396. <td colspan="2">{{ printData.depoTypeName }}</td>
  397. <td colspan="2">操作类型</td>
  398. <td>交款</td>
  399. </tr>
  400. <tr>
  401. <td>金额</td>
  402. <td>{{ printData.depoAmount }}</td>
  403. <td>支票号</td>
  404. <td colspan="6">{{ printData.chequeNo }}</td>
  405. </tr>
  406. <tr>
  407. <td>大写金额</td>
  408. <td colspan="5">{{ printData.depoAmountDx }}</td>
  409. <td colspan="2">收费员</td>
  410. <td>{{ printData.opIdCodeName }}</td>
  411. </tr>
  412. <tr>
  413. <td colspan="9" rowspan="3" style="height: 26mm">
  414. 1、此系临时收据,请妥善保管。出院时凭此收据按实用医疗费用换取住院发票。<br />
  415. 2、此收据遗失,请及时携带病人身份证和挂失人身份证到出院结算处办理挂失手续。如存在第三方肇事者预缴医疗费用,挂失时另需公安机关出示证明。<br />
  416. 3、如果您的缴费方式为银行卡支付,请您妥善保管好缴费的刷卡单,并于办理出院退费时带上缴费时所用银行卡。
  417. </td>
  418. </tr>
  419. </tbody>
  420. </table>
  421. </div>
  422. </div>
  423. <PosTransaction ref="posTransactionRef"></PosTransaction>
  424. </template>
  425. <script setup>
  426. import { onMounted, ref } from "vue";
  427. import router from "@/router";
  428. import sleep from "@/utils/sleep";
  429. import {
  430. queryAdvancePayment,
  431. saveAdvancePayment,
  432. printZyDepositFile,
  433. queryPrintAdvancePayment,
  434. queryLastMzZyReq,
  435. queryAdvancePaymentPatientList,
  436. } from "@/api/zy-gl/advance-paymentDeal";
  437. import { queryHospitalName } from "@/api/zy-gl/zy-daily";
  438. import { getLodop, initLodop } from "@/utils/c-lodop.js";
  439. import { ElMessage, ElMessageBox } from "element-plus";
  440. import PosTransaction from "@/components/zfsf/PosTransaction.vue";
  441. import { queryZdChequeType } from "@/api/zfsf/cashier-process.js";
  442. import { stringIsBlank, stringNotBlank } from "@/utils/blank-utils.js";
  443. import { consume } from "@/api/zfsf/pos-transaction.js";
  444. import { getFormatDatetime } from "../../../utils/date.js";
  445. import { saveYjjSjh, queryYjjSjh } from "@/api/zfsf/sfbillno";
  446. import { queryLastWindowsIpAddress } from "@/api/zy-gl/admission-registration.js";
  447. const sjhVisible = ref(false);
  448. const currentNo = ref(null);
  449. const openSjh = () => {
  450. sjhVisible.value = true;
  451. queryYjjSjh({}).then(res => {
  452. currentNo.value = res.currentNo;
  453. });
  454. };
  455. const saveSjh = () => {
  456. saveYjjSjh({
  457. currentNo: currentNo.value,
  458. }).then(res => {
  459. sjhVisible.value = false;
  460. });
  461. };
  462. const hospitalName = ref("");
  463. const posTransactionRef = ref(null);
  464. const printData = ref({
  465. patientId: "",
  466. receiptNo: "",
  467. inpatientNo: "",
  468. name: "",
  469. admissDeptName: "",
  470. depoTypeName: "",
  471. depoAmount: "",
  472. depoAmountDx: "",
  473. opIdCodeName: "",
  474. cdFlag: "",
  475. depoDate: "",
  476. });
  477. onActivated(async () => {
  478. const params = router.currentRoute.value.query;
  479. if (params && params.patNo) {
  480. await sleep(300);
  481. formData.value.inpatientNo = params.patNo;
  482. queryPatientList(params.patNo);
  483. }
  484. });
  485. const clearPrintData = () => {
  486. printData.value = {
  487. patientId: "",
  488. inpatientNo: "",
  489. name: "",
  490. admissDeptName: "",
  491. depoTypeName: "",
  492. depoAmount: "",
  493. depoAmountDx: "",
  494. opIdCodeName: "",
  495. cdFlag: "",
  496. };
  497. };
  498. const formData = ref({
  499. inpatientNo: "",
  500. patientId: "",
  501. name: "",
  502. sexName: "",
  503. bedNo: "",
  504. wardName: "",
  505. admissDate: "",
  506. responceTypeName: "",
  507. totalCharge: null,
  508. balance: null,
  509. inOutFlag: 0,
  510. yjjHj: 0,
  511. ztYjjHj: 0,
  512. });
  513. const shouFeeVisible = ref(false);
  514. const shouFeeForm = ref({
  515. depoType: "O",
  516. status: "",
  517. autoFlag: 0,
  518. inpatientNo: "",
  519. depoAmount: null,
  520. chequeNo: "",
  521. psordnum: "",
  522. agtordnum: "",
  523. transDate: "",
  524. parChannel: "",
  525. traceNo: "",
  526. receiptNo: "",
  527. });
  528. // 保存收费
  529. const saveShouFee = () => {
  530. shouFeeForm.value.inpatientNo = formData.value.inpatientNo;
  531. shouFeeForm.value.status = "1";
  532. saveAdvancePayment(shouFeeForm.value).then(res => {
  533. shouFeeVisible.value = false;
  534. ElMessage.success("收费成功");
  535. ElMessageBox.confirm("请确认是否打印收据?", {
  536. cancelButtonText: "取消",
  537. confirmButtonText: "确定",
  538. }).then(() => {
  539. printShouJu(res.inpatientNo, res.receiptNo, false);
  540. });
  541. });
  542. };
  543. const refundVisible = ref(false);
  544. const openRefund = row => {
  545. refundForm.value.inpatientNo = row.inpatientNo;
  546. refundForm.value.receiptNo = row.receiptNo;
  547. refundForm.value.depoType = row.depoType;
  548. refundForm.value.status = 2;
  549. refundForm.value.depoAmount = row.depoAmount;
  550. refundVisible.value = true;
  551. };
  552. const refundForm = ref({
  553. depoType: "",
  554. inpatientNo: "",
  555. depoAmount: "",
  556. receiptNo: "",
  557. status: 2,
  558. refundType: 0,
  559. });
  560. // 退费
  561. const refundYjj = refundType => {
  562. refundForm.value.refundType = refundType;
  563. saveAdvancePayment(refundForm.value).then(res => {
  564. ElMessage.success("退费成功");
  565. if (stringNotBlank(res.warMessage)) {
  566. ElMessage.warning(warMessage);
  567. }
  568. refundVisible.value = false;
  569. queryPatientList(res.inpatientNo);
  570. });
  571. };
  572. // 打印收据 flag true 重打 false 首次打印
  573. const printShouJu = (inpatientNo, receiptNo, flag) => {
  574. // 重打
  575. if (flag) {
  576. printReal(inpatientNo, receiptNo, flag);
  577. } else {
  578. printZyDepositFile(receiptNo).then(res => {
  579. printReal(inpatientNo, receiptNo, flag);
  580. queryPatientList(inpatientNo);
  581. });
  582. }
  583. };
  584. const printReal = (inpatientNo, receiptNo, flag) => {
  585. queryPrintAdvancePayment({
  586. inpatientNo: inpatientNo,
  587. receiptNo: receiptNo,
  588. }).then(res => {
  589. printData.value.inpatientNo = res.inpatientNo;
  590. printData.value.patientId = res.patientId;
  591. printData.value.name = res.name;
  592. printData.value.admissDeptName = res.admissDeptName;
  593. printData.value.depoAmount = res.depoAmount;
  594. printData.value.depoTypeName = res.depoTypeName;
  595. printData.value.depoAmountDx = res.depoAmountDx;
  596. printData.value.opIdCodeName = res.opIdCodeName;
  597. printData.value.receiptNo = res.receiptNo;
  598. printData.value.depoDate = getFormatDatetime(
  599. res.depoDate,
  600. "YYYY年MM月DD日"
  601. );
  602. if (flag) {
  603. printData.value.cdFlag = "重打";
  604. }
  605. setTimeout(printSjNew, 1000);
  606. });
  607. };
  608. const printCode = ref(null);
  609. function printSjNew() {
  610. let LODOP = getLodop();
  611. //设置默认打印机
  612. // if(stringIsBlank(printCode.value)){
  613. // ElMessage.error('请选择打印机')
  614. // return
  615. // }
  616. // LODOP.SET_PRINTER_INDEX(printCode.value);
  617. // LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  618. // LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "192mm");
  619. // LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "97mm");
  620. // LODOP.SET_PRINT_PAGESIZE(2, "192mm", "97mm", "CreateCustomPage");
  621. // LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "住院预交金");//对新建的纸张重命名
  622. // let strStyle = "<style>table{width: 170mm;} table,td,th {border-width: 1px;border-style: solid;border-collapse: collapse;padding: 8px;}</style>"
  623. // LODOP.ADD_PRINT_HTM("0mm", "8mm", "120mm", "280mm", strStyle + document.getElementById("report_table_1").innerHTML);
  624. // LODOP.PRINT();
  625. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  626. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "210mm");
  627. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "290mm");
  628. LODOP.SET_PRINT_PAGESIZE(1, "210mm", "290mm", "CreateCustomPage");
  629. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "住院预交金"); //对新建的纸张重命名
  630. let strStyle =
  631. "<style>table{width: 180mm;} table,td,th {border-width: 1px;border-style: solid;border-collapse: collapse;padding: 8px;}</style>";
  632. let printContent = document.getElementById("report_table_1").innerHTML;
  633. // + `<div style="margin-bottom:30px"></div>` + document.getElementById("report_table_1").innerHTML
  634. LODOP.ADD_PRINT_HTM("0mm", "8mm", "130mm", "280mm", strStyle + printContent);
  635. // LODOP.PRINT();
  636. LODOP.PREVIEW();
  637. // setTimeout(() => {
  638. // printAgain()
  639. // }, 200);
  640. }
  641. const printAgain = row => {
  642. let LODOP = getLodop();
  643. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  644. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "210mm");
  645. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "290mm");
  646. LODOP.SET_PRINT_PAGESIZE(1, "210mm", "290mm", "CreateCustomPage");
  647. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "住院预交金"); //对新建的纸张重命名
  648. let strStyle =
  649. "<style>table{width: 180mm;} table,td,th {border-width: 1px;border-style: solid;border-collapse: collapse;padding: 8px;}</style>";
  650. LODOP.ADD_PRINT_HTM(
  651. "0mm",
  652. "8mm",
  653. "130mm",
  654. "280mm",
  655. strStyle + document.getElementById("report_table_1").innerHTML
  656. );
  657. // LODOP.PRINT();
  658. LODOP.PREVIEW();
  659. clearPrintData();
  660. };
  661. const clearShouFeeForm = () => {
  662. shouFeeForm.value = {
  663. depoType: "O",
  664. status: "",
  665. autoFlag: 0,
  666. inpatientNo: "",
  667. depoAmount: "",
  668. chequeNo: "",
  669. psordnum: "",
  670. agtordnum: "",
  671. transDate: "",
  672. parChannel: "",
  673. traceNo: "",
  674. receiptNo: "",
  675. };
  676. };
  677. // 刷卡
  678. const shuaKa = () => {
  679. if (stringIsBlank(shouFeeForm.value.depoAmount)) {
  680. ElMessage.error("输入收费金额");
  681. return;
  682. }
  683. let obj = {
  684. chequeType: shouFeeForm.value.depoType,
  685. amt: shouFeeForm.value.depoAmount,
  686. type: 1,
  687. };
  688. consume(obj).then(res => {
  689. // 1 联机刷卡 0 不联机 直接输凭证号
  690. shouFeeForm.value.autoFlag = 1;
  691. shouFeeForm.value.psordnum = res.refNo;
  692. shouFeeForm.value.agtordnum = res.wxAliPayOrderNo;
  693. shouFeeForm.value.transDate = res.transDate;
  694. shouFeeForm.value.parChannel = res.payChannel;
  695. shouFeeForm.value.traceNo = res.traceNo;
  696. shouFeeForm.value.receiptNo = res.lsOrderNo;
  697. });
  698. };
  699. const openShouFee = () => {
  700. if (stringIsBlank(formData.value.name)) {
  701. ElMessage.error("请先查询出要缴费的病人信息");
  702. return;
  703. }
  704. queryLastMzZyReq({ inpatientNo: formData.value.patientId }).then(res => {
  705. if (res.deposit != null && res.deposit > 0) {
  706. shouFeeForm.value.depoAmount = res.deposit;
  707. }
  708. });
  709. shouFeeVisible.value = true;
  710. };
  711. const zdChequeTypes = ref([]);
  712. const openPos = () => {
  713. posTransactionRef.value.openOuter();
  714. };
  715. const patientVisible = ref(false);
  716. const patientTableData = ref([]);
  717. const clearData = () => {
  718. formData.value = {
  719. inpatientNo: "",
  720. patientId: "",
  721. name: "",
  722. sexName: "",
  723. bedNo: "",
  724. wardName: "",
  725. admissDate: "",
  726. responceTypeName: "",
  727. totalCharge: null,
  728. balance: null,
  729. inOutFlag: 0,
  730. yjjHj: 0,
  731. ztYjjHj: 0,
  732. };
  733. tableData.value = [];
  734. };
  735. function setformData(data) {
  736. formData.value.inpatientNo = data.inpatientNo;
  737. formData.value.patientId = data.patientId;
  738. formData.value.name = data.name;
  739. formData.value.sexName = data.sexName;
  740. formData.value.bedNo = data.bedNo;
  741. formData.value.wardName = data.wardName;
  742. formData.value.admissDate = data.admissDate;
  743. formData.value.responceTypeName = data.responceTypeName;
  744. formData.value.totalCharge = data.totalCharge;
  745. formData.value.balance = data.balance;
  746. formData.value.yjjHj = data.yjjHj;
  747. formData.value.ztYjjHj = data.ztYjjHj;
  748. }
  749. onMounted(() => {
  750. initLodop();
  751. queryZdChequeType().then(res => {
  752. zdChequeTypes.value = res;
  753. });
  754. queryHospitalName().then(res => (hospitalName.value = res));
  755. queryLastWindowsIpAddress().then(res => {
  756. printCode.value = res.zyYjjPrintIndex;
  757. });
  758. });
  759. const fetchPatient = row => {
  760. queryAdvancePayment({
  761. inpatientNo: row.inpatientNo,
  762. inOutFlag: formData.value.inOutFlag,
  763. admissTimes: row.admissTimes,
  764. }).then(res => {
  765. patientVisible.value = false;
  766. if (res == null || res.length === 0) {
  767. ElMessage.error("没有查询到数据");
  768. clearData();
  769. } else {
  770. setformData(res);
  771. tableData.value = res.zyDepositFiles;
  772. }
  773. });
  774. };
  775. const queryPatientList = code => {
  776. queryAdvancePaymentPatientList({
  777. inpatientNo: code,
  778. inOutFlag: formData.value.inOutFlag,
  779. }).then(res => {
  780. if (res == null || res.length === 0) {
  781. ElMessage.error("没有查询到数据");
  782. clearData();
  783. } else if (res.length === 1) {
  784. let row = {
  785. inpatientNo: res[0].inpatientNo,
  786. admissTimes: res[0].admissTimes,
  787. };
  788. fetchPatient(row);
  789. } else if (res.length > 1) {
  790. patientVisible.value = true;
  791. patientTableData.value = res;
  792. }
  793. });
  794. };
  795. const tableData = ref([]);
  796. const activeName = ref(["1", "2"]);
  797. const formSize = ref("default");
  798. </script>
  799. <style scoped lang="scss">
  800. .pageTable tr td,
  801. .pageTable tr th {
  802. border: 1px solid black;
  803. text-align: center;
  804. font-size: 12px;
  805. padding: 0 0;
  806. }
  807. .pageTable {
  808. border-collapse: collapse;
  809. }
  810. </style>