fanghuisheng пре 3 година
родитељ
комит
8f0d1ecefb

+ 1 - 1
public/static/config.js

@@ -5,7 +5,7 @@ var PLATFROM_CONFIG = {};
 
 PLATFROM_CONFIG.baseUrl = "https://qhome.usky.cn/fivapi/" //线上
 PLATFROM_CONFIG.images = "https://qhome.usky.cn/file/" //线上图片
-// PLATFROM_CONFIG.fileUrl = "https://wx.ewoogi.com/file/" //xlsx文件访问路径
+PLATFROM_CONFIG.fileUrl = "https://qhome.usky.cn/file/" //xlsx文件访问路径
 
 // 本地json文件请求路径
 PLATFROM_CONFIG.Interface = "/vuefiv/InterfaceReturn.json"

+ 30 - 0
src/api/deviceManage/powerEquip/communicateEquip.js

@@ -36,6 +36,36 @@ export function correspondDeviceDel(params) {
     })
 }
 
+//设备管理-通信设备-克隆
+export function variableCloning(params) {
+    return request({
+        url: '/device/variableCloning',
+        method: 'GET',
+        params,
+    })
+}
+
+//通信设备--通信设备-克隆-设备下拉框查询
+export function deviceList(params) {
+    return request({
+        url: '/device/deviceList',
+        method: 'GET',
+        params,
+    })
+}
+
+
+//站点管理-通信设备-导出
+export function deviceExport(params) {
+    return request({
+        url: '/device/correspondDeviceExport',
+        method: 'GET',
+        params,
+    })
+}
+
+
+
 
 
 

+ 147 - 75
src/views/deviceManage/powerEquip/communicateEquip/dialog/cloneDialog.vue

@@ -8,34 +8,54 @@
     @open="open"
   >
     <div class="dialogOne">
-      <div>
-        克隆设备对象:
-        <span>{{ DialogArray.deviceCode }}</span>
-      </div>
-      <div class="content">
-        <span>*</span>
-        变量克隆至:
-        <el-radio v-model="cloneRadio" label="1">新设备</el-radio>
-        <el-radio v-model="cloneRadio" label="2">已有设备</el-radio>
-      </div>
-      <div class="content">
-        <span>*</span>
-        设备名:
-        <el-input
-          class="inputer"
-          v-model="cloneInputName"
-          placeholder="请输入设备名"
-          clearable
-        />
-        设备编号:
-        <el-input
-          class="inputer"
-          v-model="cloneInputCode"
-          placeholder="请输入设备编号"
-          clearable
-        />
-      </div>
-      <div class="content">
+      <el-form
+        :model="form"
+        :rules="rules"
+        ref="ruleForm"
+        label-width="150px"
+        class="demo-ruleForm"
+      >
+        <el-form-item label="克隆设备对象:" prop="deviceCode">
+          <span>{{ DialogArray.deviceCode }}</span>
+        </el-form-item>
+        <el-form-item label="变量克隆至:" prop="cloneRadio">
+          <el-radio-group v-model="form.type" size="medium">
+            <el-radio :label="1">新设备</el-radio>
+            <el-radio :label="2">已有设备</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item
+          label="设备名:"
+          prop="cloneInputName"
+          v-if="form.type == 1"
+        >
+          <el-input
+            v-model="form.cloneInputName"
+            placeholder="请输入设备名"
+            clearable
+          />
+        </el-form-item>
+        <el-form-item
+          label="设备编号:"
+          prop="cloneInputCode"
+          v-if="form.type == 1"
+        >
+          <el-input
+            v-model="form.cloneInputCode"
+            placeholder="请输入设备编号"
+            clearable
+          />
+        </el-form-item>
+        <el-form-item label="选择设备:" v-if="form.type != 1">
+          <el-select
+            v-model="from.oldDeviceCode"
+            placeholder="请选择所需克隆设备(可输入)"
+          >
+            <el-option label="区域一" value="shanghai"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <!-- <div class="content">
         <span>*</span>
         模拟量:
         <el-input
