# coalFeeding.vue Right Panel Layout Redesign ## Overview This design updates the right-side data presentation area in `src/views/coalFeeding.vue`. The current implementation uses a large HTML `` to render the unit comparison area. The new implementation will remove `
` entirely and replace it with ordinary block elements while preserving the existing row-and-column visual structure. The redesign will follow the confirmed "path 2" approach: - Keep the current business fields and interaction logic unchanged. - Rebuild the right-side layout as a column-oriented block structure. - Split each unit column into reusable visual sections. - Preserve the current visual alignment, colors, and row semantics. ## Goals - Remove the `
` layout from the right-side unit display area. - Preserve the current visual feeling of a multi-column industrial control panel. - Render the layout as: - one fixed parameter label column - multiple unit columns rendered with ordinary elements - Split each unit column into five ordered sections: 1. upper block: four time-setting rows + middle-side motors + accumulated runtime 2. `2-side temperature` 3. `car number` 4. `1-side temperature` 5. lower block: four independent time-setting rows + return-side motors + accumulated runtime - Keep existing click, drag-and-drop, and auto/manual behaviors working. ## Non-Goals - Do not switch the page to the new backend `unit -> equipments -> role_points` structure in this change. - Do not refactor WebSocket payload handling in this change. - Do not alter the current business meanings of fields such as `tmyxsds`, `tempera2`, `dianji`, or `dianji2`. - Do not split logic into separate Vue files unless needed later; this change stays inside `coalFeeding.vue`. ## Current State The current right panel is rendered as a long `
` with: - a left sticky parameter-name column - repeated `v-for` cells for each unit - an upper group of rows before `2-side temperature` - a middle section for temperatures and car number - a lower group of rows after `1-side temperature` This structure visually works, but it is difficult to reshape into two explicit per-column blocks because the DOM is organized by rows, not by columns. ## Chosen Approach Use a block-based, column-oriented layout. The new structure will be: - outer right-panel container - left parameter column - horizontally scrollable unit-column area - each unit rendered as one column card-like container Each unit column will render these sections in order: 1. Upper block - `投煤运行时间设定` -> `tmyxsds` - `投煤停止时间设定` -> `tmtzsds` - `投煤累积时间设定` -> `tmljsds` - `布料运行时间设定` -> `blyxsds` - `中间侧` -> `dianji` - `投煤累积时间` -> `tmljsjs` 2. `2侧温度` -> `tempera2` 3. `车位号` -> `carNumber` 4. `1侧温度` -> `tempera1` 5. Lower block - `投煤运行时间设定` -> `tmyxsdx` - `投煤停止时间设定` -> `tmtzsdx` - `投煤累积时间设定` -> `tmljsdx` - `布料运行时间设定` -> `blyxsdx` - `回车侧` -> `dianji2` - `投煤累积时间` -> `tmljsjx` ## Data Mapping This change keeps the existing `dataList` shape unchanged. Upper block mapping: - `tmyxsds` - `tmtzsds` - `tmljsds` - `blyxsds` - `dianji` - `tmljsjs` Middle display mapping: - `tempera2` - `carNumber` - `tempera1` Lower block mapping: - `tmyxsdx` - `tmtzsdx` - `tmljsdx` - `blyxsdx` - `dianji2` - `tmljsjx` ## Interaction Preservation The redesign must preserve the current interactions: - Time-setting fields: - show plain text when `item.statusAuto === true` - show `` when `item.statusAuto === false` - Middle-side motor controls continue to use `dianji` - Return-side motor controls continue to use `dianji2` - Motor click actions continue to call `toggleDjStop(...)` - Temperature drop targets keep current DOM id rules so point binding logic continues to work: - `tempera2_unit...` - `tempera1_unit...` - Existing drag/drop handlers stay in place for the fields already using them - Unit-level manual/auto toggle controls under the panel remain unchanged ## Rendering Structure The template will be reorganized into these conceptual pieces: - parameter label column - contains every row label in display order - unit columns container - renders one column per `dataList` item - unit column header - shows the unit name badge - upper section container - renders upper time rows, motor row, and accumulated runtime row - middle temperature section - renders `2-side temperature`, `car number`, and `1-side temperature` - lower section container - renders lower time rows, return-side motor row, and accumulated runtime row Repeated visual blocks inside the unit column will be reduced into small render patterns: - time item block - motor group block - temperature/car display block These can remain inline in the same file as repeated template fragments or lightweight helper loops. ## Layout and Styling The new layout will use ordinary block elements instead of table semantics: - `display: flex` for the main horizontal layout - fixed-width parameter label column - horizontally scrollable unit column strip - each unit column with a consistent minimum width - each row item with controlled height and border styling Visual continuity requirements: - preserve row alignment between label column and unit columns - preserve the current gray/white parameter rows - preserve the blue motor-area styling - preserve the orange temperature styling - preserve the highlighted car-number styling - preserve the general dense control-panel appearance To avoid layout drift after removing table semantics: - shared row-height classes will be introduced for standard rows - motor rows will use a dedicated fixed-height style - upper and lower section wrappers will provide clear grouping without breaking alignment ## Risks and Mitigations ### Risk 1: alignment drift after removing `
` Mitigation: - define explicit heights for standard rows - define explicit height for motor rows - keep label column and unit columns rendered in the same vertical order ### Risk 2: drag/drop regressions on temperature fields Mitigation: - preserve the existing id naming convention for temperature targets - keep existing drop handlers on the same business elements ### Risk 3: motor interactions change unintentionally Mitigation: - reuse current click handler calls and existing state fields - only move markup; do not alter motor state logic during this change ### Risk 4: template becomes harder to read Mitigation: - group markup by column section instead of one giant table body - use repeated rendering patterns for time blocks and motor groups ## Testing Plan After implementation, verify: - the right panel renders without `
` - horizontal scrolling still works for the unit columns - label column and unit columns remain aligned - upper and lower blocks are visually distinct inside each unit column - auto/manual display behavior still works for time fields - motor click interactions still work - temperature drop targets still accept drag-and-drop - existing settings section below the panel still renders correctly ## Open Constraints - The page still uses the current local `dataList` structure. - Future work may migrate the page to the new backend unit/equipment structure, but that is intentionally out of scope here. - The current project directory is not a Git repository, so this design document cannot be committed from the current workspace state.