|
@@ -2,6 +2,7 @@
|
|
|
<div>
|
|
<div>
|
|
|
<!-- Echarts 全局设置 -->
|
|
<!-- Echarts 全局设置 -->
|
|
|
<global-setting :optionData="optionData" :in-chart="true"></global-setting>
|
|
<global-setting :optionData="optionData" :in-chart="true"></global-setting>
|
|
|
|
|
+
|
|
|
<CollapseItem name="雷达" :expanded="true">
|
|
<CollapseItem name="雷达" :expanded="true">
|
|
|
<SettingItemBox name="样式">
|
|
<SettingItemBox name="样式">
|
|
|
<SettingItem>
|
|
<SettingItem>
|
|
@@ -11,9 +12,65 @@
|
|
|
<n-checkbox v-model:checked="radarConfig.splitLine.show">分割线</n-checkbox>
|
|
<n-checkbox v-model:checked="radarConfig.splitLine.show">分割线</n-checkbox>
|
|
|
</SettingItem>
|
|
</SettingItem>
|
|
|
<SettingItem name="雷达形状">
|
|
<SettingItem name="雷达形状">
|
|
|
- <n-select v-model:value="radarConfig.shape" :options="RadarShapeEnumList" placeholder="选择形状" />
|
|
|
|
|
|
|
+ <n-select v-model:value="radarConfig.shape" size="small" :options="RadarShapeEnumList" placeholder="选择形状" />
|
|
|
|
|
+ </SettingItem>
|
|
|
|
|
+ </SettingItemBox>
|
|
|
|
|
+
|
|
|
|
|
+ <SettingItemBox name="坐标轴">
|
|
|
|
|
+ <SettingItem>
|
|
|
|
|
+ <n-checkbox v-model:checked="radarConfig.axisLine.show">轴线</n-checkbox>
|
|
|
|
|
+ </SettingItem>
|
|
|
|
|
+ <SettingItem>
|
|
|
|
|
+ <n-checkbox v-model:checked="radarConfig.axisTick.show">刻度</n-checkbox>
|
|
|
</SettingItem>
|
|
</SettingItem>
|
|
|
</SettingItemBox>
|
|
</SettingItemBox>
|
|
|
|
|
+
|
|
|
|
|
+ <SettingItemBox name="范围">
|
|
|
|
|
+ <setting-item :name="`最小值:${radarProp.radius[0]}%`">
|
|
|
|
|
+ <!-- 透明度 -->
|
|
|
|
|
+ <n-slider
|
|
|
|
|
+ v-model:value="radarProp.radius[0]"
|
|
|
|
|
+ :min="0"
|
|
|
|
|
+ :max="100"
|
|
|
|
|
+ :format-tooltip="sliderFormatTooltip"
|
|
|
|
|
+ @update:value="updateRadius0"
|
|
|
|
|
+ ></n-slider>
|
|
|
|
|
+ </setting-item>
|
|
|
|
|
+ <setting-item :name="`最大值:${radarProp.radius[1]}%`">
|
|
|
|
|
+ <!-- 透明度 -->
|
|
|
|
|
+ <n-slider
|
|
|
|
|
+ v-model:value="radarProp.radius[1]"
|
|
|
|
|
+ :min="0"
|
|
|
|
|
+ :max="100"
|
|
|
|
|
+ :format-tooltip="sliderFormatTooltip"
|
|
|
|
|
+ @update:value="updateRadius1"
|
|
|
|
|
+ ></n-slider>
|
|
|
|
|
+ </setting-item>
|
|
|
|
|
+ </SettingItemBox>
|
|
|
|
|
+
|
|
|
|
|
+ <SettingItemBox name="偏移">
|
|
|
|
|
+ <setting-item :name="`X 轴值:${radarProp.center[0]}%`">
|
|
|
|
|
+ <!-- 透明度 -->
|
|
|
|
|
+ <n-slider
|
|
|
|
|
+ v-model:value="radarProp.center[0]"
|
|
|
|
|
+ :min="0"
|
|
|
|
|
+ :max="100"
|
|
|
|
|
+ :format-tooltip="sliderFormatTooltip"
|
|
|
|
|
+ @update:value="updateCenter0"
|
|
|
|
|
+ ></n-slider>
|
|
|
|
|
+ </setting-item>
|
|
|
|
|
+ <setting-item :name="`Y 轴值:${radarProp.center[1]}%`">
|
|
|
|
|
+ <!-- 透明度 -->
|
|
|
|
|
+ <n-slider
|
|
|
|
|
+ v-model:value="radarProp.center[1]"
|
|
|
|
|
+ :min="0"
|
|
|
|
|
+ :max="100"
|
|
|
|
|
+ :format-tooltip="sliderFormatTooltip"
|
|
|
|
|
+ @update:value="updateCenter1"
|
|
|
|
|
+ ></n-slider>
|
|
|
|
|
+ </setting-item>
|
|
|
|
|
+ </SettingItemBox>
|
|
|
|
|
+
|
|
|
<SettingItemBox name="指示器">
|
|
<SettingItemBox name="指示器">
|
|
|
<SettingItem name="颜色">
|
|
<SettingItem name="颜色">
|
|
|
<n-color-picker size="small" :modes="['hex']" v-model:value="radarConfig.axisName.color"></n-color-picker>
|
|
<n-color-picker size="small" :modes="['hex']" v-model:value="radarConfig.axisName.color"></n-color-picker>
|
|
@@ -25,14 +82,7 @@
|
|
|
<n-checkbox v-model:checked="radarConfig.axisName.show">文字标签</n-checkbox>
|
|
<n-checkbox v-model:checked="radarConfig.axisName.show">文字标签</n-checkbox>
|
|
|
</SettingItem>
|
|
</SettingItem>
|
|
|
</SettingItemBox>
|
|
</SettingItemBox>
|
|
|
- <SettingItemBox name="坐标轴">
|
|
|
|
|
- <SettingItem>
|
|
|
|
|
- <n-checkbox v-model:checked="radarConfig.axisLine.show">轴线</n-checkbox>
|
|
|
|
|
- </SettingItem>
|
|
|
|
|
- <SettingItem>
|
|
|
|
|
- <n-checkbox v-model:checked="radarConfig.axisTick.show">刻度</n-checkbox>
|
|
|
|
|
- </SettingItem>
|
|
|
|
|
- </SettingItemBox>
|
|
|
|
|
|
|
+
|
|
|
<SettingItemBox name="系列" :alone="true">
|
|
<SettingItemBox name="系列" :alone="true">
|
|
|
<SettingItem name="背景透明度">
|
|
<SettingItem name="背景透明度">
|
|
|
<n-input-number
|
|
<n-input-number
|
|
@@ -49,19 +99,46 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import { PropType, computed } from 'vue'
|
|
|
|
|
|
|
+import { PropType, computed, reactive } from 'vue'
|
|
|
import { GlobalSetting, CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
|
|
import { GlobalSetting, CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
|
|
|
-import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
|
|
|
|
|
-import { RadarShapeEnumList } from './config'
|
|
|
|
|
|
|
+import { option, RadarShapeEnumList } from './config'
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
|
optionData: {
|
|
optionData: {
|
|
|
- type: Object as PropType<GlobalThemeJsonType>,
|
|
|
|
|
|
|
+ type: Object as PropType<typeof option>,
|
|
|
required: true
|
|
required: true
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
-const radarConfig = computed(() => {
|
|
|
|
|
|
|
+const radarConfig = computed<typeof option.radar>(() => {
|
|
|
return props.optionData.radar
|
|
return props.optionData.radar
|
|
|
})
|
|
})
|
|
|
|
|
+
|
|
|
|
|
+const radarProp = reactive({
|
|
|
|
|
+ radius: [0, 60],
|
|
|
|
|
+ center: [50, 50]
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+// 更新处理
|
|
|
|
|
+const updateRadius0 = (value: number) => {
|
|
|
|
|
+ props.optionData.radar.radius[0] = `${value}%`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const updateRadius1 = (value: number) => {
|
|
|
|
|
+ props.optionData.radar.radius[1] = `${value}%`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 更新处理
|
|
|
|
|
+const updateCenter0 = (value: number) => {
|
|
|
|
|
+ props.optionData.radar.center[0] = `${value}%`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const updateCenter1 = (value: number) => {
|
|
|
|
|
+ props.optionData.radar.center[1] = `${value}%`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 百分比格式化 percent
|
|
|
|
|
+const sliderFormatTooltip = (v: number) => {
|
|
|
|
|
+ return `${v}%`
|
|
|
|
|
+}
|
|
|
</script>
|
|
</script>
|