Przeglądaj źródła

fix:公司 - 区域 - 场站 - 期次 - 线路 新树接口所有模块配置,接口联调

chenxinlei 2 lat temu
rodzic
commit
1cc3889d76

+ 1 - 1
src/api/table.js

@@ -2,7 +2,7 @@ import request from '@/utils/request'
 
 const projectplan =(data)=>{
   return request({
-      url:`projectplan/listByPage?pagenum=${data.pagenum}&pagesize=${data.pagesize}`,
+      url:`projectplan/listByPage?projectid=${data.projectid}&pagenum=${data.pagenum}&pagesize=${data.pagesize}`,
       method:"get"
   })
 }

+ 28 - 0
src/utils/deepTree.js

@@ -0,0 +1,28 @@
+var treeAll = []
+export function recursionTree(data) {
+    for (let i = 0; i < data.length; i++) {
+        treeAll.push(data[i])    
+        if(data[i].children){
+            if (data[i].children.length != 0) {
+                recursionTree(data[i].children)
+            }
+        }
+    }
+    return treeAll
+}
+
+var recursionTreeChildrenData = ""
+export function recursionTreeChildren(id , dataAll) {
+    for (let i = 0; i < dataAll.length; i++) {
+        if(dataAll[i].children){
+            if(dataAll[i].id == id) {
+                recursionTreeChildrenData = dataAll[i].children
+            } else {
+                recursionTreeChildren(id , dataAll[i].children)
+            }
+        }
+    }
+    return recursionTreeChildrenData
+}
+
+

+ 3 - 3
src/views/index/components/TableEdit.vue

@@ -6,13 +6,13 @@
           v-model="form.cascaderSel" 
           :options="options" 
           style="width: 240px" 
-          :props="{ checkStrictly: true, label: 'name', value: 'id', children:'children' }" 
+          :props="{ checkStrictly: true, label: 'name', value: 'id', children:'children'}" 
           clearable />
       </el-form-item>
-      <el-form-item label="场站" prop="generatingcapacity" v-if="!idAdd">
+      <el-form-item label="场站" prop="windpower" v-if="!idAdd">
         <el-input class="inputs" v-model="form.windpower" disabled style="width: 240px"></el-input>
       </el-form-item>
-      <el-form-item label="期次" prop="generatingcapacity" v-if="!idAdd">
+      <el-form-item label="期次" prop="projectid" v-if="!idAdd">
         <el-input class="inputs" v-model="form.projectid" disabled style="width: 240px"></el-input>
       </el-form-item>
       <el-form-item label="计划发电量" prop="generatingcapacity">

+ 11 - 8
src/views/index/index.vue

@@ -3,10 +3,11 @@
     <vab-query-form>
       <vab-query-form-left-panel>
         <el-form ref="form" :model="queryForm" :inline="true" @submit.native.prevent >
-          <el-form-item label="场站">
-            <el-cascader class="cascaders" v-model="cascaderSel" :options="options" style="width: 200px"
-              :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children'}" clearable>
-            </el-cascader>
+          <el-form-item label="工程编号">
+            <!-- <el-cascader class="cascaders" v-model="cascaderSel" :options="options" style="width: 200px"
+              :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children', expandTrigger: 'hover' }" clearable>
+            </el-cascader> -->
+            <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" native-type="submit" @click="handleQuery">
@@ -29,7 +30,7 @@
       :height="height" @selection-change="setSelectRows" @sort-change="tableSortChange" show-summary
       :summary-method="getSummaries">
       <el-table-column show-overflow-tooltip type="selection" width="65"></el-table-column>
-      <el-table-column show-overflow-tooltip label="风场编号" prop="windpower" width="200" align="center" sortable>
+      <el-table-column show-overflow-tooltip label="风场编号" prop="windpower" align="center" sortable>
       </el-table-column>
       <el-table-column show-overflow-tooltip label="工程编号" prop="projectid" align="center" sortable></el-table-column>
       <el-table-column show-overflow-tooltip label="计划发电量" prop="generatingcapacity" align="center" sortable>
@@ -38,7 +39,7 @@
       </el-table-column>
       <el-table-column show-overflow-tooltip label="年份" prop="year" align="center" sortable></el-table-column>
       <el-table-column show-overflow-tooltip label="月份" prop="month" align="center" sortable></el-table-column>
