提交 370b12f5 作者: vben

feat: support echarts 5.0

上级 4d7001bb
## Wip ## Wip
## (破坏性更新) Breaking changes
- `echarts` 升级到 5.0,并且进行按需引入(只需使用 `useECharts` 即可).
### ✨ Refactor ### ✨ Refactor
- 移除`global.less`,`mixin.less`,`design/helper`,由`windicss`代替,有用到的需要修改对应的样式 - 移除`global.less`,`mixin.less`,`design/helper`,由`windicss`代替,有用到的需要修改对应的样式
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
"apexcharts": "^3.25.0", "apexcharts": "^3.25.0",
"axios": "^0.21.1", "axios": "^0.21.1",
"crypto-es": "^1.2.7", "crypto-es": "^1.2.7",
"echarts": "^4.9.0", "echarts": "^5.0.2",
"lodash-es": "^4.17.20", "lodash-es": "^4.17.20",
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
...@@ -54,7 +54,6 @@ ...@@ -54,7 +54,6 @@
"@iconify/json": "^1.1.303", "@iconify/json": "^1.1.303",
"@ls-lint/ls-lint": "^1.9.2", "@ls-lint/ls-lint": "^1.9.2",
"@purge-icons/generated": "^0.7.0", "@purge-icons/generated": "^0.7.0",
"@types/echarts": "^4.9.3",
"@types/fs-extra": "^9.0.7", "@types/fs-extra": "^9.0.7",
"@types/http-proxy": "^1.17.5", "@types/http-proxy": "^1.17.5",
"@types/koa-static": "^4.0.1", "@types/koa-static": "^4.0.1",
......
import { useTimeoutFn } from '/@/hooks/core/useTimeout'; import { useTimeoutFn } from '/@/hooks/core/useTimeout';
import { tryOnUnmounted } from '/@/utils/helper/vueHelper'; import { tryOnUnmounted } from '/@/utils/helper/vueHelper';
import { unref, Ref, nextTick } from 'vue'; import { unref, Ref, nextTick } from 'vue';
import type { EChartOption, ECharts } from 'echarts'; import type { EChartsType, EChartsOption } from 'echarts';
import echarts from 'echarts';
import { useDebounce } from '/@/hooks/core/useDebounce'; import { useDebounce } from '/@/hooks/core/useDebounce';
import { useEventListener } from '/@/hooks/event/useEventListener'; import { useEventListener } from '/@/hooks/event/useEventListener';
import { useBreakpoint } from '/@/hooks/event/useBreakpoint'; import { useBreakpoint } from '/@/hooks/event/useBreakpoint';
export type { EChartOption, ECharts }; import echarts from '/@/plugins/echarts';
export function useECharts( export function useECharts(
elRef: Ref<HTMLDivElement>, elRef: Ref<HTMLDivElement>,
theme: 'light' | 'dark' | 'default' = 'light' theme: 'light' | 'dark' | 'default' = 'light'
) { ) {
let chartInstance: Nullable<ECharts> = null; let chartInstance: Nullable<EChartsType> = null;
let resizeFn: Fn = resize; let resizeFn: Fn = resize;
let removeResizeFn: Fn = () => {}; let removeResizeFn: Fn = () => {};
const [debounceResize] = useDebounce(resize, 200); const [debounceResize] = useDebounce(resize, 200);
resizeFn = debounceResize; resizeFn = debounceResize;
function init() { function initCharts() {
const el = unref(elRef); const el = unref(elRef);
if (!el || !unref(el)) { if (!el || !unref(el)) {
return; return;
...@@ -40,7 +40,7 @@ export function useECharts( ...@@ -40,7 +40,7 @@ export function useECharts(
} }
} }
function setOptions(options: any, clear = true) { function setOptions(options: EChartsOption, clear = true) {
if (unref(elRef)?.offsetHeight === 0) { if (unref(elRef)?.offsetHeight === 0) {
useTimeoutFn(() => { useTimeoutFn(() => {
setOptions(options); setOptions(options);
...@@ -50,7 +50,7 @@ export function useECharts( ...@@ -50,7 +50,7 @@ export function useECharts(
nextTick(() => { nextTick(() => {
useTimeoutFn(() => { useTimeoutFn(() => {
if (!chartInstance) { if (!chartInstance) {
init(); initCharts();
if (!chartInstance) return; if (!chartInstance) return;
} }
...@@ -74,7 +74,7 @@ export function useECharts( ...@@ -74,7 +74,7 @@ export function useECharts(
return { return {
setOptions, setOptions,
echarts,
resize, resize,
echarts,
}; };
} }
import * as echarts from 'echarts/core';
import { BarChart, LineChart, PieChart, MapChart, PictorialBarChart } from 'echarts/charts';
import {
TitleComponent,
TooltipComponent,
GridComponent,
PolarComponent,
AriaComponent,
ParallelComponent,
} from 'echarts/components';
import { SVGRenderer } from 'echarts/renderers';
echarts.use([
TitleComponent,
TooltipComponent,
GridComponent,
PolarComponent,
AriaComponent,
ParallelComponent,
BarChart,
LineChart,
PieChart,
MapChart,
SVGRenderer,
PictorialBarChart,
]);
export default echarts;
...@@ -73,11 +73,8 @@ ...@@ -73,11 +73,8 @@
name: '产品一', name: '产品一',
type: 'line', type: 'line',
itemStyle: { itemStyle: {
normal: { color: '#5B8FF9',
color: '#5B8FF9',
},
}, },
// areaStyle: {},
data: [330, 132, 101, 134, 90, 230, 210, 150, 232, 234, 230, 400], data: [330, 132, 101, 134, 90, 230, 210, 150, 232, 234, 230, 400],
animationDuration: 4000, animationDuration: 4000,
}, },
...@@ -85,9 +82,7 @@ ...@@ -85,9 +82,7 @@
name: '产品二', name: '产品二',
type: 'line', type: 'line',
itemStyle: { itemStyle: {
normal: { color: '#55D187',
color: '#55D187',
},
}, },
data: [220, 182, 191, 234, 290, 330, 310, 330, 232, 201, 330, 190], data: [220, 182, 191, 234, 290, 330, 310, 330, 232, 201, 330, 190],
animationDuration: 4000, animationDuration: 4000,
......
...@@ -35,9 +35,8 @@ ...@@ -35,9 +35,8 @@
color: 'black', color: 'black',
}, },
textAlign: 'center', textAlign: 'center',
// @ts-ignore left: '34.5%',
x: '34.5%', top: '40%',
y: '40%',
}, },
], ],
tooltip: { tooltip: {
......
...@@ -15,9 +15,6 @@ ...@@ -15,9 +15,6 @@
onMounted(() => { onMounted(() => {
setOptions({ setOptions({
// title: {
// text: '产品成交额',
// },
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
padding: 3, padding: 3,
...@@ -38,7 +35,7 @@ ...@@ -38,7 +35,7 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
axisTick: { axisTick: {
inside: true, // 刻度朝内 inside: true,
}, },
data: [ data: [
'一月', '一月',
...@@ -58,7 +55,7 @@ ...@@ -58,7 +55,7 @@
yAxis: { yAxis: {
type: 'value', type: 'value',
axisTick: { axisTick: {
inside: true, // 刻度朝内 inside: true,
}, },
}, },
series: [ series: [
...@@ -69,8 +66,6 @@ ...@@ -69,8 +66,6 @@
color: '#5B8FF9', color: '#5B8FF9',
}, },
areaStyle: { areaStyle: {
// 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
// @ts-ignore
color: new echarts.graphic.LinearGradient( color: new echarts.graphic.LinearGradient(
0, 0,
0, 0,
...@@ -88,10 +83,9 @@ ...@@ -88,10 +83,9 @@
], ],
false false
), ),
shadowColor: 'rgba(118,168,248, 0.9)', // 阴影颜色 shadowColor: 'rgba(118,168,248, 0.9)',
shadowBlur: 20, // shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。 shadowBlur: 20,
}, },
// areaStyle: {},
data: [134, 330, 132, 101, 90, 230, 210, 150, 230, 400, 232, 234], data: [134, 330, 132, 101, 90, 230, 210, 150, 230, 400, 232, 234],
animationDuration: 3000, animationDuration: 3000,
}, },
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, PropType, ref, Ref, onMounted } from 'vue'; import { defineComponent, PropType, ref, Ref, onMounted } from 'vue';
import echarts from 'echarts';
import { useECharts } from '/@/hooks/web/useECharts'; import { useECharts } from '/@/hooks/web/useECharts';
import { getLineData } from './data'; import { getLineData } from './data';
...@@ -21,7 +20,7 @@ ...@@ -21,7 +20,7 @@
}, },
setup() { setup() {
const chartRef = ref<HTMLDivElement | null>(null); const chartRef = ref<HTMLDivElement | null>(null);
const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>); const { setOptions, echarts } = useECharts(chartRef as Ref<HTMLDivElement>);
const { barData, lineData, category } = getLineData; const { barData, lineData, category } = getLineData;
onMounted(() => { onMounted(() => {
setOptions({ setOptions({
...@@ -63,7 +62,7 @@ ...@@ -63,7 +62,7 @@
name: 'line', name: 'line',
type: 'line', type: 'line',
smooth: true, smooth: true,
showAllSymbol: true, showAllSymbol: 'auto',
symbol: 'emptyCircle', symbol: 'emptyCircle',
symbolSize: 15, symbolSize: 15,
data: lineData, data: lineData,
...@@ -73,13 +72,11 @@ ...@@ -73,13 +72,11 @@
type: 'bar', type: 'bar',
barWidth: 10, barWidth: 10,
itemStyle: { itemStyle: {
normal: { borderRadius: 5,
barBorderRadius: 5, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#14c8d4' },
{ offset: 0, color: '#14c8d4' }, { offset: 1, color: '#43eec6' },
{ offset: 1, color: '#43eec6' }, ]),
]),
},
}, },
data: barData, data: barData,
}, },
...@@ -89,13 +86,11 @@ ...@@ -89,13 +86,11 @@
barGap: '-100%', barGap: '-100%',
barWidth: 10, barWidth: 10,
itemStyle: { itemStyle: {
normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: 'rgba(20,200,212,0.5)' },
{ offset: 0, color: 'rgba(20,200,212,0.5)' }, { offset: 0.2, color: 'rgba(20,200,212,0.2)' },
{ offset: 0.2, color: 'rgba(20,200,212,0.2)' }, { offset: 1, color: 'rgba(20,200,212,0)' },
{ offset: 1, color: 'rgba(20,200,212,0)' }, ]),
]),
},
}, },
z: -12, z: -12,
data: lineData, data: lineData,
...@@ -105,9 +100,7 @@ ...@@ -105,9 +100,7 @@
type: 'pictorialBar', type: 'pictorialBar',
symbol: 'rect', symbol: 'rect',
itemStyle: { itemStyle: {
normal: { color: '#0f375f',
color: '#0f375f',
},
}, },
symbolRepeat: true, symbolRepeat: true,
symbolSize: [12, 4], symbolSize: [12, 4],
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
import { useECharts } from '/@/hooks/web/useECharts'; import { useECharts } from '/@/hooks/web/useECharts';
import { mapData } from './data'; import { mapData } from './data';
import { registerMap } from 'echarts';
import 'echarts/map/js/china';
export default defineComponent({ export default defineComponent({
props: { props: {
width: { width: {
...@@ -23,21 +23,25 @@ ...@@ -23,21 +23,25 @@
const chartRef = ref<HTMLDivElement | null>(null); const chartRef = ref<HTMLDivElement | null>(null);
const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>); const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
onMounted(() => { onMounted(async () => {
const json = (await (await import('./china.json')).default) as any;
registerMap('china', json);
setOptions({ setOptions({
visualMap: { visualMap: [
min: 0, {
max: 1000, min: 0,
left: 'left', max: 1000,
top: 'bottom', left: 'left',
text: ['高', '低'], top: 'bottom',
calculable: false, text: ['高', '低'],
orient: 'horizontal', calculable: false,
inRange: { orient: 'horizontal',
color: ['#e0ffff', '#006edd'], inRange: {
symbolSize: [30, 100], color: ['#e0ffff', '#006edd'],
symbolSize: [30, 100],
},
}, },
}, ],
tooltip: { tooltip: {
trigger: 'item', trigger: 'item',
backgroundColor: 'rgba(0, 0, 0, .6)', backgroundColor: 'rgba(0, 0, 0, .6)',
...@@ -50,33 +54,15 @@ ...@@ -50,33 +54,15 @@
{ {
name: 'iphone4', name: 'iphone4',
type: 'map', type: 'map',
mapType: 'china', map: 'china',
label: { label: {
normal: { show: true,
show: true, color: 'rgb(249, 249, 249)',
textStyle: { fontSize: 10,
color: 'rgb(249, 249, 249)',
fontSize: 10,
},
},
emphasis: {
show: true,
textStyle: {
color: 'rgb(249, 249, 249)',
fontSize: 14,
},
},
}, },
itemStyle: { itemStyle: {
normal: { areaColor: '#2f82ce',
label: { show: true }, borderColor: '#0DAAC1',
areaColor: '#2f82ce',
borderColor: '#0DAAC1',
},
emphasis: {
label: { show: true },
areaColor: '#2f82ce',
},
}, },
data: mapData, data: mapData,
}, },
......
...@@ -39,24 +39,33 @@ ...@@ -39,24 +39,33 @@
title: [ title: [
{ {
text: '各渠道投诉占比', text: '各渠道投诉占比',
x: '2%', left: '2%',
y: '1%', top: '1%',
textStyle: { color: '#fff', fontSize: 14 }, textStyle: {
color: '#fff',
fontSize: 14,
},
}, },
{ {
text: '投诉原因TOP10', text: '投诉原因TOP10',
x: '40%', left: '40%',
y: '1%', top: '1%',
textStyle: { color: '#fff', fontSize: 14 }, textStyle: {
color: '#fff',
fontSize: 14,
},
}, },
{ {
text: '各级别投诉占比', text: '各级别投诉占比',
x: '2%', left: '2%',
y: '50%', top: '50%',
textStyle: { color: '#fff', fontSize: 14 }, textStyle: {
color: '#fff',
fontSize: 14,
},
}, },
], ],
grid: [{ x: '50%', y: '7%', width: '45%', height: '90%' }], grid: [{ left: '50%', top: '7%', width: '45%', height: '90%' }],
tooltip: { tooltip: {
formatter: '{b} ({c})', formatter: '{b} ({c})',
}, },
...@@ -86,7 +95,6 @@ ...@@ -86,7 +95,6 @@
type: 'pie', type: 'pie',
radius: '30%', radius: '30%',
center: ['22%', '25%'], center: ['22%', '25%'],
color: ['#86c9f4', '#4da8ec', '#3a91d2', '#005fa6', '#315f97'],
data: [ data: [
{ value: 335, name: '客服电话' }, { value: 335, name: '客服电话' },
{ value: 310, name: '奥迪官网' }, { value: 310, name: '奥迪官网' },
...@@ -94,15 +102,11 @@ ...@@ -94,15 +102,11 @@
{ value: 135, name: '质检总局' }, { value: 135, name: '质检总局' },
{ value: 105, name: '其他' }, { value: 105, name: '其他' },
], ],
labelLine: { normal: { show: false } }, labelLine: { show: false },
itemStyle: { label: {
normal: { show: true,
label: { formatter: '{b} \n ({d}%)',
show: true, color: '#B1B9D3',
formatter: '{b} \n ({d}%)',
textStyle: { color: '#B1B9D3' },
},
},
}, },
}, },
{ {
...@@ -110,22 +114,17 @@ ...@@ -110,22 +114,17 @@
type: 'pie', type: 'pie',
radius: '30%', radius: '30%',
center: ['22%', '75%'], center: ['22%', '75%'],
color: ['#86c9f4', '#4da8ec', '#3a91d2', '#005fa6', '#315f97'], labelLine: { show: false },
labelLine: { normal: { show: false } },
data: [ data: [
{ value: 335, name: 'A级' }, { value: 335, name: 'A级' },
{ value: 310, name: 'B级' }, { value: 310, name: 'B级' },
{ value: 234, name: 'C级' }, { value: 234, name: 'C级' },
{ value: 135, name: 'D级' }, { value: 135, name: 'D级' },
], ],
itemStyle: { label: {
normal: { show: true,
label: { formatter: '{b} \n ({d}%)',
show: true, color: '#B1B9D3',
formatter: '{b} \n ({d}%)',
textStyle: { color: '#B1B9D3' },
},
},
}, },
}, },
{ {
...@@ -134,8 +133,8 @@ ...@@ -134,8 +133,8 @@
xAxisIndex: 0, xAxisIndex: 0,
yAxisIndex: 0, yAxisIndex: 0,
barWidth: '45%', barWidth: '45%',
itemStyle: { normal: { color: '#86c9f4' } }, itemStyle: { color: '#86c9f4' },
label: { normal: { show: true, position: 'right', textStyle: { color: '#9EA7C4' } } }, label: { show: true, position: 'right', color: '#9EA7C4' },
data: dataAll.sort(), data: dataAll.sort(),
}, },
], ],
......
...@@ -1447,13 +1447,6 @@ ...@@ -1447,13 +1447,6 @@
"@types/keygrip" "*" "@types/keygrip" "*"
"@types/node" "*" "@types/node" "*"
"@types/echarts@^4.9.3":
version "4.9.3"
resolved "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.3.tgz#8a143cf315f6ae88d0778d75a133b378974d37d5"
integrity sha512-CbgZUYdLy1G2BhCI6maBwVXmrqIx/D8KwUccMXQ9W2uyXNMjBvpIRXSs+UaBtvUihPV2f0g7LGj/yua1iY0VbQ==
dependencies:
"@types/zrender" "*"
"@types/estree@0.0.39": "@types/estree@0.0.39":
version "0.0.39" version "0.0.39"
resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
...@@ -1749,11 +1742,6 @@ ...@@ -1749,11 +1742,6 @@
dependencies: dependencies:
"@types/yargs-parser" "*" "@types/yargs-parser" "*"
"@types/zrender@*":
version "4.0.0"
resolved "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.0.tgz#a6806f12ec4eccaaebd9b0d816f049aca6188fbd"
integrity sha512-s89GOIeKFiod2KSqHkfd2rzx+T2DVu7ihZCBEBnhFrzvQPUmzvDSBot9Fi1DfMQm9Odg+rTqoMGC38RvrwJK2w==
"@types/zxcvbn@^4.4.0": "@types/zxcvbn@^4.4.0":
version "4.4.0" version "4.4.0"
resolved "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.0.tgz#fbc1d941cc6d9d37d18405c513ba6b294f89b609" resolved "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.0.tgz#fbc1d941cc6d9d37d18405c513ba6b294f89b609"
...@@ -3809,12 +3797,13 @@ duplexer3@^0.1.4: ...@@ -3809,12 +3797,13 @@ duplexer3@^0.1.4:
resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
echarts@^4.9.0: echarts@^5.0.2:
version "4.9.0" version "5.0.2"
resolved "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz#a9b9baa03f03a2a731e6340c55befb57a9e1347d" resolved "https://registry.npmjs.org/echarts/-/echarts-5.0.2.tgz#1726d17a57cf05d62cd0567b4325e1201a56baf6"
integrity sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA== integrity sha512-En0VYpc96nw2/2AZoBWPHsGi471zMublttj50kfFpYAeR4geup0Tj9iVgEXh7QYZFPnRiruDJEjcB5PXZ+BYzQ==
dependencies: dependencies:
zrender "4.3.2" tslib "2.0.3"
zrender "5.0.4"
ecstatic@4.1.4, ecstatic@^3.3.2: ecstatic@4.1.4, ecstatic@^3.3.2:
version "4.1.4" version "4.1.4"
...@@ -8942,6 +8931,11 @@ ts-node@^9.1.1: ...@@ -8942,6 +8931,11 @@ ts-node@^9.1.1:
source-map-support "^0.5.17" source-map-support "^0.5.17"
yn "3.1.1" yn "3.1.1"
tslib@2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c"
integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1" version "1.14.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
...@@ -9873,10 +9867,12 @@ yocto-queue@^0.1.0: ...@@ -9873,10 +9867,12 @@ yocto-queue@^0.1.0:
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
zrender@4.3.2: zrender@5.0.4:
version "4.3.2" version "5.0.4"
resolved "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz#ec7432f9415c82c73584b6b7b8c47e1b016209c6" resolved "https://registry.npmjs.org/zrender/-/zrender-5.0.4.tgz#89c355af908b9f64a301b38f751b7951f2c8a95a"
integrity sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g== integrity sha512-DJpy0yrHYY5CuH6vhb9IINWbjvBUe/56J8aH86Jb7O8rRPAYZ3M2E469Qf5B3EOIfM3o3aUrO5edRQfLJ+l1Qw==
dependencies:
tslib "2.0.3"
zwitch@^1.0.0: zwitch@^1.0.0:
version "1.0.5" version "1.0.5"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论