flx:冲突
This commit is contained in:
commit
945e8622b1
@ -24,7 +24,7 @@ VITE_API_URL = 'http://192.168.34.221:9111' #雄哥本地
|
|||||||
# VITE_API_URL = 'http://182.90.224.237:15551'
|
# VITE_API_URL = 'http://182.90.224.237:15551'
|
||||||
# agjt
|
# agjt
|
||||||
# VITE_API_URL = 'http://42.180.188.17:9809' #生产环境
|
# VITE_API_URL = 'http://42.180.188.17:9809' #生产环境
|
||||||
# VITE_API_URL = 'http://42.180.188.17:11211' #测试环境
|
VITE_API_URL = 'http://42.180.188.17:11211' #测试环境
|
||||||
# VITE_API_URL = 'http://jxj.zhgdyun.com:19812'
|
# VITE_API_URL = 'http://jxj.zhgdyun.com:19812'
|
||||||
# 苏立信
|
# 苏立信
|
||||||
# VITE_API_URL = 'http://101.43.164.214:11111'
|
# VITE_API_URL = 'http://101.43.164.214:11111'
|
||||||
|
|||||||
4819
package-lock.json
generated
4819
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -97,3 +97,10 @@ export const getStatsDirectorateBigScreenApi = (params: {}) => {
|
|||||||
export const getStatScoreApi = (params: {}) => {
|
export const getStatScoreApi = (params: {}) => {
|
||||||
return http.get(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/getStatScore`, params, { headers: { noLoading: true } });
|
return http.get(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/getStatScore`, params, { headers: { noLoading: true } });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 项目人员考勤
|
||||||
|
// 出勤人员/考勤日环比
|
||||||
|
export const getPersonTypeAndEduStatisticsApi = (params: {}) => {
|
||||||
|
return http.post(BASEURL + `/xmgl/workerInfo/selectPersonTypeAndEduStatistics`, params, { headers: { noLoading: true } });
|
||||||
|
};
|
||||||
|
|
||||||
|
|||||||
BIN
src/assets/images/mountain-icon.png
Normal file
BIN
src/assets/images/mountain-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
@ -27,8 +27,8 @@ export const BASE_IMAGE_URL = import.meta.env.VITE_BASE_IMAGE_URL;
|
|||||||
// export const COMPANY: string = "zhzrf"; //中海·臻如府
|
// export const COMPANY: string = "zhzrf"; //中海·臻如府
|
||||||
// export const COMPANY: string = "zsbf"; //中水北方
|
// export const COMPANY: string = "zsbf"; //中水北方
|
||||||
// export const COMPANY: string = "as"; //鞍山项目
|
// export const COMPANY: string = "as"; //鞍山项目
|
||||||
export const COMPANY: string = "agjt"; //鞍钢集团
|
// export const COMPANY: string = "agjt"; //鞍钢集团
|
||||||
// export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
|
export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
|
||||||
// export const COMPANY: string = "slx"; //苏立信项目
|
// export const COMPANY: string = "slx"; //苏立信项目
|
||||||
// export const COMPANY: string = "hfqc"; //合肥启程项目
|
// export const COMPANY: string = "hfqc"; //合肥启程项目
|
||||||
// export const COMPANY: string = "jsyc"; // 江苏盐城项目
|
// export const COMPANY: string = "jsyc"; // 江苏盐城项目
|
||||||
|
|||||||
@ -601,17 +601,24 @@ onMounted(async () => {
|
|||||||
color: white !important;
|
color: white !important;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
padding: 2px 0;
|
// padding: 2px 0;
|
||||||
height: 13%;
|
height: 13%;
|
||||||
font-size: 16px;
|
// font-size: 16px;
|
||||||
width: 200px;
|
font-size: 13px;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 25px;
|
||||||
|
width: 140px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #315296;
|
// background-color: #315296;
|
||||||
|
background: rgb(0,33,116);
|
||||||
|
background: linear-gradient(270deg, rgba(0,33,116,0.8) 0%, rgba(40,88,184,0.3) 96%);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-color {
|
.title-color {
|
||||||
background-color: #1449b6;
|
// background-color: #1449b6;
|
||||||
|
background: rgb(0,33,116);
|
||||||
|
background: linear-gradient(270deg, rgba(0,33,116,1) 0%, rgba(40,88,184,1) 96%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.notoDta {
|
.notoDta {
|
||||||
|
|||||||
@ -42,13 +42,14 @@ const openPeopleCountDialog = (index:any) => {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
.left {
|
.left {
|
||||||
height: 100%;
|
height: 109.5%;
|
||||||
width: 26%;
|
width: 26%;
|
||||||
|
transform: translateY(-70px);
|
||||||
.leftTop {
|
.leftTop {
|
||||||
height: 35%;
|
height: 24.5%;
|
||||||
}
|
}
|
||||||
.leftBottom {
|
.leftBottom {
|
||||||
height: 65%;
|
height: 75.5%;
|
||||||
margin: 3% 0 3% 0;
|
margin: 3% 0 3% 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -61,13 +62,14 @@ const openPeopleCountDialog = (index:any) => {
|
|||||||
// margin-bottom: 3%;
|
// margin-bottom: 3%;
|
||||||
}
|
}
|
||||||
.centerBottom {
|
.centerBottom {
|
||||||
height: 44.2%;
|
height: 45.85%;
|
||||||
margin: 2% 0 0 0;
|
margin: 2% 0 0 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.right {
|
.right {
|
||||||
width: 26%;
|
width: 26%;
|
||||||
height: 100%;
|
height: 109.2%;
|
||||||
|
transform: translateY(-70px);
|
||||||
// .rightAll {
|
// .rightAll {
|
||||||
// height: 32%;
|
// height: 32%;
|
||||||
// }
|
// }
|
||||||
|
|||||||
@ -7,10 +7,20 @@
|
|||||||
<div class="contentTop">
|
<div class="contentTop">
|
||||||
<div class="line1">
|
<div class="line1">
|
||||||
<span>出勤人员总数:</span>
|
<span>出勤人员总数:</span>
|
||||||
<div class="numberCard" v-for="(item,i) in '0234'" :key="i">{{item}}</div>
|
<!-- <div class="numberCard" v-for="(item,i) in '0234'" :key="i">{{item}}</div> -->
|
||||||
|
<div class="numberCard" v-for="(item,i) in totalPerson" :key="i">{{item}}</div>
|
||||||
<span style="margin-left:15px">考勤日环比</span>
|
<span style="margin-left:15px">考勤日环比</span>
|
||||||
<div class="dayRadio">0.22%</div>
|
<div style="display:flex" v-if="totalPersonRhbRatio > 0">
|
||||||
<div class="iconCenter"><el-icon size="20" color="#0262c7"><Top/></el-icon></div>
|
<div class="dayRadio">{{totalPersonRhbRatio}}%</div>
|
||||||
|
<div class="iconCenter"><el-icon size="20" color="#1E90FF"><Top/></el-icon></div>
|
||||||
|
</div>
|
||||||
|
<div style="display:flex" v-if="totalPersonRhbRatio === 0">
|
||||||
|
<div class="dayRadio">{{totalPersonRhbRatio}}%</div>
|
||||||
|
</div>
|
||||||
|
<div style="display:flex" v-if="totalPersonRhbRatio < 0">
|
||||||
|
<div class="dayRadio">{{totalPersonRhbRatio}}%</div>
|
||||||
|
<div class="iconCenter"><el-icon size="20" color="#8B0000"><Bottom/></el-icon></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="line2">
|
<div class="line2">
|
||||||
<div :class="['line2Item',activeIndex === '0' ? 'activeTab' : '']" @click="handleTab('0')">总包出勤情况分析</div>
|
<div :class="['line2Item',activeIndex === '0' ? 'activeTab' : '']" @click="handleTab('0')">总包出勤情况分析</div>
|
||||||
@ -64,7 +74,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -73,8 +83,9 @@
|
|||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import * as echarts from "echarts";
|
import * as echarts from "echarts";
|
||||||
import { selectQualityStatisticsApi } from "@/api/modules/projectOverview";
|
import { selectQualityStatisticsApi } from "@/api/modules/projectOverview";
|
||||||
import { getMemberJobStatusApi, getInspectManStatusApi, getEnterpriseStatusApi } from "@/api/modules/agjtCommandApi";
|
import { getMemberJobStatusApi, getInspectManStatusApi, getEnterpriseStatusApi,
|
||||||
import { getPersonTypeAndEduStatisticsApi } from "@/api/modules/labor";
|
getPersonTypeAndEduStatisticsApi
|
||||||
|
} from "@/api/modules/agjtCommandApi";
|
||||||
import type { TabsPaneContext, ElMessageBox } from "element-plus";
|
import type { TabsPaneContext, ElMessageBox } from "element-plus";
|
||||||
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
|
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
|
||||||
import { GlobalStore } from "@/stores";
|
import { GlobalStore } from "@/stores";
|
||||||
@ -82,7 +93,27 @@ import { Vue3SeamlessScroll } from "vue3-seamless-scroll";
|
|||||||
const store = GlobalStore();
|
const store = GlobalStore();
|
||||||
const activeName = ref("总包出勤情况分析");
|
const activeName = ref("总包出勤情况分析");
|
||||||
const activeIndex = ref("0" as any);
|
const activeIndex = ref("0" as any);
|
||||||
|
//出勤人员数据
|
||||||
|
let totalPerson = ref(""as any)
|
||||||
|
//考勤日环比
|
||||||
|
let totalPersonRhbRatio = ref("" as any)
|
||||||
|
//获取出勤人员数据/考勤日环比
|
||||||
|
const getPersonTypeAndEduStatistics = async () => {
|
||||||
|
const res: any = await getPersonTypeAndEduStatisticsApi({
|
||||||
|
projectSn: store.sn
|
||||||
|
});
|
||||||
|
if (res.result) {
|
||||||
|
console.log("出勤人员数据/考勤日环比", res);
|
||||||
|
totalPerson.value = res.result.personType.attendancePerson.totalPerson
|
||||||
|
if(totalPerson.value.length < 4){
|
||||||
|
let temp = 4-totalPerson.value.length
|
||||||
|
for(let i = 0;i<temp;i++){
|
||||||
|
totalPerson.value = "0" + totalPerson.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
totalPersonRhbRatio.value = res.result.personType.attendancePerson.totalPersonRhbRatio
|
||||||
|
}
|
||||||
|
};
|
||||||
//切换tab
|
//切换tab
|
||||||
const handleTab = (val:string) => {
|
const handleTab = (val:string) => {
|
||||||
activeIndex.value = val
|
activeIndex.value = val
|
||||||
@ -135,7 +166,7 @@ function drawBar() {
|
|||||||
top: "8%",
|
top: "8%",
|
||||||
right: "0",
|
right: "0",
|
||||||
left:"5%",
|
left:"5%",
|
||||||
bottom: "12%",
|
bottom: "10%",
|
||||||
|
|
||||||
},
|
},
|
||||||
series: [{
|
series: [{
|
||||||
@ -184,6 +215,7 @@ let listData = ref([
|
|||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
drawBar()
|
drawBar()
|
||||||
|
getPersonTypeAndEduStatistics()
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -217,7 +249,7 @@ onMounted(async () => {
|
|||||||
height: 92.5%;
|
height: 92.5%;
|
||||||
.contentTop {
|
.contentTop {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
height: 40%;
|
height: 50%;
|
||||||
// background-color: #fff;
|
// background-color: #fff;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
.line1{
|
.line1{
|
||||||
@ -277,7 +309,7 @@ onMounted(async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.centerBottom {
|
.centerBottom {
|
||||||
height: 60%;
|
height: 50%;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.cbTop {
|
.cbTop {
|
||||||
@ -327,7 +359,7 @@ onMounted(async () => {
|
|||||||
}
|
}
|
||||||
.cbProcess{
|
.cbProcess{
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
height: calc(100% - 55px);
|
height: calc(100% - 65px);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
// background-color: #fff;
|
// background-color: #fff;
|
||||||
.pItem{
|
.pItem{
|
||||||
@ -423,7 +455,7 @@ onMounted(async () => {
|
|||||||
}
|
}
|
||||||
.plBtnBgc2{
|
.plBtnBgc2{
|
||||||
background: rgb(155,155,0);
|
background: rgb(155,155,0);
|
||||||
background: linear-gradient(90deg, rgba(50,50,50,0.5) 10%, rgba(155,0,0,1) 100%);
|
background: linear-gradient(90deg, rgba(50,50,50,0.5) 10%, rgba(155,155,0,1) 100%);
|
||||||
}
|
}
|
||||||
.plBgc3{
|
.plBgc3{
|
||||||
background: rgb(0,0,139);
|
background: rgb(0,0,139);
|
||||||
|
|||||||
@ -15,6 +15,51 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="content-info">
|
<div class="content-info">
|
||||||
|
<span style="font-size:15px">项目名称:</span>
|
||||||
|
<span style="font-size:15px">{{ projectData.projectName || "" }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="content-info">
|
||||||
|
<span style="font-size:15px">项目地址:</span>
|
||||||
|
<span style="font-size:15px">{{addressData()}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="content-info">
|
||||||
|
<span style="font-size:15px">项目编号:</span>
|
||||||
|
<span style="font-size:15px">{{ projectData.projectNumber || "" }}</span>
|
||||||
|
</div>
|
||||||
|
<div style="font-size:15px;line-height:22px">
|
||||||
|
<div style="display:flex;color:white;margin-top:8px">
|
||||||
|
<div style="width:50%;display:flex;">
|
||||||
|
<span>项目经理:</span>
|
||||||
|
<span>{{ projectData.projectManage || "" }}</span>
|
||||||
|
</div>
|
||||||
|
<div style="width:50%;display:flex;">
|
||||||
|
<span>联系电话:</span>
|
||||||
|
<span>{{ projectData.projectTel || "" }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="display:flex;color:white;margin-top:8px">
|
||||||
|
<div style="width:50%;display:flex;">
|
||||||
|
<span>建筑面积:</span>
|
||||||
|
<span>{{ projectData.projectAcreage || "" }} {{ projectData.projectAcreage ? '㎡' : "" }}</span>
|
||||||
|
</div>
|
||||||
|
<div style="width:50%;display:flex;">
|
||||||
|
<span>开工日期:</span>
|
||||||
|
<span>{{ projectData.startWorkDate || "" }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="display:flex;color:white;margin-top:8px">
|
||||||
|
<div style="width:50%;display:flex;">
|
||||||
|
<span>工程类别:</span>
|
||||||
|
<span>{{ projectData.projectType && projectTypeEnumList.length > 0 ? projectTypeEnumList[projectData.projectType - 1].name : "" }}</span>
|
||||||
|
<div style="margin-left:5px;line-height:20px;">
|
||||||
|
<img style="width:25px;height:25px;" src="@/assets/images/mountain-icon.png" alt="" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <div class="content-info">
|
||||||
<span>项目名称:</span>
|
<span>项目名称:</span>
|
||||||
<span>{{ projectData.projectName || "" }}</span>
|
<span>{{ projectData.projectName || "" }}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -45,7 +90,7 @@
|
|||||||
<div class="content-info">
|
<div class="content-info">
|
||||||
<span>工程类别:</span>
|
<span>工程类别:</span>
|
||||||
<span>{{ projectData.projectType && projectTypeEnumList.length > 0 ? projectTypeEnumList[projectData.projectType - 1].name : "" }}</span>
|
<span>{{ projectData.projectType && projectTypeEnumList.length > 0 ? projectTypeEnumList[projectData.projectType - 1].name : "" }}</span>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -103,7 +148,7 @@ onMounted(async () => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
// align-items: center;
|
// align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: 20px 20px;
|
padding: 10px 20px;
|
||||||
border-bottom: 1px solid #0059ff;
|
border-bottom: 1px solid #0059ff;
|
||||||
.hLeft {
|
.hLeft {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
@ -123,7 +168,7 @@ onMounted(async () => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
margin-left: 20px;
|
margin-left: 10px;
|
||||||
&-info:not(:first-child){
|
&-info:not(:first-child){
|
||||||
margin-top: 11px;
|
margin-top: 11px;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1428,16 +1428,22 @@ onMounted(async () => {
|
|||||||
color: white !important;
|
color: white !important;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
padding: 2px 0;
|
// padding: 2px 0;
|
||||||
font-size: 16px;
|
font-size: 13px;
|
||||||
|
line-height: 25px;
|
||||||
width: 170px;
|
width: 170px;
|
||||||
|
width: 140px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #315296;
|
// background-color: #315296;
|
||||||
|
background: rgb(0,33,116);
|
||||||
|
background: linear-gradient(270deg, rgba(0,33,116,0.8) 0%, rgba(40,88,184,0.3) 96%);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-color {
|
.title-color {
|
||||||
background-color: #1449b6;
|
// background-color: #1449b6;
|
||||||
|
background: rgb(0,33,116);
|
||||||
|
background: linear-gradient(270deg, rgba(0,33,116,1) 0%, rgba(40,88,184,1) 96%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1525,7 +1531,7 @@ onMounted(async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ctContent {
|
.ctContent {
|
||||||
height: 72%;
|
height: 80%;
|
||||||
// background-color: darkred;
|
// background-color: darkred;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user