hi-ucs/front/src/views/detailsAll/components/Algorithm/AlgorithmTopDetails.vue

308 lines
8.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-08 11:56:28
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-15 17:30:19
* @Description: 算法详情页头部
-->
<template>
<div class="algorithm-top-details">
<div class="left">
<div class="top">
<a-tooltip placement="top">
<template #title>{{ props.dataList.name }}</template>
<span class="name">
{{ props.dataList.name }}
</span>
</a-tooltip>
<!-- <span class="name">{{ props.dataList.name }}</span> -->
<div class="label-content">
<p class="lable-father">
<span class="label" v-if="props.dataList.type">
{{ props.dataList.type }}
</span>
<span class="label" v-if="componentType">
{{ componentType }}
</span>
<span class="label" v-if="props.dataList.shareType">
{{ props.dataList.shareType }}
</span>
<span class="label" v-if="props.dataList.shareCondition">
{{ props.dataList.shareCondition }}
</span>
<span class="label" v-if="deploymentLocation">
{{ deploymentLocation }}
</span>
</p>
</div>
<!-- <span class="label">免费</span> -->
</div>
<div class="main">
<a-tooltip placement="top">
<template #title>应用领域{{ applicationArea }}</template>
<div>应用领域{{ applicationArea }}</div>
</a-tooltip>
<a-tooltip placement="top">
<template #title>{{ props.dataList.description }}</template>
<div>
{{ props.dataList.description }}
</div>
</a-tooltip>
</div>
<div class="bottom" v-if="props.dataList.id">
<a-button type="primary" @click="toView()">
<template #icon><form-outlined /></template>
申请使用
</a-button>
<a-button type="primary" @click="addShoppingCart()">
<template #icon><shopping-cart-outlined /></template>
加入申购车
</a-button>
<a-button type="primary" @click="goTOCollection()">
{{ scFlag ? '' : '' }}收藏
</a-button>
</div>
</div>
<div class="right"></div>
</div>
</template>
<script setup>
import { FormOutlined, ShoppingCartOutlined } from '@ant-design/icons-vue'
import { defineProps, ref, watch } from 'vue'
import { scInsert, scDel } from '@/api/personalCenter'
import { sgcInsert } from '@/api/home'
import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
const props = defineProps({
dataList: { type: Object, default: null },
})
// console.log('==================>', props.dataList.isCollect)
const router = useRouter()
const applicationArea = ref('')
const deploymentLocation = ref('') //部署位置
//加入申购车
const addShoppingCart = () => {
console.log('加入申购车==================>', props.dataList)
sgcInsert({
delFlag: '0',
resourceId: props.dataList.id,
// userId: userId.value,
}).then((res) => {
console.log(res)
message.success('添加申购车成功!')
mybus.emit('getSgcNum')
})
}
//立即申请
function toView() {
// window.open(newpage.href, '_blank')
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
componentType: '智能算法',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
const componentType = ref('')
// 收藏
const scFlag = ref(props.dataList.isCollect)
const scFlag2 = ref(true)
const goTOCollection = () => {
console.log('收藏===================》', props.dataList)
if (scFlag2.value) {
scFlag2.value = false
if (scFlag.value) {
scDel([props.dataList.id]).then((res) => {
if (res.data.msg === 'success') {
message.success('取消成功')
scFlag.value = false
scFlag2.value = true
}
})
} else {
scInsert([
{
resourceId: props.dataList.id,
},
]).then((res) => {
if (res.data.msg === 'success') {
message.success('添加收藏成功!')
scFlag.value = true
scFlag2.value = true
}
})
}
}
// scInsert([{ resourceId: props.dataList.id }]).then((res) => {
// console.log(res)
// message.success('收藏成功')
// })
}
if (props.dataList.infoList) {
applicationArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用领域'
)[0].attrValue
let obj = props.dataList.infoList.filter(
(val) => val.attrType === '组件类型'
)[0]
if (
props.dataList.infoList.filter((val) => val.attrType === '部署位置')[0]
) {
deploymentLocation.value = props.dataList.infoList.filter(
(val) => val.attrType === '部署位置'
)[0].attrValue
}
if (obj) {
componentType.value = obj.attrValue
}
}
watch(
() => props.dataList,
(val) => {
if (val) {
applicationArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用领域'
)[0].attrValue
let obj = props.dataList.infoList.filter(
(val) => val.attrType === '组件类型'
)[0]
if (
props.dataList.infoList.filter(
(val) => val.attrType === '部署位置'
)[0]
) {
deploymentLocation.value = props.dataList.infoList.filter(
(val) => val.attrType === '部署位置'
)[0].attrValue
}
if (obj) {
componentType.value = obj.attrValue
}
}
}
)
</script>
<style lang="less" scoped>
.algorithm-top-details {
height: 600px;
padding: 180px 0 0;
background: url('~@/assets/detailsAll/sf_top_bg.png') no-repeat;
background-size: 100%;
display: flex;
justify-content: center;
.left {
width: 7.2rem;
color: #fff;
margin-right: 0.8rem;
margin-top: -0.3rem;
.top {
display: flex;
align-items: center;
span {
font-size: 14px;
}
.name {
display: inline-block;
// width: 10.2rem;
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
font-size: 40px;
margin-right: 20px;
max-width: 7rem;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
.label-content {
position: relative;
}
.lable-father {
position: absolute;
min-width: 5.5rem;
right: -5.5rem;
top: 0;
}
.label {
padding: 1px 10px;
margin-right: 10px;
border-radius: 13px;
background: rgba(255, 255, 255, 0.4);
}
}
.main {
margin-top: 20px;
font-size: 18px;
line-height: 34px;
& > div:nth-of-type(1) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
& > div:nth-of-type(2) {
max-height: 100px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
}
.bottom {
margin-top: 40px;
display: flex;
.ant-btn {
height: 50px;
margin-right: 20px;
background: #ff8b55;
border-radius: 6px;
font-size: 20px;
display: flex;
justify-content: center;
align-items: center;
}
.ant-btn:nth-of-type(1) {
width: 180px;
}
.ant-btn:nth-of-type(2) {
width: 220px;
}
.ant-btn:nth-of-type(3) {
width: 145px;
background: #fff;
color: #526aff;
}
}
}
.right {
width: 580px;
height: 400px;
background: url('~@/assets/detailsAll/sf_right_bg.png') no-repeat;
background-size: 100%;
margin-top: -40px;
}
}
</style>