Junjie
3 天以前 ce958810cabd72b5ee6bc4b9433633b0230bcfdd
src/main/webapp/views/basDevp/basDevp.html
@@ -196,6 +196,88 @@
            font-family: Menlo, Monaco, Consolas, "Liberation Mono", monospace;
        }
        .station-list-editor {
            padding: 10px 12px;
            border: 1px solid #dfe7f1;
            border-radius: 10px;
            background: #f8fbff;
            max-height: 400px;
            overflow-y: auto;
        }
        .station-list-editor-row {
            padding: 10px;
            border: 1px solid #e8eef5;
            border-radius: 8px;
            background: #fff;
            margin-bottom: 8px;
        }
        .station-list-editor-row-head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 8px;
            font-size: 12px;
            font-weight: 700;
            color: #66788f;
        }
        .station-fields-grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 6px;
        }
        .station-fields-grid label {
            display: block;
            font-size: 11px;
            color: #66788f;
            margin-bottom: 2px;
        }
        .station-fields-grid .el-input__inner {
            height: 28px;
            font-size: 12px;
        }
        .nested-section {
            margin-top: 8px;
            padding: 8px;
            border: 1px dashed #d0dbe8;
            border-radius: 6px;
            background: #f5f8fc;
        }
        .nested-section-head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 6px;
            font-size: 12px;
            font-weight: 700;
            color: #66788f;
        }
        .json-editor-footer {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            margin-top: 10px;
        }
        .json-preview {
            min-width: 0;
            color: #8a98ac;
            font-size: 12px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            font-family: Menlo, Monaco, Consolas, monospace;
            max-width: 400px;
        }
        .pager-bar {
            padding: 0 16px 16px;
            display: flex;
@@ -638,6 +720,76 @@
                            active-color="#13ce66"
                            inactive-color="#c0c4cc">
                        </el-switch>
                        <!-- StationObjModel 数组编辑器 -->
                        <div
                            v-else-if="stationEditorFields.indexOf(field.field) !== -1"
                            class="station-list-editor">
                            <div
                                v-for="(station, sIdx) in jsonEditorRows[field.field] || []"
                                :key="field.field + '-station-' + sIdx"
                                class="station-list-editor-row">
                                <div class="station-list-editor-row-head">
                                    <span>站点 {{ sIdx + 1 }}</span>
                                    <el-button type="text" style="color:#f56c6c;" @click="removeStationRow(field.field, sIdx)">删除</el-button>
                                </div>
                                <div class="station-fields-grid">
                                    <div><label>设备号</label><el-input v-model.trim="station.deviceNo" placeholder="如 1" @input="syncStationField(field.field)"></el-input></div>
                                    <div><label>站点ID</label><el-input v-model.trim="station.stationId" placeholder="如 11" @input="syncStationField(field.field)"></el-input></div>
                                    <div><label>排</label><el-input v-model.trim="station.deviceRow" placeholder="排" @input="syncStationField(field.field)"></el-input></div>
                                    <div><label>列</label><el-input v-model.trim="station.deviceBay" placeholder="列" @input="syncStationField(field.field)"></el-input></div>
                                    <div><label>层</label><el-input v-model.trim="station.deviceLev" placeholder="层" @input="syncStationField(field.field)"></el-input></div>
                                    <div><label>站点层</label><el-input v-model.trim="station.stationLev" placeholder="站点层" @input="syncStationField(field.field)"></el-input></div>
                                    <div><label>条码索引</label><el-input v-model.trim="station.barcodeIdx" placeholder="条码索引" @input="syncStationField(field.field)"></el-input></div>
                                    <div><label>双工位工位</label><el-input v-model.trim="station.dualCrnExecuteStation" placeholder="双工位工位" @input="syncStationField(field.field)"></el-input></div>
                                </div>
                                <!-- 条码站点 -->
                                <div class="nested-section">
                                    <div class="nested-section-head">
                                        <span>条码站点 {{ station.barcodeStation ? '(已配置)' : '' }}</span>
                                        <span>
                                            <el-button v-if="!station.barcodeStation" type="text" size="mini" @click="addNestedStation(field.field, sIdx, 'barcodeStation')">添加</el-button>
                                            <el-button v-if="station.barcodeStation" type="text" size="mini" @click="toggleNested(field.field, sIdx, 'barcodeStation')">{{ station._showBarcode ? '收起' : '展开' }}</el-button>
                                            <el-button v-if="station.barcodeStation" type="text" size="mini" style="color:#f56c6c;" @click="removeNestedStation(field.field, sIdx, 'barcodeStation')">移除</el-button>
                                        </span>
                                    </div>
                                    <div v-if="station.barcodeStation && station._showBarcode" class="station-fields-grid">
                                        <div><label>设备号</label><el-input v-model.trim="station.barcodeStation.deviceNo" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>站点ID</label><el-input v-model.trim="station.barcodeStation.stationId" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>排</label><el-input v-model.trim="station.barcodeStation.deviceRow" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>列</label><el-input v-model.trim="station.barcodeStation.deviceBay" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>层</label><el-input v-model.trim="station.barcodeStation.deviceLev" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>站点层</label><el-input v-model.trim="station.barcodeStation.stationLev" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>条码索引</label><el-input v-model.trim="station.barcodeStation.barcodeIdx" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>双工位工位</label><el-input v-model.trim="station.barcodeStation.dualCrnExecuteStation" @input="syncStationField(field.field)"></el-input></div>
                                    </div>
                                </div>
                                <!-- 回库站点 -->
                                <div class="nested-section">
                                    <div class="nested-section-head">
                                        <span>回库站点 {{ station.backStation ? '(已配置)' : '' }}</span>
                                        <span>
                                            <el-button v-if="!station.backStation" type="text" size="mini" @click="addNestedStation(field.field, sIdx, 'backStation')">添加</el-button>
                                            <el-button v-if="station.backStation" type="text" size="mini" @click="toggleNested(field.field, sIdx, 'backStation')">{{ station._showBack ? '收起' : '展开' }}</el-button>
                                            <el-button v-if="station.backStation" type="text" size="mini" style="color:#f56c6c;" @click="removeNestedStation(field.field, sIdx, 'backStation')">移除</el-button>
                                        </span>
                                    </div>
                                    <div v-if="station.backStation && station._showBack" class="station-fields-grid">
                                        <div><label>设备号</label><el-input v-model.trim="station.backStation.deviceNo" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>站点ID</label><el-input v-model.trim="station.backStation.stationId" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>排</label><el-input v-model.trim="station.backStation.deviceRow" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>列</label><el-input v-model.trim="station.backStation.deviceBay" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>层</label><el-input v-model.trim="station.backStation.deviceLev" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>站点层</label><el-input v-model.trim="station.backStation.stationLev" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>条码索引</label><el-input v-model.trim="station.backStation.barcodeIdx" @input="syncStationField(field.field)"></el-input></div>
                                        <div><label>双工位工位</label><el-input v-model.trim="station.backStation.dualCrnExecuteStation" @input="syncStationField(field.field)"></el-input></div>
                                    </div>
                                </div>
                            </div>
                            <div class="json-editor-footer">
                                <el-button size="mini" plain icon="el-icon-plus" @click="addStationRow(field.field)">新增站点</el-button>
                                <span class="json-preview mono" :title="dialogForm[field.field]">{{ dialogForm[field.field] || '空' }}</span>
                            </div>
                        </div>
                        <el-input
                            v-else-if="field.textarea"
                            v-model.trim="dialogForm[field.field]"
@@ -663,6 +815,7 @@
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/jsonEditors.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/vue/js/vue.min.js"></script>
<script type="text/javascript" src="../../static/vue/element/element.js"></script>
<script type="text/javascript" src="../../static/js/basDevp/basDevp.js?v=20260310" charset="utf-8"></script>