flx:冲突 修改现场大屏bug
This commit is contained in:
commit
b4140dd6a4
@ -4,7 +4,7 @@ NODE_ENV = 'development'
|
||||
# 本地环境接口地址(/api/index.ts文件中使用)
|
||||
# 后端本地
|
||||
# VITE_API_URL = 'http://192.168.34.155:19111'
|
||||
# VITE_API_URL = 'http://192.168.34.221:9111' #雄哥本地
|
||||
VITE_API_URL = 'http://192.168.34.221:9111' #雄哥本地
|
||||
# VITE_API_URL = 'http://182.90.224.237:51234' #雄哥远程
|
||||
# VITE_API_URL = 'http://192.168.34.221:28889'
|
||||
# VITE_API_URL = 'http://121.196.214.246/api'
|
||||
@ -33,7 +33,9 @@ NODE_ENV = 'development'
|
||||
# 中科安信
|
||||
# VITE_API_URL = 'http://8.136.222.164:8808'
|
||||
# 中科佳成
|
||||
VITE_API_URL = 'http://1.13.185.209:8089'
|
||||
# VITE_API_URL = 'http://1.13.185.209:8089'
|
||||
# 九柱
|
||||
# VITE_API_URL = 'http://jxjzw.zhgdyun.com:11111'
|
||||
# 上传
|
||||
VITE_ULD_API_URL = 'http://192.168.34.155:8012/onlinePreview?url='
|
||||
|
||||
|
||||
BIN
src/assets/images/lcbTip.png
Normal file
BIN
src/assets/images/lcbTip.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
@ -28,8 +28,8 @@ export const BASE_IMAGE_URL = import.meta.env.VITE_BASE_IMAGE_URL;
|
||||
// export const COMPANY: string = "zsbf"; //中水北方
|
||||
// export const COMPANY: string = "as"; //鞍山项目
|
||||
// export const COMPANY: string = "agjt"; //鞍钢集团
|
||||
// export const COMPANY: string = "agjtLive"; //鞍钢集团现场大屏
|
||||
export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
|
||||
export const COMPANY: string = "agjtLive"; //鞍钢集团现场大屏
|
||||
// export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
|
||||
// export const COMPANY: string = "agjtProjectKanban"; //鞍钢集团项目看板大屏
|
||||
// export const COMPANY: string = "agjtOverviewScreen"; //鞍钢集团项目总览
|
||||
// export const COMPANY: string = "zkjc"; //中科佳成项目
|
||||
|
||||
@ -25,8 +25,8 @@ export const staticRouter: RouteRecordRaw[] = [
|
||||
path: "/large",
|
||||
name: "大屏",
|
||||
// component: () => import("@/views/sevenLargeScreen/indexL.vue"), //七参数标准版
|
||||
component: () => import("@/views/commandScreen/indexCommand.vue"), //指挥部大屏
|
||||
// component: () => import("@/views/agjtLiveScreen/indexLive.vue"), //鞍钢现场大屏
|
||||
// component: () => import("@/views/commandScreen/indexCommand.vue"), //指挥部大屏
|
||||
component: () => import("@/views/agjtLiveScreen/indexLive.vue"), //鞍钢现场大屏
|
||||
// component: () => import("@/views/overviewScreen/indexCommand.vue"), //总览大屏
|
||||
// component: () => import("@/views/agjtProjectKanban/indexL.vue"), //鞍钢集团项目看板大屏
|
||||
// component: () => import("@/views/sevenLargeScreen/indexL_syhy.vue"), // 只有一级路由(盘锦、嘉兴、鄱湖美湾医疗项目需切换至该首页)
|
||||
|
||||
@ -191,7 +191,7 @@ function drawPie(pieNum: number, pieInfo: any) {
|
||||
name: "pieCircle",
|
||||
type: "pie",
|
||||
radius: ["45%", "60%"],
|
||||
minAngle: 45,
|
||||
minAngle: 50,
|
||||
labelLine: {
|
||||
length: 1
|
||||
},
|
||||
@ -199,9 +199,11 @@ function drawPie(pieNum: number, pieInfo: any) {
|
||||
// formatter: '{a|{a}}{abg|}\n{hr|}\n {b|{b}:}{c} {per|{d}%} ',
|
||||
formatter: function (params: any) {
|
||||
let done = "已完成:" + pieInfo.outPie[params.dataIndex].complete + " ";
|
||||
const oldName = pieInfo.outPie[params.dataIndex].name;
|
||||
const newName = oldName.length > 7 ? oldName.substring(0, 7) + "..." : oldName;
|
||||
return (
|
||||
"{name|" +
|
||||
pieInfo.outPie[params.dataIndex].name +
|
||||
newName +
|
||||
"}{abg|} {per|" +
|
||||
pieInfo.outPie[params.dataIndex].ratio +
|
||||
"%}\n{hr|}\n{done|" +
|
||||
|
||||
@ -96,7 +96,7 @@
|
||||
<span>承包商名称:</span>
|
||||
<span>{{ item.name || "--" }}</span>
|
||||
</div>
|
||||
<el-scroll v-if="item.processList.length > 3" class="cbProcess">
|
||||
<el-scroll v-if="item.processList.length > 0" class="cbProcess">
|
||||
<div class="pItem" v-for="(item2, i) in item.processList" :key="i">
|
||||
<div class="pLeft">
|
||||
<span :class="['plInner', 'plBgc' + ((i + 1) % 12)]">
|
||||
|
||||
@ -80,9 +80,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="classify-div">
|
||||
<div class="classify-div-item" @click="openDialogData({ index: 98, title: '人员总览' })">
|
||||
<!-- <div class="classify-div-item" @click="openDialogData({ index: 98, title: '人员总览' })">
|
||||
<span style="font-size: 12px">人员总览</span>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="classify-div-item" style="width: 250px" @click="openDialogData({ index: 1, title: '' })">
|
||||
<span style="font-size: 12px">危险特殊作业 {{ statsDirectorateBigScreen.dangerousEngineeringRecordNum }}</span>
|
||||
</div>
|
||||
|
||||
@ -2,7 +2,13 @@
|
||||
<div class="list-detail" v-if="showDialog && mapsDetail.length == 0">
|
||||
<div
|
||||
:class="postData.type == 1 ? 'dialog-content' : postData.type == 2 ? 'dialog-content-show' : 'dialog-content-more'"
|
||||
:style="postData.index == 98 ? { left: '5%', width: '90%', top: '5%', height: '90%' } : {}"
|
||||
:style="
|
||||
postData.index == 98
|
||||
? { left: '5%', width: '90%', top: '5%', height: '90%' }
|
||||
: postData.index == 9
|
||||
? { left: '10%', top: '10%', width: '80%', height: '70%' }
|
||||
: {}
|
||||
"
|
||||
>
|
||||
<div class="dialog-title">
|
||||
<!-- <div class="title-img"><img src="@/assets/images/titleIcon.png" alt="" /></div> -->
|
||||
@ -46,9 +52,10 @@
|
||||
<div class="political-outlook" v-if="showIndex == 99">
|
||||
<qualityManage ref="historyAlarmList" tip="安全教育"></qualityManage>
|
||||
</div>
|
||||
<div class="political-outlook" v-if="showIndex == 98">
|
||||
<!-- 人员总览 -->
|
||||
<!-- <div class="political-outlook" v-if="showIndex == 98">
|
||||
<personOverview ref="historyAlarmList" tip="安全教育"></personOverview>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="political-outlook" v-if="showIndex == 6">
|
||||
<aiAlarm ref="historyAlarmList" tip="安全教育"></aiAlarm>
|
||||
</div>
|
||||
|
||||
@ -27,11 +27,11 @@
|
||||
</div>
|
||||
<el-scrollbar class="listBox" ref="refScrollbar">
|
||||
<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.engineeringName }}</div>
|
||||
<div>{{index + 1}}</div>
|
||||
<div>{{item.engineeringName || '--'}}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.progressDescribe" placement="top-start">
|
||||
<span>{{ item.progressDescribe }}</span>
|
||||
<span>{{item.progressDescribe || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="list-img">
|
||||
@ -47,8 +47,8 @@
|
||||
</el-image>
|
||||
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
|
||||
</div>
|
||||
<div>{{ item.createUserName }}</div>
|
||||
<div>{{ item.createTime }}</div>
|
||||
<div>{{item.createUserName || '--'}}</div>
|
||||
<div>{{item.createTime || '--'}}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="partyMemberList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -67,24 +67,20 @@
|
||||
</div>
|
||||
<el-scrollbar class="listBox" ref="refScrollbar">
|
||||
<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.engineeringName }}</div>
|
||||
<div>
|
||||
{{
|
||||
item.status == 2
|
||||
? "待整改"
|
||||
: item.status == 3
|
||||
? "待复查"
|
||||
: item.status == 4
|
||||
? "待核验"
|
||||
: item.status == 5
|
||||
? "合格"
|
||||
: ""
|
||||
}}
|
||||
</div>
|
||||
<div>{{ item.inspectManName }}</div>
|
||||
<div>{{ item.inspectTime }}</div>
|
||||
<div>{{ item.changeName }}</div>
|
||||
<div>{{index + 1}}</div>
|
||||
<div>{{item.engineeringName || '--'}}</div>
|
||||
<div>{{item.status == 2
|
||||
? '待整改'
|
||||
: item.status == 3
|
||||
? '待复查'
|
||||
: item.status == 4
|
||||
? '待核验'
|
||||
: item.status == 5
|
||||
? '合格'
|
||||
: '--'}}</div>
|
||||
<div>{{item.inspectManName || '--'}}</div>
|
||||
<div>{{item.inspectTime || '--'}}</div>
|
||||
<div>{{item.changeName || '--'}}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="partyMemberList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -99,19 +95,25 @@
|
||||
<div>验收描述</div>
|
||||
<div>验收结果</div>
|
||||
<div>图片</div>
|
||||
<div>申请验收人</div>
|
||||
<div>记录人</div>
|
||||
<div>创建时间</div>
|
||||
</div>
|
||||
<el-scrollbar class="listBox" ref="refScrollbar">
|
||||
<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.engineeringName }}</div>
|
||||
<div>{{index + 1}}</div>
|
||||
<div>{{item.engineeringName || '--'}}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.acceptanceDesc" placement="top-start">
|
||||
<span>{{ item.acceptanceDesc }}</span>
|
||||
<span>{{item.acceptanceDesc || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{ item.acceptanceResult == 1 ? "合格" : "不合格" }}</div>
|
||||
<div>{{
|
||||
item.acceptanceResult == undefined ||
|
||||
item.acceptanceResult == null ||
|
||||
item.acceptanceResult == '' ? '待确认' :
|
||||
item.acceptanceResult == 1 ? '合格' :
|
||||
item.acceptanceResult == 2 ? '不合格' : ''
|
||||
}}</div>
|
||||
<div class="list-img">
|
||||
<el-image
|
||||
fit="contain"
|
||||
@ -125,8 +127,8 @@
|
||||
</el-image>
|
||||
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
|
||||
</div>
|
||||
<div>{{ item.applyAcceptanceUserName }}</div>
|
||||
<div>{{ item.createTime }}</div>
|
||||
<div>{{item.acceptanceUserName || '--'}}</div>
|
||||
<div>{{item.createTime || '--'}}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="partyMemberList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -145,9 +147,13 @@
|
||||
</div>
|
||||
<el-scrollbar class="listBox" ref="refScrollbar">
|
||||
<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.engineeringName }}</div>
|
||||
<div>{{ item.buildSituation }}</div>
|
||||
<div>{{index + 1}}</div>
|
||||
<div>{{item.engineeringName || '--'}}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.buildSituation" placement="top-start">
|
||||
<span>{{item.buildSituation || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="list-img">
|
||||
<el-image
|
||||
fit="contain"
|
||||
@ -161,8 +167,8 @@
|
||||
</el-image>
|
||||
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
|
||||
</div>
|
||||
<div>{{ item.createUserName }}</div>
|
||||
<div>{{ item.createTime }}</div>
|
||||
<div>{{item.createUserName || '--'}}</div>
|
||||
<div>{{item.createTime || '--'}}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="partyMemberList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -206,7 +212,11 @@
|
||||
{{ item.type === typeItem.type ? typeItem.name : "" }}
|
||||
</span>
|
||||
</div>
|
||||
<div>{{ item.workTicketCode || "--" }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.workTicketCode" placement="top-start">
|
||||
<span>{{item.workTicketCode || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.progressDescribe" placement="top-start">
|
||||
<span>{{ item.progressDescribe || "--" }}</span>
|
||||
@ -225,9 +235,13 @@
|
||||
</el-image>
|
||||
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
|
||||
</div>
|
||||
<div>{{ item.jobApplicationUnitName || "--" }}</div>
|
||||
<div>{{ item.createUserName || "--" }}</div>
|
||||
<div>{{ item.createTime || "--" }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.jobApplicationUnitName" placement="top-start">
|
||||
<span>{{item.jobApplicationUnitName || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{item.createUserName || '--'}}</div>
|
||||
<div>{{item.createTime || '--'}}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="partyMemberList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -251,27 +265,31 @@
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>
|
||||
<span v-for="typeItem in typeName" :key="typeItem.type">
|
||||
{{ item.type === typeItem.type ? typeItem.name : "--" }}
|
||||
{{ item.type === typeItem.type? typeItem.name : '' }}
|
||||
</span>
|
||||
</div>
|
||||
<div>{{ item.workTicketCode || "--" }}</div>
|
||||
<div>
|
||||
{{
|
||||
item.status == 2
|
||||
? "待整改"
|
||||
: item.status == 3
|
||||
? "待复查"
|
||||
: item.status == 4
|
||||
? "待核验"
|
||||
: item.status == 5
|
||||
? "合格"
|
||||
: "--"
|
||||
}}
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.workTicketCode" placement="top-start">
|
||||
<span>{{item.workTicketCode || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{ item.inspectManName || "--" }}</div>
|
||||
<div>{{ item.inspectTime || "--" }}</div>
|
||||
<div>{{ item.jobApplicationUnitName || "--" }}</div>
|
||||
<div>{{ item.changeName || "--" }}</div>
|
||||
<div>{{item.status == 2
|
||||
? '待整改'
|
||||
: item.status == 3
|
||||
? '待复查'
|
||||
: item.status == 4
|
||||
? '待核验'
|
||||
: item.status == 5
|
||||
? '合格'
|
||||
: '--'}}</div>
|
||||
<div>{{item.inspectManName || '--'}}</div>
|
||||
<div>{{item.inspectTime || '--'}}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.jobApplicationUnitName" placement="top-start">
|
||||
<span>{{item.jobApplicationUnitName || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{item.changeName || '--'}}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="partyMemberList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -287,7 +305,7 @@
|
||||
<div>验收描述</div>
|
||||
<div>验收结果</div>
|
||||
<div>图片</div>
|
||||
<div>申请验收人</div>
|
||||
<div>记录人</div>
|
||||
<div>创建时间</div>
|
||||
</div>
|
||||
<el-scrollbar class="listBox" ref="refScrollbar">
|
||||
@ -295,16 +313,26 @@
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>
|
||||
<span v-for="typeItem in typeName" :key="typeItem.type">
|
||||
{{ item.type === typeItem.type ? typeItem.name : "--" }}
|
||||
{{ item.type === typeItem.type? typeItem.name : '' }}
|
||||
</span>
|
||||
</div>
|
||||
<div>{{ item.workTicketCode || "--" }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.workTicketCode" placement="top-start">
|
||||
<span>{{item.workTicketCode || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.acceptanceDesc" placement="top-start">
|
||||
<span>{{ item.acceptanceDesc || "--" }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{ item.acceptanceResult == 1 ? "合格" : "不合格" }}</div>
|
||||
<div>{{
|
||||
item.acceptanceResult == undefined ||
|
||||
item.acceptanceResult == null ||
|
||||
item.acceptanceResult == '' ? '待确认' :
|
||||
item.acceptanceResult == 1 ? '合格' :
|
||||
item.acceptanceResult == 2 ? '不合格' : ''
|
||||
}}</div>
|
||||
<div class="list-img">
|
||||
<el-image
|
||||
fit="contain"
|
||||
@ -318,8 +346,8 @@
|
||||
</el-image>
|
||||
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
|
||||
</div>
|
||||
<div>{{ item.applyAcceptanceUserName || "--" }}</div>
|
||||
<div>{{ item.createTime || "--" }}</div>
|
||||
<div>{{item.acceptanceUserName || '--'}}</div>
|
||||
<div>{{item.createTime || '--'}}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="partyMemberList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -342,11 +370,19 @@
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>
|
||||
<span v-for="typeItem in typeName" :key="typeItem.type">
|
||||
{{ item.type === typeItem.type ? typeItem.name : "--" }}
|
||||
{{ item.type === typeItem.type? typeItem.name : '' }}
|
||||
</span>
|
||||
</div>
|
||||
<div>{{ item.workTicketCode || "--" }}</div>
|
||||
<div>{{ item.buildSituation || "--" }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.workTicketCode" placement="top-start">
|
||||
<span>{{item.workTicketCode || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.buildSituation" placement="top-start">
|
||||
<span>{{item.buildSituation || '--'}}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="list-img">
|
||||
<el-image
|
||||
fit="contain"
|
||||
|
||||
@ -277,6 +277,8 @@ onMounted(async () => {
|
||||
.political-outlook {
|
||||
height: 97%;
|
||||
margin: 0 60px;
|
||||
// background-color: #fff;
|
||||
transform: translateY(40px) translateX(-13px);
|
||||
.content {
|
||||
height: 95%;
|
||||
width: 100%;
|
||||
@ -333,6 +335,7 @@ onMounted(async () => {
|
||||
}
|
||||
.listBox {
|
||||
height: 73%;
|
||||
// background-color: #fff;
|
||||
.listStyle {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@ -153,7 +153,7 @@ const statusList = ref([
|
||||
{ name: "待复查", value: 3 },
|
||||
{ name: "待核验", value: 4 },
|
||||
{ name: "合格", value: 5 },
|
||||
{ name: "已撤回", value: 6 },
|
||||
// { name: "已撤回", value: 6 },
|
||||
{ name: "超期未关闭", value: 7 },
|
||||
]);
|
||||
let pageNo = ref(1 as any);
|
||||
@ -256,9 +256,9 @@ const getMemberCountList = async (tip:any) => {
|
||||
// const res: any = await getInspectionRecordApi(requestData);
|
||||
const res: any = await getQualityInspectionRecordApi(requestData);
|
||||
if(tip == 'more'){
|
||||
partyMemberList.value = partyMemberList.value.concat(res.result.page.records);
|
||||
partyMemberList.value = partyMemberList.value.concat(res.result.page.records.filter((item:any) => item.status != 6));
|
||||
} else {
|
||||
partyMemberList.value = res.result.page.records;
|
||||
partyMemberList.value = res.result.page.records.filter((item:any) => item.status != 6);
|
||||
}
|
||||
// 为图片拼接IP
|
||||
// partyMemberList.value.map((item:any) => {
|
||||
|
||||
@ -150,7 +150,7 @@ const statusList = ref([
|
||||
{ name: "待复查", value: 3 },
|
||||
{ name: "待核验", value: 4 },
|
||||
{ name: "合格", value: 5 },
|
||||
{ name: "已撤回", value: 6 },
|
||||
// { name: "已撤回", value: 6 },
|
||||
{ name: "超期未关闭", value: 7 },
|
||||
]);
|
||||
let pageNo = ref(1 as any);
|
||||
@ -251,9 +251,9 @@ const getMemberCountList = async (tip:any) => {
|
||||
}
|
||||
const res: any = await getInspectionRecordApi(requestData);
|
||||
if(tip == 'more'){
|
||||
partyMemberList.value = partyMemberList.value.concat(res.result.page.records);
|
||||
partyMemberList.value = partyMemberList.value.concat(res.result.page.records.filter((item:any) => item.status != 6));
|
||||
} else {
|
||||
partyMemberList.value = res.result.page.records;
|
||||
partyMemberList.value = res.result.page.records.filter((item:any) => item.status != 6);
|
||||
}
|
||||
// 为图片拼接IP
|
||||
// partyMemberList.value.map((item:any) => {
|
||||
|
||||
@ -19,9 +19,9 @@
|
||||
<div>照片</div>
|
||||
<div>所属企业</div>
|
||||
<div>所属班组</div>
|
||||
<div>身份证号</div>
|
||||
<div style="width:180px">身份证号</div>
|
||||
<div>联系电话</div>
|
||||
<div>考试时间</div>
|
||||
<div style="width:160px">考试时间</div>
|
||||
<div>培训状态</div>
|
||||
</div>
|
||||
<el-scrollbar class="listBox" ref="refScrollbar">
|
||||
@ -37,6 +37,9 @@
|
||||
:src="BASEURL + '/image/' + item.fieldAcquisitionUrl"
|
||||
:preview-src-list="[BASEURL + '/image/' + item.fieldAcquisitionUrl]"
|
||||
>
|
||||
<template #error>
|
||||
<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-no-img" alt="" />
|
||||
</template>
|
||||
</el-image>
|
||||
<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
|
||||
</div>
|
||||
@ -55,13 +58,13 @@
|
||||
<span>{{ item.personType == 1 ? item.teamName : item.departmentName }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>
|
||||
<div style="width:180px">
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.idCard" placement="top-start">
|
||||
<span>{{ item.idCard }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{ item.phoneNumber }}</div>
|
||||
<div>
|
||||
<div style="width:160px">
|
||||
<el-tooltip class="box-item" effect="dark" :content="item.educationTime" placement="top-start">
|
||||
<span>{{ item.educationTime }}</span>
|
||||
</el-tooltip>
|
||||
@ -124,12 +127,12 @@
|
||||
<span>{{ item.title || "--" }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div style="width: 350px">{{ item.trainBeginTime || "--" }} - {{ item.trainEndTime || "--" }}</div>
|
||||
<div>{{ item.workerNum || "--" }}</div>
|
||||
<div>{{ item.createByName || "--" }}</div>
|
||||
<div>{{ item.completeRadio ? item.completeRadio + "%" : "--" }}</div>
|
||||
<div>{{ item.passRadio ? item.passRadio + "%" : "--" }}</div>
|
||||
<div style="color: #5382f6; cursor: pointer" @click="handleOpenDetail(item)">查看培训详情</div>
|
||||
<div style="width:350px">{{ item.trainBeginTime || '--'}} - {{item.trainEndTime || '--' }}</div>
|
||||
<div>{{ item.workerNum || '--' }}</div>
|
||||
<div>{{ item.createByName || '--' }}</div>
|
||||
<div>{{ item.completeRadio != null ? item.completeRadio + '%' : '--' }}</div>
|
||||
<div>{{ item.passRadio != null ? item.passRadio + '%' : '--' }}</div>
|
||||
<div style="color:#5382f6;cursor:pointer;" @click="handleOpenDetail(item)">查看培训详情</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="partyMemberList.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -162,7 +165,7 @@
|
||||
<div>序号</div>
|
||||
<div>姓名</div>
|
||||
<div>课程名称</div>
|
||||
<div>身份证号</div>
|
||||
<div style="width:150px">身份证号</div>
|
||||
<div>培训计划名称</div>
|
||||
<div>开始学习时间</div>
|
||||
<div>结束学习时间</div>
|
||||
@ -170,12 +173,20 @@
|
||||
<el-scrollbar class="listBox" ref="refScrollbar" style="height: 370px">
|
||||
<div v-for="(item, index) in studyExamRecord" class="listStyle" :key="item" style="justify-content: space-around">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.workerName || "--" }}</div>
|
||||
<div>{{ item.courseName || "--" }}</div>
|
||||
<div>{{ item.workerCard || "--" }}</div>
|
||||
<div>{{ eduPlanItem.name || "--" }}</div>
|
||||
<div>{{ item.beginTime || "--" }}</div>
|
||||
<div>{{ item.endTime || "--" }}</div>
|
||||
<div>{{ item.workerName || '--' }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" style="text-align:center" effect="dark" :content="eduPlanItem.courseName" placement="top-start">
|
||||
<span>{{ eduPlanItem.courseName || '--' }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div style="width:150px">{{ item.workerCard || '--' }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" style="text-align:center" effect="dark" :content="eduPlanItem.name" placement="top-start">
|
||||
<span>{{ eduPlanItem.name || '--' }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{ item.beginTime || '--' }}</div>
|
||||
<div>{{ item.endTime || '--' }}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="studyExamRecord.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -191,29 +202,37 @@
|
||||
<div>姓名</div>
|
||||
<div>科目名称</div>
|
||||
<div>考试名称</div>
|
||||
<div>培训计划名称</div>
|
||||
<div>身份证号</div>
|
||||
<div>开始考试时间</div>
|
||||
<div style="width:140px">培训计划名称</div>
|
||||
<div style="width:200px">身份证号</div>
|
||||
<div style="width:180px">开始考试时间</div>
|
||||
<div>作答时长</div>
|
||||
<div>考试结果</div>
|
||||
<div>考试总分</div>
|
||||
<div>考得分</div>
|
||||
<div>剩余重考次数</div>
|
||||
<div style="width:140px">剩余重考次数</div>
|
||||
</div>
|
||||
<el-scrollbar class="listBox" ref="refScrollbar" style="height: 370px">
|
||||
<div v-for="(item, index) in studyExamRecord" class="listStyle" :key="item" style="justify-content: space-around">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.workerName || "--" }}</div>
|
||||
<div>{{ item.subjectName || "--" }}</div>
|
||||
<div>{{ item.examPaperName || "--" }}</div>
|
||||
<div>{{ eduPlanItem.name || "--" }}</div>
|
||||
<div>{{ item.workerCard || "--" }}</div>
|
||||
<div>{{ item.startExamTime || "--" }}</div>
|
||||
<div>{{ item.duration || "--" }}</div>
|
||||
<div>{{ item.isPass || "--" }}</div>
|
||||
<div>{{ item.totalScore || "--" }}</div>
|
||||
<div>{{ item.score || "--" }}</div>
|
||||
<div>{{ item.examCount || "--" }}</div>
|
||||
<div>{{ item.workerName || '--' }}</div>
|
||||
<div>{{ item.subjectName || '--' }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" style="text-align:center" effect="dark" :content="item.examPaperName" placement="top-start">
|
||||
<span>{{ item.examPaperName || '--' }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div style="width:140px">
|
||||
<el-tooltip class="box-item" style="text-align:center" effect="dark" :content="eduPlanItem.name" placement="top-start">
|
||||
<span>{{ eduPlanItem.name || '--' }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div style="width:200px">{{ item.workerCard || '--' }}</div>
|
||||
<div style="width:180px">{{ item.startExamTime || '--' }}</div>
|
||||
<div>{{ item.duration || '--' }}</div>
|
||||
<div>{{ item.isPass == 1 ? '合格' : '不合格'}}</div>
|
||||
<div>{{ item.totalScore != null ? item.totalScore : 0}}</div>
|
||||
<div>{{ item.score != null ? item.score : 0}}</div>
|
||||
<div style="width:140px">{{ item.examCount != null ? item.examCount : 0}}</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="studyExamRecord.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -227,7 +246,7 @@
|
||||
<div class="tabList" style="justify-content: space-around">
|
||||
<div>序号</div>
|
||||
<div>姓名</div>
|
||||
<div>身份证号</div>
|
||||
<div style="width:150px">身份证号</div>
|
||||
<div>培训计划名称</div>
|
||||
<div>科目类型</div>
|
||||
<div>课程名称</div>
|
||||
@ -235,11 +254,19 @@
|
||||
<el-scrollbar class="listBox" ref="refScrollbar" style="height: 370px">
|
||||
<div v-for="(item, index) in studyExamRecord" class="listStyle" :key="item" style="justify-content: space-around">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.workerName || "--" }}</div>
|
||||
<div>{{ item.workerCard || "--" }}</div>
|
||||
<div>{{ eduPlanItem.name || "--" }}</div>
|
||||
<div>{{ eduPlanItem.subjectName || "--" }}</div>
|
||||
<div>{{ eduPlanItem.courseName || "--" }}</div>
|
||||
<div>{{ item.workerName || '--' }}</div>
|
||||
<div style="width:150px">{{ item.workerCard || '--' }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" style="text-align:center" effect="dark" :content="eduPlanItem.paperName" placement="top-start">
|
||||
<span>{{ eduPlanItem.name || '--' }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{ eduPlanItem.subjectName || '--' }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" style="text-align:center" effect="dark" :content="eduPlanItem.paperName" placement="top-start">
|
||||
<span>{{ eduPlanItem.courseName || '--' }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="studyExamRecord.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -253,7 +280,7 @@
|
||||
<div class="tabList" style="justify-content: space-around">
|
||||
<div>序号</div>
|
||||
<div>姓名</div>
|
||||
<div>身份证号</div>
|
||||
<div style="width:150px">身份证号</div>
|
||||
<div>培训计划名称</div>
|
||||
<div>科目类型</div>
|
||||
<div>考试名称</div>
|
||||
@ -261,11 +288,19 @@
|
||||
<el-scrollbar class="listBox" ref="refScrollbar" style="height: 370px">
|
||||
<div v-for="(item, index) in studyExamRecord" class="listStyle" :key="item" style="justify-content: space-around">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.workerName || "--" }}</div>
|
||||
<div>{{ item.workerCard || "--" }}</div>
|
||||
<div>{{ eduPlanItem.name || "--" }}</div>
|
||||
<div>{{ eduPlanItem.subjectName || "--" }}</div>
|
||||
<div>{{ eduPlanItem.paperName || "--" }}</div>
|
||||
<div>{{ item.workerName || '--' }}</div>
|
||||
<div style="width:150px">{{ item.workerCard || '--' }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" style="text-align:center" effect="dark" :content="eduPlanItem.name" placement="top-start">
|
||||
<span>{{ eduPlanItem.name || '--' }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>{{ eduPlanItem.subjectName || '--' }}</div>
|
||||
<div>
|
||||
<el-tooltip class="box-item" style="text-align:center" effect="dark" :content="eduPlanItem.paperName" placement="top-start">
|
||||
<span>{{ eduPlanItem.paperName || '--' }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="notoDta" v-if="studyExamRecord.length == 0">
|
||||
<img src="@/assets/images/noData.png" alt="" />
|
||||
@ -291,8 +326,11 @@
|
||||
<script lang="ts" setup>
|
||||
import { ref, onMounted } from "vue";
|
||||
import { GlobalStore } from "@/stores";
|
||||
import type { TabsPaneContext } from "element-plus";
|
||||
import { getSafeEducationDataApi, getEduPlanDataApi, getStudyDataApi, getExamDataApi } from "@/api/modules/agjtCommandApi";
|
||||
import type { TabsPaneContext } from 'element-plus'
|
||||
import noDataImage from "@/assets/images/vehicleManagement/car.png";
|
||||
import { getSafeEducationDataApi,getEduPlanDataApi,
|
||||
getStudyDataApi,getExamDataApi
|
||||
} from "@/api/modules/agjtCommandApi";
|
||||
const store = GlobalStore();
|
||||
const props = defineProps(["tip"]);
|
||||
const BASEURL = import.meta.env.VITE_API_URL;
|
||||
@ -304,8 +342,9 @@ const refScrollbar = ref(null as any); // 绑定到滚动的盒子上
|
||||
const currentTab = ref("safeEdu" as any);
|
||||
function handleChangeTab(val: any) {
|
||||
//教育培训相关属性
|
||||
isDetail.value = false;
|
||||
activeIndex.value = 0;
|
||||
isDetail.value = false
|
||||
activeIndex.value = 0
|
||||
activeName.value = 'first'
|
||||
//切换安全教育和教育培训相关属性
|
||||
currentTab.value = val;
|
||||
partyMemberList.value = [];
|
||||
@ -611,6 +650,11 @@ onMounted(async () => {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.el-no-img {
|
||||
transform: translateX(-6px);
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
}
|
||||
div {
|
||||
width: 10%;
|
||||
|
||||
@ -165,7 +165,7 @@
|
||||
{{ day.num }}
|
||||
|
||||
<div class="tip-show" :style="{ height: tbodyHeight + 20 + 'px' }" v-show="isShowTopTip(date, day.num)">
|
||||
<!-- <img src="@/assets/images/lcbTip.png" /> -->
|
||||
<img src="@/assets/images/lcbTip.png" />
|
||||
<div class="dash-line"></div>
|
||||
<div class="info-show">
|
||||
<div class="info-show-title">查看里程碑节点</div>
|
||||
|
||||
@ -1,16 +1,14 @@
|
||||
<template>
|
||||
<div class="political-outlook">
|
||||
|
||||
<div class="tabBox">
|
||||
<div :class="{'danger':true,active: currentTab == 'reason' ? true : false}">
|
||||
<div :class="{ danger: true, active: currentTab == 'reason' ? true : false }">
|
||||
<span @click="handleChangeTab('reason')">影响进度计划因素</span>
|
||||
</div>
|
||||
<div :class="{'danger':true,active: currentTab == 'overview' ? true : false}">
|
||||
<div :class="{ danger: true, active: currentTab == 'overview' ? true : false }">
|
||||
<span @click="handleChangeTab('overview')">项目总览</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="content" v-if="currentTab == 'reason'">
|
||||
<div class="top-data-show">
|
||||
<div class="top-left">
|
||||
@ -83,8 +81,8 @@
|
||||
: BASEURL + '/image/' + item.image
|
||||
"
|
||||
:preview-src-list="
|
||||
item.image && JSON.parse(item.image) instanceof Array
|
||||
? JSON.parse(item.image).map((ele) => ele.url)
|
||||
item.image && JSON.parse(item.image) instanceof Array
|
||||
? JSON.parse(item.image).map(ele => ele.url)
|
||||
: [BASEURL + '/image/' + item.image]
|
||||
"
|
||||
>
|
||||
@ -100,37 +98,51 @@
|
||||
<p>暂无数据</p>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
<el-pagination
|
||||
v-if="partyMemberList.length != 0"
|
||||
background
|
||||
:page-size="10"
|
||||
style="justify-content: center"
|
||||
@current-change="onCurrentChange"
|
||||
layout="prev, pager, next"
|
||||
:total="total"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content" v-if="currentTab == 'overview'">
|
||||
|
||||
<div class="searchLine">
|
||||
<el-select ref="selectRef" v-model="selectVal"
|
||||
placeholder="请选择" style="width: 100%; margin-top: 10px"
|
||||
size="medium" clearable @change="selectChange"
|
||||
>
|
||||
<el-option style="height: auto;width:100%;padding:0;" :value="[]">
|
||||
<el-tree :data="level1CompanyData" node-key="id" ref="groupTree"
|
||||
:default-expanded-keys="defaultExpandArr" :props="defaultProps"
|
||||
:default-expand-all="false" @node-click="treeAreaClick"
|
||||
>
|
||||
</el-tree>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-select
|
||||
ref="selectRef"
|
||||
v-model="selectVal"
|
||||
placeholder="请选择"
|
||||
style="width: 100%; margin-top: 10px"
|
||||
size="medium"
|
||||
clearable
|
||||
@change="selectChange"
|
||||
>
|
||||
<el-option style="height: auto; width: 100%; padding: 0" :value="[]">
|
||||
<el-tree
|
||||
:data="level1CompanyData"
|
||||
node-key="id"
|
||||
ref="groupTree"
|
||||
:default-expanded-keys="defaultExpandArr"
|
||||
:props="defaultProps"
|
||||
:default-expand-all="false"
|
||||
@node-click="treeAreaClick"
|
||||
>
|
||||
</el-tree>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="gantt-box">
|
||||
<div class="top-count">
|
||||
<span>项目总进度:{{ progressData.projectTotalProgress || 0 }}%</span>
|
||||
<span>承包商进度:{{ progressData.enterpriseTotalProgress || 0 }}%</span>
|
||||
<span>项目总天数:{{ progressData.projectTotalDayNum || 0 }}天</span>
|
||||
<span>项目剩余天数:{{ progressData.projectSurplusDayNum || 0 }}天</span>
|
||||
</div>
|
||||
<span>项目总进度:{{ progressData.projectTotalProgress || 0 }}%</span>
|
||||
<span>承包商进度:{{ progressData.enterpriseTotalProgress || 0 }}%</span>
|
||||
<span>项目总天数:{{ progressData.projectTotalDayNum || 0 }}天</span>
|
||||
<span>项目剩余天数:{{ progressData.projectSurplusDayNum || 0 }}天</span>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="left-content">
|
||||
<div class="item" v-for="(item, index) in headerList" :key="index">
|
||||
@ -644,22 +656,21 @@
|
||||
<div>暂无数据</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, onMounted, watch, nextTick,reactive,computed, onBeforeMount } from "vue";
|
||||
import { ref, onMounted, watch, nextTick, reactive, computed, onBeforeMount } from "vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { GlobalStore } from "@/stores";
|
||||
import { getDelayEventTypeApi, getProgressContentApi,
|
||||
getCountTaskProgressApi,getQualityRegionListApi,selectHierarchyEnterpriseListApi,getXzParentChildTaskListApi,
|
||||
import {
|
||||
getDelayEventTypeApi,
|
||||
getProgressContentApi,
|
||||
getCountTaskProgressApi,
|
||||
getQualityRegionListApi,
|
||||
selectHierarchyEnterpriseListApi,
|
||||
getXzParentChildTaskListApi
|
||||
} from "@/api/modules/agjtCommandApi";
|
||||
import noDataImage from "@/assets/images/vehicleManagement/car.png";
|
||||
import moment from "moment";
|
||||
@ -676,16 +687,16 @@ const tableParams = ref({
|
||||
});
|
||||
|
||||
//tab控制属性
|
||||
const currentTab = ref('reason' as any)
|
||||
function handleChangeTab(val: any){
|
||||
currentTab.value = val
|
||||
if(currentTab.value == 'reason'){
|
||||
partyMemberList.value = []
|
||||
pageNo.value = 1
|
||||
}else{
|
||||
getHierarchyEnterpriseList()
|
||||
getCountFn()
|
||||
getDataList()
|
||||
const currentTab = ref("reason" as any);
|
||||
function handleChangeTab(val: any) {
|
||||
currentTab.value = val;
|
||||
if (currentTab.value == "reason") {
|
||||
partyMemberList.value = [];
|
||||
pageNo.value = 1;
|
||||
} else {
|
||||
getHierarchyEnterpriseList();
|
||||
getCountFn();
|
||||
getDataList();
|
||||
}
|
||||
}
|
||||
|
||||
@ -711,31 +722,38 @@ const getDelayEventTypeFn = async () => {
|
||||
const res: any = await getDelayEventTypeApi(requestData);
|
||||
topStatisticData.value = res.result;
|
||||
};
|
||||
let total = ref(0 as any);
|
||||
const onCurrentChange = (event: number) => {
|
||||
pageNo.value = event;
|
||||
getMemberCountList();
|
||||
};
|
||||
//获取数据
|
||||
const getMemberCountList = async (tip: any) => {
|
||||
const getMemberCountList = async () => {
|
||||
let requestData: any = {
|
||||
projectSn: store.sn,
|
||||
auditType: 2,
|
||||
date: tableParams.value.calendarVal,
|
||||
pageNo: tip == "search" ? 1 : pageNo.value,
|
||||
pageSize: 100,
|
||||
pageNo: pageNo.value,
|
||||
pageSize: 10,
|
||||
hasDelayEvent: 1
|
||||
};
|
||||
const res: any = await getProgressContentApi(requestData);
|
||||
if (tip == "more") {
|
||||
partyMemberList.value = partyMemberList.value.concat(res.result.records);
|
||||
} else {
|
||||
partyMemberList.value = res.result.records;
|
||||
}
|
||||
// if (tip == "more") {
|
||||
// partyMemberList.value = partyMemberList.value.concat(res.result.records);
|
||||
// } else {
|
||||
// partyMemberList.value = res.result.records;
|
||||
// }
|
||||
partyMemberList.value = res.result.records;
|
||||
total.value = Number(res.result.total);
|
||||
// 为图片拼接IP
|
||||
// partyMemberList.value.map((item:any) => {
|
||||
// item.fieldAcquisitionUrl = BASEURL + '/image/' + item.fieldAcquisitionUrl
|
||||
// })
|
||||
if (res.result.pages == pageNo.value) {
|
||||
moreScroll.value = false;
|
||||
} else {
|
||||
pageNo.value = pageNo.value + 1;
|
||||
}
|
||||
// if (res.result.pages == pageNo.value) {
|
||||
// moreScroll.value = false;
|
||||
// } else {
|
||||
// pageNo.value = pageNo.value + 1;
|
||||
// }
|
||||
};
|
||||
watch(
|
||||
() => calendarVal.value,
|
||||
@ -744,124 +762,128 @@ watch(
|
||||
// props.xData = newVal;
|
||||
tableParams.value.calendarVal = moment(newVal).format("YYYY-MM-DD");
|
||||
dateTime.value = moment(newVal).format("YYYY-MM-DD");
|
||||
getMemberCountList("search");
|
||||
getMemberCountList();
|
||||
}
|
||||
}
|
||||
);
|
||||
const state = reactive({
|
||||
projects: [],
|
||||
dateList: [],
|
||||
}as any);
|
||||
projects: [],
|
||||
dateList: []
|
||||
} as any);
|
||||
|
||||
const dates = computed(() => {
|
||||
let dates:any = [];
|
||||
const mapDates = (data:any) => {
|
||||
data.map((p:any) => {
|
||||
dates.push(p.startDate);
|
||||
dates.push(p.finishDate);
|
||||
p.children && mapDates(p.children);
|
||||
});
|
||||
};
|
||||
mapDates(state.projects);
|
||||
dates = dates.map((date:any) => date.slice(0, 7)).sort();
|
||||
dates = [...new Set(dates)];
|
||||
// 计算两个日期之间相差的月数
|
||||
let startDate = moment(dates[0]);
|
||||
let endDate = moment(dates[dates.length - 1]);
|
||||
if (dates.length > 0) {
|
||||
let countArr = [dates[0]];
|
||||
const months = endDate.diff(startDate,'months');
|
||||
for (let i = 0; i < months; i++) {
|
||||
countArr.push(startDate.add(1,'month').format('YYYY-MM'));
|
||||
}
|
||||
return countArr;
|
||||
} else {
|
||||
return dates;
|
||||
}
|
||||
let dates: any = [];
|
||||
const mapDates = (data: any) => {
|
||||
data.map((p: any) => {
|
||||
dates.push(p.startDate);
|
||||
dates.push(p.finishDate);
|
||||
p.children && mapDates(p.children);
|
||||
});
|
||||
};
|
||||
mapDates(state.projects);
|
||||
dates = dates.map((date: any) => date.slice(0, 7)).sort();
|
||||
dates = [...new Set(dates)];
|
||||
// 计算两个日期之间相差的月数
|
||||
let startDate = moment(dates[0]);
|
||||
let endDate = moment(dates[dates.length - 1]);
|
||||
if (dates.length > 0) {
|
||||
let countArr = [dates[0]];
|
||||
const months = endDate.diff(startDate, "months");
|
||||
for (let i = 0; i < months; i++) {
|
||||
countArr.push(startDate.add(1, "month").format("YYYY-MM"));
|
||||
}
|
||||
return countArr;
|
||||
} else {
|
||||
return dates;
|
||||
}
|
||||
});
|
||||
|
||||
watch(dates, (newDates) => {
|
||||
state.dateList = newDates;
|
||||
}, { immediate: true });
|
||||
watch(
|
||||
dates,
|
||||
newDates => {
|
||||
state.dateList = newDates;
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
//甘特图代码起始位置
|
||||
const selectVal = ref(''as any)
|
||||
const selectVal = ref("" as any);
|
||||
const level1CompanyData = ref([] as any);
|
||||
const defaultExpandArr = ref([]as any)
|
||||
const defaultExpandArr = ref([] as any);
|
||||
const defaultProps = ref({
|
||||
children: "children",
|
||||
label: "enterpriseName",
|
||||
}as any)
|
||||
children: "children",
|
||||
label: "enterpriseName"
|
||||
} as any);
|
||||
const treeData = ref({} as any);
|
||||
const selectRef = ref();
|
||||
const groupTree = ref();
|
||||
const progressData = ref ({
|
||||
projectSurplusDayNum: 0,
|
||||
projectTotalDayNum: 0,
|
||||
projectTotalProgress: 0,
|
||||
enterpriseTotalProgress: 0,
|
||||
}as any)
|
||||
const progressData = ref({
|
||||
projectSurplusDayNum: 0,
|
||||
projectTotalDayNum: 0,
|
||||
projectTotalProgress: 0,
|
||||
enterpriseTotalProgress: 0
|
||||
} as any);
|
||||
|
||||
// 获取当前项目总进度
|
||||
const getCountFn = async() => {
|
||||
let requestData = {
|
||||
projectSn: store.sn,
|
||||
enterpriseId: treeData.value.id,
|
||||
};
|
||||
await getCountTaskProgressApi(requestData).then((res:any) => {
|
||||
if (res.code == 200 && res.result) {
|
||||
progressData.value = res.result;
|
||||
}
|
||||
});
|
||||
}
|
||||
const getCountFn = async () => {
|
||||
let requestData = {
|
||||
projectSn: store.sn,
|
||||
enterpriseId: treeData.value.id
|
||||
};
|
||||
await getCountTaskProgressApi(requestData).then((res: any) => {
|
||||
if (res.code == 200 && res.result) {
|
||||
progressData.value = res.result;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const selectChange = async(val:any) => {
|
||||
const selectChange = async (val: any) => {
|
||||
if (!val) {
|
||||
selectVal.value = "";
|
||||
// areaSelectVal.value = "";
|
||||
treeData.value = "";
|
||||
getCountFn()
|
||||
getDataList();
|
||||
}
|
||||
}
|
||||
// areaSelectVal.value = "";
|
||||
treeData.value = "";
|
||||
getCountFn();
|
||||
getDataList();
|
||||
}
|
||||
};
|
||||
// 树形控件点击
|
||||
const treeAreaClick = async(data:any) => {
|
||||
if (data.status == 1) {
|
||||
ElMessage({
|
||||
message:"无法选中已禁用组织",
|
||||
type:"warning"
|
||||
const treeAreaClick = async (data: any) => {
|
||||
if (data.status == 1) {
|
||||
ElMessage({
|
||||
message: "无法选中已禁用组织",
|
||||
type: "warning"
|
||||
});
|
||||
} else {
|
||||
selectVal.value = data.enterpriseName;
|
||||
treeData.value = data;
|
||||
selectRef.value.blur();
|
||||
getCountFn()
|
||||
getDataList();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
selectVal.value = data.enterpriseName;
|
||||
treeData.value = data;
|
||||
selectRef.value.blur();
|
||||
getCountFn();
|
||||
getDataList();
|
||||
}
|
||||
};
|
||||
// 获取承包商列表
|
||||
const getHierarchyEnterpriseList = async() => {
|
||||
let data = {
|
||||
projectSn: store.sn,
|
||||
};
|
||||
selectHierarchyEnterpriseListApi(data).then((res:any) => {
|
||||
console.log(res, "承包商列表");
|
||||
if (res.code == 200) {
|
||||
level1CompanyData.value = res.result;
|
||||
if (level1CompanyData.value && level1CompanyData.value.length > 0) {
|
||||
nextTick(() => {
|
||||
treeData.value = level1CompanyData.value[0];
|
||||
selectVal.value = level1CompanyData.value[0].enterpriseName
|
||||
// tree.value.setCurrentKey(level1CompanyData.value[0].id);//换掉tree
|
||||
groupTree.value.setCurrentKey(level1CompanyData.value[0].id);
|
||||
getDataList();//123
|
||||
// getCountFn();//123
|
||||
});
|
||||
}
|
||||
// this.enterpriseTreeData = res.result
|
||||
}
|
||||
});
|
||||
}
|
||||
const getHierarchyEnterpriseList = async () => {
|
||||
let data = {
|
||||
projectSn: store.sn
|
||||
};
|
||||
selectHierarchyEnterpriseListApi(data).then((res: any) => {
|
||||
console.log(res, "承包商列表");
|
||||
if (res.code == 200) {
|
||||
level1CompanyData.value = res.result;
|
||||
if (level1CompanyData.value && level1CompanyData.value.length > 0) {
|
||||
nextTick(() => {
|
||||
treeData.value = level1CompanyData.value[0];
|
||||
selectVal.value = level1CompanyData.value[0].enterpriseName;
|
||||
// tree.value.setCurrentKey(level1CompanyData.value[0].id);//换掉tree
|
||||
groupTree.value.setCurrentKey(level1CompanyData.value[0].id);
|
||||
getDataList(); //123
|
||||
// getCountFn();//123
|
||||
});
|
||||
}
|
||||
// this.enterpriseTreeData = res.result
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 甘特图详情弹窗
|
||||
const ganttDetailRef = ref();
|
||||
@ -1388,7 +1410,7 @@ onMounted(async () => {
|
||||
dateTime.value = moment(new Date()).format("YYYY-MM");
|
||||
calendarVal.value = moment(new Date()).format("YYYY-MM-DD");
|
||||
await getDelayEventTypeFn();
|
||||
await getMemberCountList("search");
|
||||
await getMemberCountList();
|
||||
// refScrollbar.value.wrapRef.addEventListener("scroll", (e: any) => {
|
||||
// const scrollTop = e.target.scrollTop;
|
||||
// const scrollHeight = e.target.scrollHeight;
|
||||
@ -1411,12 +1433,12 @@ onMounted(async () => {
|
||||
.political-outlook {
|
||||
height: 97%;
|
||||
margin: 0 60px;
|
||||
.tabBox{
|
||||
.tabBox {
|
||||
position: absolute;
|
||||
top: 6%;
|
||||
left: 3.5%;
|
||||
width:350px;
|
||||
height:50px;
|
||||
width: 350px;
|
||||
height: 50px;
|
||||
// background-color: #fff;
|
||||
color: gray;
|
||||
font-weight: bold;
|
||||
@ -1425,24 +1447,24 @@ onMounted(async () => {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
.danger{
|
||||
width:50%;
|
||||
height:100%;
|
||||
.danger {
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
.special{
|
||||
width:50%;
|
||||
height:100%;
|
||||
.special {
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
.active{
|
||||
color:#fff
|
||||
.active {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.content {
|
||||
@ -1452,11 +1474,11 @@ onMounted(async () => {
|
||||
// background: url("@/assets/images/cardImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
padding: 20px 15px;
|
||||
.searchLine{
|
||||
color:#fff;
|
||||
.searchLine {
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
top:14%;
|
||||
left:7.5%;
|
||||
top: 14%;
|
||||
left: 7.5%;
|
||||
}
|
||||
.top-statistics {
|
||||
display: grid;
|
||||
@ -1686,8 +1708,6 @@ onMounted(async () => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.gantt-box {
|
||||
box-sizing: border-box;
|
||||
min-width: 1120px;
|
||||
@ -2078,15 +2098,12 @@ onMounted(async () => {
|
||||
flex-direction: column;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
img{
|
||||
img {
|
||||
height: 33%;
|
||||
width: 10%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
.notoDta {
|
||||
@ -2122,7 +2139,7 @@ onMounted(async () => {
|
||||
color: white;
|
||||
border-color: transparent;
|
||||
}
|
||||
.el-tree-node__label{
|
||||
.el-tree-node__label {
|
||||
word-wrap: break-word;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
@ -629,6 +629,8 @@ function jumpBgd() {
|
||||
window.location.replace("http://jxj.zhgdyun.com:100/#/login?token=" + store.token);
|
||||
} else if (COMPANY === "as") {
|
||||
window.location.replace("http://182.90.224.237:15551/#/login?token=" + store.token);
|
||||
} else if (COMPANY === "jzjt") {
|
||||
window.location.replace("http://jxjzw.zhgdyun.com:6089/#/login?token=" + store.token);
|
||||
} else if (envList.includes(COMPANY)) {
|
||||
window.location.replace(BASEURL + "/#/login?token=" + store.token);
|
||||
} else {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user