liujiejie пре 1 година
родитељ
комит
d2943b6bc4

+ 19 - 1
src/api/performance.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2024-06-03 09:29:50
- * @LastEditTime: 2024-06-14 10:48:35
+ * @LastEditTime: 2024-06-14 14:02:53
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/api/performance。.js
@@ -127,3 +127,21 @@ export function analysis(data) {
     data,
   });
 }
+//新增 分析结果类型
+//参数 batchCode 批次  analysisTypeCode  分析编号  commentTypeCode评论编号 commentTypeName 评论类型名称
+// /analysisComment/addAnalysisCommentType
+export function addAnalysisCommentType(data) {
+  return request({
+    url: "/energy-manage-service/analysisComment/addAnalysisCommentType",
+    method: "post",
+    data,
+  });
+}
+//删除 分析结果类型 /analysisComment/delAnalysisCommentType 删除  入参 commentTypeCode评论编号
+export function delAnalysisCommentType(data) {
+  return request({
+    url: "/energy-manage-service/analysisComment/delAnalysisCommentType",
+    method: "post",
+    data,
+  });
+}

+ 9 - 0
src/components/Tinymce.vue

@@ -20,6 +20,12 @@ export default {
   components: {
     quillEditor,
   },
+  props: {
+    value: {
+      type: String,
+      defaultValue: "",
+    },
+  },
   data() {
     return {
       content: "",
@@ -50,6 +56,9 @@ export default {
       },
     };
   },
+  created() {
+    this.content = this.value;
+  },
   methods: {
     submit() {
       console.log(this.content, "this.$refs.quillEditor.getContents();");

+ 1 - 12
src/views/performance/assetssDetail.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-05-27 09:25:45
- * @LastEditTime: 2024-06-14 13:37:18
+ * @LastEditTime: 2024-06-14 14:25:04
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/assetssDetail.vue
@@ -221,17 +221,6 @@ export default {
         this.fileCheckResult = false;
       }
     },
-    async fileAddrFn1(file) {
-      try {
-        const res = await axios.get(file);
-        console.log(res, file, "res成功");
-        this.fileCheckResult1 = true;
-        return true;
-      } catch (e) {
-        console.error(file, e, "失败1111");
-        this.fileCheckResult1 = false;
-      }
-    },
     // 查询
     onSubmit() {
       this.getDetailInfo();

+ 247 - 79
src/views/performance/components/EditAnalysis.vue

@@ -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: "已取消删除",
+            });
+          });
       }
     },
   },

+ 3 - 3
src/views/performance/components/analysisEvent.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-05-29 09:13:51
- * @LastEditTime: 2024-06-14 11:53:42
+ * @LastEditTime: 2024-06-14 16:01:05
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/analysisEvent.vue
@@ -576,7 +576,7 @@ export default {
         configAnalysis: null, //分析类型
         powerFarmID: null, //风场编号//通过路由获取的默认传递的
         dataBatchNum: null, //批次号
-        scada: null, //scada数类型
+        scada: "minute", //scada数类型
         turbines: [], //机组编号
         beginTime: null, //开始时间
         endTime: null, //结束时间
@@ -705,7 +705,7 @@ export default {
         configAnalysis: null, //分析类型
         powerFarmID: this.$route.query.fieldEngineCode, //风场编号//通过路由获取的默认传递的
         dataBatchNum: this.$route.query.batchCode, //批次号
-        scada: null, //scada数类型
+        scada: "minute", //scada数类型
         turbines: [], //机组编号
         beginTime: null, //开始时间
         endTime: null, //结束时间