From 482d0052a3cba93f5d3b2adf331650932b481da9 Mon Sep 17 00:00:00 2001
From: hongchao <3228015117@qq.com>
Date: Sat, 15 Feb 2025 17:00:43 +0800
Subject: [PATCH] =?UTF-8?q?=E5=87=8F=E5=85=8D=E8=B4=B9=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/cost/cost.js | 18 +-
src/views/material/cost/costDecreaseList.vue | 557 +++++++++++--------
2 files changed, 332 insertions(+), 243 deletions(-)
diff --git a/src/api/cost/cost.js b/src/api/cost/cost.js
index 2b9e393b..2c83c50f 100644
--- a/src/api/cost/cost.js
+++ b/src/api/cost/cost.js
@@ -83,7 +83,23 @@ export function costExamine(params){
})
}
-
+// 查询减免费用列表
+export function getReliefList(query) {
+ return request({
+ url: '/material/slt_agreement_reduce/applyByParam',
+ method: 'get',
+ params: query
+ })
+}
+
+// 减免费用提交
+export function addRelief(params){
+ return request({
+ url: '/material/slt_agreement_reduce/addApply',
+ method: 'post',
+ data: params
+ })
+}
diff --git a/src/views/material/cost/costDecreaseList.vue b/src/views/material/cost/costDecreaseList.vue
index 0ea39a07..c182ed32 100644
--- a/src/views/material/cost/costDecreaseList.vue
+++ b/src/views/material/cost/costDecreaseList.vue
@@ -21,6 +21,10 @@
/>
+
+
+
+
{{ scope.$index+1 }}
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
+
@@ -137,10 +141,10 @@
-
+
-
+
-
-
+
+
小计:
-
-
+
+
-
+
-
+
-
-
+
+
- {{ scope.row.deCosts.toFixed(2) }}
+ {{ scope.row.reduceLeaseMoney.toFixed(2) }}
@@ -295,7 +302,7 @@ import {
getUnitList,
getAgreementInfoById,
} from '@/api/back/index.js'
-import {getPushReviewList,getLeaseList,getRepairList,getLoseList,getScrapList } from "@/api/costPush/costPush";
+import {getReliefList,addRelief } from "@/api/cost/cost";
import {downloadFile, downloadFileData} from '@/utils/download'
import {getToken} from '@/utils/auth'
import Treeselect from "@riophae/vue-treeselect";
@@ -330,7 +337,7 @@ export default {
//合计
moneyAll: 0,
//租赁合计
- leaseAll: 0.00,
+ leaseAll: 0,
// 查询参数
queryParams: {
@@ -338,7 +345,7 @@ export default {
projectId: null,
agreementId: '',
agreementCode: '',
- time:'',
+ time:null,
},
// 多选框选中数据
@@ -351,16 +358,16 @@ export default {
showApply: false,
dialogLeaseList: [], //租赁费用列表
dialogAppy: {
- decreaseStartTime: undefined,
- decreaseEndTime: undefined,
+ reduceStartTime: undefined,
+ reduceEndTime: undefined,
reason: '',
decreaseFile: [],
},
rules: {
- decreaseStartTime: [
+ reduceStartTime: [
{ required: true, message: "请选择减免开始日期", trigger: "change" },
],
- decreaseEndTime: [
+ reduceEndTime: [
{ required: true, message: "请选择减免结束日期", trigger: "change" },
],
reason: [
@@ -401,7 +408,15 @@ export default {
},
},
components: { Treeselect },
- methods: {
+ methods: {
+ getRowClassName({ row, rowIndex }) {
+ if (this.dialogAppy.reduceStartTime && this.dialogAppy.reduceEndTime) {
+ if ((!row.reduceStartTime || !row.reduceEndTime)&&rowIndex!=this.applyList.length-1) {
+ return 'highlight-row'
+ }
+ }
+ return '';
+ },
//多选框选中数据
handleSelectionChange(val) {
@@ -477,70 +492,78 @@ export default {
/** 查询列表 */
- getList() {
+ async getList() {
this.loading = true;
- this.pushReviewList = [
- {
- id:1,
- deviceName: '小吊绳',
- typeName: '200m',
- unit: '根',
- leasePrice: 3.00,
- num: 10,
- startTime: '2025-01-07',
- backNum: '1',
- endTime: '2025-01-23',
- leaseDays: 17,
- costs: 510.00,
- },
- {
- id:2,
- deviceName: '牵引绳卡线器',
- typeName: 'φ11~15',
- unit: '把',
- leasePrice: 0.9,
- num: 26,
- startTime: '2025-01-06',
- backNum: '1',
- endTime: '2025-01-23',
- leaseDays: 18,
- costs: 421.20,
- },
- {
- id:3,
- deviceName: '挡土地锚',
- typeName: 'DTDM-1',
- unit: '只',
- leasePrice: 0.04,
- num: 76,
- startTime: '2025-01-07',
- backNum: '1',
- endTime: '2025-01-23',
- leaseDays: 17,
- costs: 51.68,
- },
- ];
- this.leaseAll = this.pushReviewList.reduce((total, item) => {
- return total + Number(item.costs);
- }, 0);
- let obj = {
- id:null,
- costs: this.leaseAll,
- }
- this.pushReviewList.push(obj)
- // getPushReviewList(this.queryParams).then((response) => {
- // this.pushReviewList = response.rows;
- // this.originalMonthTrue = this.queryParams.month;
- // let obj = {
- // leaseMoney: this.leaseAll,
- // repairMoney: this.repairAll,
- // scrapMoney: this.scrapAll,
- // loseMoney: this.loseAll,
- // money: this.moneyAll,
- // }
- // this.pushReviewList.push(obj)
- // this.loading = false;
- // });
+ // this.pushReviewList = [
+ // {
+ // id:1,
+ // deviceName: '小吊绳',
+ // typeName: '200m',
+ // unit: '根',
+ // leasePrice: 3.00,
+ // num: 10,
+ // startTime: '2025-01-07',
+ // backNum: '1',
+ // endTime: null,
+ // leaseDays: 17,
+ // costs: 510.00,
+ // },
+ // {
+ // id:2,
+ // deviceName: '牵引绳卡线器',
+ // typeName: 'φ11~15',
+ // unit: '把',
+ // leasePrice: 0.9,
+ // num: 26,
+ // startTime: '2025-01-06',
+ // backNum: '1',
+ // endTime: '2025-01-23',
+ // leaseDays: 18,
+ // costs: 421.20,
+ // },
+ // {
+ // id:3,
+ // deviceName: '挡土地锚',
+ // typeName: 'DTDM-1',
+ // unit: '只',
+ // leasePrice: 0.04,
+ // num: 76,
+ // startTime: '2025-01-07',
+ // backNum: '1',
+ // endTime: '2025-01-23',
+ // leaseDays: 17,
+ // costs: 51.68,
+ // },
+ // ];
+ // this.leaseAll = this.pushReviewList.reduce((total, item) => {
+ // return total + Number(item.costs);
+ // }, 0);
+ // let obj = {
+ // id:null,
+ // costs: this.leaseAll,
+ // }
+ // this.pushReviewList.push(obj)
+
+ const params = {
+ deviceName: this.queryParams.deviceName,
+ typeName: this.queryParams.typeName,
+ agreementId: this.queryParams.agreementId,
+ startTime: this.queryParams.time && this.queryParams.time[0],
+ endTime: this.queryParams.time && this.queryParams.time[1],
+ }
+
+ getReliefList(params).then((response) => {
+ this.pushReviewList = response.data;
+ console.log('22222222',this.pushReviewList)
+ this.leaseAll = this.pushReviewList.reduce((total, item) => {
+ return total + Number(item.leaseMoney);
+ }, 0);
+ let obj = {
+ id:null,
+ leaseMoney: this.leaseAll,
+ }
+ this.pushReviewList.push(obj)
+ });
this.loading = false;
},
@@ -554,6 +577,7 @@ export default {
agreementCode: '',
}
this.resetForm('queryForm')
+ this.queryParams.time=[]
this.handleQuery()
},
@@ -588,17 +612,17 @@ export default {
if (this.ids.includes(item.id)) {
// 创建对象的副本
const newItem = { ...item };
- this.$set(newItem, 'decreaseNum', newItem.num);
- this.$set(newItem, 'deDays', 0);
- this.$set(newItem, 'deCosts', 0);
+ this.$set(newItem, 'reduceNum', newItem.num);
+ this.$set(newItem, 'reduceDays', 0);
+ this.$set(newItem, 'reduceLeaseMoney', 0);
this.applyList.push(newItem)
}
});
//添加结尾合计
let obj = {
id:0,
- decreaseNum: 0,
- deCosts: 0,
+ reduceNum: 0,
+ reduceLeaseMoney: 0,
}
this.applyList.push(obj)
this.showApply = true;
@@ -758,69 +782,73 @@ export default {
// 更新表格中所有数据的减免开始时间
updateTableStartTime() {
- const pickStartTime = new Date(this.dialogAppy.decreaseStartTime);
+ const pickStartTime = new Date(this.dialogAppy.reduceStartTime);
this.applyList.slice(0,-1).forEach(item => {
- if(pickStartTime < new Date(item.startTime) || pickStartTime > new Date(item.endTime)){
- this.$set(item, 'decreaseStartTime', null);
+ let validEndTime = item.endTime ? new Date(item.endTime) : new Date();
+ if(pickStartTime < new Date(item.startTime) || pickStartTime > validEndTime){
+ this.$set(item, 'reduceStartTime', null);
}else{
- this.$set(item, 'decreaseStartTime', this.dialogAppy.decreaseStartTime);
+ this.$set(item, 'reduceStartTime', this.dialogAppy.reduceStartTime);
}
- // item.decreaseStartTime = this.dialogAppy.decreaseStartTime;
+ // item.reduceStartTime = this.dialogAppy.reduceStartTime;
});
- if (this.dialogAppy.decreaseEndTime) {
+ if (this.dialogAppy.reduceEndTime) {
this.applyList.slice(0,-1).forEach(item => {
- const startTime = new Date(item.decreaseStartTime);
- const endTime = new Date(item.decreaseEndTime);
- if (!isNaN(startTime.getTime()) && !isNaN(endTime.getTime()) && startTime.getTime()!=0 && endTime.getTime()!=0 && endTime.getTime() > startTime.getTime()) {
+ const startTime = new Date(item.reduceStartTime);
+ const endTime = new Date(item.reduceEndTime);
+ if (!isNaN(startTime) && !isNaN(endTime) && startTime.getTime()!=0 && endTime.getTime()!=0 && endTime.getTime() >= startTime.getTime()) {
const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
- const diffDays = Math.round(Math.abs((endTime - startTime) / oneDay));
- this.$set(item, 'deDays', diffDays);
- if(item.decreaseNum && item.deDays && item.leasePrice){
- this.$set(item, 'deCosts', item.deDays*item.leasePrice*item.decreaseNum);
+ const diffDays = Math.ceil(Math.abs((endTime - startTime) / oneDay)) + (endTime - startTime === 0 ? 1 : 1);
+ this.$set(item, 'reduceDays', diffDays);
+ if(item.reduceNum && item.reduceDays && item.leasePrice){
+ this.$set(item, 'reduceLeaseMoney', item.reduceDays*item.leasePrice*item.reduceNum);
}
// row.leaseDays = diffDays;
}else {
+ this.$set(item, 'reduceStartTime', null);
// 如果日期无效,将减免天数设为 0 或者清空
- this.$set(item, 'deDays', 0);
- this.$set(item, 'deCosts', 0);
+ this.$set(item, 'reduceDays', 0);
+ this.$set(item, 'reduceLeaseMoney', 0);
}
- this.applyList[this.applyList.length-1].deCosts = this.applyList.slice(0,-1).reduce((total, item) => {
- return total + Number(item.deCosts);
+ this.applyList[this.applyList.length-1].reduceLeaseMoney = this.applyList.slice(0,-1).reduce((total, item) => {
+ return total + Number(item.reduceLeaseMoney);
}, 0);
});
}
},
// 更新表格中所有数据的减免结束时间
updateTableEndTime() {
- const pickEndTime = new Date(this.dialogAppy.decreaseEndTime);
+ const pickEndTime = new Date(this.dialogAppy.reduceEndTime);
this.applyList.slice(0,-1).forEach(item => {
- if(pickEndTime < new Date(item.startTime) || pickEndTime > new Date(item.endTime)){
- this.$set(item, 'decreaseEndTime', null);
+ let validEndTime = item.endTime ? new Date(item.endTime) : new Date();
+ if(pickEndTime < new Date(item.startTime) || pickEndTime > validEndTime){
+ this.$set(item, 'reduceEndTime', null);
}else{
- this.$set(item, 'decreaseEndTime', this.dialogAppy.decreaseEndTime);
+ this.$set(item, 'reduceEndTime', this.dialogAppy.reduceEndTime);
}
- // item.decreaseStartTime = this.dialogAppy.decreaseStartTime;
+ // item.reduceStartTime = this.dialogAppy.reduceStartTime;
});
- if (this.dialogAppy.decreaseStartTime) {
+ if (this.dialogAppy.reduceStartTime) {
this.applyList.slice(0,-1).forEach(item => {
- const startTime = new Date(item.decreaseStartTime);
- const endTime = new Date(item.decreaseEndTime);
- if (!isNaN(startTime.getTime()) && !isNaN(endTime.getTime()) && startTime.getTime()!=0 && endTime.getTime()!=0 && endTime.getTime() > startTime.getTime()) {
+ const startTime = new Date(item.reduceStartTime);
+ const endTime = new Date(item.reduceEndTime);
+ if (!isNaN(startTime) && !isNaN(endTime) && startTime.getTime()!=0 && endTime.getTime()!=0 && endTime.getTime() >= startTime.getTime()) {
const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
- const diffDays = Math.round(Math.abs((endTime - startTime) / oneDay));
- this.$set(item, 'deDays', diffDays);
- if(item.decreaseNum && item.deDays && item.leasePrice){
+ const diffDays = Math.ceil(Math.abs((endTime - startTime) / oneDay)) + (endTime - startTime === 0 ? 1 : 1);
+ this.$set(item, 'reduceDays', diffDays);
+ if(item.reduceNum && item.reduceDays && item.leasePrice){
- this.$set(item, 'deCosts', item.deDays*item.leasePrice*item.decreaseNum);
+ this.$set(item, 'reduceLeaseMoney', item.reduceDays*item.leasePrice*item.reduceNum);
}
// row.leaseDays = diffDays;
}else {
+ this.$set(item, 'reduceEndTime', null);
// 如果日期无效,将减免天数设为 0 或者清空
- this.$set(item, 'deDays', 0);
- this.$set(item, 'deCosts', 0);
+ this.$set(item, 'reduceDays', 0);
+ this.$set(item, 'reduceLeaseMoney', 0);
}
- this.applyList[this.applyList.length-1].deCosts = this.applyList.slice(0,-1).reduce((total, item) => {
- return total + Number(item.deCosts);
+ this.applyList[this.applyList.length-1].reduceLeaseMoney = this.applyList.slice(0,-1).reduce((total, item) => {
+ return total + Number(item.reduceLeaseMoney);
}, 0);
});
}
@@ -828,89 +856,115 @@ export default {
//table中时间改变
updateLeaseDaysStart(row) {
- const startTime = new Date(row.decreaseStartTime);
- const endTime = new Date(row.decreaseEndTime);
- const pickStartTime = new Date(row.startTime);
- const pickEndTime = new Date(row.endTime);
-
+ const startTime = new Date(row.reduceStartTime);
+ const startTimeTemp = row.reduceStartTime
+ console.log('1111111111111',startTime)
+ const endTime = new Date(row.reduceEndTime);
+ const endTimeTemp = row.reduceEndTime
+ let pickStartTime = new Date(row.startTime);
+ let pickEndTime = null;
+ if(row.endTime==null){
+ pickEndTime = new Date();
+ }else{
+ pickEndTime = new Date(row.endTime);
+ }
// 判断减免开始时间和结束时间是否在领料日期和退料日期之间
if (startTime < pickStartTime || startTime > pickEndTime) {
- this.$set(row, 'decreaseStartTime', null);
- this.$set(row, 'deDays', 0);
- this.$set(row, 'deCosts', 0);
- this.$modal.msgError('请选择有效的减免开始时间!')
- }else if (!isNaN(startTime.getTime()) && !isNaN(endTime.getTime()) && startTime.getTime()!=0 && endTime.getTime()!=0 && endTime.getTime() > startTime.getTime()) {
+ console.log('2222222222222',startTime, pickStartTime, pickEndTime)
+ this.$set(row, 'reduceStartTime', null);
+ this.$set(row, 'reduceDays', 0);
+ this.$set(row, 'reduceLeaseMoney', 0);
+ this.$modal.msgError('请选择有效的减免开始时间!!')
+ }else if (startTimeTemp!=null && endTimeTemp!=null && startTime.getTime()!=0 && endTime.getTime()!=0 && endTime.getTime() >= startTime.getTime()) {
const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
- const diffDays = Math.round(Math.abs((endTime - startTime) / oneDay));
- this.$set(row, 'deDays', diffDays);
- if(row.decreaseNum && row.deDays && row.leasePrice){
- this.$set(row, 'deCosts', row.deDays*row.leasePrice*row.decreaseNum);
+ const diffDays = Math.ceil(Math.abs((endTime - startTime) / oneDay)) + (endTime - startTime === 0 ? 1 : 1);
+ this.$set(row, 'reduceDays', diffDays);
+ if(row.reduceNum && row.reduceDays && row.leasePrice){
+ this.$set(row, 'reduceLeaseMoney', row.reduceDays*row.leasePrice*row.reduceNum);
}
// row.leaseDays = diffDays;
- }else {
+ }else if(endTimeTemp!=null && endTime.getTime() {
- return total + Number(item.deCosts);
+ this.applyList[this.applyList.length-1].reduceLeaseMoney = this.applyList.slice(0,-1).reduce((total, item) => {
+ return total + Number(item.reduceLeaseMoney);
}, 0);
},
updateLeaseDaysEnd(row) {
- const startTime = new Date(row.decreaseStartTime);
- const endTime = new Date(row.decreaseEndTime);
- const pickStartTime = new Date(row.startTime);
- const pickEndTime = new Date(row.endTime);
-
+ const startTime = new Date(row.reduceStartTime);
+ const startTimeTemp = row.reduceStartTime
+ const endTimeTemp = row.reduceEndTime
+ const endTime = new Date(row.reduceEndTime);
+ let pickStartTime = new Date(row.startTime);
+ let pickEndTime = null;
+ if(row.endTime==null){
+ pickEndTime = new Date();
+ }else{
+ pickEndTime = new Date(row.endTime);
+ }
// 判断减免开始时间和结束时间是否在领料日期和退料日期之间
if( endTime < pickStartTime || endTime > pickEndTime){
- this.$set(row, 'decreaseEndTime', null);
- this.$set(row, 'deDays', 0);
- this.$set(row, 'deCosts', 0);
+ this.$set(row, 'reduceEndTime', null);
+ this.$set(row, 'reduceDays', 0);
+ this.$set(row, 'reduceLeaseMoney', 0);
this.$modal.msgError('请选择有效的减免结束时间!')
- }else if (!isNaN(startTime.getTime()) && !isNaN(endTime.getTime()) && startTime.getTime()!=0 && endTime.getTime()!=0 && endTime.getTime() > startTime.getTime()) {
+ }else if (startTimeTemp!=null && endTimeTemp!=null && startTime.getTime()!=0 && endTime.getTime()!=0 && endTime.getTime() >= startTime.getTime()) {
const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
- const diffDays = Math.round(Math.abs((endTime - startTime) / oneDay));
- this.$set(row, 'deDays', diffDays);
- if(row.decreaseNum && row.deDays && row.leasePrice){
- this.$set(row, 'deCosts', row.deDays*row.leasePrice*row.decreaseNum);
+ const diffDays = Math.ceil(Math.abs((endTime - startTime) / oneDay)) + (endTime - startTime === 0 ? 1 : 1);
+ // const diffDays = Math.round(Math.abs((endTime - startTime) / oneDay));
+ this.$set(row, 'reduceDays', diffDays);
+ if(row.reduceNum && row.reduceDays && row.leasePrice){
+ this.$set(row, 'reduceLeaseMoney', row.reduceDays*row.leasePrice*row.reduceNum);
}
// row.leaseDays = diffDays;
- }else {
+ }else if(startTimeTemp!=null && endTime.getTime() {
- return total + Number(item.deCosts);
+ this.applyList[this.applyList.length-1].reduceLeaseMoney = this.applyList.slice(0,-1).reduce((total, item) => {
+ return total + Number(item.reduceLeaseMoney);
}, 0);
},
//table中数量改变
updateLeaseNum(row) {
- if (row.decreaseNum > row.num) {
+ if (row.reduceNum > row.num) {
this.$message.error('减免数量不能大于领料数量');
}else{
- if(row.decreaseNum && row.leasePrice && row.deDays){
- this.$set(row, 'deCosts', row.deDays*row.leasePrice*row.decreaseNum);
+ if(row.reduceNum && row.leasePrice && row.reduceDays){
+ this.$set(row, 'reduceLeaseMoney', row.reduceDays*row.leasePrice*row.reduceNum);
}
- this.applyList[this.applyList.length-1].deCosts = this.applyList.slice(0,-1).reduce((total, item) => {
- return total + Number(item.deCosts);
+ this.applyList[this.applyList.length-1].reduceLeaseMoney = this.applyList.slice(0,-1).reduce((total, item) => {
+ return total + Number(item.reduceLeaseMoney);
}, 0);
}
},
//减免申请确认按钮
- submitForm() {
+ submitForm() {
this.$refs.dialogAppy.validate((valid) => {
if (valid) {
- let index =this.applyList.slice(0,-1).findIndex(item=>new Date(item.decreaseEndTime).getTime() < new Date(item.decreaseStartTime).getTime())
- let index2 =this.applyList.slice(0,-1).findIndex(item=>item.decreaseNum > item.num)
- let index3 =this.applyList.slice(0,-1).findIndex(item=>item.decreaseNum == 0)
- let index4 =this.applyList.slice(0,-1).findIndex(item=>isNaN(new Date(item.decreaseStartTime).getTime()) || new Date(item.decreaseStartTime).getTime()==0)
- let index5 =this.applyList.slice(0,-1).findIndex(item=>isNaN(new Date(item.decreaseEndTime).getTime()) || new Date(item.decreaseEndTime).getTime()==0)
+ let index =this.applyList.slice(0,-1).findIndex(item=>new Date(item.reduceEndTime).getTime() < new Date(item.reduceStartTime).getTime())
+ let index2 =this.applyList.slice(0,-1).findIndex(item=>item.reduceNum > item.num)
+ let index3 =this.applyList.slice(0,-1).findIndex(item=>item.reduceNum == 0)
+ let index4 =this.applyList.slice(0,-1).findIndex(item=>isNaN(new Date(item.reduceStartTime).getTime()) || new Date(item.reduceStartTime).getTime()==0)
+ let index5 =this.applyList.slice(0,-1).findIndex(item=>isNaN(new Date(item.reduceEndTime).getTime()) || new Date(item.reduceEndTime).getTime()==0)
if(index3>-1){
this.$modal.msgError('减免数量不能为0!')
}else if(index4>-1){
@@ -922,6 +976,18 @@ export default {
}else if(index>-1){
this.$modal.msgError('减免结束时间不能小于减免开始时间!')
}else{
+ const param = {
+ agreementId: this.queryParams.agreementId,
+ detailList: this.applyList.slice(0,-1),
+ }
+ addRelief(param).then((response) => {
+ if (response.code == 200) {
+ this.$modal.msgSuccess("驳回成功");
+ this.confirmShow = false;
+ this.getList();
+ this.$refs.multipleTable.clearSelection();
+ }
+ });
this.$message({
type: 'success',
message: '提交成功!',
@@ -948,6 +1014,12 @@ export default {
};
\ No newline at end of file