no message

main
FOAM 2023-12-12 11:14:44 +08:00
parent b3bbb122fd
commit 0e275477ce
7 changed files with 423 additions and 0 deletions

View File

@ -37,6 +37,7 @@
:src="img_kong"
/>
</template>
<span v-if="item.type==0">{{item.code}}</span>
</el-popover>
<el-popover

View File

@ -0,0 +1,282 @@
<template>
<div ref="kuwei" v-resize="resizeHandler">
<div class="title" plain @click="open2">
{{layoutList.data.movieName}}
</div>
<div v-for="(item, index) in layoutList.data.seatList"
:key="item.id"
:style="{
position:'absolute',
background:'#e6e6e6',
height:propValue.base.boxHeight + 'px',
width: propValue.base.boxWidth + 'px',
left: (item.gRow) * propValue.base.boxHeightGap + 'px',
top: (item.gCol) * propValue.base.boxWidithGap + 'px',
}"
>
<el-popover
v-if="item.type==0"
placement="top-start"
trigger="hover"
:content="item.id"
width="160px"
>
<template #reference>
<el-image
class="seatImg0Class"
:seatId="item.id"
:seatIndex="index"
:src="img_kong"
/>
</template>
</el-popover>
<el-popover
v-if="item.type==1"
placement="top-start"
:title="item.code"
trigger="hover"
:content="item.id"
width="160px"
>
<template #reference>
<el-image
class="seatImg1Class"
:seatId="item.id"
:seatIndex="index"
:src="img_130"
/>
</template>
</el-popover>
<el-popover
v-if="item.type==2"
placement="top-start"
trigger="hover"
:content="item.id"
width="160px"
>
<template #reference>
<el-image
class="seatImg2Class"
:seatId="item.id"
:seatIndex="index"
:src="img_jinyong"
/>
</template>
</el-popover>
<el-popover
v-if="item.type==3"
placement="top-start"
trigger="hover"
:content="item.id"
width="160px"
>
<template #reference>
<el-image
class="seatImg3Class"
:seatId="item.id"
:seatIndex="index"
:src="img_130"
/>
</template>
</el-popover>
</div>
<div v-for="(item, index) in layoutList.data.seatList"
:key="item.id"
:style="{
position:'absolute',
background:'#e6e6e600',
height:propValue.base.boxHeight + 'px',
fontSize:48+'px',
color:'#ff0000',
width: propValue.base.text1Width + 'px',
left: (item.gRow) * propValue.base.boxHeightGap + 'px',
top: (item.gCol) * propValue.base.boxWidithGap + propValue.base.text1Height+ 'px',
}"
>
{{item.code}}
</div>
<div v-for="(item, index) in layoutList.data.seatList"
:key="item.id"
:style="{
position:'absolute',
background:'#e6e6e600',
height:propValue.base.boxHeight + 'px',
fontSize:88+'px',
color:'black',
width: propValue.base.text2Width + 'px',
left: (item.gRow) * propValue.base.boxHeightGap + 'px',
top: (item.gCol) * propValue.base.boxWidithGap + propValue.base.text2Height+ 'px',
}"
>
{{item.jt}}
</div>
</div>
</template>
<script setup lang="ts">
import { useData, useEventBus, useProp } from "open-data-v/base";
import { onMounted, reactive, ref } from "vue";
import img_130 from "@/assets/kuwei/130.png";
import img_jinyong from "@/assets/kuwei/132.png";
import img_kong from "@/assets/kuwei/131.png";
import type KuWeiComponent from './config'
import type { KuWeiType } from './type'
import { ElNotification } from 'element-plus'
const props = defineProps<{
component: KuWeiComponent
}>()
const getAssetsFile = (url: string) => {
return new URL(`@/assets/kuwei/${url}`, import.meta.url).href
}
const { propValue } = useProp<KuWeiType>(props.component)
var layoutList = reactive({
data:{
mg_top: null,
mg_left: null,
movieName: null,
seatList: []
}
})
const lineHeight = ref<string>('20px')
const resizeHandler = (entry: ResizeObserverEntry) => {
const { height } = entry.contentRect
lineHeight.value = `${height}px`
}
const open2 = () => {
console.log("123123132")
ElNotification({
title: 'Warning',
message: 'This is a warning message',
type: 'warning',
})
}
const dataHandler = (event) => {
if(!event.data){
event.data=event;
}
layoutList.data =event.data
// layoutList.height =event.data.height
// layoutList.mg_top =event.data.mg_top
// layoutList.mg_left =event.data.mg_left
// layoutList.positionDistin =event.data.positionDistin
// layoutList.movieName =event.data.movieName
// layoutList.seatList =event.data.seatList
// console.log(layoutList.seatList.length);
// layoutList.seatList=JSON.parse(JSON.stringify(event.data.seatList))
//
// layoutList=JSON.parse(JSON.stringify(layoutList))
}
onMounted(async () => {
/* try {
const queryParems = { tag: propValue.base.tag }
console.log("queryParems"+ propValue.base.tag)
console.log("url"+ propValue.base.url)
const res = await http.get({ url: propValue.base.url, params: queryParems })
console.log(res)
dataHandler(res)
} catch (error: any) {
console.log("异常-----")
console.log(error?.message)
}*/
})
const dataChange = (resp: any, _?: string) => {
if (!resp || !resp.afterData) {
console.log("数据失败-----")
return
}
if (resp.status === 'SUCCESS') {
console.log(resp.afterData)
dataHandler(resp.afterData)
}
}
useData(props.component, dataChange)
useEventBus('globalData', dataHandler)
</script>
<style lang="less" scoped>
span {
pointer-events: none;
display: inline-block;
width: 100%;
text-align: center;
line-height: v-bind(lineHeight);
}
.seatImg0Class {
background: #A681E6;
position: absolute;
top: 0;
left: 0;
height: 100%;
border-radius:3px;
display:block;
}
.seatImg1Class {
background: #35B45E;
position: absolute;
top: 0;
left: 0;
height: 100%;
border-radius:3px;
}
.seatImg2Class {
background-color:#E53240;
position: absolute;
top: 0;
left: 0;
height: 100%;
border-radius:3px;
}
.seatImg3Class {
background:#F29961;
position: absolute;
top: 0;
left: 0;
height: 100%;
border-radius:3px;
}
.title {
width: 100%;
height: 35px;
text-align: center;
line-height: 80px;
font-size: 78px;
color: #A8F4FF;
letter-spacing: 2px;
font-style:normal;
top:-180px;
position:absolute;
}
</style>

