fix: BUG修改

This commit is contained in:
kun 2024-06-08 00:48:04 +08:00
parent 1c3857d376
commit c76ff18adb
10 changed files with 1329 additions and 570 deletions

16
main.js
View File

@ -38,7 +38,7 @@ if (process.env.NODE_ENV === 'development') {
console.log('开发环境')
// Vue.prototype.url_config = 'http://47.93.215.234:9809/' // 鞍钢正式地址(弃用)
// Vue.prototype.url_config = 'http://42.180.188.17:9809/' // 鞍钢正式地址
// Vue.prototype.url_config = 'http://42.180.188.17:11211/' // 鞍钢测试地址
Vue.prototype.url_config = 'http://42.180.188.17:11211/' // 鞍钢测试地址
// Vue.prototype.url_config = 'http://182.90.224.237:51234/' //雄哥内网穿透地址
// Vue.prototype.url_config = 'http://jxj.zhgdyun.com:61212/' //杰哥内网穿透地址
// Vue.prototype.url_config = ' http://192.168.34.221:28888/' //郭圣雄本地
@ -47,8 +47,8 @@ if (process.env.NODE_ENV === 'development') {
// Vue.prototype.url_config = 'http://192.168.34.155:19111/' //彭洁本地
// Vue.prototype.work_url = 'http://47.93.215.234:19997' // 工作流线上地址(弃用)
// Vue.prototype.work_url = 'http://42.180.188.17:19997' // 工作流线上地址
// Vue.prototype.work_url = 'http://42.180.188.17:19097' // 工作流测试地址
Vue.prototype.work_url = 'http://192.168.34.175:5173' // 工作流地址
Vue.prototype.work_url = 'http://42.180.188.17:19097' // 工作流测试地址
// Vue.prototype.work_url = 'http://192.168.34.175:5173' // 工作流地址
// Vue.prototype.work_url = 'http://192.168.34.138:5173' // 工作流地址
// Vue.prototype.work_url = 'http://139.9.66.234:5173' // 工作流地址
// Vue.prototype.work_url = 'http://192.168.34.126:5173' // 工作流地址
@ -83,7 +83,7 @@ if (process.env.NODE_ENV === 'development') {
// Vue.prototype.url_config = 'http://182.90.224.147:15551'//成润线上
// Vue.prototype.url_config = 'http://118.121.198.147:23232'//成润正式
// Vue.prototype.url_config = 'http://huli.zjzhiliao.com/jxjgdapi'//金林湾测试
Vue.prototype.url_config = 'http://8.136.222.164:8808/'//中科安信
// Vue.prototype.url_config = 'http://8.136.222.164:8808/'//中科安信
} else {
@ -92,13 +92,13 @@ if (process.env.NODE_ENV === 'development') {
// Vue.prototype.url_config = 'http://10.168.1.105:11111/' // 线上地址
// Vue.prototype.url_config = 'http://10.168.1.104:11111/' // 线上地址
// Vue.prototype.url_config = 'http://47.93.215.234:9809/' // 鞍钢线上地址(弃用)
Vue.prototype.url_config = 'http://42.180.188.17:9809/' // 鞍钢线上地址
// Vue.prototype.url_config = 'http://42.180.188.17:11211/' // 鞍钢线上测试地址
// Vue.prototype.url_config = 'http://42.180.188.17:9809/' // 鞍钢线上地址
Vue.prototype.url_config = 'http://42.180.188.17:11211/' // 鞍钢线上测试地址
// Vue.prototype.url_config = 'http://182.90.224.237:51234/' // 百色三标段
// Vue.prototype.url_config = 'http://192.168.34.221:9111/' // 百色三标段
// Vue.prototype.work_url = 'http://47.93.215.234:19997' // 工作流线上地址(弃用)
Vue.prototype.work_url = 'http://42.180.188.17:19997' // 工作流线上地址
// Vue.prototype.work_url = 'http://42.180.188.17:19097' // 工作流测试地址
// Vue.prototype.work_url = 'http://42.180.188.17:19997' // 工作流线上地址
Vue.prototype.work_url = 'http://42.180.188.17:19097' // 工作流测试地址
// Vue.prototype.work_url = 'http://192.168.34.139:5173' // 工作流地址
// Vue.prototype.url_config = 'http://182.90.224.147:100/' //演示平台
// Vue.prototype.url_config ='http://124.71.178.44:8012/' // 河南

View File

@ -90,21 +90,29 @@
</view>
<view class="list-info">
<text>现场作业环境</text>
<!-- <view class="source-box">
<text v-for="(item, index) in detailData.fieldWorkingEnvironment" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view> -->
<ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
</view>
<view class="list-info">
<text>安全技术交底</text>
<ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<view class="source-box">
<text v-for="(item, index) in detailData.safetyAndTechnologyDisclosure" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view>
<!-- <ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul> -->
</view>
<view class="table-info" style="">
<scroll-view :scroll-x="true" class="teble-list">
@ -192,6 +200,14 @@
</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>
@ -200,7 +216,10 @@
import safe from './safe.vue'
import side from './side.vue'
import workFinally from './workFinally.vue'
import {
isVideoLink,
isImageLink
} from '@/utils/tool.js'
export default {
components:{
plan,
@ -231,7 +250,10 @@
detailData:{},
isShowBtn: null,
userInfo: {},
btnAuth: true
btnAuth: true,
showIframe: false,
show: false,
iframeUrl: ""
}
},
onReachBottom() {
@ -265,6 +287,30 @@
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 {
window.open(`${this.url_config}image/${url}`)
}
return;
},
previewImage(url) {
uni.previewImage({
urls: [url]
@ -291,9 +337,9 @@
if (this.detailData.safetyAndTechnologyDisclosure) {
this.detailData.safetyAndTechnologyDisclosure = JSON.parse(this.detailData
.safetyAndTechnologyDisclosure)
this.detailData.safetyAndTechnologyDisclosure.map(item => {
item.url = this.url_config + 'image/' + item.url
})
// this.detailData.safetyAndTechnologyDisclosure.map(item => {
// item.url = this.url_config + 'image/' + item.url
// })
}
// let str = '';
// if(res.result.chooseTypeDescribeList){
@ -393,6 +439,34 @@
</script>
<style lang="scss" scoped>
.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;
@ -511,7 +585,18 @@
// 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;

View File

@ -57,6 +57,10 @@
</view>
<view class="list-info">
<text>现场作业环境</text>
<!-- <view class="source-box">
<text v-for="(item, index) in detailData.fieldWorkingEnvironment" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view> -->
<ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
@ -66,12 +70,16 @@
</view>
<view class="list-info">
<text>安全技术交底</text>
<ul>
<view class="source-box">
<text v-for="(item, index) in detailData.safetyAndTechnologyDisclosure" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view>
<!-- <ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
</ul> -->
</view>
<view class="table-info" style="">
<scroll-view :scroll-x="true" class="teble-list">
@ -145,6 +153,14 @@
</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>
@ -153,7 +169,10 @@
import safe from './safe.vue'
import side from './side.vue'
import workFinally from './workFinally.vue'
import {
isVideoLink,
isImageLink
} from '@/utils/tool.js'
export default {
components: {
plan,
@ -184,7 +203,10 @@
detailData: {},
isShowBtn: null,
userInfo: {},
btnAuth: true
btnAuth: true,
showIframe: false,
show: false,
iframeUrl: ""
}
},
onReachBottom() {
@ -217,6 +239,30 @@
},
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 {
window.open(`${this.url_config}image/${url}`)
}
return;
},
//
previewImage(url) {
uni.previewImage({
@ -250,9 +296,9 @@
if (this.detailData.safetyAndTechnologyDisclosure) {
this.detailData.safetyAndTechnologyDisclosure = JSON.parse(this.detailData
.safetyAndTechnologyDisclosure)
this.detailData.safetyAndTechnologyDisclosure.map(item => {
item.url = this.url_config + 'image/' + item.url
})
// this.detailData.safetyAndTechnologyDisclosure.map(item => {
// item.url = this.url_config + 'image/' + item.url
// })
}
// let str = '';
// if(res.result.chooseTypeDescribeList){
@ -354,6 +400,35 @@
</script>
<style lang="scss" scoped>
.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;
@ -483,6 +558,19 @@
// 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;

View File

@ -62,21 +62,29 @@
</view>
<view class="list-info">
<text>现场作业环境</text>
<!-- <view class="source-box">
<text v-for="(item, index) in detailData.fieldWorkingEnvironment" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view> -->
<ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
</view>
<view class="list-info">
<text>安全技术交底</text>
<ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<view class="source-box">
<text v-for="(item, index) in detailData.safetyAndTechnologyDisclosure" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view>
<!-- <ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul> -->
</view>
<!-- <view class="list-info">
作业人<text class="detail-data">{{detailData.jobPersonName}}</text>
@ -156,6 +164,14 @@
</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>
@ -164,7 +180,10 @@
import safe from './safe.vue'
import side from './side.vue'
import workFinally from './workFinally.vue'
import {
isVideoLink,
isImageLink
} from '@/utils/tool.js'
export default {
components:{
plan,
@ -195,7 +214,10 @@
detailData:{},
isShowBtn: null,
userInfo: {},
btnAuth: true
btnAuth: true,
showIframe: false,
show: false,
iframeUrl: ""
}
},
onReachBottom() {
@ -229,6 +251,30 @@
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 {
window.open(`${this.url_config}image/${url}`)
}
return;
},
//
previewImage(url) {
uni.previewImage({
@ -256,9 +302,9 @@
if (this.detailData.safetyAndTechnologyDisclosure) {
this.detailData.safetyAndTechnologyDisclosure = JSON.parse(this.detailData
.safetyAndTechnologyDisclosure)
this.detailData.safetyAndTechnologyDisclosure.map(item => {
item.url = this.url_config + 'image/' + item.url
})
// this.detailData.safetyAndTechnologyDisclosure.map(item => {
// item.url = this.url_config + 'image/' + item.url
// })
}
// let str = '';
// if(res.result.chooseTypeDescribeList){
@ -363,6 +409,34 @@
</script>
<style lang="scss" scoped>
.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;
@ -493,7 +567,18 @@
// 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;

View File

@ -53,21 +53,29 @@
</view>
<view class="list-info">
<text>现场作业环境</text>
<!-- <view class="source-box">
<text v-for="(item, index) in detailData.fieldWorkingEnvironment" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view> -->
<ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
</view>
<view class="list-info">
<text>安全技术交底</text>
<ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<view class="source-box">
<text v-for="(item, index) in detailData.safetyAndTechnologyDisclosure" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view>
<!-- <ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul> -->
</view>
<!-- <view class="list-info">
安全作业票编号<text class="detail-data">{{detailData.safetyWorkTicketCode}}</text>
@ -155,6 +163,14 @@
</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>
@ -163,7 +179,10 @@
import safe from './safe.vue'
import side from './side.vue'
import workFinally from './workFinally.vue'
import {
isVideoLink,
isImageLink
} from '@/utils/tool.js'
export default {
components:{
plan,
@ -194,7 +213,10 @@
detailData:{},
isShowBtn: null,
userInfo: {},
btnAuth: true
btnAuth: true,
showIframe: false,
show: false,
iframeUrl: ""
}
},
onReachBottom() {
@ -228,6 +250,30 @@
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 {
window.open(`${this.url_config}image/${url}`)
}
return;
},
//
previewImage(url) {
uni.previewImage({
@ -255,9 +301,9 @@
if (this.detailData.safetyAndTechnologyDisclosure) {
this.detailData.safetyAndTechnologyDisclosure = JSON.parse(this.detailData
.safetyAndTechnologyDisclosure)
this.detailData.safetyAndTechnologyDisclosure.map(item => {
item.url = this.url_config + 'image/' + item.url
})
// this.detailData.safetyAndTechnologyDisclosure.map(item => {
// item.url = this.url_config + 'image/' + item.url
// })
}
// let str = '';
// if(res.result.chooseTypeDescribeList){
@ -357,6 +403,34 @@
</script>
<style lang="scss" scoped>
.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;
@ -471,7 +545,18 @@
// 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;

View File

@ -59,21 +59,29 @@
</view>
<view class="list-info">
<text>现场作业环境</text>
<!-- <view class="source-box">
<text v-for="(item, index) in detailData.fieldWorkingEnvironment" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view> -->
<ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
</view>
<view class="list-info">
<text>安全技术交底</text>
<ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<view class="source-box">
<text v-for="(item, index) in detailData.safetyAndTechnologyDisclosure" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view>
<!-- <ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul> -->
</view>
<!-- <view class="list-info">
安全隐患总数<text class="detail-data">{{detailData.hiddenDangerNum}}</text>
@ -155,6 +163,14 @@
</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>
@ -163,7 +179,10 @@
import safe from './safe.vue'
import side from './side.vue'
import workFinally from './workFinally.vue'
import {
isVideoLink,
isImageLink
} from '@/utils/tool.js'
export default {
components:{
plan,
@ -194,7 +213,10 @@
detailData:{},
isShowBtn: null,
userInfo: {},
btnAuth: true
btnAuth: true,
showIframe: false,
show: false,
iframeUrl: ""
}
},
onReachBottom() {
@ -228,6 +250,30 @@
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 {
window.open(`${this.url_config}image/${url}`)
}
return;
},
//
previewImage(url) {
uni.previewImage({
@ -255,9 +301,9 @@
if (this.detailData.safetyAndTechnologyDisclosure) {
this.detailData.safetyAndTechnologyDisclosure = JSON.parse(this.detailData
.safetyAndTechnologyDisclosure)
this.detailData.safetyAndTechnologyDisclosure.map(item => {
item.url = this.url_config + 'image/' + item.url
})
// this.detailData.safetyAndTechnologyDisclosure.map(item => {
// item.url = this.url_config + 'image/' + item.url
// })
}
// let str = '';
// if(res.result.chooseTypeDescribeList){
@ -357,6 +403,34 @@
</script>
<style lang="scss" scoped>
.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;
@ -487,7 +561,18 @@
// 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;

File diff suppressed because it is too large Load Diff

View File

@ -61,21 +61,29 @@
</view>
<view class="list-info">
<text>现场作业环境</text>
<!-- <view class="source-box">
<text v-for="(item, index) in detailData.fieldWorkingEnvironment" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view> -->
<ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
</view>
<view class="list-info">
<text>安全技术交底</text>
<ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<view class="source-box">
<text v-for="(item, index) in detailData.safetyAndTechnologyDisclosure" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view>
<!-- <ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul> -->
</view>
<!-- <view class="list-info">
作业内容<text class="detail-data">{{detailData.jobContent}}</text>
@ -164,6 +172,14 @@
</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>
@ -172,7 +188,10 @@
import safe from './safe.vue'
import side from './side.vue'
import workFinally from './workFinally.vue'
import {
isVideoLink,
isImageLink
} from '@/utils/tool.js'
export default {
components:{
plan,
@ -203,7 +222,10 @@
detailData:{},
isShowBtn: null,
userInfo: {},
btnAuth: true
btnAuth: true,
showIframe: false,
show: false,
iframeUrl: ""
}
},
onReachBottom() {
@ -237,6 +259,30 @@
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 {
window.open(`${this.url_config}image/${url}`)
}
return;
},
//
previewImage(url) {
uni.previewImage({
@ -264,9 +310,9 @@
if (this.detailData.safetyAndTechnologyDisclosure) {
this.detailData.safetyAndTechnologyDisclosure = JSON.parse(this.detailData
.safetyAndTechnologyDisclosure)
this.detailData.safetyAndTechnologyDisclosure.map(item => {
item.url = this.url_config + 'image/' + item.url
})
// this.detailData.safetyAndTechnologyDisclosure.map(item => {
// item.url = this.url_config + 'image/' + item.url
// })
}
// let str = '';
// if(res.result.chooseTypeDescribeList){
@ -371,6 +417,34 @@
</script>
<style lang="scss" scoped>
.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;
@ -501,7 +575,18 @@
// 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;

View File

@ -80,21 +80,29 @@
</view>
<view class="list-info">
<text>现场作业环境</text>
<!-- <view class="source-box">
<text v-for="(item, index) in detailData.fieldWorkingEnvironment" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view> -->
<ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<li class="img-item" v-for="(item, index) in detailData.fieldWorkingEnvironment"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
</view>
<view class="list-info">
<text>安全技术交底</text>
<ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul>
<view class="source-box">
<text v-for="(item, index) in detailData.safetyAndTechnologyDisclosure" :key="index"
@click="downloadFile(item.url)">{{item.url}}</text>
</view>
<!-- <ul>
<li class="img-item" v-for="(item, index) in detailData.safetyAndTechnologyDisclosure"
:key="index">
<image :src="item.url" @click="previewImage(item.url)">
</li>
</ul> -->
</view>
<!-- <view class="list-info">
证书编号<text class="detail-data">{{detailData.certificateNo}}</text>
@ -176,6 +184,14 @@
</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>
@ -184,7 +200,10 @@
import safe from './safe.vue'
import side from './side.vue'
import workFinally from './workFinally.vue'
import {
isVideoLink,
isImageLink
} from '@/utils/tool.js'
export default {
components:{
plan,
@ -215,7 +234,10 @@
detailData:{},
isShowBtn: null,
userInfo: {},
btnAuth: true
btnAuth: true,
showIframe: false,
show: false,
iframeUrl: ""
}
},
onReachBottom() {
@ -249,6 +271,30 @@
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 {
window.open(`${this.url_config}image/${url}`)
}
return;
},
//
previewImage(url) {
uni.previewImage({
@ -276,9 +322,9 @@
if (this.detailData.safetyAndTechnologyDisclosure) {
this.detailData.safetyAndTechnologyDisclosure = JSON.parse(this.detailData
.safetyAndTechnologyDisclosure)
this.detailData.safetyAndTechnologyDisclosure.map(item => {
item.url = this.url_config + 'image/' + item.url
})
// this.detailData.safetyAndTechnologyDisclosure.map(item => {
// item.url = this.url_config + 'image/' + item.url
// })
}
// let str = '';
// if(res.result.chooseTypeDescribeList){
@ -378,6 +424,34 @@
</script>
<style lang="scss" scoped>
.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;
}
}
.last-row{
padding-bottom: 5rpx;
}
@ -497,7 +571,18 @@
// 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;

View File

@ -252,4 +252,15 @@ export function exitApp() {
uni.redirectTo({
url: '/pages/login/login'
})
}
export function isVideoLink(url) {
const videoExtensions = ['mp4', 'webm', 'ogg', 'mov', 'avi', 'flv', 'wmv'];
const extension = url.split('.').pop().toLowerCase();
return videoExtensions.includes(extension);
}
export function isImageLink(url) {
// 正则表达式匹配常见的图片文件扩展名
const imageExtensionsRegex = /\.(jpg|jpeg|png|gif|webp)$/i;
return imageExtensionsRegex.test(url);
}