Commit d4cdf80f authored by tianhongyang's avatar tianhongyang

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents 507a6ed6 610010ea
......@@ -74,10 +74,11 @@ export function uploadCbProjectFile(data) {
});
}
//删除文件
export function deleteCbProjectFile(fileId) {
export function deleteCbProjectFile(data) {
return request({
url: '/cbProjectFile/deleteCbProjectFile/' + fileId,
url: '/cbProjectFile/deleteCbProjectFile',
method: 'Delete',
data:data
});
}
......@@ -154,6 +155,22 @@ export function getSummarydata(data) {
data: data
});
}
//措施费推送工程量
export function pushProjectvolume(data) {
return request({
url: '/cb/cost/measures/push/project/volume',
method: 'post',
data:data
});
}
//措措施费-获取上一次推送工程量
export function projectVolume(data) {
return request({
url: '/cb/cost/measures/last/project/volume/'+data,
method: 'GET',
});
}
// 工料汇总
......
......@@ -17,8 +17,37 @@
placeholder="选择月" @change="changetime"
:picker-options="pickerOptions">
</el-date-picker>
<el-button v-if="!isall" type="primary" size="small" @click="addcost">添加实际成本</el-button>
</div>
<div class="table-item">
<!--汇总-->
<div class="table-item" v-if="isall">
<el-table
element-loading-text="Loading"
:data="tableData"
row-key="id"
v-horizontal-scroll="'hover'"
default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
border
highlight-current-row
>
<el-table-column label="序号" width="60" align="left" type="index"></el-table-column>
<el-table-column label="名称" width="220" prop="expenseName">
<template slot-scope="scope">{{scope.row.expenseName || '--'}}</template>
</el-table-column>
<el-table-column label="数量" prop="expenseValue">
<template slot-scope="scope">{{scope.row.expenseValue || '--'}}</template>
</el-table-column>
<el-table-column label="占比" prop="proportion">
<template slot-scope="scope">{{scope.row.proportion || '--'}}</template>
</el-table-column>
<el-table-column label="本月工作量" prop="quantity">
<template slot-scope="scope">{{scope.row.quantity || '--'}}</template>
</el-table-column>
</el-table>
</div>
<!--单条-->
<div class="table-item" v-else>
<el-table
element-loading-text="Loading"
:data="tableData"
......@@ -60,10 +89,10 @@
<el-table-column label="摊销比例(%)" width="130" prop="amortizationRatio">
<template slot-scope="scope">{{scope.row.amortizationRatio || '--'}}</template>
</el-table-column>
<el-table-column label="摊销后不含税合价" width="130" prop="amountExcludeTaxAmortized">
<el-table-column label="摊销后不含税合价" width="150" prop="amountExcludeTaxAmortized">
<template slot-scope="scope">{{scope.row.amountExcludeTaxAmortized || '--'}}</template>
</el-table-column>
<el-table-column label="摊销后含税合价" width="130" prop="amountIncludeTaxAmortized">
<el-table-column label="摊销后含税合价" width="150" prop="amountIncludeTaxAmortized">
<template slot-scope="scope">{{scope.row.amountIncludeTaxAmortized || '--'}}</template>
</el-table-column>
<el-table-column label="税金(元)" width="130" prop="taxAmount">
......@@ -77,16 +106,19 @@
</el-table-column>
<el-table-column label="本月发生成本比例" width="130" prop="monthCostRate">
<el-table-column label="本月发生成本比例" width="150" prop="monthCostRate">
<template slot-scope="scope">{{scope.row.monthCostRate || '--'}}</template>
</el-table-column>
<el-table-column label="成本合价" width="130" prop="costEffective">
<template slot-scope="scope">{{scope.row.costEffective || '--'}}</template>
</el-table-column>
<el-table-column label="截止本月工程量" width="130" prop="currentProjectVolume">
<el-table-column label="本月工程量" width="130" prop="currentProjectVolume">
<template slot-scope="scope">{{scope.row.currentProjectVolume || '--'}}</template>
</el-table-column>
<el-table-column label="推送工作量" width="130" prop="submitProjectVolume">
<el-table-column label="截止本月工程量" width="130" prop="currentProjectVolume">
<template slot-scope="scope">{{scope.row.suncurrentProjectVolume || '--'}}</template>
</el-table-column>
<el-table-column label="本月推送工作量" width="130" prop="submitProjectVolume">
<template slot-scope="scope">{{scope.row.submitProjectVolume || '--'}}</template>
</el-table-column>
......@@ -98,18 +130,62 @@
<template slot-scope="scope">{{scope.row.pushTime?"是":"否"}}</template>
</el-table-column>
<el-table-column label="操作" width="130" fixed="right">
<span class="wordprimary">推送工程量</span>
<template slot-scope="scope">
<span class="wordprimary" @click="pushwork(scope.row)">推送工程量</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
<!--推送工程量-->
<el-dialog
class="pro-news"
:visible.sync="dialogVisible"
width="480px">
<div class="poptitle">
<span>推送工程量</span>
</div>
<el-form class="popform" label-width="120px" :model="queryParam" ref="ruleForm">
<el-form-item label="分包项目名称" class="row">
<el-input type="text" v-model="queryParam.projectName" placeholder="请输入分包项目名称"></el-input>
</el-form-item>
<el-form-item label="本月实际工程量" class="row">
<el-input type="text" placeholder="请输入本月实际工程量" v-model="queryParam.currentProjectVolume"></el-input>
</el-form-item>
<el-form-item label="需推送工程量" class="row">
<el-input type="text" placeholder="请输入需推送工程量" v-model="queryParam.submitProjectVolume"></el-input>
<span class="msgs" v-if="queryParam.submitProjectVolume>queryParam.currentProjectVolume"><font color="#FF3C3C">注:推送工程量不得大于实际产生的总工程量</font></span>
</el-form-item>
<el-form-item label="IPM项目编码" class="row">
<el-input type="text" placeholder="请输入IPM项目编码" v-model="queryParam.ipmProjectCode"></el-input>
</el-form-item>
<el-form-item label="IPM合同编码" class="row">
<el-input type="text" placeholder="请输入IPM合同编码" v-model="queryParam.ipmContractCode"></el-input>
</el-form-item>
<el-form-item label="IPM作业编码" class="row">
<el-input type="text" placeholder="请输入IPM作业编码" v-model="queryParam.ipmBizCode"></el-input>
</el-form-item>
</el-form >
<div class="popbot">
<div class="btn btn_cancel h32" @click="dialogVisible = false">取消</div>
<div class="btn btn_primary h32" @click="savepro">确定推送</div>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
import ProjectSideMenu from "@/views/projectCostLedger/detail/components/ProjectSideMenu";
import { getMeasureslist,getCostMeasureslist ,getSummarydata} from "@/api/projectCostLedger";
import ProjectSideMenu from '@/views/projectCostLedger/detail/components/ProjectSideMenu'
import {
getCostMeasureslist,
getMeasureslist,
getSummarydata,
projectVolume,
pushProjectvolume
} from '@/api/projectCostLedger'
export default {
name: "MeasureItems",
props: {
......@@ -168,6 +244,9 @@
id: 0,
expenseDate:'',
tableData:[],
isall:true,//是否汇总
dialogVisible:false,
queryParam:{},//推送工程量数据
};
},
//可访问data属性
......@@ -191,9 +270,19 @@
id:this.id,
month:month
}
getCostMeasureslist(param).then(res=>{
if(menuPath == 0){//费用汇总
this.isall = true
const formData = new FormData();
formData.append("projectId", this.projectId);
getSummarydata(formData).then(res=>{
this.tableData = res.data
})
} else {//各个子项
this.isall = false
getCostMeasureslist(param).then(res => {
this.tableData = res.data
})
}
},
async init(detail = '') {
try {
......@@ -211,20 +300,64 @@
let arr = {}
arr.itemContent = '措施费'
arr.id = 0
arr.children = result.data
let child = result.data
let li = {}
li.itemContent = '费用汇总'
li.id = 0
child.unshift(li)
arr.children = child
const _tempArray = [arr];
this.menuTreeList = _tempArray;
await this.$nextTick()
this.$refs['profitloss'].$refs['customElMenu'].open(_tempArray[0].id)
this.defaultActive = result.data[0].id
this.select(result.data[0].id)
this.defaultActive = child[0].id
this.select(child[0].id)
}
} catch (error) {
console.log(error)
}
},
changetime(){
changetime(val){
let month = val.getMonth() +1
let year = val.getFullYear()
this.expenseDate = year + '-' + (month>= 9? month:'0'+ month)
this.select(this.id)
},
//推送工作量
pushwork(row){
this.queryParam = {
id:row.id,
projectName:'',
submitProjectVolume:'',
ipmProjectCode:'',
ipmContractCode:'',
ipmBizCode:'',
}
projectVolume(row.id).then(res=>{
if(res.data){
let datas = res.data
this.queryParam.ipmProjectCode = datas.ipmProjectCode
this.queryParam.ipmContractCode = datas.ipmContractCode
this.queryParam.ipmBizCode = datas.ipmBizCode
}
})
this.dialogVisible = true
},
//确认推送
savepro(){
pushProjectvolume(this.queryParam).then(res=>{
if(res.code == 200){
this.$message.success(res.msg)
this.dialogVisible = false
this.select(this.id)
}else{
this.$message.error(res.msg)
}
})
},
addcost(){
},
},
}
......@@ -255,5 +388,144 @@
}
}
}
.search{
display: flex;
justify-content: space-between;
}
::v-deep .pro-news {
.el-dialog__body {
padding: 24px 0 0;
}
.el-dialog__headerbtn {
top: 20px;
right: 20px;
z-index: 3;
}
.poptitle {
line-height: 56px;
border-bottom: 1px solid #eee;
height: 56px;
position: absolute;
top: 0;
left: 0;
width: 100%;
> span {
padding-left: 20px;
font-weight: bold;
font-size: 16px;
color: #232323;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
width: 385px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.popform {
padding: 24px 20px 0;
.row {
margin-bottom: 16px;
position: relative;
.checkcb{
position: absolute;
left: -100px;
}
.el-form-item__label {
font-weight: 400;
opacity: 0.8;
padding: 0;
font-size: 14px;
color: #232323;
padding-right: 16px;
}
.el-input,
.el-textarea,
.el-select {
display: inline-block;
width: 320px;
.el-input__inner,
.el-textarea__inner {
width: 100%;
height: 32px;
border-radius: 0px;
&:hover {
border-color: #0081ff;
}
}
.el-textarea__inner {
height: 90px;
font-family: inherit;
color: #000;
}
.el-input__suffix {
height: 32px;
}
.el-input__icon {
line-height: 32px;
}
}
.el-form-item__error {
padding-top: 2px;
}
}
.el-input-group--append{
position: relative;
.el-input-group__append{
position: absolute;
right: 0;
width: 76px;
top: 0;
border: 0;
background: none;
&:hover{
background: none !important;
}
.pro-getbtn{
border-left: 1px solid #DCDFE6;
height: 32px;
color: #0081FF;
line-height: 32px;
text-align: center;
}
}
}
}
.popbot {
border-top: 1px solid #EEEEEE;
text-align: right;
margin-top: 24px;
padding: 16px 20px;
.btn {
border-radius: 2px;
margin-left: 12px;
padding: 0 24px;
&.btn_disabled{
background: #8BD1FF;
}
}
}
.msgs{
font-size: 12px;
line-height: 17px;
height: 17px;
display: block;
margin: 0 0 -4px;
}
}
}
</style>
......@@ -15,7 +15,7 @@
v-model="expenseDate"
type="month"
placeholder="选择月" @change="changetime"
:picker-options="pickerOptions">
>
</el-date-picker>
</div>
<div class="table-item">
......@@ -115,14 +115,14 @@
data() {
return {
pickerOptions: {
disabledDate(time) {
let istrue = true
let month = new Date().getMonth()+1
let year = new Date().getFullYear()
let times = (year+5)+'-'+ month + '-01 ' + '00:00:00'
istrue = new Date().getTime() < time.getTime() && time.getTime() < new Date(times).getTime()
return !istrue
},
// disabledDate(time) {
// let istrue = true
// let month = new Date().getMonth()+1
// let year = new Date().getFullYear()
// let times = (year+5)+'-'+ month + '-01 ' + '00:00:00'
// istrue = new Date().getTime() < time.getTime() && time.getTime() < new Date(times).getTime()
// return !istrue
// },
},
menuOptions: {
nodeName: "cbName",
......@@ -216,6 +216,7 @@
id:this.id,
expenseDate:this.expenseDate
}
console.log(param)
getAnalysislist(param).then(res=>{
this.tableData = res.data
})
......@@ -252,7 +253,11 @@
console.log(error)
}
},
changetime(){
changetime(val){
console.log(val)
// let month = val.getMonth() +1
// let year = val.getFullYear()
// this.expenseDate = year + '-' + (month>= 9? month:'0'+ month)
this.select(this.id)
},
},
......
......@@ -68,19 +68,18 @@
<el-table-column label="工程名称" width="416" :resizable="false">
<template slot-scope="scope">
<div style="display:flex;align-items:center">
<!--<el-tooltip placement="top" v-if="scope.row.customerText.length>20">-->
<!--<div slot="content">{{scope.row.projectName}}</div>-->
<el-tooltip placement="top" v-if="scope.row.projectText.length>20">
<div class="renling">
<router-link v-if="scope.row.isGetProjectDetail" :to="`/projectCostLedger/detail?projectID=${scope.row.id}`" tag="a"
class="wordprimary" v-html="scope.row.projectName"></router-link>
<span v-else v-html="scope.row.projectName"></span>
</div>
<!--</el-tooltip>-->
<!--<div class="renling" v-else>-->
<!--<router-link v-if="scope.row.companyId" :to="`/enterprise/${encodeStr(scope.row.companyId)}?path=cooperationRecord&companyName=${scope.row.customerName}`" tag="a"-->
<!--class="wordprimary" v-html="scope.row.customerName"></router-link>-->
<!--<span v-else v-html="scope.row.customerName"></span>-->
<!--</div>-->
</el-tooltip>
<div class="renling" v-else>
<router-link v-if="scope.row.isGetProjectDetail" :to="`/projectCostLedger/detail?projectID=${scope.row.id}`" tag="a"
class="wordprimary" v-html="scope.row.projectName"></router-link>
<span v-else v-html="scope.row.projectName"></span>
</div>
</div>
</template>
......@@ -342,6 +341,9 @@
this.total = res.total
this.formdata.pageNum = res.currentPage
this.tableData = res.rows
this.tableData.forEach(item=>{
item.projectText = item.projectName.replace(/<\/?[^>]+(style=('|")[^'"]*)?>/gi, '')
})
}else{
this.total = 0
this.tableData = []
......@@ -379,8 +381,8 @@
//查看进度
detailpro(row){
this.uploadData = row
this.uploadData.id = this.uploadData.projectId
this.prodetail = true
this.isupload = true
},
//删除项目
deleetpro(row){
......
......@@ -63,7 +63,7 @@
<div class="cz" v-if="item.fileParseStatus != 1">
<div v-if="item.fileParseStatus != 3"><a :href="item.fileOssUrl">下载</a></div>
<div v-if="item.fileParseStatus == 3 && prodetail == false">重新上传</div>
<div class="i" @click="deletefille(item.id)" v-if="prodetail == false">删除</div>
<div class="i" @click="deletefille(item.id,0)" v-if="prodetail == false">删除</div>
</div>
</div>
<div class="wrong" v-if="item.fileParseStatus&&item.fileParseStatus == 3">
......@@ -91,7 +91,7 @@
<div class="cz" v-if="item.fileParseStatus != 1">
<div v-if="item.fileParseStatus != 3"><a :href="item.fileOssUrl">下载</a></div>
<div v-if="item.fileParseStatus == 3 && prodetail == false">重新上传</div>
<div class="i" @click="deletefille(item.id)" v-if="prodetail == false">删除</div>
<div class="i" @click="deletefille(item.id,1)" v-if="prodetail == false">删除</div>
</div>
</div>
<div class="wrong" v-if="item.fileParseStatus&&item.fileParseStatus == 3">
......@@ -119,7 +119,7 @@
<div class="cz" v-if="item.fileParseStatus != 1">
<div v-if="item.fileParseStatus != 3"><a :href="item.fileOssUrl">下载</a></div>
<div v-if="item.fileParseStatus == 3 && prodetail == false">重新上传</div>
<div class="i" @click="deletefille(item.id)" v-if="prodetail == false">删除</div>
<div class="i" @click="deletefille(item.id,2)" v-if="prodetail == false">删除</div>
</div>
</div>
<div class="wrong" v-if="item.fileParseStatus&&item.fileParseStatus == 3">
......@@ -147,7 +147,7 @@
<div class="cz" v-if="item.fileParseStatus != 1">
<div v-if="item.fileParseStatus != 3"><a :href="item.fileOssUrl">下载</a></div>
<div v-if="item.fileParseStatus == 3 && prodetail == false">重新上传</div>
<div class="i" @click="deletefille(item.id)" v-if="prodetail == false">删除</div>
<div class="i" @click="deletefille(item.id,3)" v-if="prodetail == false">删除</div>
</div>
</div>
<div class="wrong" v-if="item.fileParseStatus&&item.fileParseStatus == 3">
......@@ -175,7 +175,7 @@
<div class="cz" v-if="item.fileParseStatus != 1">
<div v-if="item.fileParseStatus != 3"><a :href="item.fileOssUrl">下载</a></div>
<div v-if="item.fileParseStatus == 3 && prodetail == false">重新上传</div>
<div class="i" @click="deletefille(item.id)" v-if="prodetail == false">删除</div>
<div class="i" @click="deletefille(item.id,4)" v-if="prodetail == false">删除</div>
</div>
</div>
<div class="wrong" v-if="item.fileParseStatus&&item.fileParseStatus == 3">
......@@ -203,7 +203,7 @@
<div class="cz" v-if="item.fileParseStatus != 1">
<div v-if="item.fileParseStatus != 3"><a :href="item.fileOssUrl">下载</a></div>
<div v-if="item.fileParseStatus == 3 && prodetail == false">重新上传</div>
<div class="i" @click="deletefille(item.id)" v-if="prodetail == false">删除</div>
<div class="i" @click="deletefille(item.id,5)" v-if="prodetail == false">删除</div>
</div>
</div>
<div class="wrong" v-if="item.fileParseStatus&&item.fileParseStatus == 3">
......@@ -289,6 +289,7 @@
this.formdata = JSON.parse(JSON.stringify(this.uploadData))
this.formdata.cbStage = this.formdata.cbStage.toString()
this.getDetail()
console.log(this.formdata )
},
methods:{
importdata(){
......@@ -331,13 +332,17 @@
this.$refs.uploadpro.$el.querySelector('input').click()
}
},
deletefille(id){
deletefille(id,type){
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteCbProjectFile(id).then(res=>{
let param = {
fileId: id,
cbType: type,
}
deleteCbProjectFile(param).then(res=>{
if(res.code == 200){
this.$message({
type: 'success',
......
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