View File

@ -0,0 +1,11 @@
import { kuwei_item } from "./KuWeiIteam";
export interface kuwei_info {
width?: number
height?: number
mg_top?: number
mg_left?: number
positionDistin?: number
movieName?: string
}

View File

@ -0,0 +1,9 @@
import type { ComponentDataType } from 'open-data-v/base'
import type { CanvasStyleData } from 'open-data-v/designer'
export interface kuwei_item {
id?: String
gRow?: number
gCol?: number
type?: String
}

View File

@ -0,0 +1,101 @@
import type { MetaContainerItem } from 'open-data-v/base'
import { ComponentGroup, CustomComponent, FormType } from 'open-data-v/base'
import { h } from 'vue'
export const componentName = 'KuWei2'
class SubTextComponent extends CustomComponent {
constructor(id?: string, name?: string, icon?: string) {
super({
component: componentName,
group: ComponentGroup.OTHER,
name: name ? name : '库位图2',
id,
width: 100,
height: 30,
icon
})
}
_prop: MetaContainerItem[] = [
{
label: '基础配置',
prop: 'base',
children: [
{
prop: 'boxWidth',
label: '盒子宽度',
type: FormType.NUMBER,
props: {
defaultValue: 20,
suffix: () => h('span', {}, 'px')
}
},{
prop: 'boxHeight',
label: '盒子高度度',
type: FormType.NUMBER,
props: {
defaultValue: 20,
suffix: () => h('span', {}, 'px')
}
},
{
prop: 'boxWidithGap',
label: '盒子宽间距',
type: FormType.NUMBER,
props: {
defaultValue: 20,
suffix: () => h('span', {}, 'px')
}
},
{
prop: 'boxHeightGap',
label: '盒子高间距',
type: FormType.NUMBER,
props: {
defaultValue: 20,
suffix: () => h('span', {}, 'px')
}
},
{
prop: 'text1Width',
label: '文本1宽度',
type: FormType.NUMBER,
props: {
defaultValue: 20,
suffix: () => h('span', {}, 'px')
}
},
{
prop: 'text1Height',
label: '文本1于盒子高度间距',
type: FormType.NUMBER,
props: {
defaultValue: 20,
suffix: () => h('span', {}, 'px')
}
},
{
prop: 'text2Width',
label: '文本2宽度',
type: FormType.NUMBER,
props: {
defaultValue: 20,
suffix: () => h('span', {}, 'px')
}
},
{
prop: 'text2Height',
label: '文本2于盒子高度间距',
type: FormType.NUMBER,
props: {
defaultValue: 20,
suffix: () => h('span', {}, 'px')
}
}
]
}
]
}
export default SubTextComponent

View File

@ -0,0 +1,7 @@
import SubTextComponent, { componentName } from './config'
export default {
componentName,
component: () => import('./KuWei.vue'),
config: SubTextComponent
}

View File

@ -0,0 +1,12 @@
export interface KuWeiType {
base: {
boxWidth: string
boxHeight: string
boxWidithGap: string
boxHeightGap: string
text1Width:string
text1Height:string
text2Width:string
text2Height:string
}
}