hi-ucs/front/src/views/capacityOnTheShelf/components/AlgorithmScenarios.vue

255 lines
6.2 KiB
Vue
Raw Normal View History

2022-06-14 09:32:49 +08:00
<template>
<div class="scenarios">
<div class="title">
<div></div>
<div>{{ props.refData.name }}</div>
<div></div>
</div>
<div class="main">
<div class="items" v-show="data.length > 0">
<div class="item" v-for="(val, index) in data" :key="index">
<p>
<span>应用场景-{{ index + 1 }}</span>
<span></span>
</p>
<p>
<span>应用场景名称</span>
<span>{{ val.name }}</span>
</p>
<p>
<span>应用场景描述</span>
<span>{{ val.desc }}</span>
</p>
<p>
<span>应用场景图片</span>
<span>
<a-image :width="85" :height="60" :src="val.img" />
</span>
</p>
<div class="del">
<i class="delImg" @click="del(index)"></i>
<div @click="del(index)">删除</div>
</div>
</div>
</div>
<div class="add">添加更多算法优势</div>
<div class="name">
<span>应用场景名称</span>
<a-input
v-model:value="value"
:maxlength="24"
placeholder="请填写应用场景名称_应用场景描述热词,不超过24个字符"
/>
</div>
<div class="dec">
<span>应用场景描述</span>
<a-textarea
v-model:value="value2"
:showCount="true"
:maxlength="200"
placeholder="请填写应用场景名称+应用场景场景+应用场景两点+应用场景作用"
/>
</div>
<div class="dec upload" :key="showKey">
<span>应用场景图片</span>
<upload
type="图片"
btnName="上传图片"
:maxCount="1"
:data="value3"
:list="[]"
:emitFlag="true"
tip="支持图片类型大小不超过100M"
></upload>
</div>
<div class="submit">
<a-button type="primary" @click="add()">提交</a-button>
</div>
</div>
</div>
</template>
<script setup>
import { ref, defineProps } from 'vue'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
import upload from '@/views/components/upload'
const props = defineProps({
refData: { type: Object, default: null },
dataFrom: { type: Array, default: null },
})
const value = ref('')
const value2 = ref('')
const value3 = ref({ note1: '' })
const data = ref([])
const showKey = ref(0)
// const fileList = ref([])
if (props.dataFrom) {
console.log(props.dataFrom)
props.dataFrom.infoList.forEach((item) => {
if (item.attrType === props.refData.name) {
data.value = JSON.parse(item.attrValue)
}
})
}
const add = () => {
if (
value.value.length > 0 &&
value2.value.length > 0 &&
value3.value.note1.length > 0
) {
data.value.push({
name: value.value,
desc: value2.value,
img: value3.value.note1,
})
mybus.emit('chageDataFrom', {
attrType: props.refData.name,
attrValue: JSON.stringify(data.value),
delFlag: 0,
})
value.value = ''
value2.value = ''
value3.value.note1 = ''
showKey.value++
} else {
message.warning('请填写完整')
}
}
const del = (index) => {
data.value.splice(index, 1)
mybus.emit('chageDataFrom', {
attrType: props.refData.name,
attrValue: JSON.stringify(data.value),
delFlag: 0,
})
}
</script>
<style lang="less" scoped>
.scenarios {
height: 680px;
overflow: scroll;
display: flex;
flex-direction: column;
align-items: center;
padding: 50px 100px 25px;
& > div {
width: 100%;
}
.title {
color: #333333;
font-size: 22px;
display: flex;
align-items: center;
margin-bottom: 25px;
div:first-child,
div:last-child {
width: 265px;
height: 1px;
background: #f0f0f0;
}
div:nth-child(2) {
margin: 0 30px;
}
}
.main {
margin-top: 25px;
.items {
background: #fafafa;
padding: 10px;
p {
display: flex;
justify-content: space-between;
span:nth-of-type(1) {
width: 200px;
}
span:nth-of-type(2) {
width: 100%;
font-weight: 600;
}
}
p:nth-of-type(1) > span:nth-of-type(1) {
font-size: 18px;
font-weight: 600;
}
.del {
display: flex;
justify-content: flex-end;
align-items: center;
.delImg {
cursor: pointer;
display: inline-block;
width: 16px;
height: 18px;
background: url(~@/assets/home/sf_del.png) no-repeat;
margin-right: 5px;
}
div {
cursor: pointer;
}
}
}
.add {
margin-top: 10px;
font-size: 16px;
color: #007efb;
}
.name,
.dec {
margin-top: 20px;
display: flex;
justify-content: flex-start;
span {
width: 120px;
}
:deep(.ant-input) {
resize: none;
width: 570px;
}
:deep(.ant-input-textarea) {
width: 570px;
}
:deep(.ant-radio-group) {
width: 570px;
}
:deep(.ant-input-number) {
width: 200px;
}
.ant-btn {
width: 100px;
height: 30px;
text-align: center;
background: #d9ebff;
color: #0087ff;
border: 1px solid #0087ff;
border-radius: 6px;
}
}
.upload span:nth-of-type(2) {
width: unset;
}
.submit {
margin-top: 40px;
display: flex;
justify-content: flex-end;
.ant-btn {
width: 80px;
height: 28px;
text-align: center;
background: #d9ebff;
color: #0087ff;
border: 1px solid #0087ff;
border-radius: 6px;
}
}
}
}
:deep(.ant-image-img) {
width: 100%;
height: 100%;
object-fit: contain;
}
// .scenarios::-webkit-scrollbar {
// display: none;
// }
</style>