| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="申请材料状态" |
| | | label="材料预审状态" |
| | | width="140" |
| | | align="center" |
| | | prop="checkstatus" |
| | |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click="handleUpdate(scope.row)" |
| | | v-hasPermi="['project:medicalfund:edit']" |
| | | >修改</el-button |
| | | > |
| | | <el-button |
| | |
| | | size="mini" |
| | | type="text" |
| | | @click="handleDelete(scope.row)" |
| | | v-hasPermi="['project:medicalfund:delete']" |
| | | ><span class="button-delete" |
| | | ><i class="el-icon-delete"></i>删除</span |
| | | ></el-button |
| | |
| | | type="text" |
| | | icon="el-icon-download" |
| | | @click="mixExport(scope.row.id)" |
| | | v-hasPermi="['project:medicalfund:download']" |
| | | >下载</el-button |
| | | > |
| | | </template> |
| | |
| | | clearable |
| | | style="width: 100%" |
| | | v-model="form.applyTime" |
| | | type="date" |
| | | type="date" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="申请日期" |
| | | > |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="税后金额" prop="pretaxcost"> |
| | | <el-input v-model="form.taxedcost" placeholder="税后金额合计" :disabled="true" /> |
| | | <el-form-item label="劳务税后" prop="pretaxcost"> |
| | | <el-input v-model="form.taxedcost" placeholder="劳务税后合计" :disabled="true" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | |
| | | <el-table-column |
| | | prop="taxamount" |
| | | align="center" |
| | | label="扣税" |
| | | label="劳务个税" |
| | | width="120" |
| | | v-if="form.applytype != '3'" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | | v-model="scope.row.taxamount" |
| | | placeholder="扣税" |
| | | placeholder="劳务个税" |
| | | @blur=" |
| | | val => { |
| | | sumTotalFee(scope.row); |
| | |
| | | <el-table-column |
| | | prop="taxedamount" |
| | | align="center" |
| | | label="税后金额" |
| | | label="劳务税后" |
| | | width="120" |
| | | v-if="form.applytype != '3'" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | | v-model="scope.row.taxedamount" |
| | | placeholder="税后金额" |
| | | placeholder="劳务税后" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | }); |
| | | }, |
| | | |
| | | //计算总金额 |
| | | //计算总金额(金额一律走精确运算,禁止 parseFloat 累加) |
| | | sumTotalFee(row) { |
| | | let allSum = 0; |
| | | const detailsArr = []; |
| | | if (this.form.applytype != null) { |
| | | for (let i = 0; i < this.fundDetails.length; i++) { |
| | | const detail = this.fundDetails[i]; |
| | | let totalFee = 0; |
| | | let taxFee = 0; |
| | | if (this.form.applytype == 1 || this.form.applytype == 2) { |
| | | //计算当前报销内容费用合计 |
| | | if (!isNaN(parseFloat(this.fundDetails[i].amount))) { |
| | | totalFee += parseFloat(this.fundDetails[i].amount); |
| | | taxFee += parseFloat(this.fundDetails[i].amount); |
| | | //计算当前报销内容费用合计:税前 - 扣税 |
| | | if (!isNaN(parseFloat(detail.amount))) { |
| | | totalFee = moneyAdd(totalFee, detail.amount); |
| | | taxFee = moneyAdd(taxFee, detail.amount); |
| | | } |
| | | if (!isNaN(parseFloat(this.fundDetails[i].taxamount))) { |
| | | totalFee -= parseFloat(this.fundDetails[i].taxamount); |
| | | taxFee -= parseFloat(this.fundDetails[i].taxamount); |
| | | if (!isNaN(parseFloat(detail.taxamount))) { |
| | | totalFee = moneySub(totalFee, detail.taxamount); |
| | | taxFee = moneySub(taxFee, detail.taxamount); |
| | | } |
| | | } else if (this.form.applytype == 3) { |
| | | if ( |
| | | !isNaN(parseFloat(this.fundDetails[i].price)) && |
| | | !isNaN(parseFloat(this.fundDetails[i].quantity)) |
| | | !isNaN(parseFloat(detail.price)) && |
| | | !isNaN(parseFloat(detail.quantity)) |
| | | ) { |
| | | totalFee += |
| | | parseFloat(this.fundDetails[i].price) * |
| | | parseFloat(this.fundDetails[i].quantity); |
| | | totalFee = moneyMul(detail.price, detail.quantity); |
| | | } |
| | | } |
| | | if (!isNaN(parseFloat(taxFee))) { |
| | | this.fundDetails[i].taxedamount = taxFee.toFixed(2); |
| | | this.fundDetails[i].taxedamount = moneyRound(taxFee).toFixed(2); |
| | | } |
| | | allSum += totalFee; |
| | | detailsArr.push(totalFee); |
| | | } |
| | | } |
| | | //this.form.amountrequested = allSum.toFixed(2); |
| | | this.$set(this.form, "amountrequested", allSum.toFixed(2)); |
| | | this.$set(this.form, "amountrequested", moneyRound(moneySum(detailsArr)).toFixed(2)); |
| | | //this.$forceUpdate(); |
| | | }, |
| | | |
| | |
| | | if (response.code == 200) { |
| | | this.form.filename = file.raw.name; |
| | | this.$modal.msgSuccess(response.msg); |
| | | this.fileList.push({ name: response.fileName, url: response.fileName }); |
| | | // 2026-10-15:列表里的 name 用操作人的原始文件名,不要用 response.fileName(那是存储路径)。 |
| | | // 保存时只回写 url(form.annexbankcard 存的是逗号拼接的 url),所以这里只影响上传框的显示。 |
| | | this.fileList.push({ name: file.raw.name, url: response.fileName }); |
| | | } else { |
| | | console.log(response.msg); |
| | | } |
| | | }, |
| | | // 下载文件 |
| | | // 预览/下载文件 |
| | | downFile(item) { |
| | | const ext = String(item.name || "") |
| | | .split(".") |
| | | .pop() |
| | | .toLowerCase(); |
| | | if (["pdf", "jpg", "jpeg", "png", "gif", "bmp", "webp"].includes(ext)) { |
| | | this.$previewFile([{ name: item.name, url: item.url }]); |
| | | return; |
| | | } |
| | | const url = process.env.VUE_APP_BASE_API + item.url; |
| | | var a = document.createElement("a"); |
| | | var event = new MouseEvent("click"); |