diff --git a/public/css/largeScreenStyle.css b/public/css/largeScreenStyle.css index 5e71d59..973a196 100644 --- a/public/css/largeScreenStyle.css +++ b/public/css/largeScreenStyle.css @@ -3400,7 +3400,13 @@ table{ .quality-table .el-table::before{ background: none; } - +.quality-table .el-table__footer-wrapper tbody td.el-table__cell{ + background: none ; + color: #fff ; + font-weight: bold; + font-size:16px; + border-bottom: solid 1px rgba(60, 170, 255, 0.3); +} diff --git a/src/App.vue b/src/App.vue index 0a05699..365f7f6 100644 --- a/src/App.vue +++ b/src/App.vue @@ -4,8 +4,8 @@
- -
+ +
@@ -14,8 +14,14 @@ \ No newline at end of file diff --git a/src/api/attendance/index.js b/src/api/attendance/index.js index 5368a55..79aacdc 100644 --- a/src/api/attendance/index.js +++ b/src/api/attendance/index.js @@ -45,6 +45,21 @@ const todayAttendance=(data)=>{ }) } +const workerOnDuty=(data)=>{ + return request({ + url:"bgscreen/attendance/workerOnDuty", + method:"get", + params:data + }) +} + +const groupByWorkerOnDuty=(data)=>{ + return request({ + url:"bgscreen/attendance/groupByWorkerOnDuty", + method:"get", + params:data + }) +} const selectList=(data,pageNum,pageSize)=>{ return request({ url: `bgscreen/attendance/selectList?pageNum=${pageNum}&pageSize=${pageSize}`, @@ -59,5 +74,7 @@ export default{ todayAttendance, selectList, groupAllByComany, - listAttendance + listAttendance, + workerOnDuty, + groupByWorkerOnDuty } \ No newline at end of file diff --git a/src/api/buildNode/index.js b/src/api/buildNode/index.js index 33d1336..c197d44 100644 --- a/src/api/buildNode/index.js +++ b/src/api/buildNode/index.js @@ -220,14 +220,18 @@ const covertData = (objs) => { * @param {*} data * @returns */ -const countCompletionRate = (data) => { +const countCompletionRate = (data,prjs) => { return new Promise((resolve) => { + if(!prjs || prjs.length==0){ + resolve([]); + return; + } request({ url: "bgscreen/projectBuildNode/countCompletionRate", method: "post", data: data, - }).then((d) => { - let tmps = (d.data || []).map((it) => { + }).then((d) => { + let tmps = (d.data || []).map((it) => { it.lvl = it.baseBuildNode.nodeLvl; it.projectName = it.project?.projectName || ""; it.parentLvl = it.lvl.substring(0, it.lvl.length - 2); @@ -238,8 +242,17 @@ const countCompletionRate = (data) => { it.percent = (((it.nodeId * 100.0) / it.id) * 1.0).toFixed(2); } return it; + }).sort((a,b)=>a.projectId-b.projectId); + let retTmps=prjs.filter(it=>it.id>0).map(it=>{ + let o={...it}; + let finds=tmps.filter(item=>item.projectId==it.id); + if(finds.length>0){ + o={...it,...finds[0]}; + } + return o; }); - resolve(tmps); + + resolve(retTmps); }); }); }; diff --git a/src/pages/components/JobWorkerDialog.vue b/src/pages/components/JobWorkerDialog.vue index 9a6c9b2..d7710a6 100644 --- a/src/pages/components/JobWorkerDialog.vue +++ b/src/pages/components/JobWorkerDialog.vue @@ -1,16 +1,58 @@ @@ -25,56 +67,127 @@ export default { data() { return { + loading: false, show: false, tableData: [], - projectId:0, - deptId:0, - size:10, - index:1, - total:0, - nav:1, - cnt:0, + projectId: 0, + deptId: 0, + isGroup: false, + size: 10, + index: 1, + total: 0, + nav: 101, + indexData: { + total: 0, + data101: 0, + data102: 0, + data103: 0 + }, }; }, mounted() { - + }, methods: { - handleCurrentChange(n){ - this.index=n; + handleCurrentChange(n) { + this.index = n; this.loadData(); }, - doNav(n){ - this.nav=n; - this.index=1; + doNav(n) { + this.nav = n; + this.index = 1; this.loadData(); }, showDialog(data) { - this.projectId=data?.projectId||0; - this.deptId=data?.deptId||0; - this.size=10; - this.index=1; - this.loadData(); + const getData = id => { + var tmps = data.datas.filter(d => d.text == id); + return tmps.length > 0 ? tmps[0].cnt : 0; + } + this.indexData.total = data.total; + this.indexData.data101 = getData("101"); + this.indexData.data102 = getData("102"); + this.indexData.data103 = getData("103"); + this.projectId = data?.projectId || 0; + this.deptId = data?.deptId || 0; + this.size = 10; + this.index = 1; + if (this.projectId == 0) { + this.isGroup = true; + this.loadGroupData(); + } else { + this.isGroup = false; + this.loadData(); + } this.show = true }, - loadData(){ - let postData={ - projectId:this.projectId, - deptId:this.deptId, - id:this.nav + loadGroupData() { + this.$api.attendance.groupByWorkerOnDuty({ deptId: this.deptId }).then(d => { + const getTypeId = (id) => { + let typeId = { "101": [1, 6], "102": [8], "103": [0, 2, 3, 4, 5] } + for (let k in typeId) { + let v = typeId[k]; + if (v.indexOf(id) >= 0) { + return k; + } + } + return ""; + } + let tmps = (d.data || []).map(it => { + return { + prjName: it.name, + dptName: it.groupName, + companyId: getTypeId(+it.companyId), + cnt: it.cfgid + } + }); + let sum = 0; + let obj = {}; + tmps.forEach(it => { + let k = it.prjName + "_" + it.dptName + "_"; + let o = null; + if (!obj[k]) { + o = { + prjName: it.prjName, + dptName: it.dptName, + data101: 0, + data102: 0, + data103: 0, + total:0, + }; + obj[k] = o; + } else { + o = obj[k]; + } + sum += it.cnt; + o['data' + it.companyId] += it.cnt; + }); + this.tableData = []; + for (let k in obj) { + let o=obj[k]; + o.total=o.data101+o.data102+o.data103; + this.tableData.push(o); + } + this.total = sum; + }) + }, + loadData() { + let postData = { + projectId: this.projectId, + pageSize: this.size, + pageNum: this.index, + id: this.nav } - this.$api.attendance.selectList(postData,this.index,this.size).then(d=>{ - let cnt=0; - this.total=(d.total||0) - this.tableData=(d.rows||[]).map(it=>{ - cnt+=(it.servicePersonnel||0); - cnt+=(it.supervisorPersonnel||0); - cnt+=(it.contractorPersonnel||0); + this.tableData = []; + this.loading = true; + this.$api.attendance.workerOnDuty(postData).then(d => { + this.total = d.total || 0; + this.tableData = (d.rows || []).map(it => { + it.scanPhoto = it.scanPhoto && it.scanPhoto.indexOf("/profile") == 0 ? "/jhapi" + it.scanPhoto : it.scanPhoto; return it; }); - this.cnt=cnt; + this.loading = false; }) } }, @@ -82,34 +195,37 @@ export default { \ No newline at end of file diff --git a/src/pages/dlg/projectSpecialDlg.vue b/src/pages/dlg/projectSpecialDlg.vue index a7a14c0..8ec8ed5 100644 --- a/src/pages/dlg/projectSpecialDlg.vue +++ b/src/pages/dlg/projectSpecialDlg.vue @@ -1,5 +1,5 @@