Commit e390e7e1054c0c8002297a1dd293f09192a168ca

Authored by xp.Huang
2 parents f553bc83 fe832ca0

Merge branch 'ft' into 'main_dev'

feat(src/packages/): 小组件小标题新增小标题9和装饰11,12;三维模型新增设置模型位置,旋转位置,灯光配置,label标点配置(支持多个label)

See merge request yunteng/thingskit-view!106
Showing 20 changed files with 884 additions and 55 deletions
... ... @@ -17,7 +17,7 @@ export const option = {
17 17
18 18 export default class Config extends PublicConfigClass implements CreateComponentType {
19 19 public key = Decorates07Config.key
20   - public attr = { ...chartInitConfig, zIndex: 1, w: 230, h: 225 }
  20 + public attr = { ...chartInitConfig, zIndex: 1, w: 200, h: 200 }
21 21 public chartConfig = cloneDeep(Decorates07Config)
22 22 public option = cloneDeep(option)
23 23 }
... ...
... ... @@ -17,7 +17,7 @@ export const option = {
17 17
18 18 export default class Config extends PublicConfigClass implements CreateComponentType {
19 19 public key = Decorates08Config.key
20   - public attr = { ...chartInitConfig, zIndex: 1, w: 390, h: 400 }
  20 + public attr = { ...chartInitConfig, zIndex: 1, w: 200, h: 200 }
21 21 public chartConfig = cloneDeep(Decorates08Config)
22 22 public option = cloneDeep(option)
23 23 }
... ...
  1 +import { PublicConfigClass } from '@/packages/public'
  2 +import { CreateComponentType } from '@/packages/index.d'
  3 +import { Decorates11Config } from './index'
  4 +import cloneDeep from 'lodash/cloneDeep'
  5 +import { chartInitConfig } from '@/settings/designSetting'
  6 +
  7 +export const option = {
  8 + dataset: '',
  9 + attribute: {
  10 + bgColor1:'#00e0db',
  11 + bgColor2:'#66ffff',
  12 + }
  13 +}
  14 +
  15 +export default class Config extends PublicConfigClass implements CreateComponentType {
  16 + public key = Decorates11Config.key
  17 + public attr = { ...chartInitConfig, zIndex: 1, w: 200, h: 200 }
  18 + public chartConfig = cloneDeep(Decorates11Config)
  19 + public option = cloneDeep(option)
  20 +}
... ...
  1 +<template>
  2 + <CollapseItem name="配置" :expanded="true">
  3 + <SettingItemBox :name="`装饰1`">
  4 + <SettingItem name="颜色">
  5 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor1"></n-color-picker>
  6 + </SettingItem>
  7 + <SettingItem>
  8 + <n-button size="small" @click="optionData.attribute.bgColor1 = '#00e0db'"> 恢复默认 </n-button>
  9 + </SettingItem>
  10 + </SettingItemBox>
  11 + <SettingItemBox :name="`装饰2`">
  12 + <SettingItem name="颜色">
  13 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor2"></n-color-picker>
  14 + </SettingItem>
  15 + <SettingItem>
  16 + <n-button size="small" @click="optionData.attribute.bgColor2 = '#66ffff'"> 恢复默认 </n-button>
  17 + </SettingItem>
  18 + </SettingItemBox>
  19 + </CollapseItem>
  20 +</template>
  21 +
  22 +<script setup lang="ts">
  23 +import { PropType } from 'vue'
  24 +import { option } from './config'
  25 +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  26 +
  27 +defineProps({
  28 + optionData: {
  29 + type: Object as PropType<typeof option>,
  30 + required: true
  31 + }
  32 +})
  33 +</script>
... ...
  1 +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
  2 +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
  3 +import { useWidgetKey } from '@/packages/external/useWidgetKey'
  4 +
  5 +const { key, chartKey, conKey } = useWidgetKey('Decorates11',true)
  6 +
  7 +export const Decorates11Config: ConfigType = {
  8 + key,
  9 + chartKey,
  10 + conKey,
  11 + title: '装饰11',
  12 + category: ChatCategoryEnum.DECORATE,
  13 + categoryName: ChatCategoryEnumName.DECORATE,
  14 + package: PackagesCategoryEnum.DECORATES,
  15 + chartFrame: ChartFrameEnum.COMMON,
  16 + image: 'decorates10.png',
  17 +}
... ...
  1 +<template>
  2 + <div class="go-content-box">
  3 + <svg
  4 + xmlns="http://www.w3.org/2000/svg"
  5 + xmlns:xlink="http://www.w3.org/1999/xlink"
  6 + :width="w"
  7 + :height="h"
  8 + viewBox="0 0 270 270"
  9 + fill="none"
  10 + >
  11 + <g opacity="1" transform="translate(3 3) rotate(0)">
  12 + <g opacity="1" transform="translate(0 0) rotate(0)">
  13 + <g opacity="1" transform="translate(0 0) rotate(0)">
  14 + <g opacity="1" transform="translate(0 0) rotate(0)">
  15 + <path
  16 + id="位图"
  17 + fill-rule="evenodd"
  18 + style="fill: url(#decorates11_pattern0)"
  19 + d="M12 251.62L251.62 251.62L251.62 12L12 12L12 251.62Z"
  20 + />
  21 + <g id="椭圆形" filter="url(#decorates11_filter_5)">
  22 + <path
  23 + id="椭圆形"
  24 + :style="{fill: attribute.bgColor1,opacity: 0.8}"
  25 + d="M261,132c0,-8.794 -0.87367,-17.46 -2.621,-25.998c-1.70267,-8.3188 -4.20833,-16.38833 -7.517,-24.2086c-3.248,-7.6788 -7.21267,-14.98253 -11.894,-21.9112c-4.63733,-6.86373 -9.88933,-13.2286 -15.756,-19.0946c-5.866,-5.86613 -12.23067,-11.11787 -19.094,-15.7552c-6.92867,-4.68133 -14.23233,-8.6462 -21.911,-11.8946c-7.82,-3.30819 -15.88967,-5.81369 -24.209,-7.51648c-8.538,-1.74755 -17.204,-2.62132 -25.998,-2.62132c-8.794,0 -17.46,0.87377 -25.998,2.62131c-8.319,1.7028 -16.38853,4.2083 -24.2086,7.51649c-7.6788,3.2484 -14.98253,7.21327 -21.9112,11.8946c-6.86367,4.63733 -13.22853,9.88907 -19.0946,15.7552c-5.86613,5.86607 -11.11787,12.23093 -15.7552,19.0946c-4.68133,6.92867 -8.6462,14.2324 -11.8946,21.9112c-3.30819,7.82007 -5.81368,15.8896 -7.51648,24.2086c-1.74755,8.538 -2.62132,17.204 -2.62132,25.998c0,8.794 0.87377,17.46 2.62131,25.998c1.70279,8.31933 4.20829,16.389 7.51649,24.209c3.24833,7.67867 7.2132,14.98233 11.8946,21.911c4.63733,6.86333 9.88907,13.228 15.7552,19.094c5.86607,5.866 12.23093,11.118 19.0946,15.756c6.92867,4.68133 14.2324,8.646 21.9112,11.894c7.82027,3.30867 15.8898,5.81433 24.2086,7.517c8.538,1.74733 17.204,2.621 25.998,2.621c8.794,0 17.46,-0.87367 25.998,-2.621c8.31867,-1.70267 16.38833,-4.20833 24.209,-7.517c7.67867,-3.248 14.98233,-7.21267 21.911,-11.894c6.86333,-4.63733 13.228,-9.88933 19.094,-15.756c5.86667,-5.866 11.11867,-12.23067 15.756,-19.094c4.68133,-6.92867 8.646,-14.23233 11.894,-21.911c3.30867,-7.82067 5.81433,-15.89033 7.517,-24.209c1.74733,-8.538 2.621,-17.204 2.621,-25.998zM267,132c0,9.19867 -0.91433,18.26567 -2.743,27.201c-1.78267,8.70867 -4.40567,17.15633 -7.869,25.343c-3.4,8.03733 -7.54967,15.68167 -12.449,22.933c-4.852,7.18133 -10.34667,13.84067 -16.484,19.978c-6.13733,6.13733 -12.79667,11.632 -19.978,16.484c-7.25133,4.89933 -14.89567,9.049 -22.933,12.449c-8.18667,3.46333 -16.63433,6.08633 -25.343,7.869c-8.93533,1.82867 -18.00233,2.743 -27.201,2.743c-9.19867,0 -18.26567,-0.91433 -27.201,-2.743c-8.7088,-1.78267 -17.15657,-4.40567 -25.3433,-7.869c-8.0372,-3.4 -15.6814,-7.54967 -22.9326,-12.449c-7.18147,-4.852 -13.84087,-10.34667 -19.9782,-16.484c-6.13733,-6.13733 -11.63203,-12.79667 -16.4841,-19.978c-4.89927,-7.25133 -9.0489,-14.89567 -12.4489,-22.933c-3.46323,-8.18667 -6.08613,-16.63433 -7.86872,-25.343c-1.82879,-8.93467 -2.74318,-18.00167 -2.74318,-27.201c0,-9.19933 0.9144,-18.26633 2.74319,-27.201c1.7826,-8.70893 4.4055,-17.1567 7.86872,-25.3433c3.39999,-8.0372 7.54962,-15.6814 12.44889,-22.9326c4.85213,-7.18147 10.34683,-13.84087 16.4841,-19.9782c6.13733,-6.13733 12.79673,-11.63203 19.9782,-16.4841c7.25127,-4.89927 14.89547,-9.0489 22.9326,-12.4489c8.1866,-3.46322 16.63437,-6.08613 25.3433,-7.86872c8.93467,-1.82879 18.00167,-2.74318 27.201,-2.74318c9.19933,0 18.26633,0.9144 27.201,2.74319c8.70867,1.78258 17.15633,4.40549 25.343,7.86872c8.03733,3.39999 15.68167,7.54962 22.933,12.44889c7.18133,4.85207 13.84067,10.34677 19.978,16.4841c6.13733,6.13727 11.632,12.79667 16.484,19.9782c4.89933,7.25113 9.049,14.89533 12.449,22.9326c3.46333,8.18673 6.08633,16.6345 7.869,25.3433c1.82867,8.93533 2.743,18.00233 2.743,27.201z"
  26 + />
  27 + </g>
  28 + </g>
  29 + </g>
  30 + </g>
  31 + <g opacity="1" transform="translate(88.3564453125 58.359130859375) rotate(0)">
  32 + <path
  33 + id="矩形"
  34 + fill-rule="evenodd"
  35 + :style="{fill: attribute.bgColor2}"
  36 + opacity="0"
  37 + d="M0 87.26L87.26 87.26L87.26 0L0 0L0 87.26Z"
  38 + />
  39 + </g>
  40 + </g>
  41 + <defs>
  42 + <pattern id="decorates11_pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
  43 + <use
  44 + transform="translate(0 0) scale(0.002702702702702703 0.002702702702702703) rotate(0)"
  45 + xlink:href="#image0"
  46 + />
  47 + </pattern>
  48 + <image
  49 + transform="rotate(0 185 185)"
  50 + id="image0"
  51 + width="370"
  52 + height="370"
  53 + xlink:href="data:image/png;base64,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"
  54 + />
  55 + <filter
  56 + id="decorates11_filter_5"
  57 + x="0"
  58 + y="0"
  59 + width="264"
  60 + height="264"
  61 + filterUnits="userSpaceOnUse"
  62 + color-interpolation-filters="sRGB"
  63 + >
  64 + <feFlood flood-opacity="0" result="feFloodId" />
  65 + <feBlend mode="normal" in="SourceGraphic" in2="decorates11_filter_5" result="shape" />
  66 + </filter>
  67 + </defs>
  68 + </svg>
  69 + </div>
  70 +</template>
  71 +<script setup lang="ts">
  72 +import { PropType, toRefs } from 'vue'
  73 +import { CreateComponentType } from '@/packages/index.d'
  74 +
  75 +const props = defineProps({
  76 + chartConfig: {
  77 + type: Object as PropType<CreateComponentType>,
  78 + required: true
  79 + }
  80 +})
  81 +
  82 +const { attribute } = toRefs(props.chartConfig.option)
  83 +
  84 +const { w, h } = toRefs(props.chartConfig.attr)
  85 +</script>
  86 +
  87 +<style lang="scss" scoped>
  88 +.go-content-box {
  89 + width: v-bind('w+"px"');
  90 + height: v-bind('h+"px"');
  91 + display: flex;
  92 + align-items: center;
  93 + justify-content: center;
  94 +}
  95 +</style>
... ...
  1 +import { PublicConfigClass } from '@/packages/public'
  2 +import { CreateComponentType } from '@/packages/index.d'
  3 +import { Decorates12Config } from './index'
  4 +import cloneDeep from 'lodash/cloneDeep'
  5 +import { chartInitConfig } from '@/settings/designSetting'
  6 +
  7 +export const option = {
  8 + dataset: '',
  9 + attribute: {
  10 + bgColor1:'#FF8045',
  11 + bgColor2:'#FFFFFF',
  12 + }
  13 +}
  14 +
  15 +export default class Config extends PublicConfigClass implements CreateComponentType {
  16 + public key = Decorates12Config.key
  17 + public attr = { ...chartInitConfig, zIndex: 1, w: 200, h: 200 }
  18 + public chartConfig = cloneDeep(Decorates12Config)
  19 + public option = cloneDeep(option)
  20 +}
... ...
  1 +<template>
  2 + <CollapseItem name="配置" :expanded="true">
  3 + <SettingItemBox :name="`装饰1`">
  4 + <SettingItem name="颜色">
  5 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor1"></n-color-picker>
  6 + </SettingItem>
  7 + <SettingItem>
  8 + <n-button size="small" @click="optionData.attribute.bgColor1 = '#FF8045'"> 恢复默认 </n-button>
  9 + </SettingItem>
  10 + </SettingItemBox>
  11 + <SettingItemBox :name="`装饰2`">
  12 + <SettingItem name="颜色">
  13 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor2"></n-color-picker>
  14 + </SettingItem>
  15 + <SettingItem>
  16 + <n-button size="small" @click="optionData.attribute.bgColor2 = '#FFFFFF'"> 恢复默认 </n-button>
  17 + </SettingItem>
  18 + </SettingItemBox>
  19 + </CollapseItem>
  20 +</template>
  21 +
  22 +<script setup lang="ts">
  23 +import { PropType } from 'vue'
  24 +import { option } from './config'
  25 +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  26 +
  27 +defineProps({
  28 + optionData: {
  29 + type: Object as PropType<typeof option>,
  30 + required: true
  31 + }
  32 +})
  33 +</script>
... ...
  1 +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
  2 +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
  3 +import { useWidgetKey } from '@/packages/external/useWidgetKey'
  4 +
  5 +const { key, chartKey, conKey } = useWidgetKey('Decorates12',true)
  6 +
  7 +export const Decorates12Config: ConfigType = {
  8 + key,
  9 + chartKey,
  10 + conKey,
  11 + title: '装饰12',
  12 + category: ChatCategoryEnum.DECORATE,
  13 + categoryName: ChatCategoryEnumName.DECORATE,
  14 + package: PackagesCategoryEnum.DECORATES,
  15 + chartFrame: ChartFrameEnum.COMMON,
  16 + image: 'decorates10.png',
  17 +}
... ...
  1 +<template>
  2 + <div class="go-content-box">
  3 + <svg
  4 + xmlns="http://www.w3.org/2000/svg"
  5 + xmlns:xlink="http://www.w3.org/1999/xlink"
  6 + :width="w"
  7 + :height="h"
  8 + viewBox="0 0 224 376"
  9 + fill="none"
  10 + >
  11 + <g opacity="1" transform="translate(0 0.001220703125) rotate(0)">
  12 + <g opacity="1" transform="translate(0 0) rotate(0)">
  13 + <path
  14 + id="矩形"
  15 + fill-rule="evenodd"
  16 + fill="url(#decorates12_linear_0)"
  17 + opacity="0.46"
  18 + d="M46.9482 38.8088L46.9482 264.179L46.9482 264.179C88.0582 280.529 133.868 280.469 174.938 264.029L178.038 262.789L178.038 38.2088C178.038 17.1688 160.868 0.178779 139.828 0.408779L84.3382 1.00878C63.6182 1.22878 46.9482 18.0888 46.9482 38.8088Z"
  19 + />
  20 + <path
  21 + id="矩形"
  22 + fill-rule="evenodd"
  23 + fill="url(#decorates12_linear_1)"
  24 + opacity="0.46"
  25 + d="M5.23877 39.1888L5.23877 299.189L7.29877 300.619C71.6488 345.299 157.469 343.369 219.749 295.849L219.749 295.849L219.749 38.0988C219.749 17.1088 202.639 0.128779 181.649 0.298779L42.7388 1.38878C21.9788 1.54878 5.23877 18.4288 5.23877 39.1888Z"
  26 + />
  27 + <path
  28 + id="椭圆形"
  29 + style="fill: url(#linear_2); opacity: 100"
  30 + d="M176.132,255.616c0,-0.672 -0.19567,-1.38533 -0.587,-2.14c-0.53133,-1.026 -1.384,-2.08767 -2.558,-3.185c-1.36533,-1.276 -3.085,-2.52067 -5.159,-3.734c-2.202,-1.28867 -4.727,-2.49567 -7.575,-3.621c-2.936,-1.16133 -6.13933,-2.20533 -9.61,-3.132c-3.556,-0.95 -7.31467,-1.75633 -11.276,-2.419c-8.324,-1.39267 -17.059,-2.089 -26.205,-2.089c-9.1442,0 -17.87737,0.69633 -26.1995,2.089c-3.96093,0.66267 -7.7192,1.469 -11.2748,2.419c-3.47027,0.92667 -6.6732,1.97033 -9.6088,3.131c-2.84733,1.126 -5.37187,2.33333 -7.5736,3.622c-2.07413,1.21333 -3.79387,2.458 -5.1592,3.734c-1.174,1.09733 -2.02673,2.159 -2.5582,3.185c-0.39087,0.75467 -0.5863,1.468 -0.5863,2.14c0,0.674 0.1956,1.38867 0.5868,2.144c0.53153,1.02733 1.38423,2.08933 2.5581,3.186c1.36513,1.276 3.08467,2.52067 5.1586,3.734c2.20153,1.288 4.72593,2.495 7.5732,3.621c2.9354,1.16 6.1383,2.20333 9.6087,3.13c3.55547,0.95 7.31373,1.756 11.2748,2.418c8.3216,1.39133 17.055,2.087 26.2002,2.087c9.14733,0 17.88233,-0.69567 26.205,-2.087c3.962,-0.662 7.721,-1.468 11.277,-2.418c3.47067,-0.92667 6.674,-1.97 9.61,-3.13c2.84733,-1.126 5.372,-2.333 7.574,-3.621c2.074,-1.21333 3.79367,-2.458 5.159,-3.734c1.174,-1.09733 2.02667,-2.15933 2.558,-3.186c0.39133,-0.75533 0.587,-1.47 0.587,-2.144zM191.252,255.616c0,3.128 -0.76,6.15967 -2.28,9.095c-1.33067,2.57067 -3.21767,4.998 -5.661,7.282c-2.18733,2.04333 -4.80333,3.956 -7.848,5.738c-2.868,1.678 -6.085,3.22167 -9.651,4.631c-3.478,1.37467 -7.23367,2.60067 -11.267,3.678c-4.02067,1.07333 -8.24867,1.98067 -12.684,2.722c-9.14867,1.52933 -18.715,2.294 -28.699,2.294c-9.98207,0 -19.54663,-0.76467 -28.6937,-2.294c-4.4352,-0.74133 -8.66273,-1.649 -12.6826,-2.723c-4.03327,-1.07667 -7.78853,-2.30233 -11.2658,-3.677c-3.5656,-1.40933 -6.7825,-2.95333 -9.6507,-4.632c-3.04447,-1.78133 -5.66007,-3.69367 -7.8468,-5.737c-2.4438,-2.284 -4.331,-4.71133 -5.6616,-7.282c-1.51947,-2.93533 -2.2792,-5.967 -2.2792,-9.095c0,-3.12667 0.7599,-6.15767 2.2797,-9.093c1.3306,-2.56933 3.21777,-4.99567 5.6615,-7.279c2.1866,-2.04333 4.80203,-3.95567 7.8463,-5.737c2.86813,-1.67867 6.08487,-3.22267 9.6502,-4.632c3.47733,-1.37533 7.23257,-2.60167 11.2657,-3.679c4.02007,-1.074 8.2476,-1.982 12.6826,-2.724c9.14807,-1.53067 18.71287,-2.296 28.6944,-2.296c9.98333,0 19.54967,0.76533 28.699,2.296c4.436,0.742 8.66433,1.65 12.685,2.724c4.03333,1.07733 7.78867,2.30367 11.266,3.679c3.566,1.40933 6.783,2.95333 9.651,4.632c3.04467,1.78133 5.66033,3.69367 7.847,5.737c2.444,2.28333 4.33133,4.70967 5.662,7.279c1.52,2.93533 2.28,5.96633 2.28,9.093z"
  31 + />
  32 + <path
  33 + id="椭圆形"
  34 + style="fill: url(#linear_3); opacity: 100"
  35 + d="M215.49,294.977c0,-1.79467 -0.47533,-3.614 -1.426,-5.458c-1.07467,-2.08467 -2.72567,-4.17233 -4.953,-6.263c-2.398,-2.25067 -5.378,-4.42267 -8.94,-6.516c-3.67533,-2.15933 -7.86867,-4.17433 -12.58,-6.045c-4.79867,-1.90533 -10.02367,-3.616 -15.675,-5.132c-5.75733,-1.54467 -11.83667,-2.85467 -18.238,-3.93c-6.55067,-1.1 -13.31567,-1.93367 -20.295,-2.501c-7.178,-0.58333 -14.46567,-0.875 -21.863,-0.875c-7.396,0 -14.68253,0.29167 -21.8596,0.875c-6.9786,0.56733 -13.74263,1.401 -20.2921,2.501c-6.4008,1.07533 -12.47963,2.38533 -18.2365,3.93c-5.65067,1.516 -10.87547,3.22667 -15.6744,5.132c-4.71073,1.87067 -8.9035,3.88567 -12.5783,6.045c-3.56193,2.09333 -6.54197,4.26533 -8.9401,6.516c-2.22753,2.09067 -3.87861,4.17833 -4.95323,6.263c-0.95051,1.844 -1.42577,3.66333 -1.42577,5.458c0,1.79533 0.47526,3.615 1.42577,5.459c1.07462,2.084 2.7257,4.17133 4.95323,6.262c2.39813,2.25133 5.37817,4.42367 8.9401,6.517c3.6748,2.15933 7.86757,4.17433 12.5783,6.045c4.79893,1.90533 10.02373,3.616 15.6744,5.132c5.75687,1.544 11.8357,2.85367 18.2365,3.929c6.5494,1.1 13.31343,1.93367 20.2921,2.501c7.17707,0.58333 14.4636,0.875 21.8596,0.875c7.39733,0 14.685,-0.29167 21.863,-0.875c6.97933,-0.56733 13.74433,-1.401 20.295,-2.501c6.40133,-1.07533 12.48067,-2.385 18.238,-3.929c5.65133,-1.516 10.87633,-3.22667 15.675,-5.132c4.71133,-1.87067 8.90467,-3.886 12.58,-6.046c3.562,-2.09267 6.542,-4.26467 8.94,-6.516c2.22733,-2.09067 3.87833,-4.178 4.953,-6.262c0.95067,-1.844 1.426,-3.66367 1.426,-5.459zM230.61,294.977c0,4.24067 -1.03567,8.36967 -3.107,12.387c-1.87,3.62733 -4.55167,7.08033 -8.045,10.359c-3.21867,3.02133 -7.09433,5.86367 -11.627,8.527c-4.34267,2.552 -9.22933,4.906 -14.66,7.062c-5.34267,2.12133 -11.122,4.01567 -17.338,5.683c-6.22333,1.67 -12.77367,3.08233 -19.651,4.237c-6.97467,1.172 -14.166,2.059 -21.574,2.661c-7.586,0.616 -15.282,0.924 -23.088,0.924c-7.80507,0 -15.4999,-0.308 -23.0845,-0.924c-7.40747,-0.602 -14.5981,-1.489 -21.5719,-2.661c-6.8768,-1.15467 -13.4267,-2.567 -19.6497,-4.237c-6.21533,-1.66733 -11.9941,-3.56167 -17.3363,-5.683c-5.4304,-2.156 -10.3168,-4.51 -14.6592,-7.062c-4.53237,-2.66333 -8.40797,-5.50567 -11.62682,-8.527c-3.49333,-3.27867 -6.17502,-6.73167 -8.04508,-10.359c-2.071,-4.01733 -3.1065,-8.14633 -3.1065,-12.387c0,-4.24 1.0355,-8.36867 3.1065,-12.386c1.87006,-3.628 4.55175,-7.08133 8.04508,-10.36c3.21885,-3.02067 7.09446,-5.863 11.62682,-8.527c4.3424,-2.552 9.2288,-4.906 14.6592,-7.062c5.34227,-2.12133 11.12103,-4.01567 17.3363,-5.683c6.22307,-1.66933 12.77297,-3.08167 19.6497,-4.237c6.9738,-1.17133 14.16443,-2.058 21.5719,-2.66c7.5846,-0.61667 15.27943,-0.925 23.0845,-0.925c7.806,0 15.502,0.30833 23.088,0.925c7.408,0.602 14.59933,1.48867 21.574,2.66c6.87733,1.15533 13.42767,2.56767 19.651,4.237c6.216,1.66733 11.99533,3.56167 17.338,5.683c5.43067,2.156 10.31733,4.51 14.66,7.062c4.53267,2.664 8.40833,5.50633 11.627,8.527c3.49333,3.27867 6.175,6.732 8.045,10.36c2.07133,4.01733 3.107,8.146 3.107,12.386z"
  36 + />
  37 + </g>
  38 + </g>
  39 + <defs>
  40 + <linearGradient
  41 + id="decorates12_linear_0"
  42 + x1="50%"
  43 + y1="11.74083535829661%"
  44 + x2="51%"
  45 + y2="97.23011363636364%"
  46 + gradientUnits="objectBoundingBox"
  47 + >
  48 + <stop offset="0" :stop-color="attribute.bgColor1" stop-opacity="0" />
  49 + <stop offset="1" :stop-color="attribute.bgColor1" stop-opacity="1" />
  50 + </linearGradient>
  51 + <linearGradient
  52 + id="decorates12_linear_1"
  53 + x1="50%"
  54 + y1="10.347697845478384%"
  55 + x2="51%"
  56 + y2="97.23011363636364%"
  57 + gradientUnits="objectBoundingBox"
  58 + >
  59 + <stop offset="0" :stop-color="attribute.bgColor1" stop-opacity="0" />
  60 + <stop offset="0.5286331641542819" :stop-color="attribute.bgColor1" stop-opacity="0.53" />
  61 + <stop offset="1" :stop-color="attribute.bgColor1" stop-opacity="1" />
  62 + </linearGradient>
  63 + <linearGradient
  64 + id="linear_2"
  65 + x1="50%"
  66 + y1="11.147280092598066%"
  67 + x2="51%"
  68 + y2="39.858217592598066%"
  69 + gradientUnits="objectBoundingBox"
  70 + >
  71 + <stop offset="0" :stop-color="attribute.bgColor1" stop-opacity="1" />
  72 + <stop offset="1" :stop-color="attribute.bgColor1" stop-opacity="1" />
  73 + </linearGradient>
  74 + <linearGradient
  75 + id="linear_3"
  76 + x1="50%"
  77 + y1="12.028811281136091%"
  78 + x2="51%"
  79 + y2="39.57430808169881%"
  80 + gradientUnits="objectBoundingBox"
  81 + >
  82 + <stop offset="0" :stop-color="attribute.bgColor2" stop-opacity="0.15" />
  83 + <stop offset="1" :stop-color="attribute.bgColor1" stop-opacity="1" />
  84 + </linearGradient>
  85 + </defs>
  86 + </svg>
  87 + </div>
  88 +</template>
  89 +<script setup lang="ts">
  90 +import { PropType, toRefs } from 'vue'
  91 +import { CreateComponentType } from '@/packages/index.d'
  92 +
  93 +const props = defineProps({
  94 + chartConfig: {
  95 + type: Object as PropType<CreateComponentType>,
  96 + required: true
  97 + }
  98 +})
  99 +
  100 +const { attribute } = toRefs(props.chartConfig.option)
  101 +
  102 +const { w, h } = toRefs(props.chartConfig.attr)
  103 +</script>
  104 +
  105 +<style lang="scss" scoped>
  106 +.go-content-box {
  107 + width: v-bind('w+"px"');
  108 + height: v-bind('h+"px"');
  109 + display: flex;
  110 + align-items: center;
  111 + justify-content: center;
  112 +}
  113 +</style>
... ...
  1 +import { PublicConfigClass } from '@/packages/public'
  2 +import { CreateComponentType } from '@/packages/index.d'
  3 +import { Subtitle9Config } from './index'
  4 +import cloneDeep from 'lodash/cloneDeep'
  5 +import { chartInitConfig } from '@/settings/designSetting'
  6 +
  7 +export const option = {
  8 + dataset: '我是标题',
  9 + attribute: {
  10 + bgColor1:'#21649C',
  11 + bgColor2:'#060F1E',
  12 + bgColor3:'#2387D9',
  13 + bgColor4:'#000F1B',
  14 + bgColor5:'#2affff',
  15 + bgColor6:'#ffcc33',
  16 + bgColor7:'#000f1b',
  17 + fontSize: 20,
  18 + fontPos: {
  19 + x: 0,
  20 + y: 20
  21 + },
  22 + fontColor: '#2AFFFF'
  23 + }
  24 +}
  25 +
  26 +export default class Config extends PublicConfigClass implements CreateComponentType {
  27 + public key = Subtitle9Config.key
  28 + public attr = { ...chartInitConfig, zIndex: 1, w: 550, h: 60 }
  29 + public chartConfig = cloneDeep(Subtitle9Config)
  30 + public option = cloneDeep(option)
  31 +}
... ...
  1 +<template>
  2 + <CollapseItem name="配置" :expanded="true">
  3 + <SettingItemBox name="标题">
  4 + <SettingItem name="内容">
  5 + <n-input v-model:value="optionData.dataset" />
  6 + </SettingItem>
  7 + <SettingItem name="大小">
  8 + <n-input-number v-model:value="optionData.attribute.fontSize" />
  9 + </SettingItem>
  10 + <SettingItem name="x轴位置">
  11 + <n-input-number v-model:value="optionData.attribute.fontPos.x" />
  12 + </SettingItem>
  13 + <SettingItem name="y轴位置">
  14 + <n-input-number v-model:value="optionData.attribute.fontPos.y" />
  15 + </SettingItem>
  16 + <SettingItem name="颜色">
  17 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.fontColor"></n-color-picker>
  18 + </SettingItem>
  19 + <SettingItem name="颜色">
  20 + <n-button size="small" @click="optionData.attribute.fontColor = '#2AFFFF'"> 恢复默认 </n-button>
  21 + </SettingItem>
  22 + </SettingItemBox>
  23 + <SettingItemBox :name="`左边背景装饰`">
  24 + <SettingItem name="颜色">
  25 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor1"></n-color-picker>
  26 + </SettingItem>
  27 + <SettingItem>
  28 + <n-button size="small" @click="optionData.attribute.bgColor1 = '#21649C'"> 恢复默认 </n-button>
  29 + </SettingItem>
  30 + </SettingItemBox>
  31 + <SettingItemBox :name="`右边背景装饰`">
  32 + <SettingItem name="颜色">
  33 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor2"></n-color-picker>
  34 + </SettingItem>
  35 + <SettingItem>
  36 + <n-button size="small" @click="optionData.attribute.bgColor2 = '#060F1E'"> 恢复默认 </n-button>
  37 + </SettingItem>
  38 + </SettingItemBox>
  39 + <SettingItemBox :name="`左边线装饰`">
  40 + <SettingItem name="颜色">
  41 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor3"></n-color-picker>
  42 + </SettingItem>
  43 + <SettingItem>
  44 + <n-button size="small" @click="optionData.attribute.bgColor3 = '#2387D9'"> 恢复默认 </n-button>
  45 + </SettingItem>
  46 + </SettingItemBox>
  47 + <SettingItemBox :name="`上下边线装饰`">
  48 + <SettingItem name="颜色">
  49 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor4"></n-color-picker>
  50 + </SettingItem>
  51 + <SettingItem>
  52 + <n-button size="small" @click="optionData.attribute.bgColor4 = '#000F1B'"> 恢复默认 </n-button>
  53 + </SettingItem>
  54 + </SettingItemBox>
  55 + <SettingItemBox :name="`右边正方形装饰`">
  56 + <SettingItem name="颜色">
  57 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor5"></n-color-picker>
  58 + </SettingItem>
  59 + <SettingItem>
  60 + <n-button size="small" @click="optionData.attribute.bgColor5 = '#2affff'"> 恢复默认 </n-button>
  61 + </SettingItem>
  62 + </SettingItemBox>
  63 + <SettingItemBox :name="`左边图形装饰`">
  64 + <SettingItem name="颜色">
  65 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor6"></n-color-picker>
  66 + </SettingItem>
  67 + <SettingItem>
  68 + <n-button size="small" @click="optionData.attribute.bgColor5 = '#ffcc33'"> 恢复默认 </n-button>
  69 + </SettingItem>
  70 + </SettingItemBox>
  71 + <SettingItemBox :name="`左边图形边框装饰`">
  72 + <SettingItem name="颜色">
  73 + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.bgColor7"></n-color-picker>
  74 + </SettingItem>
  75 + <SettingItem>
  76 + <n-button size="small" @click="optionData.attribute.bgColor5 = '#000f1b'"> 恢复默认 </n-button>
  77 + </SettingItem>
  78 + </SettingItemBox>
  79 + </CollapseItem>
  80 +</template>
  81 +
  82 +<script setup lang="ts">
  83 +import { PropType } from 'vue'
  84 +import { option } from './config'
  85 +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  86 +
  87 +defineProps({
  88 + optionData: {
  89 + type: Object as PropType<typeof option>,
  90 + required: true
  91 + }
  92 +})
  93 +</script>
... ...
  1 +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
  2 +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
  3 +import { useWidgetKey } from '@/packages/external/useWidgetKey'
  4 +
  5 +const { key, chartKey, conKey } = useWidgetKey('Subtitle9',true)
  6 +
  7 +export const Subtitle9Config: ConfigType = {
  8 + key,
  9 + chartKey,
  10 + conKey,
  11 + title: '小标题9',
  12 + category: ChatCategoryEnum.SUBTITLE,
  13 + categoryName: ChatCategoryEnumName.SUBTITLE,
  14 + package: PackagesCategoryEnum.DECORATES,
  15 + chartFrame: ChartFrameEnum.COMMON,
  16 + image: 'title8.png',
  17 +}
... ...
  1 +<template>
  2 + <div class="go-content-box">
  3 + <svg
  4 + xmlns="http://www.w3.org/2000/svg"
  5 + xmlns:xlink="http://www.w3.org/1999/xlink"
  6 + :width="w"
  7 + :height="h"
  8 + fill="none"
  9 + >
  10 + <defs>
  11 + <linearGradient id="subtitle9_linear_0" x1="0%" y1="50%" x2="100%" y2="50%" gradientUnits="objectBoundingBox">
  12 + <stop offset="0" :stop-color="attribute.bgColor1" stop-opacity="1" />
  13 + <stop offset="1" :stop-color="attribute.bgColor2" stop-opacity="1" />
  14 + </linearGradient>
  15 + <linearGradient id="subtitle9_linear_1" x1="0%" y1="50%" x2="100%" y2="50%" gradientUnits="objectBoundingBox">
  16 + <stop offset="0" :stop-color="attribute.bgColor3" stop-opacity="1" />
  17 + <stop offset="1" :stop-color="attribute.bgColor4" stop-opacity="1" />
  18 + </linearGradient>
  19 + </defs>
  20 + <g opacity="1" transform="translate(0 0) rotate(0 247.5 17.5)">
  21 + <path
  22 + id="矩形 8"
  23 + fill-rule="evenodd"
  24 + fill="url(#subtitle9_linear_0)"
  25 + transform="translate(1.0040567951318458 0) rotate(0 246.99797160243406 17.5)"
  26 + opacity="1"
  27 + :d="`M0,${h} L${w},${h} L${w},0 L0,0 L0,${h}Z`"
  28 + />
  29 + <rect
  30 + id="矩形 8"
  31 + style="stroke: url(#subtitle9_linear_1); stroke-width: 1; stroke-opacity: 100; stroke-dasharray: 0 0"
  32 + transform="translate(1.0040567951318458 0) rotate(0 246.99797160243406 17.5)"
  33 + x="0.5"
  34 + y="0.5"
  35 + rx="0"
  36 + :width="w"
  37 + :height="h-1"
  38 + />
  39 + <path
  40 + id="矩形 10"
  41 + fill-rule="evenodd"
  42 + :style="{fill:attribute.bgColor5}"
  43 + :transform="`translate(${w-3} ${h/2-3.01/2-16/2}) rotate(0 1.5060851926977687 1.75)`"
  44 + opacity="0.5"
  45 + d="M0,3.5L3.01,3.5L3.01,0L0,0L0,3.5Z "
  46 + />
  47 + <path
  48 + id="矩形 10"
  49 + fill-rule="evenodd"
  50 + :style="{fill:attribute.bgColor5}"
  51 + :transform="`translate(${w-3} ${h/2-3.01/2-5/2}) rotate(0 1.5060851926977687 1.75)`"
  52 + opacity="1"
  53 + d="M0,3.5L3.01,3.5L3.01,0L0,0L0,3.5Z "
  54 + />
  55 + <path
  56 + id="矩形 10"
  57 + fill-rule="evenodd"
  58 + :style="{fill:attribute.bgColor5}"
  59 + :transform="`translate(${w-3} ${h/2-3.01/2+7/2}) rotate(0 1.5060851926977687 1.75)`"
  60 + opacity="0.5"
  61 + d="M0,3.5L3.01,3.5L3.01,0L0,0L0,3.5Z "
  62 + />
  63 + <g opacity="1" :transform="`translate(13.052738336713995 ${h/2-26/2}) rotate(0 46.5 15.5)`">
  64 + <text>
  65 + <tspan
  66 + :x="attribute.fontPos.x"
  67 + :y="attribute.fontPos.y"
  68 + :font-size="attribute.fontSize"
  69 + line-height="0"
  70 + :fill="attribute.fontColor"
  71 + opacity="1"
  72 + font-family="YouSheBiaoTiHei"
  73 + letter-spacing="0"
  74 + >
  75 + {{ dataset }}
  76 + </tspan>
  77 + </text>
  78 + </g>
  79 + <path
  80 + id="矩形 9"
  81 + fill-rule="evenodd"
  82 + :style="{fill:attribute.bgColor6}"
  83 + :transform="`translate(0 ${h/2-21/2}) rotate(0 2.5101419878296145 10.5)`"
  84 + opacity="1"
  85 + d="M0,21L1.02,21C3.23,21 5.02,19.21 5.02,17L5.02,4C5.02,1.79 3.23,0 1.02,0L0,0L0,21Z "
  86 + />
  87 + <path
  88 + id="矩形 9"
  89 + :style="{stroke:attribute.bgColor7,strokeWidth: 1,strokeOpacity: 1}"
  90 + :transform="`translate(0 ${h/2-21/2}) rotate(0 2.5101419878296145 10.5)`"
  91 + d="M0,21L1.02,21C3.23,21 5.02,19.21 5.02,17L5.02,4C5.02,1.79 3.23,0 1.02,0L0,0L0,21Z "
  92 + />
  93 + </g>
  94 + </svg>
  95 + </div>
  96 +</template>
  97 +<script setup lang="ts">
  98 +import { PropType, toRefs } from 'vue'
  99 +import { CreateComponentType } from '@/packages/index.d'
  100 +
  101 +const props = defineProps({
  102 + chartConfig: {
  103 + type: Object as PropType<CreateComponentType>,
  104 + required: true
  105 + }
  106 +})
  107 +
  108 +const { dataset, attribute } = toRefs(props.chartConfig.option)
  109 +
  110 +const { w, h } = toRefs(props.chartConfig.attr)
  111 +</script>
  112 +
  113 +<style lang="scss" scoped>
  114 +.go-content-box {
  115 + width: v-bind('w+"px"');
  116 + height: v-bind('h+"px"');
  117 + display: flex;
  118 + align-items: center;
  119 + justify-content: center;
  120 +}
  121 +</style>
... ...
... ... @@ -47,7 +47,7 @@ const emits = defineEmits(['fileStaticUri'])
47 47
48 48 const fileList = ref<UploadFileInfo[]>([])
49 49
50   -const fileSizeMsg = ref(`文件需小于 ${props.fileSizeConst}M;格式为${props.threeSupportFileFormat.join(',')}的文件`)
  50 +const fileSizeMsg = ref(`文件需小于 ${props.fileSizeConst}M;格式为${props.threeSupportFileFormat.join(',')}的文件,支持传多个`)
51 51
52 52 const extname = (filename: string) => {
53 53 if (!filename || typeof filename != 'string') {
... ...
... ... @@ -5,8 +5,7 @@ import cloneDeep from 'lodash/cloneDeep'
5 5 import { chartInitConfig } from '@/settings/designSetting'
6 6
7 7 export const option = {
8   - //vue3dLoader支持数组或字符串,暂且绑定字符串,这个插件可以加载多个模型
9   - dataset: new URL('/src/assets/external/three/test.obj', import.meta.url).href,
  8 + dataset: [new URL('/src/assets/external/three/test.obj', import.meta.url).href],//三维数据源
10 9 backgroundColor: '', //场景背景色
11 10 backgroundAlpha: 0, //场景透明度
12 11 enableDamping: false, //是否启用阻尼
... ... @@ -19,14 +18,77 @@ export const option = {
19 18 */
20 19 outputEncoding: 'liner',
21 20 clearScene: false, //是否清空场景内容
22   - lights: [], //灯光,暂且没实现
  21 + lights: [//灯光为数组,type 为 环境光(AmbientLight) | 方向光(DirectionalLight) | 点光(PointLight) | 半球光(HemisphereLight)
  22 + {
  23 + type: 'AmbientLight',
  24 + label: '环境光(只有颜色)',
  25 + color: 'red',
  26 + position: { x: 100, y: 10, z: 100 }
  27 + },
  28 + {
  29 + type: 'DirectionalLight',
  30 + label: '方向光(可配置颜色,发光位置,光源强度)',
  31 + color: 'green',
  32 + position: { x: 100, y: 10, z: 100 },
  33 + intensity: 0.8
  34 + },
  35 + {
  36 + type: 'PointLight',
  37 + label: '点光(可配置颜色,发光位置,光源强度)',
  38 + color: '#000000',
  39 + position: { x: 200, y: -200, z: 100 },
  40 + intensity: 1
  41 + },
  42 + {
  43 + type: 'HemisphereLight',
  44 + label: '半球光(可配置从天空发出的光线的颜色,从地面发出的光线的颜色,发光位置)',
  45 + position: { x: 200, y: -200, z: 100 },
  46 + skyColor: '#00FF00',
  47 + groundColor: '#000000'
  48 + }
  49 + ],
23 50 mtlPath: [], //.mtl材质路径,比如搭配obj使用
24 51 textureImage: [], //jpg/png 材质路径
25 52 borderConfig: {
26 53 color: 'grey',
27 54 size: 1,
28 55 show: false
29   - }
  56 + },
  57 + position: [//模型位置
  58 + {
  59 + x: 0,
  60 + y: 0,
  61 + z: 0
  62 + }
  63 + ],
  64 + rotation: [//模型旋转
  65 + {
  66 + x: 0,
  67 + y: 0,
  68 + z: 0
  69 + }
  70 + ],
  71 + showFps:false,//是否显示fps
  72 + labels:[ //添加图片/文字标签,暂且支持文字
  73 + {
  74 + image: "",
  75 + text: "",
  76 + textStyle: {
  77 + fontFamily: "Arial",
  78 + fontSize: 18,
  79 + fontWeight: "normal",
  80 + lineHeight: 1,
  81 + color: "#ffffff",
  82 + borderWidth: 8,
  83 + borderRadius: 4,
  84 + borderColor: "rgba(0,0,0,1)",
  85 + backgroundColor: "rgba(0, 0, 0, 1)"
  86 + },
  87 + position: {x:0, y:0, z:0},
  88 + scale:{x:1, y:1, z:0},
  89 + sid: null
  90 + }
  91 + ]
30 92 }
31 93
32 94 export default class Config extends PublicConfigClass implements CreateComponentType {
... ...
... ... @@ -4,42 +4,55 @@
4 4 <setting-item name="颜色">
5 5 <n-color-picker size="small" :show-alpha="false" v-model:value="optionData.borderConfig.color"></n-color-picker>
6 6 </setting-item>
7   - <setting-item name="开启">
  7 + <setting-item name="开启边框">
8 8 <n-switch v-model:value="optionData.borderConfig.show" size="small" />
9 9 </setting-item>
10 10 <setting-item name="大小">
11 11 <n-input-number :min="0" v-model:value="optionData.borderConfig.size" size="small" />
12 12 </setting-item>
13 13 </setting-item-box>
  14 + <setting-item-box name="上传文件">
  15 + <setting-item>
  16 + <FileUpload
  17 + :max="100"
  18 + :fileList="optionData.dataset"
  19 + :threeSupportFileFormat="threeSupportFileFormat"
  20 + :singleFileType="singleFileTypeNotMtl"
  21 + @fileStaticUri="handleFileStaticUri"
  22 + />
  23 + </setting-item>
  24 + </setting-item-box>
14 25 <setting-item-box :alone="true">
15 26 <template #name>
16   - <n-text>提示</n-text>
  27 + <n-text>mtl</n-text>
17 28 <n-tooltip trigger="hover">
18 29 <template #trigger>
19 30 <n-icon size="21" :depth="3">
20 31 <help-outline-icon></help-outline-icon>
21 32 </n-icon>
22 33 </template>
23   - <span class="help-span">{{ threeFileHelpMessgae }}</span>
  34 + <span class="help-span">{{ threeMtlHelpMessgae }}</span>
24 35 </n-tooltip>
25 36 </template>
26 37 <FileUpload
27   - :max="1"
28   - :fileList="[optionData.dataset]"
29   - :threeSupportFileFormat="threeSupportFileFormat"
30   - :singleFileType="singleFileTypeNotMtl"
31   - @fileStaticUri="handleFileStaticUri"
32   - />
33   - </setting-item-box>
34   - <setting-item-box name="mtl材质">
35   - <FileUpload
36 38 :fileList="optionData.mtlPath"
37 39 :max="100"
38 40 :threeSupportFileFormat="supportFileMtl"
39 41 @fileStaticUri="handleFileMtlStaticUri"
40 42 />
41 43 </setting-item-box>
42   - <setting-item-box name="材质贴图">
  44 + <setting-item-box :alone="true">
  45 + <template #name>
  46 + <n-text>贴图</n-text>
  47 + <n-tooltip trigger="hover">
  48 + <template #trigger>
  49 + <n-icon size="21" :depth="3">
  50 + <help-outline-icon></help-outline-icon>
  51 + </n-icon>
  52 + </template>
  53 + <span class="help-span">{{ threeTextureHelpMessgae }}</span>
  54 + </n-tooltip>
  55 + </template>
43 56 <FileUpload
44 57 :fileList="optionData.textureImage"
45 58 :max="100"
... ... @@ -47,6 +60,113 @@
47 60 @fileStaticUri="handleFileTextureImageStaticUri"
48 61 />
49 62 </setting-item-box>
  63 + <setting-item-box name="模型位置">
  64 + <setting-item name="模型位置坐标(x,y,z)">
  65 + <template v-for="(item, index) in optionData.position" :key="index">
  66 + <n-input-number v-model:value="item.x" size="small" />
  67 + <n-input-number v-model:value="item.y" size="small" />
  68 + <n-input-number v-model:value="item.z" size="small" />
  69 + </template>
  70 + </setting-item>
  71 + </setting-item-box>
  72 + <setting-item-box name="模型旋转">
  73 + <setting-item name="模型旋转坐标(x,y,z)">
  74 + <template v-for="(item, index) in optionData.rotation" :key="index">
  75 + <n-input-number v-model:value="item.x" size="small" />
  76 + <n-input-number v-model:value="item.y" size="small" />
  77 + <n-input-number v-model:value="item.z" size="small" />
  78 + </template>
  79 + </setting-item>
  80 + </setting-item-box>
  81 + <setting-item-box name="灯光配置">
  82 + <setting-item v-for="(item, index) in optionData.lights" :name="item.label" :key="index">
  83 + <n-color-picker
  84 + v-if="!includeHemisphereLight.includes(item.type)"
  85 + size="small"
  86 + :show-alpha="false"
  87 + v-model:value="item.color"
  88 + ></n-color-picker>
  89 + <n-color-picker
  90 + v-if="includeHemisphereLight.includes(item.type)"
  91 + size="small"
  92 + :show-alpha="false"
  93 + v-model:value="item.skyColor"
  94 + ></n-color-picker>
  95 + <n-color-picker
  96 + v-if="includeHemisphereLight.includes(item.type)"
  97 + size="small"
  98 + :show-alpha="false"
  99 + v-model:value="item.groundColor"
  100 + ></n-color-picker>
  101 + <template v-if="!includeAmbientLight.includes(item.type)">
  102 + <n-input-number v-model:value="item.position.x" size="small" />
  103 + <n-input-number v-model:value="item.position.y" size="small" />
  104 + <n-input-number v-model:value="item.position.z" size="small" />
  105 + </template>
  106 + <n-input-number
  107 + v-if="includeDirectionalLightAndPointLight.includes(item.type)"
  108 + v-model:value="item.intensity"
  109 + size="small"
  110 + />
  111 + </setting-item>
  112 + </setting-item-box>
  113 + <setting-item-box>
  114 + <SettingItem name="启用fps">
  115 + <n-switch v-model:value="optionData.showFps" size="small" />
  116 + </SettingItem>
  117 + </setting-item-box>
  118 + <setting-item-box name="label配置">
  119 + <setting-item v-for="(item, index) in optionData.labels" :key="index">
  120 + <div>
  121 + <span>文字</span>
  122 + <n-input
  123 + type="text"
  124 + placeholder="请输入"
  125 + size="small"
  126 + clearable
  127 + show-count
  128 + v-model:value="item.text"
  129 + ></n-input>
  130 + </div>
  131 + <div>
  132 + <span>位置</span>
  133 + <n-input-number v-model:value="item.position.x" size="small" />
  134 + <n-input-number v-model:value="item.position.y" size="small" />
  135 + <n-input-number v-model:value="item.position.z" size="small" />
  136 + </div>
  137 + <div>
  138 + <span>缩放</span>
  139 + <n-input-number v-model:value="item.scale.x" size="small" />
  140 + <n-input-number v-model:value="item.scale.y" size="small" />
  141 + <n-input-number v-model:value="item.scale.z" size="small" />
  142 + </div>
  143 + <div>
  144 + <span>文字样式</span>
  145 + <span>颜色</span>
  146 + <n-color-picker size="small" :show-alpha="false" v-model:value="item.textStyle.color"></n-color-picker>
  147 + <span>字体</span>
  148 + <n-input-number v-model:value="item.textStyle.fontSize" size="small" />
  149 + <span>行高</span>
  150 + <n-input-number v-model:value="item.textStyle.lineHeight" size="small" />
  151 + <span>背景颜色</span>
  152 + <n-color-picker
  153 + size="small"
  154 + :show-alpha="false"
  155 + v-model:value="item.textStyle.backgroundColor"
  156 + ></n-color-picker>
  157 + <span>边框颜色</span>
  158 + <n-color-picker size="small" :show-alpha="false" v-model:value="item.textStyle.borderColor"></n-color-picker>
  159 + <span>边框大小</span>
  160 + <n-input-number v-model:value="item.textStyle.borderWidth" size="small" />
  161 + <span>边框圆角</span>
  162 + <n-input-number v-model:value="item.textStyle.borderRadius" size="small" />
  163 + </div>
  164 + <div>
  165 + <n-button v-if="optionData.labels.length > 1" @click="optionData.labels.splice(index, 1)"> - </n-button>
  166 + </div>
  167 + </setting-item>
  168 + <n-button v-if="optionData.labels.length < 4" @click="optionData.labels.push(pushItem)"> + </n-button>
  169 + </setting-item-box>
50 170 <setting-item-box name="属性配置">
51 171 <setting-item name="场景色(需要这种格式HEX #000000,否则失效)">
52 172 <n-color-picker size="small" :show-alpha="false" v-model:value="optionData.backgroundColor"></n-color-picker>
... ... @@ -91,9 +211,36 @@ const props = defineProps({
91 211 }
92 212 })
93 213
  214 +const pushItem = {
  215 + image: '',
  216 + text: '',
  217 + textStyle: {
  218 + fontFamily: 'Arial',
  219 + fontSize: 18,
  220 + fontWeight: 'normal',
  221 + lineHeight: 1,
  222 + color: '#ffffff',
  223 + borderWidth: 8,
  224 + borderRadius: 4,
  225 + borderColor: 'rgba(0,0,0,1)',
  226 + backgroundColor: 'rgba(0, 0, 0, 1)'
  227 + },
  228 + position: { x: 0, y: 0, z: 0 },
  229 + scale: { x: 1, y: 1, z: 0 },
  230 + sid: null
  231 +}
  232 +
  233 +const includeHemisphereLight = ['HemisphereLight']
  234 +
  235 +const includeAmbientLight = ['AmbientLight']
  236 +
  237 +const includeDirectionalLightAndPointLight = ['DirectionalLight', 'PointLight']
  238 +
94 239 const singleFileTypeNotMtl = ref('')
95 240
96   -const threeFileHelpMessgae = ref('如果格式为obj,则上传顺序是,先上传材质贴图(png或jpg)、mtl材质文件,最后是obj')
  241 +const threeMtlHelpMessgae = ref('比如mtl一般和obj搭配使用,fbx搭配jpg等')
  242 +
  243 +const threeTextureHelpMessgae = ref('贴图目前支持jpg/png格式')
97 244
98 245 const threeSupportFileFormat = ['fbx', 'obj', 'gltf', 'stl', 'dae', 'glb', 'ply', 'json']
99 246
... ... @@ -101,17 +248,21 @@ const supportFileMtl = ['mtl']
101 248
102 249 const supportFileTextureImage = ['jpg', 'png']
103 250
104   -const handleChange = (e: boolean) => {
105   - if (e) props.optionData.dataset = ''
106   -}
107   -
108 251 const encodinghList = [
109 252 { label: 'linear', value: 'linear' },
110 253 { label: 'sRGB ', value: 'sRGB ' }
111 254 ]
112 255
  256 +const handleChange = (e: boolean) => {
  257 + if (e) props.optionData.dataset = ['']
  258 +}
  259 +
113 260 const handleFileStaticUri = (value: UploadFileInfo[]) => {
114   - props.optionData.dataset = value[0]?.url as string
  261 + props.optionData.dataset = value.map(item => item?.url)?.filter(Boolean) as any
  262 + if (Array.isArray(props.optionData.dataset) && props.optionData.dataset.length === 0) {
  263 + //filePath数组必须有值
  264 + props.optionData.dataset = ['demo.obj']
  265 + }
115 266 }
116 267
117 268 const handleFileMtlStaticUri = (value: UploadFileInfo[]) => {
... ...
1 1 <template>
2   - <div class="go-content-box" :style="{ border: !borderConfig.show ? 'none' : '' }">
3   - <div v-if="supportWebGL">
  2 + <div class="go-content-box" :style="{ border: !borderConfig.show ? 'none' : ''}">
  3 + <div v-if="useDetectWebGLContext()">
4 4 <vue3dLoader
5 5 ref="vue3dLoaderRef"
6 6 :webGLRendererOptions="webGLRendererOptions"
... ... @@ -18,7 +18,11 @@
18 18 :dampingFactor="dampingFactor"
19 19 @process="onProcess"
20 20 @load="onLoad"
21   - @click="onClick"
  21 + :position="position"
  22 + :rotation="rotation"
  23 + :lights="lights"
  24 + :showFps="showFps"
  25 + :labels="labels"
22 26 />
23 27 <div v-show="show" class="process">
24 28 <span> 拼命加载中... </span>
... ... @@ -29,10 +33,11 @@
29 33 </div>
30 34 </template>
31 35 <script setup lang="ts">
32   -import { PropType, toRefs, ref, onMounted, nextTick, computed, watch } from 'vue'
  36 +import { PropType, toRefs, ref, nextTick, computed, watch } from 'vue'
33 37 import { CreateComponentType } from '@/packages/index.d'
34 38 import { vue3dLoader } from 'vue-3d-loader'
35 39 import { useDesignStore } from '@/store/modules/designStore/designStore'
  40 +import { useDetectWebGLContext } from '@/utils/external/useSupportWebGL'
36 41
37 42 const designStore = useDesignStore()
38 43
... ... @@ -43,7 +48,6 @@ const props = defineProps({
43 48 }
44 49 })
45 50
46   -// 颜色
47 51 const themeColor = computed(() => {
48 52 return designStore.getAppTheme
49 53 })
... ... @@ -74,27 +78,6 @@ const onProcess = (event: any) => {
74 78 process.value = Math.floor((event.loaded / event.total) * 100)
75 79 }
76 80
77   -const onClick = (event: any) => {
78   - console.log(event)
79   -}
80   -
81   -//判断浏览器是否支持WebGL
82   -const supportWebGL = ref(true)
83   -const detectWebGLContext = () => {
84   - let canvas = document.createElement('canvas')
85   - let gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl')
86   - if (gl && gl instanceof WebGLRenderingContext) {
87   - supportWebGL.value = true
88   - } else {
89   - supportWebGL.value = false
90   - }
91   -}
92   -
93   -onMounted(() => {
94   - detectWebGLContext()
95   - console.log(`实例`, vue3dLoaderRef.value)
96   -})
97   -
98 81 const { w, h } = toRefs(props.chartConfig.attr)
99 82
100 83 const {
... ... @@ -108,12 +91,17 @@ const {
108 91 outputEncoding,
109 92 clearScene,
110 93 dampingFactor,
111   - borderConfig
  94 + borderConfig,
  95 + position,
  96 + rotation,
  97 + lights,
  98 + showFps,
  99 + labels
112 100 } = toRefs(props.chartConfig.option) as any
113 101
114 102 watch(dataset, (newData: string) => {
115 103 //dateset为空则清除场景
116   - if(!newData)clearScene.value=true
  104 + if(!newData) clearScene.value=true
117 105 })
118 106 </script>
119 107
... ... @@ -123,7 +111,6 @@ watch(dataset, (newData: string) => {
123 111 border-width: v-bind('borderConfig.size + "px"');
124 112 border-style: solid;
125 113 border-color: v-bind('borderConfig.color');
126   - // border-color:v-bind('borderConfig.color');
127 114 .process {
128 115 position: absolute;
129 116 top: 50%;
... ...
... ... @@ -34,10 +34,13 @@ import { Subtitle5Config } from '@/packages/components/external/Decorates/Subtit
34 34 import { Subtitle6Config } from '@/packages/components/external/Decorates/Subtitle/Subtitle6'
35 35 import { Subtitle7Config } from '@/packages/components/external/Decorates/Subtitle/Subtitle7'
36 36 import { Subtitle8Config } from '@/packages/components/external/Decorates/Subtitle/Subtitle8'
  37 +import { Subtitle9Config } from '@/packages/components/external/Decorates/Subtitle/Subtitle9'
37 38 import { Decorates07Config } from '@/packages/components/external/Decorates/Decorates/Decorates07'
38 39 import { Decorates08Config } from '@/packages/components/external/Decorates/Decorates/Decorates08'
39 40 import { Decorates09Config } from '@/packages/components/external/Decorates/Decorates/Decorates09'
40 41 import { Decorates10Config } from '@/packages/components/external/Decorates/Decorates/Decorates10'
  42 +import { Decorates11Config } from '@/packages/components/external/Decorates/Decorates/Decorates11'
  43 +import { Decorates12Config } from '@/packages/components/external/Decorates/Decorates/Decorates12'
41 44 import { CameraConfig } from '@/packages/components/external/Informations/Mores/Camera'
42 45 import { SingleCameraConfig } from '@/packages/components/external/Informations/Mores/SingleCamera'
43 46 import { OverrideILoadConfigurationframeConfig } from '@/packages/components/external/Informations/Mores/OverrideILoadConfigurationframe'
... ... @@ -63,10 +66,13 @@ export function useInjectLib(packagesList: EPackagesType) {
63 66 addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Subtitle6Config)//小标题6
64 67 addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Subtitle7Config)//小标题7
65 68 addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Subtitle8Config)//小标题8
  69 + addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Subtitle9Config)//小标题9
66 70 addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Decorates07Config)//新增装饰07
67 71 addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Decorates08Config)//新增装饰08
68 72 addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Decorates09Config)//新增装饰09
69 73 addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Decorates10Config)//新增装饰10
  74 + addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Decorates11Config)//新增装饰11
  75 + addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, Decorates12Config)//新增装饰12
70 76 //
71 77
72 78 //信息
... ...
  1 +/**
  2 + * 判断浏览器是否支持webgl
  3 + */
  4 +
  5 +export const useDetectWebGLContext = () => {
  6 + const canvas = document.createElement('canvas')
  7 + const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl')
  8 + if (gl && gl instanceof WebGLRenderingContext) {
  9 + return true
  10 + } else {
  11 + return false
  12 + }
  13 +}
... ...