# 质监粤品通大屏
需求:期望通过面板设计器配置出来的大屏效果如下

点击上/下一页或出现的弹窗设计图如下

# 创建面板

配置模版
配置模版前确认配置所需要的模版主题已有否?
若存在,直接在模版上选择对应的主题即可;
若不存在,则需要创建/拓展对应的模版/主题
当前支持的模版主题:【链接】------------------------------- todo

# 拓展主题
src/components/frame/Panel/PanelCode/theme/theme.js文件上新增对应的主题,以及主题对应的主题块边框样式
export default {
// 面板主题列表 { text: 主题名称, id: 主题code }
// 其中 code 的值为 @/components/frame/Panel/PanelCode/theme 的主题目录名称
themeList: [
{ text: '质监粤品通大屏', id: 'ypt' }, // 新增的大屏名称与id,这个id需要与themeBorderInfo、文件夹名称对应
{ text: '智慧监控大屏', id: 'zhjk' },
{ text: '蓝色大屏', id: 'bluePlane' },
{ text: '蓝色主题2', id: 'blue2' },
{ text: '白底', id: 'white' },
],
// 主题边框信息
themeBorderInfo: {
default: [
{ text: '实线', id: 'solid' },
{ text: '虚线', id: 'dashed' },
{ text: '点', id: 'dotted' },
{ text: '双线', id: 'double' },
{ text: '3D 凹槽边框', id: 'groove' },
{ text: '3D 垄状边框', id: 'ridge' },
{ text: '3D inset 边框', id: 'inset' },
{ text: '3D outset 边框', id: 'outset' },
],
// key 为 themeList 中的id,即主题目录的名称
bluePlane: [
// text 为border显示值(自行定义),id 为 主题目录下/borderTheme/边框图片名
...
],
blue2: [ ... ],
white: [ ... ],
zhjk: [ ... ],
// 新增的大屏边框,如果没有,则可不填,会默认使用themeBorderInfo.default
ypt: [],
}
}
- 新增模版/主题文件
2.1 在
src/components/frame/Panel/PanelCode/theme/下心中模版ypt文件夹
注意
这里的ypt需要与第一步定义的themeList新增的id对应
2.2 src/components/frame/Panel/PanelCode/theme/ypt 文件下新增assets文件夹与index.js文件
assets文件下添加主题背景图片、头部标题背景图片等

index.js 文件
export default {
primaryColor: '#06173F',
// 1. 设置大屏背景图片
panel: {
backgroundImage: `url(${require('./assets/background.png')})`,
backgroundSize: '100% 100%',
},
// 2. 设置大屏头部背景图片
// 面板标题样式
panelTitle: {
height: '7.8vh',
backgroundImage: `url(${require('./assets/head.png')})`,
backgroundSize: '100% auto',
color: 'rgba(0, 0, 0, 0)', /* 图片中已含有标题,则将字体颜色透明度设置为0,不显示字体标题 */
},
}
此时预览效果如下

# 分析设计图
对设计图进行分析,确认哪些块支持配置,哪些块可通过拓展实现,哪些需要自定义页面,下面对面板块进行逐个分析
自定义页面:左侧的柱线混合图支持配置,右侧的表不支持配置,一般此类情况可使用多内容的方式进行配置,左侧柱线图使用报表类型、右侧统计表使用自定义页面
但考虑到点击下一页时需要进行轮播图切换,当前(2024/09/27)面板不支持混合展示类型,故此模块使用 自定义页面 进行配置
自定义页面:头部的统计数可以通过拓展卡片的方式进行配置,下面的列表(不改动原组件,拓展一个列表组件)面板支持配置,但考虑到以下两点

自定义页面:不支持配置

自定义页面:此块逻辑略微复杂,通过自定义页面实现使其更灵活

自定义页面:不支持配置

自定义页面:不支持配置

支持配置:可通过报表配置

支持配置:可通过报表配置

支持配置:可通过报表配置

# 创建块
按上述的配置分析,逐步新增对应的块
创建对应的文件(自定义页面)
在src/views/business/下新增此面板文件夹YptScreen
按块的业务作用进行命名(这里统一使用 Block1,Block2等)
- 第一个块为自定义页面,故在
YptScreen文件夹下Block1.vue文件,Block1.vue中使用src/components/frame/Panel/BlockContent/items/PChart/index.vue组件渲染左侧图表,其余自定义开发。配置步骤如下:
点击添加块按钮后
按设计图的大小与位置信息调入相对应的位置

点击确定按钮即可
初步效果如下:
这时发现块的标题,背景等还是默认的样式,故在创建块之前我们需要先设置块的主题样式
设置块主题样式
src/components/frame/Panel/PanelCode/theme/ypt/index.js文件下新增一下代码
- 标题样式
export default {
// ...
blockTitle: {
backgroundImage: `url(${require('./assets/blockTitleBg.png')})`,
backgroundColor: 'rgba(0, 0, 0, 0)',
backgroundSize: 'auto 100%',
fontSize: '48px',
color: '#FFFFFF',
paddingLeft: '50px',
fontFamily: 'PangMenZhengDao',
paddingBottom: '20px',
},
// ...
}
其中:
- 引入字体:如果当前项目中如未全局引入
PangMenZhengDao字体,并且此字体仅在当前主题中使用,可在src/components/frame/Panel/PanelCode/theme/ypt文件夹下新增index.css文件,文件内容如下:(assets/fonts/PangMenZhengDao.ttf为PangMenZhengDao字体文件路径) - 特殊样式:块的背景颜色为渐变色 + 透明度,直接透过单个属性无法实现,亦可以通过此css实现
@font-face {
font-family: PangMenZhengDao;
src: url("./assets/fonts/PangMenZhengDao.ttf");
}
.panel-block::before {
content: '';
display: block;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: linear-gradient(180deg,rgba(57,166,255,.05),rgba(4,120,255,.7));
opacity: 0.1;
}
.panel-block >* {
z-index: 9;
}
在当前js文件头部引入此css文件,如下
import './index.css'
export default {
// ...
}
- 块背景颜色等
export default {
// ...
block: {
backgroundColor: 'rgba(0, 0, 0, 0)',
},
// ...
}
至此,一个初步的块就出来了

然后再按设计图调整下自定义页面的样式即可

创建
Block2.vue文件,开发第二个自定义页面块(步骤同一)
创建
Block3.vue文件,开发第三个自定义页面块(步骤同一)
创建
Block4.vue、Block5.vue、Block6.vue、Block7.vue,一个基础的面板配置完成 todo:效果图
# 调整内容
- 以第一个模块为例:根据需求,点击右上角的下一页上一页按钮可切换内容,故考虑“多内容”类型
------- 未完待续