rui.jiang 1 год назад
Родитель
Сommit
4592d5c670

Разница между файлами не показана из-за своего большого размера
+ 1 - 16698
package-lock.json


+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "core-js": "^3.8.3",
     "css-minimizer-webpack-plugin": "^7.0.0",
     "echarts": "^5.5.0",
+    "el-tree-select": "^3.1.14",
     "element-ui": "^2.15.14",
     "happypack": "^5.0.1",
     "ol": "^9.2.3",

+ 232 - 106
src/api/ledger.js

@@ -1,223 +1,349 @@
-import request from "@/utils/request";
+import { jsonToFormData } from '@/utils/common'
+import request from '@/utils/request'
 
 // 查询
 export function getAllWindCompany(data) {
   return request({
-    url: "/energy-manage-service/api/wind/company/getAllWindCompany",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/company/getAllWindCompany',
+    method: 'post',
+    data
+  })
 }
 // 新增
 export function addCompany(data) {
   return request({
-    url: "/energy-manage-service/api/wind/company/addCompany",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/company/addCompany',
+    method: 'post',
+    data
+  })
 }
 // 编辑
 export function updateCompany(data) {
   return request({
-    url: "/energy-manage-service/api/wind/company/updateCompany",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/company/updateCompany',
+    method: 'post',
+    data
+  })
 }
 // 更改状态
 export function updateStateCompany(data) {
   return request({
-    url: "/energy-manage-service/api/wind/company/updateStateCompany",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/company/updateStateCompany',
+    method: 'post',
+    data
+  })
 }
 
-
 // 省
 export function findAllProvince(data) {
   return request({
-    url: "/energy-manage-service/api/area/findAllProvince",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/area/findAllProvince',
+    method: 'post',
+    data
+  })
 }
 
-
 // 省
 export function getCitiesByPId(data) {
   return request({
-    url: "/energy-manage-service/api/area/getCitiesByPId",
-    method: "get",
-    data,
-  });
+    url: '/energy-manage-service/api/area/getCitiesByPId',
+    method: 'get',
+    data
+  })
 }
 
 //编辑回显
 export function getWindCompany(data) {
   return request({
-    url: "/energy-manage-service/api/wind/company/getWindCompany",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/company/getWindCompany',
+    method: 'post',
+    data
+  })
 }
 
 //删除
 export function delCompany(data) {
   return request({
-    url: "/energy-manage-service/api/wind/company/delCompany",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/company/delCompany',
+    method: 'post',
+    data
+  })
 }
 // .........................测风塔页面
 // 查询
 export function getAnemometerTowerPage(data) {
   return request({
-    url: "/energy-manage-service/api/anemometer/tower/getAnemometerTowerPage",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/anemometer/tower/getAnemometerTowerPage',
+    method: 'post',
+    data
+  })
 }
 // 创建测风塔
 export function createAnemometerTower(data) {
   return request({
-    url: "/energy-manage-service/api/anemometer/tower/createAnemometerTower",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/anemometer/tower/createAnemometerTower',
+    method: 'post',
+    data
+  })
 }
 
 // 更新测风塔
 export function updateAnemometerTower(data) {
   return request({
-    url: "/energy-manage-service/api/anemometer/tower/updateAnemometerTower",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/anemometer/tower/updateAnemometerTower',
+    method: 'post',
+    data
+  })
 }
 
 // 查看详情
 export function getAnemometerTower(data) {
   return request({
-    url: "/energy-manage-service/api/anemometer/tower/getAnemometerTower",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/anemometer/tower/getAnemometerTower',
+    method: 'post',
+    data
+  })
 }
 
 // 测风塔状态
 export function updateAnemometerTowerState(data) {
   return request({
-    url: "/energy-manage-service/api/anemometer/tower/updateAnemometerTowerState",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/anemometer/tower/updateAnemometerTowerState',
+    method: 'post',
+    data
+  })
 }
 
 // 删除测风塔
 export function delAnemometerTower(data) {
   return request({
-    url: "/energy-manage-service/api/anemometer/tower/delAnemometerTower",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/anemometer/tower/delAnemometerTower',
+    method: 'post',
+    data
+  })
 }
 
 // .....................机型信息
 // 查询
 export function windEngineMillPage(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/mill/windEngineMillPage",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/engine/mill/windEngineMillPage',
+    method: 'post',
+    data
+  })
 }
 
 // 更改状态/修改
 export function updateWindEngineMill(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/mill/updateWindEngineMill",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/engine/mill/updateWindEngineMill',
+    method: 'post',
+    data
+  })
 }
 
 // 获取机型类型
 export function getDictList(data) {
   return request({
-    url: "/energy-manage-service/dict/getDictList",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/dict/getDictList',
+    method: 'post',
+    data
+  })
 }
 // 创建机型
 export function createEngineMill(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/mill/createEngineMill",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/engine/mill/createEngineMill',
+    method: 'post',
+    data
+  })
 }
 
 // 删除机型
 export function delWindEngineMill(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/mill/delWindEngineMill",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/engine/mill/delWindEngineMill',
+    method: 'post',
+    data
+  })
 }
 
 // 机型详情
 export function getWindEngineMillPageVo(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/mill/getWindEngineMillPageVo",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/engine/mill/getWindEngineMillPageVo',
+    method: 'post',
+    data
+  })
 }
-// 
+//
 // 风机查询
 export function windEngineGrouPage(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/group/windEngineGrouPage",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/engine/group/windEngineGrouPage',
+    method: 'post',
+    data
+  })
 }
 // 风机状态
 export function updateStateWindEngineGroup(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/group/updateStateWindEngineGroup",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/engine/group/updateStateWindEngineGroup',
+    method: 'post',
+    data
+  })
 }
 
 // 风机详情
 export function getWindEngineGroup(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/group/getWindEngineGroup",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/engine/group/getWindEngineGroup',
+    method: 'post',
+    data
+  })
 }
 
 // 获取风场
-export function WindFieldListPage(data) {
+export function getWindFieldNames(data) {
   return request({
-    url: "/energy-manage-service/api/wind/field/WindFieldListPage",
-    method: "post",
-    data,
-  });
+    url: '/energy-manage-service/api/wind/field/getWindFieldNames',
+    method: 'post',
+    data
+  })
 }
 
 // 删除风机
 export function delWindEngineGroup(data) {
   return request({
-    url: "/energy-manage-service/api/wind/engine/group/delWindEngineGroup",
-    method: "post",
-    data,
-  });
-}
+    url: '/energy-manage-service/api/wind/engine/group/delWindEngineGroup',
+    method: 'post',
+    data
+  })
+}
+
+// 编辑风机
+export function updateWindEngineGroup(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/engine/group/updateWindEngineGroup',
+    method: 'post',
+    data
+  })
+}
+
+// 创建
+export function createWindEngineGroup(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/engine/group/createWindEngineGroup',
+    method: 'post',
+    data
+  })
+}
+
+// 关联机型
+export function getWindEngineMillList(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/engine/mill/getWindEngineMillList',
+    method: 'post',
+    data
+  })
+}
+
+// 。。。。。。。。。。。。。。。。。。。。。。。。。
+// 风场查询
+export function WindFieldListPage(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/field/WindFieldListPage',
+    method: 'post',
+    data
+  })
+}
+// 获取测风塔集合
+export function getAnemometerTowerNameList(data) {
+  return request({
+    url: '/energy-manage-service/api/anemometer/tower/getAnemometerTowerNameList',
+    method: 'post',
+    data
+  })
+}
+
+// 获取风场状态
+export function updateWindFieldStateById(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/field/updateWindFieldStateById',
+    method: 'post',
+    data
+  })
+}
+
+// 查看风场详情
+export function getWindFieldVo(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/field/getWindFieldVo',
+    method: 'post',
+    data
+  })
+}
+
+// 创建风场
+export function createWindField(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/field/createWindField',
+    method: 'post',
+    data
+  })
+}
+
+// 编辑风场
+export function windFieldDto(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/field/WindFieldDto',
+    method: 'post',
+    data
+  })
+}
+
+// 查看车缝他
+export function getAnemometerTowerByField(data) {
+  return request({
+    url: '/energy-manage-service/api/anemometer/tower/getAnemometerTowerByField',
+    method: 'post',
+    data
+  })
+}
+
+// 查看车缝他
+export function delWindFieldById(data) {
+  return request({
+    url: '/energy-manage-service/api/wind/field/delWindFieldById',
+    method: 'post',
+    data
+  })
+}
+
+// 。。。。。。。。。。。。。。。。。。。。。上传下载
+
+// 风机下载模板
+export function getAllTemplate(data) {
+  return request({
+    url: '/energy-manage-service/sysTemplate/getAllTemplate',
+    method: 'post',
+    data
+  })
+}
+// 风机上传附件
+export function powerWordCriterionImportData(data) {
+  return request({
+    url: '/energy-manage-service/api/powerword/criterion/powerWordCriterionImportData',
+    method: 'post',
+    data: jsonToFormData(data)
+  })
+}
+
+// 风机上传附件
+export function uploadFile(data) {
+  return request({
+    url: '/upload',
+    method: 'post',
+    data
+  })
+}

+ 193 - 0
src/components/selecttree.vue

