You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1222 lines
42 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div>
  3. <el-card>
  4. <div slot="header">体检收费</div>
  5. <div style="display: flex; width: 100%;">
  6. <!-- 查询条件 与列表 -->
  7. <div class="queryDivClass">
  8. <!-- 查询条件 -->
  9. <div style="height: 80px;">
  10. <div style="display:flex;">
  11. <div>
  12. <span>登记日期</span>
  13. <el-date-picker v-model="query.startDate" type="date" placeholder="起始日期" size="small" style="width:90px;"/>
  14. <span></span>
  15. <el-date-picker v-model="query.endDate" type="date" placeholder="截止日期" size="small" style="width:90px;"/>
  16. </div>
  17. <div style="margin-left:10px;">
  18. <el-button type="primary" class="btnClass" @click="Query" size="small" style="width:95px;">查询</el-button>
  19. </div>
  20. </div>
  21. <div style="display:flex;margin-top:10px;">
  22. <el-radio-group v-model="query.chargeFlag" @input="Query" size="mini" style="margin-top:8px;">
  23. <el-radio label="N">未收费</el-radio>
  24. <el-radio label="Y">已收费</el-radio>
  25. <el-radio label="B">已退费</el-radio>
  26. </el-radio-group>
  27. <div v-if="query.chargeFlag != 'N'" style="margin-left:20px;">
  28. <span>发票号</span>
  29. <el-input placeholder="发票/收据号" v-model="query.invoiceNo" size="small" style="width: 100px;" clearable
  30. @change="Query('invoiceNo')" />
  31. </div>
  32. </div>
  33. </div>
  34. <!-- 列表 -->
  35. <div class="prListDivClass">
  36. <el-table :data="patientList" border highlight-current-row ref="patientList"
  37. :height="(window.pageHeight > 600 ? (window.pageHeight - 230) : 370)" @row-click="rowClick" size="small">
  38. <!--
  39. <el-table-column prop="patientRegisterId" label="体检记录ID" />
  40. -->
  41. <el-table-column prop="customerOrgParentName" label="单位" width="180">
  42. <template slot-scope="scope">
  43. <div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgParentName : scope.row.customerOrgName }}
  44. </div>
  45. </template>
  46. </el-table-column>
  47. <el-table-column prop="patientName" label="姓名" />
  48. <el-table-column prop="sexId" label="性别" />
  49. <el-table-column prop="age" label="年龄" />
  50. <el-table-column prop="patientRegisterNo" label="条码号" width="150" />
  51. <el-table-column prop="patientNo" label="档案号" />
  52. <el-table-column prop="medicalTimes" label="体检次数" />
  53. <el-table-column prop="isVip" label="是否VIP">
  54. <template slot-scope="scope">
  55. <div>{{ scope.row.isVip == "Y" ? "是" : "否" }}</div>
  56. </template>
  57. </el-table-column>
  58. <el-table-column prop="salesman" label="介绍人" />
  59. <el-table-column prop="invoiceNo" label="发票号" />
  60. <el-table-column prop="invoiceOrgName" label="发票抬头" />
  61. <!--
  62. <el-table-column prop="chargeId" label="介绍人" />
  63. <el-table-column prop="chargeBackId" label="介绍人" />
  64. -->
  65. <el-table-column prop="email" label="邮箱" width="180" />
  66. <el-table-column prop="idNo" label="身份证" width="150" />
  67. <el-table-column prop="mobileTelephone" label="手机" width="100" />
  68. <el-table-column prop="telephone" label="电话" width="100" />
  69. <el-table-column prop="address" label="地址" width="300" />
  70. </el-table>
  71. </div>
  72. </div>
  73. <!-- 收费操作 -->
  74. <div class="queryDivClass" style="margin-left:5px;">
  75. <!-- 查询信息 -->
  76. <div style="height: 40px;">
  77. <div style="display: flex; flex-wrap: wrap;margin-top:40px; height:40px; width: 100%;">
  78. <div class="query">
  79. <span>条码号</span>
  80. <el-input placeholder="条码号" v-model="query.patientRegisterNo" size="small" style="width: 140px;" clearable
  81. @change="Query('patientRegisterNo')" />
  82. </div>
  83. <div class="query">
  84. <span>档案号</span>
  85. <el-input placeholder="档案号" v-model="query.patientNo" size="small" style="width: 100px;" clearable
  86. @change="Query('patientNo')" />
  87. </div>
  88. <div class="query">
  89. <span>姓名</span>
  90. <el-input placeholder="姓名" v-model="query.patientName" size="small" style="width: 100px;" disabled
  91. @change="Query" />
  92. </div>
  93. </div>
  94. </div>
  95. <!-- 收费信息 -->
  96. <div class="prListDivClass">
  97. <!-- charge -->
  98. <div style="height:148px;">
  99. <el-form ref="form" :model="form" label-width="80px" :rules="rules" size="small"
  100. :disabled="query.chargeFlag != 'N'">
  101. <el-row>
  102. <el-col :span="12">
  103. <el-form-item label="发票号" prop="invoiceNo">
  104. <el-input v-model="form.invoiceNo" />
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="12">
  108. <el-form-item label="开票抬头" prop="invoiceOrgName">
  109. <el-input v-model="form.invoiceOrgName" />
  110. </el-form-item>
  111. </el-col>
  112. </el-row>
  113. <el-row>
  114. <el-col :span="12">
  115. <el-form-item label="折扣" prop="discount">
  116. <el-input v-model="form.discount" @input="discountToDetails" />
  117. </el-form-item>
  118. </el-col>
  119. <el-col :span="12">
  120. <el-form-item label="应收金额" prop="total">
  121. <el-input v-model="form.total" @input="totalToDetails" />
  122. </el-form-item>
  123. </el-col>
  124. </el-row>
  125. <el-row v-if="query.chargeFlag == 'N'">
  126. <el-col :span="12">
  127. <el-form-item label="预收金额" prop="preTotal">
  128. <el-input v-model="form.preTotal" disabled/>
  129. </el-form-item>
  130. </el-col>
  131. <el-col :span="12">
  132. <el-form-item label="找零" prop="balance">
  133. <el-input v-model="form.balance" disabled />
  134. </el-form-item>
  135. </el-col>
  136. </el-row>
  137. </el-form>
  138. </div>
  139. <!-- charge_pay -->
  140. <div>
  141. <div style="margin-top:5px;font-size:10px;">{{ query.chargeFlag == 'B' ? '退' : '收' }}费方式</div>
  142. <el-table :data="chargePays" border highlight-current-row size="small"
  143. :height="window.pageHeight > 600 ? (window.pageHeight - 270 - 146) / 2 : 92">
  144. <el-table-column prop="payModeId" :label="(query.chargeFlag == 'B' ? '退' : '收') + '费方式'" width="180">
  145. <template slot-scope="scope">
  146. <div>{{ dddw(dict.payMode, "id", scope.row.payModeId, "displayName") }}</div>
  147. </template>
  148. </el-table-column>
  149. <el-table-column prop="chargeMoney" label="金额">
  150. <template slot-scope="scope">
  151. <el-input type="number" v-model="scope.row.chargeMoney" size="small" @input="inputMoney"
  152. :disabled="query.chargeFlag == 'B'" />
  153. </template>
  154. </el-table-column>
  155. <el-table-column prop="cardRegisterId" label="会员卡">
  156. <template slot-scope="scope">
  157. <el-select v-model="scope.row.cardRegisterId" placeholder="请选择" size="small" filterable clearable
  158. :disabled="scope.row.payModeId == '05' && query.chargeFlag != 'B' ? false : true">
  159. <el-option v-for="item in cardRegister" :key="item.id" :label="item.cardNo" :value="item.id" />
  160. </el-select>
  161. </template>
  162. </el-table-column>
  163. </el-table>
  164. </div>
  165. <!-- asbitem -->
  166. <div>
  167. <div style="margin-top:5px; font-size:10px;">{{ query.chargeFlag == 'N' ? '待收' : (query.chargeFlag == 'Y' ?
  168. '已收' : '已退') }}费项目</div>
  169. <el-table :data="asbItemsForFee" border highlight-current-row
  170. :height="window.pageHeight > 600 ? (window.pageHeight - 270 - 146) / 2 : 92" size="small"
  171. @selection-change="handleSelectionChange" ref="asbItemsForFeeTable">
  172. <el-table-column type="selection" align="center" v-if="query.chargeFlag == 'N'" />
  173. <el-table-column label="组合项目" width="120" prop="asbitemName" />
  174. <el-table-column label="标准价格" prop="standardPrice" width="80" align="center" />
  175. <el-table-column label="折扣" prop="discount" width="60" align="center">
  176. <template slot-scope="scope">
  177. <el-input type="number" v-model="scope.row.discount" v-if="query.chargeFlag == 'N'"
  178. :disabled="scope.row.isCharge == 'Y' ? true : false" size="small"
  179. @input="changeDiscount(scope.row)" />
  180. <div v-if="query.chargeFlag != 'N'">{{ scope.row.discount }}</div>
  181. </template>
  182. </el-table-column>
  183. <el-table-column label="数量" prop="amount" width="50" align="center" />
  184. <el-table-column label="实收价格" prop="chargePrice" width="80" align="center">
  185. <template slot-scope="scope">
  186. <el-input type="number" v-model="scope.row.chargePrice" v-if="query.chargeFlag == 'N'"
  187. :disabled="scope.row.isCharge == 'Y' ? true : false" size="small" @input="changePrice(scope.row)" />
  188. <div v-if="query.chargeFlag != 'N'">{{ scope.row.chargePrice }}</div>
  189. </template>
  190. </el-table-column>
  191. <el-table-column prop="total" label="金额" width="70" v-if="false" />
  192. <el-table-column prop="standardPrice" label="标准金额" width="80" v-if="false" />
  193. <el-table-column label="支付方式" prop="payTypeFlag" width="100" align="center">
  194. <template slot-scope="scope">
  195. <div>{{ dddw(dict.payType, "id", scope.row.payTypeFlag, "displayName") }}</div>
  196. </template>
  197. </el-table-column>
  198. <el-table-column prop="checkCompleteFlag" label="状态" align="center">
  199. <template slot-scope="scope">
  200. <div>{{ dddw(dict.checkCompleteFlag, "id", scope.row.checkCompleteFlag, "displayName") }}</div>
  201. </template>
  202. </el-table-column>
  203. <el-table-column prop="creatorName" label="登记人" align="center" />
  204. <el-table-column prop="creationTime" label="登记日期" width="90" align="center">
  205. <template slot-scope="scope">
  206. <div v-if="scope.row.creationTime">{{ moment(scope.row.creationTime).format('yyyy-MM-DD') }}</div>
  207. </template>
  208. </el-table-column>
  209. </el-table>
  210. </div>
  211. </div>
  212. </div>
  213. <div class="btnDivClass">
  214. <div class="btnListClass">
  215. <el-button type="primary" class="btnClass" @click="btnCharge"
  216. :disabled="query.chargeFlag == 'N' ? false : true">收费</el-button>
  217. </div>
  218. <div class="btnListClass">
  219. <el-button type="danger" class="btnClass" @click="btnChargeBack"
  220. :disabled="query.chargeFlag == 'Y' ? false : true">退费</el-button>
  221. </div>
  222. <div class="btnListClass">
  223. <el-button type="success" class="btnClass" @click="chargePrint('0007', false, form.id)"
  224. :disabled="query.chargeFlag == 'B' ? true : false">打印</el-button>
  225. </div>
  226. <div class="btnListClass">
  227. <el-button type="success" class="btnClass" @click="chargePrint('0007', true, form.id)"
  228. :disabled="query.chargeFlag == 'B' ? true : false">打印预览</el-button>
  229. </div>
  230. </div>
  231. </div>
  232. </el-card>
  233. </div>
  234. </template>
  235. <script>
  236. import moment from 'moment';
  237. import { mapState, mapActions } from "vuex";
  238. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  239. import { tcdate, dddw, arrayExistObj, deepCopy } from "../../utlis/proFunc";
  240. import PatientRegisterQuery from "../../components/patientRegister/patientRegisterQuery.vue";
  241. import PatientRegisterRefuseList from "../../components/patientRegister/PatientRegisterRefuseList.vue";
  242. export default {
  243. components: {
  244. PatientRegisterQuery,
  245. PatientRegisterRefuseList,
  246. },
  247. props:["patientRegisterNo"],
  248. data() {
  249. return {
  250. query: {
  251. chargeFlag: 'N', // N:未收费,Y:已收费,B:已退费
  252. dateRange: null,
  253. startDate: null,
  254. endDate: null,
  255. patientRegisterNo: '',
  256. patientNo: '',
  257. invoiceNo: '',
  258. patientName: '',
  259. },//查询条件
  260. patientList: [],//人员列表
  261. formInit:{},
  262. form: {
  263. id: null,
  264. patientRegisterId: null,
  265. invoiceNo: '',
  266. invoiceOrgName: '',
  267. chargeFlag: '0',
  268. discount: 100,
  269. total: 0, //应收金额
  270. preTotal: 0, //预收金额
  271. balance: 0, //找零
  272. }, //收费主表
  273. rules: {
  274. invoiceNo: [
  275. { required: true, message: "请填写发票/收据号", trigger: "blur" },
  276. ],
  277. total: [
  278. { required: true, message: "请填写应收金额", trigger: "blur" },
  279. ],
  280. },
  281. // pickerOptions: {
  282. // shortcuts: [
  283. // {
  284. // text: "最近一周",
  285. // onClick(picker) {
  286. // const end = new Date();
  287. // const start = new Date();
  288. // start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  289. // picker.$emit("pick", [start, end]);
  290. // },
  291. // },
  292. // {
  293. // text: "最近一个月",
  294. // onClick(picker) {
  295. // const end = new Date();
  296. // const start = new Date();
  297. // start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  298. // picker.$emit("pick", [start, end]);
  299. // },
  300. // },
  301. // {
  302. // text: "最近三个月",
  303. // onClick(picker) {
  304. // const end = new Date();
  305. // const start = new Date();
  306. // start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  307. // picker.$emit("pick", [start, end]);
  308. // },
  309. // },
  310. // ],
  311. // },
  312. chargePays: [], //收支方式
  313. chargePaysInit: [], //收支方式(初始状态)
  314. asbItemsForFee: [], //待收费项目
  315. selectedData: [], //选中项目
  316. cardRegister: [{ id: '00000000-0000-0000-0000-000000000000', cardNo: '0001' }], //当前客户的会员卡
  317. cardRegisterAll: [], //所有客户的会员卡
  318. };
  319. },
  320. created() {
  321. this.formInit = Object.assign({},this.form)
  322. this.dictInit();
  323. },
  324. //挂载完成
  325. mounted() {
  326. if(this.patientRegisterNo){
  327. this.Query('patientRegisterNo');
  328. }else{
  329. this.Query();
  330. }
  331. },
  332. computed: {
  333. ...mapState(["window", "dict", "dataTransOpts", "patientRegister", "customerOrg"]),
  334. },
  335. methods: {
  336. ...mapActions(["getCustomerOrgGroup"]),
  337. dddw, moment,
  338. //查询人员列表数据
  339. Query(type) {
  340. let url = '', ltype = type,body = {};
  341. // {
  342. // "skipCount": 2147483647,
  343. // "sorting": "string",
  344. // "patientName": "string",
  345. // "patientNo": "string",
  346. // "patientRegisterNo": "string",
  347. // "invoiceNo": "string",
  348. // "startDate": "string",
  349. // "endDate": "string",
  350. // "maxResultCount": 0
  351. // }
  352. if(this.patientRegisterNo){
  353. this.query.patientRegisterNo = this.patientRegisterNo
  354. ltype = 'patientRegisterNo'
  355. }
  356. console.log('query', ltype, this.query,this.patientRegisterNo);
  357. if (ltype == 'patientRegisterNo') {
  358. if (!this.query.patientRegisterNo) return;
  359. body = { patientRegisterNo: this.query.patientRegisterNo };
  360. } else if (ltype == 'patientNo') {
  361. if (!this.query.patientNo) return;
  362. body = { patientNo: this.query.patientNo };
  363. } else if (ltype == 'invoiceNo' && this.query.chargeFlag != 'N') {
  364. if (!this.query.invoiceNo) return;
  365. body = { invoiceNo: this.query.invoiceNo };
  366. } else {
  367. if (this.query.startDate && this.query.endDate) {
  368. body.startDate = moment(this.query.startDate).format("yyyy-MM-DD")
  369. body.endDate = moment(this.query.endDate).format("yyyy-MM-DD")
  370. if(body.startDate > body.endDate){
  371. this.$message.warning("起始日期不能大于截止日期,数据校验不通过!")
  372. return
  373. }
  374. }
  375. }
  376. switch (this.query.chargeFlag) {
  377. case 'Y':
  378. //已收费
  379. url = '/api/app/patientregister/getpatientregisterchargelist';
  380. break;
  381. case 'B':
  382. //已退费
  383. url = '/api/app/patientregister/getpatientregisterchargebacklist';
  384. break;
  385. default:
  386. //未收费
  387. url = '/api/app/patientregister/getpatientregisternotchargedlist'
  388. break;
  389. }
  390. const loading = this.$loading({
  391. lock: true,
  392. text: 'Loading',
  393. spinner: 'el-icon-loading',
  394. background: 'rgba(0, 0, 0, 0.7)'
  395. });
  396. postapi(url, body).then(res => {
  397. console.log(url,body,res)
  398. if (res.code != - 1) {
  399. this.patientList = res.data.items;
  400. //this.patientList.length == 1 && this.query.chargeFlag == 'N'
  401. if (this.patientList.length > 0) {
  402. // this.query.patientRegisterNo = this.patientList[0].patientRegisterNo;
  403. // this.query.patientName = this.patientList[0].patientName;
  404. // this.query.patientNo = this.patientList[0].patientNo;
  405. this.$nextTick(() =>{
  406. setTimeout(() => {
  407. this.$refs['patientList'].setCurrentRow(this.patientList[0])
  408. this.rowClick(this.patientList[0])
  409. }, 20)
  410. })
  411. }else{
  412. this.asbItemsForFee = []
  413. this.form = Object.assign({},this.formInit)
  414. }
  415. }
  416. loading.close();
  417. })
  418. .catch((err) => {
  419. loading.close();
  420. });
  421. },
  422. //人员列表点击
  423. rowClick(row) {
  424. this.query.patientRegisterNo = row.patientRegisterNo;
  425. this.query.patientName = row.patientName;
  426. this.query.patientNo = row.patientNo;
  427. this.chargePays = deepCopy(this.chargePaysInit);
  428. console.log(this.chargePays, this.chargePaysInit);
  429. if (this.query.chargeFlag == 'B') {
  430. this.form.chargeFlag = '1';
  431. } else {
  432. this.form.chargeFlag = '0';
  433. }
  434. if (row.chargeId) {
  435. this.form.id = row.chargeId;
  436. this.form.invoiceNo = row.invoiceNo;
  437. this.form.invoiceOrgName = row.patientName;
  438. } else {
  439. this.form.id = null;
  440. this.form.invoiceNo = '';
  441. this.form.invoiceOrgName = row.patientName;
  442. }
  443. //获取个人会员卡信息
  444. this.getCardRegister(row.idNo);
  445. switch (this.query.chargeFlag) {
  446. case 'N':
  447. this.getAsbItemsForFee(row.patientRegisterId);
  448. break;
  449. case 'Y':
  450. this.getChargePayByChargeId(row.chargeId);
  451. this.getChargeAsbByChargeid(row.chargeId);
  452. break;
  453. default:
  454. this.getChargeBackPayByChargeBackId(row.chargeBackId);
  455. this.getChargeAsbByChargeid(row.chargeId);
  456. break;
  457. }
  458. },
  459. //获取项目列表
  460. async getAsbItemsForFee(patientRegisterId) {
  461. //待收费项目列表
  462. this.asbItemsForFee = [];
  463. getapi(`/api/app/registerasbitem/getlistinpatientregisterid?PatientRegisterId=${patientRegisterId}`)
  464. .then(res => {
  465. if (res.code == 1) {
  466. this.asbItemsForFee = res.data;
  467. for (let i = this.asbItemsForFee.length - 1; i >= 0; i--) {
  468. if (this.asbItemsForFee[i].isCharge == 'Y' || this.asbItemsForFee[i].payTypeFlag == '1') {
  469. this.asbItemsForFee.splice(i, 1);
  470. continue;
  471. }
  472. this.asbItemsForFee[i].chargePriceOri = this.asbItemsForFee[i].chargePrice;
  473. this.asbItemsForFee[i].discount = Math.round(10000 * this.asbItemsForFee[i].chargePrice / this.asbItemsForFee[i].standardPrice) / 100;
  474. this.asbItemsForFee[i].standTotal = this.asbItemsForFee[i].amount * this.asbItemsForFee[i].standardPrice;
  475. this.asbItemsForFee[i].total = this.asbItemsForFee[i].amount * this.asbItemsForFee[i].chargePrice;
  476. }
  477. //勾选已收费项目
  478. this.toCharge(patientRegisterId);
  479. }
  480. });
  481. },
  482. // "chargeId": "3a0d5685-b3a0-0186-0dd4-3b3ac0d2d08c",
  483. // "asbitemId": "3a0c657d-4e73-9bab-68da-56ab2f088bb1",
  484. // "asbitemName": "身高体重",
  485. // "asbitemPrice": 17,
  486. // "chargePrice": 18,
  487. // "amount": 1,
  488. // "registerAsbitemId": "3a0c6589-9b27-68d1-32f6-51082031d11c",
  489. // "creatorName": "admin",
  490. // "lastModifierName": null,
  491. // "lastModificationTime": null,
  492. // "lastModifierId": null,
  493. // "creationTime": "2023-08-30T10:49:48.753174",
  494. // "creatorId": "3a0c4180-107c-0c89-b25b-0bd34666dcec",
  495. // "id": "3a0d5685-b3bb-8dc2-0d14-56af1ddd11f9"
  496. // 获取个人充值卡
  497. getCardRegister(idNo) {
  498. this.cardRegister = [];
  499. if(!idNo) return;
  500. let body = { cardModeId: '0', idNo };
  501. postapi(`/api/app/cardregister/getcardregisterlist`, body).then(res => {
  502. if (res.code != - 1) {
  503. this.cardRegister = res.data;
  504. }
  505. });
  506. },
  507. //获取收费单包含的组合项目
  508. getChargeAsbByChargeid(ChargeId) {
  509. this.asbItemsForFee = [];
  510. getapi(`/api/app/chargeasbitem/getchargeasbiteminchargeid?ChargeId=${ChargeId}`).then(res => {
  511. if (res.code != - 1) {
  512. res.data.forEach(e => {
  513. this.asbItemsForFee.push({
  514. asbitemName: e.asbitemName,
  515. standardPrice: e.asbitemPrice,
  516. chargePrice: e.chargePrice,
  517. chargePriceOri: e.chargePrice,
  518. amount: e.amount,
  519. discount: Math.round(10000 * e.chargePrice / e.asbitemPrice) / 100,
  520. payTypeFlag: e.payTypeFlag,
  521. checkCompleteFlag: e.checkCompleteFlag,
  522. creatorName: e.creatorName,
  523. creationTime: e.creationTime,
  524. });
  525. });
  526. this.sumTotal(this.asbItemsForFee, this.form);
  527. }
  528. });
  529. },
  530. //获取收费方式明细
  531. getChargePayByChargeId(ChargeId) {
  532. let lfind = -1;
  533. getapi(`/api/app/chargepay/getchargepayinchargeid?ChargeId=${ChargeId}`).then(res => {
  534. if (res.code != - 1) {
  535. res.data.forEach(e => {
  536. lfind = arrayExistObj(this.chargePays, 'payModeId', e.payModeId);
  537. if (lfind > - 1) {
  538. this.chargePays[lfind].chargeMoney = e.chargeMoney;
  539. this.chargePays[lfind].cardRegisterId = e.cardRegisterId;
  540. }
  541. });
  542. }
  543. });
  544. },
  545. //获取退费方式明细
  546. getChargeBackPayByChargeBackId(ChargeBackId) {
  547. let lfind = -1;
  548. getapi(`/api/app/chargebackpay/getchargebackpayinchargebackid?ChargeBackId=${ChargeBackId}`).then(res => {
  549. if (res.code != - 1) {
  550. res.data.forEach(e => {
  551. lfind = arrayExistObj(this.chargePays, 'payModeId', e.payModeId);
  552. if (lfind > - 1) {
  553. this.chargePays[lfind].chargeMoney = e.backMoeny;
  554. this.chargePays[lfind].cardRegisterId = e.cardRegisterId;
  555. }
  556. });
  557. }
  558. });
  559. },
  560. //待收费数据分析
  561. toCharge(patientRegisterId) {
  562. //默认全部选中
  563. this.selectedData = [...this.asbItemsForFee];
  564. this.$nextTick(function () {
  565. this.selectedData.forEach(row => {
  566. this.$refs['asbItemsForFeeTable'].toggleRowSelection(row)
  567. })
  568. });
  569. this.form.patientRegisterId = patientRegisterId;
  570. },
  571. //根据明细算总价与折扣
  572. sumTotal(details, head) {
  573. let total = 0, totalOri = 0;
  574. details.forEach(e => {
  575. totalOri += Math.round(e.amount * e.chargePriceOri * 100) / 100; //原始实收价格
  576. total += Math.round(e.amount * e.chargePrice * 100) / 100; //当前实收价格
  577. //console.log(total, e.chargePrice, e.amount)
  578. });
  579. total = Math.round(total * 100) / 100;
  580. totalOri = Math.round(totalOri * 100) / 100;
  581. head.total = total;
  582. //head.preTotal = total;
  583. if (totalOri == 0) {
  584. head.discount = 100;
  585. } else {
  586. head.discount = Math.round(10000 * total / totalOri) / 100;
  587. }
  588. //
  589. this.findBalance()
  590. },
  591. //通过折扣计算总价与明细价格
  592. discountToDetails() {
  593. let discount = this.form.discount;
  594. let totalOri = 0, totalCompute = 0, totalPlan = 0;
  595. let lfind = -1;
  596. this.selectedData.forEach(e => {
  597. totalOri += Number(e.amount * e.chargePriceOri); //原始实收价格
  598. lfind = arrayExistObj(this.asbItemsForFee, 'id', e.id)
  599. if (lfind > -1 && e.chargePriceOri != 0) {
  600. e.chargePrice = Math.round(e.chargePriceOri * discount) / 100;
  601. e.discount = Math.round(10000 * e.chargePrice / e.standardPrice) / 100;
  602. totalCompute += Math.round(e.chargePrice * e.amount * 100) / 100;
  603. }
  604. });
  605. totalPlan = Math.round(totalOri * discount) / 100;
  606. this.form.total = totalPlan;
  607. //this.form.preTotal = totalPlan;
  608. //明细和与总金额不符处理
  609. this.handleBalance(totalPlan, totalCompute);
  610. this.findBalance()
  611. },
  612. //通过总价计算折扣与明细价格
  613. totalToDetails() {
  614. let discount = 100;
  615. let totalOri = 0, totalCompute = 0, totalPlan = Number(this.form.total);
  616. let lfind = -1;
  617. this.selectedData.forEach(e => {
  618. totalOri += Math.round(100 * e.amount * e.chargePriceOri) / 100; //原始实收价格
  619. });
  620. if (totalOri != 0) {
  621. discount = Math.round(10000 * totalPlan / totalOri) / 100;
  622. this.form.discount = discount;
  623. }
  624. //
  625. this.selectedData.forEach(e => {
  626. lfind = arrayExistObj(this.asbItemsForFee, 'id', e.id);
  627. if (lfind > -1) {
  628. e.chargePrice = Math.round(e.chargePriceOri * discount) / 100;
  629. e.discount = Math.round(10000 * e.chargePrice / e.standardPrice) / 100;
  630. totalCompute += Math.round(100 * e.chargePrice * e.amount) / 100;
  631. }
  632. });
  633. //this.form.preTotal = totalPlan;
  634. //明细和与总金额不符处理
  635. this.handleBalance(totalPlan, totalCompute);
  636. this.findBalance()
  637. },
  638. //明细合计金额与总金额不一致时,处理
  639. handleBalance(totalPlan, totalCompute) {
  640. if (totalPlan != totalCompute) {
  641. for (let i = this.selectedData.length - 1; i = 0; i--) {
  642. lfind = lfind = arrayExistObj(this.asbItemsForFee, 'id', this.selectedData[i].id);
  643. if (lfind > -1 && this.selectedData[i].amount == 1) {
  644. this.asbItemsForFee[lfind].chargePrice = this.asbItemsForFee[lfind].chargePrice + totalPlan - totalCompute;
  645. this.selectedData[i].chargePrice = this.asbItemsForFee[lfind].chargePrice;
  646. break;
  647. }
  648. }
  649. }
  650. },
  651. //输入预收金额,计算找零
  652. findBalance() {
  653. this.form.balance = Math.round((this.form.preTotal - this.form.total)*100)/100;
  654. },
  655. //输入收费方式金额
  656. inputMoney() {
  657. // 现金 id = 01
  658. let cashTotal= Number(0), unCashTotal= Number(0);
  659. this.chargePays.forEach(e => {
  660. console.log('e',e)
  661. if(e.payModeId == '01'){
  662. cashTotal += Number(e.chargeMoney);
  663. }else{
  664. unCashTotal += Number(e.chargeMoney);
  665. }
  666. });
  667. this.form.preTotal = cashTotal + unCashTotal
  668. this.findBalance()
  669. if (unCashTotal > this.form.total) this.$message.warning(`数据校验失败:输入的非现金金额${unCashTotal}不能超过应收金额${this.form.total}`);
  670. },
  671. //勾选要收费的项目
  672. handleSelectionChange(v) {
  673. this.selectedData = v;
  674. this.sumTotal(this.selectedData, this.form);
  675. },
  676. //调整明细折扣
  677. changeDiscount(row) {
  678. let total = this.form.total;
  679. let totalDetailsOri = Math.round(100 * row.amount * row.chargePrice) / 100;
  680. let totalDetailsCur = 0;
  681. row.chargePrice = Math.round(row.discount * row.standardPrice) / 100;
  682. let lfind = arrayExistObj(this.selectedData, 'id', row.id);
  683. if (lfind > -1) {
  684. totalDetailsCur = Math.round(100 * row.amount * row.chargePrice) / 100;
  685. this.form.total = total + totalDetailsCur - totalDetailsOri;
  686. }
  687. this.sumTotal(this.selectedData, this.form);
  688. },
  689. //调整明细实收价格
  690. changePrice(row) {
  691. if (row.chargePriceOri != 0) {
  692. row.discount = Math.round(10000 * row.chargePrice / row.standardPrice) / 100;
  693. }
  694. this.sumTotal(this.selectedData, this.form);
  695. },
  696. //收费
  697. btnCharge() {
  698. let body = {};
  699. let unCashTotal = Number(0) , cashTotal = Number(0);
  700. let msg = '';
  701. let chargePays = [];
  702. let asbitems = [];
  703. if (this.form.id) {
  704. this.$message.warning("已收费,不可重复操作!");
  705. return;
  706. }
  707. this.$refs['form'].validate((valid, fields) => {
  708. if (!valid) {
  709. msg = fields[Object.keys(fields)[0]][0].message;
  710. return;
  711. }
  712. });
  713. if (msg) {
  714. this.$message.warning(msg);
  715. return;
  716. }
  717. this.chargePays.forEach(e => {
  718. if(e.payModeId == '01'){
  719. cashTotal += Number(e.chargeMoney);
  720. }else{
  721. unCashTotal += Number(e.chargeMoney);
  722. }
  723. if (e.payModeId == '05' && e.chargeMoney) {
  724. //console.log(e.payModeId,e.chargeMoney,e.cardRegisterId);
  725. if (!e.cardRegisterId) msg = dddw(this.dict.payMode, "id", e.payModeId, "displayName") + '付费,必需选择会员卡号';
  726. } else {
  727. e.cardRegisterId = null;
  728. }
  729. });
  730. if (msg) {
  731. this.$message.warning(msg);
  732. return;
  733. }
  734. //规避套现
  735. if (unCashTotal > this.form.total) {
  736. this.$message.warning("非现金收款不可大于应收金额!");
  737. return;
  738. }
  739. if (unCashTotal + cashTotal < this.form.total) {
  740. this.$message.warning("收费方式合计收款不可小于应收金额!");
  741. return;
  742. }
  743. this.chargePays.forEach(e => {
  744. if (e.chargeMoney) {
  745. if(e.payModeId == '01'){
  746. //现金支付,数据库中存找零后的现金
  747. chargePays.push({
  748. payModeId: e.payModeId,
  749. chargeMoney: e.chargeMoney - this.form.balance,
  750. cardRegisterId: e.cardRegisterId,
  751. });
  752. }else{
  753. chargePays.push({
  754. payModeId: e.payModeId,
  755. chargeMoney: e.chargeMoney,
  756. cardRegisterId: e.cardRegisterId,
  757. });
  758. }
  759. }
  760. });
  761. this.selectedData.forEach(e => {
  762. asbitems.push({
  763. asbitemId: e.asbitemId,
  764. chargePrice: e.chargePrice,
  765. amount: e.amount,
  766. registerAsbitemId: e.id,
  767. });
  768. });
  769. body = {
  770. patientRegisterId: this.form.patientRegisterId,
  771. invoiceNo: this.form.invoiceNo,
  772. invoiceOrgName: this.form.invoiceOrgName,
  773. chargePays,
  774. asbitems,
  775. };
  776. // {
  777. // "patientRegisterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  778. // "invoiceNo": "string",
  779. // "invoiceOrgName": "string",
  780. // "chargePays": [
  781. // {
  782. // "payModeId": "string",
  783. // "chargeMoney": 0,
  784. // "cardRegisterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  785. // }
  786. // ],
  787. // "asbitems": [
  788. // {
  789. // "asbitemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  790. // "chargePrice": 0,
  791. // "amount": 0,
  792. // "registerAsbitemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  793. // }
  794. // ]
  795. // }
  796. //console.log('body',body);
  797. postapi('/api/app/registerasbitem/registerasbitemcharge', body).then(res => {
  798. if (res.code != -1) {
  799. this.form.id = res.data.chargeId; //可防止重复提交收费
  800. this.$confirm("操作成功, 是否打印发票?", "提示", {
  801. confirmButtonText: "是",
  802. cancelButtonText: "否",
  803. type: "warning",
  804. }).then(() => {
  805. this.chargePrint('0007', false, res.data.chargeId)
  806. setTimeout(() => {
  807. this.Query();
  808. }, 1000)
  809. }).catch((err) => {
  810. if (err == "cancel") {
  811. //this.$message.info("已取消删除");
  812. this.Query();
  813. }
  814. });
  815. }
  816. });
  817. },
  818. //退费
  819. btnChargeBack() {
  820. let chargeId = this.form.id;
  821. let msg = '';
  822. let chargeBackPays = [];
  823. let total = 0;
  824. let body = {};
  825. if (!chargeId) {
  826. this.$message.warning("请选择待退费的记录!");
  827. return;
  828. }
  829. if (this.form.chargeFlag == '1') {
  830. this.$message.warning("已退费,不可重复操作!");
  831. return;
  832. }
  833. this.$confirm("是否确定执行退费操作?", "提示", {
  834. confirmButtonText: "是",
  835. cancelButtonText: "否",
  836. type: "warning",
  837. }).then(() => {
  838. this.chargePays.forEach(e => {
  839. total += Number(e.chargeMoney);
  840. if (e.payModeId == '05' && e.chargeMoney) {
  841. if (!e.cardRegisterId) msg = '请先择会员卡号';
  842. } else {
  843. e.cardRegisterId = null;
  844. }
  845. return e;
  846. });
  847. if (msg) {
  848. this.$message.warning(msg);
  849. return;
  850. }
  851. if (total != this.form.total) {
  852. this.$message.warning("退费方式合计金额与退费总金额不符");
  853. return;
  854. }
  855. this.chargePays.forEach(e => {
  856. if (e.chargeMoney) {
  857. chargeBackPays.push({
  858. payModeId: e.payModeId,
  859. backMoeny: e.chargeMoney,
  860. cardRegisterId: e.cardRegisterId,
  861. });
  862. }
  863. });
  864. // {
  865. // "chargeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  866. // "chargeBackPays": [
  867. // {
  868. // "payModeId": "string",
  869. // "backMoeny": 0,
  870. // "cardRegisterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  871. // }
  872. // ]
  873. // }
  874. body = {
  875. chargeId, chargeBackPays
  876. }
  877. postapi('/api/app/registerasbitem/registerasbitemchargeback', body).then(res => {
  878. if (res.code != -1) {
  879. console.log("操作成功!");
  880. this.form.chargeFlag = '1'; //防止重复提交退费
  881. this.Query();
  882. }
  883. });
  884. }).catch((err) => {
  885. if (err == "cancel") {
  886. this.$message.info("已取消删除");
  887. }
  888. });
  889. },
  890. //收费打印
  891. chargePrint(ReportCode, isPreview, chargeId) {
  892. console.log('ReportCode, isPreview, chargeId',ReportCode, isPreview, chargeId)
  893. if (!chargeId) {
  894. this.$message.info("人员信息尚未保存,不可执行此操作!");
  895. return;
  896. }
  897. if(!this.$peisAPI) {
  898. this.$message.info("此功能,需要在壳客户端才可运行!")
  899. return
  900. }
  901. let token = window.sessionStorage.getItem('token');
  902. let user = window.sessionStorage.getItem('user');
  903. let toOutShell = {
  904. ReportCode, token,
  905. preViewCanPrint: 'Y',
  906. Parameters: [
  907. { Name: 'printer', Value: user },
  908. { Name: 'hisLog', Value: 'pic/hisLog.jpg' },
  909. ],
  910. };
  911. if (isPreview) {
  912. postapi(`/api/app/printreport/getchargereport?ChargeId=${chargeId}`)
  913. .then((res) => {
  914. if (res.code != -1) {
  915. toOutShell.ReportTable = res.data;
  916. console.log('JSON.stringify(toOutShell)', JSON.stringify(toOutShell));
  917. return this.$peisAPI.printPre(JSON.stringify(toOutShell));
  918. }
  919. })
  920. .then(res =>{
  921. console.log(res)
  922. if(JSON.parse(res).code < 0){
  923. this.$message.error(JSON.parse(res).message)
  924. }
  925. })
  926. .catch(err => {
  927. this.$message.warning(err);
  928. });
  929. } else {
  930. postapi(`/api/app/printreport/getchargereport?ChargeId=${chargeId}`)
  931. .then((res) => {
  932. if (res.code != -1) {
  933. toOutShell.ReportTable = res.data;
  934. console.log('JSON.stringify(toOutShell)', JSON.stringify(toOutShell));
  935. return this.$peisAPI.print(JSON.stringify(toOutShell));
  936. }
  937. })
  938. .then(res =>{
  939. console.log(res)
  940. if(JSON.parse(res).code < 0){
  941. this.$message.error(JSON.parse(res).message)
  942. }
  943. })
  944. .catch(err => {
  945. this.$message.warning(err);
  946. });
  947. }
  948. },
  949. //数据初始化
  950. dictInit() {
  951. this.query.startDate = new Date()
  952. this.query.endDate = this.query.startDate
  953. //性别(仅档案用)
  954. getapi("/api/app/sex").then((res) => {
  955. if (res.code == 1) {
  956. this.dict.sex = res.data;
  957. }
  958. });
  959. //性别(查询)
  960. getapi("/api/app/for-sex").then((res) => {
  961. if (res.code == 1) {
  962. this.dict.forSex = res.data;
  963. }
  964. });
  965. //体检单位
  966. getapi("/api/app/customerorg/getbycodeall").then((res) => {
  967. this.patientRegister.customerOrgTreeAll = res.data;
  968. tcdate(this.patientRegister.customerOrgTreeAll)
  969. });
  970. //体检中心
  971. getapi("/api/app/organization-units/organization-unit-by-is-peis").then(
  972. (res) => {
  973. if (res.code == 1) {
  974. this.dict.organization = res.data;
  975. }
  976. }
  977. );
  978. //体检单位
  979. getapi("/api/app/customer-org/in-filter").then((res) => {
  980. if (res.code == 1) {
  981. this.dict.customerOrg = res.data.items;
  982. }
  983. });
  984. //体检类别
  985. getapi("/api/app/medical-type/in-filter").then((res) => {
  986. if (res.code == 1) {
  987. this.dict.medicalType = res.data.items;
  988. }
  989. });
  990. //人员类别
  991. getapi("/api/app/personnel-type/in-filter").then((res) => {
  992. if (res.code == 1) {
  993. this.dict.personnelType = res.data.items;
  994. }
  995. });
  996. //婚姻状况
  997. getapi("/api/app/marital-statuses").then((res) => {
  998. if (res.code == 1) {
  999. this.dict.maritalStatus = res.data.items;
  1000. }
  1001. });
  1002. //性激素期
  1003. getapi("/api/app/sex-hormone-term/in-filter").then((res) => {
  1004. if (res.code == 1) {
  1005. this.dict.sexHormoneTerm = res.data.items;
  1006. }
  1007. });
  1008. //民族
  1009. getapi("/api/app/nation/in-filter").then((res) => {
  1010. if (res.code == 1) {
  1011. this.dict.nation = res.data.items;
  1012. }
  1013. });
  1014. //籍惯 ,出生地
  1015. getapi("/api/app/birth-place/in-filter").then((res) => {
  1016. if (res.code == 1) {
  1017. this.dict.birthPlace = res.data.items;
  1018. }
  1019. });
  1020. //套餐
  1021. postapi("/api/app/medicalpackage/getmedicalpackagelist",{}).then((res) => {
  1022. if (res.code == 1) {
  1023. this.dict.medicalPackage = res.data;
  1024. }
  1025. });
  1026. //分组,所有分组,不限单位,不限次数
  1027. getapi("/api/app/customer-org-group").then((res) => {
  1028. if (res.code == 1) {
  1029. this.dict.customerOrgGroupAll = res.data.items;
  1030. }
  1031. });
  1032. //支付方式 /api/app/pay-mode(全部)
  1033. getapi("/api/app/paymode/getlistinisactive").then((res) => {
  1034. if (res.code == 1) {
  1035. this.dict.payMode = res.data;
  1036. //未收费时
  1037. this.chargePaysInit = [];
  1038. this.dict.payMode.forEach(e => {
  1039. this.chargePaysInit.push({ chargeId: null, payModeId: e.id, chargeMoney: 0, cardBillId: null })
  1040. });
  1041. this.chargePays = deepCopy(this.chargePaysInit);
  1042. }
  1043. });
  1044. //体检类别 树结构
  1045. getapi("/api/app/item-type/by-code-all").then((res) => {
  1046. if (res.code == 1) {
  1047. this.dict.itemTypeTree = res.data;
  1048. tcdate(this.dict.itemTypeTree);
  1049. }
  1050. });
  1051. postapi("/api/app/asbitem/getasbitemlist",{}).then((res) => {
  1052. if (res.code == 1) {
  1053. this.dict.asbItemAll = res.data;
  1054. }
  1055. });
  1056. console.log("dict", this.dict);
  1057. },
  1058. },
  1059. //监听事件()
  1060. watch: {
  1061. "dataTransOpts.refresh.charge.S":{
  1062. immediate: true, // 立即执行
  1063. // // deep: true, // 深度监听复杂类型内变化
  1064. handler(newVal,oldVal){
  1065. console.log(`watch: 收费 newVal: ${newVal}, oldVal: ${oldVal}, 人员条码号: `,this.patientRegisterNo)
  1066. this.query.patientRegisterNo = this.patientRegisterNo
  1067. this.Query("patientRegisterNo")
  1068. }
  1069. },
  1070. },
  1071. };
  1072. </script>
  1073. <style scoped>
  1074. @import '../../assets/css/global_button.css';
  1075. @import '../../assets/css/global_card.css';
  1076. @import '../../assets/css/global_dialog.css';
  1077. @import '../../assets/css/global_form.css';
  1078. @import '../../assets/css/global_input.css';
  1079. @import '../../assets/css/global_table.css';
  1080. @import '../../assets/css/global.css';
  1081. .queryDivClass {
  1082. display: block;
  1083. width: v-bind("(window.pageWidth > 600 ? (window.pageWidth - 110 - 50) / 2 : 200) + 'px'");
  1084. height: v-bind("(window.pageHeight > 600 ? (window.pageHeight - 150) : 450) + 'px'");
  1085. }
  1086. .query {
  1087. margin-left: 10px;
  1088. }
  1089. .prListDivClass {
  1090. height: v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'");
  1091. }
  1092. .btnDivClass {
  1093. display: block;
  1094. width: 100px;
  1095. margin-left: 10px;
  1096. margin-top: 180px;
  1097. }
  1098. .btnListClass {
  1099. margin-top: 10px;
  1100. }
  1101. .btnClass {
  1102. width: 100px;
  1103. }
  1104. </style>