Commit 5fa02845e9f15ec2e842b3ed3beabffb41245fa9
1 parent
569644df
feat(src/packages): 自定义远程网页和加载组态组件,新增全屏按钮自定义颜色
Showing
6 changed files
with
71 additions
and
29 deletions
| @@ -6,13 +6,17 @@ import cloneDeep from 'lodash/cloneDeep' | @@ -6,13 +6,17 @@ import cloneDeep from 'lodash/cloneDeep' | ||
| 6 | 6 | ||
| 7 | export const option = { | 7 | export const option = { |
| 8 | // 网站路径 | 8 | // 网站路径 |
| 9 | - dataset: "", | 9 | + dataset: '', |
| 10 | // 圆角 | 10 | // 圆角 |
| 11 | - borderRadius: 10 | 11 | + borderRadius: 10, |
| 12 | + pages: { | ||
| 13 | + page: 1, | ||
| 14 | + pageSize: 10 | ||
| 15 | + }, | ||
| 16 | + color: 'black' | ||
| 12 | } | 17 | } |
| 13 | 18 | ||
| 14 | -export default class Config extends PublicConfigClass implements CreateComponentType | ||
| 15 | -{ | 19 | +export default class Config extends PublicConfigClass implements CreateComponentType { |
| 16 | public key = OverrideILoadConfigurationframeConfig.key | 20 | public key = OverrideILoadConfigurationframeConfig.key |
| 17 | public attr = { ...chartInitConfig, w: 1200, h: 800, zIndex: -1 } | 21 | public attr = { ...chartInitConfig, w: 1200, h: 800, zIndex: -1 } |
| 18 | public chartConfig = cloneDeep(OverrideILoadConfigurationframeConfig) | 22 | public chartConfig = cloneDeep(OverrideILoadConfigurationframeConfig) |
| @@ -15,16 +15,38 @@ | @@ -15,16 +15,38 @@ | ||
| 15 | ></n-input-number> | 15 | ></n-input-number> |
| 16 | </setting-item> | 16 | </setting-item> |
| 17 | </setting-item-box> | 17 | </setting-item-box> |
| 18 | + <setting-item-box name="分页"> | ||
| 19 | + <setting-item name="页码"> | ||
| 20 | + <n-input-number v-model:value="optionData.pages.page" size="small" :min="1" placeholder="页码"></n-input-number> | ||
| 21 | + </setting-item> | ||
| 22 | + <setting-item name="页数"> | ||
| 23 | + <n-input-number | ||
| 24 | + disabled | ||
| 25 | + v-model:value="optionData.pages.pageSize" | ||
| 26 | + size="small" | ||
| 27 | + :min="10" | ||
| 28 | + placeholder="页数" | ||
| 29 | + ></n-input-number> | ||
| 30 | + </setting-item> | ||
| 31 | + </setting-item-box> | ||
| 32 | + <setting-item-box name="颜色" :alone="true"> | ||
| 33 | + <SettingItem name="颜色"> | ||
| 34 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.color"></n-color-picker> | ||
| 35 | + </SettingItem> | ||
| 36 | + <SettingItem> | ||
| 37 | + <n-button size="small" @click="optionData.color = 'black'"> 恢复默认 </n-button> | ||
| 38 | + </SettingItem> | ||
| 39 | + </setting-item-box> | ||
| 18 | </collapse-item> | 40 | </collapse-item> |
| 19 | </template> | 41 | </template> |
| 20 | 42 | ||
| 21 | <script setup lang="ts"> | 43 | <script setup lang="ts"> |
| 22 | -import { PropType, onMounted, ref } from 'vue' | 44 | +import { PropType, onMounted, ref, watch } from 'vue' |
| 23 | import { option } from './config' | 45 | import { option } from './config' |
| 24 | import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | 46 | import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' |
| 25 | import { getConfigurationList } from '@/api/external/common/index' | 47 | import { getConfigurationList } from '@/api/external/common/index' |
| 26 | 48 | ||
| 27 | -defineProps({ | 49 | +const props = defineProps({ |
| 28 | optionData: { | 50 | optionData: { |
| 29 | type: Object as PropType<typeof option>, | 51 | type: Object as PropType<typeof option>, |
| 30 | required: true | 52 | required: true |
| @@ -40,7 +62,18 @@ const getConfigurationOptions = async (params: object) => { | @@ -40,7 +62,18 @@ const getConfigurationOptions = async (params: object) => { | ||
| 40 | } | 62 | } |
| 41 | } | 63 | } |
| 42 | 64 | ||
| 65 | +watch( | ||
| 66 | + () => props.optionData.pages, | ||
| 67 | + (newData: any) => { | ||
| 68 | + getConfigurationOptions({ page: newData.page, pageSize: newData.pageSize }) | ||
| 69 | + }, | ||
| 70 | + { | ||
| 71 | + deep: true, | ||
| 72 | + immediate: true | ||
| 73 | + } | ||
| 74 | +) | ||
| 75 | + | ||
| 43 | onMounted(() => { | 76 | onMounted(() => { |
| 44 | - getConfigurationOptions({ page: 1, pageSize: 10 }) | 77 | + getConfigurationOptions({ page: props.optionData.pages.page, pageSize: props.optionData.pages.pageSize }) |
| 45 | }) | 78 | }) |
| 46 | </script> | 79 | </script> |
| @@ -3,9 +3,9 @@ | @@ -3,9 +3,9 @@ | ||
| 3 | <div v-show="isShowSvg" @click="handleFullScreen" id="fullscreenButton"> | 3 | <div v-show="isShowSvg" @click="handleFullScreen" id="fullscreenButton"> |
| 4 | <svg | 4 | <svg |
| 5 | focusable="false" | 5 | focusable="false" |
| 6 | - class="" | ||
| 7 | data-icon="fullscreen" | 6 | data-icon="fullscreen" |
| 8 | width="4vw" | 7 | width="4vw" |
| 8 | + :style="`color:${color}`" | ||
| 9 | height="4vh" | 9 | height="4vh" |
| 10 | fill="currentColor" | 10 | fill="currentColor" |
| 11 | aria-hidden="true" | 11 | aria-hidden="true" |
| @@ -35,8 +35,7 @@ import { useChartDataFetch } from '@/hooks' | @@ -35,8 +35,7 @@ import { useChartDataFetch } from '@/hooks' | ||
| 35 | import { CreateComponentType } from '@/packages/index.d' | 35 | import { CreateComponentType } from '@/packages/index.d' |
| 36 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 36 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
| 37 | import { useFullScreen } from '@/packages/components/external/Charts/utls/fullScreen' | 37 | import { useFullScreen } from '@/packages/components/external/Charts/utls/fullScreen' |
| 38 | -import { isDevMode } from '@/utils/external/env'; | ||
| 39 | - | 38 | +import { isDevMode } from '@/utils/external/env' |
| 40 | 39 | ||
| 41 | const props = defineProps({ | 40 | const props = defineProps({ |
| 42 | chartConfig: { | 41 | chartConfig: { |
| @@ -50,7 +49,7 @@ const isShowSvg = ref(false) | @@ -50,7 +49,7 @@ const isShowSvg = ref(false) | ||
| 50 | const allowfullscreen = ref(false) | 49 | const allowfullscreen = ref(false) |
| 51 | 50 | ||
| 52 | const { w, h } = toRefs(props.chartConfig.attr) | 51 | const { w, h } = toRefs(props.chartConfig.attr) |
| 53 | -const { borderRadius } = toRefs(props.chartConfig.option) | 52 | +const { borderRadius, color } = toRefs(props.chartConfig.option) |
| 54 | 53 | ||
| 55 | const option = shallowReactive({ | 54 | const option = shallowReactive({ |
| 56 | dataset: '' | 55 | dataset: '' |
| @@ -63,7 +62,7 @@ const getStyle = (radius: number) => { | @@ -63,7 +62,7 @@ const getStyle = (radius: number) => { | ||
| 63 | } | 62 | } |
| 64 | } | 63 | } |
| 65 | 64 | ||
| 66 | -const isDev = isDevMode(); | 65 | +const isDev = isDevMode() |
| 67 | 66 | ||
| 68 | // 编辑更新 | 67 | // 编辑更新 |
| 69 | watch( | 68 | watch( |
| @@ -72,7 +71,9 @@ watch( | @@ -72,7 +71,9 @@ watch( | ||
| 72 | const currentHost = window.location.host | 71 | const currentHost = window.location.host |
| 73 | const currentProtocol = window.location.protocol | 72 | const currentProtocol = window.location.protocol |
| 74 | //预览 | 73 | //预览 |
| 75 | - option.dataset = `${currentProtocol}//${currentHost}/thingskit-scada/${isDev ? '?dev=1&' : '?'}configurationId=${newData}&lightbox=1` | 74 | + option.dataset = `${currentProtocol}//${currentHost}/thingskit-scada/${ |
| 75 | + isDev ? '?dev=1&' : '?' | ||
| 76 | + }configurationId=${newData}&lightbox=1` | ||
| 76 | }, | 77 | }, |
| 77 | { | 78 | { |
| 78 | immediate: true | 79 | immediate: true |
| @@ -6,13 +6,13 @@ import cloneDeep from 'lodash/cloneDeep' | @@ -6,13 +6,13 @@ import cloneDeep from 'lodash/cloneDeep' | ||
| 6 | 6 | ||
| 7 | export const option = { | 7 | export const option = { |
| 8 | // 网站路径 | 8 | // 网站路径 |
| 9 | - dataset: "https://www.thingskit.com/", | 9 | + dataset: 'https://www.thingskit.com/', |
| 10 | // 圆角 | 10 | // 圆角 |
| 11 | - borderRadius: 10 | 11 | + borderRadius: 10, |
| 12 | + color: 'black' | ||
| 12 | } | 13 | } |
| 13 | 14 | ||
| 14 | -export default class Config extends PublicConfigClass implements CreateComponentType | ||
| 15 | -{ | 15 | +export default class Config extends PublicConfigClass implements CreateComponentType { |
| 16 | public key = OverrideIframeConfig.key | 16 | public key = OverrideIframeConfig.key |
| 17 | public attr = { ...chartInitConfig, w: 1200, h: 800, zIndex: -1 } | 17 | public attr = { ...chartInitConfig, w: 1200, h: 800, zIndex: -1 } |
| 18 | public chartConfig = cloneDeep(OverrideIframeConfig) | 18 | public chartConfig = cloneDeep(OverrideIframeConfig) |
| @@ -15,22 +15,26 @@ | @@ -15,22 +15,26 @@ | ||
| 15 | ></n-input-number> | 15 | ></n-input-number> |
| 16 | </setting-item> | 16 | </setting-item> |
| 17 | </setting-item-box> | 17 | </setting-item-box> |
| 18 | + <setting-item-box name="颜色" :alone="true"> | ||
| 19 | + <SettingItem name="颜色"> | ||
| 20 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.color"></n-color-picker> | ||
| 21 | + </SettingItem> | ||
| 22 | + <SettingItem> | ||
| 23 | + <n-button size="small" @click="optionData.color = 'black'"> 恢复默认 </n-button> | ||
| 24 | + </SettingItem> | ||
| 25 | + </setting-item-box> | ||
| 18 | </collapse-item> | 26 | </collapse-item> |
| 19 | </template> | 27 | </template> |
| 20 | 28 | ||
| 21 | <script setup lang="ts"> | 29 | <script setup lang="ts"> |
| 22 | -import { PropType } from "vue"; | ||
| 23 | -import { option } from "./config"; | ||
| 24 | -import { | ||
| 25 | - CollapseItem, | ||
| 26 | - SettingItemBox, | ||
| 27 | - SettingItem, | ||
| 28 | -} from "@/components/Pages/ChartItemSetting"; | 30 | +import { PropType } from 'vue' |
| 31 | +import { option } from './config' | ||
| 32 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | ||
| 29 | 33 | ||
| 30 | const props = defineProps({ | 34 | const props = defineProps({ |
| 31 | optionData: { | 35 | optionData: { |
| 32 | type: Object as PropType<typeof option>, | 36 | type: Object as PropType<typeof option>, |
| 33 | - required: true, | ||
| 34 | - }, | ||
| 35 | -}); | 37 | + required: true |
| 38 | + } | ||
| 39 | +}) | ||
| 36 | </script> | 40 | </script> |
| @@ -3,9 +3,9 @@ | @@ -3,9 +3,9 @@ | ||
| 3 | <div v-show="isShowSvg" @click="handleFullScreen" id="fullscreenButton"> | 3 | <div v-show="isShowSvg" @click="handleFullScreen" id="fullscreenButton"> |
| 4 | <svg | 4 | <svg |
| 5 | focusable="false" | 5 | focusable="false" |
| 6 | - class="" | ||
| 7 | data-icon="fullscreen" | 6 | data-icon="fullscreen" |
| 8 | width="4vw" | 7 | width="4vw" |
| 8 | + :style="`color:${color}`" | ||
| 9 | height="4vh" | 9 | height="4vh" |
| 10 | fill="currentColor" | 10 | fill="currentColor" |
| 11 | aria-hidden="true" | 11 | aria-hidden="true" |
| @@ -48,7 +48,7 @@ const isShowSvg = ref(false) | @@ -48,7 +48,7 @@ const isShowSvg = ref(false) | ||
| 48 | const allowfullscreen = ref(false) | 48 | const allowfullscreen = ref(false) |
| 49 | 49 | ||
| 50 | const { w, h } = toRefs(props.chartConfig.attr) | 50 | const { w, h } = toRefs(props.chartConfig.attr) |
| 51 | -const { borderRadius } = toRefs(props.chartConfig.option) | 51 | +const { borderRadius, color } = toRefs(props.chartConfig.option) |
| 52 | 52 | ||
| 53 | const option = shallowReactive({ | 53 | const option = shallowReactive({ |
| 54 | dataset: '' | 54 | dataset: '' |