Commit c8c0cac4 authored by danfuman's avatar danfuman

修改

parent 547fe1e7
......@@ -274,6 +274,13 @@ export const pushFeedSummaryRowsApi = (data) => request({
data
});
//修改工程用量
export const editEngineeringQuantityApi = (data) => request({
url: "/cb/quantity/summary/editEngineeringQuantity",
method: "POST",
data
});
//工程项目信息
......@@ -383,8 +390,8 @@ export const getFieldExpensesOtherListApi = (params = {}) => request({
/**
* 成本汇总左侧一级菜单
* @param {*} params
* @returns
* @param {*} params
* @returns
*/
export const getCostSummaryMenuTreeApi = (params = {}) => request({
url: "/cbSummary/cbNameList",
......@@ -394,8 +401,8 @@ export const getCostSummaryMenuTreeApi = (params = {}) => request({
/**
* 成本汇总已添加成本月份
* @param {*} params
* @returns
* @param {*} params
* @returns
*/
export const getCostSummaryMonthListApi = (params = {}) => request({
url: "/cbSummary/expenseDateList",
......@@ -405,8 +412,8 @@ export const getCostSummaryMonthListApi = (params = {}) => request({
/**
* 获取成本汇总数据列表 懒加载
* @param {*} params
* @returns
* @param {*} params
* @returns
*/
export const getCostSummaryListApi = (params = {}) => request({
url: "/cbSummary/list",
......@@ -416,8 +423,8 @@ export const getCostSummaryListApi = (params = {}) => request({
/**
* 获取全量成本汇总列表
* @param {*} params
* @returns
* @param {*} params
* @returns
*/
export const getCostSummaryAllListApi = (params = {}) => request({
url: "/cbSummary/allList",
......@@ -427,8 +434,8 @@ export const getCostSummaryAllListApi = (params = {}) => request({
/**
* 锁定成本前提示未填项
* @param {*} params
* @returns
* @param {*} params
* @returns
*/
export const validateBeforeCostLockApi = (params = {}) => request({
url: "/cbSummary/getUnfilled",
......@@ -438,8 +445,8 @@ export const validateBeforeCostLockApi = (params = {}) => request({
/**
* 确定锁定成本
* @param {*} data
* @returns
* @param {*} data
* @returns
*/
export const setCostLockApi = (data = {}) => request({
url: "/cbSummary/lockActual",
......@@ -449,8 +456,8 @@ export const setCostLockApi = (data = {}) => request({
/**
* 获取已经锁定成本月份
* @param {*} params
* @returns
* @param {*} params
* @returns
*/
export const getLockMonthListApi = (params = {}) => request({
url: "/cbSummary/expenseDateList/locked",
......@@ -460,8 +467,8 @@ export const getLockMonthListApi = (params = {}) => request({
/**
* 成本汇总导出
* @param {*} data
* @returns
* @param {*} data
* @returns
*/
export const exportCostLockExcelApi = (data = {}) => request({
url: "/cbSummary/export",
......@@ -473,8 +480,8 @@ export const exportCostLockExcelApi = (data = {}) => request({
/**
* 编辑成本 保存成本
* @param {*} data
* @returns
* @param {*} data
* @returns
*/
export const saveCostModifyApi = (data = {}) => request({
url: "/cbSummary/editActual",
......
......@@ -5,7 +5,7 @@
<div class="custom-table-item">
<el-table v-if="tableDataTotal>0" class="custom-table" v-loading="comTableLoading" :data="tableData" element-loading-text="加载中"
ref="customTableRef" border fit highlight-current-row :default-sort="defaultSort?defaultSort:{}" @sort-change="sortChange"
@selection-change="selectionChange" @expand-change="expandChange" :cell-class-name="cellClassName" :cell-style="cellStyle"
@selection-change="selectionChange" @expand-change="expandChange" :cell-class-name="cellClassName" :cell-style="cellStyle" :header-cell-class-name="headerCellClassName"
:row-class-name="rowClassName" :row-style="rowStyle" :row-key="rowKey" :lazy="lazy" :load="loadFn" :tree-props="treeOptions"
:default-expand-all="defaultExpandAll" :indent="indent" :height="height" :maxHeight="comMaxHeight" v-sticky-header="stickyHeader">
......@@ -56,6 +56,10 @@ export default {
type: Function,
default: () => { }
},
headerCellClassName: {
type: Function,
default: () => { }
},
cellStyle: {
type: Function,
default: () => { }
......@@ -235,7 +239,7 @@ export default {
if (isFixedNumber && !resize) {
containerMaxHeight = this.maxHeight;
} else {
/**
/**
* @type {HTMLDivElement}
*/
const container = this.$el;
......@@ -248,7 +252,7 @@ export default {
this.comMaxHeight = containerMaxHeight ? `${containerMaxHeight}px` : null;
// 重新计算表格高度 有横向滚动条则需要减去滚动条高度差 16 - 6 有固定列的情况
if (containerMaxHeight) {
/**
/**
* @type {HTMLDivElement}
*/
const tableFixedHeader = this.$el.querySelector(".el-table__fixed-header-wrapper");
......
<template>
<el-dialog title="修改工程量" :visible="comPushProjectUseDialog" width="480px" class="push-project-use-dialog"
@close="dialogClose" @open="dialogOpen" :close-on-click-modal="false" :destroy-on-close="true">
<div class="dialog-body-content">
<el-form :model="pushForm" ref="pushForm" :rules="rules" class="push-form">
<el-form-item label="分包项目名称">
<el-input :value="pushForm.projectName" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="成本科目">
<el-input :value="pushForm.cbSubjectName" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="名称">
<el-input :value="pushForm.cbName" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="编码">
<el-input :value="pushForm.companyNo" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="IPM本月工程量" prop="ipmProjectCode">
<el-input v-model="pushForm.quantities" :disabled="true"></el-input>
</el-form-item>
<!-- 修改后工程量-->
<el-form-item label="修改后工程量" prop="pushQuantities">
<el-input v-model="pushForm.pushQuantities" placeholder="请填写需要展示的工程量"></el-input>
</el-form-item>
</el-form>
</div>
<!-- 底部按钮 -->
<div class="dialog-footer-content">
<div class="footer-btn cancel-submit" @click="cancelSubmit">取消</div>
<div class="footer-btn ok-submit" @click="pushResult">确定修改</div>
</div>
</el-dialog>
</template>
<script>
import { subtract, targetIsNegative, add } from "@/utils/decimal";
import { cloneDeep } from 'lodash-es';
export default {
name: "pushProjectUseDialog",
model: {
prop: "pushProjectUseDialog",
event: "close"
},
props: {
pushProjectUseDialog: {
type: Boolean,
default: false
},
isEntityMaterials: {
type: Boolean,
default: false
},
rowData: {
type: Object,
default: () => ({})
}
},
watch: {
pushProjectUseDialog: {
handler(newValue, oldValue) {
this.comPushProjectUseDialog = newValue;
}
},
rowData: {
handler(newValue, oldValue) {
const _temp = newValue ? newValue : {};
this.pushForm = cloneDeep({ ...this.pushForm, ..._temp });
}
}
},
data() {
return {
comPushProjectUseDialog: this.pushProjectUseDialog,
pushForm: {
id: "",
pushQuantities: "",
cbSubjectName: "",
cbName: "",
companyNo: "",
quantities: "",
projectName: "",
},
rules: {
pushQuantities: [
{ required: true, trigger: ["blur", "change"], message: "请填写需要展示的工程量", whitespace: true }
]
}
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
// 验证需推送工程量
pushQuantitiesValidator(maxValue) {
return [{
trigger: ['blur', 'change'], validator: (rule, value, callback) => {
const reg = /^(?!0\d)(?!0+$)(?!0*\.0*$)\d+(\.\d+)?$/;
if (!reg.test(value)) return callback(new Error("请输入正确的工程量"));
const _maxValue = maxValue ? maxValue : 0;
if (targetIsNegative(subtract(_maxValue, value))) return callback(new Error("注:推送工程量不得大于实际产生的总工程量"));
callback();
}
}];
},
clearValidate() {
const form = this.$refs["pushForm"];
if (form) form.clearValidate();
},
dialogClose() {
this.$emit("dialogClose");
this.pushForm = this.$options.data.call(this).pushForm;
this.clearValidate();
this.$emit("close", false);
},
dialogOpen() {
},
cancelSubmit() {
this.comPushProjectUseDialog = false;
},
//推送工程量
pushResult() {
this.$refs["pushForm"].validate(flag => {
if (flag) {
const { id, pushQuantities } = cloneDeep(this.pushForm);
this.$emit("submitEditData", {
id,
pushQuantities,
});
}
});
}
},
}
</script>
<style lang="scss" scoped>
.push-project-use-dialog {
::v-deep .el-dialog {
margin-top: 0px !important;
margin: 0px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
.el-dialog__header {
height: 56px;
padding: 0px 20px;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #eeeeee;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
.el-dialog__title {
color: #232323;
font-size: 16px;
font-weight: bold;
}
.el-dialog__headerbtn {
position: static;
width: 16px;
height: 16px;
}
}
.el-dialog__body {
padding: 0px;
.dialog-body-content {
padding: 24px 20px;
box-sizing: border-box;
.push-form {
.el-form-item {
&.is-error {
margin-bottom: 33px;
}
margin-bottom: 16px;
display: flex;
align-items: center;
.el-form-item__label {
width: 98px;
min-width: 98px;
line-height: 20px;
color: rgba(35, 35, 35, 0.8);
font-weight: 350;
font-size: 14px;
text-align: right;
padding-right: 0px;
margin-right: 16px;
white-space: nowrap;
}
.el-form-item__content {
width: 100%;
line-height: 32px;
.el-input {
&.is-disabled {
.el-input__inner {
background: #fff;
color: rgba(35, 35, 35, 0.8);
}
}
}
.el-input__inner {
line-height: 32px;
height: 32px;
border-radius: 2px;
padding: 0px 7px;
::placeholder {
color: #c0c4cc !important;
}
}
}
}
}
}
.dialog-footer-content {
padding: 16px 20px;
box-sizing: border-box;
border-top: 1px solid #eeeeee;
display: flex;
align-items: center;
justify-content: flex-end;
.footer-btn {
height: 32px;
padding: 0px 16px;
font-size: 14px;
font-weight: 350;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
cursor: pointer;
&.cancel-submit {
color: rgba(35, 35, 35, 0.8);
background: #fff;
border: 1px solid #dcdfe6;
margin-right: 12px;
}
&.ok-submit {
color: #fff;
background: #0081ff;
}
}
}
}
}
}
</style>
......@@ -21,13 +21,17 @@
<el-option v-for="item in monthList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-select v-model="isOutPlanCostCombinedPrice" placeholder="成本控制情况" class="project-month-select-options" @change="priceChange" clearable style="margin-left: 16px;">
<el-option label="超出计划成本" value="超出计划成本"></el-option>
<el-option label="未超出计划成本" value="未超出计划成本"></el-option>
</el-select>
</div>
<div class="project-table-list-haeder-right">
<!-- 实体工程材料单位换算 -->
<el-button type="primary" size="medium" class="unit-conversion-btn" v-if="isEntityMaterials">单位换算</el-button>
<!-- 填写实际成本 -->
<el-button type="primary" size="medium" class="actual-cost-btn" v-else
@click="addActualCostEditStatus ? saveActualCost() : fillActualCost()">{{addActualCostEditStatus ? '保存成本' : '填写实际成本'}}</el-button>
<!--<el-button type="primary" size="medium" class="actual-cost-btn" v-else-->
<!--@click="addActualCostEditStatus ? saveActualCost() : fillActualCost()">{{addActualCostEditStatus ? '保存成本' : '填写实际成本'}}</el-button>-->
<!-- 表头设置组件 -->
<dsk-table-header-setting :settingList="formColum" @settingChange="settingChange"></dsk-table-header-setting>
</div>
......@@ -38,13 +42,16 @@
<!-- 非实体工程材料列表 -->
<el-form :model="dataForm" ref="feedSummaryForm" :show-message="false" v-else-if="!isEntityMaterials" class="feed-summary-form">
<custom-table :tableData="dataForm.tableDataList" :formColum="formColum" :max-height="true" :tableDataTotal="total" :paging="false"
:cell-class-name="cellClassName">
:header-cell-class-name="headerCellClassName" :cell-class-name="cellClassName">
<template slot="action-field-bar" slot-scope="scope">
<div class="project-action-field-bar" v-if="rowCanEditInput(scope.rowIndex,hasTarget)">
<span class="push-project-use" :class="{'is-emty-quantities' : rowHasLastPush(scope.rowIndex)}"
@click="!rowHasLastPush(scope.rowIndex) ? pushProjectUse(scope.row) : ''">推送工程量</span>
<div class="project-action-field-bar">
<span class="push-project-use" @click="pushProjectUse(scope.row)">修改工程量</span>
</div>
<span v-else>-</span>
<!--<div class="project-action-field-bar" v-if="rowCanEditInput(scope.rowIndex,hasTarget)">-->
<!--<span class="push-project-use" :class="{'is-emty-quantities' : rowHasLastPush(scope.rowIndex)}"-->
<!--@click="!rowHasLastPush(scope.rowIndex) ? pushProjectUse(scope.row) : ''">修改工程量</span>-->
<!--</div>-->
<!--<span v-else>-</span>-->
</template>
<template slot="guidePrice" slot-scope="scope">
{{$decimalFormat(scope.row.guidePrice)}}
......@@ -70,6 +77,10 @@
<template slot="pushQuantities" slot-scope="scope">
{{$decimalFormat(scope.row.pushQuantities)}}
</template>
<template slot="quantities" slot-scope="scope">
<div v-if="scope.row.pushQuantities" style="color:#FF204E;">{{$decimalFormat(scope.row.quantities)}}</div>
<div v-else>{{$decimalFormat(scope.row.quantities)}}</div>
</template>
<!-- 本月工程量 -->
<template slot="quantities" slot-scope="scope">
<!-- 编辑单元格 -->
......@@ -123,9 +134,6 @@
<template slot="totalQuantities" slot-scope="scope">
{{$decimalFormat(scope.row.totalQuantities)}}
</template>
<template slot="quantities" slot-scope="scope">
{{$decimalFormat(scope.row.quantities)}}
</template>
<template slot="conversionQuantities" slot-scope="scope">
{{$decimalFormat(scope.row.conversionQuantities)}}
</template>
......@@ -149,6 +157,9 @@
<push-project-use-dialog v-model="pushProjectUseDialog" :is-entity-materials="isEntityMaterials" :row-data="pushProjectUseTemp"
@dialogClose="dialogClose" @submitPushData="submitPushData"></push-project-use-dialog>
<edit-Dialog v-model="editDialog" :row-data="pushProjectUseTemp"
@dialogClose="editDialogClose" @submitEditData="submitEditData"></edit-Dialog>
<!-- 单位换算弹窗 -->
<unit-conversion v-if="showUnitConversion" :isVisible="showUnitConversion" :dataList="unitConversionList"
@refresh="handleDialogVisible()"></unit-conversion>
......@@ -157,7 +168,7 @@
</template>
<script>
import ProjectSideMenu from "@/views/projectCostLedger/detail/components/ProjectSideMenu";
import { getFeedSummaryMenuTreeApi, getFeedSummaryMonthListApi, getFeedSummaryListApi, getFeedSummaryConversionNotice, updateFeedSummaryRowsApi, pushFeedSummaryRowsApi } from "@/api/projectCostLedger";
import { getFeedSummaryMenuTreeApi, getFeedSummaryMonthListApi, getFeedSummaryListApi, getFeedSummaryConversionNotice, updateFeedSummaryRowsApi, pushFeedSummaryRowsApi,editEngineeringQuantityApi } from "@/api/projectCostLedger";
import DskTableHeaderSetting from "@/components/DskTableHeaderSetting";
import DskSkeleton from "@/components/DskSkeleton";
import CustomTable from "@/components/CustomTable";
......@@ -165,6 +176,7 @@ import EntityMaterialsTable from "@/components/CustomTable";
import AddActualCost from "./components/AddActualCost";
import unitConversion from "./components/unitConversion";
import PushProjectUseDialog from "./components/PushProjectUseDialog";
import editDialog from "./components/editDialog";
import { v4 } from 'uuid';
import dayjs from "dayjs";
import { cloneDeep } from "lodash-es";
......@@ -231,7 +243,8 @@ export default {
DskSkeleton,
AddActualCost,
unitConversion,
PushProjectUseDialog
PushProjectUseDialog,
editDialog
},
data() {
const amountCheckValidator = (rule, value, callback) => {
......@@ -280,13 +293,13 @@ export default {
},
{
label: '实际成本', prop: "sjcb", align: "center", uid: v4(), children: [
{ label: '本月工程量', prop: "quantities", minWidth: "160", uid: v4(), slot: true },
{ label: 'IPM本月工程量', prop: "quantities", minWidth: "160", uid: v4(), slot: true },
{ label: '截止本月工程量', prop: "totalQuantities", minWidth: "160", uid: v4(), slot: true },
{ label: '本月采购单价', prop: "purchaseUnitPrice", minWidth: "160", uid: v4(), slot: true },
{ label: '填写时间', prop: "createTime", minWidth: "160", uid: v4(), slot: true },
]
},
{ label: '推送工程量', prop: "pushQuantities", width: "95", uid: v4(), slot: true },
{ label: '修改后工程量', prop: "pushQuantities", width: "110", uid: v4(), slot: true },
{ label: '备注', prop: "remark", width: "115", uid: v4(), slot: true },
{ label: '操作', prop: "action-field-bar", width: "99", uid: v4(), fixed: "right" },
],
......@@ -333,6 +346,8 @@ export default {
recordDate: "",
// 历史查询月份
oldRecordDate: "",
//是否超出计划成本合价
isOutPlanCostCombinedPrice:'',
// 当前选中子菜单的父类名称
currentParentName: "",
// 当前选中的成本科目
......@@ -353,16 +368,17 @@ export default {
lastScrollTop: 0,
// 推送工程量弹窗
pushProjectUseDialog: false,
// 推送工程量数据缓存
//修改工程量弹窗
editDialog: false,
// 修改工程量数据缓存
pushProjectUseTemp: {
id: "",
pushQuantities: "",
ipmProjectCode: "",
ipmContractCode: "",
ipmBizCode: "",
totalQuantities: "",
cbSubjectName: "",
cbName: "",
companyNo: "",
quantities: "",
projectName: "",
ipmProjectNo: ""
},
checkRules: {
amountCheck: [
......@@ -576,6 +592,15 @@ export default {
// 获取列表数据
this.getFeedSummaryList(params);
},
priceChange(value){
// 请求列表参数
const params = this.createRequestConditions();
if(value){
params["isOutPlanCostCombinedPrice"] = this.isOutPlanCostCombinedPrice === '超出计划成本' ? true : false;
}
// 获取列表数据
this.getFeedSummaryList(params);
},
async menuSelect(currentId, currentTemp) {
this.resetEditStatus();
this.currentNodeName = currentId;
......@@ -702,7 +727,7 @@ export default {
}, 0);
return sum;
},
// 当前行是否可编辑
// // 当前行是否可编辑
rowCanEditInput(index, hasTarget) {
// 不为id 0 或 不是劳务分包跟专业分包
return index != 0 || !hasTarget;
......@@ -754,7 +779,7 @@ export default {
this.lastScrollTop = table.scrollTop;
}
},
// 推送工程用量
// 修改工程用量
pushProjectUse(row) {
if (!row.actualId) return;
// 打开推送推送弹窗
......@@ -762,15 +787,16 @@ export default {
...this.pushProjectUseTemp, ...{
id: row.actualId,
projectName: this.projectDetailInfo.projectName,
totalQuantities: row.totalQuantities,
pushQuantities: "",
ipmProjectCode: this.projectDetailInfo.ipmProjectNo,
ipmContractCode: "",
ipmBizCode: ""
cbSubjectName: row.cbSubjectName,
cbName: row.cbName,
companyNo: row.companyNo,
quantities: row.quantities,
pushQuantities: '',
}
};
this.pushProjectUseTemp = _temp;
this.pushProjectUseDialog = true;
// this.pushProjectUseDialog = true;
this.editDialog = true;
},
// 推送工程用量弹窗关闭
dialogClose() {
......@@ -784,6 +810,22 @@ export default {
}
},
// 修改工程用量弹窗关闭
editDialogClose() {
this.editDialog = this.$options.data.call(this).pushProjectUseTemp;
},
// 确定修改
async submitEditData(pushForm) {
try {
const result = await editEngineeringQuantityApi(pushForm);
console.log(result)
if(result.code === 200){
this.editDialog=false
}
} catch (error) {
}
},
differentCompare() {
const originData = this.originTableDataList;
/**
......@@ -870,13 +912,22 @@ export default {
}
},
cellClassName({ row, column, rowIndex, columnIndex }) {
// console.log(column);
const { property } = column;
// let arr = ['sjcb','quantities','totalQuantities','purchaseUnitPrice','createTime']
// if(arr.includes(column.property)){
// return 'tored'
// }else
if (editPropNames.includes(property)) {
return `can-edit-column-${property}`;
}
return "";
},
headerCellClassName({column}){
// let arr = ['sjcb','quantities','totalQuantities','purchaseUnitPrice','createTime']
// if(arr.includes(column.property)){
// return 'tored'
// }
},
//关闭单位换算弹窗
handleDialogVisible() {
this.showUnitConversion = false;
......@@ -889,6 +940,9 @@ export default {
width: 100%;
height: 100%;
::v-deep .tored{
background: rgb(255,236,236) !important;
}
.feed-summary-inner {
width: 100%;
height: 100%;
......
......@@ -95,7 +95,7 @@
<el-table-column label="本月工程量" width="130" prop="projectVolume">
<template slot-scope="scope">
<template v-if="isinput">
<el-input v-model="scope.row.projectVolume "></el-input>
<el-input @blur="projectValue" v-model="scope.row.projectVolume "></el-input>
</template>
<template v-else>{{scope.row.projectVolume || '--'}}</template>
</template>
......@@ -299,6 +299,17 @@
},
//方法集
methods: {
projectValue(){
console.log(this.tableData,"|||||||")
for(var i=0; i<this.tableData.length; i++){
let value=0
for(var j=0; j<this.tableData[i].children.length; j++){
value+=Number(this.tableData[i].children[j].projectVolume)
}
this.tableData[i].projectVolume=value
console.log(value)
}
},
async getHeight(list){
this.nowheight = new ResizeObserver(entries => {
this.clearResizeTimer();
......@@ -509,6 +520,9 @@
item.month = this.expenseDate
item.monthCostRate = item.monthCostRate?parseInt(item.monthCostRate.replace('%','')):null
})
console.log(tables,"|||||")
saveBatch(JSON.stringify(tables)).then(res=>{
if(res.code == 200){
this.$message.success(res.msg)
......
......@@ -60,7 +60,11 @@ export default {
//计算集
computed: {
checkHasChidren() {
return !!(this.menuItem && this.menuItem?.children?.length);
let state=false
if(this.menuItem?.children){
state=this.menuItem?.children[0].nodeName ? true : false
}
return !!(this.menuItem && this.menuItem?.children?.length && state);
},
},
//方法集
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment