Compare commits
22 Commits
f0894ff154
...
6adedec170
Author | SHA1 | Date |
---|---|---|
|
6adedec170 | |
|
17fb41850d | |
|
b3a2fad886 | |
|
135a2b60aa | |
|
7ff2c8421b | |
|
7d231e5500 | |
|
16a0bb92f7 | |
|
5c3c325d71 | |
|
5c5d8eb58f | |
|
4b984e6c12 | |
|
eec37d1315 | |
|
e8846b9b15 | |
|
4e5549bb2c | |
|
f3250cbf0f | |
|
046d367285 | |
|
1d9c332b61 | |
|
a29d861b3e | |
|
316b0d3fe3 | |
|
9d524325d5 | |
|
0f1ad6c83f | |
|
4fb91763c1 | |
|
66f6195c7a |
|
@ -8,9 +8,9 @@ const groupByCheckType=(data)=> {
|
|||
})
|
||||
}
|
||||
|
||||
const getList=data=>{
|
||||
const getList=(data,pageSize,pageNum)=>{
|
||||
return request({
|
||||
url: `bgscreen/checkDetection/getList`,
|
||||
url: `bgscreen/checkDetection/getList?pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
|
|
|
@ -91,7 +91,7 @@ const sumForBsEnginAuditing=data=>{
|
|||
data5:getValue(5),
|
||||
data6:getValue(6),
|
||||
};
|
||||
obj.percent=obj.data1==0?0:obj.data3*100.0/obj.data1;
|
||||
obj.percent=obj.data2==0?0:obj.data3*100.0/obj.data2;
|
||||
if(obj.percent>100){
|
||||
obj.percent=100;
|
||||
}
|
||||
|
@ -137,10 +137,17 @@ const selectForBigEnginList=data=>{
|
|||
});
|
||||
});
|
||||
};
|
||||
|
||||
const groupBYProject=data=>{
|
||||
return request({
|
||||
url:'/project/costOutput/groupBYProject',
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
}
|
||||
export default{
|
||||
selectYearAndMonth,
|
||||
sumByDeptId,
|
||||
sumForBsEnginAuditing,
|
||||
selectForBigEnginList
|
||||
selectForBigEnginList,
|
||||
groupBYProject
|
||||
}
|
||||
|
|
|
@ -84,6 +84,36 @@ const findFormDatasByProcInsId=(procInsId)=> {
|
|||
})
|
||||
}
|
||||
|
||||
const findFlowLabourList=(projId,nv,pageNum,pageSize)=> {
|
||||
return request({
|
||||
url: `bgscreen/flow/findFlowLabourList?projectId=${projId}&activeName=${nv}&pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
const findFlowLabourGroupCountByApprove=(deptId,projectId)=> {
|
||||
return request({
|
||||
url: `bgscreen/flow/findFlowLabourGroupCountByApprove?projectId=${projectId}&deptId=${deptId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
//工程管理-分包单位占比
|
||||
const groupFlowBySubDeptType=(data)=>{
|
||||
return request({
|
||||
url:'bgscreen/flow/groupFlowBySubDeptType',
|
||||
method:'post',
|
||||
data:data
|
||||
})
|
||||
}
|
||||
|
||||
const listFlowBySubDeptType=(data,pageNum,pageSize)=>{
|
||||
return request({
|
||||
url:`bgscreen/flow/listFlowBySubDeptType?pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||
method:'post',
|
||||
data:data
|
||||
})
|
||||
}
|
||||
|
||||
export default{
|
||||
groupByCategory,
|
||||
|
@ -95,5 +125,9 @@ export default{
|
|||
groupByProject,
|
||||
findSafetyWorkList,
|
||||
findFormDatasByProcInsId,
|
||||
listByCategory
|
||||
listByCategory,
|
||||
findFlowLabourList,
|
||||
findFlowLabourGroupCountByApprove,
|
||||
groupFlowBySubDeptType,
|
||||
listFlowBySubDeptType
|
||||
}
|
||||
|
|
|
@ -6,35 +6,57 @@
|
|||
<div class="head-title-tab">
|
||||
<div v-if="!isTypeBuser" :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="pageJump(1, '#/')">项目概况
|
||||
</div>
|
||||
<div :class="(nav >=20 && nav <30) || nav==2? 'head-nav active' : 'head-nav'" style="position: relative;"
|
||||
<div :class="(nav >=200 && nav <300) || nav==2? 'head-nav active' : 'head-nav'" style="position: relative;"
|
||||
class="has-submenu">
|
||||
<div @click="pageJump(2, '#/detail')">项目详情</div>
|
||||
<div class="header-btn-list">
|
||||
<div class="header-btn-list-arrow"></div>
|
||||
<div class="header-btn-list-item" style="">
|
||||
<div class="header-btn-list-padding" style="text-align: left;">
|
||||
<button type="button" :class="nav == 21 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(21, '#/towerCrane')">塔吊监控</button>
|
||||
<button type="button" :class="nav == 22 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(22, '#/excavation')">基坑监控</button>
|
||||
<button type="button" :class="nav == 23 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(23, '#/distributionBox')">配电箱监控</button>
|
||||
<button type="button" :class="nav == 24 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(24, '#/dumbwaiter')">升降机监控</button> <br/>
|
||||
<button type="button" :class="nav == 25 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(25, '#/personnelPosition')">人员定位</button>
|
||||
<button type="button" :class="nav == 26 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(26, '#/standardCuringRoom')">标养室检测</button>
|
||||
<button type="button" :class="nav == 27 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(27, '#/concreteStrength')">混泥土强度检测</button>
|
||||
<div class="header-btn-list-padding" style="text-align: left;display: grid;grid-template-columns: 20% 20% 20% 20% 20%;">
|
||||
<button type="button" :class="nav == 208 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(208, '#/prjSafety')">安全管理</button>
|
||||
<button type="button" :class="nav == 209 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(209, '#/prjQuality')">质量管理</button>
|
||||
|
||||
<button type="button" :class="nav == 210 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(210, '#/prjProgress')">进度管理</button>
|
||||
|
||||
<button type="button" :class="nav == 211 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(211, '#/prjVideo')">视频监控</button>
|
||||
<button type="button" :class="nav == 212 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(212, '#/prjAiVideo')">AI识别监控</button>
|
||||
|
||||
<button type="button" :class="nav == 213 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(213, '#/prjPhotography')">项目全景</button>
|
||||
|
||||
<button type="button" :class="nav == 214 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(214, '#/prjEngin')" v-if="!isTypeBuser" >工程管理</button>
|
||||
|
||||
<button type="button" :class="nav == 215 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(215, '#/prjEnginAuditing')" v-if="!isTypeBuser" >工程审核</button>
|
||||
|
||||
<button type="button" :class="nav == 201 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(201, '#/towerCrane')">塔吊监控</button>
|
||||
<button type="button" :class="nav == 202 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(202, '#/excavation')">基坑监控</button>
|
||||
<button type="button" :class="nav == 203 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(203, '#/distributionBox')">配电箱监控</button>
|
||||
<button type="button" :class="nav == 204 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(204, '#/dumbwaiter')">升降机监控</button>
|
||||
<button type="button" :class="nav == 205 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(205, '#/personnelPosition')">人员定位</button>
|
||||
<button type="button" :class="nav == 206 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(206, '#/standardCuringRoom')">标养室检测</button>
|
||||
<button type="button" :class="nav == 207 ? 'active' : ''" class="sub-btn"
|
||||
@click="pageJump(207, '#/concreteStrength')">混泥土强度检测</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="nav == 3 ? 'head-nav active' : 'head-nav'" @click="pageJump(3, '#/safety')">安全管理</div>
|
||||
<div :class="nav == 4 ? 'head-nav active' : 'head-nav'" @click="pageJump(4, '#/quality')">质量管理</div>
|
||||
<div :class="nav == 5 ? 'head-nav active' : 'head-nav'" @click="pageJump(5, '#/progress')">进度管理</div>
|
||||
<div :class="nav == 61 || nav == 62 || nav==63 ? 'head-nav active' : 'head-nav'" style="position: relative;"
|
||||
<div v-if="!isTypeBuser" :class="nav == 3 ? 'head-nav active' : 'head-nav'" @click="pageJump(3, '#/safety')">安全管理</div>
|
||||
<div v-if="!isTypeBuser" :class="nav == 4 ? 'head-nav active' : 'head-nav'" @click="pageJump(4, '#/quality')">质量管理</div>
|
||||
<div v-if="!isTypeBuser" :class="nav == 5 ? 'head-nav active' : 'head-nav'" @click="pageJump(5, '#/progress')">进度管理</div>
|
||||
<div v-if="!isTypeBuser" :class="nav == 61 || nav == 62 || nav==63 ? 'head-nav active' : 'head-nav'" style="position: relative;"
|
||||
class="has-submenu">
|
||||
<div>视频管理</div>
|
||||
<div class="header-btn-list">
|
||||
|
@ -52,7 +74,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div :class="(nav >=70 && nav <80) || nav==7? 'head-nav active' : 'head-nav'" style="position: relative;"
|
||||
<div v-if="!isTypeBuser" :class="(nav >=70 && nav <80) || nav==7? 'head-nav active' : 'head-nav'" style="position: relative;"
|
||||
class="has-submenu">
|
||||
<div @click="pageJump(7, '#/engin')">工程管理</div>
|
||||
<div class="header-btn-list">
|
||||
|
@ -76,7 +98,7 @@
|
|||
</div>
|
||||
<el-collapse-transition>
|
||||
<ul class="header-screen-ul" v-show="showSel1" ref="selectUl">
|
||||
<li v-for="item in depts" @click="setScreenLiSel1(item)" :title="item.text">{{ item.text }}</li>
|
||||
<li v-for="item in depts" @click="doSetScreenLiSel1(item)" :title="item.text">{{ item.text }}</li>
|
||||
</ul>
|
||||
</el-collapse-transition>
|
||||
</div>
|
||||
|
@ -87,7 +109,7 @@
|
|||
</div>
|
||||
<el-collapse-transition>
|
||||
<ul class="header-screen-ul" v-show="showSel3">
|
||||
<li v-for="item in proTypeList" @click="setScreenLiSel3(item)" :title="item.text">{{ item.text }}</li>
|
||||
<li v-for="item in proTypeList" @click="doSetScreenLiSel3(item)" :title="item.text">{{ item.text }}</li>
|
||||
</ul>
|
||||
</el-collapse-transition>
|
||||
</div>
|
||||
|
@ -97,7 +119,7 @@
|
|||
</div>
|
||||
<el-collapse-transition>
|
||||
<ul class="header-screen-ul" v-show="showSel2" ref="selectUl">
|
||||
<li v-for="item in data" @click="setScreenLiSel2(item)" :title="item.text">{{ item.text }}</li>
|
||||
<li v-for="item in data" @click="doSetScreenLiSel2(item)" :title="item.text">{{ item.text }}</li>
|
||||
</ul>
|
||||
</el-collapse-transition>
|
||||
</div>
|
||||
|
@ -183,6 +205,7 @@ export default {
|
|||
condCode: '',
|
||||
proTypeList:[],
|
||||
proType:'',
|
||||
projs:[],
|
||||
}
|
||||
},
|
||||
created(){
|
||||
|
@ -224,9 +247,17 @@ export default {
|
|||
this.isTypeBuser = true;
|
||||
if (this.$route.name == "index") {
|
||||
this.$router.push("/detail");
|
||||
return;
|
||||
}
|
||||
this.$api.project.findProjectByDept(-1).then(d => {
|
||||
let objs = (d?.data || []).map(it => {
|
||||
}
|
||||
let ajaxs=[
|
||||
this.$api.dept.list(),
|
||||
this.$api.project.findProjectByDept(0)
|
||||
];
|
||||
let res=await this.$api.http.all(ajaxs);
|
||||
this.projs=res[1].data||[];
|
||||
if ([5, 6, 7, 15, 16, 17, 99].includes(roleId)) {
|
||||
let objs = (res[1]?.data || []).map(it => {
|
||||
it.text = it.projectName;
|
||||
return it;
|
||||
}).filter(it => +it.progressVisible == 0);
|
||||
|
@ -234,29 +265,25 @@ export default {
|
|||
let dept={id:0,text:''};
|
||||
this.$root.dept=dept;
|
||||
this.$root.hasInitHeader=true;
|
||||
this.$bus.$emit("deptChange", dept)
|
||||
this.$root._prjIds=objs.map(it=>it.id);
|
||||
Cookies.set("__ids__",objs.map(it=>it.id).join(","));
|
||||
this.$bus.$emit("loadProjects", this.data);
|
||||
this.$root.projects = this.data;
|
||||
if (this.data.length > 0) {
|
||||
this.setScreenLiSel2(this.data[0], true);
|
||||
} else {
|
||||
this.setScreenLiSel2(null);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.isTypeBuser = false;
|
||||
this.$api.dept.list().then(d => {
|
||||
this.$root.hasInitHeader = true;
|
||||
if (roleId < 4) {
|
||||
this.depts = [{ text: '产发集团', id: 0 }, ...(d?.data || []).map(it => {
|
||||
this.depts = [{ text: '产发集团', id: 0 }, ...(res[0]?.data || []).map(it => {
|
||||
it.text = it.deptName;
|
||||
it.id = it.deptId;
|
||||
return it;
|
||||
})]
|
||||
} else {
|
||||
this.depts = [...(d?.data || []).map(it => {
|
||||
this.depts = [...(res[0]?.data || []).map(it => {
|
||||
it.text = it.deptName;
|
||||
it.id = it.deptId;
|
||||
return it;
|
||||
|
@ -264,10 +291,10 @@ export default {
|
|||
}
|
||||
this.setScreenLiSel1(this.localStorage1);
|
||||
this.deptChange();
|
||||
});
|
||||
}
|
||||
this.$root.isTypeBuser = this.isTypeBuser;
|
||||
this.init();
|
||||
this.$bus.$emit("headerChange",this);
|
||||
},
|
||||
methods: {
|
||||
initMe() {
|
||||
|
@ -352,7 +379,6 @@ export default {
|
|||
}
|
||||
let tmps = this.depts.filter(d => d.text == this.dept1);
|
||||
if (tmps.length > 0) {
|
||||
this.$bus.$emit("deptChange", tmps[0])
|
||||
this.$root.dept = tmps[0];
|
||||
}
|
||||
},
|
||||
|
@ -370,7 +396,10 @@ export default {
|
|||
this.nav = n;
|
||||
this.setTitle();
|
||||
if (url) {
|
||||
location.href="#/"
|
||||
setTimeout(()=>{
|
||||
location.href = url
|
||||
},400);
|
||||
} else {
|
||||
this.$notify({
|
||||
title: '提示',
|
||||
|
@ -407,10 +436,21 @@ export default {
|
|||
this.deptChange();
|
||||
this.loadProject();
|
||||
},
|
||||
doSetScreenLiSel1(item){
|
||||
this.setScreenLiSel1(item);
|
||||
this.$bus.$emit("headerChange",this);
|
||||
},
|
||||
doSetScreenLiSel2(item){
|
||||
this.setScreenLiSel2(item);
|
||||
this.$bus.$emit("headerChange",this);
|
||||
},
|
||||
doSetScreenLiSel3(item){
|
||||
this.setScreenLiSel3(item);
|
||||
this.$bus.$emit("headerChange",this);
|
||||
},
|
||||
setScreenLiSel1(item) {
|
||||
localStorage.setItem("data1", JSON.stringify(item))
|
||||
this.localStorage1 = JSON.parse(localStorage.getItem("data1"))
|
||||
this.$emit('itemdata', item);
|
||||
this.showSel1 = false
|
||||
this.dept1 = item.text;
|
||||
this.deptChange();
|
||||
|
@ -420,13 +460,24 @@ export default {
|
|||
if (this.isTypeBuser) {
|
||||
return;
|
||||
}
|
||||
this.$api.project.findProjectByDept(this.localStorage1.id).then(d => {
|
||||
let objs = (d?.data || []).map(it => {
|
||||
let tmps=this.projs.filter(d=>{
|
||||
let b1= true;
|
||||
if(this.localStorage1.id!=0){
|
||||
b1=d.deptId==this.localStorage1.id
|
||||
}
|
||||
let b2=true;
|
||||
let tmps=this.proTypeList.filter(it=>it.text==this.proType);
|
||||
if(tmps.length>0 && tmps[0].value!=0){
|
||||
b2=d.projectType==tmps[0].value;
|
||||
}
|
||||
return b1 && b2;
|
||||
});
|
||||
let objs = (tmps || []).map(it => {
|
||||
it.text = it.projectName;
|
||||
return it;
|
||||
}).filter(it => +it.progressVisible == 0);
|
||||
this.data = [{ id: 0, text: '所有项目' }, ...objs];
|
||||
this.$bus.$emit("loadProjects", this.data);
|
||||
//this.$bus.$emit("loadProjects", this.data);
|
||||
this.$root.projects = this.data;
|
||||
if(this.data.find(it=>it.id==this.localStorage2.id)){
|
||||
this.setScreenLiSel2(this.localStorage2)
|
||||
|
@ -440,7 +491,7 @@ export default {
|
|||
if(cb){
|
||||
cb();
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
setScreenLiSel2(item, init) {
|
||||
if (item) {
|
||||
|
@ -452,7 +503,6 @@ export default {
|
|||
this.dept2 = item.text;
|
||||
}
|
||||
this.$root.project = this.localStorage2;
|
||||
this.$bus.$emit("projectChange", this.localStorage2);
|
||||
} else {
|
||||
localStorage.removeItem("data2");
|
||||
this.localStorage2 = {};
|
||||
|
@ -481,7 +531,7 @@ export default {
|
|||
|
||||
<style lang="less">
|
||||
.head-title{
|
||||
z-index: 9999;
|
||||
z-index: 999;
|
||||
}
|
||||
.main-header {
|
||||
.head-title-tab {
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
ref="fbsubordinateUnit" :show-summary="tableData.length > 1">
|
||||
<el-table-column label="项目名称" align="left" prop="prjName" />
|
||||
<el-table-column label="部门" align="left" prop="dptName"></el-table-column>
|
||||
<el-table-column label="劳务人数" align="center" prop="data101" />
|
||||
<el-table-column label="总包人数" align="center" prop="data101" />
|
||||
<el-table-column label="监理人数" align="center" prop="data102" />
|
||||
<el-table-column label="总包人数" align="center" prop="data103" />
|
||||
<el-table-column label="劳务7人数" align="center" prop="data103" />
|
||||
<el-table-column label="合计" align="center" prop="total">
|
||||
<template slot-scope="{row}"><span style="font-size:16px;font-weight: bold;color:#87e3fa;">{{row.total }}</span></template>
|
||||
</el-table-column>
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
<div
|
||||
class="glr-login-number-max analyse-num-max"
|
||||
v-for="(item, idx) in warningType"
|
||||
v-if="type != 'detail' || (type == 'detail' && item.name != '劳资预警')"
|
||||
style="height: unset"
|
||||
:key="idx"
|
||||
>
|
||||
|
@ -46,14 +47,14 @@
|
|||
<div class="glr-login-number analyse-login-numbe">
|
||||
<div><img src="images/text_red_spot.png" />{{ item.name }}</div>
|
||||
<div class="glr-rate-value glr-rate-red-value">
|
||||
<template v-if="idx==0">
|
||||
<template v-if="idx == 0">
|
||||
<span style="color: #c0dafb">{{ item.total }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span>{{ item.data }}</span>/
|
||||
<span style="color: #c0dafb">{{item.total }}</span>
|
||||
<span>{{ item.data }}</span
|
||||
>/
|
||||
<span style="color: #c0dafb">{{ item.total }}</span>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -94,21 +95,17 @@ export default {
|
|||
data: 0,
|
||||
total: 0,
|
||||
},
|
||||
{
|
||||
name: "劳资预警",
|
||||
data: 0,
|
||||
total: 0,
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on("projectChange", (res) => {
|
||||
this.prjInfo = res;
|
||||
if (this.deptInfo.text) {
|
||||
this.getMonitAndWarning();
|
||||
}
|
||||
});
|
||||
this.$bus.$on("deptChange", (dept) => {
|
||||
this.deptInfo = dept;
|
||||
if (this.prjInfo.id) {
|
||||
this.getMonitAndWarning();
|
||||
}
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
|
@ -128,7 +125,9 @@ export default {
|
|||
if (this.type == "detail") {
|
||||
prjId = this.prjInfo.id;
|
||||
}
|
||||
this.$api.problemmodify.getMonitAndWarning(this.deptInfo.id||0, prjId).then((d) => {
|
||||
this.$api.problemmodify
|
||||
.getMonitAndWarning(this.deptInfo.id || 0, prjId)
|
||||
.then((d) => {
|
||||
let tmps = d.data?.today || [];
|
||||
let sum = 0;
|
||||
tmps.forEach((it) => {
|
||||
|
@ -177,6 +176,18 @@ export default {
|
|||
});
|
||||
this.warningType[0].data = data;
|
||||
this.warningType[0].total = sum;
|
||||
data = 0;
|
||||
sum = 0;
|
||||
tmps = d.data?.group || [];
|
||||
objs = tmps.filter((it) => it.infotype == "97");
|
||||
objs.forEach((it) => {
|
||||
sum += it.total;
|
||||
if (it.checkState != "100") {
|
||||
data += it.total;
|
||||
}
|
||||
});
|
||||
this.warningType[3].data = data;
|
||||
this.warningType[3].total = sum;
|
||||
this.elKey++;
|
||||
});
|
||||
},
|
||||
|
|
|
@ -36,9 +36,8 @@ export default {
|
|||
|
||||
mounted() {
|
||||
window.mymap = this;
|
||||
this.$bus.$on("projectChange", res => {
|
||||
this.project = res;
|
||||
this.reloadMap();
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if(this.$root.hasInitHeader){
|
||||
this.initMe();
|
||||
|
|
|
@ -0,0 +1,259 @@
|
|||
<template>
|
||||
<MyDialog
|
||||
v-if="show"
|
||||
v-model="show"
|
||||
width="1480px"
|
||||
height="850px"
|
||||
class="flowLabourDlg"
|
||||
>
|
||||
<template slot="title">{{ title }}</template>
|
||||
<div class="head-title-tab">
|
||||
<div :class="nav == 'all' ? 'head-nav active' : 'head-nav'" @click="doNav('all')">
|
||||
全部数据({{ tags.all }})
|
||||
</div>
|
||||
<div :class="nav == 'jxz' ? 'head-nav active' : 'head-nav'" @click="doNav('jxz')">
|
||||
待处理({{ tags.db }})
|
||||
</div>
|
||||
<div :class="nav == 'ywc' ? 'head-nav active' : 'head-nav'" @click="doNav('ywc')">
|
||||
已处理({{ tags.yb }})
|
||||
</div>
|
||||
</div>
|
||||
<template>
|
||||
<div class="data-list scroll" style="max-height: 712px; overflow-y: auto">
|
||||
<div
|
||||
v-if="dataList.length == 0"
|
||||
style="text-align: center; padding-top: 200px"
|
||||
class="div-no-data"
|
||||
>
|
||||
<img src="images/nodata.png" style="width: 120px" />
|
||||
<div style="text-align: center; font-size: 12px; color: #888">暂无数据</div>
|
||||
</div>
|
||||
<div v-else class="acceptance-list">
|
||||
<div
|
||||
class="acceptance-item"
|
||||
v-for="(it, idx) in dataList"
|
||||
:key="idx"
|
||||
style="cursor: pointer"
|
||||
:class="it.approveStatus=='100'?'inspect_shtg':(it.approveStatus%10==0?'inspect_shz':'inspect_shbh')"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
项目名称:{{ it.projectName }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
总包单位:{{ it.deptName }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
劳务单位:{{ it.subDeptName }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
投诉人:{{ it.deptName }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
联系电话:{{ it.laborPhone }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
身份证号:{{ it.laborCardId }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
欠薪人数:<span class="fblue">{{ it.laborNumber }}</span> 人
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
欠薪金额:<span class="fblue">{{ it.laborAmount }}</span> 元
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="8" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
处理节点:
|
||||
<span class="fblue" v-show="it.approveStatus == '10'">
|
||||
待总包单位处理
|
||||
</span>
|
||||
<span class="fblue" v-show="it.approveStatus == '20'">
|
||||
待甲方代表审批
|
||||
</span>
|
||||
<span class="fred" v-show="it.approveStatus == '21'">
|
||||
甲方代表审批驳回
|
||||
</span>
|
||||
<span class="fblue" v-show="it.approveStatus == '30'">
|
||||
待集团公司审批
|
||||
</span>
|
||||
<span class="fred" v-show="it.approveStatus == '31'">
|
||||
集团公司审批驳回
|
||||
</span>
|
||||
<span class="fsuccess" v-show="it.approveStatus == '100'">处理完成</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24" class="item-data">
|
||||
<div class="rank-chart-title bottom-line div-text">
|
||||
原因说明:{{ it.laborReason }} <el-link v-if="it.files" type="primary" @click="downFiles(it.files)">下载附件凭证</el-link>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
<el-pagination
|
||||
layout="total,prev, pager, next"
|
||||
:hide-on-single-page="true"
|
||||
@current-change="handleCurrentChange"
|
||||
:total="total"
|
||||
:page-size="pageSize"
|
||||
:current-page.sync="pageNum"
|
||||
class="bg-pagination"
|
||||
></el-pagination>
|
||||
</div>
|
||||
</template>
|
||||
</MyDialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import MyDialog from "../components/MyDialog";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
MyDialog,
|
||||
},
|
||||
name: "flowLabourDlg",
|
||||
data() {
|
||||
return {
|
||||
title: "劳资预警",
|
||||
data: null,
|
||||
dataList: [],
|
||||
show: false,
|
||||
nav: "jxz",
|
||||
specialType: "0",
|
||||
tags: {
|
||||
all: 0,
|
||||
db: 0,
|
||||
yb: 0,
|
||||
},
|
||||
pageNum: 0,
|
||||
pageSize: 3,
|
||||
total: 0,
|
||||
};
|
||||
},
|
||||
|
||||
/**特种作业人员数据 */
|
||||
mounted() {
|
||||
this.data = null;
|
||||
},
|
||||
|
||||
methods: {
|
||||
handleCurrentChange(n) {
|
||||
this.pageNum = n;
|
||||
this.getList();
|
||||
},
|
||||
showDialog(it) {
|
||||
this.data = it;
|
||||
this.pageNum = 0;
|
||||
this.getList();
|
||||
},
|
||||
doNav(nav) {
|
||||
this.nav = nav;
|
||||
this.getList();
|
||||
},
|
||||
getList() {
|
||||
this.queryCount();
|
||||
this.$api.flow.findFlowLabourList(this.data?.id||0,this.nav,this.pageNum,this.pageSize).then((res) => {
|
||||
this.dataList = res.rows;
|
||||
this.show = true;
|
||||
this.total = res.total;
|
||||
});
|
||||
},
|
||||
queryCount() {
|
||||
this.$api.flow.findFlowLabourGroupCountByApprove(0, this.data.id).then((res) => {
|
||||
if (res.code == 200 && res.data) {
|
||||
this.tags.all = res.data.all;
|
||||
this.tags.db = res.data.db;
|
||||
this.tags.yb = res.data.yb;
|
||||
}
|
||||
});
|
||||
},
|
||||
downFiles(files){
|
||||
if(files){
|
||||
files.split(',').forEach(item => {
|
||||
window.open('/jhapi' + item);
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scope>
|
||||
.popup-project-introduction-min {
|
||||
transform: translateY(100px) !important;
|
||||
}
|
||||
</style>
|
||||
<style lang="less" scoped>
|
||||
.flowLabourDlg {
|
||||
.data-list {
|
||||
.acceptance-item {
|
||||
margin-top: 20px;
|
||||
border: 1px #dddddd solid;
|
||||
padding: 12px;
|
||||
border-radius: 8px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
.fblue{
|
||||
color:#1879da;
|
||||
}
|
||||
.fred{
|
||||
color:#fd6060;
|
||||
font-weight:800;
|
||||
}
|
||||
.fsuccess{
|
||||
color:green;
|
||||
font-weight:800;
|
||||
}
|
||||
.inspect_shtg {
|
||||
padding: 15px 3px;
|
||||
background-size: 120px 120px !important;
|
||||
background: url("https://szgcwx.jhncidg.com/staticFiles/images/shtg.png") no-repeat top
|
||||
40px right 20px;
|
||||
}
|
||||
.inspect_shz {
|
||||
padding: 15px 3px;
|
||||
background-size: 120px 120px !important;
|
||||
background: url("https://szgcwx.jhncidg.com/staticFiles/images/shz.png") no-repeat top
|
||||
40px right 20px;
|
||||
}
|
||||
.inspect_shbh {
|
||||
padding: 15px 3px;
|
||||
background-size: 120px 120px !important;
|
||||
background: url("https://szgcwx.jhncidg.com/staticFiles/images/shbh.png") no-repeat top
|
||||
40px right 20px;
|
||||
}
|
||||
}
|
||||
.bg-pagination {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.head-title-tab {
|
||||
padding-top: 12px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
|
||||
.head-nav {
|
||||
background-size: 100% 100%;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
padding: 0px 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -185,27 +185,40 @@
|
|||
</enginChart>
|
||||
</module-one-1-1>
|
||||
<module-one-2-1 label="劳务单位资质审批明细" style="position: relative;">
|
||||
|
||||
<template v-if="dataList4.length > 0">
|
||||
<div class="data-list3 scroll">
|
||||
<table style=" border-collapse: collapse;">
|
||||
<tr class="tr-header">
|
||||
<th>所属项目</th>
|
||||
<th style="width:95px">所属总包单位</th>
|
||||
<th>申请单位</th>
|
||||
<th style="width:60px">所属时间</th>
|
||||
<th style="width:30px">状态</th>
|
||||
<th>分包类型</th>
|
||||
<th style="width:40px">申请<br />时间</th>
|
||||
<th style="width:40px">状态</th>
|
||||
</tr>
|
||||
<tr v-for="(it,idx) in dataList4" :key="idx">
|
||||
<td>泾河智谷(一期)一标段</td>
|
||||
<td>中国一冶集团有限公司</td>
|
||||
<td>陕西凯德劳务建筑有限公司</td>
|
||||
<td>2024-3-4</td>
|
||||
<tr v-for="(it, idx) in dataList4" :key="idx">
|
||||
<td>{{ it.businessKeyName }}</td>
|
||||
<td>{{ it.startDeptName }}</td>
|
||||
<td>{{ it.deptName }}</td>
|
||||
<td>{{ it.taskName }}</td>
|
||||
<td>{{ it.createTime | formatDate }}</td>
|
||||
<td>
|
||||
<span v-if="idx<10">进行中</span>
|
||||
<span v-else style="color:green">行中</span>
|
||||
<span v-if="!it.finishTime">进行中</span>
|
||||
<span v-else style="color:green">完成</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<el-pagination layout="total,prev, pager, next"
|
||||
@current-change="handleCurrentChange" :total="data4Page.total" :page-size="data4Page.pageSize"
|
||||
:current-page.sync="data4Page.pageIndex" class="bg-pagination"></el-pagination>
|
||||
</template>
|
||||
<div v-else style="text-align: center;margin-top:100px;" class="div-no-data">
|
||||
<img src="images/nodata.png" style="width: 120px;">
|
||||
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
|
||||
|
||||
</div>
|
||||
</module-one-2-1>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
@ -238,22 +251,19 @@ export default {
|
|||
chart1Data: [],
|
||||
elChart2: 0,
|
||||
flowList: [],
|
||||
dataList4:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
|
||||
dataList4: [],
|
||||
data4Page: {
|
||||
total: 0,
|
||||
pageSize: 10,
|
||||
pageIndex: 1
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.$bus.$on("loadProjects", debounce(prjs => {
|
||||
this.prjs = prjs;
|
||||
}));
|
||||
this.$bus.$on("projectChange", debounce(res => {
|
||||
this.project = res;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("deptChange", debounce(dept => {
|
||||
this.dept = dept;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
|
@ -297,16 +307,51 @@ export default {
|
|||
this.loadCostList();
|
||||
this.loadFlow();
|
||||
this.initChart2();
|
||||
this.data4Page.pageIndex = 1;
|
||||
this.loadFlowDataList();
|
||||
},
|
||||
handleCurrentChange(n) {
|
||||
this.data4Page.pageIndex = n;
|
||||
this.loadFlowDataList();
|
||||
},
|
||||
loadFlowDataList() {
|
||||
let postData = {};
|
||||
if (this.project && this.project.id > 0) {
|
||||
postData.projectId = this.project.id;
|
||||
} else {
|
||||
postData.id = this.dept.id;
|
||||
}
|
||||
this.$api.flow.listFlowBySubDeptType(postData, this.data4Page.pageIndex, this.data4Page.pageSize).then(d => {
|
||||
let data = d.rows || [];
|
||||
this.dataList4 = data;
|
||||
this.data4Page.total = d.total;
|
||||
});
|
||||
},
|
||||
initChart2() {
|
||||
let opt = { "tooltip": { "trigger": "item" }, "series": [{ "top": 10, "type": "pie", "radius": "60%",
|
||||
"data": [{ "name": "未发起", "value": 6 },
|
||||
{ "name": " 审批中", "value": 4 },
|
||||
{ "name": "审批通过", "value": 15 }
|
||||
], "label": { "alignTo": "edge", "edgeDistance": "10%", "color": "#fff", "formatter": "{name|{b}}\n{cnt|{c}}", "rich": { "cnt": { "fontSize": 10, "color": "#eee" } } } }] };
|
||||
let postData = {};
|
||||
if (this.project && this.project.id > 0) {
|
||||
postData.projectId = this.project.id;
|
||||
} else {
|
||||
postData.id = this.dept.id;
|
||||
}
|
||||
this.$api.flow.groupFlowBySubDeptType(postData).then(d => {
|
||||
let data = (d.data || []).map(it => {
|
||||
return {
|
||||
name: it.taskName,
|
||||
value: it.taskId || 0
|
||||
}
|
||||
});
|
||||
let opt = {
|
||||
"tooltip": { "trigger": "item" }, "series": [{
|
||||
"top": 10, "type": "pie", "radius": "60%",
|
||||
"data": data, "label": { "alignTo": "edge", "edgeDistance": "10%", "color": "#fff", "formatter": "{name|{b}}\n{cnt|{c}}", "rich": { "cnt": { "fontSize": 10, "color": "#eee" } } }
|
||||
}]
|
||||
};
|
||||
if (this.$refs.chart2 && this.$refs.chart2.init) {
|
||||
this.$refs.chart2.init(opt);
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
loadFlow() {
|
||||
let ajaxs = [
|
||||
|
@ -423,7 +468,7 @@ export default {
|
|||
|
||||
th {
|
||||
font-size: 14px;
|
||||
color:#409eff;
|
||||
color: #409eff;
|
||||
border: solid 1px #ffffff52;
|
||||
line-height: 60px;
|
||||
}
|
||||
|
@ -436,19 +481,23 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
.data-list3{
|
||||
max-height: calc(100% - 40px);
|
||||
|
||||
.data-list3 {
|
||||
max-height: calc(100% - 70px);
|
||||
overflow-y: auto;
|
||||
padding:4px;
|
||||
.tr-header{
|
||||
th{
|
||||
color:#409eff;
|
||||
padding: 4px;
|
||||
|
||||
.tr-header {
|
||||
th {
|
||||
color: #409eff;
|
||||
}
|
||||
}
|
||||
td,th{
|
||||
|
||||
td,
|
||||
th {
|
||||
border: solid 1px #409eff8c;
|
||||
padding: 0px 8px;
|
||||
font-size:12px;
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
}
|
||||
}
|
||||
|
@ -489,10 +538,13 @@ export default {
|
|||
|
||||
.sum-table {
|
||||
border-collapse: collapse;
|
||||
th{
|
||||
color:#409eff;
|
||||
|
||||
th {
|
||||
color: #409eff;
|
||||
}
|
||||
td,th{
|
||||
|
||||
td,
|
||||
th {
|
||||
line-height: 30px;
|
||||
border: solid 1px #409eff8c;
|
||||
padding: 0px 8px;
|
||||
|
|
|
@ -1,14 +1,24 @@
|
|||
<template>
|
||||
<MyDialog v-if="show" v-model="show" width="1600px" height="850px" class="mag-detail-dialog">
|
||||
<template slot="title">{{info.title }}</template>
|
||||
<template slot="title">{{ info.title }}</template>
|
||||
<div style="text-align: center;color:dodgerblue;">
|
||||
{{ info.name }} - {{ info.topicName }} - {{ info.deptName }} - {{ info.authorName }} - {{ info.createTime|formatDateTime }}
|
||||
{{ info.name }} - {{ info.topicName }} - {{ info.deptName }} - {{ info.authorName }} - {{
|
||||
info.createTime | formatDateTime }}
|
||||
</div>
|
||||
<div class="scroll" style="max-height: calc(100% - 100px);overflow: auto;">
|
||||
<div style="display: flex;justify-content: center;">
|
||||
<el-image v-if="info.imageUrl" class="info-image" :src="'/jhapi' + info.imageUrl + '.min.jpg'"
|
||||
:preview-src-list="['/jhapi' + info.imageUrl]"></el-image>
|
||||
|
||||
|
||||
<div v-if="info.imageUrl && info.imageUrl.length > 0" style="width:calc(100% - 16px);">
|
||||
<el-image v-for="(item, idx) in info.imageUrl" :key="idx" class="info-image" :src="item + '.min.jpg'" :preview-src-list="[item]"></el-image>
|
||||
</div>
|
||||
<!--
|
||||
<el-carousel >
|
||||
<el-carousel-item v-for="(item, idx) in info.imageUrl" :key="idx">
|
||||
<el-image class="info-image" :src="item + '.min.jpg'" :preview-src-list="[item]"></el-image>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
-->
|
||||
|
||||
<pre v-html="info.content" style="white-space: break-spaces;"></pre>
|
||||
</div>
|
||||
</MyDialog>
|
||||
|
@ -27,7 +37,7 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
show: false,
|
||||
info:{},
|
||||
info: {},
|
||||
};
|
||||
},
|
||||
|
||||
|
@ -37,7 +47,7 @@ export default {
|
|||
methods: {
|
||||
showDialog(data) {
|
||||
this.show = true
|
||||
this.info=data;
|
||||
this.info = data;
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -52,15 +62,18 @@ export default {
|
|||
</style>
|
||||
<style lang="less">
|
||||
.mag-detail-dialog {
|
||||
.popup-project-introduction-con{
|
||||
.popup-project-introduction-con {
|
||||
height: 100%;
|
||||
.popup-project-introduction-details{
|
||||
|
||||
.popup-project-introduction-details {
|
||||
height: 100%;
|
||||
.quality-table.special-table{
|
||||
|
||||
.quality-table.special-table {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.popup-project-introduction-min {
|
||||
transform: translateY(100px);
|
||||
}
|
||||
|
@ -77,13 +90,22 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.el-image.info-image{
|
||||
.el-carousel.el-carousel--horizontal{
|
||||
height: 300px;
|
||||
width: 100%;
|
||||
.el-image__inner{
|
||||
width:auto !important;
|
||||
}
|
||||
.el-carousel__arrow i{
|
||||
font-size: 40px;
|
||||
}
|
||||
}
|
||||
.el-image.info-image {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding:6px;
|
||||
padding: 6px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -11,8 +11,8 @@
|
|||
<el-table-column label="作者" align="center" prop="authorName" />
|
||||
<el-table-column label="期刊主图" align="center" prop="imageUrl">
|
||||
<template slot-scope="{row}">
|
||||
<el-image v-if="row.imageUrl" class="row-image" :src="'/jhapi' + row.imageUrl + '.min.jpg'"
|
||||
:preview-src-list="['/jhapi' + row.imageUrl]"></el-image>
|
||||
<el-image v-if="row.imageUrl && row.imageUrl.length>0" class="row-image" :src="row.imageUrl[0] + '.min.jpg'"
|
||||
:preview-src-list="row.imageUrl"></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标题" align="center" prop="title">
|
||||
|
@ -65,7 +65,10 @@ export default {
|
|||
|
||||
methods: {
|
||||
doRowClick(row,col,e){
|
||||
this.$refs.dlg.showDialog(row);
|
||||
if(e.target.className.indexOf("el-image__inner")==-1){
|
||||
//this.$refs.dlg.showDialog(row);
|
||||
e.target.offsetParent.parentElement.querySelector(".el-image__inner").click();
|
||||
}
|
||||
},
|
||||
handleCurrentChange(n) {
|
||||
this.index = n;
|
||||
|
@ -98,7 +101,9 @@ export default {
|
|||
if (tmps && tmps.length > 0) {
|
||||
tmps = tryToJson(tmps, []);
|
||||
if (tmps.length > 0) {
|
||||
it.imageUrl = tmps[0];
|
||||
it.imageUrl = tmps.map(it=>{
|
||||
return "/jhapi"+it;
|
||||
});
|
||||
}
|
||||
}
|
||||
return it;
|
||||
|
|
|
@ -50,7 +50,8 @@
|
|||
@click="doShowAttendanceDetail">
|
||||
<div class="warning-info-title" style="padding-left: 20px;">
|
||||
<div :class="infoNav == 0 ? 'active' : ''" @click="onWarningInfoNav(0)">在岗人数</div>
|
||||
<div :class="infoNav == 1 ? 'active' : ''" @click="onWarningInfoNav(1)">今日出勤</div>
|
||||
<div :class="infoNav == 1 ? 'active' : ''" @click="onWarningInfoNav(1)">离岗人数</div>
|
||||
<div :class="infoNav == 2 ? 'active' : ''" @click="onWarningInfoNav(2)">今日出勤</div>
|
||||
</div>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
|
@ -470,42 +471,9 @@ export default {
|
|||
}
|
||||
this.loading = true;
|
||||
});
|
||||
this.$bus.$on("loadProjects", debounce(prjs => {
|
||||
this.prjs = prjs;
|
||||
if (this.prj.id == 0) {
|
||||
this.prjInfo = this.prjs[1];
|
||||
}
|
||||
}));
|
||||
this.$bus.$on("projectChange", debounce(res => {
|
||||
if (res.id == 0) {
|
||||
const func = () => {
|
||||
if (this.prjs && this.prjs.length > 1) {
|
||||
this.prjInfo = this.prjs[1];
|
||||
} else {
|
||||
setTimeout(func, 100);
|
||||
}
|
||||
}
|
||||
func();
|
||||
} else {
|
||||
this.prjInfo = res;
|
||||
}
|
||||
this.prj = res;
|
||||
this.investmentAmountData1[0].value = "" + res.paidAmount * 1.0;
|
||||
this.investmentAmountData2[0].value = "" + res.onAccountAmount * 1.0;
|
||||
this.elKey++;
|
||||
this.onWarningInfoNav(0);
|
||||
this.sumCostOutByDeptId();
|
||||
this.groupByProjectCategory(this.deptInfo.id);
|
||||
|
||||
}));
|
||||
this.$bus.$on("deptChange", debounce(dept => {
|
||||
this.deptInfo = dept;
|
||||
this.groupByProjectCategory(dept.id);
|
||||
this.onClickoOverview(0)
|
||||
this.qualityNavClick(0);
|
||||
this.onWarningInfoNav(0);
|
||||
this.sumCostOutByDeptId();
|
||||
}));
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if(this.$root.hasInitHeader){
|
||||
this.initMe();
|
||||
}
|
||||
|
@ -549,12 +517,13 @@ export default {
|
|||
//查询在岗人数
|
||||
loadAttendanceData(){
|
||||
let data={
|
||||
id:this.infoNav,
|
||||
subDeptId:this.deptInfo.id||0,
|
||||
projectId:this.prj.id||0,
|
||||
attendanceTime: this.$dt(new Date()).format("YYYY-MM-DD")
|
||||
}
|
||||
let ajax=this.$api.attendance.groupByComany
|
||||
if (this.infoNav == 0) {
|
||||
if (this.infoNav != 2) {
|
||||
ajax=this.$api.attendance.groupAllByComany
|
||||
}
|
||||
ajax(data).then(d=>{
|
||||
|
@ -609,12 +578,16 @@ export default {
|
|||
});
|
||||
},
|
||||
qualityNavClick(n) {
|
||||
let dt1=this.$dt((+new Date())-30*24*3600*1000);
|
||||
let dt2=this.$dt(new Date());
|
||||
this.qualityNav = n;
|
||||
if (n == 0) {
|
||||
this.qualityNavTitle = "安全隐患总数";
|
||||
let postData = {
|
||||
deptId: this.deptInfo?.id || 0,
|
||||
roleType: 0
|
||||
roleType: 0,
|
||||
startDate:this.$dt(dt1).format("YYYY-MM-DD"),
|
||||
endDate:this.$dt(dt2).format("YYYY-MM-DD"),
|
||||
};
|
||||
this.$api.problemmodify.safetySummary(postData).then(d => {
|
||||
let tmps= (d || []).map(it => {
|
||||
|
@ -637,7 +610,9 @@ export default {
|
|||
} else {
|
||||
let postData = {
|
||||
deptId: this.deptInfo?.id || 0,
|
||||
roleType: 0
|
||||
roleType: 0,
|
||||
startDate:this.$dt(dt1).format("YYYY-MM-DD"),
|
||||
endDate:this.$dt(dt2).format("YYYY-MM-DD"),
|
||||
};
|
||||
this.qualityNavTitle = "质量隐患总数";
|
||||
this.$api.problemmodify.qualitySummary(postData).then(d => {
|
||||
|
@ -668,7 +643,7 @@ export default {
|
|||
return x;
|
||||
},
|
||||
doShowDlg3() {
|
||||
this.$refs.dlg3.showDialog()
|
||||
this.$refs.dlg3.showDialog(this.deptInfo?.id || 0)
|
||||
},
|
||||
doShowDlg1() {
|
||||
this.$refs.dlg1.showDialog()
|
||||
|
@ -730,8 +705,8 @@ export default {
|
|||
//劳务人员概况
|
||||
onWarningInfoNav(n) {
|
||||
this.infoNav = n
|
||||
this.staffText = n == 0 ? '在岗人数' : '今日出勤'
|
||||
if (n == 0) {
|
||||
this.staffText = n == 0 ? '在岗人数' : n == 1?'离岗人数': '今日出勤'
|
||||
if (n == 0||n==1) {
|
||||
this.surveyUrl = 'images/survey_icon_4.png'
|
||||
} else {
|
||||
this.surveyUrl = 'images/survey_icon_5.png'
|
||||
|
|
|
@ -1,84 +1,42 @@
|
|||
<template>
|
||||
<MyDialog v-if="show" v-model="show" width="1000px" ref="dlg">
|
||||
<template slot="title">
|
||||
<div class="warning-info-title" style="padding-left: 20px;" v-if="1==2">
|
||||
<div :class="nav == 0 ? 'active' : ''" class="nav-item" @click="toggleNav(0)">重点项目计划汇总</div>
|
||||
<div :class="nav == 1 ? 'active' : ''" class="nav-item" @click="toggleNav(1)">按续建、新建、前期项目分类</div>
|
||||
<div :class="nav == 2 ? 'active' : ''" class="nav-item" @click="toggleNav(2)">按省、市、新区、新城级分类</div>
|
||||
<div class="warning-info-title" style="padding-left: 20px;">
|
||||
<div :class="nav == 'a1' ? 'active' : ''" class="nav-item" @click="toggleNav('a1')">按在建、前期、拟建、完成项目分类</div>
|
||||
<div :class="nav == 'a2' ? 'active' : ''" class="nav-item" @click="toggleNav('a2')">按省、市、新区、新城级分类</div>
|
||||
</div>
|
||||
<el-tabs v-model="nav" class="my-tabs" >
|
||||
<el-tab-pane label="重点项目计划汇总" name="0"></el-tab-pane>
|
||||
<el-tab-pane label="按续建、新建、前期项目分类" name="1"></el-tab-pane>
|
||||
<el-tab-pane label="按省、市、新区、新城级分类" name="2"></el-tab-pane>
|
||||
<el-tabs v-model="nav" class="my-tabs" @tab-click="handleClick" v-if="1==2">
|
||||
<el-tab-pane label="按在建、前期、拟建、完成项目分类" name="a1"></el-tab-pane>
|
||||
<el-tab-pane label="按省、市、新区、新城级分类" name="a2"></el-tab-pane>
|
||||
</el-tabs>
|
||||
</template>
|
||||
<h1 v-if="1==2">产业发展集团2023年重点项目计划概述2023.4.12.xlsx</h1>
|
||||
<el-table v-show="nav == 0" :data="tableData1" class="mytable" height="500" style="width: 100%;background: transparent;">
|
||||
|
||||
<el-table-column prop="prj" label="重点项目计划项目个数" width="200"> </el-table-column>
|
||||
<el-table-column prop="node" label="总投资(亿元)" width="150">
|
||||
<el-table :data="tableData" class="mytable" height="500" style="width: 100%;background: transparent;">
|
||||
<el-table-column prop="remark" label="分类项" >
|
||||
<template slot-scope="scope">
|
||||
<span style="color:#01A9FF;font-size: 12px;">{{ scope.row.node }}</span>
|
||||
<span style="color:#fff;font-size: 12px;">{{ scope.row.remark }}项目</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="days" label="年度投资(亿元)" width="120">
|
||||
<el-table-column prop="money" label="项目数" >
|
||||
<template slot-scope="scope">
|
||||
<span style="color:red">{{ scope.row.days }}</span>
|
||||
<span style="color:#01A9FF;font-size: 12px;">{{ scope.row.month }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="date" label="备注" class-name="text-left">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-table v-show="nav == 1" :data="tableData2" class="mytable my-data2" style="width: 100%;background: transparent;"
|
||||
ref="fbsubordinateUnit">
|
||||
|
||||
<el-table-column prop="prj" label="分类项" class-name="text-left" width="150">
|
||||
<el-table-column prop="money" label="总投资(亿元)" >
|
||||
<template slot-scope="scope">
|
||||
<span style="font-size: 16px;font-weight: bold;">{{ scope.row.prj }}</span>
|
||||
<span style="color:red;font-size: 12px;">{{ scope.row.money.toFixed(2) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="node" label="项目数" width="150" >
|
||||
<el-table-column prop="money2" label="年度投资(亿元)" >
|
||||
<template slot-scope="scope">
|
||||
<span style="color:#01A9FF;font-size: 12px;">{{ scope.row.node }}</span>
|
||||
<span style="color:#fff">{{ scope.row.money2.toFixed(2) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="days" label="总投资(亿元)">
|
||||
<template slot-scope="scope">
|
||||
<span style="color:red">{{ scope.row.days }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="date" label="年度投资(亿元)">
|
||||
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
|
||||
<el-table v-show="nav == 2" :data="tableData3" class="mytable my-data2" style="width: 100%;background: transparent;"
|
||||
ref="fbsubordinateUnit">
|
||||
|
||||
<el-table-column prop="prj" label="分类项" class-name="text-left" width="150">
|
||||
<template slot-scope="scope">
|
||||
<span style="font-size: 16px;font-weight: bold;">{{ scope.row.prj }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="node" label="项目数" width="150" >
|
||||
<template slot-scope="scope">
|
||||
<span style="color:#01A9FF;font-size: 12px;">{{ scope.row.node }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="days" label="总投资(亿元)" width="150">
|
||||
<template slot-scope="scope">
|
||||
<span style="color:red">{{ scope.row.days }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="date" label="年度投资(亿元)" width="150">
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column prop="bak" label="备注" class-name="text-left">
|
||||
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</MyDialog>
|
||||
</template>
|
||||
|
@ -92,52 +50,40 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'second',
|
||||
nav: 0,
|
||||
nav: "a1",
|
||||
dept:0,
|
||||
show: false,
|
||||
tableData1: [],
|
||||
tableData2: [],
|
||||
tableData3: [],
|
||||
tableData: []
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
|
||||
mounted() {
|
||||
window.dlg2 = this
|
||||
this.tableData1 = [
|
||||
{ prj: '65', node: '515.97', days: 134.86, date: '投资说明:芯片项目总投26亿元,年度投资20亿元;置业6宗住宅用地及城投3宗娱乐用地总投33亿元,协同创新基地总投5亿元。' },
|
||||
|
||||
|
||||
]
|
||||
|
||||
this.tableData2 = [
|
||||
{ prj: '续建项目', node: '15', days: 183.28, date: '71.32' },
|
||||
{ prj: '新建项目', node: '34', days: 273.93, date: '63.54' },
|
||||
{ prj: '前期项目', node: '16', days: 58.76 , date: '' },
|
||||
{ prj: '合计', node: '65', days: 515.97 , date: '134.86' },
|
||||
|
||||
]
|
||||
|
||||
|
||||
this.tableData3 = [
|
||||
{ prj: '省级重点项目', node: '9', days: 215.26, date: '60.67' ,bak:'创维、1980泾造中心二期、智谷二期、智谷一期、锦越坊、泊创广场、城市阳台院士坊、文化艺术中心、交大医院'},
|
||||
{ prj: '市级重点项目', node: '10', days: 72.29, date: '40.97' ,bak:'小动力电池一、二期、芯片产业园、创普斯二期、隆基100GW、50GW、泊跃人工智能产业园、荟锦坊一、二期、市政道路'},
|
||||
{ prj: '新区重点项目', node: '7', days: 52.44 , date: '11.39' ,bak:'城市阳台公园、崇文商业、泊湾中心、云和悦、云如逸、云雨间、泊域人才中心'},
|
||||
{ prj: '新城重点项目', node: '38', days: 175.98 , date: '21.83' },
|
||||
{ prj: '合计', node: '64', days: 515.97 , date: '134.86' },
|
||||
|
||||
|
||||
]
|
||||
|
||||
},
|
||||
mounted() {},
|
||||
|
||||
methods: {
|
||||
toggleNav(n) {
|
||||
this.nav = n;
|
||||
toggleNav(tab){
|
||||
this.nav=tab;
|
||||
this.loadData();
|
||||
},
|
||||
showDialog() {
|
||||
loadData(){
|
||||
let postData={
|
||||
id:this.dept,
|
||||
costType:this.nav=="a1"?1:2,
|
||||
year:new Date().getFullYear()
|
||||
};
|
||||
this.$api.costOut.groupBYProject(postData).then(d=>{
|
||||
this.tableData=(d.data||[]).map(it=>{
|
||||
it.money=(it.money||0)/10000.0/10000.0;
|
||||
it.money2=(it.money2||0)/10000.0/10000.0;
|
||||
return it;
|
||||
});
|
||||
});
|
||||
},
|
||||
showDialog(dept) {
|
||||
this.dept=dept;
|
||||
this.show = true
|
||||
this.loadData();
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -72,13 +72,9 @@ export default {
|
|||
},
|
||||
|
||||
mounted() {
|
||||
this.$bus.$on("loadProjects", debounce(prjs => {
|
||||
this.prjs = prjs;
|
||||
}));
|
||||
this.$bus.$on("projectChange", debounce(res => {
|
||||
this.prj = res;
|
||||
this.loadData2();
|
||||
}));
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
|
|
|
@ -66,14 +66,9 @@ export default {
|
|||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on("deptChange", debounce(dept => {
|
||||
this.dept = dept;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("projectChange", debounce(res => {
|
||||
this.prj = res;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
this.info = this.scheduleInfo || {};
|
||||
this.prj = this.prjInfo || {};
|
||||
if(this.$root.hasInitHeader){
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -142,17 +142,9 @@ export default {
|
|||
},
|
||||
|
||||
mounted() {
|
||||
this.$bus.$on("loadProjects", debounce(prjs => {
|
||||
this.prjs = prjs;
|
||||
}));
|
||||
this.$bus.$on("projectChange",debounce(res => {
|
||||
this.project = res;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("deptChange",debounce(dept => {
|
||||
this.dept = dept;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
this.loadPeriodical();
|
||||
if(this.$root.hasInitHeader){
|
||||
this.initMe();
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
{{ row.mag }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-for="(it, idx) in dataListTitles" :label="it">
|
||||
<el-table-column v-for="(it, idx) in dataListTitles" :label="it" :key="idx">
|
||||
<template slot-scope="{row}">
|
||||
<span style="cursor: pointer;" @click="showMagDlg(row,idx)">{{ row.list[idx].cnt }}</span>
|
||||
</template>
|
||||
|
@ -90,7 +90,7 @@
|
|||
<el-option v-for="item in magList" :key="item.id" :label="item.name" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div class="scroll mag-ord-list">
|
||||
<div class="scroll mag-ord-list" style="max-height: calc(100% - 50px);overflow-y: auto;">
|
||||
<div v-if="magOrdList.length == 0 && !loading" style="text-align: center;margin-top: 40px;">
|
||||
<img src="images/nodata.png" style="width: 240px;">
|
||||
<div style="text-align: center;">暂无数据</div>
|
||||
|
@ -169,7 +169,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column prop="remark" label="项目名称"/>
|
||||
<el-table-column prop="costName" label="成本名称"/>
|
||||
<el-table-column prop="money" label="付款金额(万元)">
|
||||
<el-table-column prop="money" label="申报金额(万元)">
|
||||
<template slot-scope="{row}">
|
||||
{{ (row.money||0).toFixed(2) }}
|
||||
</template>
|
||||
|
@ -228,17 +228,9 @@ export default {
|
|||
},
|
||||
|
||||
mounted() {
|
||||
this.$bus.$on("loadProjects", debounce(prjs => {
|
||||
this.prjs = prjs;
|
||||
}));
|
||||
this.$bus.$on("projectChange", debounce(res => {
|
||||
this.project = res;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("deptChange", debounce(dept => {
|
||||
this.dept = dept;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
|
|
|
@ -453,22 +453,9 @@ export default {
|
|||
this.loadPlan();
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on("projectChange", debounce(res => {
|
||||
this.prjInfo = res;
|
||||
this.loadProjectConstructionProgress();
|
||||
this.selectScheduledAlerts();
|
||||
this.selectCompletionRate();
|
||||
}));
|
||||
this.$bus.$on("loadProjects", debounce(prjs => {
|
||||
this.projects = prjs;
|
||||
}));
|
||||
this.$bus.$on("deptChange", debounce(dept => {
|
||||
this.dept = dept;
|
||||
this.groupByProjectCategory(dept.id);
|
||||
this.deptChange();
|
||||
this.selectScheduledAlerts();
|
||||
this.selectCompletionRate();
|
||||
}))
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if(this.$root.hasInitHeader){
|
||||
this.initMe();
|
||||
}
|
||||
|
@ -530,6 +517,7 @@ export default {
|
|||
postData.id = this.dept.id;
|
||||
prjs=this.projects||[];
|
||||
} else {
|
||||
postData.id = this.dept.id;
|
||||
postData.projectId = this.prjInfo.id;
|
||||
prjs=[this.prjInfo];
|
||||
}
|
||||
|
@ -543,6 +531,7 @@ export default {
|
|||
if ((this.prjInfo?.id||0) == 0) {
|
||||
postData.id = this.dept?.id||0;
|
||||
} else {
|
||||
postData.id = this.dept?.id||0;
|
||||
postData.projectId = this.prjInfo.id;
|
||||
}
|
||||
this.$api.buildNode.selectScheduledAlerts(postData).then(d => {
|
||||
|
|
|
@ -321,7 +321,7 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
materialSealList: [],
|
||||
selDate: "",
|
||||
selDate: [],
|
||||
elKey: 0,
|
||||
materialSealEl: 0,
|
||||
elSummaryKey: 0,
|
||||
|
@ -420,32 +420,12 @@ export default {
|
|||
this.init();
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on(
|
||||
"loadProjects",
|
||||
debounce((prjs) => {
|
||||
this.prjs = prjs;
|
||||
})
|
||||
);
|
||||
this.$bus.$on(
|
||||
"projectChange",
|
||||
debounce((res) => {
|
||||
this.projectInfo = res;
|
||||
this.doDeptChane();
|
||||
this.checkDetection(0);
|
||||
this.doMeasuredNav(0, "汇总");
|
||||
this.selectTop20materialSeal();
|
||||
})
|
||||
);
|
||||
this.$bus.$on(
|
||||
"deptChange",
|
||||
debounce((dept) => {
|
||||
this.dept = dept;
|
||||
this.doDeptChane();
|
||||
this.checkDetection(0);
|
||||
this.doMeasuredNav(0, "汇总");
|
||||
this.selectTop20materialSeal();
|
||||
})
|
||||
);
|
||||
let dt1=this.$dt((+new Date())-30*24*3600*1000);
|
||||
let dt2=this.$dt(new Date());
|
||||
this.selDate=[dt1,dt2];
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
|
|
|
@ -397,7 +397,7 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
dictWorkTrainDataType: [],
|
||||
selDate: '',
|
||||
selDate: [],
|
||||
elSummaryKey: 0,
|
||||
elSummaryPrjKey: 0,
|
||||
elKey: 0,
|
||||
|
@ -483,50 +483,44 @@ export default {
|
|||
});
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on("projectChange", debounce(res => {
|
||||
this.projectInfo = res;
|
||||
this.doDeptChane();
|
||||
this.getWorkTrainChart();
|
||||
//this.getWorkTrainList();
|
||||
//this.getEmergencyDrillList();
|
||||
this.getProjectSpecialView();
|
||||
this.getDeptSafetyWorksList();
|
||||
this.getProjectInsuranceList();
|
||||
}));
|
||||
this.$bus.$on("loadProjects", debounce(prjs => {
|
||||
this.projects = prjs;
|
||||
}))
|
||||
this.$bus.$on("deptChange", debounce(dept => {
|
||||
this.dept = dept;
|
||||
this.doDeptChane();
|
||||
//this.getWorkTrainList();
|
||||
//this.getEmergencyDrillList();
|
||||
this.getProjectSpecialView();
|
||||
this.getDeptSafetyWorksList();
|
||||
this.getProjectInsuranceList();
|
||||
if (this.fileNav == 3) {
|
||||
this.getWorkFileList();
|
||||
}
|
||||
}));
|
||||
let dt1=this.$dt((+new Date())-30*24*3600*1000);
|
||||
let dt2=this.$dt(new Date());
|
||||
this.selDate=[dt1,dt2];
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
getPrjId(cb){
|
||||
let isFromPrj=(+this.$route.meta?.nav)>200;//是否是从项目详情打开
|
||||
if(isFromPrj){
|
||||
this.getProjectId(id=>{
|
||||
cb(id);
|
||||
});
|
||||
}else{
|
||||
cb(this.projectInfo?.id || 0);
|
||||
}
|
||||
},
|
||||
doShowWorkTrain(type) {
|
||||
this.getPrjId(prjId=>{
|
||||
this.$refs.workTrainListDlg.showDialog({
|
||||
type: type,
|
||||
deptId: this.dept.id || 0,
|
||||
projectId: this.projectInfo?.id || 0,
|
||||
projectId: prjId,
|
||||
prj: this.projectInfo || {},
|
||||
dicts: this.dictWorkTrainDataType.filter(d => d.cssClass == (type == 0 ? 'a' : 'b'))
|
||||
});
|
||||
});
|
||||
},
|
||||
doShowAttendanceDetail() {
|
||||
this.getPrjId(prjId=>{
|
||||
let data = {
|
||||
deptId: this.dept.id || 0,
|
||||
projectId: this.projectInfo?.id || 0,
|
||||
projectId: prjId,
|
||||
attendanceTime: this.$dt(new Date()).format("YYYY-MM-DD")
|
||||
}
|
||||
if (this.infoNav == 1) {
|
||||
|
@ -534,6 +528,7 @@ export default {
|
|||
} else {
|
||||
this.$refs.jobWorkerdlg.showDialog(data);
|
||||
}
|
||||
});
|
||||
},
|
||||
initMe() {
|
||||
this.projectInfo = this.$root.project || {};
|
||||
|
@ -584,7 +579,8 @@ export default {
|
|||
});
|
||||
},
|
||||
getWorkTrainChart() {
|
||||
this.$api.workTrain.getGroupByDataType(this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||
this.getPrjId(prjId=>{
|
||||
this.$api.workTrain.getGroupByDataType(this.dept?.id || 0, prjId).then(d => {
|
||||
this.WorkTrainChart1 = (d.data || []).filter(it => it.trainType === 'a').map(it => { return { value: it.id || 0, name: it.trainTitle } });
|
||||
this.WorkTrainChart2 = (d.data || []).filter(it => it.trainType === 'b').map(it => { return { value: it.id || 0, name: it.trainTitle } });
|
||||
let cnt = 0;
|
||||
|
@ -665,31 +661,40 @@ export default {
|
|||
};
|
||||
this.$refs.chart4.init(opt2);
|
||||
});
|
||||
});
|
||||
},
|
||||
// 获取教育培训列表
|
||||
getWorkTrainList() {
|
||||
this.$api.workTrain.getWorkTrainList(0, this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||
this.getPrjId(prjId=>{
|
||||
this.$api.workTrain.getWorkTrainList(0, this.dept?.id || 0, prjId).then(d => {
|
||||
this.workTrainList = d.rows;
|
||||
});
|
||||
});
|
||||
},
|
||||
// 获取教育培训列表
|
||||
getEmergencyDrillList() {
|
||||
this.$api.workTrain.getWorkTrainList(1, this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||
this.getPrjId(prjId=>{
|
||||
this.$api.workTrain.getWorkTrainList(1, this.dept?.id || 0, prjId).then(d => {
|
||||
this.emergencyDrillList = d.rows;
|
||||
});
|
||||
});
|
||||
},
|
||||
// 获取特种人员数据列表
|
||||
getProjectSpecialView() {
|
||||
this.$api.special.getProjectSpecialView(this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||
this.getPrjId(prjId=>{
|
||||
this.$api.special.getProjectSpecialView(this.dept?.id || 0, prjId).then(d => {
|
||||
this.specialDataList = d.rows;
|
||||
});
|
||||
});
|
||||
},
|
||||
//查询安全作业概况
|
||||
getDeptSafetyWorksList() {
|
||||
//查询安全作业
|
||||
this.$api.flow.findSafetyWorkList(this.dept?.id || 0, this.projectInfo?.id || 0, this.infoNav).then(d => {
|
||||
this.getPrjId(prjId=>{
|
||||
this.$api.flow.findSafetyWorkList(this.dept?.id || 0, prjId, this.infoNav).then(d => {
|
||||
this.safetyWorkFlowList = d.data || [];
|
||||
});
|
||||
});
|
||||
},
|
||||
getProjectId(cb) {
|
||||
let func = () => {
|
||||
|
@ -747,12 +752,14 @@ export default {
|
|||
});
|
||||
},
|
||||
getProjectInsuranceList() {
|
||||
this.$api.insurance.getProjectInsuranceList(this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||
this.getPrjId(prjId=>{
|
||||
this.$api.insurance.getProjectInsuranceList(this.dept?.id || 0, prjId).then(d => {
|
||||
this.insuranceDataList = [];
|
||||
if (d.rows.length > 0 && d.rows[0] != null) {
|
||||
this.insuranceDataList = d.rows;
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
fmt(n) {
|
||||
n = "" + n;
|
||||
|
|
|
@ -319,27 +319,9 @@ export default {
|
|||
},
|
||||
mounted() {
|
||||
window.xapp = this;
|
||||
this.$bus.$on(
|
||||
"projectChange",
|
||||
debounce((res) => {
|
||||
this.projectInfo = res;
|
||||
this.initVideoMenu();
|
||||
})
|
||||
);
|
||||
this.$bus.$on(
|
||||
"loadProjects",
|
||||
debounce((prjs) => {
|
||||
this.projectInfos = prjs;
|
||||
//this.initVideoMenu();
|
||||
})
|
||||
);
|
||||
this.$bus.$on(
|
||||
"deptChange",
|
||||
debounce((dept) => {
|
||||
this.dept = dept;
|
||||
//this.initVideoMenu();
|
||||
})
|
||||
);
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
|
|
|
@ -34,16 +34,37 @@
|
|||
</svg>
|
||||
</i>
|
||||
</div>
|
||||
<div class="data-list scroll" style="max-height:770px;overflow-y: auto;margin:12px 0px;overflow-x: hidden;" v-if="dataTable.length>0">
|
||||
<template v-if="dataTable.length>0">
|
||||
<div class="data-list scroll" style="max-height:730px;overflow-y: auto;margin:12px 0px;overflow-x: hidden;" >
|
||||
<div v-for="(it, idx) in dataTable" :key="idx" class="data-item"
|
||||
:class="it.timeout ? 'time-out' : ''">
|
||||
<div class="item-left">
|
||||
<el-image ref="preview" style="width: 400px; " :preview-src-list="[it.detectionFile]" v-if="it.detectionFile"
|
||||
:src="it.detectionFile + '.1000.jpg'">
|
||||
</el-image>
|
||||
<div v-else style="text-align: center;">
|
||||
<div v-else style="text-align: center;height:100%" class="left-imglist">
|
||||
<template v-if="it.trustDeed||it.specimenPhoto">
|
||||
<el-carousel>
|
||||
<el-carousel-item>
|
||||
<el-image ref="preview" style="width: 400px; " :preview-src-list="['/jhapi/'+it.trustDeed]" v-if="it.trustDeed"
|
||||
:src="'/jhapi/'+it.trustDeed + '.1000.jpg'">
|
||||
</el-image>
|
||||
<div class="div-tip">委托单</div>
|
||||
</el-carousel-item>
|
||||
<el-carousel-item>
|
||||
<el-image ref="preview" style="width: 400px; " :preview-src-list="['/jhapi/'+it.specimenPhoto]" v-if="it.specimenPhoto"
|
||||
:src="'/jhapi/'+it.specimenPhoto + '.1000.jpg'">
|
||||
</el-image>
|
||||
<div class="div-tip">样品照片</div>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
|
||||
|
||||
</template>
|
||||
<template v-else>
|
||||
<img src="images/nodata.png" style="width: 240px;">
|
||||
<div style="text-align: center;">暂无图片</div>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -62,7 +83,9 @@
|
|||
</el-col>
|
||||
<el-col :span="fontSize==2?12:12" class="item-data">
|
||||
<img src="images/title_icon.png"><span class="sp-lbl sp-lbl2">材料名称:</span>
|
||||
<div class="div-text">{{ it.materialName }}</div>
|
||||
<div class="div-text">{{ it.materialName }}
|
||||
<el-link v-if="it.attachmentFiles && it.attachmentFiles.length>0" type="primary" @click="downFiles(it.attachmentFiles)">下载附件</el-link>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="fontSize==2?12:12" class="item-data">
|
||||
<img src="images/title_icon.png"><span class="sp-lbl sp-lbl2">使用部位:</span>
|
||||
|
@ -120,6 +143,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-pagination layout="total,prev, pager, next" :hide-on-single-page="true"
|
||||
@current-change="handleCurrentChange" :total="total" :page-size="size" :current-page.sync="index"
|
||||
class="bg-pagination"></el-pagination>
|
||||
</template>
|
||||
<div v-else style="text-align: center;margin-top: 200px;">
|
||||
<img src="images/nodata.png" style="width: 240px;">
|
||||
<div style="text-align: center;">暂无数据</div>
|
||||
|
@ -139,23 +166,47 @@ export default {
|
|||
return {
|
||||
fontSize: 0,
|
||||
title:'',
|
||||
size: 10,
|
||||
index: 1,
|
||||
total: 0,
|
||||
show: false,
|
||||
dataTable: []
|
||||
dataTable: [],
|
||||
opt:{}
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
downFiles(files){
|
||||
files.forEach(item=>{
|
||||
if (item) {
|
||||
this.$api.downFile("/jhapi" + item, {}, item.substring(item.lastIndexOf("/") + 1));
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCurrentChange(n) {
|
||||
this.index = n;
|
||||
this.loadData();
|
||||
},
|
||||
toggleNav(n) {
|
||||
this.nav = n;
|
||||
},
|
||||
showDialog(opt) {
|
||||
|
||||
this.show = true
|
||||
this.$api.checkDetection.getList(opt).then(d=>{
|
||||
this.dataTable=d.data||[];
|
||||
this.title="材料进场取样复试-"+['汇总','钢筋原材料','钢筋试拉件','混凝土试件','其他'][opt.checkType||0]+`[${this.dataTable.length}]`;
|
||||
this.opt=opt;
|
||||
this.loadData();
|
||||
},
|
||||
loadData(){
|
||||
this.$api.checkDetection.getList({
|
||||
...this.opt
|
||||
},this.size,this.index).then(d=>{
|
||||
this.total=d.total||0;
|
||||
this.dataTable=(d.rows||[]).map(it=>{
|
||||
it.attachmentFiles=this.$tryToJson(it.attachment,[]);
|
||||
return it;
|
||||
});
|
||||
this.title="材料进场取样复试-"+['汇总','钢筋原材料','钢筋试拉件','混凝土试件','其他'][this.opt.checkType||0]+`[${this.dataTable.length}]`;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
@ -258,6 +309,20 @@ export default {
|
|||
width: 400px;
|
||||
min-height: 220px;
|
||||
align-items: center;
|
||||
.left-imglist{
|
||||
width: 100%;
|
||||
height:100%;
|
||||
.el-carousel{
|
||||
height: 100%;
|
||||
.el-carousel__item{
|
||||
.div-tip{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom:40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-state {
|
||||
|
|
|
@ -79,8 +79,9 @@
|
|||
<el-col :span="fontSize==2?12:12" class="item-data">
|
||||
<img src="images/title_icon.png"><span class="sp-lbl sp-lbl2">测量结果:</span>
|
||||
<div class="div-text">
|
||||
<el-tag v-if="it.measureResult == null " type="success">进行中</el-tag>
|
||||
<el-tag v-if="it.measureResult == '1'" type="success">合格</el-tag>
|
||||
<el-tag v-else type="danger">不合格</el-tag>
|
||||
<el-tag v-if="it.measureResult == '2'" type="success">不合格</el-tag>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="fontSize==2?12:12" class="item-data">
|
||||
|
|
|
@ -204,20 +204,9 @@ export default {
|
|||
});
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on(
|
||||
"loadProjects",
|
||||
debounce((prjs) => {
|
||||
this.prjs = prjs;
|
||||
})
|
||||
);
|
||||
this.$bus.$on("projectChange", throttle((res) => {
|
||||
this.projectInfo = res;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("deptChange", throttle((dept) => {
|
||||
this.dept = dept;
|
||||
this.loadData();
|
||||
}));
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
|
|
|
@ -91,6 +91,9 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="row.attFiles && row.attFiles.length>0">
|
||||
<el-link type="primary" @click="downFiles(row.attFiles)">下载附件</el-link>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
@ -120,10 +123,18 @@ export default {
|
|||
},
|
||||
|
||||
methods: {
|
||||
downFiles(files){
|
||||
files.forEach(item=>{
|
||||
if (item) {
|
||||
this.$api.downFile("/jhapi" + item, {}, item.substring(item.lastIndexOf("/") + 1));
|
||||
}
|
||||
})
|
||||
},
|
||||
download(it) {
|
||||
window.open(it.insuranceFile)
|
||||
},
|
||||
showDialog(row) {
|
||||
row.attFiles=this.$tryToJson(row.checkingFiles,[]);
|
||||
this.row = row;
|
||||
this.images = this.getBigProfileImage(row);
|
||||
this.show = true;
|
||||
|
|
|
@ -384,33 +384,9 @@ export default {
|
|||
this.forIndex = 0;
|
||||
},
|
||||
mounted() {
|
||||
this.$bus.$on(
|
||||
"projectChange",
|
||||
debounce((res) => {
|
||||
this.projectInfo = res;
|
||||
console.log("项目改变");
|
||||
console.log(this.projectInfo);
|
||||
this.init();
|
||||
})
|
||||
);
|
||||
this.$bus.$on(
|
||||
"loadProjects",
|
||||
debounce((prjs) => {
|
||||
this.projectInfos = prjs;
|
||||
console.log("项目加载");
|
||||
console.log(this.projectInfos);
|
||||
this.init();
|
||||
})
|
||||
);
|
||||
this.$bus.$on(
|
||||
"deptChange",
|
||||
debounce((dept) => {
|
||||
this.dept = dept;
|
||||
console.log("部门改变");
|
||||
console.log(this.dept);
|
||||
this.init();
|
||||
})
|
||||
);
|
||||
this.$bus.$on("headerChange",()=>{
|
||||
this.initMe();
|
||||
});
|
||||
if (this.$root.hasInitHeader) {
|
||||
this.initMe();
|
||||
}
|
||||
|
|
|
@ -35,16 +35,59 @@ const routes = [
|
|||
meta:{nav:4,},
|
||||
component: () => import(/* webpackChunkName: "quality" */ '../pages/projectQuality.vue')
|
||||
} ,
|
||||
{
|
||||
path: '/prjQuality',
|
||||
name: 'prjQuality',
|
||||
meta:{nav:209,},
|
||||
component: () => import(/* webpackChunkName: "quality" */ '../pages/projectQuality.vue')
|
||||
} ,
|
||||
{
|
||||
path: '/prjProgress',
|
||||
name: 'prjProgress',
|
||||
meta:{nav:210,},
|
||||
component: () => import(/* webpackChunkName: "progress" */ '../pages/projectProgress.vue')
|
||||
}
|
||||
,
|
||||
{
|
||||
path: '/prjVideo',
|
||||
name: 'prjVideo',
|
||||
meta:{nav:211,},
|
||||
component: () => import(/* webpackChunkName: "video" */ '../pages/projectVideo.vue')
|
||||
},
|
||||
{
|
||||
path: '/prjAiVideo',
|
||||
name: 'prjAiVideo',
|
||||
meta:{nav:212,},
|
||||
component: () => import(/* webpackChunkName: "video" */ '../pages/toAIVideoProject.vue')
|
||||
},
|
||||
{
|
||||
path: '/prjPhotography',
|
||||
name: 'prjPhotography',
|
||||
meta:{nav:213,},
|
||||
component: () => import(/* webpackChunkName: "video" */ '../pages/photography.vue')
|
||||
},
|
||||
{
|
||||
path: '/prjEngin',
|
||||
name: 'prjEngin',
|
||||
meta:{nav:214,},
|
||||
component: () => import(/* webpackChunkName: "video" */ '../pages/projectEngin.vue')
|
||||
},
|
||||
{
|
||||
path: '/prjEnginAuditing',
|
||||
name: 'prjEnginAuditing',
|
||||
meta:{nav:215,},
|
||||
component: () => import(/* webpackChunkName: "video" */ '../pages/engin/auditingPage.vue')
|
||||
},
|
||||
{
|
||||
path: '/concreteStrength',
|
||||
name: 'concreteStrength',
|
||||
meta:{nav:27,},
|
||||
meta:{nav:207,},
|
||||
component: () => import(/* webpackChunkName: "concreteStrength" */ '../pages/quality/concreteStrength.vue')
|
||||
} ,
|
||||
{
|
||||
path: '/standardCuringRoom',
|
||||
name: 'standardCuringRoom',
|
||||
meta:{nav:26,},
|
||||
meta:{nav:206,},
|
||||
component: () => import(/* webpackChunkName: "standardCuringRoom" */ '../pages/quality/standardCuringRoom.vue')
|
||||
}
|
||||
,
|
||||
|
@ -53,34 +96,40 @@ const routes = [
|
|||
name: 'safety',
|
||||
meta:{nav:3,},
|
||||
component: () => import(/* webpackChunkName: "safety" */ '../pages/projectSafety.vue')
|
||||
},
|
||||
{
|
||||
path: '/prjSafety',
|
||||
name: 'prjSafety',
|
||||
meta:{nav:208,},
|
||||
component: () => import(/* webpackChunkName: "safety" */ '../pages/projectSafety.vue')
|
||||
}
|
||||
, {
|
||||
path: '/distributionBox',
|
||||
name: 'distributionBox',
|
||||
meta:{nav:23,},
|
||||
meta:{nav:203,},
|
||||
component: () => import(/* webpackChunkName: "distributionBox" */ '../pages/safe/distributionBox.vue')
|
||||
}
|
||||
, {
|
||||
path: '/dumbwaiter',
|
||||
name: 'dumbwaiter',
|
||||
meta:{nav:24,},
|
||||
meta:{nav:204,},
|
||||
component: () => import(/* webpackChunkName: "dumbwaiter" */ '../pages/safe/dumbwaiter.vue')
|
||||
}, {
|
||||
path: '/personnelPosition',
|
||||
name: 'personnelPosition',
|
||||
meta:{nav:25,},
|
||||
meta:{nav:205,},
|
||||
component: () => import(/* webpackChunkName: "personnelPosition" */ '../pages/safe/personnelPosition.vue')
|
||||
}
|
||||
, {
|
||||
path: '/excavation',
|
||||
name: 'excavation',
|
||||
meta:{nav:22,},
|
||||
meta:{nav:202,},
|
||||
component: () => import(/* webpackChunkName: "excavation" */ '../pages/safe/excavation.vue')
|
||||
}
|
||||
, {
|
||||
path: '/towerCrane',
|
||||
name: 'towerCrane',
|
||||
meta:{nav:21,},
|
||||
meta:{nav:201,},
|
||||
component: () => import(/* webpackChunkName: "towerCrane" */ '../pages/safe/towerCrane.vue')
|
||||
}
|
||||
,
|
||||
|
|
|
@ -46,7 +46,8 @@ module.exports = defineConfig({
|
|||
}
|
||||
},
|
||||
'/profile':{
|
||||
target: `http://szgc.jhncidg.com/jhapi/profile`,
|
||||
//target: `http://szgc.jhncidg.com/jhapi/profile`,
|
||||
target: `http://62.234.3.186/profile/`,
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
'^/profile':'/'
|
||||
|
|
Loading…
Reference in New Issue