-      <el-table-column show-overflow-tooltip label="操作" width="180px">
+      <el-table-column show-overflow-tooltip label="操作" width="180px" fixed="right">
         <template #default="{ row }">
           <el-button type="text" @click="handleEdit(row)">编辑</el-button>
           <el-button type="text" @click="handleDelete(row)">删除</el-button>
@@ -72,9 +73,10 @@ export default {
   },
   data() {
     return {
+      fuzzyQuery: "",
       imgShow: true,
       list: [],
-      cascaderSel: [],
+      cascaderSel: "",
       imageList: [],
       listLoading: true,
       layout: 'total, sizes, prev, pager, next, jumper',
@@ -103,7 +105,7 @@ export default {
   mounted() { },
   methods: {
     getStation() {
-      api.newtreeTreels({tag: 3}).then(res => {
+      api.newtreeTreels({tag: 2}).then(res => {
         if (res.data) {
           this.options = res.data
         }
@@ -175,6 +177,7 @@ export default {
     async fetchData() {
       this.listLoading = true
       api.projectplan({
+        projectid: this.fuzzyQuery,
         pagenum: this.queryForm.pageNo,
         pagesize: this.queryForm.pageSize,
       }).then(res => {

+ 30 - 10
src/views/indicators/components/TableEdit.vue

@@ -1,23 +1,31 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
-      <el-form-item label="场站" prop="stationid">
-        <el-select v-model="form.stationid" placeholder="请选择" clearable :disabled="!idAdd?true:false">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120">
+      <el-form-item label="场站  " prop="stationid">
+        <!-- <el-select style="width: 240px" v-model="form.stationid" placeholder="请选择" clearable :disabled="!idAdd?true:false">
           <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
           </el-option>
-        </el-select>
+        </el-select> -->
+        <el-cascader 
+          ref="cascaderRef"
+          @change="cascaderChange"
+          v-model="form.stationid" 
+          :options="options" 
+          style="width: 200px" 
+          :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children'}" 
+          clearable />
       </el-form-item>
-      <el-form-item label="指标" prop="kay">
-        <el-select v-model="form.kay" placeholder="请选择" clearable :disabled="!idAdd?true:false">
+      <el-form-item label="指标  " prop="kay">
+        <el-select style="width: 200px" v-model="form.kay" placeholder="请选择" clearable :disabled="!idAdd?true:false">
           <el-option v-for="item in keyList" :key="item.name" :label="item.name" :value="item.name">
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="值" prop="value">
-        <el-input class="inputs" v-model="form.value"></el-input>
+      <el-form-item label="值   " prop="value">
+        <el-input style="width: 200px" class="inputs" v-model="form.value"></el-input>
       </el-form-item>
       <el-form-item label="录入时间" prop="createtime">
-        <el-date-picker v-model="form.createtime" type="datetime" placeholder="选择日期时间">
+        <el-date-picker style="width: 200px" v-model="form.createtime" type="datetime" placeholder="选择日期时间">
         </el-date-picker>
       </el-form-item>
     </el-form>
@@ -38,6 +46,10 @@ export default {
       type: Array,
       default: []
     },
+    options: {
+      type: Array,
+      default: []
+    },
   },
   data() {
     return {
@@ -47,6 +59,8 @@ export default {
         createtime: '',
         stationid: '',
         stationname: '',
+        stationidArr: '',
+        stationnameArr: '',
         value: '',
       },
       rules: {
@@ -62,6 +76,10 @@ export default {
   },
   created() { },
   methods: {
+    cascaderChange(data){
+      this.form.stationidArr = data
+      this.form.stationnameArr = this.$refs["cascaderRef"].getCheckedNodes()[0].pathLabels
+    },
     showEdit(row) {
       if (!row) {
         this.title = '添加'
@@ -70,6 +88,7 @@ export default {
         this.title = '编辑'
         this.idAdd = false
         this.form = Object.assign({}, row)
+        this.form.stationid = row.stationid.split(",")
       }
       this.dialogFormVisible = true
     },
@@ -82,7 +101,8 @@ export default {
     handleSave() {
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
-          this.form.stationname = this.stationList.find(val => val.id === this.form.stationid).name
+          this.form.stationid = this.form.stationid.join(",")
+          this.form.stationname = this.form.stationnameArr[this.form.stationnameArr.length-1]
           this.form.createtime = dayjs(this.form.createtime).format("YYYY-MM-DD HH:mm:ss")
           api.addIndicators(this.form).then(res => {
             if (res.code == 200) {

+ 23 - 13
src/views/indicators/index.vue

@@ -2,15 +2,17 @@
   <div class="table-container">
     <div class="title">
       <div class="left">
+        <!-- <div class="left-item">
+          <div style="width: 70px;">场站:</div>
+          <el-cascader 
+            v-model="selectValue" 
+            :options="options" 
+            style="width: 200px" 
+            :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children', expandTrigger: 'hover' }" 
+            clearable />
+        </div> -->
         <div class="left-item">
-          <div>场站:</div>
-          <el-select v-model="selectValue" placeholder="请选择" clearable>
-            <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </div>
-        <div class="left-item">
-          <div style="width: 70px;">名称:</div>
+          <div style="width: 100px;">风场名称:</div>
           <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
         </div>
         <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
@@ -26,12 +28,11 @@
         </el-button>
       </div>
     </div>
-
     <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
       :height="height" @selection-change="setSelectRows">
       <!-- show-summary :summary-method="getSummaries" -->
-      <el-table-column show-overflow-tooltip type="selection" width="65"></el-table-column>
-      <el-table-column show-overflow-tooltip label="风场编号" prop="stationid" width="200" align="center" sortable>
+      <el-table-column width="65" show-overflow-tooltip type="selection"></el-table-column>
+      <el-table-column width="100" show-overflow-tooltip label="风场编号" prop="stationid" align="center" sortable>
       </el-table-column>
       <el-table-column show-overflow-tooltip label="风场名称" prop="stationname" align="center" sortable></el-table-column>
       <el-table-column show-overflow-tooltip label="指标" prop="kay" align="center" sortable>
@@ -40,7 +41,7 @@
       </el-table-column>
       <el-table-column show-overflow-tooltip label="录入时间" prop="createtime" align="center" sortable>
       </el-table-column>
-      <el-table-column show-overflow-tooltip label="操作" width="180px">
+      <el-table-column show-overflow-tooltip label="操作" width="180px" fixed="right">
         <template #default="{ row }">
           <el-button type="text" @click="handleEdit(row)">编辑</el-button>
           <el-button type="text" @click="handleDelete(row)">删除</el-button>
@@ -50,7 +51,7 @@
     <el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
       :page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
       @size-change="handleSizeChange"></el-pagination>
-    <table-edit ref="edit" :stationList="stationList" @handleSuccess="fetchData"></table-edit>
+    <table-edit ref="edit" :options="options" :stationList="stationList" @handleSuccess="fetchData"></table-edit>
   </div>
 </template>
 
@@ -75,6 +76,7 @@ export default {
   },
   data() {
     return {
+      options: [],
       imgShow: true,
       list: [],
       fuzzyQuery: '',
@@ -102,10 +104,18 @@ export default {
   created() {
     this.getStation()
     this.fetchData()
+    this.getTree()
   },
   beforeDestroy() { },
   mounted() { },
   methods: {
+    getTree() {
+      api.newtreeTreels({tag:2}).then(res => {
+        if (res.data) {
+          this.options = res.data
+        }
+      })
+    },
     getStation() {
       apis.windpowerstationList({
         id: '',

+ 1 - 1
src/views/stationConfiguration/area/components/TableEdit.vue

@@ -1,6 +1,6 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="170px">
       <el-row>
         <el-col :span="12">
           <el-form-item :disabled="!idAdd?true:false" label="id" prop="id"><el-input class="inputs" v-model.trim="form.id" autocomplete="off"></el-input></el-form-item>

+ 1 - 1
src/views/stationConfiguration/area/index.vue

@@ -4,7 +4,7 @@
       <div class="title">
         <div class="left">
           <div class="left-item">
-            <div>公司:</div>
+            <div style="width: 70px;">公司:</div>
             <el-select v-model="selectValue" placeholder="请选择" clearable>
               <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id"></el-option>
             </el-select>

+ 1 - 1
src/views/stationConfiguration/company/components/TableEdit.vue

@@ -1,6 +1,6 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="900px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="170px">
     <el-row>
       <el-col :span="12">
         <el-form-item :disabled="!idAdd?true:false" label="id" prop="id"><el-input class="inputs" v-model.trim="form.id" autocomplete="off"></el-input></el-form-item>

+ 15 - 1
src/views/stationConfiguration/company/index.vue

@@ -3,8 +3,14 @@
     <vab-query-form>
       <vab-query-form-left-panel>
         <el-form ref="form" :model="queryForm" :inline="true" @submit.native.prevent>
-          <el-form-item>
+          <el-form-item label="公司名称">
             <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
+            <!-- <el-cascader 
+              v-model="fuzzyQuery" 
+              :options="options" 
+              style="width: 240px" 
+              :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children1' }" 
+              clearable /> -->
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
@@ -95,6 +101,7 @@ export default {
   },
   created() {
     this.fetchData()
+    // this.getTree()
   },
   computed: {
     height() {
@@ -102,6 +109,13 @@ export default {
     },
   },
   methods: {
+    getTree() {
+      api.newtreeTreels({tag: 0}).then(res => {
+        if (res.data) {
+          this.options = res.data
+        }
+      })
+    },
     getMyExcelData(val) {
       val.forEach(item => {
         api.addCompanys(item).then(res => {

+ 10 - 2
src/views/stationConfiguration/line/components/TableEdit.vue

@@ -1,6 +1,6 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <div class="lists">
         <el-form-item label="id" prop="id">
           <el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
@@ -19,7 +19,13 @@
       </div>
       <div class="lists">
         <el-form-item label="期次" prop="projectid">
-          <el-input class="inputs" v-model.trim="form.projectid" autocomplete="off"></el-input>
+          <!-- <el-input class="inputs" v-model.trim="form.projectid" autocomplete="off"></el-input> -->
+          <el-cascader 
+            v-model="form.projectid" 
+            :options="options" 
+            style="width: 200px" 
+            :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children',}" 
+            clearable />
         </el-form-item>
         <el-form-item label="装机容量" prop="capacity">
           <el-input class="inputs" v-model.trim="form.capacity" autocomplete="off"
@@ -85,6 +91,7 @@ export default {
         model: [{ required: true, trigger: 'blur', message: '请输入' }],
         ordernum: [{ required: true, trigger: 'blur', message: '请输入' }],
         quantity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        // projectid: [{ required: true, trigger: 'blur', message: '请输入' }],
       },
       title: '',
       dialogFormVisible: false,
@@ -113,6 +120,7 @@ export default {
     save() {
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
+          this.form.projectid = this.form.projectid[this.form.projectid.length - 1]
           api.addLine(this.form).then(res => {
             if (res.data) {
               this.$message({

+ 27 - 5
src/views/stationConfiguration/line/index.vue

@@ -4,7 +4,7 @@
       <div class="title">
         <div class="left">
           <div class="left-item">
-            <div style="width: 70px;">名称:</div>
+            <div style="width: 100px;">线路名称:</div>
             <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
           </div>
           <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
@@ -31,14 +31,13 @@
         <el-table-column show-overflow-tooltip label="编码" prop="code" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="线路名称" prop="name" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="别称" prop="aname" align="center" sortable></el-table-column>
-        <el-table-column show-overflow-tooltip label="期次" prop="projectid" align="center" sortable></el-table-column>
+        <el-table-column :formatter="nameEcho" show-overflow-tooltip label="期次" prop="projectid" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="装机容量" prop="capacity" align="center" sortable></el-table-column>
-        <el-table-column show-overflow-tooltip label="装机单位" prop="capacityunit" align="center" sortable>
-        </el-table-column>
+        <el-table-column show-overflow-tooltip label="装机单位" prop="capacityunit" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="装机数量" prop="quantity" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="顺序" prop="ordernum" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
-          <template #default="{ row }">
+          <template #default="{ row }" fixed="right">
             <el-button type="text" @click="handleEdit(row)">编辑</el-button>
             <el-button type="text" @click="handleDelete(row)">删除</el-button>
           </template>
@@ -56,6 +55,7 @@ import UploadExcel from '@/components/UploadExcel/index'
 import ExportExcel from '@/components/ExportExcel/index'
 import api from '@/api/station'
 import TableEdit from './components/TableEdit'
+import { recursionTree } from '@/utils/deepTree'
 export default {
   components: {
     UploadExcel,
@@ -69,6 +69,7 @@ export default {
   },
   data() {
     return {
+      deepTreeData: '',
       fuzzyQuery: '',
       listLoading: true,
       list: [],
@@ -91,8 +92,29 @@ export default {
   },
   created() {
     this.fetchData()
+    this.getTree()
   },
   methods: {
+    nameEcho(row){
+      let arr = row.projectid.split(",")
+      let str = ""
+      if(this.deepTreeData) {
+        this.deepTreeData.forEach(element => {
+          if(arr[arr.length -1] == element.id){
+            str = element.name
+          }
+        });
+      }
+      return str
+    },
+    getTree() {
+      api.newtreeTreels({tag:3}).then(res => {
+        if (res.data) {
+          this.options = res.data
+          this.deepTreeData = recursionTree(res.data)
+        }
+      })
+    },
     getMyExcelData(val) {
       val.forEach(item => {
         api.addLine(item).then(res => {

+ 13 - 4
src/views/stationConfiguration/period/components/TableEdit.vue

@@ -1,6 +1,6 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <div class="lists">
         <el-form-item label="id" prop="id">
           <el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
@@ -28,7 +28,7 @@
       </div>
       <div class="lists">
         <el-form-item label="投产日期" prop="commissiondate">
-          <el-date-picker v-model="form.commissiondate" type="date" placeholder="选择日期">
+          <el-date-picker style="width:200px" v-model="form.commissiondate" type="date" placeholder="选择日期">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="主控电话" prop="masterphone">
@@ -59,10 +59,17 @@
           </el-input>
         </el-form-item>
         <el-form-item label="风场编号" prop="windpowerstationid">
-          <el-select v-model="form.windpowerstationid" placeholder="请选择" clearable>
+          <!-- <el-select style="width:200px" v-model="form.windpowerstationid" placeholder="请选择" clearable>
             <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
-          </el-select>
+          </el-select> -->
+          <el-cascader 
+            placeholder="请选择"
+            v-model="form.windpowerstationid" 
+            :options="options" 
+            style="width: 200px" 
+            :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children'}"
+            clearable />
         </el-form-item>
       </div>
     </el-form>
@@ -126,6 +133,7 @@ export default {
         this.title = '编辑'
         this.idAdd = false
         this.form = Object.assign({}, row)
+        // this.form.windpowerstationid = this.form.windpowerstationid.split(",")
       }
       this.dialogFormVisible = true
     },
@@ -138,6 +146,7 @@ export default {
     save() {
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
+          this.form.windpowerstationid = this.form.windpowerstationid[this.form.windpowerstationid.length - 1]
           this.form.commissiondate = dayjs(this.form.commissiondate).format("YYYY-MM-DD")
           api.addProject(this.form).then(res => {
             if (res.data) {

+ 36 - 5
src/views/stationConfiguration/period/index.vue

@@ -4,14 +4,20 @@
       <div class="title">
         <div class="left">
           <div class="left-item">
-            <div>场站:</div>
-            <el-select v-model="selectValue" placeholder="请选择" clearable>
+            <div style="width: 70px;">场站:</div>
+            <!-- <el-select v-model="selectValue" placeholder="请选择" clearable>
               <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
               </el-option>
-            </el-select>
+            </el-select> -->
+            <el-cascader 
+              v-model="selectValue" 
+              :options="options" 
+              style="width: 200px" 
+              :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children'}" 
+              clearable />
           </div>
           <div class="left-item">
-            <div style="width: 70px;">名称:</div>
+            <div style="width: 120px;">工程名称:</div>
             <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
           </div>
           <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
@@ -50,6 +56,7 @@
         <el-table-column show-overflow-tooltip label="值长" prop="shiftforeman" align="center" sortable></el-table-column>
         <el-table-column width="120" show-overflow-tooltip label="值长电话" prop="shiftforemanphone" align="center" sortable>
         </el-table-column>
+        <!--  :formatter="nameEcho" -->
         <el-table-column width="120" show-overflow-tooltip label="风场编号" prop="windpowerstationid" align="center" sortable>
         </el-table-column>
         <el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
@@ -71,6 +78,7 @@ import UploadExcel from '@/components/UploadExcel/index'
 import ExportExcel from '@/components/ExportExcel/index'
 import api from '@/api/station'
 import TableEdit from './components/TableEdit'
+import { recursionTree } from '@/utils/deepTree'
 export default {
   components: {
     UploadExcel,
@@ -96,7 +104,8 @@ export default {
         pageSize: 20,
       },
       stationList: [],
-      selectValue: ''
+      selectValue: '',
+      deepTreeData: ""
     };
   },
   computed: {
@@ -107,8 +116,30 @@ export default {
   created() {
     this.getStation()
     this.fetchData()
+    this.getTree()
   },
+  mounted() {},
   methods: {
+    nameEcho(row){
+      let arr = row.windpowerstationid.split(",")
+      let str = ""
+      if(this.deepTreeData) {
+        this.deepTreeData.forEach(element => {
+          if(arr[arr.length -1] == element.id){
+            str = element.name
+          }
+        });
+      }
+      return str
+    },
+    getTree() {
+      api.newtreeTreels({tag:2}).then(res => {
+        if (res.data) {
+          this.options = res.data
+          this.deepTreeData = recursionTree(res.data)
+        }
+      })
+    },
     getMyExcelData(val) {
       val.forEach(item => {
         api.addProject(item).then(res => {

+ 29 - 23
src/views/stationConfiguration/station/components/TableEdit.vue

@@ -1,94 +1,100 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <div class="lists">
         <el-form-item label="id" prop="id">
-          <el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
         </el-form-item>
         <el-form-item label="名称" prop="name">
-          <el-input class="inputs" v-model.trim="form.name" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.name" autocomplete="off"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="别称" prop="aname">
-          <el-input class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input>
         </el-form-item>
 
         <el-form-item label="编码" prop="code">
-          <el-input class="inputs" v-model="form.code" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model="form.code" autocomplete="off"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="地址" prop="address">
-          <el-input class="inputs" v-model="form.address" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model="form.address" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="电话" prop="telephone">
-          <el-input class="inputs" v-model.number="form.telephone" autocomplete="off"
+          <el-input placeholder="请输入" class="inputs" v-model.number="form.telephone" autocomplete="off"
             @blur="onBlur(form.telephone,'telephone')"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="装机容量" prop="capacity">
-          <el-input class="inputs" v-model="form.capacity" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model="form.capacity" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="容量单位" prop="capacityunit">
-          <el-input class="inputs" v-model.trim="form.capacityunit" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacityunit" autocomplete="off"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="装机数量" prop="quantity">
-          <el-input class="inputs" v-model.number="form.quantity" autocomplete="off"
+          <el-input  placeholder="请输入"class="inputs" v-model.number="form.quantity" autocomplete="off"
             @blur="onBlur(form.quantity,'quantity')">
           </el-input>
         </el-form-item>
         <el-form-item label="地球经度" prop="longitude">
-          <el-input class="inputs" v-model.trim="form.longitude" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.longitude" autocomplete="off"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="地球纬度" prop="latitude">
-          <el-input class="inputs" v-model="form.latitude" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model="form.latitude" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="图片" prop="photo">
-          <el-input class="inputs" v-model.trim="form.photo" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.photo" autocomplete="off"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="公司编号" prop="companyid">
-          <el-select v-model="form.companyid" placeholder="请选择" clearable>
+          <el-select style="width: 200px;" v-model="form.companyid" placeholder="请选择" clearable>
             <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="系统厂家" prop="systemmanufact">
-          <el-input class="inputs" v-model.trim="form.systemmanufact" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.systemmanufact" autocomplete="off"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="场长" prop="headfarm">
-          <el-input class="inputs" v-model="form.headfarm" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model="form.headfarm" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="场长电话" prop="headfarmphone">
-          <el-input class="inputs" v-model.number="form.headfarmphone" autocomplete="off"
+          <el-input placeholder="请输入" class="inputs" v-model.number="form.headfarmphone" autocomplete="off"
             @blur="onBlur(form.headfarmphone,'headfarmphone')"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="机型" prop="model">
-          <el-input class="inputs" v-model="form.model" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model="form.model" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="顺序" prop="ordernum">
-          <el-input class="inputs" v-model.number="form.ordernum" autocomplete="off"
+          <el-input placeholder="请输入" class="inputs" v-model.number="form.ordernum" autocomplete="off"
             @blur="onBlur(form.ordernum,'ordernum')">
           </el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="海拔高度" prop="height">
-          <el-input class="inputs" v-model.trim="form.height" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.height" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="区域编号" prop="regionid">
-          <el-input class="inputs" v-model="form.regionid" autocomplete="off"></el-input>
+          <!-- <el-input  placeholder="请输入"class="inputs" v-model.trim="form.regionid" autocomplete="off"></el-input> -->
+          <el-cascader 
+            v-model="form.regionid" 
+            :options="options" 
+            style="width: 200px" 
+            :props="{ checkStrictly: true, emitPath: true, label: 'name', value: 'id' , children:'children'}" 
+          />
         </el-form-item>
       </div>
     </el-form>
@@ -158,7 +164,6 @@ export default {
         model: [{ required: true, trigger: 'blur', message: '请输入' }],
         ordernum: [{ required: true, trigger: 'blur', message: '请输入' }],
         height: [{ required: true, trigger: 'blur', message: '请输入' }],
-
       },
       title: '',
       dialogFormVisible: false,
@@ -175,6 +180,7 @@ export default {
         this.title = '编辑'
         this.idAdd = false
         this.form = Object.assign({}, row)
+        this.form.regionid = row.regionid.split(",")
       }
       this.dialogFormVisible = true
     },
@@ -188,7 +194,7 @@ export default {
       console.log(this.form);
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
-          console.log(this.form);
+          this.form.regionid = this.form.regionid.join(",")
           api.addWindpowerstation(this.form).then(res => {
             if (res.data) {
               this.$message({

+ 10 - 2
src/views/stationConfiguration/station/index.vue

@@ -4,14 +4,14 @@
       <div class="title">
         <div class="left">
           <div class="left-item">
-            <div>公司:</div>
+            <div style="width: 70px;">公司:</div>
             <el-select v-model="selectValue" placeholder="请选择" clearable>
               <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
               </el-option>
             </el-select>
           </div>
           <div class="left-item">
-            <div style="width: 70px;">名称:</div>
+            <div style="width: 100px;">风场名称:</div>
             <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
           </div>
           <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
@@ -125,8 +125,16 @@ export default {
   created() {
     this.getStation()
     this.fetchData()
+    this.getTree()
   },
   methods: {
+    getTree() {
+      api.newtreeTreels({tag:1}).then(res => {
+        if (res.data) {
+          this.options = res.data
+        }
+      })
+    },
     getMyExcelData(val) {
       val.forEach(item => {
         api.addWindpowerstation(item).then(res => {

+ 52 - 10
src/views/stationConfiguration/windterbin/components/TableEdit.vue

@@ -1,6 +1,6 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <div class="lists">
         <el-form-item label="id" prop="id">
           <el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
@@ -14,16 +14,24 @@
           <el-input class="inputs" v-model="form.name" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="首次并网时间" prop="firstintegratedtime">
-          <el-date-picker v-model="form.firstintegratedtime" type="date" placeholder="选择日期">
+          <el-date-picker style="width: 200px" v-model="form.firstintegratedtime" type="date" placeholder="选择日期">
           </el-date-picker>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="风场编号" prop="windpowerstationid">
-          <el-select v-model="form.windpowerstationid" placeholder="请选择" clearable>
+          <!-- <el-select v-model="form.windpowerstationid" placeholder="请选择" clearable>
             <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
-          </el-select>
+          </el-select> -->
+          <el-cascader 
+            @change="windpowerstationidChange"
+            placeholder="请选择"
+            v-model="form.windpowerstationid" 
+            :options="windpowerstationid_options" 
+            style="width: 200px" 
+            :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children'}"
+            clearable />
         </el-form-item>
         <el-form-item label="工程编号" prop="projectid">
           <el-input class="inputs" v-model.trim="form.projectid" autocomplete="off"></el-input>
@@ -31,7 +39,14 @@
       </div>
       <div class="lists">
         <el-form-item label="线路编号" prop="lineid">
-          <el-input class="inputs" v-model.trim="form.lineid" autocomplete="off"></el-input>
+          <!-- <el-input class="inputs" v-model.trim="form.lineid" autocomplete="off"></el-input> -->
+          <el-cascader 
+            placeholder="请选择"
+            v-model="form.lineid" 
+            :options="lineid_options" 
+            style="width: 200px" 
+            :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children'}"
+            clearable />
         </el-form-item>
         <el-form-item label="地球纬度" prop="latitude">
           <el-input class="inputs" v-model.trim="form.latitude" autocomplete="off"></el-input>
@@ -65,13 +80,15 @@
 <script>
 import api from '@/api/station'
 import dayjs from "dayjs";
+import { recursionTree, recursionTreeChildren } from '@/utils/deepTree'
+
 export default {
   name: 'TableEdit',
   props: {
-    options: {
-      type: Array,
-      default: []
-    },
+    // options: {
+    //   type: Array,
+    //   default: []
+    // },
     stationList: {
       type: Array,
       default: []
@@ -79,6 +96,9 @@ export default {
   },
   data() {
     return {
+      optionsAll: [],
+      windpowerstationid_options: [],
+      lineid_options: [],
       form: {
         id: '',
         name: '',
@@ -103,8 +123,27 @@ export default {
       idAdd: true,
     }
   },
-  created() { },
+  created() {
+    this.getTree()
+  },
   methods: {
+    windpowerstationidChange(data){
+      if(data){
+        this.lineid_options = recursionTreeChildren(data[data.length - 1], this.optionsAll)
+      }
+    },
+    getTree() {
+      api.newtreeTreels({tag:2}).then(res => {
+        if (res.data) {
+          this.windpowerstationid_options = res.data
+        }
+      })
+      api.newtreeTreels({tag:4}).then(res => {
+        if (res.data) {
+          this.optionsAll = res.data
+        }
+      })
+    },
     showEdit(row) {
       if (!row) {
         this.title = '添加'
@@ -113,6 +152,7 @@ export default {
         this.title = '编辑'
         this.idAdd = false
         this.form = Object.assign({}, row)
+        // this.lineid_options = recursionTreeChildren(this.form.windpowerstationid, this.optionsAll)
       }
       this.dialogFormVisible = true
     },
@@ -125,6 +165,8 @@ export default {
     save() {
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
+          this.form.windpowerstationid = this.form.windpowerstationid[this.form.windpowerstationid.length - 1]
+          this.form.lineid = this.form.lineid[this.form.lineid.length - 1]
           this.form.firstintegratedtime = dayjs(this.form.firstintegratedtime).format("YYYY-MM-DD")
           api.addWindturbine(this.form).then(res => {
             if (res.data) {

+ 29 - 12
src/views/stationConfiguration/windterbin/index.vue

@@ -4,7 +4,7 @@
       <div class="title">
         <div class="left">
           <div class="left-item">
-            <div style="width: 70px;">名称:</div>
+            <div style="width: 100px;">风机名称:</div>
             <el-input v-model="fuzzyQuery_name" placeholder="请输入" clearable />
           </div>
           <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
@@ -25,25 +25,20 @@
       </div>
       <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
         :height="height" @selection-change="setSelectRows">
-        <el-table-column show-overflow-tooltip type="selection" width="40"></el-table-column>
+        <el-table-column show-overflow-tooltip type="selection"></el-table-column>
         <el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="编码" prop="status" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="风机名称" prop="name" align="center" sortable></el-table-column>
-        <el-table-column show-overflow-tooltip label="首次并网时间" prop="firstintegratedtime" align="center" sortable
-          width="130px">
-        </el-table-column>
-        <el-table-column show-overflow-tooltip label="风场编号" prop="windpowerstationid" align="center" sortable>
-        </el-table-column>
-        <el-table-column show-overflow-tooltip label="工程编号" prop="projectid" align="center" sortable>
-        </el-table-column>
-        <el-table-column show-overflow-tooltip label="线路编号" prop="lineid" align="center" sortable>
-        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="首次并网时间" prop="firstintegratedtime" align="center" sortable></el-table-column>
+        <el-table-column show-overflow-tooltip label="风场编号" prop="windpowerstationid" align="center" sortable></el-table-column>
+        <el-table-column show-overflow-tooltip label="工程编号" prop="projectid" align="center" sortable></el-table-column>
+        <el-table-column show-overflow-tooltip label="线路编号" prop="lineid" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="地球纬度" prop="latitude" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="地球经度" prop="longitude" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="机型" prop="modelid" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="图片" prop="photo" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="标杆风机" prop="standardid" align="center" sortable></el-table-column>
-        <el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
+        <el-table-column show-overflow-tooltip label="操作" fixed="right">
           <template #default="{ row }">
             <el-button type="text" @click="handleEdit(row)">编辑</el-button>
             <el-button type="text" @click="handleDelete(row)">删除</el-button>
@@ -62,6 +57,7 @@ import UploadExcel from '@/components/UploadExcel/index'
 import ExportExcel from '@/components/ExportExcel/index'
 import api from '@/api/station'
 import TableEdit from './components/TableEdit'
+import { recursionTree } from '@/utils/deepTree'
 export default {
   components: {
     UploadExcel,
@@ -98,8 +94,29 @@ export default {
   created() {
     this.getStation()
     this.fetchData()
+    this.getTree()
   },
   methods: {
+    nameEcho(row){
+      let arr = row.windpowerstationid.split(",")
+      let str = ""
+      if(this.deepTreeData) {
+        this.deepTreeData.forEach(element => {
+          if(arr[arr.length -1] == element.id){
+            str = element.name
+          }
+        });
+      }
+      return str
+    },
+    getTree() {
+      api.newtreeTreels({tag:4}).then(res => {
+        if (res.data) {
+          this.options = res.data
+          this.deepTreeData = recursionTree(res.data)
+        }
+      })
+    },
     getMyExcelData(val) {
       val.forEach(item => {
         api.addWindturbine(item).then(res => {