829 lines
20 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="dangerbig-details">
<view class="fixedheader">
<headers :showBack="true">
<view class="headerName">
查看明细
</view>
</headers>
</view>
<view :style="{ 'padding-top': (statusBarHeight + 45) * 1.5 + 'rpx' }">
<view class="detail-content">
<view class="list">
<view class="list-info">
装置/单元工程<text class="detail-data">{{detailData.deviceUnitName}}</text>
</view>
<view class="list-info">
试压包名称<text class="detail-data">{{detailData.testPressurePackageName}}</text>
</view>
<view class="list-info">
合同模式<text class="detail-data">
{{ detailData.contractModel ? workCategoryList[detailData.contractModel - 1].workCategoryName : '--' }}</text>
</view>
<view class="list-info">
管线编号<text class="detail-data">{{detailData.pipelineNumbers}}</text>
</view>
<view class="list-info">
试压包编号<text class="detail-data">{{detailData.testPressurePackageNumber}}</text>
</view>
<view class="list-info">
试验压力<text class="detail-data">{{detailData.testPressure}}</text>
</view>
<view class="list-info">
设计压力<text class="detail-data">{{detailData.designPressure}}</text>
</view>
<view class="list-info">
试压时间<text class="detail-data">{{detailData.pressureApplicationTime}}</text>
</view>
<view class="list-info">
施工单位技术员<text class="detail-data">{{detailData.constructionUnitTechnicianName}}</text>
</view>
<view class="list-info">
施工单位技术负责人<text class="detail-data">{{detailData.constructionUnitTechnicalLeaderName}}</text>
</view>
<!-- <view class="list-info">
承包方式<text
class="detail-data">{{detailData.contractingType ? contractingTypeList[detailData.contractingType - 1].contractingName : '--'}}</text>
</view> -->
<!-- <view class="list-info">
区域项目组<text class="detail-data">{{detailData.projectGroupName }}</text>
</view>
<view class="list-info">
工程监理单位<text class="detail-data">{{detailData.supervisingUnitName}}</text>
</view>
<view class="list-info">
工程承包商<text class="detail-data">{{detailData.epcContractorName}}</text>
</view>
<view class="list-info">
工程分包商<text class="detail-data">{{detailData.constructionUnitName}}</text>
</view>
<view class="list-info">
方案类型<text
class="detail-data">{{detailData.schemeType ? schemeTypeList[detailData.schemeType - 1].title : '--'}}</text>
</view> -->
<view class="" v-if="isShow">
<view class="list-info">
EPC管道工程师<text class="detail-data">{{detailData.epcPipelineEngineerName}}</text>
</view>
<view class="list-info">
EPC技术负责人<text class="detail-data">{{detailData.epcTechnicalLeaderName}}</text>
</view>
<view class="list-info">
监理单位管道工程师:<text
class="detail-data">{{detailData.supervisionUnitPipelineEngineerName}}</text>
</view>
<view class="list-info">
总监(或总代)<text class="detail-data">{{detailData.directorGeneralAgentName}}</text>
</view>
<view class="list-info">
项目组专业工程师:<text class="detail-data">{{detailData.projectTeamProfessionalEngineerName}}</text>
</view>
<view class="list-info">
项目组项目经理(或施工经理)<text class="detail-data">{{detailData.projectTeamProjectManagerName}}</text>
</view>
</view>
<view v-if="COMPANY != 'longguang'" class="more-btn" @click="isShow=!isShow">
<text>{{isShow ? "收起详情":"展开详情"}}</text>
<image class="detail_icon_up" :class="{'detail_icon_down': isShow}"
src="/static/bthgIcon/detail_icon.png"></image>
</view>
</view>
<view class="detail-nav">
<view class="nav_title">附件(是否涉及)</view>
<view class="fileItem" v-for="(item,index) in detailData.schemeAttachment" :key="index">
<view class="left">
<!-- <image class="fileIcon" :src="setFileImg(item)"></image> -->
<image class="fileIcon" src="@/static/bthgIcon/attachment.png"></image>
<text class="left_text">
{{item.fileName}}
</text>
<text
v-if="typeof item.whetherInvolve === 'number'">({{typeof item.whetherInvolve === 'number' ? whetherInvolvesList[item.whetherInvolve].whetherInvolveName : ''}})</text>
</view>
<!-- <image v-if="!item.isDir" @click.stop="downloadFn(item)" class="ellipsis"
src="../../static/ellipsis.png"></image> -->
<view class="rules-text2">
<text @click="downloadFile(item)">预览</text>
<text @click.stop="downloadFn(item)">下载</text>
</view>
</view>
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<!-- v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth" -->
<!-- <view class="add-btn" @click="addForm">
<uni-icons2 v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons2>
<uni-icons2 v-else type="plusempty" size="30" color="#fff"></uni-icons2>
<span>+</span>
</view> -->
</view>
</view>
<view class="fixed" :class="{show:showIframe}" v-if="show" @click="show=false">
<view class="iframeMain" @click.stop="show=true">
<video v-if="getType(iframeUrl) == 'video'" class="iframe" :src="iframeUrl"></video>
<image v-else-if="getType(iframeUrl) == 'image'" class="iframe" :src="iframeUrl" mode="aspectFit">
</image>
<iframe v-else class="iframe" ref="iframe" :src="iframeUrl" frameborder="0"></iframe>
</view>
</view>
</view>
</template>
<script>
import {
isVideoLink,
isImageLink,
openOutsideFile,
openLocalFile,
removeNetWorkFileTemp,
isJSON
} from '@/utils/tool.js'
export default {
data() {
return {
statusBarHeight: 0,
isShow: true,
componentName: "plan",
navList: [{
id: 1,
name: "相关附件"
}, {
id: 3,
name: "安全检查"
}],
activeIndex: 1,
detailId: "",
detailData: {},
isShowBtn: null,
userInfo: {},
btnAuth: true,
showIframe: false,
show: false,
iframeUrl: "",
equipmentToolList: [], // 相关附件
schemeTypeList: [{
id: 1,
title: "施工组织设计",
}, {
id: 2,
title: "施工技术方案",
}, {
id: 3,
title: "施工技术措施",
}], // 方案类型
contractingTypeList: [{
id: 1,
contractingName: "EPC",
}, {
id: 2,
contractingName: "E+P+C",
}], // 承包方式
whetherInvolvesList: [{
id: 0,
whetherInvolveName: '否'
},
{
id: 1,
whetherInvolveName: '是'
}
],
workCategoryList: [{
id: 1,
workCategoryName: "EPC"
}, {
id: 2,
workCategoryName: "E+P+C"
}],
}
},
onReachBottom() {
console.log(1, this.$refs['list'])
},
onPullDownRefresh() {
console.log(2)
},
onShow() {
this.userInfo = JSON.parse(uni.getStorageSync('userInfo'))
this.statusBarHeight = uni.getStorageSync('systemInfo').statusBarHeight;
// this.initData()
this.getWork()
let that = this;
setTimeout(function() {
console.log(that.$refs, 777)
console.log(that.$refs.listBox, 777)
if (that.$refs['list'] && that.$refs['list'].initData) {
console.log(777888)
that.$refs['list'].initData()
}
}, 200);
// this.getEquipmentToolList();
},
onLoad(val) {
this.btnAuth = this.checkBtnPermission({
key: 'towerOverWork_add',
menuPath: '/project/specialWork/towerOverWork'
})
this.detailId = val.id;
},
onUnload() {
removeNetWorkFileTemp();
},
mounted() {},
methods: {
getType(url) {
if (isImageLink(url)) {
return "image"
} else if (isVideoLink(url)) {
return "video"
} else {
return ''
}
},
downloadFile(url) {
// 下载所有的文件
let name = url.substring(url.lastIndexOf('/') + 1);
console.log(name, "文件名称");
if (isVideoLink(url) || isImageLink(url)) {
// 是图片和视频
this.show = true;
this.showIframe = true;
this.iframeUrl = this.url_config + 'image/' + url;
} else {
// openOutsideFile(`${this.url_config}image/${url}`)
openLocalFile(name, `${this.url_config}image/${url}`)
}
return;
},
//预览图片
previewImage(url) {
uni.previewImage({
urls: [url]
})
},
getWork() {
this.sendRequest({
url: 'xmgl/pipelinePressureTestBag/queryById',
method: 'get',
data: {
id: this.detailId
},
success: res => {
uni.hideLoading()
// if(res.code==200){
// this.listData = res.result.records
// }
this.detailData = {
...res.result,
schemeAttachment: isJSON(res.result.attachment) && res.result.attachment !=
null ?
JSON.parse(res.result.attachment).map(item => {
console.log(item['field1983908099327']);
return {
id: 'id-' + Math.random().toString(36).substr(2, 9),
fileName: item['field8678808092041'],
whetherInvolve: item['field1983908099327'] && item[
'field1983908099327'][0] ? Number(item[
'field1983908099327'][0]) : '',
attachment: Array.isArray(item['field2836308118326']) ? item[
'field2836308118326'] : []
};
}) : []
};
this.getApply()
}
})
},
goSafeMesure() {
uni.navigateTo({
url: "./safeMesure?detailId=" + this.detailId
})
},
getEquipmentToolList() {
this.sendRequest({
url: 'xmgl/constructionEquipmentToolFile/list',
method: 'get',
data: {
constructionEquipmentToolId: this.detailId,
projectSn: JSON.parse(uni.getStorageSync('projectDetail')).projectSn
},
success: res => {
uni.hideLoading()
console.log("xmgl/constructionEquipmentToolFile/list", res);
let result = res.result
if (res.result.length > 0) {
this.equipmentToolList = res.result;
}
}
})
},
getApply() {
console.log("=====================================================detail");
console.log(this.detailData);
this.sendRequest({
url: 'xmgl/xzDangerousEngineeringAcceptance/list',
method: 'get',
data: {
engineeringId: this.detailData.id,
projectSn: JSON.parse(uni.getStorageSync('projectDetail')).projectSn,
type: 10
},
success: res => {
uni.hideLoading()
console.log("xmgl/xzDangerousEngineeringAcceptance/list", res);
let result = res.result
if (res.result.length > 0) {
if (res.result[0].acceptanceResult === null) this.isShowBtn = false
if (res.result[0].acceptanceResult === 1) this.isShowBtn = false
if (res.result[0].acceptanceResult === 2) this.isShowBtn = true
} else {
this.isShowBtn = true
}
}
})
},
checkNav(val) {
this.activeIndex = val.id
if (val.id == 1) {
this.componentName = "plan";
this.getEquipmentToolList();
} else if (val.id == 2) {
this.componentName = "safe"
} else if (val.id == 3) {
this.componentName = "side";
} else if (val.id == 4) {
this.componentName = "workFinally"
}
},
addForm() {
uni.navigateTo({
url: './addSide?id=' + this.detailId
})
// if(this.activeIndex == 1){
// uni.navigateTo({
// url:'./addPlan?id='+this.detailId
// })
// } else if(this.activeIndex == 2){
// if(uni.getStorageSync('dangerData')){
// uni.removeStorageSync('dangerData');
// }
// if(uni.getStorageSync('detailData')){
// uni.removeStorageSync('detailData');
// }
// uni.navigateTo({
// // url:'../safeManage/addExamine?type=1&engineeringId='+this.detailId + '&moduleType=safeCheck'
// url:'../../safeSame/addIssue?type=5&engineeringId='+this.detailId + '&moduleType=safeCheck'
// })
// } else if(this.activeIndex == 3){
// uni.navigateTo({
// url:'./addSide?id='+this.detailId
// })
// } else if(this.activeIndex == 4){
// if(this.isShowBtn){
// uni.navigateTo({
// url:'./addWorkFinally?id='+this.detailId+'&workTicketCode='+this.detailData.workTicketCode
// })
// }else{
// uni.showToast({
// title: '请勿重复操作',
// icon: "none",
// duration: 2000
// });
// }
// }
},
downloadFile(url) {
console.log(url)
url = url.attachment[0];
const newUrl = url.url.includes('http://') ? url.url : this.url_config + 'image/' + url.url;
const typeImageList = ['png', 'jpg', 'jpeg'];
if (typeImageList.includes(url.name)) {
uni.previewImage({
urls: [newUrl]
})
} else {
// //#ifdef H5
// uni.showToast({
// title: '暂不支持预览!',
// icon: "none",
// duration: 2000
// });
// return;
// //#endif
uni.downloadFile({
url: newUrl,
success: function(res) {
var filePath = res.tempFilePath;
uni.openDocument({
filePath: filePath,
success: function(res) {
console.log('打开文档成功');
}
});
}
});
}
},
downloadFn(item) {
var that = this
var url = item.attachment[0];
const newUrl = url.url.includes('http://') ? url.url : this.url_config + 'image/' + url.url;
uni.showModal({
title: '提示',
content: item.fileName,
confirmText: '下载',
success: function(res) {
if (res.confirm) {
uni.downloadFile({
url: newUrl, //仅为示例,并非真实的资源
success: (res) => {
console.log(res)
if (res.statusCode === 200) {
// uni.showToast({
// title:'下载成功'
// })
var filePath = res.tempFilePath;
if (!filePath) return
uni.openDocument({
filePath: filePath,
success: function(res) {
console.log(res);
console.log('打开文档成功');
uni.showToast({
title: '打开文档成功'
})
}
});
} else {
uni.showToast({
title: '下载失败'
})
}
}
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
}
</script>
<style lang="scss" scoped>
.detail-nav {
width: 100%;
padding-bottom: 40rpx;
.nav_title {
padding: 28rpx 40rpx;
font-size: 30rpx;
}
}
.uni-form-item {
position: relative;
.search-icon {
position: absolute;
top: 50%;
right: 50rpx;
transform: translateY(-50%);
}
}
.rules-text2 {
display: flex;
justify-content: center;
align-items: center;
color: #3592F3;
font-size: 26rpx;
white-space: nowrap;
>text:first-child {
margin-right: 20rpx;
}
}
.detail-nav>.fileItem:not(:last-child) {
margin-bottom: 20rpx;
}
.fileItem {
font-size: 30rpx;
display: flex;
align-items: center;
justify-content: space-between;
padding: 22rpx 40rpx;
margin: 0 40rpx;
// color: $uni-text-color;
color: #3592F3;
background-color: #F4F7FE;
// border-bottom: 1px solid rgba(221, 221, 221, 0.8);
.left {
display: flex;
align-items: center;
width: 80%;
.left_text {
flex: 1;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
}
}
.fileIcon {
width: 40rpx;
height: 44rpx;
margin-right: 20rpx;
}
.ellipsis {
width: 40rpx;
height: 10rpx;
}
}
.detail-wrap .fileItem:not(:first-child) {
margin-top: 20rpx;
}
.uni-form-item {
position: relative;
.search-icon {
position: absolute;
top: 50%;
right: 50rpx;
transform: translateY(-50%);
}
}
.fixed {
position: fixed;
z-index: 9999;
left: 0;
top: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, .3);
display: none;
&.show {
display: initial;
}
}
.iframeMain {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 650rpx;
font-size: 0;
.iframe {
width: 100%;
height: 500rpx;
}
}
.other-safe {
background-color: #fff;
// margin-top: 50rpx;
padding: 15rpx 15rpx;
line-height: 40rpx;
.other-head {
display: flex;
.other-icon {
width: 10rpx;
height: 40rpx;
background-color: #2b8df3;
border-radius: 100rpx;
}
.other-text {
margin-left: 20rpx;
}
}
.other-content {
font-size: 22rpx;
width: auto;
min-height: 50rpx;
// background-color: darkred;
// border: 1rpx solid black;
margin: 0 30rpx;
margin-top: 15rpx;
display: flex;
.content-1 {
width: 22%;
}
.content-2 {
width: 24%;
}
.content-3 {
width: 23%;
// margin-left: 10%;
}
.content-4 {
width: 26%;
}
}
}
.safe-mesure {
width: 100%;
height: 100rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: #fff;
.safe-btn {
text-align: center;
width: 80%;
line-height: 70rpx;
// background-color: darkred;
border: 4rpx solid #2b8df3;
color: #2b8df3;
border-radius: 20rpx;
font-weight: bold;
}
}
.table-info {
display: flex;
justify-content: center;
align-items: center;
background-color: #fff;
.teble-list {
display: flex;
justify-content: flex-start;
width: 100%;
font-size: 18rpx;
background-color: gainsboro;
.teble-item {
width: 24.8%;
line-height: 40rpx;
// border: 1rpx solid black;
// background-color: darkred;
.item-col {
// margin: 0 5rpx;
margin-left: 5rpx;
margin-top: 5rpx;
padding: 3rpx;
text-align: center;
background-color: #fff;
}
}
}
.u-td {
height: auto;
}
}
.dangerbig-details {
min-height: 100%;
// background: #F6F6F6;
.fixedheader {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 2;
}
.detail-content {
padding-top: 20rpx;
}
.list {
margin-bottom: 20rpx;
}
.list-info {
background: #fff;
// border-bottom: 1px solid #F6F6F6;
font-size: 26rpx;
padding: 20rpx 30rpx;
// display: flex;
// align-items: center;
}
.list-info {
.source-box {
display: flex;
flex-direction: column;
text {
color: #8F8FF7;
text-decoration: underline;
margin-top: 20rpx;
}
}
}
.list-info ul {
list-style: none;
padding: 0;
display: flex;
flex-wrap: wrap;
align-items: center;
margin-top: 20rpx;
}
.list-info ul li {
width: 30%;
height: 100px;
margin: 0 10rpx;
margin-bottom: 20rpx;
}
.list-info ul li image {
width: 100%;
height: 100%;
}
.more-btn {
text-align: center;
font-size: 28rpx;
// height: 50rpx;
background: #F1F7FE;
line-height: 50rpx;
border-top: 2rpx dashed #CCCCCC;
border-bottom: 2rpx dashed #CCCCCC;
padding: 14rpx 0;
color: #3190F3;
}
.nav-list {
display: flex;
height: 80rpx;
align-items: center;
padding: 0 20rpx;
.nav-item {
width: 25%;
text-align: center;
white-space: nowrap;
padding: 0 20rpx;
height: 80rpx;
box-sizing: border-box;
line-height: 80rpx;
font-size: 28rpx;
}
.active-nav {
border-bottom: 4rpx solid #4396E7;
}
}
.detail-nav {
width: 100%;
}
.scrollx-wrap {
width: 100%;
background: #fff;
}
.add-btn {
background: #4181FE;
width: 96rpx;
height: 96rpx;
border-radius: 50%;
text-align: center;
line-height: 96rpx;
position: fixed;
bottom: 40rpx;
right: 40rpx;
span {
font-size: 60rpx;
line-height: 86rpx;
color: #fff;
}
}
}
</style>