2023-08-10 21:09:49 +08:00
|
|
|
<template>
|
2023-08-20 15:46:23 +08:00
|
|
|
<div class="project-my-index">
|
|
|
|
<!--
|
2023-08-10 21:09:49 +08:00
|
|
|
111111111111111
|
|
|
|
<div style="width: 200px;height: 148px;position: relative;display:inline-block;">
|
|
|
|
<border-box1/>
|
|
|
|
</div>
|
|
|
|
<div style="width: 200px;height: 148px;position: relative;display:inline-block;">
|
|
|
|
<border-box2/>
|
|
|
|
</div>
|
|
|
|
<div style="width: 200px;height: 148px;position: relative;display:inline-block;">
|
|
|
|
<border-box3/>
|
|
|
|
</div>
|
|
|
|
-->
|
2023-08-20 15:46:23 +08:00
|
|
|
<div class="prj-nav">
|
|
|
|
<el-radio-group v-model="selPrj" @input="doSelPrj">
|
|
|
|
<el-radio-button v-for="(it, idx) in prjs" :key="idx" :label="it.id">{{
|
|
|
|
it.projectName
|
|
|
|
}}</el-radio-button>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
<div class="prj-info">
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">责任主体:</span>
|
|
|
|
<span class="sp-text">{{ prj.deptName }}</span>
|
|
|
|
</el-col>
|
2023-08-10 21:09:49 +08:00
|
|
|
|
2023-08-20 15:46:23 +08:00
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">父级项目:</span>
|
|
|
|
<span class="sp-text">{{ prj.paretProjectName }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">项目建设类型:</span>
|
|
|
|
<span class="sp-text">{{ prj.paretProjectName }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">项目简称:</span>
|
|
|
|
<span class="sp-text">{{ prj.simpleName }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">项目分类:</span>
|
|
|
|
<span class="sp-text">{{ getprojectType(prj.projectType) }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">项目等级:</span>
|
|
|
|
<span class="sp-text">{{ getprojectLvl(prj.projiectLevel) }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<span class="sp-label">项目地址:</span>
|
|
|
|
<span class="sp-text">{{ prj.projectAddress }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">工程期限:</span>
|
|
|
|
<span class="sp-text">{{
|
|
|
|
prj.projectTimeLimit ? prj.projectTimeLimit + "天" : ""
|
|
|
|
}}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">总投资:</span>
|
|
|
|
<span class="sp-text">{{
|
|
|
|
prj.totalInvestment ? prj.totalInvestment + "万元" : ""
|
|
|
|
}}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">建筑面积:</span>
|
|
|
|
<span class="sp-text">{{ prj.floorArea ? prj.floorArea + "平方米" : "" }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<span class="sp-label">开累产值:</span>
|
|
|
|
<span class="sp-text">{{
|
|
|
|
prj.totalOutputValue ? prj.totalOutputValue + "万元" : ""
|
|
|
|
}}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">计划完成时间:</span>
|
|
|
|
<span class="sp-text">{{ prj.plannedCompletionTime }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">计划开工时间:</span>
|
|
|
|
<span class="sp-text">{{ prj.scheduledStartTime }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">实际开工时间:</span>
|
|
|
|
<span class="sp-text">{{ prj.actualOperatingTime }}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">实际完工时间:</span>
|
|
|
|
<span class="sp-text">{{ prj.actualCompletionTime }}</span>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">合同总额:</span>
|
|
|
|
<span class="sp-text">{{
|
|
|
|
prj.contractAmount ? prj.contractAmount + "万元" : ""
|
|
|
|
}}</span>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">付款金额:</span>
|
|
|
|
<span class="sp-text">{{ prj.paidAmount ? prj.paidAmount + "万元" : "" }}</span>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">挂账金额:</span>
|
|
|
|
<span class="sp-text">{{
|
|
|
|
prj.onAccountAmount ? prj.onAccountAmount + "万元" : ""
|
|
|
|
}}</span>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">重要等级:</span>
|
|
|
|
<span class="sp-text">{{ getWeight(prj.weightType) }}</span>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">劳务人员数:</span>
|
|
|
|
<span class="sp-text">{{
|
|
|
|
prj.servicePersonnel ? prj.servicePersonnel + "人" : ""
|
|
|
|
}}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<span class="sp-label">监理人员数:</span>
|
|
|
|
<span class="sp-text">{{
|
|
|
|
prj.supervisorPersonnel ? prj.supervisorPersonnel + "人" : ""
|
|
|
|
}}</span>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<span class="sp-label">总包人员数:</span>
|
|
|
|
<span class="sp-text">{{
|
|
|
|
prj.generalContractor ? prj.generalContractor + "人" : ""
|
|
|
|
}}</span>
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
<el-col :span="24">
|
|
|
|
<span class="sp-label">项目概述:</span>
|
|
|
|
<span class="sp-text">{{ prj.projectSummarize }}</span>
|
|
|
|
</el-col>
|
2023-08-10 21:09:49 +08:00
|
|
|
</div>
|
2023-08-20 15:46:23 +08:00
|
|
|
|
|
|
|
<div class="tool-bar">
|
2023-08-27 13:50:15 +08:00
|
|
|
<el-button type="primary" @click="doPrjUserMgr" v-hasPermi="['project:surProjectUserInfo:edit']"
|
|
|
|
icon="el-icon-time">项目人员</el-button>
|
|
|
|
<el-button type="primary" @click="doPrjProcessMgr" v-hasPermi="['project:surProject:edit']"
|
|
|
|
icon="el-icon-time">进度管理</el-button>
|
|
|
|
<el-button type="primary" @click="doPrjAssess" v-hasPermi="['project:assess:list']"
|
|
|
|
icon="el-icon-coordinate">季度考核管理</el-button>
|
|
|
|
<el-button type="primary" @click="doPrjBuildNode" v-hasPermi="['project:build_node_data:list']"
|
|
|
|
icon="el-icon-data-analysis">计划节点管理</el-button>
|
|
|
|
<el-button type="primary" @click="doPrjAttendance" v-hasPermi="['project:surProjectAttendance:add']"
|
|
|
|
icon="el-icon-s-check">今日出勤</el-button>
|
|
|
|
<el-button type="primary" @click="doPrjCostOutput" v-hasPermi="['project:costOutput:edit']"
|
|
|
|
icon="el-icon-money">项目成本产值管理</el-button>
|
2023-09-11 00:19:49 +08:00
|
|
|
|
|
|
|
|
2023-08-20 15:46:23 +08:00
|
|
|
</div>
|
|
|
|
<ProjectScheduleDlg ref="prjSchDlg"></ProjectScheduleDlg>
|
|
|
|
<assess-drawer ref="assessDrawer"></assess-drawer>
|
|
|
|
<build-node-drawer ref="nodeDrawer"></build-node-drawer>
|
|
|
|
<attendance-drawer ref="attDrawer"></attendance-drawer>
|
2023-08-27 13:50:15 +08:00
|
|
|
<projectUserInfoDrawer ref="prjUser" size="50%" :visible.sync="showPrjUser" :form-data="prj"/>
|
|
|
|
<costOutputDrawer ref="costOutput"></costOutputDrawer>
|
2023-08-20 15:46:23 +08:00
|
|
|
</div>
|
2023-08-10 21:09:49 +08:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2023-08-20 15:46:23 +08:00
|
|
|
import { listSurProject } from "@/api/project/surProject";
|
2023-08-27 13:50:15 +08:00
|
|
|
import projectUserInfoDrawer from "@/views/project/surProjectUserInfo/projectUserInfoDrawer.vue";
|
2023-08-20 15:46:23 +08:00
|
|
|
import ProjectScheduleDlg from "../surProjectSchedule/ProjectScheduleDlg.vue";
|
|
|
|
import AssessDrawer from "../surProjectQuarterlyAssess/assessDrawer.vue";
|
|
|
|
import buildNodeDrawer from "../surBuildNode/buildNodeDrawer.vue";
|
|
|
|
import attendanceDrawer from "../surProjectAttendance/attendanceDrawer.vue";
|
2023-08-27 13:50:15 +08:00
|
|
|
import costOutputDrawer from '@/views/project/costOutput/costOutputDrawer.vue'
|
2023-08-10 21:09:49 +08:00
|
|
|
export default {
|
2023-08-20 15:46:23 +08:00
|
|
|
dicts: [
|
|
|
|
"sys_check_state",
|
|
|
|
"sur_project_xmjd",
|
|
|
|
"project_build_type",
|
|
|
|
"sys_common_isdel",
|
|
|
|
"project_category",
|
|
|
|
"project_level",
|
|
|
|
"sur_project_weight",
|
|
|
|
],
|
|
|
|
name: "RuoyiUiMyIndex",
|
|
|
|
components: {
|
|
|
|
ProjectScheduleDlg,
|
|
|
|
AssessDrawer,
|
|
|
|
buildNodeDrawer,
|
|
|
|
attendanceDrawer,
|
2023-08-27 13:50:15 +08:00
|
|
|
projectUserInfoDrawer,
|
|
|
|
costOutputDrawer
|
2023-08-20 15:46:23 +08:00
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
prjs: [],
|
|
|
|
selPrj: 0,
|
|
|
|
prj: {},
|
2023-08-27 13:50:15 +08:00
|
|
|
showPrjUser:false
|
2023-08-20 15:46:23 +08:00
|
|
|
};
|
|
|
|
},
|
|
|
|
|
|
|
|
mounted() {
|
|
|
|
this.loadData();
|
2023-09-11 00:19:49 +08:00
|
|
|
this.$bus.$on("todo_tips_click",name=>{
|
|
|
|
console.log("----todo点击----",name)
|
|
|
|
});
|
|
|
|
//this.test();
|
2023-08-20 15:46:23 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
methods: {
|
2023-09-11 00:19:49 +08:00
|
|
|
test(){
|
|
|
|
setInterval(() => {
|
|
|
|
let els=document.querySelectorAll(".todo_num_tips");
|
|
|
|
if(els.length>0){
|
|
|
|
els.forEach(el=>{
|
|
|
|
el.innerHTML=Math.random().toString().substring(4,6);
|
|
|
|
el.style.display="inline";
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}, 1000);
|
|
|
|
},
|
2023-08-27 13:50:15 +08:00
|
|
|
doPrjCostOutput(){
|
|
|
|
this.$refs.costOutput.show(this.prj);
|
|
|
|
},
|
|
|
|
doPrjUserMgr(){
|
|
|
|
this.prj.projectId=this.prj.id;
|
|
|
|
this.showPrjUser=true;
|
|
|
|
},
|
2023-08-20 15:46:23 +08:00
|
|
|
doPrjAttendance() {
|
|
|
|
this.$refs.attDrawer.show(this.prj);
|
2023-08-10 21:09:49 +08:00
|
|
|
},
|
2023-08-20 15:46:23 +08:00
|
|
|
getWeight(v) {
|
|
|
|
let tmps = this.dict.type.sur_project_weight.filter((d) => d.value == v);
|
|
|
|
return tmps.length > 0 ? tmps[0].label : "";
|
2023-08-10 21:09:49 +08:00
|
|
|
},
|
2023-08-20 15:46:23 +08:00
|
|
|
getprojectType(v) {
|
|
|
|
let tmps = this.dict.type.project_category.filter((d) => d.value == v);
|
|
|
|
return tmps.length > 0 ? tmps[0].label : "";
|
2023-08-10 21:09:49 +08:00
|
|
|
},
|
2023-08-20 15:46:23 +08:00
|
|
|
getprojectLvl(v) {
|
|
|
|
let tmps = this.dict.type.project_level.filter((d) => d.value == v);
|
|
|
|
return tmps.length > 0 ? tmps[0].label : "";
|
|
|
|
},
|
|
|
|
doPrjProcessMgr() {
|
|
|
|
this.$refs.prjSchDlg.showDialog(this.prj);
|
|
|
|
},
|
|
|
|
doPrjAssess() {
|
|
|
|
this.$refs.assessDrawer.show(this.prj);
|
|
|
|
},
|
|
|
|
doPrjBuildNode() {
|
|
|
|
this.$refs.nodeDrawer.show(this.prj);
|
|
|
|
},
|
|
|
|
doSelPrj(a, b) {
|
|
|
|
let tmps = this.prjs.filter((d) => d.id == this.selPrj);
|
|
|
|
this.prj = tmps.length > 0 ? tmps[0] : {};
|
|
|
|
},
|
|
|
|
loadData() {
|
|
|
|
let queryParams = {
|
|
|
|
pageNum: 1,
|
2023-08-30 00:45:08 +08:00
|
|
|
pageSize:500,
|
2023-08-20 15:46:23 +08:00
|
|
|
};
|
|
|
|
listSurProject(queryParams).then((d) => {
|
|
|
|
this.prjs = d.rows || [];
|
|
|
|
if (this.prjs.length > 0) {
|
|
|
|
this.selPrj = this.prjs[0].id;
|
|
|
|
this.prj = this.prjs[0];
|
2023-08-10 21:09:49 +08:00
|
|
|
}
|
2023-08-20 15:46:23 +08:00
|
|
|
});
|
2023-08-10 21:09:49 +08:00
|
|
|
},
|
2023-08-20 15:46:23 +08:00
|
|
|
},
|
2023-08-10 21:09:49 +08:00
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.project-my-index {
|
2023-08-20 15:46:23 +08:00
|
|
|
.prj-nav {
|
|
|
|
::v-deep .el-radio-group {
|
|
|
|
max-height: 304px;
|
|
|
|
overflow-y: auto;
|
|
|
|
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
|
|
|
|
padding: 4px;
|
|
|
|
|
|
|
|
.el-radio-button {
|
|
|
|
margin-left: 4px;
|
|
|
|
margin-bottom: 4px;
|
|
|
|
|
|
|
|
.el-radio-button__inner {
|
|
|
|
border: 1px solid #dcdfe6;
|
2023-08-10 21:09:49 +08:00
|
|
|
}
|
2023-08-20 15:46:23 +08:00
|
|
|
}
|
2023-08-10 21:09:49 +08:00
|
|
|
}
|
2023-08-20 15:46:23 +08:00
|
|
|
}
|
2023-08-10 21:09:49 +08:00
|
|
|
|
2023-08-20 15:46:23 +08:00
|
|
|
.prj-info {
|
|
|
|
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
|
|
|
|
margin-top: 24px;
|
|
|
|
overflow: auto;
|
|
|
|
padding: 12px;
|
|
|
|
line-height: 32px;
|
|
|
|
}
|
2023-08-10 21:09:49 +08:00
|
|
|
|
2023-08-20 15:46:23 +08:00
|
|
|
.tool-bar {
|
|
|
|
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
|
|
|
|
margin-top: 24px;
|
|
|
|
overflow: auto;
|
|
|
|
padding: 12px;
|
|
|
|
line-height: 32px;
|
|
|
|
}
|
2023-08-10 21:09:49 +08:00
|
|
|
}
|
|
|
|
</style>
|