mirror of
https://gitee.com/myxzgzs/boyue_jnpf.git
synced 2025-08-09 07:42:43 +08:00
120 lines
3.2 KiB
Vue
120 lines
3.2 KiB
Vue
<template>
|
|
<view class="dataBoard-v">
|
|
<view class="dataBoard-box">
|
|
<u-swiper :list="list" v-if="swiper" height="300" mode='rect'
|
|
:indicator-pos="option.carouselIndicatorPosition" :autoplay="option.carouselAutoplay"
|
|
:interval="option.carouselInterval" :img-mode="option.imageFillStyle" :title="true"
|
|
:title-style="option.titleStyle" @click="swiperC" name="imageUrl" :effect3d="option.carouselType">
|
|
</u-swiper>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import resources from '@/libs/resources.js'
|
|
import {
|
|
getDataInterfaceRes
|
|
} from '@/api/common'
|
|
|
|
export default {
|
|
props: {
|
|
config: {
|
|
type: Object,
|
|
default: () => {}
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
option: {},
|
|
propsApi: '',
|
|
list: [],
|
|
swiper: false
|
|
}
|
|
},
|
|
created() {
|
|
this.init()
|
|
uni.$off('proRefresh')
|
|
uni.$on('proRefresh', () => {
|
|
this.initData()
|
|
})
|
|
},
|
|
methods: {
|
|
init() {
|
|
this.option = JSON.parse(JSON.stringify(this.config.option))
|
|
this.option.titleStyle = {
|
|
"text-align": this.option.textLeft,
|
|
"font-size": this.option.textFontSize * 2 + 'rpx',
|
|
"font-weight": this.option.textFontWeight ? 700 : 400,
|
|
'color': this.option.textFontColor,
|
|
'background-color': this.option.textBgColor
|
|
}
|
|
this.option.carouselIndicatorPosition = this.option.carouselIndicatorPosition ===
|
|
"bottomRight" ? "bottomCenter" : this.option.carouselIndicatorPosition ===
|
|
"topLeft" ? "topCenter" : "none"
|
|
this.initData()
|
|
if (!this.config.allRefresh.autoRefresh && this.config.refresh.autoRefresh) {
|
|
setInterval(this.initData, this.config.refresh.autoRefreshTime * 60000)
|
|
}
|
|
},
|
|
async initData() {
|
|
this.swiper = false
|
|
let val = JSON.parse(JSON.stringify(this.option.appDefaultValue));
|
|
for (let i = 0; i < val.length; i++) {
|
|
let ele = val[i]
|
|
ele.title = ele.textDefaultValue
|
|
if (ele.dataType == 3) {
|
|
const res = await getDataInterfaceRes(ele.propsApi, {})
|
|
ele.imageUrl = res?.data ? res.data : ''
|
|
}
|
|
if (ele.dataType == 1) ele.imageUrl = this.define.baseURL + ele.imageUrl
|
|
}
|
|
this.list = val;
|
|
this.$nextTick(() => {
|
|
this.swiper = true
|
|
})
|
|
},
|
|
swiperC(e) {
|
|
if (this.config.platform === 'mp') return
|
|
let item = this.option.appDefaultValue[e]
|
|
let url = '';
|
|
if (item.linkType == 1 && item.type == 8) {
|
|
let propertyJson = JSON.parse(item.propertyJson)
|
|
uni.navigateTo({
|
|
url: "/pages/portal/scanPortal/index?id=" + propertyJson.moduleId + "&protalType=1" +
|
|
"&fullName=" + item.textDefaultValue || '',
|
|
fail: (err) => {},
|
|
});
|
|
return
|
|
}
|
|
if (item.linkType == '1') {
|
|
let data = {
|
|
id: item.moduleId,
|
|
moduleId: item.moduleId,
|
|
urlAddress: item.urlAddress,
|
|
...JSON.parse(item.propertyJson)
|
|
}
|
|
url = '/pages/apply/dynamicModel/index?config=' +
|
|
this.jnpf.base64.encode(JSON.stringify(data))
|
|
if (item.type == '2') url = item.urlAddress
|
|
} else {
|
|
url = '/pages/apply/externalLink/index?url=' + encodeURIComponent(item.urlAddress)
|
|
}
|
|
uni.navigateTo({
|
|
url: url,
|
|
fail: (err) => {
|
|
this.$u.toast("暂无此页面")
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss">
|
|
.dataBoard-v {
|
|
padding: 20rpx;
|
|
|
|
.dataBoard-box {
|
|
margin: 20rpx 0;
|
|
}
|
|
}
|
|
</style> |