2025-05-13 09:17:47 +00:00
|
|
|
|
<route lang="json5" type="page">
|
|
|
|
|
{
|
|
|
|
|
layout: 'default',
|
|
|
|
|
style: {
|
|
|
|
|
navigationStyle: 'custom',
|
|
|
|
|
navigationBarTitleText: '三册',
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
</route>
|
|
|
|
|
<template>
|
2025-05-16 08:03:56 +00:00
|
|
|
|
<PageLayout navTitle="三册查看">
|
2025-05-13 09:17:47 +00:00
|
|
|
|
<wd-col-picker label="选择目录" v-model="selectedValue" :columns="dataSource" :column-change="columnChange"
|
2025-05-16 03:01:27 +00:00
|
|
|
|
@confirm="handleConfirm" :display-format="displayFormat"></wd-col-picker>
|
2025-05-13 09:17:47 +00:00
|
|
|
|
<iframe id="bdIframe" :src="fileUrl" ref="bdIframe" style="border: none;" class="iframe" v-if="fileUrl" />
|
2025-05-29 10:25:16 +00:00
|
|
|
|
<view v-else class="bdIframe" @click="onlinePreview(item.path)" v-for="(item, i) in fileUrl2" style="padding: 15px 0 0 0">
|
2025-05-13 09:17:47 +00:00
|
|
|
|
<wd-card :title="item.name"></wd-card>
|
|
|
|
|
</view>
|
2025-05-16 08:03:56 +00:00
|
|
|
|
</PageLayout>
|
2025-05-13 09:17:47 +00:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import {
|
|
|
|
|
useUserStore
|
2025-05-29 10:25:16 +00:00
|
|
|
|
} from '@/store/user'
|
2025-05-13 09:17:47 +00:00
|
|
|
|
import {
|
|
|
|
|
getListApi,
|
|
|
|
|
getJobDesIdByDepAndName,
|
|
|
|
|
getPathByInsflagQuote,
|
|
|
|
|
queryByIdApi
|
2025-05-29 10:25:16 +00:00
|
|
|
|
} from '@/api/pages/sc'
|
|
|
|
|
import {
|
|
|
|
|
Base64
|
|
|
|
|
} from 'js-base64'
|
|
|
|
|
import base64 from '@/utils/code';
|
2025-05-13 09:17:47 +00:00
|
|
|
|
import {
|
|
|
|
|
getEnvBaseUrl
|
|
|
|
|
} from '@/utils/index'
|
2025-05-29 10:25:16 +00:00
|
|
|
|
const baseUrl = 'https://10.75.166.6/jeecg-boot/sys/common/static/';
|
2025-05-13 09:17:47 +00:00
|
|
|
|
const data = ref([])
|
|
|
|
|
const dataSource = ref([])
|
|
|
|
|
const selectedValue = ref([]);
|
|
|
|
|
const loading = ref(false);
|
|
|
|
|
const path = ref('')
|
|
|
|
|
const url = ref('')
|
|
|
|
|
const fileUrl = ref('')
|
|
|
|
|
const fileUrl2 = ref([])
|
|
|
|
|
const columnChange = ({
|
|
|
|
|
selectedItem,
|
|
|
|
|
resolve,
|
|
|
|
|
finish
|
|
|
|
|
}) => {
|
|
|
|
|
const areaData = findChildrenByCode(data.value, selectedItem.value)
|
|
|
|
|
if (areaData && areaData.length) {
|
|
|
|
|
resolve(
|
|
|
|
|
areaData.map((item) => {
|
|
|
|
|
return {
|
|
|
|
|
value: item.value,
|
|
|
|
|
label: item.text
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
} else {
|
|
|
|
|
finish()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleConfirm = ({
|
|
|
|
|
value
|
|
|
|
|
}) => {
|
|
|
|
|
queryByIdApi(value[value.length - 1]).then(res => {
|
|
|
|
|
let url = res.result.path
|
|
|
|
|
let quote = res.result.quote
|
|
|
|
|
let insFlag = res.result.insFlag
|
|
|
|
|
if (url) {
|
2025-05-29 10:25:16 +00:00
|
|
|
|
if (isH5()) {
|
|
|
|
|
fileUrl.value = 'https://36.112.48.190/preview/onlinePreview?url=' + encodeURIComponent(
|
|
|
|
|
Base64.encode(baseUrl + url))
|
|
|
|
|
} else {
|
|
|
|
|
fileUrl.value = 'https://36.112.48.190/preview/onlinePreview?url=' + encodeURIComponent(
|
|
|
|
|
new base64().encode(baseUrl + url))
|
|
|
|
|
}
|
2025-05-16 03:01:27 +00:00
|
|
|
|
} else if (/^-?\d+$/.test(quote) && !insFlag) {
|
2025-05-13 09:17:47 +00:00
|
|
|
|
getJobDesIdByDepAndName({
|
|
|
|
|
jobname: quote,
|
|
|
|
|
jobdep: useUserStore().userInfo.orgCode
|
|
|
|
|
}).then((res) => {
|
2025-05-16 03:01:27 +00:00
|
|
|
|
fileUrl.value = getEnvBaseUrl() + '/jmreport/view/929517863011811328?id=' + res
|
|
|
|
|
.id +
|
2025-05-13 09:17:47 +00:00
|
|
|
|
"&token=" + useUserStore().userInfo.token;
|
|
|
|
|
})
|
2025-05-16 03:01:27 +00:00
|
|
|
|
} else if (insFlag) {
|
2025-05-13 09:17:47 +00:00
|
|
|
|
getPathByInsflagQuote({
|
|
|
|
|
insFlag: insFlag,
|
|
|
|
|
quote: quote
|
|
|
|
|
}).then(res => {
|
|
|
|
|
fileUrl.value = ''
|
|
|
|
|
fileUrl2.value = res;
|
|
|
|
|
})
|
2025-05-16 03:01:27 +00:00
|
|
|
|
} else {
|
2025-05-13 09:17:47 +00:00
|
|
|
|
fileUrl.value = ''
|
|
|
|
|
fileUrl2.value = ''
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const displayFormat = (selectedItems) => {
|
|
|
|
|
if (selectedItems.length > 0) {
|
|
|
|
|
return selectedItems[selectedItems.length - 1].label
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getList = () => {
|
|
|
|
|
getListApi(useUserStore().userInfo.orgCode).then(res => {
|
|
|
|
|
data.value = res.result
|
|
|
|
|
dataSource.value = [data.value.map(item => {
|
|
|
|
|
return {
|
|
|
|
|
value: item.value,
|
|
|
|
|
label: item.text
|
|
|
|
|
}
|
|
|
|
|
})]
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const onlinePreview = (e) => {
|
|
|
|
|
uni.navigateTo({
|
2025-05-29 10:25:16 +00:00
|
|
|
|
url: `/pages/onlinePreview/detail?data=${e}`
|
2025-05-13 09:17:47 +00:00
|
|
|
|
});
|
|
|
|
|
};
|
2025-05-16 03:01:27 +00:00
|
|
|
|
|
|
|
|
|
const findChildrenByCode = (data, code) => {
|
|
|
|
|
if (!code) {
|
|
|
|
|
return data
|
|
|
|
|
}
|
|
|
|
|
for (const item of data) {
|
|
|
|
|
if (item.value === code) {
|
|
|
|
|
return item.children || null
|
|
|
|
|
}
|
|
|
|
|
if (item.children) {
|
|
|
|
|
const childrenResult = findChildrenByCode(item.children, code)
|
|
|
|
|
if (childrenResult) {
|
|
|
|
|
return childrenResult
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-13 09:17:47 +00:00
|
|
|
|
// 判断是否是 H5 环境
|
|
|
|
|
const isH5 = () => {
|
2025-05-16 03:01:27 +00:00
|
|
|
|
// #ifdef H5
|
|
|
|
|
return true;
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifndef H5
|
|
|
|
|
return false;
|
|
|
|
|
// #endif
|
2025-05-13 09:17:47 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onLoad(() => {
|
|
|
|
|
getList();
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
#bdIframe {
|
2025-05-29 10:25:16 +00:00
|
|
|
|
height: calc(100vh - 230rpx);
|
|
|
|
|
/* 使用视口高度减去顶部固定高度 */
|
|
|
|
|
border: none;
|
|
|
|
|
/* 移除absolute定位,改用普通文档流 */
|
|
|
|
|
position: relative;
|
|
|
|
|
top: 0;
|
2025-05-13 09:17:47 +00:00
|
|
|
|
}
|
|
|
|
|
</style>
|