Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev

This commit is contained in:
guoyue 2022-08-10 15:48:08 +08:00
commit 3f3fc65ff5
33 changed files with 1001 additions and 126 deletions

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25 * @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-09 09:24:43 * @LastEditTime: 2022-08-09 18:09:19
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!DOCTYPE html> <!DOCTYPE html>
@ -29,10 +29,11 @@
<!-- 站点配置 --> <!-- 站点配置 -->
<script> <script>
window.SITE_CONFIG = {}; window.SITE_CONFIG = {};
// window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001'; window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001';
// window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/'; window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/';
// window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/'; window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin'; window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
window.SITE_CONFIG['websocketURL'] = '15.72.183.90:8000/renren-admin';
window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address'; window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 包头 // 包头
// window.SITE_CONFIG['backUrl'] = 'http://10.110.205.1:8001'; // window.SITE_CONFIG['backUrl'] = 'http://10.110.205.1:8001';
@ -54,12 +55,12 @@
// window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin'; // window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin';
// 开发 // 开发
// window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797'; // window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797';
window.SITE_CONFIG['backUrl'] = 'http://localhost:8001'; // window.SITE_CONFIG['backUrl'] = 'http://localhost:8001';
window.SITE_CONFIG['previewUrl'] = 'http://192.168.124.236:9796/'; // window.SITE_CONFIG['previewUrl'] = 'http://192.168.124.236:9796/';
window.SITE_CONFIG['frontUrl'] = 'http://192.168.124.236:9796/document/#/devModelFile/'; // window.SITE_CONFIG['frontUrl'] = 'http://192.168.124.236:9796/document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://192.168.124.236:8888/renren-admin'; // window.SITE_CONFIG['apiURL'] = 'http://192.168.124.236:8888/renren-admin';
window.SITE_CONFIG['websocketURL'] = '192.168.124.236:8888/renren-admin'; // window.SITE_CONFIG['websocketURL'] = '192.168.124.236:8888/renren-admin';
window.SITE_CONFIG['POI_URL'] = 'http://192.168.124.236:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address'; // window.SITE_CONFIG['POI_URL'] = 'http://192.168.124.236:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 穿透版本 // 穿透版本
// window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797'; // window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797';
// window.SITE_CONFIG['previewUrl'] = 'http://124.222.94.39:9796/'; // window.SITE_CONFIG['previewUrl'] = 'http://124.222.94.39:9796/';

View File