@@ -0,0 +1,193 @@
+<template>
+  <div class="selectTree">
+    <el-select
+      ref="elSelect"
+      v-model="newVal"
+      :placeholder="placeholder"
+      filterable
+      :filter-method="filterTree"
+      clearable
+      @change="$forceUpdate()"
+      @clear="clear"
+      popper-append-to-body
+    >
+      <el-option :value="newVal" :label="label" class="hasTree" disabled>
+        <el-tree
+          :data="openSearch ? searchData : list"
+          ref="tree"
+          node-key="companyCode"
+          :expand-on-click-node="false"
+          :default-expanded-keys="defaultExpandedKeys"
+          :current-node-key="newVal"
+          highlight-current
+          :props="defaultProps"
+          check-on-click-node
+          auto-expand-parent
+          @node-click="handleNodeClick"
+        ></el-tree>
+      </el-option>
+    </el-select>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "ElSelectTree",
+  props: {
+    value: {
+      type: String,
+      require: true,
+    },
+    list: {
+      //树状列表:{label:'',value:'',children:[]}
+      type: Array,
+      default: () => {
+        return [];
+      },
+    },
+    placeholder: {
+      type: String,
+      default: "请选择",
+    },
+  },
+
+  data() {
+    return {
+      defaultProps: {
+        children: "children",
+        label: "companyName",
+        value: "companyCode",
+      },
+      newVal: "", //本页面选中的数据
+      label: "",
+      selectTree: {},
+      defaultExpandedKeys: [], //默认展开
+      searchData: [], //带搜索数据
+      openSearch: false, //是否开启搜索
+    };
+  },
+
+  watch: {
+    value: {
+      handler(value) {
+        if (value) {
+          this.newVal = value;
+          this.defaultExpandedKeys = [value];
+          this.$nextTick(() => {
+            this.$refs.tree.setCurrentKey(value); //设置默认选择
+          });
+          const check = this.findLabel(this.list, value);
+          if (check) {
+            this.label = check.companyName;
+          }
+        }
+      },
+      deep: true, // 深度监听
+      immediate: true, //首次触发
+    },
+    newVal(value) {
+      const check = this.findLabel(this.list, value);
+      if (check) {
+        this.label = check.companyName;
+      }
+      this.$emit("input", value);
+    },
+  },
+  created() {
+    // el-select 中加了filterable 点击箭头回收不去问题
+    Object.getPrototypeOf(
+      this.$options.components
+    ).ElSelect.options.methods.handleFocus = () => {};
+  },
+  mounted() {},
+  methods: {
+    //节点选择事件
+    handleNodeClick(data) {
+      this.newVal = data.companyCode;
+      this.label = data.companyName;
+      this.$refs.elSelect.blur();
+      this.searchData = [];
+      this.openSearch = false;
+      this.$emit("change", data);
+    },
+    //筛选树
+    async filterTree(value) {
+      if (value) {
+        this.openSearch = true;
+        this.searchData = [];
+        await this.findItem(this.list, value);
+      } else {
+        this.openSearch = false;
+        this.searchData = [];
+      }
+    },
+    //递归筛选,查询时用
+    findItem(arr, value) {
+      return new Promise((resolve) => {
+        for (let i = 0; i < arr.length; i++) {
+          const item = arr[i];
+          if (item.label.includes(value)) {
+            this.searchData.push(item);
+          } else if (item.children && item.children.length > 0) {
+            this.findItem(item.children, value);
+          }
+        }
+        resolve(true);
+      });
+    },
+    //递归筛选,回显label
+    findLabel(arr, value) {
+      for (let i = 0; i < arr.length; i++) {
+        const item = arr[i];
+        if (item.companyCode === value) {
+          return item;
+        } else if (item.children && item.children.length > 0) {
+          const result = this.findLabel(item.children, value);
+          if (result) {
+            return result;
+          }
+        }
+      }
+    },
+    //清空事件
+    clear() {
+      this.$refs.tree.setCurrentKey(null); //清空高亮
+      this.label = "";
+      this.newVal = "";
+      this.searchData = [];
+      this.openSearch = false;
+      this.$emit("change", {});
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.selectTree {
+  display: inline-block;
+  width: 100%;
+}
+
+.el-select {
+  width: 100%;
+}
+
+.hasTree {
+  padding: 0 !important;
+  margin: 0;
+  overflow: auto;
+  line-height: normal;
+  height: auto;
+  cursor: default !important;
+  font-weight: 500 !important;
+
+  ::v-deep .el-tree-node__content {
+    height: 34px;
+    line-height: 34px;
+  }
+
+  ::v-deep .el-tree-node__label {
+    font-size: 14px !important;
+  }
+}
+</style>

+ 33 - 14
src/utils/common.js

@@ -1,4 +1,3 @@
-import { Message } from 'element-ui'
 export const uuid = (len = 16, radix = 10) => {
   const chars =
     '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
@@ -43,14 +42,6 @@ export const copy = (data) => {
   document.body.removeChild(copy)
 }
 
-export const jsonToFormData = (data) => {
-  const formData = new FormData()
-  Object.keys(data).forEach((key) => {
-    formData.append(key, data[key])
-  })
-  return formData
-}
-
 /**
  *
  * @param {object} positionData {
@@ -65,15 +56,15 @@ export const getRotatePosition = (positionData) => {
   return {
     x:
       (positionData.originPosition.x - positionData.centerPosition.x) *
-        Math.cos(radian) -
+      Math.cos(radian) -
       (positionData.originPosition.y - positionData.centerPosition.y) *
-        Math.sin(radian) +
+      Math.sin(radian) +
       positionData.centerPosition.x,
     y:
       (positionData.originPosition.y - positionData.centerPosition.y) *
-        Math.cos(radian) +
+      Math.cos(radian) +
       (positionData.originPosition.x - positionData.centerPosition.x) *
-        Math.sin(radian) +
+      Math.sin(radian) +
       positionData.centerPosition.y
   }
 }
@@ -270,6 +261,35 @@ export function formatDate(timestamp, formate) {
   }
   return Format(formate)
 }
+export const jsonToFormData = (json) => {
+  const formData = new FormData()
+  for (const key in json) {
+    if (Object.prototype.hasOwnProperty.call(json, key)) {
+      const value = json[key]
+      if (Array.isArray(value)) {
+        for (let i = 0; i < value.length; i++) {
+          let item
+          if (typeof value[i] === 'string') {
+            item = value[i]
+            formData.append(`${key}[${i}]`, item)
+          } else if (value[i] instanceof File) {
+            item = value[i]
+            formData.append(`${key}`, item)
+          } else {
+            item = JSON.stringify(value[i])
+            formData.append(`${key}[${i}]`, item)
+          }
+        }
+      } else if (value instanceof File) {
+        formData.append(key, value)
+      } else {
+        const item = typeof value === 'string' ? value : JSON.stringify(value)
+        formData.append(key, item)
+      }
+    }
+  }
+  return formData
+}
 export default {
   uuid,
   copy,
@@ -282,7 +302,6 @@ export default {
   downloadWord,
   base64ToBlob,
   downloadExcel,
-  findExcelBase64,
   convertTimestamp,
   formatDate
 }

+ 255 - 160
src/views/ledger/anemometer.vue

@@ -3,60 +3,134 @@
     <div class="condition">
       <el-form :inline="true" :model="formInline" class="demo-form-inline">
         <el-form-item label="测风塔名称:">
-          <el-input v-model="formInline.anemometerName" placeholder="请输入测风塔名称" size="small"></el-input>
+          <el-input
+            v-model="formInline.anemometerName"
+            placeholder="请输入测风塔名称"
+            size="small"
+          ></el-input>
         </el-form-item>
         <el-form-item label="选择日期:" size="small">
-          <el-date-picker v-model="formInline.timeQuantum" type="daterange" range-separator="至" start-placeholder="开始日期"
-            end-placeholder="结束日期" @change="onDateChange">
+          <el-date-picker
+            v-model="formInline.timeQuantum"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            @change="onDateChange"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" @click="onSubmit" size="small">查询</el-button>
+          <el-button type="primary" @click="onSubmit" size="small"
+            >查询</el-button
+          >
           <el-button @click="reset" size="small">重置</el-button>
         </el-form-item>
       </el-form>
     </div>
     <div class="list-page">
       <div class="newly">
-        <el-button type="primary" @click="newnuedialog" size="small">新增</el-button>
+        <el-button type="primary" @click="newnuedialog" size="small"
+          >新增</el-button
+        >
       </div>
 
-      <el-table class="center-align-table" :data="tableData" border :cell-style="rowStyle">
-        <el-table-column align="center" fixed prop="anemometerName" label="测风塔名称">
+      <el-table
+        class="center-align-table"
+        :data="tableData"
+        border
+        :cell-style="rowStyle"
+      >
+        <el-table-column
+          align="center"
+          fixed
+          prop="anemometerName"
+          label="测风塔名称"
+        >
           <template slot-scope="scope">
-            <el-button @click="particulars(scope.row)" type="text" size="small">{{ scope.row.anemometerName
-              }}</el-button>
+            <el-button
+              @click="particulars(scope.row)"
+              type="text"
+              size="small"
+              >{{ scope.row.anemometerName }}</el-button
+            >
           </template>
         </el-table-column>
 
-        <el-table-column prop="anemometerCode" align="center" label="测风塔编号">
+        <el-table-column
+          prop="anemometerCode"
+          align="center"
+          label="测风塔编号"
+        >
         </el-table-column>
 
-        <el-table-column prop="longitude" align="center" label="经度" width="200">
+        <el-table-column
+          prop="longitude"
+          align="center"
+          label="经度"
+          width="200"
+        >
         </el-table-column>
 
-        <el-table-column prop="latitude" align="center" label="纬度" width="200">
+        <el-table-column
+          prop="latitude"
+          align="center"
+          label="纬度"
+          width="200"
+        >
         </el-table-column>
         <el-table-column prop="state" align="center" label="状态" width="100">
           <template slot-scope="{ row }">
-            {{ row.state == 1 ? "启用" : "停用" }}
+            {{ row.state == 1 ? '启用' : '停用' }}
           </template>
         </el-table-column>
         <el-table-column prop="createTime" align="center" label="创建时间">
         </el-table-column>
-        <el-table-column prop="transition" align="center" fixed="right" label="操作" width="200">
+        <el-table-column
+          prop="transition"
+          align="center"
+          fixed="right"
+          label="操作"
+          width="200"
+        >
           <template slot-scope="scope">
-            <el-button @click="compile(scope.row)" type="text" size="small">编辑</el-button>
-
-            <el-button v-if="scope.row.state == 0" @click="start(scope.row, 1)" type="text" size="small">启用</el-button>
-            <el-button v-else style="color: #666" @click="start(scope.row, 0)" type="text" size="small">停用</el-button>
-            <el-button style="color: #f00" @click="deleted(scope.row)" type="text" size="small">删除</el-button>
+            <el-button @click="compile(scope.row)" type="text" size="small"
+              >编辑</el-button
+            >
+
+            <el-button
+              v-if="scope.row.state == 0"
+              @click="start(scope.row, 1)"
+              type="text"
+              size="small"
+              >启用</el-button
+            >
+            <el-button
+              v-else
+              style="color: #666"
+              @click="start(scope.row, 0)"
+              type="text"
+              size="small"
+              >停用</el-button
+            >
+            <el-button
+              style="color: #f00"
+              @click="deleted(scope.row)"
+              type="text"
+              size="small"
+              >删除</el-button
+            >
           </template>
         </el-table-column>
       </el-table>
       <div class="pagination-container">
-        <el-pagination @current-change="handleCurrentChange" :current-page.sync="formInline.pageNum"
-          layout="total, prev, pager, next" :page-size="formInline.pageSize" :total="formInline.totalSize">
+        <el-pagination
+          @current-change="handleCurrentChange"
+          :current-page.sync="formInline.pageNum"
+          layout="total, prev, pager, next"
+          :page-size="formInline.pageSize"
+          :total="formInline.totalSize"
+        >
         </el-pagination>
       </div>
     </div>
@@ -64,13 +138,30 @@
     <!-- 弹出层 -->
 
     <!-- 新增 -->
-    <el-dialog :title="title" :visible.sync="nuedialog" width="860px" @close="resetForm">
+    <el-dialog
+      :title="title"
+      :visible.sync="nuedialog"
+      width="860px"
+      @close="resetForm"
+    >
       <div class="addition">
         <span @click="addition">
-          <SvgIcons name="jia" class="jia" width="20px" height="22px" color="#222"></SvgIcons>
+          <SvgIcons
+            name="jia"
+            class="jia"
+            width="20px"
+            height="22px"
+            color="#222"
+          ></SvgIcons>
         </span>
         <span @click="subtraction">
-          <SvgIcons name="jian" class="jian" width="20px" height="22px" color="#222"></SvgIcons>
+          <SvgIcons
+            name="jian"
+            class="jian"
+            width="20px"
+            height="22px"
+            color="#222"
+          ></SvgIcons>
         </span>
       </div>
       <div class="general">
@@ -87,11 +178,18 @@
           <p>纬度:</p>
           <el-input v-model="longitude"></el-input>
         </div>
-        <div v-for="(tower, index) in anemometerTowerHeightDtoList || [
-          { anemometerHeight: '' },
-        ]" :key="index" class="condition">
+        <div
+          v-for="(tower, index) in anemometerTowerHeightDtoList || [
+            { anemometerHeight: '' }
+          ]"
+          :key="index"
+          class="condition"
+        >
           <p>测风塔高度{{ index + 1 }}:</p>
-          <el-input v-model="tower.anemometerHeight" placeholder="请输入测风塔高度"></el-input>
+          <el-input
+            v-model="tower.anemometerHeight"
+            placeholder="请输入测风塔高度"
+          ></el-input>
         </div>
       </div>
 
@@ -102,12 +200,12 @@
     </el-dialog>
 
     <!-- 测风塔详情 -->
-    <el-dialog title="详情" :visible.sync="unusualdialog" width="800px">
+    <el-dialog title="详情" :visible.sync="unusualdialog" width="400px">
       <p>测风塔名称:{{ hightower.anemometerName }}</p>
       <p>测风塔编号:{{ hightower.anemometerCode }}</p>
       <p>经度:{{ hightower.longitude }}</p>
       <p>维度:{{ hightower.latitude }}</p>
-      <p>状态: {{ hightower.state === 1 ? "启用" : "停用" }}</p>
+      <p>状态: {{ hightower.state === 1 ? '启用' : '停用' }}</p>
       <p v-for="(item, index) in cftList" :key="index">
         测风塔高度:{{ item.anemometerHeight }}米
       </p>
@@ -117,64 +215,63 @@
 
 <script>
 import {
-  getAnemometerTowerPage,
   createAnemometerTower,
-  updateAnemometerTower,
-  getAnemometerTower,
-  updateAnemometerTowerState,
   delAnemometerTower,
-} from "@/api/ledger.js";
-import { create } from "ol/transform";
+  getAnemometerTower,
+  getAnemometerTowerPage,
+  updateAnemometerTower,
+  updateAnemometerTowerState
+} from '@/api/ledger.js'
 export default {
   data() {
     return {
       tableData: [],
       formInline: {
-        anemometerName: "",
+        anemometerName: '',
         timeQuantum: [],
         pageNum: 1,
         pageSize: 10,
-        totalSize: 0,
+        totalSize: 0
       },
-      startDate: "",
-      endDate: "",
+      startDate: '',
+      endDate: '',
       // 新增测风塔信息
-      anemometerName: "",
-      latitude: "",
-      longitude: "",
+      anemometerName: '',
+      latitude: '',
+      longitude: '',
       anemometerTowerHeightDtoList: [
         {
-          anemometerHeight: "",
-        },
-      ], errors: [],
+          anemometerHeight: ''
+        }
+      ],
+      errors: [],
       hightower: [],
       cftList: [],
       // 新增信息
       nuedialog: false,
       unusualdialog: false,
-      title: "",
+      title: '',
       isEdit: false,
-      detail: {},
-    };
+      detail: {}
+    }
   },
   created() {
-    this.onSubmit();
+    this.onSubmit()
   },
   methods: {
-
     rowStyle() {
-      return "text-align:center";
+      return 'text-align:center'
     },
     onDateChange(date) {
       if (Array.isArray(date)) {
-        this.startDate = this.$formatDate(date[0]);
-        this.endDate = this.$formatDate(date[1]);
+        this.startDate = this.$formatDate(date[0])
+        this.endDate = this.$formatDate(date[1])
         if (this.endDate < this.startDate) {
-          this.endDate = this.startDate;
+          this.endDate = this.startDate
         }
       } else {
-        this.startDate = null;
-        this.endDate = null;
+        this.startDate = null
+        this.endDate = null
       }
     },
 
@@ -185,195 +282,194 @@ export default {
         beginTime: this.startDate || undefined,
         endTime: this.endDate || undefined,
         pageNum: this.formInline.pageNum,
-        pageSize: this.formInline.pageSize,
-      };
+        pageSize: this.formInline.pageSize
+      }
       getAnemometerTowerPage(paramsData).then((res) => {
-        this.tableData = res.data.list;
-        this.formInline.totalSize = res.data.totalSize;
-      });
+        this.tableData = res.data.list
+        this.formInline.totalSize = res.data.totalSize
+      })
     },
     // 重置
     reset() {
-      this.formInline.anemometerName = "";
-      this.formInline.timeQuantum = [];
-      this.endDate = "";
-      this.startDate = "";
+      this.formInline.anemometerName = ''
+      this.formInline.timeQuantum = []
+      this.endDate = ''
+      this.startDate = ''
     },
     // 重置
     resetForm() {
-      this.anemometerName = "";
-      this.latitude = "";
-      this.longitude = "";
-      this.anemometerTowerHeightDtoList = [{
-        anemometerHeight: "",
-      },];
+      this.anemometerName = ''
+      this.latitude = ''
+      this.longitude = ''
+      this.anemometerTowerHeightDtoList = [
+        {
+          anemometerHeight: ''
+        }
+      ]
     },
     //打开新增
     newnuedialog() {
-      this.nuedialog = true;
-      this.title = "新增";
+      this.nuedialog = true
+      this.title = '新增'
     },
     // 新增提交
     newly() {
-      // Check if tower.anemometerHeight is empty for any tower
       const isEmptyAnemometerHeight = this.anemometerTowerHeightDtoList.some(
-        (tower) => !tower.anemometerHeight.trim()
-      );
+        (tower) =>
+          !tower.anemometerHeight || !tower.anemometerHeight.toString().trim()
+      )
 
-      // If any tower has an empty anemometerHeight, show a warning message and prevent submission
       if (isEmptyAnemometerHeight) {
         this.$message({
-          message: "测风塔高度不能为空",
-          type: "warning",
-        });
-        return;
+          message: '测风塔高度不能为空',
+          type: 'warning'
+        })
+        return
       }
 
       // Other validation checks
       if (!this.anemometerName) {
         this.$message({
-          message: "请填写测风塔名称",
-          type: "warning",
-        });
-        return;
+          message: '请填写测风塔名称',
+          type: 'warning'
+        })
+        return
       }
       if (!this.latitude) {
         this.$message({
-          message: "请填写纬度",
-          type: "warning",
-        });
-        return;
+          message: '请填写纬度',
+          type: 'warning'
+        })
+        return
       }
       if (!this.longitude) {
         this.$message({
-          message: "请填写经度",
-          type: "warning",
-        });
-        return;
+          message: '请填写经度',
+          type: 'warning'
+        })
+        return
       }
-
-      // Proceed with submission if all validations pass
       let paramsData = {
         anemometerName: this.anemometerName,
         latitude: this.latitude,
         longitude: this.longitude,
-        anemometerTowerHeightDtoList: this.anemometerTowerHeightDtoList,
-      };
+        anemometerTowerHeightDtoList: this.anemometerTowerHeightDtoList
+      }
 
       if (!this.isEdit) {
         createAnemometerTower(paramsData).then((res) => {
-          this.nuedialog = false;
-          this.$message.success("新增成功");
-          this.onSubmit();
-        });
+          this.nuedialog = false
+          this.$message.success('新增成功')
+          this.onSubmit()
+        })
       } else {
-        paramsData.anemometerCode = this.detail.anemometerCode;
+        paramsData.anemometerCode = this.detail.anemometerCode
         // delete objectval.parentCode
         updateAnemometerTower(paramsData).then((res) => {
-          this.isEdit = false;
-          this.nuedialog = false;
-          this.onSubmit();
-          this.$message.success("编辑成功");
-        });
+          this.isEdit = false
+          this.nuedialog = false
+          this.onSubmit()
+          this.$message.success('编辑成功')
+        })
       }
-      this.resetForm();
+      this.resetForm()
     },
 
     // 查看详情
     particulars(row) {
       getAnemometerTower({ anemometerCode: row.anemometerCode }).then((res) => {
-        this.hightower = res.data;
-        this.cftList = res.data.list;
-      });
-      this.unusualdialog = true;
+        this.hightower = res.data
+        this.cftList = res.data.list
+      })
+      this.unusualdialog = true
     },
     // 启用/停用
     start(row, type) {
       let objectval = {
         anemometerCode: row.anemometerCode,
-        state: type === 0 ? 0 : 1,
-      };
+        state: type === 0 ? 0 : 1
+      }
       updateAnemometerTowerState(objectval).then((res) => {
         this.$message({
-          message: "状态已更新成功",
-          type: "success",
-        });
+          message: '状态已更新成功',
+          type: 'success'
+        })
         // this.$message(`${type === 1 ? '状态已更新成功' : '状态已更新成功'}`);
-        row.state = type === 1 ? 0 : 1;
-        this.onSubmit();
-      });
+        row.state = type === 1 ? 0 : 1
+        this.onSubmit()
+      })
     },
     // 删除
     deleted(row) {
-      console.log(row, "row");
-      if (row.state == "1") {
+      console.log(row, 'row')
+      if (row.state == '1') {
         this.$message({
-          type: "error",
-          message: "该项处于启用状态,无法删除!",
-        });
-        return;
+          type: 'error',
+          message: '该项处于启用状态,无法删除!'
+        })
+        return
       }
-      this.$confirm("此操作将永久删除该文件,是否继续?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
+      this.$confirm('此操作将永久删除该文件,是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
       })
         .then(() => {
           delAnemometerTower({ anemometerCode: row.anemometerCode }).then(
             (res) => {
-              this.onSubmit();
+              this.onSubmit()
               // 执行删除操作
               this.$message({
-                type: "success",
-                message: "删除成功!",
-              });
+                type: 'success',
+                message: '删除成功!'
+              })
             }
-          );
+          )
         })
         .catch(() => {
           // 取消删除
           this.$message({
-            type: "info",
-            message: "已取消删除",
-          });
-        });
+            type: 'info',
+            message: '已取消删除'
+          })
+        })
     },
 
     // 编辑
     compile(row) {
-      this.title = "编辑";
-      this.isEdit = true;
+      this.title = '编辑'
+      this.isEdit = true
       getAnemometerTower({ anemometerCode: row.anemometerCode }).then((res) => {
-        this.hightower = res.data;
-        this.cftList = res.data.list;
-        const item = JSON.parse(JSON.stringify(res.data));
-        this.detail = item;
-        this.anemometerName = item.anemometerName;
-        this.latitude = item.latitude;
-        this.longitude = item.longitude;
-        this.anemometerTowerHeightDtoList = this.cftList;
-        this.nuedialog = true;
-      });
+        this.hightower = res.data
+        this.cftList = res.data.list
+        const item = JSON.parse(JSON.stringify(res.data))
+        this.detail = item
+        this.anemometerName = item.anemometerName
+        this.latitude = item.latitude
+        this.longitude = item.longitude
+        this.anemometerTowerHeightDtoList = this.cftList
+        this.nuedialog = true
+      })
     },
 
     //分页数据切换
     handleCurrentChange(val) {
-      this.formInline.pageNum = val;
-      this.onSubmit();
+      this.formInline.pageNum = val
+      this.onSubmit()
     },
 
     // 测风塔高度
     addition() {
-      this.anemometerTowerHeightDtoList.push({ anemometerHeight: "" });
+      this.anemometerTowerHeightDtoList.push({ anemometerHeight: '' })
     },
     subtraction() {
       if (this.anemometerTowerHeightDtoList.length > 1) {
         // Ensure at least one input remains
-        this.anemometerTowerHeightDtoList.pop();
+        this.anemometerTowerHeightDtoList.pop()
       }
-    },
-  },
-};
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
@@ -433,7 +529,6 @@ export default {
   font-size: 12px;
 }
 
-
 .forinput {
   position: relative;
 }

+ 52 - 11
src/views/ledger/component/windsiteMessage.vue

@@ -4,41 +4,56 @@
         <el-dialog title="风场信息" :visible.sync="localUnusualdialog" width="800px" @close="handleClose">
             <div class="general">
                 <div class="condition">
-                    <p>风场名称:</p>
+                    <p>风场名称:</p><span>{{ unusualdialogdata.fieldName }}</span>
                 </div>
                 <div class="condition">
-                    <p>空气密度:</p>
+                    <p>空气密度:</p><span>{{ unusualdialogdata.density }}(kg/m³)</span>
                 </div>
 
                 <div class="condition">
-                    <p>上级单位:</p>
+                    <p>上级单位:</p><span>{{ unusualdialogdata.companyName }}</span>
                 </div>
                 <div class="condition">
-                    <p>海拔高度:</p>
+                    <p>海拔高度:</p><span>{{ unusualdialogdata.elevationHeight }}(米)</span>
                 </div>
 
                 <div class="condition">
-                    <p>所在省:</p>
+                    <p>所在省:</p><span>{{ unusualdialogdata.provinceName }}</span>
                 </div>
                 <div class="condition">
-                    <p>所在市:</p>
+                    <p>所在市:</p> <span>{{ unusualdialogdata.cityName }}</span>
                 </div>
                 <div class="condition">
-                    <p>经度:</p>
+                    <p>经度:</p><span>{{ unusualdialogdata.longitude }}</span>
                 </div>
 
                 <div class="condition">
-                    <p>纬度:</p>
+                    <p>纬度:</p><span>{{ unusualdialogdata.latitude }}</span>
                 </div>
 
                 <div class="condition">
-                    <p>测风塔:</p>
+                    <p>测风塔:</p> <span>{{ anemometerText }}</span>
                 </div>
             </div>
             <div class="attachment">
                 <p>下载合同功率曲线附件</p>
-                <p>下载资源文件附件</p>
+
             </div>
+            <p>下载资源文件附件</p>
+            <el-table :data="tableData" style="width: 100%">
+                <el-table-column prop="" label="文件名" width="180">
+                </el-table-column>
+                <el-table-column prop="" label="文件类型" width="180">
+                </el-table-column>
+                <el-table-column prop="" label="文件大小"> </el-table-column>
+                <el-table-column fixed="right" label="操作" width="120">
+                    <template slot-scope="scope">
+                        <el-button @click.native.prevent="deleteRow(scope.row)" type="text" size="small">
+                            删除
+                        </el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
         </el-dialog>
     </div>
 </template>
@@ -49,8 +64,19 @@ export default {
         unusualdialog: {
             type: Boolean,
             default: false
+        },
+        unusualdialogdata: {
+            type: Object,
+            default: () => []
+        }
+    },
+    data() {
+        return {
+            tableData: [],
+            anemometerText: "",
         }
     },
+
     computed: {
         localUnusualdialog: {
             get() {
@@ -61,10 +87,25 @@ export default {
             }
         }
     },
+    watch: {
+        unusualdialogdata: {
+            handler() {
+                this.generateAnemometerText();
+            },
+            deep: true,
+            immediate: true
+        }
+    },
     methods: {
-
         handleClose() {
             this.$emit('handleClose', false, 'unusualdialog');
+        },
+        generateAnemometerText() {
+            const anemometerTowerByFieldVos = this.unusualdialogdata.anemometerTowerByFieldVos || [];
+            const anemometerNames = anemometerTowerByFieldVos.map(item => item.anemometerName).join('\\');
+
+            // 将结果赋值给 anemometerText
+            this.anemometerText = anemometerNames;
         }
     }
 }

+ 16 - 32
src/views/ledger/component/windsitemachine.vue

@@ -1,27 +1,25 @@
 <template>
-        <!-- 测风塔 -->
-        <el-dialog title="测风塔信息" :visible.sync="localAnemometerdialog" width="800px" @close="handleClose">
-            <H3 class="centeredH3">测风塔名称</H3>
+    <!-- 测风塔 -->
+    <el-dialog title="测风塔信息" :visible.sync="localAnemometerdialog" width="600px" @close="handleClose">
+        <div v-for="(item, index) in anemometerData" :key="index">
+            <H3 class="centeredH3">测风塔名称:{{ item.anemometerName }}</H3>
             <div class="general">
                 <div class="condition">
-                    <p>测风塔编号:</p>
+                  
+                    <p>测风塔编号:</p>  <span>{{ item.anemometerCode }}</span>
                 </div>
                 <div class="condition">
-                    <p>测风塔名称:</p>
-                </div>
-
-                <div class="condition">
-                    <p>经度:</p>
+                    <p>经度:</p><span>{{ item.longitude }}</span>
                 </div>
                 <div class="condition">
-                    <p>维度:</p>
+                    <p>维度:</p><span>{{ item.latitude }}</span>
                 </div>
-
                 <div class="condition">
-                    <p>测风塔高度:</p>
+                    <p>测风塔高度:</p><span>{{ item.anemometerHeightStrings }}</span> <span style="margin-left: 10px;">(米)</span>
                 </div>
             </div>
-        </el-dialog>
+        </div>
+    </el-dialog>
 </template>
 
 <script>
@@ -30,6 +28,10 @@ export default {
         anemometerdialog: {
             type: Boolean,
             default: false
+        },
+        anemometerData: {
+            type: Array,
+            default: () => []
         }
     },
     computed: {
@@ -69,28 +71,10 @@ export default {
 
         span {
             line-height: 40px;
-
-            padding-left: 20px;
-        }
-
-        .el-select {
-            width: 100%;
-            margin-bottom: 20px;
         }
 
-        .el-input {
-            margin-bottom: 20px;
-        }
+     
     }
 }
 
-.attachment {
-    display: flex;
-    padding-top: 10px;
-
-    p {
-        margin-right: 20px;
-        color: #409eff;
-    }
-}
 </style>

+ 33 - 39
src/views/ledger/component/windsitetower.vue

@@ -1,33 +1,34 @@
 <template>
     <div>
-        <el-dialog title="风机信息" :visible.sync="localdraught" width="1000px" @close="handleClose">
-            <el-table class="center-align-table" :data="tableData" border :cell-style="rowStyle" stripe>
+        <el-dialog title="风机信息" :visible.sync="localdraught" width="1200px" @close="handleClose">
+            <el-table class="center-align-table" :data="draughtData" border :cell-style="rowStyle" stripe>
 
-                <el-table-column fixed prop="name" align="center" label="风机名称">
+                <el-table-column fixed prop="engineName" align="center" label="风机名称">
                 </el-table-column>
-                <el-table-column prop="" align="center" label="风机编号">
+                <el-table-column prop="fieldCode" align="center" label="风机编号">
                 </el-table-column>
-                <el-table-column prop="" align="center" label="风机机型">
+                <el-table-column prop="machineTypeCode" align="center" label="风机机型">
                 </el-table-column>
-                <el-table-column prop="" align="center" label="主机厂商">
+                <el-table-column prop="manufacturerName" align="center" label="主机厂商">
                 </el-table-column>
-                <el-table-column prop="" align="center" label="是否标杆">
+                <el-table-column prop="sightcing" align="center" label="是否标杆">
                 </el-table-column>
-                <el-table-column prop="" align="center" label="海拔高度/米" width="80">
+                <el-table-column prop="elevationHeight" align="center" label="海拔高度/米" width="120">
                 </el-table-column>
-                <el-table-column prop="" align="center" label="经度" width="80">
+                <el-table-column prop="latitude" align="center" label="经度" width="80">
                 </el-table-column>
-                <el-table-column prop="" align="center" label="纬度" width="80">
+                <el-table-column prop="longitude" align="center" label="纬度" width="80">
                 </el-table-column>
-                <el-table-column prop="" align="center" label="额定容量">
+                <el-table-column prop="ratedCapacity" align="center" label="额定容量">
                 </el-table-column>
             </el-table>
 
             <div class="pagination-container">
-                <el-pagination :page-size="10" :pager-count="11" layout="total, prev, pager, next" :total="35">
+                <el-pagination @current-change="handleCurrentChange" :current-page.sync="pageNum"
+                    layout="total, prev, pager, next" :page-size="pageSize" :total="totalSize">
                 </el-pagination>
             </div>
-        </el-dialog> 
+        </el-dialog>
     </div>
 </template>
 
@@ -37,7 +38,11 @@ export default {
         draught: {
             type: Boolean,
             default: false
-        }
+        },
+        draughtData: {
+            type: Array,
+            default: () => []
+        },
     },
     computed: {
         localdraught: {
@@ -50,39 +55,28 @@ export default {
             }
         }
     },
-    data(){
-        return{
+    data() {
+        return {
             tableData: [
-        {
-          id: 1,
-          name: "王小虎",
-          transition: "1",
-        },
-        {
-          id: 3,
-          name: "王小虎",
-          abnormal: "1",
-          transition: "0",
-          children: [
-            {
-              id: 31,
-
-              name: "王小虎",
 
-              abnormal: "1",
-            },
-          ],
-        },
-      ],
+            ],
+            pageNum: 1,
+            pageSize: 10,
+            totalSize: 0,
         }
     },
     methods: {
         rowStyle() {
-      return "text-align:center";
-    },
+            return "text-align:center";
+        },
         handleClose() {
             this.$emit('handleClose', false, 'draught');
-        }
+        },
+        //分页数据切换
+        handleCurrentChange(val) {
+            this.pageNum = val;
+            this.onSubmit();
+        },
     }
 }
 </script>

+ 592 - 514
src/views/ledger/draught.vue

@@ -1,573 +1,651 @@
 <template>
-    <div class="global-variable">
+  <div class="global-variable">
+    <div class="condition">
+      <el-form :inline="true" :model="formInline" class="demo-form-inline">
+        <el-form-item label="风机名称:">
+          <el-input v-model="formInline.engineName" placeholder="请输入风机名称" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="选择日期:" size="small">
+          <el-date-picker v-model="formInline.timeQuantum" type="daterange" range-separator="至" start-placeholder="开始日期"
+            end-placeholder="结束日期" @change="onDateChange">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="onSubmit" size="small">查询</el-button>
+          <el-button @click="reset" size="small">重置</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+
+    <div class="list-page">
+      <div class="newly">
+        <el-button @click="upfile" size="small">导入</el-button>
+        <el-button type="primary" @click="newnuedialog" size="small">新增</el-button>
+      </div>
+
+      <el-table class="center-align-table" :data="tableData" border :cell-style="rowStyle">
+        <el-table-column align="center" fixed prop="engineCode" label="系统编号">
+          <template slot-scope="scope">
+            <el-button @click="particulars(scope.row)" type="text" size="small">{{ scope.row.engineCode }}</el-button>
+          </template>
+        </el-table-column>
+        <el-table-column prop="engineName" align="center" label="风机名称">
+        </el-table-column>
+
+        <el-table-column prop="fieldName" align="center" label="关联风场">
+        </el-table-column>
+        <el-table-column prop="longitude" align="center" label="经度" width="100">
+        </el-table-column>
+        <el-table-column prop="latitude" align="center" label="纬度" width="100">
+        </el-table-column>
+
+        <el-table-column prop="elevationHeight" align="center" label="海拔高度/米" width="100">
+        </el-table-column>
+        <el-table-column prop="sightcing" align="center" label="是否标杆" width="100">
+          <template slot-scope="{ row }">
+            {{ row.sightcing == 1 ? '是' : '否' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="state" align="center" label="状态" width="100">
+          <template slot-scope="{ row }">
+            {{ row.state == 1 ? '启用' : '停用' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="createTime" align="center" label="创建时间">
+        </el-table-column>
+
+        <el-table-column prop="transition" align="center" fixed="right" label="操作" width="200">
+          <template slot-scope="scope">
+            <el-button @click="compile(scope.row)" type="text" size="small">编辑</el-button>
+
+            <el-button v-if="scope.row.state == 0" @click="start(scope.row, 1)" type="text" size="small">启用</el-button>
+            <el-button v-else style="color: #666" @click="start(scope.row, 0)" type="text" size="small">停用</el-button>
+            <el-button style="color: #f00" @click="deleted(scope.row)" type="text" size="small">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination-container">
+        <el-pagination @current-change="handleCurrentChange" :current-page.sync="formInline.pageNum"
+          layout="total, prev, pager, next" :page-size="formInline.pageSize" :total="formInline.totalSize">
+        </el-pagination>
+      </div>
+    </div>
+
+    <!-- 弹出层 -->
+    <!-- 导入 -->
+    <el-dialog title="导入文件" :visible.sync="tolead" width="400px">
+      <div class="UPcondition">
+        <p>所属风场:</p>
+        <el-select v-model="fieldCode" placeholder="请选择">
+          <el-option v-for="item in fieldCodeOptions" :key="item.value" :label="item.label" :value="item.value">
+          </el-option>
+        </el-select>
+      </div>
+      <el-upload class="upload-demo" :file-list="fileList" drag action="https://jsonplaceholder.typicode.com/posts/"
+        multiple>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip" slot="tip">
+          只能上传jpg/png文件,且不超过500kb
+        </div>
+      </el-upload>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="tolead = false" size="small">取 消</el-button>
+        <el-button type="primary" @click="UPsubmit" size="small">提交</el-button>
+      </span>
+    </el-dialog>
+    <!-- 新增 -->
+    <el-dialog :title="title" :visible.sync="nuedialog" width="1000px">
+      <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+        <div class="form-row">
+          <el-form-item label="风机名称:" prop="engineName">
+            <el-input v-model="ruleForm.engineName" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="关联风场:" prop="fieldCode">
+            <el-select v-model="ruleForm.fieldCode" filterable placeholder="请选择" size="small">
+              <el-option v-for="item in fieldCodeOptions" :key="item.fieldCode" :label="item.fieldName"
+                :value="item.fieldCode">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </div>
+        <div class="form-row">
+          <el-form-item label="机型编号:" prop="millTypeCode">
+            <el-select v-model="ruleForm.millTypeCode" placeholder="请选择" size="small">
+              <el-option v-for="item in millTypeCodeOptions" :key="item.millTypeCode" :label="item.machineTypeCode"
+                :value="item.millTypeCode">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="额定容量:" prop="ratedCapacity">
+            <el-input v-model="ruleForm.ratedCapacity" size="small"></el-input>
+          </el-form-item>
+        </div>
+        <div class="form-row">
+          <el-form-item label="海拔高度:" prop="elevationHeight">
+            <el-input v-model="ruleForm.elevationHeight" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="经度:" prop="longitude">
+            <el-input v-model="ruleForm.longitude" size="small"></el-input>
+          </el-form-item>
+        </div>
+        <div class="form-row">
+          <el-form-item label="纬度:" prop="latitude">
+            <el-input v-model="ruleForm.latitude" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="轮廓高度:" prop="hubHeight">
+            <el-input v-model="ruleForm.hubHeight" size="small"></el-input>
+          </el-form-item>
+        </div>
+        <div class="form-row">
+          <el-form-item label="是否标杆:" prop="sightcing">
+            <el-select v-model="ruleForm.sightcing" placeholder="请选择" size="small" >
+              <el-option v-for="item in sightcingOptions" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="额定风速:" prop="rated_wind_speed">
+            <el-input v-model="ruleForm.rated_wind_speed" size="small"></el-input>
+          </el-form-item>
+        </div>
+        <div class="form-row">
+          <el-form-item label="切入风速:" prop="ratedCutInWindspeed">
+            <el-input v-model="ruleForm.ratedCutInWindspeed" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="切出风速:" prop="ratedCutOutWindspeed">
+            <el-input v-model="ruleForm.ratedCutOutWindspeed" size="small"></el-input>
+          </el-form-item>
+        </div>
+      </el-form>
+      <div class="form-buttons">
+        <el-button type="primary" @click="submitForm('ruleForm')">确定</el-button>
+        <el-button @click="resetForm('ruleForm')">取消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 风机详情 -->
+    <el-dialog title="风机详情" :visible.sync="unusualdialog" width="800px">
+      <div class="general">
         <div class="condition">
-            <el-form :inline="true" :model="formInline" class="demo-form-inline">
-                <el-form-item label="风机名称:">
-                    <el-input v-model="formInline.engineName" placeholder="请输入风机名称" size="small"></el-input>
-                </el-form-item>
-                <el-form-item label="选择日期:" size="small">
-                    <el-date-picker v-model="formInline.timeQuantum" type="daterange" range-separator="至"
-                        start-placeholder="开始日期" end-placeholder="结束日期" @change="onDateChange">
-                    </el-date-picker>
-                </el-form-item>
-                <el-form-item>
-                    <el-button type="primary" @click="onSubmit" size="small">查询</el-button>
-                    <el-button @click="reset" size="small">重置</el-button>
-                </el-form-item>
-            </el-form>
+          <p>关联风场:</p>
+          <span>{{ particularsdata.fieldCode }}</span>
         </div>
-
-        <div class="list-page">
-            <div class="newly">
-                <el-button @click="upfile" size="small">导入</el-button>
-                <el-button type="primary" @click="newnuedialog" size="small">新增</el-button>
-            </div>
-
-            <el-table class="center-align-table" :data="tableData" border :cell-style="rowStyle">
-                <el-table-column align="center" fixed prop="engineCode" label="系统编号">
-                    <template slot-scope="scope">
-                        <el-button @click="particulars(scope.row)" type="text" size="small">{{ scope.row.engineCode
-                            }}</el-button>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="engineName" align="center" label="风机名称"> </el-table-column>
-
-                <el-table-column prop="fieldName" align="center" label="关联风场"> </el-table-column>
-                <el-table-column prop="longitude" align="center" label="经度" width="100">
-                </el-table-column>
-                <el-table-column prop="latitude" align="center" label="纬度" width="100">
-                </el-table-column>
-
-                <el-table-column prop="elevationHeight" align="center" label="海拔高度/米" width="100">
-                </el-table-column>
-                <el-table-column prop="sightcing" align="center" label="是否标杆" width="100">
-                    <template slot-scope="{ row }">
-                        {{ row.sightcing == 1 ? "是" : "否" }}
-                    </template>
-                </el-table-column>
-                <el-table-column prop="state" align="center" label="状态" width="100">
-                    <template slot-scope="{ row }">
-                        {{ row.state == 1 ? "启用" : "停用" }}
-                    </template>
-                </el-table-column>
-                <el-table-column prop="createTime" align="center" label="创建时间">
-                </el-table-column>
-
-
-                <el-table-column prop="transition" align="center" fixed="right" label="操作" width="200">
-                    <template slot-scope="scope">
-                        <el-button @click="compile(scope.row)" type="text" size="small">编辑</el-button>
-
-                        <el-button v-if="scope.row.state == 0" @click="start(scope.row, 1)" type="text"
-                            size="small">启用</el-button>
-                        <el-button v-else style="color: #666" @click="start(scope.row, 0)" type="text"
-                            size="small">停用</el-button>
-                        <el-button style="color: #f00" @click="deleted(scope.row)" type="text"
-                            size="small">删除</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <div class="pagination-container">
-                <el-pagination @current-change="handleCurrentChange" :current-page.sync="formInline.pageNum"
-                    layout="total, prev, pager, next" :page-size="formInline.pageSize" :total="formInline.totalSize">
-                </el-pagination>
-            </div>
+        <div class="condition">
+          <p>风机名称:</p>
+          <span>{{ particularsdata.engineCode }}</span>
         </div>
 
-        <!-- 弹出层 -->
-        <!-- 导入 -->
-        <el-dialog title="导入文件" :visible.sync="tolead" width="400px">
-            <div class="UPcondition">
-                <p>所属风场:</p>
-                <el-select v-model="fieldCode" placeholder="请选择">
-                    <el-option v-for="item in fieldCodeOptions" :key="item.value" :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </div>
-            <el-upload class="upload-demo" :file-list="fileList" drag
-                action="https://jsonplaceholder.typicode.com/posts/" multiple>
-                <i class="el-icon-upload"></i>
-                <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-                <div class="el-upload__tip" slot="tip">
-                    只能上传jpg/png文件,且不超过500kb
-                </div>
-            </el-upload>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="tolead = false" size="small">取 消</el-button>
-                <el-button type="primary" @click="UPsubmit" size="small">提交</el-button>
-            </span>
-        </el-dialog>
-        <!-- 新增 -->
-        <el-dialog :title="title" :visible.sync="nuedialog" width="800px">
-            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
-                <div class="form-row">
-                    <el-form-item label="风机名称:" prop="engineName">
-                        <el-input v-model="ruleForm.engineName" size="small"></el-input>
-                    </el-form-item>
-                    <el-form-item label="关联风场:" prop="fieldCode">
-                        <el-select v-model="ruleForm.fieldCode" filterable placeholder="请选择" size="small">
-                            <el-option v-for="item in fieldCodeOptions" :key="item.value" :label="item.label"
-                                :value="item.value">
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-
-                </div>
-                <div class="form-row">
-                    <el-form-item label="机型编号:" prop="millTypeCode">
-                        <el-input v-model="ruleForm.millTypeCode" size="small"></el-input>
-                    </el-form-item>
-                    <el-form-item label="额定容量:" prop="ratedCapacity">
-                        <el-input v-model="ruleForm.ratedCapacity" size="small"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="form-row">
-                    <el-form-item label="海拔高度:" prop="elevationHeight">
-                        <el-input v-model="ruleForm.elevationHeight" size="small"></el-input>
-                    </el-form-item>
-                    <el-form-item label="经度:" prop="longitude">
-                        <el-input v-model="ruleForm.longitude" size="small"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="form-row">
-                    <el-form-item label="纬度:" prop="latitude">
-                        <el-input v-model="ruleForm.latitude" size="small"></el-input>
-                    </el-form-item>
-                    <el-form-item label="轮廓高度:" prop="hubHeight">
-                        <el-input v-model="ruleForm.hubHeight" size="small"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="form-row">
-                    <el-form-item label="是否标杆:" prop="sightcing">
-                        <el-select v-model="ruleForm.sightcing" placeholder="请选择" size="small">
-                            <el-option v-for="item in sightcingOptions" :key="item.value" :label="item.label"
-                                :value="item.value">
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item label="额定风速:" prop="hubHeight">
-                        <el-input v-model="ruleForm.hubHeight" size="small"></el-input>
-                    </el-form-item>
-                </div>
-                <div class="form-row">
-                    <el-form-item label="切入风速:" prop="latitude">
-                        <el-input v-model="ruleForm.latitude" size="small"></el-input>
-                    </el-form-item>
-                    <el-form-item label="切出风速:" prop="hubHeight">
-                        <el-input v-model="ruleForm.hubHeight" size="small"></el-input>
-                    </el-form-item>
-                </div>
-                <el-form-item class="form-buttons">
-                    <el-button type="primary" @click="submitForm('ruleForm')">确定</el-button>
-                    <el-button @click="resetForm('ruleForm')">取消</el-button>
-                </el-form-item>
-            </el-form>
-        </el-dialog>
-
-        <!-- 风机详情 -->
-        <el-dialog title="风机详情" :visible.sync="unusualdialog" width="800px">
-            <div class="general">
-                <div class="condition">
-                    <p>关联风场:</p><span>{{ particularsdata.fieldCode }}</span>
-                </div>
-                <div class="condition">
-                    <p>风机名称:</p><span>{{ particularsdata.engineCode }}</span>
-                </div>
-
-                <div class="condition">
-                    <p>风机名称:</p><span>{{ particularsdata.engineName }}</span>
-                </div>
-                <div class="condition">
-                    <p>机型编号:</p><span>{{ particularsdata.millTypeCode }}</span>
-                </div>
-                <div class="condition">
-                    <p>额定容量:</p><span>{{ particularsdata.ratedCapacity }}</span> <span>/MW</span>
-                </div>
-
-                <div class="condition">
-                    <p>海拔高度:</p><span>{{ particularsdata.elevationHeight }}</span> <span>/米</span>
-                </div>
-                <div class="condition">
-                    <p>经度:</p><span>{{ particularsdata.longitude }}</span>
-                </div>
-
-
-                <div class="condition">
-                    <p>纬度:</p><span>{{ particularsdata.latitude }}</span>
-                </div>
-
-                <div class="condition">
-                    <p>轮廓高度:</p><span>{{ particularsdata.hubHeight }}</span> <span>/米</span>
-                </div>
-                <div class="condition">
-                    <p>是否标杆:</p><span>{{ particularsdata.sightcing == 1 ? '是' : '否' }}</span>
-                </div>
-                <div class="condition">
-                    <p>状态:</p><span>{{ particularsdata.state == 1 ? '启用' : '停用' }}</span>
-                </div>
-            </div>
-
-        </el-dialog>
-
+        <div class="condition">
+          <p>风机名称:</p>
+          <span>{{ particularsdata.engineName }}</span>
+        </div>
+        <div class="condition">
+          <p>机型编号:</p>
+          <span>{{ particularsdata.millTypeCode }}</span>
+        </div>
+        <div class="condition">
+          <p>额定容量:</p>
+          <span>{{ particularsdata.ratedCapacity }}</span> <span>(MW)</span>
+        </div>
 
+        <div class="condition">
+          <p>海拔高度:</p>
+          <span>{{ particularsdata.elevationHeight }}</span> <span>(米)</span>
+        </div>
+        <div class="condition">
+          <p>经度:</p>
+          <span>{{ particularsdata.longitude }}</span>
+        </div>
 
+        <div class="condition">
+          <p>纬度:</p>
+          <span>{{ particularsdata.latitude }}</span>
+        </div>
+        <div class="condition">
+          <p>额定风速:</p>
+          <span>{{ particularsdata.rated_wind_speed }}</span><span>(m/s)</span>
+        </div>
 
+        <div class="condition">
+          <p>切入风速:</p>
+          <span>{{ particularsdata.ratedCutInWindspeed }}</span><span>(m/s)</span>
+        </div>
 
+        <div class="condition">
+          <p>切出风速:</p>
+          <span>{{ particularsdata.ratedCutOutWindspeed }}</span><span>(m/s)</span>
+        </div>
 
-    </div>
+        <div class="condition">
+          <p>轮廓高度:</p>
+          <span>{{ particularsdata.hubHeight }}</span> <span>(米)</span>
+        </div>
+        <div class="condition">
+          <p>是否标杆:</p>
+          <span>{{ particularsdata.sightcing == 1 ? '是' : '否' }}</span>
+        </div>
+        <div class="condition">
+          <p>状态:</p>
+          <span>{{ particularsdata.state == 1 ? '启用' : '停用' }}</span>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
-import { windEngineGrouPage, updateStateWindEngineGroup, getWindEngineGroup, WindFieldListPage, delWindEngineGroup } from "@/api/ledger.js";
+import {
+  createWindEngineGroup,
+  delWindEngineGroup,
+  getWindEngineGroup,
+  getWindEngineMillList,
+  getWindFieldNames,
+  updateStateWindEngineGroup,
+  updateWindEngineGroup,
+  windEngineGrouPage
+} from '@/api/ledger.js'
 export default {
-    data() {
-        return {
-            formInline: {
-                fieldCode: "",
-                timeQuantum: [],
-                pageNum: 1,
-                pageSize: 10,
-                totalSize: 0,
-            },
-            startDate: "",
-            endDate: "",
-            tableData: [
-            ],
-            particularsdata: [],
-            ruleForm: {
-                fieldCode: '',
-                engineName: '',
-                airdensity: '',
-                millTypeCode: '',
-                ratedCapacity: '',
-                elevationHeight: '',
-                longitude: '',
-                latitude: '',
-                hubHeight: '',
-                sightcing: ''
-            },
-            fieldCodeOptions: [],
-            sightcingOptions: [],
-            rules: {
-                fieldCode: [{ required: true, message: '请选择关联风场', trigger: 'change' }],
-                engineName: [{ required: true, message: '请输入风机名称', trigger: 'blur' }],
-                millTypeCode: [{ required: true, message: '请输入机型编号', trigger: 'blur' }],
-                ratedCapacity: [
-                    { required: true, message: '请输入额定容量', trigger: 'blur' },
-                    { validator: this.validateNumber, trigger: 'blur' }
-                ],
-                elevationHeight: [
-                    { required: true, message: '请输入海拔高度', trigger: 'blur' },
-                    { validator: this.validateNumber, trigger: 'blur' }
-                ],
-                longitude: [
-                    { required: true, message: '请输入经度', trigger: 'blur' },
-                    { validator: this.validateNumber, trigger: 'blur' }
-                ],
-                latitude: [
-                    { required: true, message: '请输入纬度', trigger: 'blur' },
-                    { validator: this.validateNumber, trigger: 'blur' }
-                ],
-                hubHeight: [
-                    { required: true, message: '请输入轮廓高度', trigger: 'blur' },
-                    { validator: this.validateNumber, trigger: 'blur' }
-                ],
-                sightcing: [{ required: true, message: '请选择是否标杆', trigger: 'change' }]
-            },
-
-            // 新增信息
-            engineName: "",
-            airdensity: "",
-            fieldCode: "",
-
-            millTypeCode: "",
-            sheng: "",
-            shengOptions: [],
-            shi: "",
-            shiOptions: [],
-            elevationHeight: "",
-            latitude: "",
-            sightcing: "",
-
-
-            fileList: [
-                {
-                    name: "food.jpeg",
-                    url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
-                },
-
-            ],
-
-            nuedialog: false,
-            unusualdialog: false,
-            tolead: false,
-
-
-
-            title: "",
-        };
-    },
-    created() {
-        this.onSubmit()
-        this.windsite()
-    },
-    methods: {
-        rowStyle() {
-            return "text-align:center";
-        },
-        onDateChange(date) {
-            if (Array.isArray(date)) {
-                this.startDate = this.$formatDate(date[0]);
-                this.endDate = this.$formatDate(date[1]);
-                if (this.endDate < this.startDate) {
-                    this.endDate = this.startDate;
-                }
-            } else {
-                this.startDate = null;
-                this.endDate = null;
-            }
-        },
-        // 查询
-        onSubmit() {
-            let paramsData = {
-                engineName: this.formInline.engineName || undefined,
-                beginTime: this.startDate || undefined,
-                endTime: this.endDate || undefined,
-                pageNum: 1,
-                pageSize: 10,
-            };
-            windEngineGrouPage(paramsData).then((res) => {
-                this.tableData = res.data.list;
-                this.formInline.totalSize = res.data.totalSize;
-            });
-        },
-
-        // 停用
-        start(row, type) {
-            let objectval = {
-                engineCode: row.engineCode,
-                state: type === 0 ? 0 : 1,
-            };
-            updateStateWindEngineGroup(objectval).then((res) => {
-                this.$message({
-                    message: "状态已更新成功",
-                    type: "success",
-                });
-                // this.$message(`${type === 1 ? '状态已更新成功' : '状态已更新成功'}`);
-                row.state = type === 1 ? 0 : 1;
-                this.onSubmit();
-            });
-        },
-        //详情
-        particulars(row) {
-            this.unusualdialog = true;
-            getWindEngineGroup({ engineCode: row.engineCode }).then((res) => {
-                this.particularsdata = res.data
-            })
-        },
-        // 确认
-        submitForm(formName) {
-            this.$refs[formName].validate((valid) => {
-                if (valid) {
-                    alert('提交成功!');
-                } else {
-                    console.log('表单验证失败');
-                    return false;
-                }
-            });
+  data() {
+    return {
+      formInline: {
+        fieldCode: '',
+        timeQuantum: [],
+        pageNum: 1,
+        pageSize: 10,
+        totalSize: 0
+      },
+      startDate: '',
+      endDate: '',
+      tableData: [],
+      particularsdata: [],
+      ruleForm: {
+        fieldCode: '',
+        engineName: '',
+        airdensity: '',
+        millTypeCode: '',
+        ratedCapacity: '',
+        elevationHeight: '',
+        longitude: '',
+        latitude: '',
+        hubHeight: '',
+        sightcing: '',
+        rated_wind_speed: '',
+        ratedCutInWindspeed: '',
+        ratedCutOutWindspeed: ''
+      },
+      fieldCodeOptions: [],
+      millTypeCodeOptions: [],
+      sightcingOptions: [
+        {
+          value: 1,
+          label: '是'
         },
-        // 取消
-        resetForm(formName) {
-            this.$refs[formName].resetFields();
-        },
-        // 获取风场
-        windsite() {
-            WindFieldListPage({
-                pageNum: 1,
-                pageSize: 999
-            }).then((res) => {
-                console.log(res.data.list);
-            })
-        },
-
-        //分页数据切换
-        handleCurrentChange(val) {
-            this.formInline.pageNum = val;
-            this.onSubmit();
-        },
-        // 重置
-        reset() { },
-        //导入提交
-        UPsubmit() {
-            this.tolead = false;
-        },
-        // 新增
-        newly() {
-            this.nuedialog = false;
-        },
-
-
+        {
+          value: 2,
+          label: '否'
+        }
+      ],
+      rules: {
+        fieldCode: [
+          { required: true, message: '请选择关联风场', trigger: 'change' }
+        ],
+        engineName: [
+          { required: true, message: '请输入风机名称', trigger: 'blur' }
+        ],
+        millTypeCode: [
+          { required: true, message: '请输入机型编号', trigger: 'blur' }
+        ],
+        ratedCapacity: [
+          { required: true, message: '请输入额定容量', trigger: 'blur' },
+          { validator: this.validateNumber, trigger: 'blur' }
+        ],
+        elevationHeight: [
+          { required: true, message: '请输入海拔高度', trigger: 'blur' },
+          { validator: this.validateNumber, trigger: 'blur' }
+        ],
+        longitude: [
+          { required: true, message: '请输入经度', trigger: 'blur' },
+          { validator: this.validateNumber, trigger: 'blur' }
+        ],
+        latitude: [
+          { required: true, message: '请输入纬度', trigger: 'blur' },
+          { validator: this.validateNumber, trigger: 'blur' }
+        ],
+        hubHeight: [
+          { required: true, message: '请输入轮廓高度', trigger: 'blur' },
+          { validator: this.validateNumber, trigger: 'blur' }
+        ],
+        sightcing: [
+          { required: true, message: '请选择是否标杆', trigger: 'change' }
+        ]
+      },
+
+      // 新增信息
+      engineName: '',
+      airdensity: '',
+      fieldCode: '',
+
+      millTypeCode: '',
+      sheng: '',
+      shengOptions: [],
+      shi: '',
+      shiOptions: [],
+      elevationHeight: '',
+      latitude: '',
+      sightcing: '',
+
+      fileList: [
+        {
+          name: 'food.jpeg',
+          url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
+        }
+      ],
 
+      nuedialog: false,
+      unusualdialog: false,
+      tolead: false,
+      isEdit: false,
+      title: ''
+    }
+  },
+  created() {
+    this.onSubmit()
+    this.windsite()
+    this.relevancy()
+  },
+  methods: {
+    rowStyle() {
+      return 'text-align:center'
+    },
+    onDateChange(date) {
+      if (Array.isArray(date)) {
+        this.startDate = this.$formatDate(date[0])
+        this.endDate = this.$formatDate(date[1])
+        if (this.endDate < this.startDate) {
+          this.endDate = this.startDate
+        }
+      } else {
+        this.startDate = null
+        this.endDate = null
+      }
+    },
+    // 数字验证
+    validateNumber(rule, value, callback) {
+      const numberRegex = /^\d{1,4}(\.\d{1,2})?$/ // 匹配不超过四位数且小数点后不超过二位数的数字
+      if (!value) {
+        callback(new Error('该项不能为空'))
+      } else if (!numberRegex.test(value)) {
+        callback(
+          new Error('该项必须为不超过四位数且小数点后不超过三位数的数字')
+        )
+      } else {
+        callback()
+      }
+    },
+    // 查询
+    onSubmit() {
+      let paramsData = {
+        engineName: this.formInline.engineName || undefined,
+        beginTime: this.startDate || undefined,
+        endTime: this.endDate || undefined,
+        pageNum: 1,
+        pageSize: 10
+      }
+      windEngineGrouPage(paramsData).then((res) => {
+        this.tableData = res.data.list
+        this.formInline.totalSize = res.data.totalSize
+      })
+    },
 
-        // 编辑
-        compile(row) {
-            getWindEngineGroup({ engineCode: row.engineCode }).then((res) => {
-                const item = JSON.parse(JSON.stringify(res.data))
-                this.detail = item
-                Object.keys(this.ruleForm).forEach(
-                    key => {
-                        this.ruleForm[key] = item[key]
-                    }
-                )
-            })
-            this.nuedialog = true;
-            this.title = "编辑";
-            this.isEdit = true;
-        },
+    // 停用
+    start(row, type) {
+      let objectval = {
+        engineCode: row.engineCode,
+        state: type === 0 ? 0 : 1
+      }
+      updateStateWindEngineGroup(objectval).then((res) => {
+        this.$message({
+          message: '状态已更新成功',
+          type: 'success'
+        })
+        // this.$message(`${type === 1 ? '状态已更新成功' : '状态已更新成功'}`);
+        row.state = type === 1 ? 0 : 1
+        this.onSubmit()
+      })
+    },
+    //详情
+    particulars(row) {
+      this.unusualdialog = true
+      getWindEngineGroup({ engineCode: row.engineCode }).then((res) => {
+        this.particularsdata = res.data
+      })
+    },
+    // 确认
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        const objData = {
+          fieldCode: this.ruleForm.fieldCode,
+          engineName: this.ruleForm.engineName,
+          // airdensity: this.ruleForm.airdensity,
+          millTypeCode: this.ruleForm.millTypeCode,
+          ratedCapacity: this.ruleForm.ratedCapacity,
+          elevationHeight: this.ruleForm.elevationHeight,
+          longitude: this.ruleForm.longitude,
+          latitude: this.ruleForm.latitude,
+          hubHeight: this.ruleForm.hubHeight,
+          sightcing: this.ruleForm.sightcing,
+          rated_wind_speed: this.ruleForm.rated_wind_speed,
+          ratedCutInWindspeed: this.ruleForm.ratedCutInWindspeed,
+          ratedCutOutWindspeed: this.ruleForm.ratedCutOutWindspeed
+        }
+        // fieldCode
+        if (valid) {
+          const API = this.isEdit
+            ? updateWindEngineGroup(objData)
+            : createWindEngineGroup(objData)
+          API.then((res) => {
+            this.nuedialog = false
+            this.onSubmit()
+          })
+        } else {
+          console.log('表单验证失败')
+          return false
+        }
+      })
+    },
+    // 取消
+    resetForm(formName) {
+      this.$refs[formName].resetFields()
+      this.nuedialog = false
+    },
+    // 获取风场
+    windsite() {
+      debugger
+      getWindFieldNames().then((res) => {
+        this.fieldCodeOptions = res.data
+      })
+    },
+    // 获取机型
+    async relevancy() {
+      try {
+        const res = await getWindEngineMillList()
+        this.millTypeCodeOptions = res.data
+      } catch (error) {
+        console.error('Error fetching wind engine mill list:', error)
+      }
+    },
 
+    //分页数据切换
+    handleCurrentChange(val) {
+      this.formInline.pageNum = val
+      this.onSubmit()
+    },
+    // 重置
+    reset() { },
+    //导入提交
+    UPsubmit() {
+      this.tolead = false
+    },
+    // 新增
+    newly() {
+      this.nuedialog = false
+    },
 
+    // 编辑
+    compile(row) {
+      getWindEngineGroup({ engineCode: row.engineCode }).then((res) => {
+        const item = JSON.parse(JSON.stringify(res.data))
+        this.detail = item
+        Object.keys(this.ruleForm).forEach((key) => {
+          this.ruleForm[key] = item[key]
+        })
+      })
+      this.nuedialog = true
+      this.title = '编辑'
+      this.isEdit = true
+    },
 
-        // 删除
-        deleted(row) {
-            console.log(row, "row");
-            if (row.state == "1") {
-                this.$message({
-                    type: "error",
-                    message: "该项处于启用状态,无法删除!",
-                });
-                return;
-            }
-            this.$confirm("此操作将永久删除该文件,是否继续?", "提示", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning",
+    // 删除
+    deleted(row) {
+      console.log(row, 'row')
+      if (row.state == '1') {
+        this.$message({
+          type: 'error',
+          message: '该项处于启用状态,无法删除!'
+        })
+        return
+      }
+      this.$confirm('此操作将永久删除该文件,是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          delWindEngineGroup({ engineCode: row.engineCode }).then((res) => {
+            this.onSubmit()
+            // 执行删除操作
+            this.$message({
+              type: 'success',
+              message: '删除成功!'
             })
-                .then(() => {
-                    delWindEngineGroup({ engineCode: row.engineCode }).then((res) => {
-                        this.onSubmit();
-                        // 执行删除操作
-                        this.$message({
-                            type: "success",
-                            message: "删除成功!",
-                        });
-                    });
-                })
-                .catch(() => {
-                    // 取消删除
-                    this.$message({
-                        type: "info",
-                        message: "已取消删除",
-                    });
-                });
-        },
-
+          })
+        })
+        .catch(() => {
+          // 取消删除
+          this.$message({
+            type: 'info',
+            message: '已取消删除'
+          })
+        })
+    },
 
-        // 导入
-        upfile() {
-            this.tolead = true;
-        },
-        // 新增
-        newnuedialog() {
-            this.nuedialog = true;
-            this.title = "新增";
-        },
+    // 导入
+    upfile() {
+      this.tolead = true
     },
-};
+    // 新增
+    newnuedialog() {
+      this.nuedialog = true
+      this.title = '新增'
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
 .general {
-    display: flex;
-    flex-wrap: wrap;
-
-    .condition {
-        width: 50%;
-        display: flex;
+  display: flex;
+  flex-wrap: wrap;
 
-        p {
-            width: 100px;
-            text-align: right;
-            line-height: 40px;
-            margin-right: 10px;
-        }
-
-        span {
-            line-height: 40px;
+  .condition {
+    width: 50%;
+    display: flex;
 
+    p {
+      width: 100px;
+      text-align: right;
+      line-height: 40px;
+      margin-right: 10px;
+    }
 
-        }
+    span {
+      line-height: 40px;
+    }
 
-        .el-select {
-            width: 100%;
-            margin-bottom: 20px;
-        }
+    .el-select {
+      width: 260px;
+    }
 
-        .el-input {
-            margin-bottom: 20px;
-        }
+    .el-input {
+      width: 260px;
     }
+  }
 }
 
 .UPcondition {
-    display: flex;
+  display: flex;
 
-    p {
-        width: 74px;
-        text-align: right;
-        line-height: 40px;
-    }
+  p {
+    width: 74px;
+    text-align: right;
+    line-height: 40px;
+  }
 
-    .el-select {
-        width: 100%;
-        margin-bottom: 20px;
+  .el-select {
+      width: 260px;
     }
 
     .el-input {
-        margin-bottom: 20px;
+      width: 260px;
     }
 }
 
 .attachment {
-    display: flex;
-    padding-top: 10px;
+  display: flex;
+  padding-top: 10px;
 
-    p {
-        margin-right: 20px;
-        color: #409eff;
-    }
+  p {
+    margin-right: 20px;
+    color: #409eff;
+  }
 }
 
 .model-center {
-    color: #666;
-    line-height: 40px;
-    height: 40px;
-    font-size: 14px;
+  color: #666;
+  line-height: 40px;
+  height: 40px;
+  font-size: 14px;
 }
 
 .demo-ruleForm {
-    .el-input {
-        width: 215px;
-    }
 
-    .el-form-item {
-        margin-bottom: 20px;
+  .el-select {
+    width: 260px;
+  }
 
-    }
+  .el-input {
+    width: 260px;
+  }
 
-    .form-row {
-        display: flex;
-        justify-content: space-between;
-    }
+  .el-form-item {
+    margin-bottom: 20px;
+  }
 
-    .el-form-item {
-        width: 48%;
-    }
+  .form-row {
+    display: flex;
+    justify-content: space-between;
+  }
 
-    .form-buttons {
-        display: flex;
-        justify-content: center;
-        width: 100%;
-    }
+  .el-form-item {
+    width: 48%;
+  }
+}
+
+.form-buttons {
+  display: flex;
+  justify-content: center;
+  width: 100%;
+  margin-top: 20px;
+  /* optional: adds some space above the buttons */
 }
 </style>

+ 645 - 513
src/views/ledger/milltype.vue

@@ -1,565 +1,697 @@
 <template>
-    <div class="global-variable">
+  <div class="global-variable">
+    <div class="condition">
+      <el-form :inline="true" :model="formInline" class="demo-form-inline">
+        <el-form-item label="机型型号:">
+          <el-input v-model="formInline.machineTypeCode" placeholder="请输入机型型号" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="选择日期:" size="small">
+          <el-date-picker v-model="formInline.timeQuantum" type="daterange" range-separator="至" start-placeholder="开始日期"
+            end-placeholder="结束日期" @change="onDateChange">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="onSubmit" size="small">查询</el-button>
+          <el-button @click="reset" size="small">重置</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+    <div class="list-page">
+      <div class="newly">
+        <el-button type="primary" @click="newnuedialog" size="small">新增</el-button>
+      </div>
+
+      <el-table class="center-align-table" :data="tableData" border :cell-style="rowStyle">
+        <el-table-column align="center" fixed prop="machineTypeCode" label="机型型号">
+          <template slot-scope="scope">
+            <el-button @click="particulars(scope.row)" type="text" size="small">{{ scope.row.machineTypeCode
+              }}</el-button>
+          </template>
+        </el-table-column>
+
+        <el-table-column prop="manufacturerCode" align="center" label="厂商编号">
+        </el-table-column>
+
+        <el-table-column prop="curvedMotionType" align="center" label="机型类型" width="120">
+          <template v-slot="scope">
+            <!-- 假设 type 为 123 时显示特殊内容 -->
+            <span v-if="scope.row.curvedMotionType == '1'">双馈</span>
+            <span v-else-if="scope.row.curvedMotionType == '2'">半驱</span>
+            <span v-else-if="scope.row.curvedMotionType == '3'">半直曲</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="manufacturerName" align="center" label="厂商名称" width="200">
+        </el-table-column>
+
+        <el-table-column prop="brand" align="center" label="品牌名称" width="200">
+        </el-table-column>
+        <el-table-column prop="state" align="center" label="状态" width="100">
+          <template slot-scope="{ row }">
+            {{ row.state == 1 ? '启用' : '停用' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="createTime" align="center" label="创建时间">
+        </el-table-column>
+        <el-table-column prop="transition" align="center" fixed="right" label="操作" width="200">
+          <template slot-scope="scope">
+            <el-button @click="compile(scope.row)" type="text" size="small">编辑</el-button>
+            <el-button @click="uploading(scope.row)" type="text" size="small">上传</el-button>
+            <el-button v-if="scope.row.state == 0" @click="start(scope.row, 1)" type="text" size="small">启用</el-button>
+            <el-button v-else style="color: #666" @click="start(scope.row, 0)" type="text" size="small">停用</el-button>
+            <el-button style="color: #f00" @click="deleted(scope.row)" type="text" size="small">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination-container">
+        <el-pagination @current-change="handleCurrentChange" :current-page.sync="formInline.pageNum"
+          layout="total, prev, pager, next" :page-size="formInline.pageSize" :total="formInline.totalSize">
+        </el-pagination>
+      </div>
+    </div>
+
+    <!-- 新增 -->
+    <el-dialog :title="title" :visible.sync="nuedialog" :before-close="handleClose" width="800px">
+      <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm form-grid">
+        <div class="form-row">
+          <el-form-item label="机型型号:" prop="machineTypeCode">
+            <el-input v-model="ruleForm.machineTypeCode" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="厂商名称:" prop="manufacturerName">
+            <el-input v-model="ruleForm.manufacturerName" size="small"></el-input>
+          </el-form-item>
+        </div>
+        <div class="form-row">
+          <el-form-item label="厂商编号:" prop="manufacturerCode">
+            <el-input v-model="ruleForm.manufacturerCode" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="品牌名称:" prop="brand">
+            <el-input v-model="ruleForm.brand" size="small"></el-input>
+          </el-form-item>
+        </div>
+        <div class="form-row">
+          <el-form-item label="驱动方式:" prop="curvedMotionType">
+            <el-select v-model="ruleForm.curvedMotionType" placeholder="请选择" value-key="contentsValue"
+              @change="handleSelectChange" size="small">
+              <el-option v-for="item in curvedMotionTypeOptions" :key="item.contentsValue" :label="item.contentsName"
+                :value="item.contentsValue"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="塔筒高度:" prop="towerHeight">
+            <el-input v-model="ruleForm.towerHeight" size="small"></el-input>
+          </el-form-item>
+        </div>
+        <div class="form-row">
+          <el-form-item label="叶片长度:" prop="vaneLong">
+            <el-input v-model="ruleForm.vaneLong" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="叶轮直径:" prop="rotorDiameter">
+            <el-input v-model="ruleForm.rotorDiameter" size="small"></el-input>
+          </el-form-item>
+
+        </div>
+        <div class="form-row">
+          <el-form-item label="传动比-转速比:" prop="rotationalSpeedRatio">
+            <el-input v-model="ruleForm.rotationalSpeedRatio" size="small"></el-input>
+          </el-form-item>
+
+
+        </div>
+
+      </el-form>
+      <div class="form-actions"> <el-button type="primary" @click="submitForm('ruleForm')" size="small">提交</el-button>
+        <el-button @click="resetForm('ruleForm')" size="small">取消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 机型详情 -->
+    <el-dialog title="机型详情" :visible.sync="unusualdialog" width="600px">
+      <div class="general">
         <div class="condition">
-            <el-form :inline="true" :model="formInline" class="demo-form-inline">
-                <el-form-item label="机型型号:">
-                    <el-input v-model="formInline.machineTypeCode" placeholder="请输入机型型号" size="small"></el-input>
-                </el-form-item>
-                <el-form-item label="选择日期:" size="small">
-                    <el-date-picker v-model="formInline.timeQuantum" type="daterange" range-separator="至"
-                        start-placeholder="开始日期" end-placeholder="结束日期" @change="onDateChange">
-                    </el-date-picker>
-                </el-form-item>
-                <el-form-item>
-                    <el-button type="primary" @click="onSubmit" size="small">查询</el-button>
-                    <el-button @click="reset" size="small">重置</el-button>
-                </el-form-item>
-            </el-form>
+          <p>机型型号:</p>
+          <span>{{ particularsdata.machineTypeCode }}</span>
         </div>
-        <div class="list-page">
-            <div class="newly">
-                <el-button type="primary" @click="newnuedialog" size="small">新增</el-button>
-            </div>
-
-            <el-table class="center-align-table" :data="tableData" border :cell-style="rowStyle">
-                <el-table-column align="center" fixed prop="machineTypeCode" label="机型型号">
-                    <template slot-scope="scope">
-                        <el-button @click="particulars(scope.row)" type="text" size="small">{{ scope.row.machineTypeCode
-                            }}</el-button>
-                    </template>
-                </el-table-column>
-
-                <el-table-column prop="manufacturerCode" align="center" label="厂商编号">
-                </el-table-column>
-
-                <el-table-column prop="curvedMotionType" align="center" label="机型类型" width="120">
-                    <template v-slot="scope">
-                        <!-- 假设 type 为 123 时显示特殊内容 -->
-                        <span v-if="scope.row.curvedMotionType == '1'">双馈</span>
-                        <span v-else-if="scope.row.curvedMotionType == '2'">半驱</span>
-                        <span v-else-if="scope.row.curvedMotionType == '3'">半直曲</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="manufacturerName" align="center" label="厂商名称" width="200">
-                </el-table-column>
-
-                <el-table-column prop="brand" align="center" label="品牌名称" width="200">
-                </el-table-column>
-                <el-table-column prop="state" align="center" label="状态" width="100">
-                    <template slot-scope="{ row }">
-                        {{ row.state == 1 ? "启用" : "停用" }}
-                    </template>
-                </el-table-column>
-                <el-table-column prop="createTime" align="center" label="创建时间">
-                </el-table-column>
-                <el-table-column prop="transition" align="center" fixed="right" label="操作" width="200">
-                    <template slot-scope="scope">
-                        <el-button @click="compile(scope.row)" type="text" size="small">编辑</el-button>
-                        <el-button @click="uploading(scope.row)" type="text" size="small">上传</el-button>
-                        <el-button v-if="scope.row.state == 0" @click="start(scope.row, 1)" type="text"
-                            size="small">启用</el-button>
-                        <el-button v-else style="color: #666" @click="start(scope.row, 0)" type="text"
-                            size="small">停用</el-button>
-                        <el-button style="color: #f00" @click="deleted(scope.row)" type="text"
-                            size="small">删除</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <div class="pagination-container">
-                <el-pagination @current-change="handleCurrentChange" :current-page.sync="formInline.pageNum"
-                    layout="total, prev, pager, next" :page-size="formInline.pageSize" :total="formInline.totalSize">
-                </el-pagination>
-            </div>
+        <div class="condition">
+          <p>厂商名称:</p>
+          <span>{{ particularsdata.manufacturerName }}</span>
         </div>
 
+        <div class="condition">
+          <p>厂商编号:</p>
+          <span>{{ particularsdata.manufacturerCode }}</span>
+        </div>
+        <div class="condition">
+          <p>品牌名称:</p>
+          <span>{{ particularsdata.brand }}</span>
+        </div>
 
+        <div class="condition">
+          <p>驱动方式:</p>
+          <span>
+            <span v-if="particularsdata.curvedMotionType === 1">双馈</span>
+            <span v-else-if="particularsdata.curvedMotionType === 2">半驱</span>
+            <span v-else-if="particularsdata.curvedMotionType === 3">半直曲</span></span>
+        </div>
+        <div class="condition">
+          <p>状态:</p>
+          <span>{{ particularsdata.state == 1 ? '启用' : '停用' }}</span>
+        </div>
+        <div class="condition">
+          <p>塔筒高度:</p>
+          <span>{{ particularsdata.towerHeight }}(米)</span>
+        </div>
 
-        <!-- 新增 -->
-        <el-dialog :title="title" :visible.sync="nuedialog" width="400px">
-            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
-                <el-form-item label="机型型号:" prop="machineTypeCode">
-                    <el-input v-model="ruleForm.machineTypeCode" size="small"></el-input>
-                </el-form-item>
-                <el-form-item label="厂商名称:" prop="manufacturerName">
-                    <el-input v-model="ruleForm.manufacturerName" size="small"></el-input>
-                </el-form-item>
-                <el-form-item label="厂商编号:" prop="manufacturerCode">
-                    <el-input v-model="ruleForm.manufacturerCode" size="small"></el-input>
-                </el-form-item>
-                <el-form-item label="品牌名称:" prop="brand">
-                    <el-input v-model="ruleForm.brand" size="small"></el-input>
-                </el-form-item>
-                <el-form-item label="驱动方式:" prop="curvedMotionType">
-                    <el-select v-model="ruleForm.curvedMotionType" placeholder="请选择" value-key="contentsValue"
-                        size="small">
-                        <el-option v-for="item in curvedMotionTypeOptions" :key="item.contentsValue"
-                            :label="item.contentsName" :value="item.contentsValue"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="塔筒高度:" prop="towerHeight">
-                    <el-input v-model="ruleForm.towerHeight" size="small"></el-input>
-                </el-form-item>
-                <el-form-item label="叶片长度:" prop="vaneLong">
-                    <el-input v-model="ruleForm.vaneLong" size="small"></el-input>
-                </el-form-item>
-                <el-form-item>
-                    <el-button type="primary" @click="submitForm('ruleForm')" size="small">提交</el-button>
-                    <el-button @click="resetForm('ruleForm')" size="small">取消</el-button>
-                </el-form-item>
-            </el-form>
-        </el-dialog>
-
-        <!-- 机型详情 -->
-        <el-dialog title="机型详情" :visible.sync="unusualdialog" width="600px">
-            <div class="general">
-                <div class="condition">
-                    <p>机型型号:</p>
-                    <span>{{ particularsdata.machineTypeCode }}</span>
-                </div>
-                <div class="condition">
-                    <p>厂商名称:</p>
-                    <span>{{ particularsdata.manufacturerName }}</span>
-                </div>
-
-                <div class="condition">
-                    <p>厂商编号:</p>
-                    <span>{{ particularsdata.manufacturerCode }}</span>
-                </div>
-                <div class="condition">
-                    <p>品牌名称:</p>
-                    <span>{{ particularsdata.brand }}</span>
-                </div>
-
-                <div class="condition">
-                    <p>驱动方式:</p>
-                    <span>
-                        <span v-if="particularsdata.curvedMotionType === 1">双馈</span>
-                        <span v-else-if="particularsdata.curvedMotionType === 2">半驱</span>
-                        <span v-else-if="particularsdata.curvedMotionType === 3">半直曲</span></span>
-                </div>
-                <div class="condition">
-                    <p>状态:</p>
-                    <span>{{ particularsdata.state == 1 ? "启用" : "停用" }}</span>
-                </div>
-                <div class="condition">
-                    <p>塔筒高度:</p>
-                    <span>{{ particularsdata.towerHeight }}米</span>
-                </div>
-
-                <div class="condition">
-                    <p>叶片长度:</p>
-                    <span>{{ particularsdata.vaneLong }}米</span>
-                </div>
-            </div>
-            <div class="attachment">
-                <p>下载标准功率曲线附件</p>
-            </div>
-        </el-dialog>
-
-        <!-- 上传 -->
-        <el-dialog title="上传文件" :visible.sync="uploadingPOP" width="400px">
-            <div class="UPcondition">
-                <p>文件类型:</p>
-                <el-select v-model="superior" placeholder="请选择">
-                    <el-option v-for="item in superiorOptions" :key="item.value" :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </div>
-            <p class="model-center">模板下载</p>
-
-            <el-upload class="upload-demo" :file-list="fileList" drag
-                action="https://jsonplaceholder.typicode.com/posts/" multiple>
-                <i class="el-icon-upload"></i>
-                <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-                <div class="el-upload__tip" slot="tip">
-                    只能上传jpg/png文件,且不超过500kb
-                </div>
-            </el-upload>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="uploadingPOP = false" size="small">取 消</el-button>
-                <el-button type="primary" @click="filesubmit" size="small">提交</el-button>
-            </span>
-        </el-dialog>
-    </div>
+        <div class="condition">
+          <p>叶片长度:</p>
+          <span>{{ particularsdata.vaneLong }}(米)</span>
+        </div>
+        <div class="condition">
+          <p>叶轮直径:</p>
+          <span>{{ particularsdata.rotorDiameter }}(m)</span>
+        </div>
+        <div class="condition">
+          <p>传动比-转速比:</p>
+          <span>{{ particularsdata.rotationalSpeedRatio }}</span>
+        </div>
+      </div>
+      <div class="attachment">
+        <p class="model-center" @click="downloadfile">下载标准功率曲线附件</p>
+      </div>
+    </el-dialog>
+
+    <!-- 上传 -->
+    <el-dialog title="上传文件" :visible.sync="uploadingPOP" width="400px">
+      <el-alert title="请点击模板下载文件附件" type="success" :closable="false">
+      </el-alert>
+      <p class="model-center" @click="download">模板下载</p>
+
+      <el-upload class="upload-demo" :file-list="fileList" drag action :multiple="false" :before-upload="beforeUpload"
+        :limit="1" :auto-upload="false" :on-change="handleOnChange" accept=".xlsx">
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip" slot="tip">
+          只能上传xlsx文件,且不超过5MB
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="uploadingPOP = false" size="small">取 消</el-button>
+        <el-button type="primary" @click="filesubmit" size="small">提交</el-button>
+      </div>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
 import {
-    windEngineMillPage,
-    updateWindEngineMill,
-    getDictList,
-    createEngineMill,
-    delWindEngineMill,
-    getWindEngineMillPageVo,
-    
-} from "@/api/ledger.js";
+  createEngineMill,
+  delWindEngineMill,
+  getAllTemplate,
+  getDictList,
+  getWindEngineMillPageVo,
+  powerWordCriterionImportData,
+  updateWindEngineMill,
+  windEngineMillPage
+} from '@/api/ledger.js'
 
 export default {
-    data() {
-        return {
-            tableData: [],
-            formInline: {
-                machineTypeCode: "",
-                timeQuantum: [],
-                pageNum: 1,
-                pageSize: 10,
-                totalSize: 0,
-            },
-            startDate: "",
-            endDate: "",
-            //新增
-            ruleForm: {
-                machineTypeCode: "",
-                manufacturerName: "",
-                brand: "",
-                curvedMotionType: "",
-                towerHeight: "",
-                manufacturerCode: "",
-                vaneLong: "",
-            },
-            curvedMotionTypeOptions: [],
-            rules: {
-                machineTypeCode: [
-                    { required: true, message: "请输入机型型号", trigger: "blur" },
-                ],
-                manufacturerName: [
-                    { required: true, message: "请输入厂商名称", trigger: "blur" },
-                ],
-                manufacturerCode: [
-                    { required: true, message: "请输入厂商编号", trigger: "blur" },
-                ],
-                brand: [{ required: true, message: "请输入品牌名称", trigger: "blur" }],
-                curvedMotionType: [
-                    { required: true, message: "请选择驱动方式", trigger: "change" },
-                ],
-                towerHeight: [
-                    { required: true, message: "请输入塔筒高度", trigger: "blur" },
-                    { validator: this.validateNumber, trigger: ["blur", "change"] },
-                ],
-                vaneLong: [
-                    { required: true, message: "请输入叶片长度", trigger: "blur" },
-                    { validator: this.validateNumber, trigger: ["blur", "change"] },
-                ],
-            },
-            particularsdata: [],
-            // 新增信息
-            superior: "",
-            superiorOptions: [],
-            altitude: "",
-            fileList: [
-                {
-                    name: "food.jpeg",
-                    url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
-                },
-            ],
-            nuedialog: false,
-            unusualdialog: false,
-            draught: false,
-            uploadingPOP: false,
-            title: "新增",
-            detail: {},
-            isEdit: false
-        };
+  data() {
+    return {
+      tableData: [],
+      formInline: {
+        machineTypeCode: '',
+        timeQuantum: [],
+        pageNum: 1,
+        pageSize: 10,
+        totalSize: 0
+      },
+      startDate: '',
+      endDate: '',
+      //新增
+      ruleForm: {
+        machineTypeCode: '',
+        manufacturerName: '',
+        brand: '',
+        curvedMotionType: '',
+        towerHeight: '',
+        manufacturerCode: '',
+        vaneLong: '',
+        rotorDiameter: "",
+        rotationalSpeedRatio: "",
+      },
+      curvedMotionTypeOptions: [],
+      rules: {
+        machineTypeCode: [
+          { required: true, message: '请输入机型型号', trigger: 'blur' }
+        ],
+        manufacturerName: [
+          { required: true, message: '请输入厂商名称', trigger: 'blur' }
+        ],
+        manufacturerCode: [
+          { required: true, message: '请输入厂商编号', trigger: 'blur' }
+        ],
+        brand: [{ required: true, message: '请输入品牌名称', trigger: 'blur' }],
+        curvedMotionType: [
+          { required: true, message: '请选择驱动方式', trigger: 'change' }
+        ],
+        towerHeight: [
+          { required: true, message: '请输入塔筒高度', trigger: 'blur' },
+          { validator: this.validateNumber, trigger: ['blur', 'change'] }
+        ],
+        vaneLong: [
+          { required: true, message: '请输入叶片长度', trigger: 'blur' },
+          { validator: this.validateNumber, trigger: ['blur', 'change'] }
+        ]
+      },
+      particularsdata: [],
+      // 新增信息
+      superior: '',
+      superiorOptions: [],
+      altitude: '',
+      fileList: [],
+      globalFileList: [],
+      AllTemplateurl: '',
+      rowmillTypeCode: '',
+
+
+      nuedialog: false,
+      unusualdialog: false,
+      draught: false,
+      uploadingPOP: false,
+      title: '新增',
+      detail: {},
+      isEdit: false
+    }
+  },
+  created() {
+    this.onSubmit()
+    this.Modeltype()
+  },
+  mounted() {
+    this.getAllTemplate()
+  },
+  methods: {
+
+    rowStyle() {
+      return 'text-align:center'
     },
-    created() {
-        this.onSubmit();
-        this.Modeltype();
+    onDateChange(date) {
+      if (Array.isArray(date)) {
+        this.startDate = this.$formatDate(date[0])
+        this.endDate = this.$formatDate(date[1])
+        if (this.endDate < this.startDate) {
+          this.endDate = this.startDate
+        }
+      } else {
+        this.startDate = null
+        this.endDate = null
+      }
     },
-    methods: {
-        rowStyle() {
-            return "text-align:center";
-        },
-        onDateChange(date) {
-            if (Array.isArray(date)) {
-                this.startDate = this.$formatDate(date[0]);
-                this.endDate = this.$formatDate(date[1]);
-                if (this.endDate < this.startDate) {
-                    this.endDate = this.startDate;
-                }
-            } else {
-                this.startDate = null;
-                this.endDate = null;
-            }
-        },
-
-        // 查询
-        onSubmit() {
-            let paramsData = {
-                machineTypeCode: this.formInline?.machineTypeCode || undefined,
-                beginTime: this.startDate || undefined,
-                endTime: this.endDate || undefined,
-                pageNum: 1,
-                pageSize: 10,
-            };
-            windEngineMillPage(paramsData).then((res) => {
-                this.tableData = res.data.list;
-                this.formInline.totalSize = res.data.totalSize;
-            });
-        },
-        // 停用
-        start(row, type) {
-            let objectval = {
-                millTypeCode: row.millTypeCode,
-                state: type === 0 ? 0 : 1,
-            };
-            updateWindEngineMill(objectval).then((res) => {
-                this.$message({
-                    message: "状态已更新成功",
-                    type: "success",
-                });
-                // this.$message(`${type === 1 ? '状态已更新成功' : '状态已更新成功'}`);
-                row.state = type === 1 ? 0 : 1;
-                this.onSubmit();
-            });
-        },
-        Modeltype() {
-            getDictList({
-                dictType: 1,
-            }).then((res) => {
-                this.curvedMotionTypeOptions = res.data;
-            });
-        },
-        // 新增提交
-        submitForm(formName) {
-            this.$refs[formName].validate((valid) => {
-                if (valid) {
-                    let objectdata = {
-                        machineTypeCode: this.ruleForm.machineTypeCode,
-                        manufacturerName: this.ruleForm.manufacturerName,
-                        manufacturerCode: this.ruleForm.manufacturerCode,
-                        brand: this.ruleForm.brand,
-                        curvedMotionType: this.ruleForm.curvedMotionType.contentsValue,
-                        towerHeight: this.ruleForm.towerHeight,
-                        vaneLong: this.ruleForm.vaneLong,
-                    };
-                    if (this.isEdit) {
-                        objectdata.millTypeCode = this.detail.millTypeCode
-                    }
-                    const API = !this.isEdit ? createEngineMill(objectdata) : updateWindEngineMill(objectdata)
-                    API.then((res) => {
-                        this.nuedialog = false;
-                        this.onSubmit();
-                        this.isEdit = false
-                        this.$message.success(this.isEdit ? "新增成功" : "编辑成功");
-                    });
-                } else {
-                    return false;
-                }
-            });
-        },
-        resetForm(formName) {
-            this.$refs[formName].resetFields();
-            this.nuedialog = false;
-        },
-        // 数字验证
-        validateNumber(rule, value, callback) {
-            const numberRegex = /^\d{1,4}(\.\d{1,2})?$/; // 匹配不超过四位数且小数点后不超过二位数的数字
-            if (!value) {
-                callback(new Error("该项不能为空"));
-            } else if (!numberRegex.test(value)) {
-                callback(
-                    new Error("该项必须为不超过四位数且小数点后不超过三位数的数字")
-                );
-            } else {
-                callback();
-            }
-        },
-
-        // 删除
-        deleted(row) {
-            console.log(row, "row");
-            if (row.state == "1") {
-                this.$message({
-                    type: "error",
-                    message: "该项处于启用状态,无法删除!",
-                });
-                return;
-            }
-            this.$confirm("此操作将永久删除该文件,是否继续?", "提示", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning",
-            })
-                .then(() => {
-                    delWindEngineMill({ millTypeCode: row.millTypeCode }).then((res) => {
-                        this.onSubmit();
-                        // 执行删除操作
-                        this.$message({
-                            type: "success",
-                            message: "删除成功!",
-                        });
-                    });
-                })
-                .catch(() => {
-                    // 取消删除
-                    this.$message({
-                        type: "info",
-                        message: "已取消删除",
-                    });
-                });
-        },
-
-        //机型详情
-        particulars(row) {
-            getWindEngineMillPageVo({ millTypeCode: row.millTypeCode }).then(
-                (res) => {
-                    this.unusualdialog = true;
-                    this.particularsdata = res.data;
-                }
-            );
-        },
-        //分页数据切换
-        handleCurrentChange(val) {
-            this.formInline.pageNum = val;
-            this.onSubmit();
-        },
-
-        // 重置
-        reset() { },
-
-        // 新增
-        newly() {
-            this.nuedialog = false;
-        },
-
-        // 编辑
-        compile(row) {
-            getWindEngineMillPageVo({ millTypeCode: row.millTypeCode }).then(
-                (res) => {
-                    const item = JSON.parse(JSON.stringify(res.data))
-                    this.detail = item
-                    Object.keys(this.ruleForm).forEach(
-                        key => {
-                            this.ruleForm[key] = item[key]
-                        }
-                    )
-                    console.log(res);
-                }
-            );
-            this.title = "编辑";
-            this.nuedialog = true;
-            this.isEdit = true;
-
-        },
-        // 上传附件
-        uploading(row) {
-            this.uploadingPOP = true;
-        },
-        // 附件提交
-        filesubmit() {
-            this.uploadingPOP = false;
-        },
-
-        // 删除附件
-        deleteRow(row) {
-            this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning",
-            })
-                .then(() => {
-                    this.$message({
-                        type: "success",
-                        message: "删除成功!",
-                    });
-                })
-                .catch(() => {
-                    this.$message({
-                        type: "info",
-                        message: "已取消删除",
-                    });
-                });
-        },
-
-        // 新增
-        newnuedialog() {
-            this.nuedialog = true;
-            this.title = "新增";
-        },
+
+    // 查询
+    onSubmit() {
+      let paramsData = {
+        machineTypeCode: this.formInline?.machineTypeCode || undefined,
+        beginTime: this.startDate || undefined,
+        endTime: this.endDate || undefined,
+        pageNum: 1,
+        pageSize: 10
+      }
+      windEngineMillPage(paramsData).then((res) => {
+        this.tableData = res.data.list
+        this.formInline.totalSize = res.data.totalSize
+      })
+    },
+    // 停用
+    start(row, type) {
+      let objectval = {
+        millTypeCode: row.millTypeCode,
+        state: type === 0 ? 0 : 1
+      }
+      updateWindEngineMill(objectval).then((res) => {
+        this.$message({
+          message: '状态已更新成功',
+          type: 'success'
+        })
+        // this.$message(`${type === 1 ? '状态已更新成功' : '状态已更新成功'}`);
+        row.state = type === 1 ? 0 : 1
+        this.onSubmit()
+      })
+    },
+    Modeltype() {
+      getDictList({
+        dictType: 1
+      }).then((res) => {
+        this.curvedMotionTypeOptions = res.data
+      })
+    },
+    handleSelectChange(value) {
+      console.log('Selected value:', value);
+    },
+    // 新增提交
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          let objectdata = {
+            machineTypeCode: this.ruleForm.machineTypeCode,
+            manufacturerName: this.ruleForm.manufacturerName,
+            manufacturerCode: this.ruleForm.manufacturerCode,
+            brand: this.ruleForm.brand,
+            curvedMotionType: this.ruleForm.curvedMotionType,
+            towerHeight: this.ruleForm.towerHeight,
+            vaneLong: this.ruleForm.vaneLong,
+            rotorDiameter: this.ruleForm.rotorDiameter,
+            rotationalSpeedRatio: this.ruleForm.rotationalSpeedRatio,
+          }
+
+          if (this.isEdit) {
+            objectdata.millTypeCode = this.detail.millTypeCode
+          }
+          const API = !this.isEdit
+            ? createEngineMill(objectdata)
+            : updateWindEngineMill(objectdata)
+          API.then((res) => {
+            this.nuedialog = false
+            this.onSubmit()
+            this.isEdit = false
+            this.$message.success(this.isEdit ? '新增成功' : '编辑成功')
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields()
+      this.nuedialog = false
+    },
+    handleClose(done) {
+      this.$refs.ruleForm.resetFields();
+      this.nuedialog = false
+      done();
     },
-};
-</script>
 
-<style lang="scss" scoped>
-.general {
-    display: flex;
-    flex-wrap: wrap;
+    // 数字验证
+    validateNumber(rule, value, callback) {
+      const numberRegex = /^\d{1,4}(\.\d{1,2})?$/ // 匹配不超过四位数且小数点后不超过二位数的数字
+      if (!value) {
+        callback(new Error('该项不能为空'))
+      } else if (!numberRegex.test(value)) {
+        callback(
+          new Error('该项必须为不超过四位数且小数点后不超过三位数的数字')
+        )
+      } else {
+        callback()
+      }
+    },
 
-    .condition {
-        width: 50%;
-        display: flex;
+    // 删除
+    deleted(row) {
+      console.log(row, 'row')
+      if (row.state == '1') {
+        this.$message({
+          type: 'error',
+          message: '该项处于启用状态,无法删除!'
+        })
+        return
+      }
+      this.$confirm('此操作将永久删除该文件,是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          delWindEngineMill({ millTypeCode: row.millTypeCode }).then((res) => {
+            this.onSubmit()
+            // 执行删除操作
+            this.$message({
+              type: 'success',
+              message: '删除成功!'
+            })
+          })
+        })
+        .catch(() => {
+          // 取消删除
+          this.$message({
+            type: 'info',
+            message: '已取消删除'
+          })
+        })
+    },
 
-        p {
-            width: 100px;
-            text-align: right;
-            line-height: 40px;
-            margin-right: 10px;
+    //机型详情
+    particulars(row) {
+      getWindEngineMillPageVo({ millTypeCode: row.millTypeCode }).then(
+        (res) => {
+          this.unusualdialog = true
+          this.particularsdata = res.data
         }
+      )
+    },
+    //分页数据切换
+    handleCurrentChange(val) {
+      this.formInline.pageNum = val
+      this.onSubmit()
+    },
 
-        span {
-            line-height: 40px;
-        }
+    // 重置
+    reset() { },
 
-        .el-select {
-            width: 100%;
-            margin-bottom: 20px;
-        }
+    // 新增
+    newly() {
+      this.nuedialog = false
+    },
 
-        .el-input {
-            margin-bottom: 20px;
+    // 编辑
+    compile(row) {
+      getWindEngineMillPageVo({ millTypeCode: row.millTypeCode }).then(
+        (res) => {
+          const item = JSON.parse(JSON.stringify(res.data))
+          this.detail = item
+          Object.keys(this.ruleForm).forEach((key) => {
+            this.ruleForm[key] = item[key]
+          })
+          console.log(res)
         }
+      )
+      this.title = '编辑'
+      this.nuedialog = true
+      this.isEdit = true
+    },
+    // 上传附件
+    uploading(row) {
+      this.rowmillTypeCode = row.millTypeCode
+
+      this.uploadingPOP = true
+    },
+    // 附件提交
+    filesubmit() {
+      console.log(this.globalFileList)
+      let filedata = {
+        millTypeCode: this.rowmillTypeCode,
+        file: this.globalFileList
+      }
+      powerWordCriterionImportData(filedata).then((res) => {
+        console.log(res)
+        this.uploadingPOP = false
+        this.$message.success('上传成功')
+      })
+    },
+
+    // 删除附件
+    deleteRow(row) {
+      this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          })
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消删除'
+          })
+        })
+    },
+
+    // 新增
+    newnuedialog() {
+      this.nuedialog = true
+      this.title = '新增'
+    },
+    // 下载模板
+    download() {
+      if (this.AllTemplateurl) {
+        const link = document.createElement('a')
+        link.href = this.AllTemplateurl
+        link.download = '' // 可以设置默认下载文件名
+        link.target = '_blank' // 新窗口打开
+        document.body.appendChild(link)
+        link.click()
+        document.body.removeChild(link)
+      } else {
+        console.error('URL is not set')
+      }
+    },
+    getAllTemplate() {
+      getAllTemplate().then((res) => {
+        this.AllTemplateurl = res.data.bzPower
+      })
+    },
+    // 下载附件
+    downloadfile() {
+      if (this.particularsdata.powerCriterionUrl) {
+        const link = document.createElement('a')
+        link.href = this.particularsdata.powerCriterionUrl
+        link.download = '' // 可以设置默认下载文件名
+        link.target = '_blank' // 新窗口打开
+        document.body.appendChild(link)
+        link.click()
+        document.body.removeChild(link)
+      } else {
+        this.$message({
+          showClose: true,
+          message: '当前未上传附件无法下载,请先上传附件!!!',
+          type: 'warning'
+
+        });
+      }
+    },
+    // 附件验证
+    beforeUpload(fileList) {
+      const isXLSX =
+        fileList.type ===
+        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+      if (!isXLSX) {
+        this.$message.error('只能上传xlsx文件')
+      }
+      const isLt5MB = fileList.size / 1024 / 1024 < 5
+      if (!isLt5MB) {
+        this.$message.error('文件大小不能超过5MB')
+      }
+      console.log(fileList, 'fileList')
+      return isXLSX && isLt5MB
+    },
+    handleOnChange(fileList) {
+      console.log(fileList)
+      this.globalFileList = fileList.raw
     }
