From 1511a7f94b1e3a88b4a54234ec144655a91eace7 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期二, 13 十月 2026 09:26:53 +0800
Subject: [PATCH] 政策文件管理
---
src/views/project/travelexpenseapply/travelexpensedetail/index.vue | 300 ++++++++++++++++++++++++++++++++++-------------------------
1 files changed, 171 insertions(+), 129 deletions(-)
diff --git a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue
index 1851048..5474545 100644
--- a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue
+++ b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -9,8 +9,8 @@
<el-date-picker
style="width: 100%"
v-model="form.applyTime"
- type="date"
- value-format="yyyy-MM-dd HH:mm:ss"
+ type="date" format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd"
placeholder="鐢宠鏃ユ湡"
:disabled="true"
>
@@ -369,8 +369,8 @@
size="small"
style="width: 100%"
v-model="scope.row.starttime"
- type="date"
- value-format="yyyy-MM-dd HH:mm:ss"
+ type="date" format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd"
placeholder="寮�濮嬫棩鏈�"
@blur="getdays(scope.row)"
>
@@ -401,8 +401,8 @@
size="small"
style="width: 100%"
v-model="scope.row.endtime"
- type="date"
- value-format="yyyy-MM-dd HH:mm:ss"
+ type="date" format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd"
placeholder="缁撴潫鏃ユ湡"
@blur="getdays(scope.row)"
>
@@ -848,8 +848,8 @@
<!--
<el-table-column prop="paiddate" slot="" label="鎵撴鏃ユ湡" fixed align="center" width="150">
<template slot-scope="scope">
- <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date"
- value-format="yyyy-MM-dd HH:mm:ss" placeholder="鎵撴鏃ユ湡" :disabled="true">
+ <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date" format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd" placeholder="鎵撴鏃ユ湡" :disabled="true">
</el-date-picker>
</template>
</el-table-column>-->
@@ -1282,7 +1282,8 @@
exportReimbursement,
getdownload,
checkfund,
- fundSubmit
+ fundSubmit,
+ listbypowerone
} from "@/api/project/reimbursement";
import {
addReimbursementdetail,
@@ -1304,6 +1305,7 @@
import { listReportname, listUser } from "@/api/project/organization";
import { getToken } from "@/utils/auth";
import debounce from "lodash/debounce";
+import { moneySum, moneyAdd, moneyRound } from "@/utils/money";
export default {
components: {
Treeselect,
@@ -1492,6 +1494,8 @@
flowconclusion: null,
fundid: null
},
+ //杩炵画瀹℃壒锛氬緟瀹℃壒鍒楄〃
+ pendingList: [],
jurisdiction: false,
//淇濆瓨鎸夐挳鎺у埗
@@ -2143,9 +2147,9 @@
if (tempStr == "鏉窞") {
row.otherexpense = "";
} else if (
- tempStr == "鏉窞-妗愬簮" ||
- tempStr == "鏉窞-寤哄痉" ||
- tempStr == "鏉窞-娣冲畨"
+ tempStr.includes("妗愬簮") ||
+ tempStr.includes("寤哄痉") ||
+ tempStr.includes("娣冲畨")
) {
row.otherexpense = (parseInt(row.days) * 60).toString();
} else {
@@ -2534,7 +2538,7 @@
.map(item => ({ url: item, name: item }))
: [];
//瀹℃牳鐘舵��
- this.form.recordstatus = response.data.recordstatus + "";
+ this.form.recordstatus = this.toStatusText(response.data.recordstatus, "-1");
let ids = response.data.id;
let listFundflowparams = {
fundid: ids,
@@ -2545,14 +2549,19 @@
});
//鎶ラ攢鏄庣粏
- getReimbursementdetaillist(ids).then(res => {
- this.rbDetails = res.data;
- //鍚堣璐圭敤
- // if (this.rbDetails.length > 0) this.sumTotalFee();
- for (let i = 0; i < this.rbDetails.length; i++) {
- this.sumRowFee(this.rbDetails[i]);
- }
- });
+ getReimbursementdetaillist(ids)
+ .then(res => {
+ this.rbDetails = this.normalizeDetailList(res);
+ //鍚堣璐圭敤
+ // if (this.rbDetails.length > 0) this.sumTotalFee();
+ for (let i = 0; i < this.rbDetails.length; i++) {
+ this.sumRowFee(this.rbDetails[i]);
+ }
+ })
+ .catch(err => {
+ this.rbDetails = [];
+ console.error("鑾峰彇鎶ラ攢鏄庣粏澶辫触,id=" + ids, err);
+ });
//浠樻淇℃伅
this.queryParamsPayee.rbid = ids;
@@ -2575,12 +2584,21 @@
this.reset();
this.open = true;
const id = ids || this.ids;
- this.checkObj.fundid = id;
+ // 閲嶇疆瀹℃壒淇℃伅锛岄伩鍏嶄笂涓�鍗曠殑瀹℃壒缁撴灉甯﹀叆涓嬩竴鍗�
+ this.checkObj = {
+ flowlevelone: null,
+ flowconclusion: null,
+ fundid: id
+ };
+
+ // 杩炵画瀹℃壒锛氬姞杞藉綋鍓嶇敤鎴风殑寰呭鎵瑰垪琛�
+ this.getPendingList();
getReimbursement(id).then(response => {
this.form = response.data;
console.log(this.form.checkstatus, "checkstatus");
- this.form.checkstatus = this.form.checkstatus.toString();
+ // checkstatus 鍦ㄥ簱涓彲涓虹┖锛堥瀹$姸鎬佸皻鏈骇鐢熸椂锛夛紝鐩存帴 toString 浼氭姏 TypeError 涓柇鍚庣画鍙栨暟
+ this.form.checkstatus = this.toStatusText(this.form.checkstatus, "-1");
//绁ㄦ嵁
this.fileListto = this.form.annexfiles
@@ -2607,16 +2625,22 @@
});
//鎶ラ攢鏄庣粏
- getReimbursementdetaillist(ids).then(res => {
- this.rbDetails = res.data;
- console.log(this.rbDetails);
+ getReimbursementdetaillist(ids)
+ .then(res => {
+ this.rbDetails = this.normalizeDetailList(res);
+ console.log("鎶ラ攢鏄庣粏琛屾暟锛�", this.rbDetails.length, this.rbDetails);
- //鍚堣璐圭敤
- // if (this.rbDetails.length > 0) this.sumTotalFee();
- for (let i = 0; i < this.rbDetails.length; i++) {
- this.sumRowFee(this.rbDetails[i]);
- }
- });
+ //鍚堣璐圭敤
+ // if (this.rbDetails.length > 0) this.sumTotalFee();
+ for (let i = 0; i < this.rbDetails.length; i++) {
+ this.sumRowFee(this.rbDetails[i]);
+ }
+ })
+ .catch(err => {
+ // 鍙栨暟澶辫触鏃朵笉鍐嶉潤榛橈細缃┖骞舵墦鍑哄師鍥狅紝閬垮厤鈥滄帴鍙f湁鏁版嵁浣嗛〉闈㈢┖鐧解�濇棤浠庢帓鏌�
+ this.rbDetails = [];
+ console.error("鑾峰彇鎶ラ攢鏄庣粏澶辫触,id=" + ids, err);
+ });
//浠樻淇℃伅
this.queryParamsPayee.rbid = ids;
@@ -2665,18 +2689,73 @@
if (res.code == 200) {
this.$modal.closeLoading();
this.$modal.msgSuccess("鎻愪氦瀹℃牳鎴愬姛!");
- // 鍏抽棴绐楀彛
- this.$store.dispatch("tagsView/delView", this.$route);
- this.$router.go(-1);
+ // 杩炵画瀹℃壒锛氳闂槸鍚︾户缁鎵逛笅涓�鍗�
+ this.continueOrExit();
} else {
this.$modal.closeLoading();
- if (res.msg) {
- this.$modal.msgError("鎿嶄綔澶辫");
- } else {
- this.$modal.msgError(res.msg);
- }
+ this.$modal.msgError(res.msg || "鎿嶄綔澶辫触");
}
});
+ },
+
+ // 鑾峰彇褰撳墠鐢ㄦ埛寰呭鎵瑰垪琛紙鐢ㄤ簬杩炵画瀹℃壒锛�
+ getPendingList() {
+ listbypowerone({
+ pageNum: 1,
+ pageSize: 1000,
+ CHECKFLAG: 1
+ })
+ .then(res => {
+ this.pendingList = res.rows || [];
+ })
+ .catch(() => {
+ this.pendingList = [];
+ });
+ },
+
+ // 瀹℃壒瀹屾垚鍚庯細璇㈤棶鏄惁缁х画瀹℃壒涓嬩竴鍗�
+ continueOrExit() {
+ const list = this.pendingList || [];
+ const curId = String(this.checkObj.fundid);
+ const idx = list.findIndex(item => String(item.id) === curId);
+ let next = null;
+ if (idx > -1 && idx + 1 < list.length) {
+ next = list[idx + 1];
+ } else {
+ // 褰撳墠宸叉槸鏈綅锛堟垨浠庝腑闂村紑濮嬶級锛屽彇鍓╀綑鍒楄〃涓涓�鏉¢潪褰撳墠鍗曟嵁
+ next = list.find(item => String(item.id) !== curId) || null;
+ }
+
+ if (next) {
+ this.$confirm("瀹℃壒宸插畬鎴愶紝鏄惁缁х画瀹℃壒涓嬩竴寮犲緟瀹℃壒鍗曟嵁锛�", "鎻愮ず", {
+ confirmButtonText: "缁х画瀹℃壒",
+ cancelButtonText: "杩斿洖鍒楄〃",
+ type: "info"
+ })
+ .then(() => {
+ // 鐩存帴鍦ㄥ綋鍓嶉〉闈㈠姞杞戒笅涓�寮犲緟瀹℃壒鍗曟嵁
+ this.handleCheck(next.id);
+ // 鍚屾鏇存柊鍦板潃鏍忥紝閬垮厤鍒锋柊鍚庡洖鍒颁笂涓�鍗�
+ this.$router
+ .replace({
+ path: this.$route.path,
+ query: { id: next.id, pos: 4 }
+ })
+ .catch(() => {});
+ })
+ .catch(() => {
+ this.exitToPage();
+ });
+ } else {
+ this.$modal.msgSuccess("宸叉棤寰呭鎵瑰崟鎹紝杩斿洖鍒楄〃");
+ this.exitToPage();
+ }
+ },
+
+ // 杩斿洖鍒楄〃椤�
+ exitToPage() {
+ this.$store.dispatch("tagsView/delView", this.$route);
+ this.$router.go(-1);
},
/** 鎻愪氦淇濆瓨鎸夐挳 */
@@ -3180,108 +3259,71 @@
});
},
- //璁$畻涓�琛屽悎璁�
- //璁$畻褰撳墠琛屾姤閿�鍐呭璐圭敤鍚堣
- sumRowFee(row) {
- let totalFee = 0;
- if (!isNaN(parseFloat(row.trafficexpense))) {
- totalFee += parseFloat(row.trafficexpense);
+ /**
+ * 鐘舵�佺被瀛楁杞瓧绗︿覆锛堟帴鍙e彲鑳借繑鍥� null锛夈��
+ *
+ * 鑳屾櫙锛歝heckstatus銆乺ecordstatus 绛夊湪搴撲腑鍙┖锛屾棭鏈熺洿鎺ヨ皟鐢� .toString()
+ * 浼氭姏 TypeError 骞朵腑鏂叾鍚庣殑鍙栨暟閫昏緫锛岃〃鐜颁负鈥滄帴鍙e凡鏈夋暟鎹絾鏄庣粏鍖虹┖鐧解�濄��
+ *
+ * @param {*} value 鍘熷鐘舵�佸��
+ * @param {string} fallback 涓虹┖鏃剁殑鍏滃簳鍊�
+ * @returns {string}
+ */
+ toStatusText(value, fallback) {
+ if (value === null || value === undefined || value === "") {
+ return fallback;
}
- if (!isNaN(parseFloat(row.cityfee))) {
- totalFee += parseFloat(row.cityfee);
- }
- if (!isNaN(parseFloat(row.hotelexpense))) {
- totalFee += parseFloat(row.hotelexpense);
- }
- if (!isNaN(parseFloat(row.otherexpense))) {
- totalFee += parseFloat(row.otherexpense);
- }
- if (!isNaN(parseFloat(row.foodexpenses))) {
- totalFee += parseFloat(row.foodexpenses);
- }
- if (!isNaN(parseFloat(row.foodallowance))) {
- totalFee += parseFloat(row.foodallowance);
- }
- if (!isNaN(parseFloat(row.otherfeeamount))) {
- totalFee += parseFloat(row.otherfeeamount);
- }
- row.total = totalFee.toFixed(2);
+ return String(value);
+ },
- /*
- if (!isNaN(parseFloat(this.rbDetails[rowIndex].trafficexpense))) {
- totalFee += parseFloat(this.rbDetails[rowIndex].trafficexpense);
+ /**
+ * 缁熶竴浠庢槑缁嗘帴鍙e搷搴斾腑鍙栧嚭鏁扮粍銆�
+ *
+ * 姝e父涓� AjaxResult 鐨� data 鏁扮粍锛涜嫢鍚庣鏀逛负鍒嗛〉缁撴瀯锛坱otal + rows锛夛紝
+ * res.data 灏嗕笉鏄暟缁勶紝鐩存帴缁戝畾鍒� el-table 浼氬鑷粹�滄湁鏁版嵁浣嗕笉鏄剧ず鈥濄��
+ *
+ * @param {Object} res 鎺ュ彛鍘熷鍝嶅簲
+ * @returns {Array} 鏄庣粏鏁扮粍锛堝紓甯告椂涓虹┖鏁扮粍锛屼笉浼氳琛ㄦ牸鎷垮埌闈炴暟缁勶級
+ */
+ normalizeDetailList(res) {
+ if (!res) {
+ return [];
}
- if (!isNaN(parseFloat(this.rbDetails[rowIndex].cityfee))) {
- totalFee += parseFloat(this.rbDetails[rowIndex].cityfee);
+ if (Array.isArray(res.data)) {
+ return res.data;
}
- if (!isNaN(parseFloat(this.rbDetails[rowIndex].hotelexpense))) {
- totalFee += parseFloat(this.rbDetails[rowIndex].hotelexpense);
+ if (Array.isArray(res.rows)) {
+ return res.rows;
}
- if (!isNaN(parseFloat(this.rbDetails[rowIndex].otherexpense))) {
- totalFee += parseFloat(this.rbDetails[rowIndex].otherexpense);
- }
- if (!isNaN(parseFloat(this.rbDetails[rowIndex].foodexpenses))) {
- totalFee += parseFloat(this.rbDetails[rowIndex].foodexpenses);
- }
- if (!isNaN(parseFloat(this.rbDetails[rowIndex].foodallowance))) {
- totalFee += parseFloat(this.rbDetails[rowIndex].foodallowance);
- }
- if (!isNaN(parseFloat(this.rbDetails[rowIndex].otherfeeamount))) {
- totalFee += parseFloat(this.rbDetails[rowIndex].otherfeeamount);
- }
- this.rbDetails[rowIndex].total = parseFloat(totalFee).toFixed(2);
- this.$set(this.rbDetails, rowIndex, this.rbDetails[rowIndex]);
- */
+ return [];
+ },
+
+ //璁$畻涓�琛屽悎璁�
+ //璁$畻褰撳墠琛屾姤閿�鍐呭璐圭敤鍚堣锛堥噾棰濅竴寰嬭蛋绮剧‘杩愮畻锛�
+ sumRowFee(row) {
+ const totalFee = moneySum([
+ row.trafficexpense,
+ row.cityfee,
+ row.hotelexpense,
+ row.otherexpense,
+ row.foodexpenses,
+ row.foodallowance,
+ row.otherfeeamount
+ ]);
+ row.total = moneyRound(totalFee).toFixed(2);
+
//閲嶆柊璁$畻鏁翠釜鎶ラ攢鍗曠殑鍚堣
this.sumTotalFee();
},
//璁$畻璐圭敤鍚堣
sumTotalFee() {
- let allSum = 0;
-
- //鎹愮尞鑰呭灞炶垂鐢�
- if (!isNaN(parseFloat(this.form.donoramount))) {
- allSum += parseFloat(this.form.donoramount);
- }
-
//鎶ラ攢鏄庣粏璐圭敤
try {
- for (let i = 0; i < this.rbDetails.length; i++) {
- /*
- let totalFee = 0;
- //璁$畻褰撳墠鎶ラ攢鍐呭璐圭敤鍚堣
- if (!isNaN(parseFloat(this.rbDetails[i].total))) {
- totalFee += parseFloat(this.rbDetails[i].total);
- }
- if (!isNaN(parseFloat(this.rbDetails[i].cityfee))) {
- totalFee += parseFloat(this.rbDetails[i].cityfee);
- }
- if (!isNaN(parseFloat(this.rbDetails[i].hotelexpense))) {
- totalFee += parseFloat(this.rbDetails[i].hotelexpense);
- }
- if (!isNaN(parseFloat(this.rbDetails[i].otherexpense))) {
- totalFee += parseFloat(this.rbDetails[i].otherexpense);
- }
- if (!isNaN(parseFloat(this.rbDetails[i].foodexpenses))) {
- totalFee += parseFloat(this.rbDetails[i].foodexpenses);
- }
- if (!isNaN(parseFloat(this.rbDetails[i].foodallowance))) {
- totalFee += parseFloat(this.rbDetails[i].foodallowance);
- }
- if (!isNaN(parseFloat(this.rbDetails[i].otherfeeamount))) {
- totalFee += parseFloat(this.rbDetails[i].otherfeeamount);
- }
- this.rbDetails[i].total = parseFloat(totalFee).toFixed(2);
- this.$set(this.rbDetails, i, this.rbDetails[i]);
- */
-
- if (!isNaN(parseFloat(this.rbDetails[i].total))) {
- allSum += parseFloat(this.rbDetails[i].total);
- }
- }
-
- this.form.amountrequested = allSum.toFixed(2);
+ this.form.amountrequested = moneyAdd(
+ moneySum(this.rbDetails, "total"),
+ this.form.donoramount
+ ).toFixed(2);
this.form.bigstrmoney = this.convertCurrency(this.form.amountrequested);
} catch { }
},
--
Gitblit v1.9.3