Commit e05967b814e9f51b9c983af31bbdb8a594b2dc7f
1 parent
96bcfa6d
电子站牌项目
1、添加线路模拟图列表组件 2、修正线路模拟图作为自组件使用时尺寸变化的一些逻辑 3、修改index.js,添加线路模拟图列表组件定义
Showing
4 changed files
with
489 additions
and
11 deletions
front-end/h5/src/components/core/plugins/bsth/bsth-line-char-list_testData.js
0 → 100644
| 1 | +/* eslint-disable */ | |
| 2 | +/** | |
| 3 | + * 线路模拟图列表数据。 | |
| 4 | + */ | |
| 5 | +export default { | |
| 6 | + lineRouteList: [ | |
| 7 | + { // 测试线路1 | |
| 8 | + lineName: '测试线路1', | |
| 9 | + lineCode: '线路编码1', | |
| 10 | + directions: 0, | |
| 11 | + stationRouteCode: 10, | |
| 12 | + stationCode: 'ACODE', | |
| 13 | + stationName: 'A起点站', | |
| 14 | + stationMark: 'B' | |
| 15 | + }, { | |
| 16 | + lineName: '测试线路1', | |
| 17 | + lineCode: '线路编码1', | |
| 18 | + directions: 0, | |
| 19 | + stationRouteCode: 20, | |
| 20 | + stationCode: 'BCODE', | |
| 21 | + stationName: 'B中途站', | |
| 22 | + stationMark: 'Z' | |
| 23 | + }, { | |
| 24 | + lineName: '测试线路1', | |
| 25 | + lineCode: '线路编码1', | |
| 26 | + directions: 0, | |
| 27 | + stationRouteCode: 30, | |
| 28 | + stationCode: 'CCODE', | |
| 29 | + stationName: 'C中途站', | |
| 30 | + stationMark: 'Z' | |
| 31 | + }, { | |
| 32 | + lineName: '测试线路1', | |
| 33 | + lineCode: '线路编码1', | |
| 34 | + directions: 0, | |
| 35 | + stationRouteCode: 40, | |
| 36 | + stationCode: 'DCODE', | |
| 37 | + stationName: 'D中途站', | |
| 38 | + stationMark: 'Z' | |
| 39 | + }, { | |
| 40 | + lineName: '测试线路1', | |
| 41 | + lineCode: '线路编码1', | |
| 42 | + directions: 0, | |
| 43 | + stationRouteCode: 50, | |
| 44 | + stationCode: 'ECODE', | |
| 45 | + stationName: 'E中途站', | |
| 46 | + stationMark: 'Z' | |
| 47 | + }, { | |
| 48 | + lineName: '测试线路1', | |
| 49 | + lineCode: '线路编码1', | |
| 50 | + directions: 0, | |
| 51 | + stationRouteCode: 100, | |
| 52 | + stationCode: 'FCODE', | |
| 53 | + stationName: 'F终点站', | |
| 54 | + stationMark: 'E' | |
| 55 | + }, { | |
| 56 | + lineName: '测试线路1', | |
| 57 | + lineCode: '线路编码1', | |
| 58 | + directions: 1, | |
| 59 | + stationRouteCode: 10, | |
| 60 | + stationCode: 'FCODE', | |
| 61 | + stationName: 'F终点站', | |
| 62 | + stationMark: 'B' | |
| 63 | + }, { | |
| 64 | + lineName: '测试线路1', | |
| 65 | + lineCode: '线路编码1', | |
| 66 | + directions: 1, | |
| 67 | + stationRouteCode: 20, | |
| 68 | + stationCode: 'E1CODE', | |
| 69 | + stationName: 'E1中途站', | |
| 70 | + stationMark: 'Z' | |
| 71 | + }, { | |
| 72 | + lineName: '测试线路1', | |
| 73 | + lineCode: '线路编码1', | |
| 74 | + directions: 1, | |
| 75 | + stationRouteCode: 30, | |
| 76 | + stationCode: 'DCODE', | |
| 77 | + stationName: 'D中途站', | |
| 78 | + stationMark: 'Z' | |
| 79 | + }, { | |
| 80 | + lineName: '测试线路1', | |
| 81 | + lineCode: '线路编码1', | |
| 82 | + directions: 1, | |
| 83 | + stationRouteCode: 40, | |
| 84 | + stationCode: 'C1CODE', | |
| 85 | + stationName: 'C1中途站', | |
| 86 | + stationMark: 'Z' | |
| 87 | + }, { | |
| 88 | + lineName: '测试线路1', | |
| 89 | + lineCode: '线路编码1', | |
| 90 | + directions: 1, | |
| 91 | + stationRouteCode: 100, | |
| 92 | + stationCode: 'ACODE', | |
| 93 | + stationName: 'A起点站', | |
| 94 | + stationMark: 'E' | |
| 95 | + }, | |
| 96 | + | |
| 97 | + // 测试线路2 | |
| 98 | + { | |
| 99 | + lineName: '测试线路2', | |
| 100 | + lineCode: '线路编码2', | |
| 101 | + directions: 0, | |
| 102 | + stationRouteCode: 10, | |
| 103 | + stationCode: 'ACODE', | |
| 104 | + stationName: 'A起点站', | |
| 105 | + stationMark: 'B' | |
| 106 | + }, { | |
| 107 | + lineName: '测试线路2', | |
| 108 | + lineCode: '线路编码2', | |
| 109 | + directions: 0, | |
| 110 | + stationRouteCode: 20, | |
| 111 | + stationCode: 'BCODE', | |
| 112 | + stationName: 'B中途站', | |
| 113 | + stationMark: 'Z' | |
| 114 | + }, { | |
| 115 | + lineName: '测试线路2', | |
| 116 | + lineCode: '线路编码2', | |
| 117 | + directions: 0, | |
| 118 | + stationRouteCode: 100, | |
| 119 | + stationCode: 'FCODE', | |
| 120 | + stationName: 'F终点站', | |
| 121 | + stationMark: 'E' | |
| 122 | + }, { | |
| 123 | + lineName: '测试线路2', | |
| 124 | + lineCode: '线路编码2', | |
| 125 | + directions: 1, | |
| 126 | + stationRouteCode: 10, | |
| 127 | + stationCode: 'FCODE', | |
| 128 | + stationName: 'F终点站', | |
| 129 | + stationMark: 'B' | |
| 130 | + }, { | |
| 131 | + lineName: '测试线路2', | |
| 132 | + lineCode: '线路编码2', | |
| 133 | + directions: 1, | |
| 134 | + stationRouteCode: 40, | |
| 135 | + stationCode: 'C1CODE', | |
| 136 | + stationName: 'C1中途站', | |
| 137 | + stationMark: 'Z' | |
| 138 | + }, { | |
| 139 | + lineName: '测试线路2', | |
| 140 | + lineCode: '线路编码2', | |
| 141 | + directions: 1, | |
| 142 | + stationRouteCode: 100, | |
| 143 | + stationCode: 'ACODE', | |
| 144 | + stationName: 'A起点站', | |
| 145 | + stationMark: 'E' | |
| 146 | + }, | |
| 147 | + | |
| 148 | + // 测试线路3 | |
| 149 | + { | |
| 150 | + lineName: '测试线路3', | |
| 151 | + lineCode: '线路编码3', | |
| 152 | + directions: 0, | |
| 153 | + stationRouteCode: 10, | |
| 154 | + stationCode: 'ACODE', | |
| 155 | + stationName: 'A起点站', | |
| 156 | + stationMark: 'B' | |
| 157 | + }, { | |
| 158 | + lineName: '测试线路3', | |
| 159 | + lineCode: '线路编码3', | |
| 160 | + directions: 0, | |
| 161 | + stationRouteCode: 20, | |
| 162 | + stationCode: 'BCODE', | |
| 163 | + stationName: 'B中途站', | |
| 164 | + stationMark: 'Z' | |
| 165 | + }, { | |
| 166 | + lineName: '测试线路3', | |
| 167 | + lineCode: '线路编码3', | |
| 168 | + directions: 0, | |
| 169 | + stationRouteCode: 100, | |
| 170 | + stationCode: 'FCODE', | |
| 171 | + stationName: 'F终点站', | |
| 172 | + stationMark: 'E' | |
| 173 | + }, { | |
| 174 | + lineName: '测试线路3', | |
| 175 | + lineCode: '线路编码3', | |
| 176 | + directions: 1, | |
| 177 | + stationRouteCode: 10, | |
| 178 | + stationCode: 'FCODE', | |
| 179 | + stationName: 'F终点站', | |
| 180 | + stationMark: 'B' | |
| 181 | + }, { | |
| 182 | + lineName: '测试线路3', | |
| 183 | + lineCode: '线路编码3', | |
| 184 | + directions: 1, | |
| 185 | + stationRouteCode: 40, | |
| 186 | + stationCode: 'C1CODE', | |
| 187 | + stationName: 'C1中途站', | |
| 188 | + stationMark: 'Z' | |
| 189 | + }, { | |
| 190 | + lineName: '测试线路3', | |
| 191 | + lineCode: '线路编码3', | |
| 192 | + directions: 1, | |
| 193 | + stationRouteCode: 100, | |
| 194 | + stationCode: 'ACODE', | |
| 195 | + stationName: 'A起点站', | |
| 196 | + stationMark: 'E' | |
| 197 | + }], | |
| 198 | + lineGpsList: [ | |
| 199 | + { | |
| 200 | + lineName: '测试线路1', | |
| 201 | + lineCode: '线路编码1', | |
| 202 | + stopNo: 'BCODE', // 站点编码 | |
| 203 | + upDown: 0, // 上下行(0 上行 , 1 下行 , -1 无效) | |
| 204 | + deviceId: '559L1014', // 设备编码 | |
| 205 | + instation: 1, // 0: 站外 1:站内 2:场内 | |
| 206 | + nbbm: 'W2B-064' // 车辆内部编码(自编号) | |
| 207 | + }, | |
| 208 | + { | |
| 209 | + lineName: '测试线路1', | |
| 210 | + lineCode: '线路编码1', | |
| 211 | + stopNo: 'BCODE', // 站点编码 | |
| 212 | + upDown: 0, // 上下行(0 上行 , 1 下行 , -1 无效) | |
| 213 | + deviceId: '559L1013', // 设备编码 | |
| 214 | + instation: 1, // 0: 站外 1:站内 2:场内 | |
| 215 | + nbbm: 'W2B-065' // 车辆内部编码(自编号) | |
| 216 | + }, | |
| 217 | + { | |
| 218 | + lineName: '测试线路1', | |
| 219 | + lineCode: '线路编码1', | |
| 220 | + stopNo: 'CCODE', // 站点编码 | |
| 221 | + upDown: 0, // 上下行(0 上行 , 1 下行 , -1 无效) | |
| 222 | + deviceId: '559L1015', // 设备编码 | |
| 223 | + instation: 0, // 0: 站外 1:站内 2:场内 | |
| 224 | + nbbm: 'W2B-066' // 车辆内部编码(自编号) | |
| 225 | + }, | |
| 226 | + { | |
| 227 | + lineName: '测试线路1', | |
| 228 | + lineCode: '线路编码1', | |
| 229 | + stopNo: 'E1CODE', // 站点编码 | |
| 230 | + upDown: 1, // 上下行(0 上行 , 1 下行 , -1 无效) | |
| 231 | + deviceId: '559L1025', // 设备编码 | |
| 232 | + instation: 1, // 0: 站外 1:站内 2:场内 | |
| 233 | + nbbm: 'W2B-026' // 车辆内部编码(自编号) | |
| 234 | + }, | |
| 235 | + | |
| 236 | + { | |
| 237 | + lineName: '测试线路1', | |
| 238 | + lineCode: '线路编码1', | |
| 239 | + stopNo: 'ACODE', // 站点编码 | |
| 240 | + upDown: 1, // 上下行(0 上行 , 1 下行 , -1 无效) | |
| 241 | + deviceId: '559L1035', // 设备编码 | |
| 242 | + instation: 1, // 0: 站外 1:站内 2:场内 | |
| 243 | + nbbm: 'W2B-036' // 车辆内部编码(自编号) | |
| 244 | + }, | |
| 245 | + { | |
| 246 | + lineName: '测试线路1', | |
| 247 | + lineCode: '线路编码1', | |
| 248 | + stopNo: 'ACODE', // 站点编码 | |
| 249 | + upDown: 1, // 上下行(0 上行 , 1 下行 , -1 无效) | |
| 250 | + deviceId: '559L1045', // 设备编码 | |
| 251 | + instation: 1, // 0: 站外 1:站内 2:场内 | |
| 252 | + nbbm: 'W2B-046' // 车辆内部编码(自编号) | |
| 253 | + }, | |
| 254 | + { | |
| 255 | + lineName: '测试线路1', | |
| 256 | + lineCode: '线路编码1', | |
| 257 | + stopNo: 'ACODE', // 站点编码 | |
| 258 | + upDown: 1, // 上下行(0 上行 , 1 下行 , -1 无效) | |
| 259 | + deviceId: '559L1055', // 设备编码 | |
| 260 | + instation: 1, // 0: 站外 1:站内 2:场内 | |
| 261 | + nbbm: 'W2B-056' // 车辆内部编码(自编号) | |
| 262 | + } | |
| 263 | + | |
| 264 | + ] | |
| 265 | +} | ... | ... |
front-end/h5/src/components/core/plugins/bsth/bsth-line-chart-list.js
0 → 100644
| 1 | +/** | |
| 2 | + * 自定义线路模拟图列表组件。 | |
| 3 | + */ | |
| 4 | +import PropTypes from '@luban-h5/plugin-common-props' | |
| 5 | + | |
| 6 | +import TestData from 'core/plugins/bsth/bsth-line-char-list_testData' | |
| 7 | +import TestData2 from 'core/plugins/bsth/bsth-line-chart_testData' | |
| 8 | + | |
| 9 | +export default { | |
| 10 | + extra: { | |
| 11 | + defaultStyle: { // 默认属性 | |
| 12 | + top: 0, | |
| 13 | + left: 0, | |
| 14 | + width: 350, | |
| 15 | + height: 300 | |
| 16 | + } | |
| 17 | + }, | |
| 18 | + name: 'bsth-line-chart-list', | |
| 19 | + data () { | |
| 20 | + // eslint-disable-next-line | |
| 21 | + this.private_jQuery = jQuery.noConflict() // jquery引用 | |
| 22 | + return { | |
| 23 | + /** | |
| 24 | + * 监控外层元素的宽度高度变化 | |
| 25 | + * 1、由于编辑器缩放,自定义组件无法监控,所以需要定义一个定时器监控最外层元素的大小变化 | |
| 26 | + * 2、建议所有自定义组件,最外层都定义一个div包在自定义组件最外层,不要关联任何自定义的属性,样式对应编辑器的通用样式 | |
| 27 | + */ | |
| 28 | + watchWidthHeightTimer: { | |
| 29 | + timer: null, | |
| 30 | + count: 0, | |
| 31 | + millisecond: 1000 | |
| 32 | + }, | |
| 33 | + list_width: 350, // 列表宽度 | |
| 34 | + list_height: 300, // 列表高度 | |
| 35 | + line_chart_outer_div_width: 0, // 线路图外层div宽度 | |
| 36 | + line_chart_outer_div_height: 0, // 线路图外层div高度 | |
| 37 | + internalDataSet: [], // 内部总数据 | |
| 38 | + viewPortDataSet: [] // 可视区域对应的数据 | |
| 39 | + } | |
| 40 | + }, | |
| 41 | + props: { | |
| 42 | + editorMode: PropTypes.string({ // 编辑模式会由编辑器自动注入(值:edit, preview) | |
| 43 | + defaultValue: 'preview', | |
| 44 | + label: '模式', | |
| 45 | + visible: false | |
| 46 | + }), | |
| 47 | + // --------------- 外层css属性 --------------- // | |
| 48 | + _flag_2_: PropTypes.string({ label: '', component: null, extra: '外层css属性' }), | |
| 49 | + margin_left: PropTypes.number({ label: '图左边margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), | |
| 50 | + margin_right: PropTypes.number({ label: '图右边margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), | |
| 51 | + margin_top: PropTypes.number({ label: '图上边margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), | |
| 52 | + margin_bottom: PropTypes.number({ label: '图底部margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), | |
| 53 | + border_size: PropTypes.number({ label: '图边框宽度', defaultValue: 1, layout: { prefixCls: 'bsth-line' } }), | |
| 54 | + background_color: PropTypes.color({ label: '背景颜色', defaultValue: '#FFFFFF', layout: { prefixCls: 'bsth-line' } }), | |
| 55 | + // --------------- 内部线路模拟图外层css属性 --------------- // | |
| 56 | + _flag_3_: PropTypes.string({ label: '', component: null, extra: '内部线路模拟图外层css属性' }), | |
| 57 | + line_chart_margin_left: PropTypes.number({ label: '图左边margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), | |
| 58 | + line_chart_margin_right: PropTypes.number({ label: '图右边margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), | |
| 59 | + line_chart_margin_top: PropTypes.number({ label: '图上边margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), | |
| 60 | + line_chart_margin_bottom: PropTypes.number({ label: '图底部margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), | |
| 61 | + line_chart_border_size: PropTypes.number({ label: '图边框宽度', defaultValue: 1, layout: { prefixCls: 'bsth-line' } }), | |
| 62 | + line_chart_background_color: PropTypes.color({ label: '背景颜色', defaultValue: '#FFFFFF', layout: { prefixCls: 'bsth-line' } }), | |
| 63 | + // --------------- 内部线路模拟图内层css属性 --------------- // | |
| 64 | + _flag_4_: PropTypes.string({ label: '', component: null, extra: '内部线路模拟图内层css属性' }), | |
| 65 | + chart_left_padding: PropTypes.number({ label: '内部线路图距离左边padding', defaultValue: 30, layout: { prefixCls: 'bsth-line' } }), | |
| 66 | + chart_right_padding: PropTypes.number({ label: '内部线路图居中修正padding', defaultValue: 30, layout: { prefixCls: 'bsth-line' } }), | |
| 67 | + chart_center_top_padding: PropTypes.number({ label: '内部线路图居中修正padding', defaultValue: 4, layout: { prefixCls: 'bsth-line' } }), | |
| 68 | + chart_station_name_max_size: PropTypes.number({ label: '站定名显示最大文字个数', defaultValue: 7, layout: { prefixCls: 'bsth-line' } }), | |
| 69 | + chart_up_line_path_s_color: PropTypes.color({ label: '上行线颜色', defaultValue: '#5E96D2', layout: { prefixCls: 'bsth-line' } }), | |
| 70 | + chart_down_line_path_s_color: PropTypes.color({ label: '下行线颜色', defaultValue: '#c92121', layout: { prefixCls: 'bsth-line' } }), | |
| 71 | + chart_up_line_circle_f_color: PropTypes.color({ label: '上行线站点圆圈填充色', defaultValue: '#5e96d2', layout: { prefixCls: 'bsth-line' } }), | |
| 72 | + chart_down_line_circle_f_color: PropTypes.color({ label: '下行线站点圆圈填充色', defaultValue: '#c92121', layout: { prefixCls: 'bsth-line' } }), | |
| 73 | + chart_station_text_font_size: PropTypes.number({ label: '站名字体大小', defaultValue: 14, layout: { prefixCls: 'bsth-line' } }), | |
| 74 | + chart_up_station_text_font_f_color: PropTypes.color({ label: '上行站名颜色', defaultValue: '#4556b6', layout: { prefixCls: 'bsth-line' } }), | |
| 75 | + chart_down_station_text_font_f_color: PropTypes.color({ label: '下行站名颜色', defaultValue: '#c94f21', layout: { prefixCls: 'bsth-line' } }), | |
| 76 | + chart_up_down_station_text_font_f_color: PropTypes.color({ label: '上行下行同名站名颜色', defaultValue: '#3e3e3e', layout: { prefixCls: 'bsth-line' } }), | |
| 77 | + chart_gps_up_rect_color: PropTypes.color({ label: '上行gps车辆rect背景色', defaultValue: '#3e50b3', layout: { prefixCls: 'bsth-line' } }), | |
| 78 | + chart_gps_up_text_f_color: PropTypes.color({ label: '上行gps车辆文本颜色', defaultValue: '#FFFFFF', layout: { prefixCls: 'bsth-line' } }), | |
| 79 | + chart_gps_down_rect_color: PropTypes.color({ label: '下行gps车辆rect背景色', defaultValue: '#c94f21', layout: { prefixCls: 'bsth-line' } }), | |
| 80 | + chart_gps_down_text_f_color: PropTypes.color({ label: '下行gps车辆文本颜色', defaultValue: '#FFFFFF', layout: { prefixCls: 'bsth-line' } }), | |
| 81 | + chart_gps_up_merge_rect_color: PropTypes.color({ label: '上行合并gps车辆rect背景色', defaultValue: '#19a53a', layout: { prefixCls: 'bsth-line' } }), | |
| 82 | + chart_gps_up_merge_text_f_color: PropTypes.color({ label: '上行合并gps车辆文本颜色', defaultValue: '#FFFFFF', layout: { prefixCls: 'bsth-line' } }), | |
| 83 | + chart_gps_down_merge_rect_color: PropTypes.color({ label: '下行合并gps车辆rect背景色', defaultValue: '#19a53a', layout: { prefixCls: 'bsth-line' } }), | |
| 84 | + chart_gps_down_merge_text_f_color: PropTypes.color({ label: '下行合并gps车辆文本颜色', defaultValue: '#FFFFFF', layout: { prefixCls: 'bsth-line' } }) | |
| 85 | + }, | |
| 86 | + render () { | |
| 87 | + const lineRouteData = TestData.route_test_data | |
| 88 | + const lineGpsData = TestData.gps_test_data | |
| 89 | + | |
| 90 | + const innerDivStyle = { | |
| 91 | + 'width': this.list_width + 'px', | |
| 92 | + 'height': this.list_height + 'px', | |
| 93 | + 'border': this.border_size + 'px solid black', | |
| 94 | + 'margin-left': this.margin_left + 'px', | |
| 95 | + 'margin-right': this.margin_right + 'px', | |
| 96 | + 'margin-top': this.margin_top + 'px', | |
| 97 | + 'margin-bottom': this.margin_bottom + 'px', | |
| 98 | + 'background': this.background_color, | |
| 99 | + 'position': 'relative' | |
| 100 | + } | |
| 101 | + | |
| 102 | + /* 最外层div对应编辑器的通用样式 */ | |
| 103 | + return ( | |
| 104 | + <div> | |
| 105 | + <div style={innerDivStyle}> | |
| 106 | + <bsth-line-chart | |
| 107 | + editorMode={this.editorMode} | |
| 108 | + useMode='child' | |
| 109 | + line_chart_outer_div_width={this.line_chart_outer_div_width} | |
| 110 | + line_chart_outer_div_height={this.line_chart_outer_div_height} | |
| 111 | + line_route_data={lineRouteData} | |
| 112 | + line_gps_data={lineGpsData} | |
| 113 | + > | |
| 114 | + </bsth-line-chart> | |
| 115 | + </div> | |
| 116 | + </div> | |
| 117 | + ) | |
| 118 | + }, | |
| 119 | + mounted () { | |
| 120 | + // 使用外部元素的框架定义图的长宽 | |
| 121 | + let $jQuery = this.private_jQuery | |
| 122 | + this.list_width = $jQuery(this.$el).width() - this.margin_left - this.margin_right - this.border_size * 2 | |
| 123 | + this.list_height = $jQuery(this.$el).height() - this.margin_top - this.margin_bottom - this.border_size * 2 | |
| 124 | + // 开启外部元素长宽监控计数 | |
| 125 | + this.watchWidthHeightTimer.count++ | |
| 126 | + // 线路图外层div长宽就是列表长宽,因为线路图作为子组件无法编辑通用样式,最外穿div的margin,border一律为0 | |
| 127 | + this.line_chart_outer_div_width = this.list_width | |
| 128 | + this.line_chart_outer_div_height = this.list_height | |
| 129 | + }, | |
| 130 | + destroyed () { | |
| 131 | + // 组件删除的时候,删除监控定时器 | |
| 132 | + let timer = this.watchWidthHeightTimer.timer | |
| 133 | + if (timer) { | |
| 134 | + clearTimeout(timer) | |
| 135 | + this.watchWidthHeightTimer.timer = null | |
| 136 | + } | |
| 137 | + }, | |
| 138 | + watch: { | |
| 139 | + /** | |
| 140 | + * 开启外部元素长宽监控逻辑 | |
| 141 | + * 1、必须在编辑模式下启效果,否则无效 | |
| 142 | + */ | |
| 143 | + 'watchWidthHeightTimer.count' () { // 定时器监控 | |
| 144 | + let timer = this.watchWidthHeightTimer.timer | |
| 145 | + if (timer) { | |
| 146 | + clearTimeout(timer) | |
| 147 | + this.watchWidthHeightTimer.timer = null | |
| 148 | + } | |
| 149 | + | |
| 150 | + let self = this | |
| 151 | + let $jQuery = this.private_jQuery | |
| 152 | + if (self.editorMode === 'edit') { | |
| 153 | + self.watchWidthHeightTimer.timer = setTimeout(function () { | |
| 154 | + // 处理逻辑 | |
| 155 | + let width = $jQuery(self.$el).width() | |
| 156 | + let height = $jQuery(self.$el).height() | |
| 157 | + | |
| 158 | + if (width !== self.list_width) { | |
| 159 | + self.list_width = width - self.margin_left - self.margin_right - self.border_size * 2 | |
| 160 | + self.line_chart_outer_div_width = self.list_width | |
| 161 | + } | |
| 162 | + if (height !== self.list_height) { | |
| 163 | + self.list_height = height - self.margin_top - self.margin_bottom - self.border_size * 2 | |
| 164 | + self.line_chart_outer_div_height = self.list_height | |
| 165 | + } | |
| 166 | + | |
| 167 | + self.watchWidthHeightTimer.count++ | |
| 168 | + }, self.watchWidthHeightTimer.millisecond) | |
| 169 | + } | |
| 170 | + } | |
| 171 | + } | |
| 172 | + // methods () {} | |
| 173 | +} | ... | ... |
front-end/h5/src/components/core/plugins/bsth/bsth-line-chart.js
| ... | ... | @@ -52,14 +52,26 @@ export default { |
| 52 | 52 | visible: false |
| 53 | 53 | }), |
| 54 | 54 | editorMode: PropTypes.string({ // 编辑模式会由编辑器自动注入(值:edit, preview) |
| 55 | - defaultValue: 'preview', | |
| 55 | + defaultValue: 'edit', | |
| 56 | 56 | label: '模式', |
| 57 | 57 | visible: false |
| 58 | 58 | }), |
| 59 | + line_chart_outer_div_width: PropTypes.number({ | |
| 60 | + defaultValue: 350, | |
| 61 | + label: 'line-chart-outer-div样式的div宽度', | |
| 62 | + visible: false | |
| 63 | + }), | |
| 64 | + line_chart_outer_div_height: PropTypes.number({ | |
| 65 | + defaultValue: 300, | |
| 66 | + label: 'line-chart-outer-div样式的div高度', | |
| 67 | + visible: false | |
| 68 | + }), | |
| 59 | 69 | // 数据属性 |
| 70 | + _flag_1_: PropTypes.string({ label: '', component: null, extra: '数据属性' }), | |
| 60 | 71 | line_name: PropTypes.string({ label: '线路名称', defaultValue: '线路1', layout: { prefixCls: 'bsth-line' } }), |
| 61 | 72 | line_code: PropTypes.string({ label: '线路代码', defaultValue: 'ACODE', layout: { prefixCls: 'bsth-line' } }), |
| 62 | 73 | // 图外层css |
| 74 | + _flag_2_: PropTypes.string({ label: '', component: null, extra: '图外层css属性' }), | |
| 63 | 75 | line_name_font_size: PropTypes.number({ label: '线路名称字体大小', defaultValue: 30, layout: { prefixCls: 'bsth-line' } }), |
| 64 | 76 | line_name_font_color: PropTypes.color({ label: '线路名称字体颜色', defaultValue: '#babdbd', layout: { prefixCls: 'bsth-line' } }), |
| 65 | 77 | margin_left: PropTypes.number({ label: '图左边margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), |
| ... | ... | @@ -68,7 +80,8 @@ export default { |
| 68 | 80 | margin_bottom: PropTypes.number({ label: '图底部margin', defaultValue: 0, layout: { prefixCls: 'bsth-line' } }), |
| 69 | 81 | border_size: PropTypes.number({ label: '图边框宽度', defaultValue: 1, layout: { prefixCls: 'bsth-line' } }), |
| 70 | 82 | background_color: PropTypes.color({ label: '背景颜色', defaultValue: '#FFFFFF', layout: { prefixCls: 'bsth-line' } }), |
| 71 | - // 图内存css | |
| 83 | + // 图内层css | |
| 84 | + _flag_3_: PropTypes.string({ label: '', component: null, extra: '图内层css属性' }), | |
| 72 | 85 | chart_left_padding: PropTypes.number({ label: '内部线路图距离左边padding', defaultValue: 30, layout: { prefixCls: 'bsth-line' } }), |
| 73 | 86 | chart_right_padding: PropTypes.number({ label: '内部线路图居中修正padding', defaultValue: 30, layout: { prefixCls: 'bsth-line' } }), |
| 74 | 87 | chart_center_top_padding: PropTypes.number({ label: '内部线路图居中修正padding', defaultValue: 4, layout: { prefixCls: 'bsth-line' } }), |
| ... | ... | @@ -92,7 +105,7 @@ export default { |
| 92 | 105 | }, |
| 93 | 106 | |
| 94 | 107 | render () { |
| 95 | - const outerDivStyle = { | |
| 108 | + const innerDivStyle = { | |
| 96 | 109 | 'width': this.line_width + 'px', |
| 97 | 110 | 'height': this.line_height + 'px', |
| 98 | 111 | 'border': this.border_size + 'px solid black', |
| ... | ... | @@ -119,8 +132,8 @@ export default { |
| 119 | 132 | |
| 120 | 133 | /* 最外层div对应编辑器的通用样式 */ |
| 121 | 134 | return ( |
| 122 | - <div> | |
| 123 | - <div style={outerDivStyle}> | |
| 135 | + <div class="line-chart-outer-div"> | |
| 136 | + <div style={innerDivStyle}> | |
| 124 | 137 | <div style={lineNameStyle}>{this.line_name}</div> |
| 125 | 138 | <svg class="line-chart" |
| 126 | 139 | data-code={this.line_code} |
| ... | ... | @@ -147,17 +160,15 @@ export default { |
| 147 | 160 | this.line_route_data = TestData.route_test_data |
| 148 | 161 | this.line_gps_data = TestData.gps_test_data |
| 149 | 162 | |
| 150 | - // 如果在编辑模式下,启动外部元素长宽的监控 | |
| 151 | - | |
| 163 | + // 开启外部元素长宽监控计数 | |
| 152 | 164 | /** |
| 153 | - * 开启外部元素长宽监控逻辑 | |
| 154 | - * 1、useMode必须是alone,单独使用,宽高自动匹配外部元素 | |
| 155 | - * 2、必须在编辑模式下启效果,否则无效 | |
| 165 | + * 开启外部元素长宽监控逻辑(class='line-chart-outer-div') | |
| 166 | + * 1、使用模式是alone,并且是编辑模式edit | |
| 167 | + * 2、preview预览模式下有条件监控 | |
| 156 | 168 | */ |
| 157 | 169 | if (this.useMode === 'alone' && this.editorMode === 'edit') { |
| 158 | 170 | this.watchWidthHeightTimer.count++ |
| 159 | 171 | } |
| 160 | - | |
| 161 | 172 | // 刷新svg |
| 162 | 173 | this.refreshLineSvg() |
| 163 | 174 | this.refreshGpsSvg() |
| ... | ... | @@ -194,6 +205,22 @@ export default { |
| 194 | 205 | self.watchWidthHeightTimer.count++ |
| 195 | 206 | }, self.watchWidthHeightTimer.millisecond) |
| 196 | 207 | }, |
| 208 | + /** | |
| 209 | + * 当组件作为自组件使用时(useMode=child),line-chart-outer-div样式的div尺寸无法通过编辑器改变(通用样式) | |
| 210 | + * 必须由父组件设定,自组件需要监控改变 | |
| 211 | + */ | |
| 212 | + line_chart_outer_div_width: function (val) { | |
| 213 | + let self = this | |
| 214 | + if (this.useMode === 'child') { | |
| 215 | + self.line_width = val - self.margin_left - self.margin_right | |
| 216 | + } | |
| 217 | + }, | |
| 218 | + line_chart_outer_div_height: function (val) { | |
| 219 | + let self = this | |
| 220 | + if (this.useMode === 'child') { | |
| 221 | + self.line_height = val - self.margin_top - self.margin_bottom | |
| 222 | + } | |
| 223 | + }, | |
| 197 | 224 | // ----------- 数据属性 ----------- // |
| 198 | 225 | line_route_data: function (currentVal, oldVal) { |
| 199 | 226 | let self = this | ... | ... |
front-end/h5/src/components/core/plugins/index.js
| ... | ... | @@ -20,6 +20,7 @@ import LbpNewsList from 'core/plugins/lbp-news-list' |
| 20 | 20 | // import LbpTabs from 'core/components/plugins/lbp-tabs' |
| 21 | 21 | |
| 22 | 22 | import BsthLineChart from 'core/plugins/bsth/bsth-line-chart' |
| 23 | +import BsthLineChartList from 'core/plugins/bsth/bsth-line-chart-list' | |
| 23 | 24 | |
| 24 | 25 | export const pluginsList = [ |
| 25 | 26 | { |
| ... | ... | @@ -317,6 +318,18 @@ export const pluginsList = [ |
| 317 | 318 | component: BsthLineChart, |
| 318 | 319 | visible: true, |
| 319 | 320 | name: BsthLineChart.name |
| 321 | + }, | |
| 322 | + | |
| 323 | + { | |
| 324 | + i18nTitle: { | |
| 325 | + 'en-US': 'LineChartList', | |
| 326 | + 'zh-CN': '线路模拟图列表' | |
| 327 | + }, | |
| 328 | + title: '线路模拟图列表', | |
| 329 | + icon: 'list', | |
| 330 | + component: BsthLineChartList, | |
| 331 | + visible: true, | |
| 332 | + name: BsthLineChartList.name | |
| 320 | 333 | } |
| 321 | 334 | ] |
| 322 | 335 | ... | ... |