From 4427240765bea364f1588e14e59329bbfadbaa20 Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期二, 11 三月 2025 13:39:54 +0800 Subject: [PATCH] element-plus 版本升级到2.9.2 模型编辑页面下拉列表替换为 虚拟化选择器,解决页面dom加载压力过大页面卡顿 --- src/views/model/pre/item/MmPredictItemForm.vue | 77 +++++++++---------------- package.json | 2 src/views/model/sche/scheme/ScheduleSchemeForm.vue | 2 src/views/model/sche/model/ScheduleModelForm.vue | 91 +++++++++++++----------------- 4 files changed, 70 insertions(+), 102 deletions(-) diff --git a/package.json b/package.json index f904721..bc1fe5f 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "driver.js": "^1.3.1", "echarts": "^5.5.0", "echarts-wordcloud": "^2.1.0", - "element-plus": "2.9.1", + "element-plus": "2.9.2", "fast-xml-parser": "^4.3.2", "highlight.js": "^11.9.0", "jsencrypt": "^3.3.2", diff --git a/src/views/model/pre/item/MmPredictItemForm.vue b/src/views/model/pre/item/MmPredictItemForm.vue index a583075..6f0ea99 100644 --- a/src/views/model/pre/item/MmPredictItemForm.vue +++ b/src/views/model/pre/item/MmPredictItemForm.vue @@ -299,18 +299,16 @@ </el-table-column> <el-table-column label="数据点" align="center"> <template #default="scope"> - <el-select + <el-select-v2 v-model="scope.row.pointid" - filterable + :options="pointList || []" + placeholder="请选择" + :props="{value:'id',label:'pointName'}" clearable + filterable @change="(value) => changeOutputPoint(value,scope.row)" - placeholder="请选择"> - <el-option - v-for="item in pointList" - :key="item.id" - :label="item.pointName" - :value="item.id"/> - </el-select> + :fit-input-width="false" + /> </template> </el-table-column> <el-table-column label="是否累计" align="center" width="150px"> @@ -334,18 +332,16 @@ </el-table-column> <el-table-column label="累计数据点" align="center"> <template #default="scope"> - <el-select + <el-select-v2 v-model="scope.row.cumulpoint" - :disabled="scope.row.iscumulant !== 1" - filterable + :options="pointList.filter(e => e.pointType === 'CUMULATE') || []" + placeholder="请选择" + :props="{value:'id',label:'pointName'}" clearable - placeholder="请选择"> - <el-option - v-for="item in pointList.filter(e => e.pointType === 'CUMULATE')" - :key="item.id" - :label="item.pointName" - :value="item.id"/> - </el-select> + filterable + :fit-input-width="false" + :disabled="scope.row.iscumulant !== 1" + /> </template> </el-table-column> <el-table-column prop="" label="操作" width="80" align="center"> @@ -402,36 +398,24 @@ </el-table-column> <el-table-column prop="" label="参数名称" align="center"> <template #default="scope"> - <el-select v-if="scope.row.modelparamtype === 'NormalItem'" + <el-select-v2 v-if="scope.row.modelparamtype === 'NormalItem'" v-model="scope.row.modelparamid" + :options="modelparamListMap['NormalItem'] || []" placeholder="请选择" + :props="{value:'value',label:'label',options:'children'}" + clearable filterable - @change="changeModelparam(scope.row)" - style="width: 100%"> - <el-option-group - v-for="group in modelparamListMap['NormalItem']" - :key="group.value" - :label="group.label" - > - <el-option - v-for="item in group.children" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-option-group> - </el-select> - <el-select v-else + :fit-input-width="false" + /> + <el-select-v2 v-else v-model="scope.row.modelparamid" + :options="modelparamListMap[scope.row.modelparamtype] || []" + placeholder="请选择" + :props="{value:'id',label:'name'}" + clearable filterable - @change="changeModelparam(scope.row)" - placeholder="请选择"> - <el-option - v-for="(item, index) in modelparamListMap[scope.row.modelparamtype]" - :key="index" - :label="item.name" - :value="item.id"/> - </el-select> + :fit-input-width="false" + /> </template> </el-table-column> <el-table-column prop="" label="参数长度" width="120" align="center"> @@ -565,7 +549,6 @@ const pointList = ref([]) const pointMap = ref({}) const modelparamListMap = ref({}) -const modelparamMap = ref({}) const expressionList = ref([]) const fileList = ref([]) const operatorList = ['+', '-'] @@ -921,10 +904,6 @@ } function uploadModelError(file, err, fileList) { -} - -function changeModelparam(row) { - row.modelparamname = modelparamMap[row.modelparamid] } function changeItemtype(value) { diff --git a/src/views/model/sche/model/ScheduleModelForm.vue b/src/views/model/sche/model/ScheduleModelForm.vue index 5cdf9e9..fe9722d 100644 --- a/src/views/model/sche/model/ScheduleModelForm.vue +++ b/src/views/model/sche/model/ScheduleModelForm.vue @@ -1,5 +1,5 @@ <template> - <Dialog v-model="dialogVisible" :title="dialogTitle" width="60%"> + <Dialog v-model="dialogVisible" :title="dialogTitle" width="75%"> <el-form ref="formRef" v-loading="formLoading" @@ -138,34 +138,24 @@ label="参数名称" align="center"> <template #default="scope"> - <el-select v-if="scope.row.modelparamtype === 'NormalItem'" + <el-select-v2 v-if="scope.row.modelparamtype === 'NormalItem'" v-model="scope.row.modelparamid" + :options="modelparamListMap['NormalItem'] || []" placeholder="请选择" + :props="{value:'value',label:'label',options:'children'}" + clearable filterable - style="width: 100%"> - <el-option-group - v-for="group in modelparamListMap['NormalItem']" - :key="group.value" - :label="group.label" - > - <el-option - v-for="item in group.children" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-option-group> - </el-select> - <el-select v-else + :fit-input-width="false" + /> + <el-select-v2 v-else v-model="scope.row.modelparamid" + :options="modelparamListMap[scope.row.modelparamtype] || []" + placeholder="请选择" + :props="{value:'id',label:'name'}" + clearable filterable - placeholder="请选择"> - <el-option - v-for="(item, index) in modelparamListMap[scope.row.modelparamtype]" - :key="index" - :label="item.name" - :value="item.id"/> - </el-select> + :fit-input-width="false" + /> </template> </el-table-column> <el-table-column @@ -267,10 +257,10 @@ style="width: 100%; margin-top: 5px;"> <el-table-column prop="resultKey" label="输出key" align="center" min-width="100"> <template #default="scope"> - <el-input size="mini" v-model="scope.row.resultKey" style="width:100%;height:100%"/> + <el-input size="small" v-model="scope.row.resultKey" style="width:100%;height:100%"/> </template> </el-table-column> - <el-table-column prop="resultType" label="数据类型" align="center" min-width="150"> + <el-table-column prop="resultType" label="数据类型" align="center" width="150"> <template #default="scope"> <el-select v-model="scope.row.resultType" placeholder="请选择"> <el-option @@ -282,17 +272,17 @@ </el-select> </template> </el-table-column> - <el-table-column prop="resultPort" label="角标1" align="center" min-width="100"> + <el-table-column prop="resultPort" label="角标1" align="center" width="100"> <template #default="scope"> - <el-input-number :min="0" clearable controls-position="right" size="mini" v-model="scope.row.resultPort" style="width:100%;height:100%"/> + <el-input-number :min="0" clearable controls-position="right" size="small" v-model="scope.row.resultPort" style="width:100%;height:100%"/> </template> </el-table-column> - <el-table-column prop="resultIndex" label="角标2" align="center" min-width="100"> + <el-table-column prop="resultIndex" label="角标2" align="center" width="100"> <template #default="scope"> - <el-input-number :min="0" clearable controls-position="right" size="mini" v-model="scope.row.resultIndex" style="width:100%;height:100%"/> + <el-input-number :min="0" clearable controls-position="right" size="small" v-model="scope.row.resultIndex" style="width:100%;height:100%"/> </template> </el-table-column> - <el-table-column prop="isWrite" label="是否下发" align="center" min-width="100"> + <el-table-column prop="isWrite" label="是否下发" align="center" width="100"> <template #default="scope"> <el-switch size="small" v-model="scope.row.isWrite" :active-value="1" :inactive-value="0"/> @@ -303,29 +293,28 @@ label="测点名称" align="center" min-width="200"> <template #default="scope"> - <el-select v-model="scope.row.pointNo" - filterable - placeholder="请选择"> - <el-option - v-for="(item, index) in modelparamListMap['DATAPOINT']" - :key="index" - :label="item.name" - :value="item.itemNo"/> - </el-select> + <el-select-v2 + v-model="scope.row.pointNo" + :options="modelparamListMap['DATAPOINT'] || []" + placeholder="请选择" + :props="{value:'itemNo',label:'name'}" + clearable + filterable + :fit-input-width="false" + /> </template> </el-table-column> <el-table-column prop="disturbancePointNo’" label="无扰切换点位" align="center" min-width="200"> <template #default="scope"> - <el-select v-model="scope.row.disturbancePointNo" - clearable - filterable - placeholder="请选择"> - <el-option - v-for="(item, index) in modelparamListMap['DATAPOINT']" - :key="index" - :label="item.name" - :value="item.itemNo"/> - </el-select> + <el-select-v2 + v-model="scope.row.disturbancePointNo" + :options="modelparamListMap['DATAPOINT'] || []" + placeholder="请选择" + :props="{value:'itemNo',label:'name'}" + clearable + filterable + :fit-input-width="false" + /> </template> </el-table-column> <el-table-column label="操作" fixed="right" header-align="center" align="center" width="100"> @@ -443,7 +432,7 @@ } } // 加载参数列表 - modelparamListMap.value = await ScheduleModelApi.getModelParamList() + modelparamListMap.value = await ScheduleModelApi.getModelParamList(id) // 加载调度模型列表 getScheduleModelList() } diff --git a/src/views/model/sche/scheme/ScheduleSchemeForm.vue b/src/views/model/sche/scheme/ScheduleSchemeForm.vue index 9ee1e84..ce6f86a 100644 --- a/src/views/model/sche/scheme/ScheduleSchemeForm.vue +++ b/src/views/model/sche/scheme/ScheduleSchemeForm.vue @@ -58,7 +58,7 @@ </el-col> <el-col :span="12"> <el-form-item label="调度模型" prop="modelId"> - <el-select v-model="formData.modelId" clearable placeholder="请选择调度模型"> + <el-select v-model="formData.modelId" clearable filterable placeholder="请选择调度模型"> <el-option v-for="item in scheduleModelList" :key="item.id" -- Gitblit v1.9.3