+  }
 }
+</script>
 
-.UPcondition {
+<style lang="scss" scoped>
+.general {
+  display: flex;
+  flex-wrap: wrap;
+
+  .condition {
+    width: 50%;
     display: flex;
 
     p {
-        width: 74px;
-        text-align: right;
-        line-height: 40px;
+      width: 100px;
+      text-align: right;
+      line-height: 40px;
+      margin-right: 10px;
+    }
+
+    span {
+      line-height: 40px;
     }
 
     .el-select {
-        width: 100%;
-        margin-bottom: 20px;
+      width: 100%;
+      margin-bottom: 20px;
     }
 
     .el-input {
-        margin-bottom: 20px;
+      margin-bottom: 20px;
     }
+  }
+}
+
+.UPcondition {
+  display: flex;
+
+  p {
+    width: 74px;
+    text-align: right;
+    line-height: 40px;
+  }
+
+  .el-select {
+    width: 100%;
+    margin-bottom: 20px;
+  }
+
+  .el-input {
+    margin-bottom: 20px;
+  }
 }
 
 .attachment {
-    display: flex;
-    padding-top: 10px;
+  display: flex;
+  padding-top: 10px;
 
-    p {
-        margin-right: 20px;
-        color: #409eff;
-    }
+  p {
+    margin-right: 20px;
+    color: #409eff;
+  }
 }
 
 .model-center {
-    color: #666;
-    line-height: 40px;
-    height: 40px;
-    font-size: 14px;
+  color: #409eff;
+  cursor: pointer;
+  line-height: 40px;
+  height: 40px;
+  font-size: 14px;
 }
 
 // ......................
 .demo-ruleForm {
-    .el-form-item {
-        margin-bottom: 20px;
-    }
+  .el-form-item {
+    margin-bottom: 20px;
+  }
 
-    .el-form-item__error {
-        padding-top: 0;
-    }
+  .el-form-item__error {
+    padding-top: 0;
+  }
 
-    .el-select {
-        width: 260px;
-    }
+  .el-select {
+    width: 260px;
+  }
+
+  .el-input {
+    width: 260px;
+  }
+}
+
+.form-grid {
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+}
+
+.form-row {
+  display: flex;
+  gap: 10px;
+}
+
+.form-row .el-form-item {
+  flex: 1;
+}
+
+.form-actions {
+  display: flex;
+  justify-content: center;
+  margin-top: 20px;
+}
+.dialog-footer{
+  display: flex;
+  justify-content: center;
 }
 </style>

+ 557 - 182
src/views/ledger/windsite.vue

@@ -2,16 +2,28 @@
   <div class="global-variable">
     <div class="condition">
       <el-form :inline="true" :model="formInline" class="demo-form-inline">
-        <el-form-item label="单位名称:">
-          <el-input v-model="formInline.user" placeholder="请输入批次编号" size="small"></el-input>
+        <el-form-item label="风场名称:">
+          <el-input
+            v-model="formInline.fieldName"
+            placeholder="请输入风场名称"
+            size="small"
+          ></el-input>
         </el-form-item>
         <el-form-item label="选择日期:" size="small">
-          <el-date-picker v-model="formInline.timeQuantum" type="daterange" range-separator="至" start-placeholder="开始日期"
-            end-placeholder="结束日期">
+          <el-date-picker
+            v-model="formInline.timeQuantum"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            @change="onDateChange"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" @click="onSubmit" size="small">查询</el-button>
+          <el-button type="primary" @click="onSubmit" size="small"
+            >查询</el-button
+          >
           <el-button @click="reset" size="small">重置</el-button>
         </el-form-item>
       </el-form>
@@ -19,55 +31,132 @@
     <div class="list-page">
       <div class="newly">
         <el-button @click="upfile" size="small">导入</el-button>
-        <el-button type="primary" @click="newnuedialog" size="small">新增</el-button>
+        <el-button type="primary" @click="newnuedialog" size="small"
+          >新增</el-button
+        >
       </div>
 
-      <el-table class="center-align-table" :data="tableData" border :cell-style="rowStyle">
+      <el-table
+        class="center-align-table"
+        :data="tableData"
+        border
+        :cell-style="rowStyle"
+      >
         <el-table-column align="center" fixed prop="" label="单位名称">
           <template slot-scope="scope">
-            <el-button @click="particulars(scope.row)" type="text" size="small">泗洪风场</el-button>
+            <el-button
+              @click="particulars(scope.row)"
+              type="text"
+              size="small"
+              >{{ scope.row.fieldName }}</el-button
+            >
           </template>
         </el-table-column>
 
-        <el-table-column align="center" label="关联公司"> </el-table-column>
-        <el-table-column prop="abnormal" label="风机数量" width="80">
+        <el-table-column prop="windCompany" align="center" label="关联公司">
+        </el-table-column>
+        <el-table-column
+          prop="windCompany"
+          align="center"
+          label="风机数量"
+          width="80"
+        >
           <template slot-scope="scope">
-            <el-button @click="ONdraught(scope.row)" type="text" size="small">10</el-button>
+            <el-button @click="ONdraught(scope.row)" type="text" size="small">{{
+              scope.row.wegNumber
+            }}</el-button>
           </template>
         </el-table-column>
 
-        <el-table-column align="center" prop="abnormal" label="测风塔" width="80">
+        <el-table-column
+          align="center"
+          prop="abnormal"
+          label="测风塔"
+          width="80"
+        >
           <template slot-scope="scope">
-            <el-button @click="ONanemometer(scope.row)" type="text" size="small">1</el-button>
+            <el-button
+              @click="ONanemometer(scope.row)"
+              type="text"
+              size="small"
+              >{{ scope.row.atrNumber }}</el-button
+            >
           </template>
         </el-table-column>
 
-        <el-table-column prop="" align="center" label="所在省" width="100">
+        <el-table-column
+          prop="provinceName"
+          align="center"
+          label="所在省"
+          width="100"
+        >
         </el-table-column>
-        <el-table-column prop="" align="center" label="所在市" width="100">
+        <el-table-column
+          prop="cityName"
+          align="center"
+          label="所在市"
+          width="100"
+        >
         </el-table-column>
 
-        <el-table-column prop="" align="center" label="总额定容量" width="100">
-        </el-table-column>
+        <!-- <el-table-column prop="ratedCapacityNumber" align="center" label="总额定容量" width="100">
+        </el-table-column> -->
 
-        <el-table-column prop="" align="center" label="创建时间">
+        <el-table-column prop="createTime" align="center" label="创建时间">
         </el-table-column>
 
-        <el-table-column prop="" align="center" label="状态" width="100">
+        <el-table-column prop="state" align="center" label="状态" width="100">
+          <template slot-scope="{ row }">
+            {{ row.state == 1 ? "启用" : "停用" }}
+          </template>
         </el-table-column>
-        <el-table-column prop="transition" align="center" fixed="right" label="操作" width="200">
+        <el-table-column
+          prop="transition"
+          align="center"
+          fixed="right"
+          label="操作"
+          width="200"
+        >
           <template slot-scope="scope">
-            <el-button @click="compile(scope.row)" type="text" size="small">编辑</el-button>
-            <el-button @click="uploading(scope.row)" type="text" size="small">上传</el-button>
-            <el-button v-if="scope.row.transition == 1" @click="start(scope.row)" type="text"
-              size="small">启用</el-button>
-            <el-button v-else style="color: #666" @click="stop(scope.row)" type="text" size="small">停用</el-button>
-            <el-button style="color: #f00" @click="deleted(scope.row)" type="text" size="small">删除</el-button>
+            <el-button @click="compile(scope.row)" type="text" size="small"
+              >编辑</el-button
+            >
+            <el-button @click="uploading(scope.row)" type="text" size="small"
+              >上传</el-button
+            >
+            <el-button
+              v-if="scope.row.state == 0"
+              @click="start(scope.row, 1)"
+              type="text"
+              size="small"
+              >启用</el-button
+            >
+            <el-button
+              v-else
+              style="color: #666"
+              @click="start(scope.row, 0)"
+              type="text"
+              size="small"
+              >停用</el-button
+            >
+            <el-button
+              style="color: #f00"
+              @click="deleted(scope.row)"
+              type="text"
+              size="small"
+              >删除</el-button
+            >
           </template>
         </el-table-column>
       </el-table>
       <div class="pagination-container">
-        <el-pagination :page-size="10" :pager-count="11" layout="total, prev, pager, next" :total="35">
+        <el-pagination
+          @current-change="handleCurrentChange"
+          :current-page.sync="formInline.pageNum"
+          layout="total, prev, pager, next"
+          :page-size="formInline.pageSize"
+          :total="formInline.totalSize"
+        >
         </el-pagination>
       </div>
     </div>
@@ -76,62 +165,113 @@
 
     <!-- 新增 -->
     <el-dialog :title="title" :visible.sync="nuedialog" width="800px">
-      <div class="general">
-        <div class="condition">
-          <p>风场名称:</p>
-          <el-input v-model="windsiteName"></el-input>
-        </div>
-        <div class="condition">
-          <p>空气密度:</p>
-          <el-input v-model="airdensity"></el-input>
-        </div>
-
-        <div class="condition">
-          <p>上级单位:</p>
-          <el-select v-model="superior" placeholder="请选择">
-            <el-option v-for="item in superiorOptions" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-        </div>
-        <div class="condition">
-          <p>海拔高度:</p>
-          <el-input v-model="altitude"></el-input>
-        </div>
-
-        <div class="condition">
-          <p>所在省:</p>
-          <el-select v-model="sheng" placeholder="请选择">
-            <el-option v-for="item in shengOptions" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-        </div>
-        <div class="condition">
-          <p>所在市:</p>
-          <el-select v-model="shi" placeholder="请选择">
-            <el-option v-for="item in shiOptions" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-        </div>
-        <div class="condition">
-          <p>经度:</p>
-          <el-input v-model="longitude"></el-input>
-        </div>
-
-        <div class="condition">
-          <p>纬度:</p>
-          <el-input v-model="dimensionality"></el-input>
+      <el-form :model="form" :rules="rules" ref="formRef" label-width="120px">
+        <div class="general">
+          <div class="row">
+            <div class="condition">
+              <el-form-item label="风场名称:" prop="fieldName">
+                <el-input v-model="form.fieldName"></el-input>
+              </el-form-item>
+            </div>
+            <div class="condition">
+              <el-form-item label="空气密度:" prop="density">
+                <el-input v-model="form.density"></el-input>
+              </el-form-item>
+            </div>
+          </div>
+          <div class="row">
+            <div class="condition">
+              <el-form-item label="上级单位:" prop="companyCode">
+                <selecttree
+                  placeholder="请选择上级单位"
+                  :list="parentOpt"
+                  v-model="form.companyCode"
+                  @change="parentChange"
+                >
+                </selecttree>
+              </el-form-item>
+            </div>
+            <div class="condition">
+              <el-form-item label="海拔高度:" prop="elevationHeight">
+                <el-input v-model="form.elevationHeight"></el-input>
+              </el-form-item>
+            </div>
+          </div>
+          <div class="row">
+            <div class="condition">
+              <el-form-item label="所在省:" prop="provinceName">
+                <el-select
+                  v-model="form.provinceName"
+                  placeholder="请选择"
+                  value-key="areaId"
+                  @change="fetchCities"
+                >
+                  <el-option
+                    v-for="item in provinceNameOptions"
+                    :key="item.areaId"
+                    :label="item.province"
+                    :value="item"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </div>
+            <div class="condition">
+              <el-form-item label="所在市:" prop="cityName">
+                <el-select
+                  v-model="form.cityName"
+                  placeholder="请选择"
+                  value-key="areaId"
+                >
+                  <el-option
+                    v-for="item in cityNameOptions"
+                    :key="item.areaId"
+                    :label="item.city"
+                    :value="item"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </div>
+          </div>
+          <div class="row">
+            <div class="condition">
+              <el-form-item label="经度:" prop="longitude">
+                <el-input v-model="form.longitude"></el-input>
+              </el-form-item>
+            </div>
+            <div class="condition">
+              <el-form-item label="纬度:" prop="latitude">
+                <el-input v-model="form.latitude"></el-input>
+              </el-form-item>
+            </div>
+          </div>
+          <div class="row">
+            <div class="condition">
+              <el-form-item label="测风塔:" prop="anemometerTowerRelationDtos">
+                <el-select
+                  v-model="form.anemometerTowerRelationDtos"
+                  multiple
+                  collapse-tags
+                  placeholder="请选择"
+                  value-key="anemometerCode"
+                >
+                  <el-option
+                    v-for="item in options"
+                    :key="item.anemometerCode"
+                    :label="item.anemometerName"
+                    :value="item.anemometerCode"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </div>
+          </div>
         </div>
+      </el-form>
 
-        <div class="condition">
-          <p>测风塔:</p>
-          <el-select v-model="anemometer" placeholder="请选择">
-            <el-option v-for="item in anemometerOptions" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
-        </div>
-      </div>
       <div class="bianji" v-show="listedfiles">
-        <el-table :data="tableData" style="width: 100%">
+        <el-table :data="filetableData" style="width: 100%">
           <el-table-column prop="" label="文件名" width="180">
           </el-table-column>
           <el-table-column prop="" label="文件类型" width="180">
@@ -139,7 +279,11 @@
           <el-table-column prop="" label="文件大小"> </el-table-column>
           <el-table-column fixed="right" label="操作" width="120">
             <template slot-scope="scope">
-              <el-button @click.native.prevent="deleteRow(scope.row)" type="text" size="small">
+              <el-button
+                @click.native.prevent="deleteRow(scope.row)"
+                type="text"
+                size="small"
+              >
                 删除
               </el-button>
             </template>
@@ -147,84 +291,143 @@
         </el-table>
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="nuedialog = false" size="small">取 消</el-button>
-        <el-button type="primary" @click="newly" size="small">确 定</el-button>
+        <el-button @click="handleClose(false, 'nuedialog')" size="small"
+          >取 消</el-button
+        >
+        <el-button type="primary" @click="newly('formRef')" size="small"
+          >确 定</el-button
+        >
       </span>
     </el-dialog>
 
     <!-- 风场详情 -->
-    <WindsiteMessage :unusualdialog="unusualdialog" @handleClose="handleClose"></WindsiteMessage>
+    <WindsiteMessage
+      :unusualdialog="unusualdialog"
+      :unusualdialogdata="unusualdialogdata"
+      @handleClose="handleClose"
+    >
+    </WindsiteMessage>
     <!-- 测风塔 -->
-    <windsitemachine :anemometerdialog="anemometerdialog" @handleClose="handleClose"></windsitemachine>
+    <windsitemachine
+      :anemometerdialog="anemometerdialog"
+      :anemometerData="anemometerData"
+      @handleClose="handleClose"
+    >
+    </windsitemachine>
     <!-- 风机数量 -->
-    <windsitetower :draught="draught" @handleClose="handleClose"></windsitetower>
+    <windsitetower
+      :draught="draught"
+      :draughtData="draughtData"
+      @handleClose="handleClose"
+    ></windsitetower>
     <!-- 上传 -->
-    <windsiteup :uploadingPOP="uploadingPOP" @handleClose="handleClose"></windsiteup>
+    <windsiteup
+      :uploadingPOP="uploadingPOP"
+      @handleClose="handleClose"
+    ></windsiteup>
     <!-- 导入 -->
-    <windsitetolead :tolead=tolead @handleClose="handleClose"></windsitetolead>
+    <windsitetolead
+    :parentOptdata="parentOptdata"
+      :tolead="tolead"
+      @handleClose="handleClose"
+    ></windsitetolead>
   </div>
 </template>
 
 <script>
-import WindsiteMessage from './component/windsiteMessage.vue';
-import windsitemachine from './component/windsitemachine.vue';
-import windsitetower from './component/windsitetower.vue';
-import windsiteup from './component/windsiteup.vue';
-import windsitetolead from './component/windsitetolead.vue';
-
-
-
+import {
+  WindFieldListPage,
+  createWindField,
+  delWindFieldById,
+  findAllProvince,
+  getAllWindCompany,
+  getAnemometerTowerByField,
+  getAnemometerTowerNameList,
+  getCitiesByPId,
+  getWindFieldVo,
+  updateWindFieldStateById,
+  windEngineGrouPage,
+  windFieldDto,
+} from "@/api/ledger.js";
+import selecttree from "../../components/selecttree";
+import WindsiteMessage from "./component/windsiteMessage.vue";
+import windsitemachine from "./component/windsitemachine.vue";
+import windsitetolead from "./component/windsitetolead.vue";
+import windsitetower from "./component/windsitetower.vue";
+import windsiteup from "./component/windsiteup.vue";
 
 export default {
   components: {
-    WindsiteMessage, windsitemachine, windsitetower, windsiteup, windsitetolead
+    WindsiteMessage,
+    windsitemachine,
+    windsitetower,
+    windsiteup,
+    windsitetolead,
+    selecttree,
   },
   data() {
-
     return {
-      // 新增信息
-      windsiteName: "",
-      airdensity: "",
-      superior: "",
-      superiorOptions: [],
-      altitude: "",
-      sheng: "",
-      shengOptions: [],
-      shi: "",
-      shiOptions: [],
-      longitude: "",
-      dimensionality: "",
-      anemometer: "",
-      anemometerOptions: [],
-
-      listedfiles:false,
+      treeval: "",
+      tableData: [],
       formInline: {
-        user: "",
-        region: "",
-        timeQuantum: "",
+        fieldName: "",
+        timeQuantum: [],
+        pageNum: 1,
+        pageSize: 10,
+        totalSize: 0,
       },
-      tableData: [
-        {
-          id: 1,
-          name: "王小虎",
-          transition: "1",
-        },
-        {
-          id: 3,
-          name: "王小虎",
-          abnormal: "1",
-          transition: "0",
-          children: [
-            {
-              id: 31,
-
-              name: "王小虎",
-
-              abnormal: "1",
-            },
-          ],
-        },
-      ],
+      startDate: "",
+      endDate: "",
+      parentOpt: [],
+      form: {
+        anemometerTowerRelationDtos: [],
+        areaCode: "",
+        cityId: "",
+        cityName: "",
+        density: "",
+        elevationHeight: "",
+        fieldName: "",
+        latitude: "",
+        longitude: "",
+        provinceId: "",
+        provinceName: "",
+        ratedCapacityNumber: "",
+        companyCode: "",
+      },
+      rules: {
+        fieldName: [
+          { required: true, message: "请输入风场名称", trigger: "blur" },
+        ],
+        density: [
+          { required: true, message: "请输入空气密度", trigger: "blur" },
+        ],
+        companyCode: [
+          { required: true, message: "请选择上级单位", trigger: "change" },
+        ],
+        elevationHeight: [
+          { required: true, message: "请输入海拔高度", trigger: "blur" },
+        ],
+        provinceName: [
+          { required: true, message: "请选择所在省", trigger: "change" },
+        ],
+        cityName: [
+          { required: true, message: "请选择所在市", trigger: "change" },
+        ],
+        longitude: [{ required: true, message: "请输入经度", trigger: "blur" }],
+        latitude: [{ required: true, message: "请输入纬度", trigger: "blur" }],
+        anemometerTowerRelationDtos: [
+          { required: true, message: "请选择测风塔", trigger: "change" },
+        ],
+      },
+      provinceNameOptions: [],
+      cityNameOptions: [],
+      options: [],
+      filetableData: [],
+      anemometerData: [],
+      draughtData: [],
+      unusualdialogdata: {},
+      parentOptdata:[],
+      listedfiles: false,
       nuedialog: false,
       unusualdialog: false,
       tolead: false,
@@ -237,73 +440,255 @@ export default {
         city: "",
         descr: "",
       },
+      isEdit: false,
       title: "新增",
+      detail: {},
     };
   },
-
+  created() {
+    this.onSubmit();
+    this.postsheng();
+    this.relevanceunit();
+    this.TowerNameList();
+  },
   methods: {
     handleClose(value, dialogName) {
-      this[dialogName] = value
+      this[dialogName] = value;
+      Object.assign(this.$data.form, this.$options.data().form);
     },
+    // 列表居中展示
     rowStyle() {
       return "text-align:center";
     },
+    // 时间转换
+    onDateChange(date) {
+      if (Array.isArray(date)) {
+        this.startDate = this.$formatDate(date[0]);
+        this.endDate = this.$formatDate(date[1]);
+        if (this.endDate < this.startDate) {
+          this.endDate = this.startDate;
+        }
+      } else {
+        this.startDate = null;
+        this.endDate = null;
+      }
+    },
+    // 省
+    async postsheng() {
+      try {
+        const res = await findAllProvince();
+        this.provinceNameOptions = res.data;
+      } catch (error) {
+        console.error("Error fetching province data:", error);
+      }
+    },
+
+    // 市
+    fetchCities(item, city) {
+      console.log(item, this.newform.province);
+      this.newform.province = item;
+      this.form.province = item;
+      this.form.cityName = "";
+      let data = {
+        provinceId: item.areaId,
+      };
+      getCitiesByPId(data).then((res) => {
+        this.cityNameOptions = res.data;
+      });
+      if (city) {
+        this.newform.city = Object.assign(
+          {},
+          { areaId: city.areaId, city: city.city }
+        );
+      }
+    },
+    // 测风塔
+    TowerNameList() {
+      getAnemometerTowerNameList().then((res) => {
+        this.options = res.data;
+      });
+    },
+
+    // 关联风场
+    async relevanceunit() {
+      try {
+        const res = await getAllWindCompany();
+        this.parentOpt = res.data;
+      } catch (error) {
+        console.error("Error fetching wind company data:", error);
+      }
+    },
 
+    parentChange(data) {
+      //data为当前选中对象
+      console.log(data);
+    },
     // 查询
     onSubmit() {
-      console.log("submit!");
+      let paramsData = {
+        fieldName: this.formInline?.fieldName || undefined,
+        beginTime: this.startDate || undefined,
+        endTime: this.endDate || undefined,
+        pageNum: 1,
+        pageSize: 10,
+      };
+      WindFieldListPage(paramsData).then((res) => {
+        this.tableData = res.data.list;
+        this.formInline.totalSize = res.data.totalSize;
+      });
+    },
+    //分页数据切换
+    handleCurrentChange(val) {
+      this.formInline.pageNum = val;
+      this.onSubmit();
+    },
+    // 停用
+    start(row, type) {
+      let objectval = {
+        fieldCode: row.fieldCode,
+        state: type === 0 ? 0 : 1,
+      };
+      updateWindFieldStateById(objectval).then((res) => {
+        this.$message({
+          message: "状态已更新成功",
+          type: "success",
+        });
+        // this.$message(`${type === 1 ? '状态已更新成功' : '状态已更新成功'}`);
+        row.state = type === 1 ? 0 : 1;
+        this.onSubmit();
+      });
+    },
+    processData(data) {
+      console.log(data);
+      if (!data) {
+        console.error("Data is undefined");
+        return;
+      }
+      return data.map((code) => ({
+        towerCode: code,
+      }));
+    },
+    // 新增提交
+    newly(formName) {
+      console.log(this.form.anemometerTowerRelationDtos);
+      this.processData(this.form.anemometerTowerRelationDtos);
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          // 提交逻辑
+          const params = JSON.parse(JSON.stringify(this.form));
+          params.anemometerTowerRelationDtos = this.processData(
+            this.form.anemometerTowerRelationDtos
+          );
+          params.cityName = this.form.cityName.city;
+          params.cityId = this.form.cityName.areaId;
+          params.provinceName = this.form.provinceName.province;
+          params.provinceId = this.form.provinceName.areaId;
+          params.areaCode = this.form.cityName.areaCode;
+          if (this.isEdit) {
+            params.fieldCode = this.detail.fieldCode;
+          }
+          console.log(this.form, params);
+          const API = this.isEdit
+            ? windFieldDto(params)
+            : createWindField(params);
+          API.then((res) => {
+            this.nuedialog = false;
+            this.onSubmit();
+            this.isEdit = false;
+          });
+
+          // 在这里添加提交逻辑,例如发送表单数据到服务器
+        } else {
+          console.log("表单验证失败!");
+          return false;
+        }
+      });
     },
     // 重置