@ -5,9 +5,9 @@
* @LastEditTime: 2022-08-06 10:43:53 * @LastEditTime: 2022-08-06 10:43:53
* @Description: 数据资源参数配置 * @Description: 数据资源参数配置
*/ */
const newLocation = 'xihaian' const newLocation = 'qingdao'
// const newLocation = 'baotou' // const newLocation = 'baotou'
// const newLocation = 'xihaian' //const newLocation = 'xihaian'
// //
const whoShow = {} const whoShow = {}

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-01 19:19:40 * @Date: 2022-04-01 19:19:40
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-18 16:24:44 * @LastEditTime: 2022-08-09 10:37:31
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -370,3 +370,11 @@ export function getDevelopDocTree(params) {
params, params,
}) })
} }
// 广
export function selectAppList(params) {
return request({
url: '/resource/selectAppList',
method: 'get',
params,
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 898 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -7,14 +7,28 @@
:key="`algorithm-${index}`" :key="`algorithm-${index}`"
class="algorithm-card" class="algorithm-card"
> >
<div class="algorithm-card-title">{{ item.name }}</div> <a-image
:src="algorithmCardPhoto(item.infoList, item)"
:width="525"
:height="275"
:fallback="imgSrc"
:preview="false"
></a-image>
<a-tooltip>
<template #title>{{ item.name }}</template>
<div class="algorithm-card-title" @click="detailFunction(item.id)">
<span>{{ item.name }}</span>
<span>{{ item.deptName }}</span>
</div>
</a-tooltip>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { pageWithAttrs } from '@/api/abilityStatistics' import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted } from 'vue' import { ref, onMounted, onBeforeUnmount } from 'vue'
const dataList = ref([]) const dataList = ref([])
const params = { const params = {
deptIds: [], deptIds: [],
@ -26,37 +40,78 @@
pageSize: 9, pageSize: 9,
type: '组件服务', type: '组件服务',
} }
let algorithmclass = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo.jpg'))
const dataLength = ref(true)
const isNoMore = ref(false) const isNoMore = ref(false)
let url = ref('')
const pageWithAttrsFunction = () => { const pageWithAttrsFunction = () => {
pageWithAttrs(params).then((res) => { pageWithAttrs(params).then((res) => {
dataList.value = res.data.data.records dataList.value = res.data.data.records
if (res.data.data.records.length < 9) {
dataLength.value = false
}
}) })
} }
pageWithAttrsFunction() pageWithAttrsFunction()
onMounted(() => { //
const algorithmclass = document.querySelector('.algorithm-class') const algorithmCardPhoto = (List, item) => {
algorithmclass.addEventListener('scroll', (e) => { let obj = List.filter((item) => item.attrType === '应用场景')[0]
if (obj && obj.attrValue != '') {
console.log(
item.name,
item.id,
obj.attrValue,
'----------------------------'
)
obj = JSON.parse(obj.attrValue)[0].img
}
return obj || ''
}
//
const detailFunction = (id) => {
window.open(window.SITE_CONFIG.previewUrl + `#/details?id=${id}`)
}
const algorithmFunction = (e) => {
var scrollTop = e.currentTarget.scrollTop var scrollTop = e.currentTarget.scrollTop
var windowHeight = e.currentTarget.clientHeight var windowHeight = e.currentTarget.clientHeight
var scrollHeight = e.currentTarget.scrollHeight var scrollHeight = e.currentTarget.scrollHeight
console.log(scrollTop, windowHeight, scrollHeight, '123') console.log(scrollTop, windowHeight, scrollHeight, '123')
if (scrollTop + windowHeight == scrollHeight) { if (
scrollTop + windowHeight <= scrollHeight + 1 &&
scrollTop + windowHeight >= scrollHeight - 1
) {
// //
isNoMore.value = true isNoMore.value = true
params.pageNum++ params.pageNum++
pageWithAttrs(params).then((res) => { pageWithAttrs(params).then((res) => {
dataList.value.push(...res.data.data.records) dataList.value.push(...res.data.data.records)
if (res.data.data.records.length < 9) {
dataLength.value = false
}
}) })
} else { } else {
isNoMore.value = false isNoMore.value = false
} }
}
onMounted(() => {
algorithmclass = document.querySelector('.algorithm-class')
if (dataLength.value) {
//
algorithmclass.addEventListener('scroll', algorithmFunction, true)
}
}) })
onBeforeUnmount(() => {
algorithmclass.removeEventListener('scroll', algorithmFunction, true)
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.algorithm { .algorithm {
.algorithm-class { .algorithm-class {
margin-top: 0.6rem;
margin-bottom: 0.59rem;
display: grid; display: grid;
grid-template-columns: repeat(3, 33%); grid-template-columns: repeat(3, 33%);
height: 8.8rem; height: 8.8rem;
@ -67,16 +122,51 @@
height: 2.75rem; height: 2.75rem;
width: 5.25rem; width: 5.25rem;
background: url('~@/assets/capacitySquare/algorithm-bg.png') no-repeat; background: url('~@/assets/capacitySquare/algorithm-bg.png') no-repeat;
background-size: 100%; background-size: 100% 100%;
margin-bottom: 0.3rem; margin-bottom: 0.4rem;
margin-right: 0.65rem; margin-right: 0.65rem;
position: relative; position: relative;
:deep(.ant-image) {
img {
margin-top: 0.15rem;
height: 2.45rem;
width: 5.05rem;
margin-left: 0.1rem;
}
}
.algorithm-card-photo {
height: 100%;
width: 100%;
background: url('~@/assets/capacitySquare/algorithm-photo.jpg')
no-repeat;
background-size: 100%;
}
.algorithm-card-title { .algorithm-card-title {
position: absolute; position: absolute;
height: 0.6rem; height: 0.6rem;
width: 100%; margin-left: 0.08rem;
width: 97%;
color: #ffffff; color: #ffffff;
font-size: 0.22rem; font-size: 0.22rem;
font-family: alibaba;
bottom: 0.15rem;
padding-left: 0.22rem;
background: url('~@/assets/capacitySquare/algorithm-title-bg.png')
no-repeat;
background-size: 100%;
display: flex;
flex-direction: column;
justify-content: center;
span {
line-height: 0.24rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}
span:last-child {
font-size: 0.14rem;
}
} }
} }
} }

View File

@ -2,11 +2,270 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-08-09 09:31:25 * @Date: 2022-08-09 09:31:25
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-09 09:38:03 * @LastEditTime: 2022-08-10 14:29:05
* @Description: 应用资源 * @Description: 应用资源
--> -->
<template> <template>
<div>应用资源</div> <div class="application">
<div class="select">
<div class="top" @click="selectFlag = true">
{{ typeName }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag">
<span class="light"></span>
<div @click="getList('全市')">全市</div>
<div @click="getList('市级')">市级</div>
<div @click="getList('区级')">区级</div>
<div @click="getList('企业')">企业</div>
</div>
</div>
<div class="item-box">
<div class="item" v-for="item in data.list" :key="item.id">
<a-image
:width="510"
:height="270"
:preview="false"
:src="item.pic"
:fallback="item.pic2"
/>
<div class="bottom" @click="goToView(item.id)">
<div class="name">{{ item.name }}</div>
<div class="dept">{{ item.deptName || '--' }}</div>
</div>
</div>
</div>
</div>
</template> </template>
<script setup></script> <script setup>
<style lang="less" scoped></style> import { onMounted, reactive, onBeforeUnmount, ref, nextTick } from 'vue'
import { selectAppList } from '@/api/home'
import { useRouter } from 'vue-router'
const router = useRouter()
const pageNum = ref(1)
const flag = ref(true)
const type = ref(null)
const typeName = ref('全市')
const data = reactive({ list: [] })
const selectFlag = ref(false)
let dom = null
const goToView = (id) => {
const newpage = router.resolve({
path: '/details',
query: {
id: id,
},
})
window.open(newpage.href, '_blank')
}
const getList = (str) => {
if (str) {
dom.scrollTop = 0
switch (str) {
case '全市':
type.value = null
typeName.value = '全 市'
break
case '市级':
type.value = 2
typeName.value = '市 级'
break
case '区级':
type.value = 3
typeName.value = '区 级'
break
case '企业':
type.value = 4
typeName.value = '企 业'
break
}
pageNum.value = 1
data.list = []
}
selectAppList({ pageNum: pageNum.value, type: type.value }).then((res) => {
if (res.data.data.length < 9) {
dom.removeEventListener('scroll', viewMonitor, true)
}
res.data.data.map((val) => {
if (!val.pic) {
val.pic = require('@/assets/capacitySquare/yyzy.jpg')
}
val.pic2 = require('@/assets/capacitySquare/yyzy.jpg')
})
data.list.push(...res.data.data)
selectFlag.value = false
nextTick(() => {
dom = document.querySelector('.item-box')
flag.value = true
if (str) {
dom.removeEventListener('scroll', viewMonitor, true)
dom.addEventListener('scroll', viewMonitor, true)
}
})
})
}
getList()
const viewMonitor = () => {
const clientHeight = dom.clientHeight
const scrollTop = dom.scrollTop
const scrollHeight = dom.scrollHeight
// console.log('', clientHeight, scrollTop, scrollHeight, dom)
if (
clientHeight + scrollTop <= scrollHeight + 1 &&
clientHeight + scrollTop >= scrollHeight - 1
) {
console.log('竖向滚动条已经滚动到底部')
if (flag.value) {
flag.value = false
pageNum.value++
getList()
}
}
}
onMounted(() => {
dom = document.querySelector('.item-box')
console.log('box============', dom)
dom.addEventListener('scroll', viewMonitor, true)
})
onBeforeUnmount(() => {
dom.removeEventListener('scroll', viewMonitor, true)
})
</script>
<style lang="less" scoped>
@font-face {
font-family: 'webfont';
src: url('~@/assets/capacitySquare/webfont.ttf');
}
.application {
padding: 0 0.15rem;
.select {
margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff;
font-size: 0.2rem;
font-family: webfont;
position: relative;
.top {
cursor: pointer;
width: 3.61rem;
height: 0.85rem;
font-weight: 600;
text-align: center;
padding-top: 0.1rem;
background: url('~@/assets/capacitySquare/select-bg.png') no-repeat;
background-size: 100%;
position: relative;
.light {
width: 0.56rem;
height: 3px;
position: absolute;
top: 0.4rem;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png')
no-repeat;
background-size: 100%;
}
}
.bottom {
cursor: pointer;
position: absolute;
top: 0.5rem;
left: 0.9rem;
z-index: 1000;
background: rgba(57, 134, 239, 0.68);
border: 1px solid #aed5ff;
.light {
display: inline-block;
width: 2.39rem;
height: 5px;
position: absolute;
top: -0.08rem;
left: -0.3rem;
background: url('~@/assets/capacitySquare/select-light2.png')
no-repeat;
background-size: 100%;
}
& > div {
width: 1.8rem;
height: 0.4rem;
line-height: 0.4rem;
text-align: center;
border-top: 1px solid #aed5ff;
}
& > div:nth-of-type(1) {
border: none;
}
}
}
.item-box {
margin-bottom: 0.15rem;
height: 8.8rem;
padding: 0 0.9rem 0 1rem;
overflow-y: scroll;
display: flex;
justify-content: space-around;
flex-wrap: wrap;
.item {
width: 5.25rem;
height: 2.75rem;
margin-bottom: 0.3rem;
position: relative;
background: url('~@/assets/capacitySquare/algorithm-bg.png') no-repeat;
background-size: 100%;
background-position: center;
display: flex;
justify-content: center;
align-items: center;
:deep(.ant-image-img) {
width: 99%;
height: 99%;
margin-left: 0.03rem;
object-fit: contain;
}
.bottom {
cursor: pointer;
width: 98%;
height: 0.6rem;
padding-left: 0.3rem;
margin-left: 0.05rem;
margin-bottom: 0.05rem;
background: url('~@/assets/capacitySquare/bt-bg.png') no-repeat;
background-size: 100%;
color: #fff;
font-family: webfont;
position: absolute;
bottom: 0;
left: 0;
.name {
height: 0.44rem;
line-height: 0.44rem;
font-size: 0.22rem;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
word-break: break-all;
}
.dept {
height: 0.12rem;
line-height: 0.04rem;
font-size: 0.12rem;
color: #bbb;
}
}
}
}
}
.item-box::-webkit-scrollbar-track-piece {
background: #a5bcdb;
border-radius: 0.08rem;
}
.item-box::-webkit-scrollbar-thumb {
height: 3.2rem;
background: linear-gradient(to bottom, #47d7f5, #3dc6e3);
}
.item-box::-webkit-scrollbar {
height: 8.8rem;
width: 0.08rem;
border-radius: 0.08rem;
}
</style>

View File

@ -0,0 +1,181 @@
<!-- 图层服务 -->
<template>
<div class="algorithm">
<div class="algorithm-class">
<div
v-for="(item, index) in dataList"
:key="`algorithm-${index}`"
class="algorithm-card"
>
<a-image
:src="algorithmCardPhoto(item.infoList)"
:width="525"
:height="275"
:fallback="imgSrc"
:preview="false"
></a-image>
<a-tooltip>
<template #title>{{ item.name }}</template>
<div class="algorithm-card-title" @click="detailFunction(item.id)">
<span>{{ item.name }}</span>
<span>{{ item.deptName }}</span>
</div>
</a-tooltip>
</div>
</div>
</div>
</template>
<script setup>
import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted, onBeforeUnmount } from 'vue'
const dataList = ref([])
let algorithmclass = null
const params = {
deptIds: [],
districtId: '',
infoList: [{ attrType: '组件类型', attrValue: '图层服务' }],
orderField: 'visits',
orderType: 'DESC',
pageNum: 1,
pageSize: 9,
type: '组件服务',
}
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo2.jpg'))
const dataLength = ref(true)
const isNoMore = ref(false)
const pageWithAttrsFunction = () => {
pageWithAttrs(params).then((res) => {
dataList.value = res.data.data.records
if (res.data.data.records.length < 9) {
dataLength.value = false
}
})
}
pageWithAttrsFunction()
//
const algorithmCardPhoto = (List) => {
let url = ''
List.map((item) => {
if (item.attrType === '图层缩略图') {
url = item.attrValue
}
})
return url
}
//
const detailFunction = (id) => {
window.open(window.SITE_CONFIG.previewUrl + `#/details?id=${id}`)
}
const layerFunction = (e) => {
var scrollTop = e.currentTarget.scrollTop
var windowHeight = e.currentTarget.clientHeight
var scrollHeight = e.currentTarget.scrollHeight
console.log(scrollTop, windowHeight, scrollHeight, '123')
if (
scrollTop + windowHeight <= scrollHeight + 1 &&
scrollTop + windowHeight >= scrollHeight - 1
) {
//
isNoMore.value = true
params.pageNum++
pageWithAttrs(params).then((res) => {
dataList.value.push(...res.data.data.records)
if (res.data.data.records.length < 9) {
dataLength.value = false
}
})
} else {
isNoMore.value = false
}
}
onMounted(() => {
algorithmclass = document.querySelector('.algorithm-class')
if (dataLength.value) {
//
algorithmclass.addEventListener('scroll', layerFunction, true)
}
})
onBeforeUnmount(() => {
algorithmclass.removeEventListener('scroll', layerFunction, true)
})
</script>
<style lang="less" scoped>
.algorithm {
.algorithm-class {
margin-top: 0.6rem;
margin-bottom: 0.59rem;
display: grid;
grid-template-columns: repeat(3, 33%);
height: 8.8rem;
overflow: auto;
margin-left: 1.15rem;
margin-right: 0.15rem;
.algorithm-card {
height: 2.75rem;
width: 5.23rem;
background: url('~@/assets/capacitySquare/algorithm-bg.png') no-repeat;
background-size: 100% 100%;
margin-bottom: 0.4rem;
margin-right: 0.65rem;
position: relative;
:deep(.ant-image) {
img {
margin-top: 0.15rem;
height: 2.45rem;
width: 5.05rem;
margin-left: 0.1rem;
}
}
.algorithm-card-photo {
height: 100%;
width: 100%;
background: url('~@/assets/capacitySquare/algorithm-photo.jpg')
no-repeat;
background-size: 100%;
}
.algorithm-card-title {
position: absolute;
height: 0.6rem;
margin-left: 0.08rem;
width: 97%;
color: #ffffff;
font-size: 0.22rem;
font-family: alibaba;
bottom: 0.15rem;
padding-left: 0.22rem;
background: url('~@/assets/capacitySquare/algorithm-title-bg.png')
no-repeat;
background-size: 100%;
display: flex;
flex-direction: column;
justify-content: center;
span {
line-height: 0.24rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}
span:last-child {
font-size: 0.14rem;
}
}
}
}
.algorithm-class::-webkit-scrollbar-track-piece {
background: #a5bcdb;
border-radius: 0.08rem;
}
.algorithm-class::-webkit-scrollbar-thumb {
height: 3.2rem;
background: linear-gradient(to bottom, #47d7f5, #3dc6e3);
}
.algorithm-class::-webkit-scrollbar {
height: 8.8rem;
width: 0.08rem;
border-radius: 0.08rem;
}
}
</style>

View File

@ -1,16 +1,27 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-08-09 11:32:47
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-09 15:26:57
* @Description: 告诉大家这是什么
-->
<template> <template>
<!-- <home-header></home-header> --> <div class="capacitySquare">
<div class="header">
<div class="left">城市云脑通用能力服务平台(UCS)</div>
{{ squareType }}
<div class="right" @click="backClick">返回集市</div>
</div>
<div class="light"></div>
<div class="box"> <div class="box">
<algorithm v-if="show === 'algorithm'"></algorithm> <algorithm v-if="show === 'algorithm'"></algorithm>
<layer v-else-if="show === 'layer'"></layer> <layer v-else-if="show === 'layer'"></layer>
<application v-else-if="show === 'application'"></application> <application v-else-if="show === 'application'"></application>
</div> </div>
<!-- <home-footer></home-footer> --> </div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
// import HomeHeader from '@/views/home/components/header'
// import HomeFooter from '@/views/newHome/components/Footer'
import algorithm from './components/algorithm.vue' import algorithm from './components/algorithm.vue'
import layer from './components/layer.vue' import layer from './components/layer.vue'
import application from './components/application.vue' import application from './components/application.vue'
@ -18,22 +29,90 @@
const router = useRouter() const router = useRouter()
const abilityToType = router.currentRoute.value.query.abilityToType const abilityToType = router.currentRoute.value.query.abilityToType
const show = ref('algorithm') const show = ref('algorithm')
const squareType = ref('应用广场')
if (abilityToType === '应用资源') { if (abilityToType === '应用资源') {
show.value = 'application' show.value = 'application'
squareType.value = '应用广场'
} else if (abilityToType === '图层服务') { } else if (abilityToType === '图层服务') {
show.value = 'layer' show.value = 'layer'
squareType.value = 'GIS广场'
} else if (abilityToType === '智能算法') { } else if (abilityToType === '智能算法') {
show.value = 'algorithm' show.value = 'algorithm'
squareType.value = '算法广场'
} else { } else {
console.log('no') console.log('no')
} }
//
const backClick = () => {
const newpage = router.resolve({
path: '/DetailsPageconetent',
query: {
select: '组件服务',
},
})
window.location.href = newpage.href
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@font-face { @font-face {
font-family: 'webfont';
src: url('~@/assets/capacitySquare/webfont.ttf');
}
.capacitySquare {
width: 100%;
height: 100%;
background: url('~@/assets/capacitySquare/bg.png') no-repeat;
background-size: 100%;
display: flex;
flex-direction: column;
position: relative;
.header {
width: 100%;
height: 0.8rem;
background: url('~@/assets/capacitySquare/header-bg.png') no-repeat;
background-size: 100%;
color: #fff;
text-align: center;
font-family: webfont;
font-size: 0.5rem;
font-weight: 600;
.left {
position: absolute;
top: 0.05rem;
left: 1.5rem;
font-size: 0.18rem;
font-weight: 500;
}
.right {
width: 1rem;
height: 0.3rem;
line-height: 0.3rem;
position: absolute;
top: 0.05rem;
right: 0.2rem;
font-size: 0.14rem;
font-weight: 500;
background: url('~@/assets/capacitySquare/backShop.png') no-repeat;
background-size: 100% 100%;
cursor: pointer;
}
}
.light {
position: absolute;
top: 0.25rem;
left: 6.25rem;
z-index: 10;
width: 6.64rem;
height: 1.64rem;
background: url('~@/assets/capacitySquare/header-light.png') no-repeat;
background-size: 100%;
background-position: center;
}
.box {
flex: 1;
// padding: 0.5rem 0;
font-family: alibaba; font-family: alibaba;
src: url('~@/assets/capacitySquare/webfont.ttf'); src: url('~@/assets/capacitySquare/webfont.ttf');
} }
.box {
// padding-top: 0.64rem;
} }
</style> </style>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-08 11:56:28 * @Date: 2022-06-08 11:56:28
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-19 15:04:02 * @LastEditTime: 2022-08-09 11:54:40
* @Description: 算法详情页头部 * @Description: 算法详情页头部
--> -->
<template> <template>
@ -54,7 +54,15 @@
<template #icon><form-outlined /></template> <template #icon><form-outlined /></template>
申请使用 申请使用
</a-button> </a-button>
<a-button type="primary" @click="addShoppingCart()"> <a-button
type="primary"
@click="addShoppingCart()"
v-show="
props.dataList.infoList.filter(
(val) => val.attrType == '外部服务地址'
).length === 0
"
>
<template #icon><shopping-cart-outlined /></template> <template #icon><shopping-cart-outlined /></template>
加入申购车 加入申购车
</a-button> </a-button>
@ -105,6 +113,12 @@
// //
function toView() { function toView() {
// window.open(newpage.href, '_blank') // window.open(newpage.href, '_blank')
const webUrl = props.dataList.infoList.filter(
(val) => val.attrType == '外部服务地址'
)[0]?.attrValue
if (webUrl) {
window.open(webUrl)
} else {
console.log('一键申请===================>', props.dataList) console.log('一键申请===================>', props.dataList)
localStorage.setItem( localStorage.setItem(
'applyList', 'applyList',
@ -130,6 +144,7 @@
path: '/apply', path: '/apply',
}) })
} }
}
// //
const scFlag2 = ref(true) const scFlag2 = ref(true)
const goTOCollection = () => { const goTOCollection = () => {

View File

@ -225,6 +225,19 @@
<i></i> <i></i>
</a-tooltip> </a-tooltip>
</div> </div>
<div @click="showAbilitySquare" class="abilitySquare">
<p></p>
<p>能力广场</p>
<ul v-show="visibleAbilitySquare">
<li
v-for="item in abilitySquare"
:key="item"
@click="abilitySquareFunction(item)"
>
{{ item }}
</li>
</ul>
</div>
</div> </div>
<!-- 西海岸 --> <!-- 西海岸 -->
<div <div
@ -1359,6 +1372,40 @@
location.reload() location.reload()
console.log('URL发生变化了') console.log('URL发生变化了')
}) })
// 广
const visibleAbilitySquare = ref(false)
let abilitySquare = ref(['应用广场', '算法广场', 'GIS广场'])
const showAbilitySquareNum = ref(0)
const showAbilitySquare = () => {
if (showAbilitySquareNum.value === 0) {
showAbilitySquareNum.value = 1
visibleAbilitySquare.value = true
} else if (showAbilitySquareNum.value === 1) {
showAbilitySquareNum.value = 0
visibleAbilitySquare.value = false
}
}
let abilitySquareFunctionData = ref('智能算法')
const abilitySquareFunction = (e) => {
let snumSquare = ref({})
if (e === '应用广场') {
abilitySquareFunctionData.value = '应用资源'
} else if (e === '算法广场') {
abilitySquareFunctionData.value = '智能算法'
} else if (e === 'GIS广场') {
abilitySquareFunctionData.value = '图层服务'
}
snumSquare.value = {
abilityToType: abilitySquareFunctionData.value,
}
const applypage = router.resolve({
path: '/capacitySquare', //
query: snumSquare.value,
})
window.open(applypage.href, '_blank')
visibleAbilitySquare.value = false
abilitySquareFunctionData.value = '智能算法'
}
return { return {
listKey, listKey,
ListContent, ListContent,
@ -1399,6 +1446,12 @@
getShoppingCartList, getShoppingCartList,
whoShow1, whoShow1,
applyAll, applyAll,
abilitySquare,
visibleAbilitySquare,
showAbilitySquare,
abilitySquareFunction,
abilitySquareFunctionData,
showAbilitySquareNum,
} }
}, },
components: { components: {
@ -1427,6 +1480,10 @@
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@font-face {
font-family: 'webfont';
src: url('~@/assets/capacitySquare/webfont.ttf');
}
.resultListSearchInput-father { .resultListSearchInput-father {
background: #f3f5f9; background: #f3f5f9;
padding: 0.2rem; padding: 0.2rem;
@ -1852,6 +1909,95 @@
background-size: cover; background-size: cover;
} }
} }
.abilitySquare {
width: 0.7rem;
height: 0.7rem;
border-radius: 0.04rem;
border: 0.01rem #94aac9 solid;
display: flex;
flex-direction: column;
// justify-content: center;
align-items: center;
padding-top: 0.05rem;
position: fixed;
z-index: 10;
bottom: 1.56rem;
right: 0.1rem;
cursor: pointer;
background: #e3edfc;
p {
margin: 0;
}
p:nth-child(1) {
height: 0.35rem;
width: 0.36rem;
background: url('~@/assets/home/abilitysquare.png') no-repeat;
background-size: 100% 100%;
background-position: center;
}
ul {
background: #ffffff;
font-family: webfont;
width: 1.35rem;
height: 1rem;
border-radius: 0.03rem;
border: 0.01rem solid #dfd9d9;
position: absolute;
bottom: 0.9rem;
left: -0.62rem;
padding: 0;
margin: 0;
li {
list-style: none;
color: #0061ec;
font-size: 0.18rem;
padding: 0.02rem;
padding-left: 0.4rem;
border-bottom: 0.01rem solid #dfd9d9;
}
li:nth-of-type(1) {
background: url('~@/assets/home/appIcon.png') no-repeat;
background-position: 0.18rem center;
}
li:nth-of-type(2) {
background: url('~@/assets/home/AiIcon.png') no-repeat;
background-position: 0.18rem center;
}
li:nth-of-type(3) {
border-bottom: none;
background: url('~@/assets/home/GisIcon.png') no-repeat;
background-position: 0.18rem center;
}
}
ul::after {
content: '';
position: absolute;
top: 0.98rem;
right: 0.12rem;
width: 0;
height: 0;
border: 0.13rem solid;
border-color: #fff transparent transparent transparent;
}
ul::before {
content: '';
position: absolute;
top: 0.99rem;
right: 0.12rem;
width: 0;
height: 0;
border: 0.13rem solid;
border-color: #dfd9d9 transparent transparent transparent;
}
@keyframes ulShowTime {
0% {
transform: scale(0);
}
100% {
transform: scale(0);
}
}
}
.top-content-father { .top-content-father {
width: 10.87rem; width: 10.87rem;

View File

@ -9,7 +9,10 @@
<div class="name"> <div class="name">
<div class="name-bg" v-if="!whoShow1.itShowXiHaiAn"></div> <div class="name-bg" v-if="!whoShow1.itShowXiHaiAn"></div>
<div class="name-bg-xihaian" v-else></div> <div class="name-bg-xihaian" v-else></div>
城市云脑通用能力服务平台 <div class="name-content">
<p>城市云脑通用能力服务平台</p>
<p>(United Capacity System)</p>
</div>
</div> </div>
<div <div
v-for="item in navList" v-for="item in navList"
@ -360,7 +363,7 @@
.name-bg { .name-bg {
height: 0.6rem; height: 0.6rem;
width: 0.6rem; width: 0.6rem;
background: url('~@/assets/newHome/newHome-title-bg.png') no-repeat; background: url('~@/assets/newHome/ucs-2.png') no-repeat;
background-size: 100%; background-size: 100%;
margin-right: 0.15rem; margin-right: 0.15rem;
} }
@ -372,6 +375,16 @@
background-size: 100%; background-size: 100%;
margin-right: 0.15rem; margin-right: 0.15rem;
} }
.name-content {
padding-top: 0.14rem;
p {
font-size: 0.2rem;
margin-bottom: 0;
&:nth-of-type(2) {
font-size: 0.12rem;
}
}
}
} }
.nav { .nav {
width: 1.2rem; width: 1.2rem;
@ -432,6 +445,16 @@
box-shadow: 0 0.02rem 0.1rem rgba(0, 0, 0, 0.1); box-shadow: 0 0.02rem 0.1rem rgba(0, 0, 0, 0.1);
.name { .name {
color: #0058e1; color: #0058e1;
.name-bg {
height: 0.6rem;
width: 0.6rem;
background: url('~@/assets/newHome/ucs-1.png') no-repeat;
background-size: 100%;
margin-right: 0.15rem;
}
p {
color: #0058e1;
}
} }
.icon { .icon {
cursor: pointer; cursor: pointer;

View File

@ -321,10 +321,14 @@
</div> --> </div> -->
</div> </div>
<div class="right" v-if="selectCardsname !== '基础设施'"> <div class="right" v-if="selectCardsname !== '基础设施'">
<!-- 申购车 -->
<div class="shopping" :key="shoppingKey"> <div class="shopping" :key="shoppingKey">
<template <template
v-if=" v-if="
selectCardsname == '组件服务' || (selectCardsname == '组件服务' &&
item.infoList.filter(
(val) => val.attrType == '外部服务地址'
).length === 0) ||
(selectCardsname == '应用资源' && whoShow1.itShowQingDao) (selectCardsname == '应用资源' && whoShow1.itShowQingDao)
" "
> >
@ -649,6 +653,14 @@
}) })
} else { } else {
if (type === 'apply') { if (type === 'apply') {
//
const webUrl = item.infoList.filter(
(val) => val.attrType == '外部服务地址'
)[0]?.attrValue
if (webUrl) {
window.open(webUrl)
} else {
//
console.log('一键申请===================>', item) console.log('一键申请===================>', item)
localStorage.setItem( localStorage.setItem(
'applyList', 'applyList',
@ -680,6 +692,7 @@
router.push({ router.push({
path: '/apply', path: '/apply',
}) })
}
} else { } else {
console.log( console.log(
'111111111111111111===========>', '111111111111111111===========>',

View File

@ -149,9 +149,10 @@
</div> </div>
<!-- 单个预览弹窗 --> <!-- 单个预览弹窗 -->
<a-modal <a-modal
wrapClassName="single-preview-modal"
v-model:visible="visible" v-model:visible="visible"
title="视频预览" title="视频预览"
:width="950" :width="960"
destroyOnClose destroyOnClose
> >
<template #footer></template> <template #footer></template>
@ -166,7 +167,7 @@
wrapClassName="batch-preview-modal" wrapClassName="batch-preview-modal"
v-model:visible="batchVisible" v-model:visible="batchVisible"
title="视频批量预览" title="视频批量预览"
:width="1250" :width="1060"
destroyOnClose destroyOnClose
@cancel="videoClean" @cancel="videoClean"
> >
@ -177,9 +178,18 @@
:key="item.id" :key="item.id"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
> >
<p></p>
<vue3VideoPlay v-bind="item.options" /> <vue3VideoPlay v-bind="item.options" />
</div> </div>
</div> </div>
<a-pagination
v-model:current="current"
:total="videoTotal"
defaultPageSize="4"
:showSizeChanger="false"
@change="batchPreview"
show-less-items
/>
</a-modal> </a-modal>
<a-modal <a-modal
wrapClassName="wrj" wrapClassName="wrj"
@ -255,11 +265,13 @@
import { getCameraByCondition } from '@/api/file' import { getCameraByCondition } from '@/api/file'
import { sgcInsert } from '@/api/home' import { sgcInsert } from '@/api/home'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
const current = ref(1)
const videoTotal = ref(0)
const router = useRouter() const router = useRouter()
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
const options = reactive({ const options = reactive({
width: '900px', // width: '912px', //
height: '400px', // height: '513px', //
color: '#409eff', // color: '#409eff', //
title: '', // title: '', //
src: '', // src: '', //
@ -579,9 +591,16 @@
} }
} }
} }
const batchPreview = async function () { const batchPreview = async function (page) {
if (page.layerX) {
page = 1
}
if (selectedList.value.length > 0) { if (selectedList.value.length > 0) {
const list = selectedList.value.splice(0, 4) videoTotal.value = selectedList.value.length
const arr = JSON.parse(JSON.stringify(selectedList.value))
let start = (page - 1) * 4
let list = []
list = arr.splice(start, 4)
const length = list.length const length = list.length
videoList.value = [] videoList.value = []
for (let index = 0; index < length; index++) { for (let index = 0; index < length; index++) {
@ -590,8 +609,8 @@
} }
let ob = { let ob = {
options: { options: {
width: '600px', // width: '512px', //
height: '350px', // height: '288px', //
color: '#409eff', // color: '#409eff', //
title: '', // title: '', //
src: '', // src: '', //
@ -651,7 +670,10 @@
selectedList.value = [] selectedList.value = []
selectedRowKeys.value = [] selectedRowKeys.value = []
videoList.value = [] videoList.value = []
current.value = 1
} }
//
const changePage = (page) => {}
// //
const dept = reactive({}) const dept = reactive({})
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
@ -712,6 +734,14 @@
longitude: mapSearchParam.value.gpsX || '', longitude: mapSearchParam.value.gpsX || '',
latitude: mapSearchParam.value.gpsY || '', latitude: mapSearchParam.value.gpsY || '',
radius: mapSearchParam.value.radius || '', radius: mapSearchParam.value.radius || '',
status: 1,
}
if (
params.regionId === '70be8c5b664f4bcf869d82f2e8335051' &&
!params.name &&
!params.longitude
) {
params.status = ''
} }
let paramsFather = '' let paramsFather = ''
let i = 1 let i = 1
@ -1000,6 +1030,20 @@
overflow-y: scroll !important; overflow-y: scroll !important;
} }
} }
.single-preview-modal {
.ant-modal-header {
background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover;
}
.ant-modal-title {
font-size: 0.16rem;
font-weight: 500;
color: #ffffff;
}
.anticon {
color: #ffffff;
}
}
.batch-preview-modal { .batch-preview-modal {
.batch-video { .batch-video {
width: 100%; width: 100%;
@ -1007,8 +1051,23 @@
grid-template-columns: 50% 50%; grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%; grid-template-rows: 50% 50%;
justify-content: center; justify-content: center;
grid-row-gap: 14px; // grid-row-gap: 14px;
grid-column-gap: 20px; grid-column-gap: 20px;
} }
.ant-pagination-item-link {
background-color: #5580f7;
}
.ant-modal-header {
background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover;
}
.ant-modal-title {
font-size: 0.16rem;
font-weight: 500;
color: #ffffff;
}
.anticon {
color: #ffffff;
}
} }
</style> </style>

View File

@ -226,6 +226,7 @@
longitude: this.mapSearchParam.gpsX || '', longitude: this.mapSearchParam.gpsX || '',
latitude: this.mapSearchParam.gpsY || '', latitude: this.mapSearchParam.gpsY || '',
radius: this.mapSearchParam.radius || '', radius: this.mapSearchParam.radius || '',
status: 1,
} }
let paramsFather = '' let paramsFather = ''
let i = 1 let i = 1

View File

@ -113,7 +113,7 @@
</div> </div>
</a-modal> </a-modal>
</div> </div>
<div @click="showAbilitySquare"> <!-- <div @click="showAbilitySquare">
<p></p> <p></p>
<p>能力广场</p> <p>能力广场</p>
<a-modal <a-modal
@ -143,7 +143,7 @@
</div> </div>
</div> </div>
</a-modal> </a-modal>
</div> </div> -->
</div> </div>
</div> </div>
</template> </template>
@ -579,7 +579,7 @@
} }
.fixedmount { .fixedmount {
height: 2.3rem; height: 1.5rem;
display: flex; display: flex;
position: fixed; position: fixed;
bottom: 2.56rem; bottom: 2.56rem;
@ -633,8 +633,8 @@
.fixedmount div:nth-child(3) p:nth-child(1) { .fixedmount div:nth-child(3) p:nth-child(1) {
height: 0.24rem; height: 0.24rem;
width: 0.24rem; width: 0.24rem;
background: url('~@/assets/home/shangjia.png') no-repeat; background: url('~@/assets/home/abilitysquare.png') no-repeat;
background-size: contain; background-size: 140% 126%;
background-position: center; background-position: center;
} }
</style> </style>