/* * @description: 此处是业务组件的代码案例 * @Date: 2023-06-06 15:45:07 */ // vue 组件片段 export const defaultEchartsVueContent = ` <!-- 这是一个代码案例 --> <template> <div :id="chatId" style="width: 100%;height: 100%" /> </template> <script> export default { name: 'TestA', components: { }, // 业务组件提供的props props: { config: { type: Object, default: () => ({}) } }, data () { return { chart: null, } }, // 计算属性 computed: { chatId(){ return 'echarts' + this.config.code } }, methods: { //响应式变化组件大小方法,无需改动 onResize () { this.chart.resize({ animation: { duration: 300, easing: 'linear' // delay: 500, } }) }, // 初始化图表 newChart (config) { let option = config.option const xList=config.option.data.map(item=> item[config.option.xField]) const yList=config.option.data.map(item=> item[config.option.yField]) option.xAxis.data=xList option.series[0].data=yList const dom = document.getElementById(this.chatId) this.chart = config.echarts.init(dom) this.chart.setOption(option,true) }, }, mounted(){ this.newChart(this.config) //响应式变化组件大小,无需改动 const dragSelect = document.querySelector("#"+this.chatId) let pre = Date.now() const wait = 300 const resizeObserver = new ResizeObserver(entries => { const now = Date.now() if (now - pre >= wait) { setTimeout(() => { this.onResize() }, wait) pre = Date.now() } }) resizeObserver.observe(dragSelect) }, } </script> <style lang="scss" scoped> // 此处书写样式,支持scss </style> ` // 配置 片段 export const defaultEchartsSettingContent = ` // 这是一个配置案例 // 组件备注名称 const title = 'echarts案例' // 右侧配置项 const setting = [ { label: '维度', // 设置组件类型, select / input / colorPicker type: 'select', // 字段 field: 'xField', optionField: 'xField', // 对应options中的字段 // 是否多选 multiple: false, // 绑定的值 value: '', // tab页。 data: 数据, custom: 自定义 tabName: 'data' }, { label: '指标', // 设置组件类型 type: 'select', // 字段 field: 'yField', // 对应options中的字段 optionField: 'yField', // 是否多选 multiple: false, value: '', tabName: 'data' }, { label: '柱形颜色', type: 'colorPicker', field: 'color', optionField: 'color', value: '#007aff', tabName: 'custom', groupName: 'graph' }, { label: 'x轴类型', type: 'input', field: 'xAxis_type', optionField: 'xAxis.type', value: 'category', tabName: 'custom', groupName: 'xAxis' }, { label: '是否显示标签', type: 'switch', field: 'xAxis_axisLabel_show', optionField: 'xAxis.axisLabel.show', value: true, tabName: 'custom', groupName: 'xAxis' }, { label: '标签旋转角度', type: 'inputNumber', field: 'xAxis_axisLabel_rotate', optionField: 'xAxis.axisLabel.rotate', value: 0, tabName: 'custom', groupName: 'xAxis' }, { label: '标签颜色', type: 'colorPicker', field: 'xAxis_axisLabel_color', optionField: 'xAxis.axisLabel.color', value: '#fff', tabName: 'custom', groupName: 'xAxis' }, { label: 'y轴类型', type: 'input', field: 'yAxis_type', optionField: 'yAxis.type', value: 'value', tabName: 'custom', groupName: 'yAxis' } ] // 模拟数据 const data = [ { Date: '2010-01', scales: 1998 }, { Date: '2010-02', scales: 1850 }, { Date: '2010-03', scales: 1720 }, { Date: '2010-04', scales: 1818 }, { Date: '2010-05', scales: 1920 }, { Date: '2010-06', scales: 1802 }, { Date: '2010-07', scales: 1945 }, { Date: '2010-08', scales: 1856 }, { Date: '2010-09', scales: 2107 }, { Date: '2010-10', scales: 2140 } ] const option = { // 数据将要放入到哪个字段中 dataKey: 'data', data, //柱状图颜色 color: '#007aff', appendPadding: [16, 16, 16, 16], // 设置图标的边距 xField: 'Date', yField: 'scales', xAxis: { type:'category', data: [], axisLabel:{ show:true, color:'#fff', rotate:0 } }, yAxis: { type: 'value' }, series:[ { data: [], type: 'bar', backgroundStyle: { color: '#fff' } } ] } export default { title, option, setting } `