Commit a5b80ac0 authored by tianhongyang's avatar tianhongyang

merge

parent 61c79e19
...@@ -173,13 +173,12 @@ export function projectVolume(data) { ...@@ -173,13 +173,12 @@ export function projectVolume(data) {
} }
//措施费-获取实际成本月份列表 //措施费-获取实际成本月份列表
export function actualMonths(params) { export const getActualMonthsApi = (params = {}) => request({
return request({
url: '/cb/cost/measures/actual/months', url: '/cb/cost/measures/actual/months',
method: 'GET', method: 'get',
params params
}); });
}
// 工料汇总 // 工料汇总
......
...@@ -69,17 +69,15 @@ export default { ...@@ -69,17 +69,15 @@ export default {
watch: { watch: {
projectDetailInfo: { projectDetailInfo: {
handler(newValue) { handler(newValue) {
this.comProjectDetailInfo = newValue ? newValue : {}; this.comProjectDetailInfo = newValue ? cloneDeep(newValue) : {};
this.init(this.comProjectDetailInfo); this.init(this.comProjectDetailInfo);
}, },
deep: true, deep: true,
immediate: true
}, },
projectId: { projectId: {
handler(newValue) { handler(newValue) {
this.comProjectId = newValue; this.comProjectId = newValue;
}, }
immediate: true
} }
}, },
components: { components: {
...@@ -94,8 +92,8 @@ export default { ...@@ -94,8 +92,8 @@ export default {
nodeName: "name", nodeName: "name",
nodeValue: "name", nodeValue: "name",
}, },
comProjectDetailInfo: {}, comProjectDetailInfo: this.projectDetailInfo ? cloneDeep(this.projectDetailInfo) : {},
comProjectId: "", comProjectId: this.projectId,
menuTreeList: [], menuTreeList: [],
// 加载数据列表 // 加载数据列表
tableLoading: false, tableLoading: false,
...@@ -122,7 +120,7 @@ export default { ...@@ -122,7 +120,7 @@ export default {
}, },
//可访问data属性 //可访问data属性
created() { created() {
this.init(this.comProjectDetailInfo);
}, },
//计算集 //计算集
computed: { computed: {
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<div class="feed-summary-container"> <div class="feed-summary-container">
<div class="feed-summary-inner"> <div class="feed-summary-inner">
<div class="left-side-menu"> <div class="left-side-menu">
<project-side-menu ref="profitloss" :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" :default-active="defaultActive" @select="select"> <project-side-menu ref="profitloss" :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" :default-active="defaultActive"
@select="select">
<template slot="措施费-1"> <template slot="措施费-1">
<img src="@/assets/images/projectCostLedger/icon_cost_detail_4.svg" alt=""> <img src="@/assets/images/projectCostLedger/icon_cost_detail_4.svg" alt="">
<div class="project-sub-menu-title-text">措施费</div> <div class="project-sub-menu-title-text">措施费</div>
...@@ -19,27 +20,15 @@ ...@@ -19,27 +20,15 @@
<!--:picker-options="pickerOptions">--> <!--:picker-options="pickerOptions">-->
<!--</el-date-picker>--> <!--</el-date-picker>-->
<el-select v-model="expenseDate"> <el-select v-model="expenseDate">
<el-option <el-option v-for="item in dateoptions" :key="item.value" :label="item.label" :value="item.value">
v-for="item in dateoptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option> </el-option>
</el-select> </el-select>
<el-button v-if="!isall" type="primary" size="small" @click="addcost">添加实际成本</el-button> <el-button v-if="!isall" type="primary" size="small" @click="addcost">添加实际成本</el-button>
</div> </div>
<!--汇总--> <!--汇总-->
<div class="table-item" v-if="isall"> <div class="table-item" v-if="isall">
<el-table <el-table element-loading-text="Loading" :data="tableData" row-key="id" v-horizontal-scroll="'hover'" default-expand-all
element-loading-text="Loading" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" border highlight-current-row>
: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="60" align="left" type="index"></el-table-column>
<el-table-column label="名称" width="220" prop="expenseName"> <el-table-column label="名称" width="220" prop="expenseName">
<template slot-scope="scope">{{scope.row.expenseName || '--'}}</template> <template slot-scope="scope">{{scope.row.expenseName || '--'}}</template>
...@@ -57,16 +46,8 @@ ...@@ -57,16 +46,8 @@
</div> </div>
<!--单条--> <!--单条-->
<div class="table-item" v-else> <div class="table-item" v-else>
<el-table <el-table element-loading-text="Loading" :data="tableData" row-key="id" v-horizontal-scroll="'hover'" default-expand-all
element-loading-text="Loading" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" border highlight-current-row>
: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" fixed="left"></el-table-column> <el-table-column label="序号" width="60" align="left" type="index" fixed="left"></el-table-column>
<el-table-column label="清单内容" width="130" prop="itemContent" fixed="left"> <el-table-column label="清单内容" width="130" prop="itemContent" fixed="left">
<template slot-scope="scope">{{scope.row.itemContent || '--'}}</template> <template slot-scope="scope">{{scope.row.itemContent || '--'}}</template>
...@@ -114,7 +95,6 @@ ...@@ -114,7 +95,6 @@
<template slot-scope="scope">{{scope.row.taxType || '--'}}</template> <template slot-scope="scope">{{scope.row.taxType || '--'}}</template>
</el-table-column> </el-table-column>
<el-table-column label="本月发生成本比例" width="150" prop="monthCostRate"> <el-table-column label="本月发生成本比例" width="150" prop="monthCostRate">
<template slot-scope="scope">{{scope.row.monthCostRate || '--'}}</template> <template slot-scope="scope">{{scope.row.monthCostRate || '--'}}</template>
</el-table-column> </el-table-column>
...@@ -131,7 +111,6 @@ ...@@ -131,7 +111,6 @@
<template slot-scope="scope">{{scope.row.submitProjectVolume || '--'}}</template> <template slot-scope="scope">{{scope.row.submitProjectVolume || '--'}}</template>
</el-table-column> </el-table-column>
<el-table-column label="备注" width="130" prop="remarks"> <el-table-column label="备注" width="130" prop="remarks">
<template slot-scope="scope">{{scope.row.remarks || '--'}}</template> <template slot-scope="scope">{{scope.row.remarks || '--'}}</template>
</el-table-column> </el-table-column>
...@@ -148,10 +127,7 @@ ...@@ -148,10 +127,7 @@
</div> </div>
<!--推送工程量--> <!--推送工程量-->
<el-dialog <el-dialog class="pro-news" :visible.sync="dialogVisible" width="480px">
class="pro-news"
:visible.sync="dialogVisible"
width="480px">
<div class="poptitle"> <div class="poptitle">
<span>推送工程量</span> <span>推送工程量</span>
</div> </div>
...@@ -164,7 +140,9 @@ ...@@ -164,7 +140,9 @@
</el-form-item> </el-form-item>
<el-form-item label="需推送工程量" class="row"> <el-form-item label="需推送工程量" class="row">
<el-input type="text" placeholder="请输入需推送工程量" v-model="queryParam.submitProjectVolume"></el-input> <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> <span class="msgs" v-if="queryParam.submitProjectVolume>queryParam.currentProjectVolume">
<font color="#FF3C3C">注:推送工程量不得大于实际产生的总工程量</font>
</span>
</el-form-item> </el-form-item>
<el-form-item label="IPM项目编码" class="row"> <el-form-item label="IPM项目编码" class="row">
<el-input type="text" placeholder="请输入IPM项目编码" v-model="queryParam.ipmProjectCode"></el-input> <el-input type="text" placeholder="请输入IPM项目编码" v-model="queryParam.ipmProjectCode"></el-input>
...@@ -175,7 +153,7 @@ ...@@ -175,7 +153,7 @@
<el-form-item label="IPM作业编码" class="row"> <el-form-item label="IPM作业编码" class="row">
<el-input type="text" placeholder="请输入IPM作业编码" v-model="queryParam.ipmBizCode"></el-input> <el-input type="text" placeholder="请输入IPM作业编码" v-model="queryParam.ipmBizCode"></el-input>
</el-form-item> </el-form-item>
</el-form > </el-form>
<div class="popbot"> <div class="popbot">
<div class="btn btn_cancel h32" @click="dialogVisible = false">取消</div> <div class="btn btn_cancel h32" @click="dialogVisible = false">取消</div>
<div class="btn btn_primary h32" @click="savepro">确定推送</div> <div class="btn btn_primary h32" @click="savepro">确定推送</div>
...@@ -186,16 +164,18 @@ ...@@ -186,16 +164,18 @@
</div> </div>
</template> </template>
<script> <script>
import ProjectSideMenu from '@/views/projectCostLedger/detail/components/ProjectSideMenu' import ProjectSideMenu from '@/views/projectCostLedger/detail/components/ProjectSideMenu';
import { import {
getCostMeasureslist, getCostMeasureslist,
getMeasureslist, getMeasureslist,
getSummarydata, getSummarydata,
projectVolume, projectVolume,
pushProjectvolume,actualMonths pushProjectvolume,
} from '@/api/projectCostLedger' getActualMonthsApi
} from '@/api/projectCostLedger';
import { cloneDeep } from "lodash-es";
export default { export default {
name: "MeasureItems", name: "MeasureItems",
props: { props: {
// 项目ID // 项目ID
...@@ -213,17 +193,15 @@ ...@@ -213,17 +193,15 @@
watch: { watch: {
projectDetailInfo: { projectDetailInfo: {
handler(newValue) { handler(newValue) {
this.comProjectDetailInfo = newValue ? newValue : {}; this.comProjectDetailInfo = newValue ? cloneDeep(newValue) : {};
this.init(this.projectId); this.init(newValue.projectId);
}, },
deep: true, deep: true
immediate: true
}, },
projectId: { projectId: {
handler(newValue) { handler(newValue) {
this.comProjectId = newValue; this.comProjectId = newValue;
}, }
immediate: true
} }
}, },
components: { components: {
...@@ -233,30 +211,30 @@ ...@@ -233,30 +211,30 @@
return { return {
pickerOptions: { pickerOptions: {
disabledDate(time) { disabledDate(time) {
let istrue = true let istrue = true;
let month = new Date().getMonth()+1 let month = new Date().getMonth() + 1;
let year = new Date().getFullYear() let year = new Date().getFullYear();
let times = (year+5)+'-'+ month + '-01 ' + '00:00:00' let times = (year + 5) + '-' + month + '-01 ' + '00:00:00';
istrue = new Date().getTime() < time.getTime() && time.getTime() < new Date(times).getTime() istrue = new Date().getTime() < time.getTime() && time.getTime() < new Date(times).getTime();
return !istrue return !istrue;
}, },
}, },
menuOptions: { menuOptions: {
nodeName: "itemContent", nodeName: "itemContent",
nodeValue: "id", nodeValue: "id",
}, },
comProjectDetailInfo: {}, comProjectDetailInfo: this.projectDetailInfo ? cloneDeep(this.projectDetailInfo) : {},
comProjectId: "", comProjectId: this.projectId,
defaultActive: "", defaultActive: "",
menuTreeList: [ menuTreeList: [
], ],
id: 0, id: 0,
expenseDate:'', expenseDate: '',
tableData:[], tableData: [],
isall:true,//是否汇总 isall: true,//是否汇总
dialogVisible:false, dialogVisible: false,
queryParam:{},//推送工程量数据 queryParam: {},//推送工程量数据
dateoptions:[], dateoptions: [],
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -264,7 +242,7 @@ ...@@ -264,7 +242,7 @@
// let month = new Date().getMonth() +1 // let month = new Date().getMonth() +1
// let year = new Date().getFullYear() // let year = new Date().getFullYear()
// this.expenseDate = year + (month>= 9? month:'0'+ month) // this.expenseDate = year + (month>= 9? month:'0'+ month)
this.getactualMonths() this.init(this.comProjectId);
}, },
//计算集 //计算集
computed: { computed: {
...@@ -272,44 +250,43 @@ ...@@ -272,44 +250,43 @@
}, },
//方法集 //方法集
methods: { methods: {
getactualMonths(){ async getactualMonths() {
const formDatas = new FormData(); try {
formDatas.append("projectId", this.projectId); const formData = new FormData();
formDatas.append("id", this.id); formData.append("projectId", this.comProjectId);
console.log(formDatas.get('projectId')) formData.append("id", this.id);
console.log(formDatas.get('id')) let data = await getActualMonthsApi(formData);
actualMonths(formDatas).then(res=>{ data.forEach(item => {
let data = res.data item.value = item;
data.forEach(item=>{ item.label = item.substring(1, 4) + '-' + item.substring(5, 6);
item.value = item });
item.label = item.substring(1,4)+'-'+item.substring(5,6) if (data && data.length > 0) {
}) this.expenseDate = data[0].value;
if(data&&data.length>0) }
this.expenseDate = data[0].value } catch (error) {
}) console.log(error);
}
}, },
select(menuPath){ async select(menuPath) {
this.id = menuPath this.id = menuPath;
// let month = this.expenseDate.replace('-', ""); // let month = this.expenseDate.replace('-', "");
let param = { let param = {
projectId:this.projectId, projectId: this.projectId,
id:this.id, id: this.id,
month:this.expenseDate month: this.expenseDate
} };
if(menuPath == 0){//费用汇总 if (menuPath == 0) {//费用汇总
this.isall = true this.isall = true;
const formData = new FormData(); const formData = new FormData();
formData.append("projectId", this.projectId); formData.append("projectId", this.projectId);
getSummarydata(formData).then(res=>{ const res = await getSummarydata(formData);
this.tableData = res.data this.tableData = res.data;
})
} else {//各个子项 } else {//各个子项
this.isall = false this.isall = false;
getCostMeasureslist(param).then(res => { const res = await getCostMeasureslist(param);
this.tableData = res.data this.tableData = res.data;
})
} }
this.getactualMonths() this.getactualMonths();
}, },
async init(detail = '') { async init(detail = '') {
try { try {
...@@ -324,71 +301,71 @@ ...@@ -324,71 +301,71 @@
try { try {
const result = await getMeasureslist(params); const result = await getMeasureslist(params);
if (result.code == 200) { if (result.code == 200) {
let arr = {} let arr = {};
arr.itemContent = '措施费' arr.itemContent = '措施费';
arr.id = 0 arr.id = 0;
let child = result.data let child = result.data;
let li = {} let li = {};
li.itemContent = '费用汇总' li.itemContent = '费用汇总';
li.id = 0 li.id = 0;
child.unshift(li) child.unshift(li);
arr.children = child arr.children = child;
const _tempArray = [arr]; const _tempArray = [arr];
this.menuTreeList = _tempArray; this.menuTreeList = _tempArray;
await this.$nextTick() await this.$nextTick();
this.$refs['profitloss'].$refs['customElMenu'].open(_tempArray[0].id) this.$refs['profitloss'].$refs['customElMenu'].open(_tempArray[0].id);
this.defaultActive = child[0].id this.defaultActive = child[0].id;
this.select(child[0].id) this.select(child[0].id);
} }
} catch (error) { } catch (error) {
console.log(error) console.log(error);
} }
}, },
changetime(val){ changetime(val) {
this.select(this.id) this.select(this.id);
}, },
//推送工作量 //推送工作量
pushwork(row){ pushwork(row) {
this.queryParam = { this.queryParam = {
id:row.id, id: row.id,
projectName:'', projectName: '',
submitProjectVolume:'', submitProjectVolume: '',
ipmProjectCode:'', ipmProjectCode: '',
ipmContractCode:'', ipmContractCode: '',
ipmBizCode:'', ipmBizCode: '',
} };
projectVolume(row.id).then(res=>{ projectVolume(row.id).then(res => {
if(res.data){ if (res.data) {
let datas = res.data let datas = res.data;
this.queryParam.currentProjectVolume = datas.currentProjectVolume this.queryParam.currentProjectVolume = datas.currentProjectVolume;
this.queryParam.ipmProjectCode = datas.ipmProjectCode this.queryParam.ipmProjectCode = datas.ipmProjectCode;
this.queryParam.ipmContractCode = datas.ipmContractCode this.queryParam.ipmContractCode = datas.ipmContractCode;
this.queryParam.ipmBizCode = datas.ipmBizCode this.queryParam.ipmBizCode = datas.ipmBizCode;
} }
}) });
this.dialogVisible = true this.dialogVisible = true;
}, },
//确认推送 //确认推送
savepro(){ savepro() {
pushProjectvolume(this.queryParam).then(res=>{ pushProjectvolume(this.queryParam).then(res => {
if(res.code == 200){ if (res.code == 200) {
this.$message.success(res.msg) this.$message.success(res.msg);
this.dialogVisible = false this.dialogVisible = false;
this.select(this.id) this.select(this.id);
}else{ } else {
this.$message.error(res.msg) this.$message.error(res.msg);
} }
}) });
}, },
addcost(){ addcost() {
}, },
}, },
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.feed-summary-container { .feed-summary-container {
width: 100%; width: 100%;
height: 100%; height: 100%;
...@@ -403,20 +380,20 @@ ...@@ -403,20 +380,20 @@
min-width: 220px; min-width: 220px;
height: 100%; height: 100%;
} }
.profitloss{ .profitloss {
width: calc(100% - 220px); width: calc(100% - 220px);
height: 100%; height: 100%;
background: #fff; background: #fff;
padding: 16px; padding: 16px;
.table-item{ .table-item {
margin-top: 16px; margin-top: 16px;
} }
} }
} }
.search{ .search {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
::v-deep .pro-news { ::v-deep .pro-news {
.el-dialog__body { .el-dialog__body {
padding: 24px 0 0; padding: 24px 0 0;
...@@ -457,7 +434,7 @@ ...@@ -457,7 +434,7 @@
.row { .row {
margin-bottom: 16px; margin-bottom: 16px;
position: relative; position: relative;
.checkcb{ .checkcb {
position: absolute; position: absolute;
left: -100px; left: -100px;
} }
...@@ -506,22 +483,22 @@ ...@@ -506,22 +483,22 @@
padding-top: 2px; padding-top: 2px;
} }
} }
.el-input-group--append{ .el-input-group--append {
position: relative; position: relative;
.el-input-group__append{ .el-input-group__append {
position: absolute; position: absolute;
right: 0; right: 0;
width: 76px; width: 76px;
top: 0; top: 0;
border: 0; border: 0;
background: none; background: none;
&:hover{ &:hover {
background: none !important; background: none !important;
} }
.pro-getbtn{ .pro-getbtn {
border-left: 1px solid #DCDFE6; border-left: 1px solid #dcdfe6;
height: 32px; height: 32px;
color: #0081FF; color: #0081ff;
line-height: 32px; line-height: 32px;
text-align: center; text-align: center;
} }
...@@ -530,7 +507,7 @@ ...@@ -530,7 +507,7 @@
} }
.popbot { .popbot {
border-top: 1px solid #EEEEEE; border-top: 1px solid #eeeeee;
text-align: right; text-align: right;
margin-top: 24px; margin-top: 24px;
padding: 16px 20px; padding: 16px 20px;
...@@ -539,12 +516,12 @@ ...@@ -539,12 +516,12 @@
border-radius: 2px; border-radius: 2px;
margin-left: 12px; margin-left: 12px;
padding: 0 24px; padding: 0 24px;
&.btn_disabled{ &.btn_disabled {
background: #8BD1FF; background: #8bd1ff;
} }
} }
} }
.msgs{ .msgs {
font-size: 12px; font-size: 12px;
line-height: 17px; line-height: 17px;
height: 17px; height: 17px;
...@@ -552,5 +529,5 @@ ...@@ -552,5 +529,5 @@
margin: 0 0 -4px; margin: 0 0 -4px;
} }
} }
} }
</style> </style>
...@@ -15,16 +15,16 @@ ...@@ -15,16 +15,16 @@
<direct-cost v-if="current == 'directCost'"></direct-cost> <direct-cost v-if="current == 'directCost'"></direct-cost>
<!-- 工料汇总 --> <!-- 工料汇总 -->
<feed-summary v-if="current == 'feedSummary'" :project-id="projectID" :project-detail-info="detailInfo"></feed-summary> <feed-summary v-if="current == 'feedSummary'" :project-id="projectId" :project-detail-info="detailInfo"></feed-summary>
<!--措施项目--> <!--措施项目-->
<measure-items v-if="current == 'measureItem'" :project-id="projectID" :project-detail-info="detailInfo"></measure-items> <measure-items v-if="current == 'measureItem'" :project-id="projectId" :project-detail-info="detailInfo"></measure-items>
<!-- 其他项目 --> <!-- 其他项目 -->
<other-projects v-if="current == 'otherItems'"></other-projects> <other-projects v-if="current == 'otherItems'"></other-projects>
<!-- 盈亏分析对比 --> <!-- 盈亏分析对比 -->
<profit-Loss v-if="current == 'profitAndLoss'" :project-id="projectID" :project-detail-info="detailInfo"></profit-Loss> <profit-Loss v-if="current == 'profitAndLoss'" :project-id="projectId" :project-detail-info="detailInfo"></profit-Loss>
</div> </div>
</div> </div>
...@@ -62,13 +62,13 @@ export default { ...@@ -62,13 +62,13 @@ export default {
}, },
data() { data() {
return { return {
projectID: "", projectId: "",
current: "", current: "",
// 详情信息变量 // 详情信息变量
detailInfo: { detailInfo: {
projectId: "1754425038355890177", projectId: "1754425038355890177",
cbStage: 0, cbStage: 0,
cbType:1 cbType: 1
}, },
toggleTabs: [ toggleTabs: [
{ {
...@@ -162,20 +162,21 @@ export default { ...@@ -162,20 +162,21 @@ export default {
async getProjectQuery() { async getProjectQuery() {
try { try {
const { query } = this.$route; const { query } = this.$route;
// if (!query.projectID) return this.$message.error("缺少项目id"); // if (!query.projectId) return this.$message.error("缺少项目id");
this.projectID = query.projectID; this.projectId = query.projectId;
// 获取详情 保证详情获取完毕 再执行tab命中 进行生命周期
await this.getProjectDetail(query.projectId);
if (query.current) { if (query.current) {
this.current = query.current; this.current = query.current;
} else { } else {
// 默认命中工程项目信息 // 默认命中工程项目信息
this.current = "basicEngineeringInformation"; this.current = "basicEngineeringInformation";
}; };
await this.getProjectDetail(query.projectID);
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
}, },
async getProjectDetail(projectID) { async getProjectDetail(projectId) {
try { try {
} catch (error) { } catch (error) {
......
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