@@ -51,17 +71,17 @@
           placeholder="请输入状态量"
           clearable
         />
-      </div>
+      </div> -->
     </div>
     <template #footer>
       <span class="dialog-footer">
-        <el-checkbox
+        <!-- <el-checkbox
           v-model="cloneChecked"
           label="连续克隆模式"
           style="margin-right: 10px"
-        ></el-checkbox>
+        ></el-checkbox> -->
         <el-button @click="cloneDialog = false">取消</el-button>
-        <el-button type="primary" @click="cloneDialog = false">确定</el-button>
+        <el-button type="primary" @click="clone()">确定</el-button>
       </span>
     </template>
   </el-dialog>
@@ -69,8 +89,8 @@
 
 <script>
 import { useStore } from 'vuex'
-import { defineComponent, onMounted, ref, watchEffect } from 'vue'
-import * as api from '@/api/deviceManage/powerEquip/deviceAttribute'
+import { defineComponent, ref, watchEffect } from 'vue'
+import * as api from '@/api/deviceManage/powerEquip/communicateEquip'
 import { ElMessage } from 'element-plus'
 
 export default defineComponent({
@@ -83,19 +103,58 @@ export default defineComponent({
   },
   setup(props, context) {
     const store = useStore()
-    store, api, ElMessage
+    store
+
+    const form = ref({
+      type: 1,
+      cloneInputName: '',
+      cloneInputCode: '',
+      oldDeviceCode: '',
+    })
 
     const cloneDialog = ref(false) //克隆弹窗控制
     const cloneChecked = ref(false) //克隆复选框控制
-    const cloneRadio = ref('1') //克隆单选框控制
-    const cloneInputName = ref('') //克隆input名
-    const cloneInputCode = ref('') //克隆input编号
     const cloneInputModel = ref('') //克隆input模拟量
     const cloneInputState = ref('') //克隆input状态量
+    const ruleForm = ref(null)
+    const deviceList = ref([])
+
+    const clone = () => {
+      let list = {}
+      if (form.value.cloneInputCode == 1) {
+        list = {
+          type: form.value.type,
+          newDeviceCode: form.value.cloneInputCode,
+          deviceName: form.value.cloneInputName,
+        }
+      } else {
+        list = {
+          type: form.value.type,
+          oldDeviceCode: form.value.oldDeviceCode,
+        }
+      }
+      ruleForm.value.validate((valid) => {
+        if (valid) {
+          api.variableCloning(list).then((requset) => {
+            if (requset.status === 'SUCCESS') {
+              ElMessage.success({
+                message: '克隆成功',
+                type: 'success',
+              })
+            } else {
+              ElMessage.error(requset.msg)
+            }
+          })
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    }
 
-    // open(): Dialog弹窗打开之前做的事
+    //open
     const open = () => {
-      console.log('')
+      select_deviceList()
     }
 
     // close(): Dialog弹窗关闭之后做的事
@@ -104,53 +163,66 @@ export default defineComponent({
       cloneDialog.value = false
     }
 
+    function select_deviceList() {
+      api
+        .deviceList({
+          siteId: 0,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            console.log(requset.data)
+            // deviceList.value =
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
     watchEffect((fn, options) => {
       fn, options
       cloneDialog.value = props.clone_Dialog
     })
 
-    onMounted(() => {
-      console.log('')
-    })
-
     return {
       open,
       close,
+      clone,
+      form,
+      deviceList,
       cloneDialog,
       cloneChecked,
-      cloneRadio,
-      cloneInputName,
-      cloneInputCode,
       cloneInputModel,
       cloneInputState,
+      ruleForm,
+      rules: {
+        cloneInputCode: [
+          {
+            required: true,
+            message: '设备名不能为空',
+            trigger: 'blur',
+          },
+          {
+            min: 5,
+            max: 25,
+            message: '设备名长度不能小于5大于25',
+            trigger: 'blur',
+          },
+        ],
+        cloneInputName: [
+          {
+            required: true,
+            message: '设备编号不能为空',
+            trigger: 'blur',
+          },
+          {
+            min: 5,
+            max: 25,
+            message: '设备编号长度不能小于5大于25',
+            trigger: 'blur',
+          },
+        ],
+      },
     }
   },
 })
-</script>
-
-<style lang="scss" scoped>
-//弹出框内容样式
-.dialogOne {
-  div:nth-child(1) {
-    margin-bottom: 30px;
-  }
-  .content {
-    margin-bottom: 20px;
-    span:nth-child(1) {
-      color: red;
-    }
-    .inputer {
-      width: 150px;
-    }
-  }
-}
-.listPagination {
-  margin-top: 15px;
-  margin-bottom: -30px;
-  float: right;
-}
-.listPagination1 {
-  margin-top: 15px;
-  float: right;
-}
-</style>
+</script>

+ 31 - 12
src/views/deviceManage/powerEquip/communicateEquip/index.vue

@@ -6,6 +6,7 @@
           placeholder="搜索设备或编号"
           v-model="filterText"
           class="comTopLeftInput"
+          @input="Select()"
         >
           <template #suffix>
             <i class="el-icon-search el-input__icon"></i>
@@ -23,26 +24,18 @@
 
       <div class="comRight">
         <el-button type="primary">导入</el-button>
-        <el-button type="primary">导出</el-button>
+        <el-button type="primary" @click="DataReportExport()">导出</el-button>
       </div>
     </div>
 
     <div class="comContent">
       <el-table
-        :data="
-          tableData.filter(
-            (data) =>
-              !filterText ||
-              data.deviceName
-                .toLowerCase()
-                .includes(filterText.toLowerCase()) ||
-              data.deviceCode.toLowerCase().includes(filterText.toLowerCase())
-          )
-        "
+        :data="tableData"
         border
         stripe
         :header-cell-style="headClass"
         :height="Height"
+        v-loading="loading"
       >
         <el-table-column
           prop="deviceStatus"
@@ -75,7 +68,7 @@
           width=""
         ></el-table-column>
         <el-table-column
-          prop="siteId"
+          prop="siteName"
           label="所属站点"
           align="center"
           width=""
@@ -199,10 +192,30 @@ export default defineComponent({
     const dialogBool = ref(false)
     const dialogTitle = ref('')
     const dataList = ref({})
+    const loading = ref(true)
 
     const cloneDialogBool = ref(false)
     const DialogArray = ref([])
 
+    //导出
+    const DataReportExport = () => {
+      api
+        .deviceExport({
+          deviceName: filterText.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)
+          }
+        })
+    }
+
     //克隆
     const clone = (row) => {
       DialogArray.value = row
@@ -215,15 +228,18 @@ export default defineComponent({
 
     //查询
     function Select() {
+      loading.value = true
       api
         .correspondDeviceList({
           size: pageSize.value,
           current: currentPage.value,
+          deviceName: filterText.value,
         })
         .then((requset) => {
           if (requset.status === 'SUCCESS') {
             total.value = requset.data.total
             tableData.value = requset.data.records
+            loading.value = false
           } else {
             ElMessage.error(requset.msg)
           }
@@ -310,9 +326,11 @@ export default defineComponent({
 
       clone, //克隆按钮事件
       closeNo, //克隆弹窗关闭事件
+      DataReportExport, //导出
       Insert,
       Update,
       Delete,
+      Select,
       confirmEvent,
       cancelEvent,
       showValue,
@@ -330,6 +348,7 @@ export default defineComponent({
       dialogBool,
       dialogTitle,
       dataList,
+      loading,
     }
   },
 })

+ 0 - 1
src/views/deviceManage/powerEquip/index.vue

@@ -246,7 +246,6 @@ export default defineComponent({
           if (requset.status === 'SUCCESS') {
             tableData.value = requset.data.records
             total.value = requset.data.total
-            store.state.siteList = tableData
           } else {
             ElMessage.error(requset.msg)
           }