徐景良 2025-03-01 17:02:47 +08:00
commit 6caaf21d3f
53 changed files with 541 additions and 37 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -2,9 +2,9 @@ import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/ind
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const EquipmentIcons01Config: ConfigType = {
key: 'Icons01',
chartKey: 'VIcons01',
conKey: 'VCIcons01',
key: 'EquipmentIcons01',
chartKey: 'VEquipmentIcons01',
conKey: 'VCEquipmentIcons01',
title: '图标-卫星',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,

View File

@ -2,9 +2,9 @@ import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/ind
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const EquipmentIcons02Config: ConfigType = {
key: 'Icons02',
chartKey: 'VIcons02',
conKey: 'VCIcons02',
key: 'EquipmentIcons02',
chartKey: 'VEquipmentIcons02',
conKey: 'VCEquipmentIcons02',
title: '图标-高空瞭望',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,

View File

@ -2,9 +2,9 @@ import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/ind
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const EquipmentIcons03Config: ConfigType = {
key: 'Icons03',
chartKey: 'VIcons03',
conKey: 'VCIcons03',
key: 'EquipmentIcons03',
chartKey: 'VEquipmentIcons03',
conKey: 'VCEquipmentIcons03',
title: '图标-监控摄像头',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,

View File

@ -2,9 +2,9 @@ import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/ind
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const EquipmentIcons04Config: ConfigType = {
key: 'Icons04',
chartKey: 'VIcons04',
conKey: 'VCIcons04',
key: 'EquipmentIcons04',
chartKey: 'VEquipmentIcons04',
conKey: 'VCEquipmentIcons04',
title: '图标-无人机',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,

View File

@ -10,10 +10,10 @@ import { EquipmentTitlesbg07Config } from './TitlesBg07/index';
import { EquipmentTitlesbg08Config } from './TitlesBg08/index';
import { EquipmentHuoQingJianCeConfig } from './HuoQingJianCe/index';
import { EquipmentHuoQingXianSuoConfig } from './HuoQingXianSuo/index';
import { EquipmentIcons01Config } from './Icons01/index';
import { EquipmentIcons02Config } from './Icons02/index';
import { EquipmentIcons03Config } from './Icons03/index';
import { EquipmentIcons04Config } from './Icons04/index';
import { EquipmentIcons01Config } from './EquipmentIcons01/index';
import { EquipmentIcons02Config } from './EquipmentIcons02/index';
import { EquipmentIcons03Config } from './EquipmentIcons03/index';
import { EquipmentIcons04Config } from './EquipmentIcons04/index';
export default [
EquipmentContentbg01Config,

View File

@ -0,0 +1,53 @@
import { PublicConfigClass } from '@/packages/public'
import { chartInitConfig, requestSqlConfig } from '@/settings/designSetting'
import { CreateComponentType } from '@/packages/index.d'
import { TaskBannerConfig } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
colors: ['#457453','#00611A','#00CC13','#C9FFC7'],
titleColor: '#CBE6CD',
titleSize: 15,
desColor: '#FFFFFF',
desSize: 15,
bannerArr: [
"/src/assets/images/chart/tasks/bannerimg1.png",
"/src/assets/images/chart/tasks/bannerimg1.png",
"/src/assets/images/chart/tasks/bannerimg1.png",
],
dataset:[
{
title: '预警描述',
desc: '费县马庄镇牛田村村委东北方向375.75° 1.197公里处发现火情'
},
{
title: '水平角',
desc: '375.75°'
},
{
title: '俯视角',
desc: '98.5°'
},
{
title: '经纬度',
desc: '117.90911,3012349'
},
{
title: '预警时间',
desc: '2024.12.24 13:08:07'
},
{
title: '暸望塔',
desc: '费县瞭望塔'
}
]
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = TaskBannerConfig.key
public attr = { ...chartInitConfig, w: 400, h: 527, zIndex: 1 }
public chartConfig = cloneDeep(TaskBannerConfig)
public option = cloneDeep(option)
public request = { ...requestSqlConfig, requestSQLContent: { sql: 'select * from ' }, }
public filter = "return res.result;"
}

View File

@ -0,0 +1,78 @@
<template>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox
:name="`颜色-${index + 1}`"
v-for="(item, index) in optionData.colors"
:key="index"
>
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.colors[index]"
></n-color-picker>
</SettingItem>
<SettingItem>
<n-button
size="small"
@click="optionData.colors[index] = option.colors[index]"
>
恢复默认
</n-button>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox name="样式">
<SettingItem name="文字颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.desColor"
></n-color-picker>
</SettingItem>
<SettingItem name="文字大小">
<n-input-number
size="small"
v-model:value="optionData.desSize"
:min="12"
/>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox name="样式">
<SettingItem name="文字颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.titleColor"
></n-color-picker>
</SettingItem>
<SettingItem name="文字大小">
<n-input-number
size="small"
v-model:value="optionData.titleSize"
:min="12"
/>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">
import { PropType } from 'vue'
import {
CollapseItem,
SettingItemBox,
SettingItem
} from '@/components/Pages/ChartItemSetting'
import { option } from './config'
const props = defineProps({
optionData: {
type: Object as PropType<typeof option>,
required: true
}
})
</script>

View File

@ -0,0 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d';
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const TaskBannerConfig: ConfigType = {
key: 'TaskBanner',
chartKey: 'VTaskBanner',
conKey: 'VCTaskBanner',
title: '轮播图',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.TASKS,
chartFrame: ChartFrameEnum.STATIC,
image: 'banner.png',
};

View File

@ -0,0 +1,146 @@
<template>
<div class="go-title-03">
<div class="bannerbox">
<a-carousel autoplay dots-class="slick-dots slick-thumb">
<div v-for="item in bannerArr">
<img :src="item" />
</div>
</a-carousel>
</div>
<div class="flex column sectionsbox">
<div class="flex mt-1" v-for="item in dataset">
<div class="flex ai-c jc-c tasktitlesbox">
<div class="dots"></div>
<div class="titleText">{{ item.title }}</div>
</div>
<div class="desStyle">{{ item.desc }}</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { PropType, toRefs } from 'vue';
import { CreateComponentType } from '@/packages/index.d';
import { useChartDataFetch } from '@/hooks';
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore';
const props = defineProps({
chartConfig: {
type: Object as PropType<CreateComponentType>,
required: true
}
})
const { w, h } = toRefs(props.chartConfig.attr)
const {
colors,
titleSize,
titleColor,
desColor,
desSize,
bannerArr,
dataset
} = toRefs(props.chartConfig.option)
// callback
useChartDataFetch(props.chartConfig, useChartEditStore, (resData: any[]) => {
props.chartConfig.option.dataset = resData;
});
</script>
<style lang="scss" scoped>
@include go('title-03') {
position: relative;
width: v-bind('w'+"px");
height: v-bind('h'+"px");
padding: 18px 20px;
.max-w{
width: 100%;
}
.column{
flex-direction: column;
}
.flex{
display: flex;
}
.jc-sb{
justify-content: space-between;
}
.jc-sa{
justify-content: space-around;
}
.ai-c{
align-items: center;
}
.mt-1{
margin-top: 5px;
}
.bannerbox{
width: 100%;
height: 44%;
border: 1px solid v-bind('colors[0]');
padding: 6px;
margin-bottom: 40px;
}
.sectionsbox{
width: 96%;
margin: 0 auto;
}
.tasktitlesbox{
width: 120px;
height: 30px;
}
.dots{
width: 3px;
height: 3px;
border-radius: 3px;
background: v-bind('colors[3]');
margin-right: 8px;
}
.titleText{
color: v-bind('titleColor');
font-size: v-bind('titleSize+"px"');
}
.desStyle{
width: calc(100% - 120px);
color: v-bind('desColor');
font-size: v-bind('desSize+"px"');
line-height: 30px;
}
:deep(.ant-carousel){
height: 100%;
}
:deep(.slick-slider){
height: 100%;
}
:deep(.slick-list){
height: 100%;
}
:deep(.slick-track){
height: 100%;
}
:deep(.slick-slide) {
text-align: center;
height: 100%;
line-height: 100%;
overflow: hidden;
}
:deep(.slick-slide img) {
width: 100%;
height: 100%;
}
:deep(.slick-dots) {
position: relative;
bottom: -20px;
}
:deep(.slick-dots li.slick-active button) {
background: v-bind('colors[2]');
}
:deep(.slick-dots li button) {
background: v-bind('colors[1]');
}
}
</style>

View File

@ -0,0 +1,26 @@
import { PublicConfigClass } from '@/packages/public'
import { chartInitConfig } from '@/settings/designSetting'
import { CreateComponentType } from '@/packages/index.d'
import { TaskRadioConfig } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
textColor: '#FFFFFF',
textSize: 14,
colors: ['#004714','#74C288'],
checkColor: '#00F535',
dataValue: 1,
dataset: [
{ label: '一般' ,value: '1' },
{ label: '较大' ,value: '2' },
{ label: '重大' ,value: '3' },
{ label: '特大' ,value: '4' }
]
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = TaskRadioConfig.key
public attr = { ...chartInitConfig, w: 484, h: 40, zIndex: 1 }
public chartConfig = cloneDeep(TaskRadioConfig)
public option = cloneDeep(option)
}

View File

@ -0,0 +1,100 @@
<template>
<CollapseItem name="内容" :expanded="true">
<SettingItemBox
:name="`选项-${index + 1}`"
v-for="(item, index) in optionData.dataset"
:key="index"
>
<n-input
size="small"
v-model:value="optionData.dataset[index].label"
:minlength="1"
type="text"
placeholder="请输入"
/>
<n-input
size="small"
v-model:value="optionData.dataset[index].value"
:minlength="1"
placeholder="请输入"
/>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox
:name="`颜色-${index + 1}`"
v-for="(item, index) in optionData.colors"
:key="index"
>
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.colors[index]"
></n-color-picker>
</SettingItem>
<SettingItem>
<n-button
size="small"
@click="optionData.colors[index] = option.colors[index]"
>
恢复默认
</n-button>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox name="样式">
<SettingItem name="文字颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.textColor"
></n-color-picker>
</SettingItem>
<SettingItem name="文字大小">
<n-input-number
size="small"
v-model:value="optionData.textSize"
:min="12"
/>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox name="样式">
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.checkColor"
></n-color-picker>
</SettingItem>
<SettingItem>
<n-button
size="small"
@click="optionData.checkColor = option.checkColor"
>
恢复默认
</n-button>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">
import { PropType } from 'vue'
import {
CollapseItem,
SettingItemBox,
SettingItem
} from '@/components/Pages/ChartItemSetting'
import { option } from './config'
const props = defineProps({
optionData: {
type: Object as PropType<typeof option>,
required: true
}
})
</script>

View File

@ -0,0 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d';
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const TaskRadioConfig: ConfigType = {
key: 'TaskRadio',
chartKey: 'VTaskRadio',
conKey: 'VCTaskRadio',
title: '单选',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.TASKS,
chartFrame: ChartFrameEnum.STATIC,
image: 'radiobg.png',
};

View File

@ -0,0 +1,51 @@
<template>
<div class="go-title-03">
<a-radio-group v-model:value="dataValue" name="radioGroup">
<a-radio v-for="item in dataset" :value="item.value">{{item.label}}</a-radio>
</a-radio-group>
</div>
</template>
<script setup lang="ts">
import { PropType, toRefs } from 'vue'
import { CreateComponentType } from '@/packages/index.d'
const props = defineProps({
chartConfig: {
type: Object as PropType<CreateComponentType>,
required: true
}
})
const { w, h } = toRefs(props.chartConfig.attr)
const {
colors,
textColor,
textSize,
checkColor,
dataValue,
dataset
} = toRefs(props.chartConfig.option)
</script>
<style lang="scss" scoped>
@include go('title-03') {
position: relative;
display: flex;
justify-content: center;
align-items: center;
:deep(.ant-radio-wrapper){
color: v-bind('textColor');
font-size: v-bind('textSize+"px"');
margin-right: 20px;
}
:deep(.ant-radio-inner) {
border-color: v-bind('colors[0]');
background: v-bind('colors[1]');
}
:deep( .ant-radio-checked .ant-radio-inner){
background: v-bind('checkColor');
}
}
</style>

View File

@ -0,0 +1,7 @@
import { TaskBannerConfig } from './TaskBanner/index';
import { TaskRadioConfig } from './TaskRadio/index';
export default [
TaskBannerConfig,
TaskRadioConfig
];

View File

@ -0,0 +1,7 @@
export enum ChatCategoryEnum {
TITLE = 'Tasks',
}
export enum ChatCategoryEnumName {
TITLE = '智处',
}

View File

@ -0,0 +1,3 @@
import Tasks from './Tasks'
export const TasksList = [...Tasks]

View File

@ -6,7 +6,7 @@ import cloneDeep from 'lodash/cloneDeep'
export const option = {
boxId: 'linearGradientTitlesLeftBtnActive',
colors: ['#131415','#EA9607','#EBBE11','#EBBE10','#EBBA0F','#EBB90F'],
colors: ['#131415','#EA9607','#EBBE11','#EBBE10','#EBBA0F','#EBB90F','#EBBA0F'],
}
export default class Config extends PublicConfigClass implements CreateComponentType {

View File

@ -55,7 +55,7 @@
></polyline>
<polygon
id="矩形" fill="#02B56D" fill-rule="nonzero"
id="矩形" :fill="colors[6]" fill-rule="nonzero"
:points="`${w/3.32} 0 ${w/1.79} 0 ${w/1.73} 2.32 ${w/3.12} 2.32`"
></polygon>
<!-- points="37.398018 0 69.1753804 0 71.4939791 2.31508792 39.7434169 2.31508792" -->

View File

@ -2,9 +2,9 @@ import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/ind
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const Icons01Config: ConfigType = {
key: 'Icons01',
chartKey: 'VIcons01',
conKey: 'VCIcons01',
key: 'UnitsIcons01',
chartKey: 'VUnitsIcons01',
conKey: 'VCUnitsIcons01',
title: '图标01',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,

View File

@ -2,9 +2,9 @@ import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/ind
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const Icons02Config: ConfigType = {
key: 'Icons02',
chartKey: 'VIcons02',
conKey: 'VCIcons02',
key: 'UnitsIcons02',
chartKey: 'VUnitsIcons02',
conKey: 'VCUnitsIcons02',
title: '图标02',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,

View File

@ -2,9 +2,9 @@ import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/ind
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const Icons03Config: ConfigType = {
key: 'Icons03',
chartKey: 'VIcons03',
conKey: 'VCIcons03',
key: 'UnitsIcons03',
chartKey: 'VUnitsIcons03',
conKey: 'VCUnitsIcons03',
title: '图标03',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,

View File

@ -2,9 +2,9 @@ import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/ind
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const Icons04Config: ConfigType = {
key: 'Icons04',
chartKey: 'VIcons04',
conKey: 'VCIcons04',
key: 'UnitsIcons04',
chartKey: 'VUnitsIcons04',
conKey: 'VCUnitsIcons04',
title: '图标04',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,

View File

@ -10,10 +10,10 @@ import { ContentTitle03Config } from './ContentTitle03/index';
import { ContentTitle04Config } from './ContentTitle04/index';
import { ContentTitle05Config } from './ContentTitle05/index';
import { LeftChartsConfig } from './LeftCharts/index';
import { Icons01Config } from './Icons01/index';
import { Icons02Config } from './Icons02/index';
import { Icons03Config } from './Icons03/index';
import { Icons04Config } from './Icons04/index';
import { Icons01Config } from './UnitsIcons01/index';
import { Icons02Config } from './UnitsIcons02/index';
import { Icons03Config } from './UnitsIcons03/index';
import { Icons04Config } from './UnitsIcons04/index';
import { SearchBoxConfig } from './SearchBox/index';
import { RightBox01Config } from './RightBox01/index';
import { RightBox01IconCommonConfig } from './RightBox01IconCommon/index';

View File

@ -203,6 +203,7 @@ export enum PackagesCategoryEnum {
UNITS = 'Units',
ZHIGAN = 'Zhigan',
EQUIPMENT = 'Equipment',
TASKS = 'Tasks',
}
// 包分类名称
@ -217,7 +218,8 @@ export enum PackagesCategoryName {
CUSTOM = '预警信息',
UNITS = '组件',
ZHIGAN = '智感',
EQUIPMENT = '设备'
EQUIPMENT = '设备',
TASKS = '任务'
}
// 获取组件
@ -239,4 +241,5 @@ export type PackagesType = {
[PackagesCategoryEnum.UNITS]: ConfigType[];
[PackagesCategoryEnum.ZHIGAN]: ConfigType[];
[PackagesCategoryEnum.EQUIPMENT]: ConfigType[];
[PackagesCategoryEnum.TASKS]: ConfigType[];
};

View File

@ -8,6 +8,7 @@ import { DiyList } from '@/packages/components/Diy/index';
import { UnitsList } from '@/packages/components/Units/index';
import { ZhiganList } from '@/packages/components/Zhigan/index';
import { EquipmentList } from '@/packages/components/Equipment/index';
import { TasksList } from '@/packages/components/Tasks/index';
import {
PackagesCategoryEnum,
@ -49,6 +50,7 @@ export let packagesList: PackagesType = {
[PackagesCategoryEnum.UNITS]: UnitsList,
[PackagesCategoryEnum.ZHIGAN]: ZhiganList,
[PackagesCategoryEnum.EQUIPMENT]: EquipmentList,
[PackagesCategoryEnum.TASKS]: TasksList,
};
// 组件缓存, 可以大幅度提升组件加载速度

View File

@ -60,9 +60,9 @@ const packagesListObj = {
icon: renderIcon(AirPlaneOutlineIcon),
label: PackagesCategoryName.ZHIGAN
},
[PackagesCategoryEnum.MAPICONS]: {
[PackagesCategoryEnum.TASKS]: {
icon: renderIcon(AirPlaneOutlineIcon),
label: PackagesCategoryName.MAPICONS
label: PackagesCategoryName.TASKS
},
[PackagesCategoryEnum.EQUIPMENT]: {
icon: renderIcon(AirPlaneOutlineIcon),