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
* @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-09 09:24:43
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-09 18:09:19
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
@ -29,10 +29,11 @@
<!-- 站点配置 -->
<script>
window.SITE_CONFIG = {};
// window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001';
// 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['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001';
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['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['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['backUrl'] = 'http://15.2.21.238:9797';
window.SITE_CONFIG['backUrl'] = 'http://localhost:8001';
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['apiURL'] = 'http://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['backUrl'] = 'http://localhost:8001';
// 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['apiURL'] = 'http://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['backUrl'] = 'http://124.222.94.39:9797';
// window.SITE_CONFIG['previewUrl'] = 'http://124.222.94.39:9796/';

View File

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

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-01 19:19:40
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-18 16:24:44
* @LastEditTime: 2022-08-09 10:37:31
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
@ -370,3 +370,11 @@ export function getDevelopDocTree(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}`"
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>
</template>
<script setup>
import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted } from 'vue'
import { ref, onMounted, onBeforeUnmount } from 'vue'
const dataList = ref([])
const params = {
deptIds: [],
@ -26,37 +40,78 @@
pageSize: 9,
type: '组件服务',
}
let algorithmclass = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo.jpg'))
const dataLength = ref(true)
const isNoMore = ref(false)
let url = ref('')
const pageWithAttrsFunction = () => {
pageWithAttrs(params).then((res) => {
dataList.value = res.data.data.records
if (res.data.data.records.length < 9) {
dataLength.value = false
}
})
}
pageWithAttrsFunction()
onMounted(() => {
const algorithmclass = document.querySelector('.algorithm-class')
algorithmclass.addEventListener('scroll', (e) => {
//
const algorithmCardPhoto = (List, item) => {
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 windowHeight = e.currentTarget.clientHeight
var scrollHeight = e.currentTarget.scrollHeight
console.log(scrollTop, windowHeight, scrollHeight, '123')
if (scrollTop + windowHeight == scrollHeight) {
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', algorithmFunction, true)
}
})
onBeforeUnmount(() => {
algorithmclass.removeEventListener('scroll', algorithmFunction, 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;
@ -67,16 +122,51 @@
height: 2.75rem;
width: 5.25rem;
background: url('~@/assets/capacitySquare/algorithm-bg.png') no-repeat;
background-size: 100%;
margin-bottom: 0.3rem;
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;
width: 100%;
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;
}
}
}
}

View File

@ -2,11 +2,270 @@
* @Author: hisense.liangjunhua
* @Date: 2022-08-09 09:31:25
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-09 09:38:03
* @LastEditTime: 2022-08-10 14:29:05
* @Description: 应用资源
-->
<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>
<script setup></script>
<style lang="less" scoped></style>
<script setup>
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>
<!-- <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">
<algorithm v-if="show === 'algorithm'"></algorithm>
<layer v-else-if="show === 'layer'"></layer>
<application v-else-if="show === 'application'"></application>
</div>
<!-- <home-footer></home-footer> -->
</div>
</template>
<script setup>
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 layer from './components/layer.vue'
import application from './components/application.vue'
@ -18,22 +29,90 @@
const router = useRouter()
const abilityToType = router.currentRoute.value.query.abilityToType
const show = ref('algorithm')
const squareType = ref('应用广场')
if (abilityToType === '应用资源') {
show.value = 'application'
squareType.value = '应用广场'
} else if (abilityToType === '图层服务') {
show.value = 'layer'
squareType.value = 'GIS广场'
} else if (abilityToType === '智能算法') {
show.value = 'algorithm'
squareType.value = '算法广场'
} else {
console.log('no')
}
//
const backClick = () => {
const newpage = router.resolve({
path: '/DetailsPageconetent',
query: {
select: '组件服务',
},
})
window.location.href = newpage.href
}
</script>
<style lang="less" scoped>
@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;
src: url('~@/assets/capacitySquare/webfont.ttf');
}
.box {
// padding-top: 0.64rem;
}
</style>

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-08 11:56:28
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-19 15:04:02
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-09 11:54:40
* @Description: 算法详情页头部
-->
<template>
@ -54,7 +54,15 @@
<template #icon><form-outlined /></template>
申请使用
</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>
加入申购车
</a-button>
@ -105,6 +113,12 @@
//
function toView() {
// 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)
localStorage.setItem(
'applyList',
@ -130,6 +144,7 @@
path: '/apply',
})
}
}
//
const scFlag2 = ref(true)
const goTOCollection = () => {

View File

@ -225,6 +225,19 @@
<i></i>
</a-tooltip>
</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
@ -1359,6 +1372,40 @@
location.reload()
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 {
listKey,
ListContent,
@ -1399,6 +1446,12 @@
getShoppingCartList,
whoShow1,
applyAll,
abilitySquare,
visibleAbilitySquare,
showAbilitySquare,
abilitySquareFunction,
abilitySquareFunctionData,
showAbilitySquareNum,
}
},
components: {
@ -1427,6 +1480,10 @@
})
</script>
<style lang="less" scoped>
@font-face {
font-family: 'webfont';
src: url('~@/assets/capacitySquare/webfont.ttf');
}
.resultListSearchInput-father {
background: #f3f5f9;
padding: 0.2rem;
@ -1852,6 +1909,95 @@
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 {
width: 10.87rem;

View File

@ -9,7 +9,10 @@
<div class="name">
<div class="name-bg" v-if="!whoShow1.itShowXiHaiAn"></div>
<div class="name-bg-xihaian" v-else></div>
城市云脑通用能力服务平台
<div class="name-content">
<p>城市云脑通用能力服务平台</p>
<p>(United Capacity System)</p>
</div>
</div>
<div
v-for="item in navList"
@ -360,7 +363,7 @@
.name-bg {
height: 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%;
margin-right: 0.15rem;
}
@ -372,6 +375,16 @@
background-size: 100%;
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 {
width: 1.2rem;
@ -432,6 +445,16 @@
box-shadow: 0 0.02rem 0.1rem rgba(0, 0, 0, 0.1);
.name {
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 {
cursor: pointer;

View File

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

View File

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

View File

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

View File

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