|
@@ -1,7 +1,7 @@
|
|
|
<!--
|
|
|
* @Author: your name
|
|
|
* @Date: 2024-05-29 09:14:23
|
|
|
- * @LastEditTime: 2024-06-12 14:37:26
|
|
|
+ * @LastEditTime: 2024-06-14 16:06:02
|
|
|
* @LastEditors: bogon
|
|
|
* @Description: In User Settings Edit
|
|
|
* @FilePath: /performance-test/src/views/performance/components/EditAnalysis.vue
|
|
@@ -9,21 +9,11 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
<el-form ref="form" :model="form" label-width="120px">
|
|
|
- <el-row type="flex" justify="end">
|
|
|
- <el-col :span="5">
|
|
|
- <el-form-item class="searchFrom">
|
|
|
- <el-button type="primary" @click="onSubmit" size="small"
|
|
|
- >分析</el-button
|
|
|
- >
|
|
|
- <el-button size="small">重置</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
<el-collapse v-model="activeNames">
|
|
|
<el-collapse-item title="基础筛选:" name="1">
|
|
|
<el-row class="flex-wrap-row" :gutter="5">
|
|
|
<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="5">
|
|
|
- <el-form-item label="分析类型">
|
|
|
+ <el-form-item label="分析类型" prop="configAnalysis">
|
|
|
<el-select
|
|
|
v-model="form.configAnalysis"
|
|
|
placeholder="请选择分析类型"
|
|
@@ -38,7 +28,7 @@
|
|
|
></el-option>
|
|
|
</el-select> </el-form-item
|
|
|
></el-col>
|
|
|
- <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="5">
|
|
|
+ <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="5" prop="turbines">
|
|
|
<el-form-item label="机组编号">
|
|
|
<el-select
|
|
|
clearable
|
|
@@ -54,6 +44,13 @@
|
|
|
></el-option>
|
|
|
</el-select> </el-form-item
|
|
|
></el-col>
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item class="searchFrom">
|
|
|
+ <el-button type="primary" @click="onSubmit" size="small"
|
|
|
+ >查询</el-button
|
|
|
+ >
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
</el-collapse-item>
|
|
|
</el-collapse>
|
|
@@ -64,32 +61,36 @@
|
|
|
><div class="left">
|
|
|
<div>
|
|
|
<span>机组编号:</span>
|
|
|
- <el-select v-model="value" placeholder="请选择" size="small">
|
|
|
+ <el-select
|
|
|
+ v-model="engineCode"
|
|
|
+ placeholder="请选择机组编号"
|
|
|
+ size="small"
|
|
|
+ clearable
|
|
|
+ @change="handleEngineCode"
|
|
|
+ >
|
|
|
<el-option
|
|
|
- v-for="item in options"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- >
|
|
|
- </el-option>
|
|
|
+ v-for="item in windEngineGroupList"
|
|
|
+ :key="item"
|
|
|
+ :label="item"
|
|
|
+ :value="item"
|
|
|
+ ></el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
- <div>1.额定功率(Rated Power):指发电机组在标准工况下</div>
|
|
|
- <div>2.发电机类型(Generator Type):</div>
|
|
|
- <div>3.经度(Longitude):</div>
|
|
|
- <div>4.维度(Dimensionality):</div>
|
|
|
- <div>5.海拔高度(Altitude):</div>
|
|
|
- <div>6.并网时间(Grid connection time):</div>
|
|
|
- <div>7.是否标杆(Benchmarking or not):</div>
|
|
|
- <div>8.地理位置(Location):不同地理位置的气候条件</div>
|
|
|
+ <div>1.额定容量:{{ windDetail.ratedCapacity }}</div>
|
|
|
+ <!-- <div>2.发电机类型(Generator Type):{{}}</div> -->
|
|
|
+ <div>2.风机编号:{{ windDetail.engineCode }}</div>
|
|
|
+ <div>3.经度(Longitude):{{ windDetail.longitude }}</div>
|
|
|
+ <div>4.维度(Dimensionality):{{ windDetail.latitude }}</div>
|
|
|
+ <div>5.海拔高度(Altitude):{{ windDetail.elevationHeight }}</div>
|
|
|
+ <div>6.风机名称:{{ windDetail.engineName }}</div>
|
|
|
<div>
|
|
|
- 9.供应商信息(Manufacturer
|
|
|
- Information):制造商的信誉、技术水平和售后
|
|
|
+ 7.是否标杆(Benchmarking or not):{{ windDetail.sightcing }}
|
|
|
</div>
|
|
|
- <div>
|
|
|
- 10.维护需求(Maintenance Requirements):风力发电机组需要定期
|
|
|
- </div>
|
|
|
- <div>11.预期寿命(Expected Lifetime):风力发电机组的设计寿命</div>
|
|
|
+ <div>8.风场编号:{{ windDetail.fieldCode }}</div>
|
|
|
+ <div>9.轮毂高度:{{ windDetail.hubHeight }}</div>
|
|
|
+ <div>10.机型编号:{{ windDetail.millTypeCode }}</div>
|
|
|
+ <div>11.切入风速:{{ windDetail.ratedCutInWindspeed }}</div>
|
|
|
+ <div>12.切出风速:{{ windDetail.ratedCutOutWindspeed }}</div>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
<el-col :span="12"
|
|
@@ -98,7 +99,8 @@
|
|
|
></el-col>
|
|
|
</el-row>
|
|
|
</el-card>
|
|
|
- <div class="abalysisType">
|
|
|
+ <el-empty :image-size="200" v-if="flage"></el-empty>
|
|
|
+ <div class="abalysisType" v-else>
|
|
|
<el-tabs
|
|
|
v-model="editableTabsValue"
|
|
|
type="card"
|
|
@@ -106,15 +108,15 @@
|
|
|
@edit="handleTabsEdit"
|
|
|
>
|
|
|
<el-tab-pane
|
|
|
- :key="item.name"
|
|
|
+ :key="item.commentTypeCode"
|
|
|
v-for="(item, index) in editableTabs"
|
|
|
- :label="item.title"
|
|
|
- :name="item.name"
|
|
|
+ :label="item.commentTypeName"
|
|
|
+ :name="item.commentTypeCode"
|
|
|
>
|
|
|
- {{ item.content }}
|
|
|
+ <!-- {{ item.comment }} -->
|
|
|
<tinymce-editor
|
|
|
ref="editor"
|
|
|
- v-model="msg"
|
|
|
+ v-model="item.comment"
|
|
|
:disabled="disabled"
|
|
|
@onClick="onClick"
|
|
|
>
|
|
@@ -122,10 +124,44 @@
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</div>
|
|
|
+
|
|
|
+ <el-dialog
|
|
|
+ title="新增"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ width="30%"
|
|
|
+ :before-close="handleClose"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ :inline="true"
|
|
|
+ ref="formInline"
|
|
|
+ :model="formInline"
|
|
|
+ :rules="rules"
|
|
|
+ class="demo-form-inline"
|
|
|
+ >
|
|
|
+ <el-form-item label="类型名称" prop="commentTypeName">
|
|
|
+ <el-input
|
|
|
+ v-model="formInline.commentTypeName"
|
|
|
+ placeholder="请输入类型名称"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="addAnalysisNameFn('formInline')"
|
|
|
+ >确 定</el-button
|
|
|
+ >
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import { analysisEditQuery } from "@/api/performance";
|
|
|
+import {
|
|
|
+ analysisDetail,
|
|
|
+ analysisEditQuery,
|
|
|
+ delAnalysisCommentType,
|
|
|
+ addAnalysisCommentType,
|
|
|
+} from "@/api/performance";
|
|
|
+import { getWindEngineGroup } from "@/api/ledger";
|
|
|
import TinymceEditor from "@/components/Tinymce.vue";
|
|
|
export default {
|
|
|
components: {
|
|
@@ -133,27 +169,33 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ engineCode: null, //台账机组编号
|
|
|
+ windDetail: {},
|
|
|
+ flage: false,
|
|
|
+ rules: {
|
|
|
+ commentTypeName: {
|
|
|
+ required: true,
|
|
|
+ message: "请输入类型名称",
|
|
|
+ trigger: "blur",
|
|
|
+ },
|
|
|
+ },
|
|
|
value4: "",
|
|
|
value1: "",
|
|
|
- form: {},
|
|
|
+ form: {
|
|
|
+ configAnalysis: "",
|
|
|
+ turbines: "",
|
|
|
+ },
|
|
|
activeNames: ["1"],
|
|
|
msg: "",
|
|
|
disabled: false,
|
|
|
value: "",
|
|
|
options: [],
|
|
|
- editableTabsValue: "2",
|
|
|
- editableTabs: [
|
|
|
- {
|
|
|
- title: "Tab 1",
|
|
|
- name: "1",
|
|
|
- content: "Tab 1 content",
|
|
|
- },
|
|
|
- {
|
|
|
- title: "Tab 2",
|
|
|
- name: "2",
|
|
|
- content: "Tab 2 content",
|
|
|
- },
|
|
|
- ],
|
|
|
+ editableTabsValue: "",
|
|
|
+ formInline: {
|
|
|
+ commentTypeName: "",
|
|
|
+ },
|
|
|
+ dialogVisible: false,
|
|
|
+ editableTabs: [],
|
|
|
analysisTypeList: [],
|
|
|
windEngineGroupList: [],
|
|
|
formData: { content: "<p>Hello, Tinymce!</p>" },
|
|
@@ -165,6 +207,82 @@ export default {
|
|
|
this.getWindCodeList();
|
|
|
},
|
|
|
methods: {
|
|
|
+ handleEngineCode(e) {
|
|
|
+ console.log(e);
|
|
|
+ this.engineCode = e;
|
|
|
+ this.getWindEngList();
|
|
|
+ },
|
|
|
+ async getWindEngList() {
|
|
|
+ try {
|
|
|
+ const res = await getWindEngineGroup({
|
|
|
+ engineCode: this.engineCode,
|
|
|
+ });
|
|
|
+ this.windDetail = res.data;
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getDetailInfo() {
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append("batchCode", this.$route.query.batchCode);
|
|
|
+ formData.append("analysisTypeCode", this.form.configAnalysis);
|
|
|
+ formData.append("fieldEngineCode", this.form.turbines);
|
|
|
+ //获取详情信息
|
|
|
+ try {
|
|
|
+ const response = await analysisDetail(formData);
|
|
|
+ if (response.data.length === 0 || response.data === null) {
|
|
|
+ this.flage = true;
|
|
|
+ } else {
|
|
|
+ this.flage = false;
|
|
|
+ }
|
|
|
+ if (
|
|
|
+ response.data.length > 0 &&
|
|
|
+ response.data[0].commentDescriptionVos &&
|
|
|
+ response.data[0].commentDescriptionVos.length > 0
|
|
|
+ ) {
|
|
|
+ this.editableTabs = this.mergeData(
|
|
|
+ response.data[0].commentDescriptionVos,
|
|
|
+ response.data[0].commentTypeRelations
|
|
|
+ );
|
|
|
+ this.editableTabsValue =
|
|
|
+ this.editableTabs.length > 0
|
|
|
+ ? this.editableTabs[0].commentTypeCode
|
|
|
+ : "";
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mergeData(arr, brr) {
|
|
|
+ // 创建一个新的结果数组
|
|
|
+ const result = [];
|
|
|
+ // 遍历 brr 数组
|
|
|
+ brr.forEach((brrItem) => {
|
|
|
+ // 在 arr 中寻找具有相同 commentTypeCode 的项
|
|
|
+ const foundItem = arr.find(
|
|
|
+ (arrItem) => arrItem.commentTypeCode === brrItem.commentTypeCode
|
|
|
+ );
|
|
|
+ if (foundItem) {
|
|
|
+ // 如果找到了相同的项,就合并它们
|
|
|
+ result.push({
|
|
|
+ ...foundItem,
|
|
|
+ ...brrItem,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ // 如果没有找到相同的项,就将 brrItem 添加到结果数组中
|
|
|
+ result.push(brrItem);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 返回结果数组
|
|
|
+ return result;
|
|
|
+ },
|
|
|
+ handleClose(done) {
|
|
|
+ this.$confirm("确认关闭?")
|
|
|
+ .then((_) => {
|
|
|
+ done();
|
|
|
+ })
|
|
|
+ .catch((_) => {});
|
|
|
+ },
|
|
|
async getWindCodeList() {
|
|
|
try {
|
|
|
const response = await analysisEditQuery({
|
|
@@ -172,6 +290,11 @@ export default {
|
|
|
});
|
|
|
this.analysisTypeList = response.data.analysisTypeList;
|
|
|
this.windEngineGroupList = response.data.windEngineGroupList;
|
|
|
+ this.form.configAnalysis = response.data.analysisTypeList[0].typeCode;
|
|
|
+ this.form.turbines = response.data.windEngineGroupList[0];
|
|
|
+ this.engineCode = response.data.windEngineGroupList[0];
|
|
|
+ this.getDetailInfo();
|
|
|
+ this.getWindEngList();
|
|
|
} catch (error) {
|
|
|
console.error(error);
|
|
|
}
|
|
@@ -183,38 +306,83 @@ export default {
|
|
|
console.log(editor);
|
|
|
},
|
|
|
onSubmit() {
|
|
|
- console.log("submit!");
|
|
|
+ this.getDetailInfo();
|
|
|
},
|
|
|
- // 清空内容
|
|
|
- clear() {
|
|
|
- this.$refs.editor.clear();
|
|
|
+ //新增分析结果类型
|
|
|
+ addAnalysisNameFn(formName) {
|
|
|
+ this.$refs[formName].validate(async (valid) => {
|
|
|
+ if (valid) {
|
|
|
+ try {
|
|
|
+ await addAnalysisCommentType({
|
|
|
+ batchCode: this.$route.query.batchCode,
|
|
|
+ analysisTypeCode: this.form.configAnalysis,
|
|
|
+ commentTypeName: this.formInline.commentTypeName,
|
|
|
+ });
|
|
|
+ this.$refs[formName].resetFields();
|
|
|
+ this.dialogVisible = false;
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "添加成功",
|
|
|
+ });
|
|
|
+ // this.editableTabsValue=
|
|
|
+ this.getWindCodeList();
|
|
|
+ } catch (e) {
|
|
|
+ console.error(e);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log("error submit!!");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
},
|
|
|
handleTabsEdit(targetName, action) {
|
|
|
if (action === "add") {
|
|
|
- let newTabName = ++this.tabIndex + "";
|
|
|
- this.editableTabs.push({
|
|
|
- title: "New Tab",
|
|
|
- name: newTabName,
|
|
|
- content: "New Tab content",
|
|
|
- });
|
|
|
- this.editableTabsValue = newTabName;
|
|
|
+ this.dialogVisible = true;
|
|
|
+ this.formInline.commentTypeName = "";
|
|
|
}
|
|
|
if (action === "remove") {
|
|
|
- let tabs = this.editableTabs;
|
|
|
- let activeName = this.editableTabsValue;
|
|
|
- if (activeName === targetName) {
|
|
|
- tabs.forEach((tab, index) => {
|
|
|
- if (tab.name === targetName) {
|
|
|
- let nextTab = tabs[index + 1] || tabs[index - 1];
|
|
|
- if (nextTab) {
|
|
|
- activeName = nextTab.name;
|
|
|
- }
|
|
|
- }
|
|
|
+ const obj = this.editableTabs.filter(
|
|
|
+ (item) => item.commentTypeCode === targetName
|
|
|
+ )[0];
|
|
|
+ console.log(obj, "obj");
|
|
|
+ if (
|
|
|
+ obj.commentTypeName === "分析内容与可视化分析" ||
|
|
|
+ obj.commentTypeName === "现象描述" ||
|
|
|
+ obj.commentTypeName === "原因描述" ||
|
|
|
+ obj.commentTypeName === "排查建议"
|
|
|
+ ) {
|
|
|
+ this.$message({
|
|
|
+ type: "error",
|
|
|
+ message:
|
|
|
+ "分析内容与可视化分析、现象描述、原因描述、排查建议 分析类型不可删除!",
|
|
|
});
|
|
|
+ return;
|
|
|
}
|
|
|
-
|
|
|
- this.editableTabsValue = activeName;
|
|
|
- this.editableTabs = tabs.filter((tab) => tab.name !== targetName);
|
|
|
+ this.$confirm("此操作将永久删除该评价类型, 是否继续?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(async () => {
|
|
|
+ try {
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append("commentTypeCode", targetName);
|
|
|
+ await delAnalysisCommentType(formData);
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "删除成功!",
|
|
|
+ });
|
|
|
+ this.getWindCodeList();
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: "info",
|
|
|
+ message: "已取消删除",
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
},
|
|
|
},
|