-    reset() { },
+    reset() {},
     //导入提交
     UPsubmit() {
       this.tolead = false;
     },
-    // 新增
-    newly() {
-      this.nuedialog = false;
-    },
 
-    //异常详情
+    //查看详情
     particulars(row) {
-      this.unusualdialog = true;
+      getWindFieldVo({
+        fieldCode: row.fieldCode,
+      }).then((res) => {
+        this.unusualdialogdata = res.data;
+        this.unusualdialog = true;
+      });
     },
-    //风机信息
+    //风机详情
     ONdraught(row) {
-      this.draught = true;
+      let paramsData = {
+        fieldCode: row.fieldCode,
+        pageNum: 1,
+        pageSize: 10,
+      };
+      windEngineGrouPage(paramsData).then((res) => {
+        this.draughtData = res.data.list;
+        this.draught = true;
+      });
     },
+    //测风塔详情
     ONanemometer(row) {
-      this.anemometerdialog = true;
+      getAnemometerTowerByField({
+        fieldCode: row.fieldCode,
+      }).then((res) => {
+        this.anemometerData = res.data;
+        this.anemometerdialog = true;
+      });
     },
+
     // 编辑
     compile(row) {
+      console.log(row, "row");
+      //编辑 接口WindFieldDto
+      const item = JSON.parse(JSON.stringify(row));
+      this.detail = item;
+      Object.keys(this.form).forEach((key) => {
+        this.form[key] = item[key];
+      });
+      this.detail = row;
       this.nuedialog = true;
-      this.listedfiles=true
+      this.listedfiles = true;
       this.title = "编辑";
+      this.isEdit = true;
     },
     // 上传附件
     uploading(row) {
       this.uploadingPOP = true;
     },
 
