Sfoglia il codice sorgente

变量列表导入 导出

ming 3 anni fa
parent
commit
2c0ba445f9

+ 9 - 0
src/api/siteManage/variableList.js

@@ -52,4 +52,13 @@ export function variableListDel(params) {
         method: 'GET',
         params,
     })
+}
+
+//站点管理-通信设备-导出
+export function variableListExport(params) {
+    return request({
+        url: '/deviceAnalogVariableList/variableListExport',
+        method: 'GET',
+        params,
+    })
 }

+ 8 - 15
src/views/siteManage/addSiteCom.vue

@@ -3,7 +3,7 @@
       :title="dialogTitle"
        v-model="dialogVisible"
      
-      @close="closeDialog2(0)"
+      @close="closeDialog2()"
          @open="open"
           width="500px"
     >
@@ -22,7 +22,7 @@
         </el-form-item> -->
          <el-form-item label="选择模板:" prop="region">
             <el-select v-model="form.region" placeholder="请选择">
-              <el-option v-for="(item,index) in listData" :key="index" :label="item.siteName" :value="item.siteName"></el-option>
+              <el-option v-for="(item,index) in listData" :key="index" :label="item.siteName" :value="item.id"></el-option>
             </el-select>
           </el-form-item>
       
@@ -88,21 +88,14 @@ export default defineComponent({
 
     // 保存-修改操作
     const submitForm = () => {
-      // console.log(formInfo)
+    console.log('form.region')
+    console.log(form.value.region)
+    console.log('form.siteName')
+    console.log(form.value.siteName)
       formInfo.value.validate((valid) => {
         if (valid) {
-          // 走保存请求
-          if(form.value.region){
-            //选择模板
-            alert('选择模板')
-
-            
-
-          }else{
-            // 无选择模板
-            alert('无选择模板')
-          }
-          closeDialog2()
+           context.emit('changeFather', form.value.siteName,form.value.region?form.value.region:'')
+
         } else {
           console.log('error submit!!')
           return false

+ 17 - 11
src/views/siteManage/basicInfo/index.vue

@@ -237,11 +237,12 @@ export default defineComponent({
   name: 'BasicInfo',
   props: {
     siteId: Number,
+    siteName: String,
   },
   setup(props) {
     const fileImages = ref(window.PLATFROM_CONFIG.images)
     const store = useStore()
-    const routeDropData=ref([])
+    const routeDropData = ref([])
     const formInfo = ref(null)
     const formStatus = ref('')
     const dialogImageUrl = ref('')
@@ -330,12 +331,12 @@ export default defineComponent({
       })
     }
 
-     //所属线路下拉
+    //所属线路下拉
     function routeDroplist() {
       api.routeDroplist().then((requset) => {
         if (requset.status === 'SUCCESS') {
           routeDropData.value = requset.data
-           console.log('routeDropData.value')
+          console.log('routeDropData.value')
           console.log(routeDropData.value)
         } else {
           ElMessage.error(requset.msg)
@@ -345,13 +346,23 @@ export default defineComponent({
 
     //站点详情请求
     function getSite() {
+      console.log('props.siteId')
+      console.log(props.siteId)
+      console.log('props.siteName')
+      console.log(props.siteName)
       fileListImages.value = []
-      if(props.siteId){
-      
-        api.getSite({ id: props.siteId }).then((requset) => {
+      if (props.siteName) {
+        ruleForm.value.siteName = props.siteName
+      }
+
+      api.getSite({ id: props.siteId }).then((requset) => {
         if (requset.status === 'SUCCESS') {
           console.log(requset.data[0])
           ruleForm.value = requset.data[0]
+
+          if (props.siteName) {
+            ruleForm.value.siteName = props.siteName
+          }
           ruleForm.value.region
             ? (ruleForm.value.region = requset.data[0].region.toString())
             : ''
@@ -393,9 +404,6 @@ export default defineComponent({
           ElMessage.error(requset.msg)
         }
       })
-
-      }
-      
     }
 
     //表单提交
@@ -491,8 +499,6 @@ export default defineComponent({
     )
 
     onMounted(() => {
-      //  console.log('props.siteId')
-      // console.log(props.siteId)
       platformList()
       getSite()
       routeDroplist()

+ 33 - 22
src/views/siteManage/index.vue

@@ -3,13 +3,19 @@
     <!-- 树形组件start -->
     <div class="grid-content treeDom">
       <div style="text-align: center" class="mb-20">
-        <el-button v-if="treeLevel == 3 || groupingId == 0||treeLevel == 1" disabled>
+        <el-button
+          v-if="treeLevel == 3 || groupingId == 0 || treeLevel == 1"
+          disabled
+        >
           添加分组
         </el-button>
         <el-button v-else type="primary" @click="addGroup()">
           添加分组
         </el-button>
-        <el-button v-if="treeLevel == 3 || groupingId == 0||treeLevel == 1" disabled>
+        <el-button
+          v-if="treeLevel == 3 || groupingId == 0 || treeLevel == 1"
+          disabled
+        >
           添加站点
         </el-button>
         <el-button v-else type="primary" @click="addSite()">添加站点</el-button>
@@ -83,7 +89,7 @@
     <div
       class="grid-content nestingDom"
       style="width: calc(100% - 300px)"
-      v-if="flag2&&treeLevel!= 1"
+      v-if="flag2 && treeLevel != 1"
     >
       <el-tabs
         v-if="treeLevel == 3 || groupingId == 0"
@@ -91,7 +97,11 @@
         type="card"
       >
         <el-tab-pane label="基本信息" name="first">
-          <basic-info class="basicInfo" :siteId="siteId"></basic-info>
+          <basic-info
+            class="basicInfo"
+            :siteId="siteId"
+            :siteName="siteName"
+          ></basic-info>
         </el-tab-pane>
         <el-tab-pane label="监控设备" name="second">
           <watch-dog
@@ -129,7 +139,6 @@
         :dialogTitle="dialogTitle"
         :itemInfo="tableItem"
         @closeDialog="closeDialog"
-        @closeDialog2="closeDialog2"
         :flag="showDialog"
       ></add-group-com>
       <!-- 新建分组end -->
@@ -140,6 +149,7 @@
         :itemInfo="tableItem"
         @closeDialog2="closeDialog2"
         :flag="showDialog2"
+        @changeFather="getFromSon"
       ></add-site-com>
       <!-- 新建站点end -->
     </div>
@@ -176,7 +186,7 @@ export default defineComponent({
   },
   setup() {
     const flag2 = ref(false)
-     const tree = ref(null)
+    const tree = ref(null)
     const showTree = ref(true)
     const defaultExpand = ref(0)
     const showDialog = ref(false)
@@ -185,6 +195,7 @@ export default defineComponent({
     const treeLevel = ref(3)
     const groupingId = ref(1)
     const siteId = ref(368)
+    const siteName = ref('')
     const label = ref('')
     const activeName = ref('first')
     const filterText = ref('')
@@ -251,7 +262,7 @@ export default defineComponent({
     function mouseleave(data) {
       data.show = false
     }
-   
+
     const handleNodeClick = (data, obj, node) => {
       data, node
       flag2.value = true
@@ -269,10 +280,9 @@ export default defineComponent({
         // console.log(obj.data)
         siteId.value = obj.data.id
       }
-
     }
 
-     function filterNode(value, data) {
+    function filterNode(value, data) {
       if (!value) return true
       return data.label.indexOf(value) !== -1
     }
@@ -280,7 +290,6 @@ export default defineComponent({
     // 异步任务 用于给tree传值
     const writeValue = (val) => {
       return tree.value.filter(val)
-    
     }
     // 定义 watch 监听
     watch(
@@ -297,24 +306,27 @@ export default defineComponent({
 
     // 关闭操作
     const closeDialog = () => {
-
       showDialog.value = false
       showDialog2.value = false
       siteTreeList()
       flag2.value = false
-
       treeLevel.value = 3
     }
 
-    // 关闭操作
     const closeDialog2 = () => {
- 
-     showDialog.value = false
+          // 关闭操作
+      showDialog.value = false
       showDialog2.value = false
       flag2.value = true
       treeLevel.value = 3
     }
 
+    //添加站点保存后关闭弹框的操作
+    const getFromSon = (param, param2) => {
+      siteId.value = param2
+      siteName.value = param
+      closeDialog2()
+    }
 
     //新建分组
     const tableItem = reactive([])
@@ -395,8 +407,8 @@ export default defineComponent({
       showTree,
       tree,
 
-      // data2,
-      // defaultProps2,
+      getFromSon,
+      siteName,
 
       defaultExpand,
       getMsgFormSon,
@@ -416,12 +428,11 @@ export default defineComponent({
 </script>
 
 <style scoped lang="scss">
-.custom-tree-node{
+.custom-tree-node {
   overflow: hidden;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-    display: block;
-
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  display: block;
 }
 .app-container.page-nesting {
   padding: 0;

+ 0 - 210
src/views/siteManage/variableList/dialogComponent copy.vue

@@ -1,210 +0,0 @@
-<template>
-  <transition name="dialog-fade">
-    <el-dialog
-
-      :title="dialogTitle"
-
-      v-model="showDialog"
-      width="640px"
-      @close="closeDialog(0)"
-       @open="open"
-    >
-      <el-form
-        ref="formInfo"
-        :model="form"
-        class="demo-form-inline"
-        label-width="100px"
-        :rules="rules"
-      >
-        <el-form-item label="设备名称:" prop="watchName">
-          <el-input v-model="form.watchName"></el-input>
-        </el-form-item>
-        <el-form-item label="设备编号:" prop="watchCode">
-          <el-input v-model="form.watchCode"></el-input>
-        </el-form-item>
-        <el-form-item label="回路表记地址:" prop="routeAddress">
-          <el-select
-            v-model="form.routeAddress"
-            multiple
-            filterable
-            collapse-tags
-            placeholder="请选择"
-          >
-            <el-option
-              v-for="item in options"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="额定电压(kV):" prop="ratedVoltage">
-          <el-input v-model="form.ratedVoltage"></el-input>
-          <div class="remarksTxt">(数值为线电压)</div>
-        </el-form-item>
-        <el-form-item label="额定电流(A):" prop="stationAddress">
-          <el-input v-model="form.ratedCurrent"></el-input>
-        </el-form-item>
-        <el-form-item label="电流负载率门限:" prop="fzlMx">
-          <el-input v-model="form.fzlMx"></el-input>
-           <div class="remarksTxt">(0-100之间的数字)</div>
-        </el-form-item>
-        <el-form-item label="设备能力:" prop="ability">
-          <el-checkbox v-model="checked">电能质量分析</el-checkbox>
-          <div class="remarksTxt">(如果未勾选,该设备不参与电能质量分析)</div>
-        </el-form-item>
-        
-        <br />
-        <br />
-        <br />
-        <div style="text-align: right">
-          <el-button @click="closeDialog(0)">取消</el-button>
-          <el-button type="primary" @click="submitForm()"
-            >保存</el-button
-          >
-        </div>
-      </el-form>
-    </el-dialog>
-  </transition>
-</template>
-
-<script>
-
-export default {
-  name: "DialogComponent",
-  props: {
-    dialogTitle: {
-      type: String,
-      default: "新增",
-    },
-    itemInfo: {
-      type: Object,
-      default: function () {
-        return {};
-      },
-    },
-  },
-  data() {
-    return {
-       checked: true,
-      showDialog: false,
-      formInfo: JSON.parse(JSON.stringify(this.itemInfo)),
-      options: [
-        {
-          value: "选项1",
-          label: "站点一",
-        },
-        {
-          value: "选项2",
-          label: "站点二",
-        },
-        {
-          value: "选项3",
-          label: "站点三",
-        },
-        {
-          value: "选项4",
-          label: "站点四",
-        },
-        {
-          value: "选项5",
-          label: "站点五",
-        },
-      ],
-
-      rules: {
-        watchName: [
-          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
-          { required: true, message: "请输入设备名称", trigger: "blur" },
-          {
-            min: 3,
-            max: 6,
-            message: "用户名长度在 3 到 6 个字符",
-            trigger: "blur",
-          },
-        ],
-        watchCode: [
-          { required: true, message: "请输入设备编号", trigger: "blur" },
-          {
-            min: 3,
-            max: 6,
-            message: "用户名长度在 3 到 6 个字符",
-            trigger: "blur",
-          },
-        ],
-        routeAddress: [
-          { required: true, message: "请选则回路表记地址", trigger: "change" },
-         
-        ],
-        ratedVoltage: [
-          { required: true, message: '请选择站点列表', trigger: 'change'}
-        
-        ],
-        ratedCurrent: [
-          { required: true, message: "请输入已选站点个数", trigger: "blur" },
-          { trigger: "blur" },
-        ],
-        fzlMx: [
-          { required: true, message: "请输入挂载设备个数", trigger: "blur" },
-          { trigger: "blur" },
-        ],
-      },
-    };
-  },
-  methods: {
-    roleValid(rule, value, callback) {
-      rule
-      if (value.length === 0) {
-        callback(new Error("角色不能为空"));
-      } else {
-        callback();
-      }
-    },
-
-    // onSelectedDrug(event) {
-    //   this.routeAddress = event;
-    //   console.log(this.routeAddress);
-    // },
-    // 保存操作
-    submitForm(formName) {
-      const params = Object.assign(this.formInfo, {});
-      params
-      this.$refs[formName].validate((valid) => {
-        if (valid) {
-          // 走保存请求
-          this.$message({
-            message: "操作成功!",
-            type: "success",
-          });
-          this.closeDialog(1);
-        } else {
-          return false;
-        }
-      });
-    },
-    // 关闭弹框
-    closeDialog(flag) {
-      this.$refs["formInfo"].resetFields();
-      this.showDialog = false;
-      this.$emit("closeDialog", flag);
-    },
-  },
-};
-</script>
- 
-<style scoped lang="scss">
-.el-input,
-.el-select {
-  width: 240px;
-}
-
-// label样式
-.el-form-item__label {
-    width: 150px
-}
-.el-form-item__content {
-    margin-left: 150px
-}
-</style>

+ 85 - 2
src/views/siteManage/variableList/index.vue

@@ -45,8 +45,24 @@
       </div>
 
       <div class="right">
-        <el-button type="primary">导入</el-button>
-        <el-button type="primary">导出</el-button>
+        <el-upload
+          class="upload-demo"
+          :action="fileUrl + 'deviceAnalogVariableList/variableListImport'"
+          :on-progress="handleProgress"
+          :on-success="handleUpAvatar"
+          multiple
+          :limit="1"
+          :headers="{
+            accessToken: [accessToken],
+          }"
+          :file-list="fileList"
+          style="margin-right:10px;display:inline-block"
+        >
+          <el-button size="small" type="primary">导入</el-button>
+        </el-upload>
+
+
+        <el-button type="primary" @click="DataReportExport()">导出</el-button>
       </div>
     </div>
     <!-- 筛选end -->
@@ -164,6 +180,7 @@
 </template>
 
 <script>
+import { useStore } from 'vuex'
 import DialogComponent from './dialogComponent'
 import * as api from '@/api/siteManage/variableList'
 import { defineComponent, onMounted, reactive, ref, watch } from 'vue'
@@ -178,6 +195,8 @@ export default defineComponent({
   components: { DialogComponent },
 
   setup(props) {
+    const store = useStore()
+    store
     const tableItem = reactive([])
     const tableData = ref()
     const currentPage = ref(1)
@@ -189,6 +208,41 @@ export default defineComponent({
     const showDialog = ref(false)
     const dialogTitle = ref('')
 
+     const fileUrl = ref(window.PLATFROM_CONFIG.baseUrl)
+    const fileList = ref([])
+    const accessToken = ref(store.state.user.accessToken)
+
+    const handleProgress = (file, fileList) => {
+      file
+      if (
+        !(
+          fileList.raw.type ===
+            'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||
+          fileList.raw.type === 'application/vnd.ms-excel'
+        )
+      ) {
+        ElMessage({
+          message: '上传文件只能是 xls 和 xlsx 格式!',
+          type: 'error',
+        })
+        return false
+      } else {
+        return true
+      }
+    }
+
+    const handleUpAvatar = (res, file) => {
+      console.log(res, file)
+      fileList.value = []
+      ElMessage.success({
+        message: '导入成功',
+        type: 'success',
+      })
+      query()
+    }
+
+
+
     //是否删除  ---- 否
     const cancelEvent = () => {
       console.log('cancel!')
@@ -310,6 +364,27 @@ export default defineComponent({
       console.log('hzy')
     }
 
+    //导出
+    const DataReportExport = () => {
+      api
+        .variableListExport({
+          dataArea: select.value,
+          siteId: props.siteId,
+          variableName: variableName.value,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            window.location.href = window.PLATFROM_CONFIG.fileUrl + requset.data
+            ElMessage.success({
+              message: '导出成功',
+              type: 'success',
+            })
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
     return {
       cancelEvent,
       handleSizeChange,
@@ -325,6 +400,8 @@ export default defineComponent({
       query,
       Select,
 
+      DataReportExport, //导出
+
       select,
       showDialog,
       dialogTitle,
@@ -335,6 +412,12 @@ export default defineComponent({
       input: '请输入状态',
       variableName,
       tableItem,
+
+      fileList,
+      fileUrl,
+      accessToken,
+      handleProgress,
+      handleUpAvatar,
     }
   },
 })