|
@@ -10,67 +10,69 @@
|
|
|
<el-tabs v-model="activename" style="height: 100%">
|
|
|
<el-tab-pane label="数据" name="data" style="height: 100%">
|
|
|
<Splitpanes horizontal>
|
|
|
- <Pane min-size="20" size="50" max-size="80">
|
|
|
- <el-table :data="filteredData" border class="datatable">
|
|
|
- <el-table-column type="index" width="40" label="" />
|
|
|
- <el-table-column prop="name" label="属性"> </el-table-column>
|
|
|
- <el-table-column prop="value" label="值">
|
|
|
- <template #default="{ row }">
|
|
|
- <!-- 如果是1 :下拉选择 -->
|
|
|
- <el-select
|
|
|
- v-if="row.valueType === 1"
|
|
|
- v-model="row.value"
|
|
|
- placeholder="请选择"
|
|
|
- class="full-width-select"
|
|
|
- @change="(val) => handleShapeChange(row, val)"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="option in row.options"
|
|
|
- :key="option.val"
|
|
|
- :label="option.tag"
|
|
|
- :value="option.val"
|
|
|
+ <Pane min-size="10" size="50" max-size="80">
|
|
|
+ <div class="table-wrapper">
|
|
|
+ <el-table :data="filteredData" border class="datatable">
|
|
|
+ <el-table-column type="index" width="40" label="" />
|
|
|
+ <el-table-column prop="name" label="属性"> </el-table-column>
|
|
|
+ <el-table-column prop="value" label="值">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <!-- 如果是1 :下拉选择 -->
|
|
|
+ <el-select
|
|
|
+ v-if="row.valueType === 1"
|
|
|
+ v-model="row.value"
|
|
|
+ placeholder="请选择"
|
|
|
+ class="full-width-select"
|
|
|
+ @change="(val) => handleShapeChange(row, val)"
|
|
|
>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- <!-- 如果是2: 输入框 -->
|
|
|
- <el-input
|
|
|
- v-else-if="row.valueType === 2"
|
|
|
- v-model="row.value"
|
|
|
- class="full-width-input"
|
|
|
- />
|
|
|
- <!-- 如果是3: 弹窗 -->
|
|
|
- <el-button
|
|
|
- v-else-if="row.valueType === 3"
|
|
|
- :loading="loadingStates[row.pcaId] || false"
|
|
|
- @click="handleClick(row)"
|
|
|
- ></el-button>
|
|
|
- <div v-else>{{ row.valueDef }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="unit" label="单位" width="100">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-select
|
|
|
- v-if="row.unitType !== '无'"
|
|
|
- v-model="row.unitDef"
|
|
|
- placeholder="请选择"
|
|
|
- @focus="fetchUnitsForRow(row)"
|
|
|
- :loading="moreOptionsLoading"
|
|
|
- class="full-width-select"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="option in row.unitoptions"
|
|
|
- :key="option.utId"
|
|
|
- :label="option.value"
|
|
|
- :value="option.value"
|
|
|
+ <el-option
|
|
|
+ v-for="option in row.options"
|
|
|
+ :key="option.val"
|
|
|
+ :label="option.tag"
|
|
|
+ :value="option.val"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <!-- 如果是2: 输入框 -->
|
|
|
+ <el-input
|
|
|
+ v-else-if="row.valueType === 2"
|
|
|
+ v-model="row.value"
|
|
|
+ class="full-width-input"
|
|
|
+ />
|
|
|
+ <!-- 如果是3: 弹窗 -->
|
|
|
+ <el-button
|
|
|
+ v-else-if="row.valueType === 3"
|
|
|
+ :loading="loadingStates[row.pcaId] || false"
|
|
|
+ @click="handleClick(row)"
|
|
|
+ ></el-button>
|
|
|
+ <div v-else>{{ row.valueDef }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="unit" label="单位" width="100">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-select
|
|
|
+ v-if="row.unitType !== '无'"
|
|
|
+ v-model="row.unitDef"
|
|
|
+ placeholder="请选择"
|
|
|
+ @focus="fetchUnitsForRow(row)"
|
|
|
+ :loading="moreOptionsLoading"
|
|
|
+ class="full-width-select"
|
|
|
>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- <div v-else>{{ row.unitType }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <div class="footbtn">
|
|
|
- <el-button @click="savecomvalue">保存</el-button>
|
|
|
+ <el-option
|
|
|
+ v-for="option in row.unitoptions"
|
|
|
+ :key="option.utId"
|
|
|
+ :label="option.value"
|
|
|
+ :value="option.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <div v-else>{{ row.unitType }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div class="footbtn">
|
|
|
+ <el-button @click="savecomvalue">保存</el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</Pane>
|
|
|
<Pane min-size="20" size="50" max-size="80">
|
|
@@ -845,7 +847,6 @@ const saveTabelDialog = () => {
|
|
|
const rowFields = tableColumns.value.map((col) => {
|
|
|
const cellData = row[col.code]
|
|
|
if (!cellData) return ""
|
|
|
- console.log("cellDataqqqqqqqq", cellData);
|
|
|
|
|
|
|
|
|
// 组装 cdvId-pcadgId-pcadId-value-unit 格式
|
|
@@ -854,7 +855,7 @@ const saveTabelDialog = () => {
|
|
|
cellData.pcadgId || "", // pcadgId (行号)
|
|
|
cellData.pcadId || "", // pcadId
|
|
|
cellData.value || "", // value
|
|
|
- cellData.unit || "" // unit
|
|
|
+ cellData.unit != ''? cellData.unit : "无" // unit
|
|
|
].join(",") // 字段间用逗号分隔
|
|
|
})
|
|
|
|
|
@@ -1044,16 +1045,26 @@ defineExpose({
|
|
|
}
|
|
|
|
|
|
.datatable {
|
|
|
+ flex: 1; /* 表格自动填充剩余空间 */
|
|
|
+ overflow: auto; /* 表格内容可滚动 */
|
|
|
width: 100%;
|
|
|
- max-height: 290px;
|
|
|
- overflow: auto;
|
|
|
+ min-height: 80px; /* 可选:防止数据太少时表格高度塌缩 */
|
|
|
+}
|
|
|
+
|
|
|
+.table-wrapper {
|
|
|
+ height: 100%; /* 占满整个 Pane */
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ overflow: hidden; /* 防止外层滚动 */
|
|
|
}
|
|
|
|
|
|
.footbtn {
|
|
|
display: flex;
|
|
|
+ padding: 8px 20px;
|
|
|
+ background: #fff;
|
|
|
+ border-top: 1px solid #ebeef5;
|
|
|
+ flex-shrink: 0; /* 防止按钮被压缩 */
|
|
|
justify-content: end;
|
|
|
- align-items: center;
|
|
|
- padding: 10px 20px;
|
|
|
}
|
|
|
|
|
|
.unitheader {
|