-    // 启用
-    start(row) { },
-    // 停用
-    stop(row) { },
     // 删除
     deleted(row) {
-      this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
+      console.log(row, "row");
+      if (row.state == "1") {
+        this.$message({
+          type: "error",
+          message: "该项处于启用状态,无法删除!",
+        });
+        return;
+      }
+      this.$confirm("此操作将永久删除该文件,是否继续?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
       })
         .then(() => {
-          this.$message({
-            type: "success",
-            message: "删除成功!",
+          delWindFieldById({ fieldCode: row.fieldCode }).then((res) => {
+            this.onSubmit();
+            // 执行删除操作
+            this.$message({
+              type: "success",
+              message: "删除成功!",
+            });
           });
         })
         .catch(() => {
+          // 取消删除
           this.$message({
             type: "info",
             message: "已取消删除",
@@ -337,7 +722,7 @@ export default {
     // 新增
     newnuedialog() {
       this.nuedialog = true;
-      this.listedfiles=false
+      this.listedfiles = false;
       this.title = "新增";
     },
   },
@@ -347,31 +732,22 @@ export default {
 <style lang="scss" scoped>
 .general {
   display: flex;
-  flex-wrap: wrap;
+  flex-direction: column;
 
-  .condition {
-    width: 50%;
+  .row {
     display: flex;
+    justify-content: space-between;
+  }
 
-    p {
-      width: 100px;
-      text-align: right;
-      line-height: 40px;
-    }
-
-    span {
-      line-height: 40px;
-
-      padding-left: 20px;
-    }
+  .condition {
+    width: 50%;
 
     .el-select {
-      width: 100%;
-      margin-bottom: 20px;
+      width: 260px;
     }
 
-    .el-input {
-      margin-bottom: 20px;
+    .el-form-item {
+      margin-bottom: 22px;
     }
   }
 }
@@ -395,11 +771,10 @@ export default {
   }
 }
 
-
 .model-center {
   color: #666;
   line-height: 40px;
   height: 40px;
   font-size: 14px;
 }
-</style>
+</style>

+ 2 - 2
vue.config.js

@@ -64,8 +64,8 @@ module.exports = {
     proxy: {
       "/api": {
         // target: "http://192.168.5.4:16200", // 石月
-        target: "http://192.168.50.235:16200", //内网
-        // target: "http://106.120.102.238:16600", //外网
+        // target: "http://192.168.50.235:16200", //内网
+        target: "http://106.120.102.238:16600", //外网
         changeOrigin: true,
         pathRewrite: {
           "^/api": "", // 需要rewrite重写的,

Некоторые файлы не были показаны из-за большого количества измененных файлов