ming 3 éve
szülő
commit
c9477386fb

+ 47 - 0
src/api/tenantManage/adminConfig.js

@@ -0,0 +1,47 @@
+import request from '@/utils/request'
+
+//管理员配置-查询
+export function getTenantDataOne(params) {
+    return request({
+        url: '/userconfig/getTenantDataOne',
+        method: 'GET',
+        params,
+    })
+}
+
+//管理员配置-注销
+export function plannedOutageDel(params) {
+    return request({
+        url: '/wcBlackoutPlan/plannedOutageDel',
+        method: 'GET',
+        params,
+    })
+}
+
+//管理员配置-新增
+export function addTenantData(params) {
+    return request({
+        url: '/tenantConfig/addTenantData',
+        method: 'POST',
+        data: params,
+    })
+}
+
+//管理员配置-修改
+export function updateTenantData(params) {
+    return request({
+        url: '/tenantConfig/updateTenantData',
+        method: 'POST',
+        data: params,
+    })
+}
+
+
+//管理员配置-导出
+export function outagePlanListExport(params) {
+    return request({
+        url: 'wcBlackoutPlan/outagePlanListExport',
+        method: 'GET',
+        params,
+    })
+}

+ 5 - 5
src/api/tenantManage/tenantUnit.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-//停电计划-查询
+//单位配置-查询
 export function getTenantData(params) {
     return request({
         url: '/tenantConfig/getTenantData',
@@ -9,7 +9,7 @@ export function getTenantData(params) {
     })
 }
 
-//停电计划-注销
+//单位配置-注销
 export function plannedOutageDel(params) {
     return request({
         url: '/wcBlackoutPlan/plannedOutageDel',
@@ -18,7 +18,7 @@ export function plannedOutageDel(params) {
     })
 }
 
-//停电计划-新增
+//单位配置-新增
 export function addTenantData(params) {
     return request({
         url: '/tenantConfig/addTenantData',
@@ -27,7 +27,7 @@ export function addTenantData(params) {
     })
 }
 
-//停电计划-修改
+//单位配置-修改
 export function updateTenantData(params) {
     return request({
         url: '/tenantConfig/updateTenantData',
@@ -37,7 +37,7 @@ export function updateTenantData(params) {
 }
 
 
-//停电计划-导出
+//单位配置-导出
 export function outagePlanListExport(params) {
     return request({
         url: 'wcBlackoutPlan/outagePlanListExport',

+ 277 - 0
src/views/tenantManage/adminConfig/adminDialog.vue

@@ -0,0 +1,277 @@
+<template>
+  <!-- 克隆 -->
+  <el-dialog
+    v-model="cloneDialog"
+    title="管理员配置"
+    width="30rem"
+    @close="close"
+    @open="open"
+  >
+    <div class="dialogOne">
+      <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="store.state.siteId"
+              @change="siteChange"
+              placeholder="请选择"
+              clearable
+              filterable
+            >
+              <el-option
+                v-for="item in store.state.siteList"
+                :key="item.id"
+                :label="item.siteName"
+                :value="item.id"
+              ></el-option>
+            </el-select>
+        </el-form-item>
+        
+       
+        <el-form-item label="选择设备:" v-if="form.type != 1">
+          <el-select
+            filterable
+            v-model="form.oldDeviceCode"
+            placeholder="请选择所需克隆设备(可输入)"
+          >
+            <el-option
+              v-for="list in deviceList"
+              :key="list"
+              :label="list.deviceName"
+              :value="list.deviceCode"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <!-- <div class="content">
+        <span>*</span>
+        模拟量:
+        <el-input
+          class="inputer"
+          v-model="cloneInputModel"
+          placeholder="请输入模拟量"
+          clearable
+        />
+        状态量:
+        <el-input
+          class="inputer"
+          v-model="cloneInputState"
+          placeholder="请输入状态量"
+          clearable
+        />
+      </div> -->
+    </div>
+    <template #footer>
+      <span class="dialog-footer">
+        <!-- <el-checkbox
+          v-model="cloneChecked"
+          label="连续克隆模式"
+          style="margin-right: 10px"
+        ></el-checkbox> -->
+        <el-button @click="cloneDialog = false">取消</el-button>
+        <el-button type="primary" @click="clone()">确定</el-button>
+      </span>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+import { useStore } from 'vuex'
+import { defineComponent, ref, watchEffect } from 'vue'
+import * as api from '@/api/deviceManage/powerEquip/communicateEquip'
+import { ElMessage } from 'element-plus'
+
+export default defineComponent({
+  name: 'powerEquip',
+  components: {},
+  emits: ['closeNo', 'select'],
+  props: {
+    admin_dialog: Boolean,
+    DialogArray: Object,
+  },
+  setup(props, context) {
+    const store = useStore()
+    store
+
+    const form = ref({
+      type: 1,
+      cloneInputName: '',
+      cloneInputCode: '',
+      oldDeviceCode: '',
+    })
+
+    const cloneDialog = ref(false) //克隆弹窗控制
+    const cloneChecked = ref(false) //克隆复选框控制
+    const cloneInputModel = ref('') //克隆input模拟量
+    const cloneInputState = ref('') //克隆input状态量
+    const ruleForm = ref(null)
+    const deviceList = ref([])
+
+    const clone = () => {
+      let list = {}
+      if (form.value.type == 1) {
+        list = {
+          type: form.value.type,
+          oldDeviceCode: props.DialogArray.deviceCode,
+          newDeviceCode: form.value.cloneInputCode,
+          deviceName: form.value.cloneInputName,
+        }
+      } else {
+        list = {
+          type: form.value.type,
+          newDeviceCode: form.value.oldDeviceCode,
+          oldDeviceCode: props.DialogArray.deviceCode,
+        }
+      }
+      ruleForm.value.validate((valid) => {
+        if (valid) {
+          api.variableCloning(list).then((requset) => {
+            if (requset.status === 'SUCCESS') {
+              ElMessage.success({
+                message: '克隆成功',
+                type: 'success',
+              })
+              close()
+              context.emit('Select')
+            } else {
+              ElMessage.error(requset.msg)
+            }
+          })
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    }
+
+    //open
+    const open = () => {
+      select_deviceList()
+    }
+
+    // close(): Dialog弹窗关闭之后做的事
+    const close = () => {
+      resetForm()
+      form.value.cloneInputName = ''
+      form.value.cloneInputCode = ''
+      form.value.oldDeviceCode = ''
+      context.emit('closeNo', false)
+      cloneDialog.value = false
+    }
+    function resetForm() {
+      ruleForm.value.resetFields()
+    }
+    // 通过站点切换下拉框 change事件改变
+    const siteChange = () => {
+      select_deviceList()
+    }
+
+    function select_deviceList() {
+      api
+        .deviceList({
+          siteId: store.state.siteId,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            deviceList.value = requset.data
+            // alert(props.DialogArray.id)
+
+            for (var i = deviceList.value.length - 1; i >= 0; i--){
+               if (deviceList.value[i].id == props.DialogArray.id) deviceList.value.splice(i, 1)
+            }
+            // console.log(deviceList.value)
+            // console.log('deviceList.value')
+             
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
+    watchEffect((fn, options) => {
+      fn, options
+      cloneDialog.value = props.admin_dialog
+    })
+
+    return {
+      siteChange,
+      store,
+      open,
+      close,
+      clone,
+      form,
+      deviceList,
+      cloneDialog,
+      cloneChecked,
+      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>

+ 102 - 90
src/views/tenantManage/adminConfig/index.vue

@@ -4,15 +4,15 @@
     <div class="filter-container mb-10">
       <div class="left">
         <div>
-          <a class="" style="margin-right: 30px">租户单位配置列表</a>
-          <el-button
+          <a class="" style="margin-right: 30px">管理员配置列表</a>
+          <!-- <el-button
             icon="el-icon-plus"
             type="success"
             @click="addItem()"
             :disabled="store.state.authorities.indexOf('新增') == -1"
           >
             新增
-          </el-button>
+          </el-button> -->
         </div>
       </div>
 
@@ -41,7 +41,7 @@
           <el-input
             v-model="tenantName"
             placeholder="请输入内容"
-            style="width: 150px"
+            style="width: 130px"
             :disabled="store.state.authorities.indexOf('查询') == -1"
           ></el-input>
         </div>
@@ -54,45 +54,29 @@
             :disabled="store.state.authorities.indexOf('查询') == -1"
           ></el-input>
         </div>
-        <div class="filter-item">
-          客户类型:
-          <el-select
-            v-model="tenantType"
-            placeholder="请选择"
+         <!-- <div class="filter-item">
+          管理员账号:
+          <el-input
+            v-model="tenantManager"
+            placeholder="请输入内容"
             style="width: 150px"
-            clearable
             :disabled="store.state.authorities.indexOf('查询') == -1"
-          >
-            <el-option label="试用租户" :value="0"></el-option>
-            <el-option label="正式租户" :value="1"></el-option>
-          </el-select>
+          ></el-input>
         </div>
+        
         <div class="filter-item">
-          状态:
+          状态
           <el-select
             v-model="status"
             placeholder="请选择"
-            style="width: 200px"
+            style="width: 100px"
             clearable
             :disabled="store.state.authorities.indexOf('查询') == -1"
           >
             <el-option label="正常" :value="0"></el-option>
             <el-option label="停用" :value="1"></el-option>
           </el-select>
-        </div>
-
-        <div class="filter-item planOutage">
-          选择时间范围:
-          <el-date-picker
-            v-model="dateTime"
-            type="datetimerange"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            style="width: auto"
-            :disabled="store.state.authorities.indexOf('查询') == -1"
-          ></el-date-picker>
-        </div>
+        </div> -->
 
         <el-button
           type="primary"
@@ -120,77 +104,59 @@
       <el-table-column
         prop="tenantName"
         label="租户名称"
-        min-width="140px"
+        
       ></el-table-column>
       <el-table-column
         prop="tenantManager"
         label="负责人"
-        min-width="100px"
+       
       ></el-table-column>
       <el-table-column
         prop="phoneNumber"
         label="负责人手机号"
-        min-width="125px"
-      ></el-table-column>
-      <el-table-column prop="tenantType" label="客户类型" min-width="80px">
-        <template #default="scope">
-          <span>
-            {{ scope.row.tenantType === '0' ? '使用租户' : '正式租户' }}
-          </span>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="geoPosition"
-        label="地理位置"
-        min-width="160px"
+        
       ></el-table-column>
-      <el-table-column prop="status" label="状态" width="">
-        <template #default="scope">
-          <span
-            :style="{
-              color: scope.row.status == '0' ? '#8DCF6E' : '#FF747B',
-            }"
-          >
-            {{ scope.row.status === '0' ? '正常' : '停用' }}
-          </span>
-        </template>
-      </el-table-column>
-
-      <el-table-column
+       <el-table-column
         prop="systemName"
         label="系统平台"
-        min-width="100px"
+        
       ></el-table-column>
-      <el-table-column
-        prop="tenantTerm"
-        label="到期时间"
-        min-width="110px"
-      ></el-table-column>
-      <el-table-column fixed="right" label="操作" width="80">
+      <el-table-column prop="tenantType" label="管理员信息" >
+       
         <template #default="scope">
           <el-button
             type="text"
             size="small"
             @click.prevent="editRow(scope.row)"
-            :disabled="store.state.authorities.indexOf('修改') == -1"
+            :disabled="store.state.authorities.indexOf('配置') == -1"
           >
-            编辑
+            查看
           </el-button>
-          <!-- <el-popconfirm
-            confirm-button-text="是"
-            cancel-button-text="否"
-            icon="el-icon-info"
-            icon-color="red"
-            title="确定删除?"
-            @confirm="handleDelete(scope.row)"
-            @cancel="cancelEvent"
+        </template>
+      </el-table-column>
+ 
+
+
+      <el-table-column fixed="right" label="操作" >
+        <template #default="scope">
+          <!-- <el-button
+            type="text"
+            size="small"
+            @click.prevent="editRow(scope.row)"
+            :disabled="store.state.authorities.indexOf('配置') == -1"
           >
-            <template #reference>
-              <el-button type="text" size="small" class="delete-text" :disabled="store.state.authorities.indexOf('删除')==-1">
-                删除
-              </el-button>
-            </template>
-          </el-popconfirm> -->
+            管理员配置
+          </el-button> -->
+
+          <el-button
+              @click="adminConfig(scope.row)"
+              type="text"
+              size="small"
+              style="color: #409eff"
+    
+            >
+              管理员配置
+            </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -220,6 +186,16 @@
       :show_Dialog="showDialog"
     ></dialog-component>
     <!--弹框组件开始-----------------------end-->
+
+    <!-- 管理员配置组件开始 -->
+    <admin-Dialog
+        :admin_dialog="adminDialogBool"
+        @closeNo="closeNo"
+        @Select="Select"
+        :DialogArray="DialogArray"
+      ></admin-Dialog>
+
+    <!-- 管理员配置组件end -->
   </div>
 </template>
 
@@ -227,13 +203,14 @@
 import { useStore } from 'vuex'
 import { defineComponent, onMounted, ref } from 'vue'
 import DialogComponent from './dialogComponent'
-import * as api from '@/api/tenantManage/tenantUnit.js'
+import adminDialog from './adminDialog.vue'
+import * as api from '@/api/tenantManage/adminConfig.js'
 import { ElMessage } from 'element-plus'
 
 export default defineComponent({
   name: 'VariableList',
 
-  components: { DialogComponent },
+  components: { DialogComponent ,adminDialog},
   setup() {
     const store = useStore()
 
@@ -257,6 +234,14 @@ export default defineComponent({
     const input = ref('')
     const region = ref()
 
+
+
+     const DialogArray = ref([])
+     const adminDialogBool = ref(false)
+
+
+
+
     // 添加操作
     const addItem = () => {
       tableItem.value = {
@@ -290,7 +275,7 @@ export default defineComponent({
         address: row.address,
         remark:row.remark
       }
-      dialogTitle.value = '编辑'
+      dialogTitle.value = '查看'
       showDialog.value = true
     }
 
@@ -324,18 +309,19 @@ export default defineComponent({
       console.log('cancel!')
     }
 
+
     //查询设备列表
     function Select() {
       store.commit('TimeAll_function', dateTime.value)
-      const time = store.state.Time_Data
+      // const time = store.state.Time_Data
       api
-        .getTenantData({
+        .getTenantDataOne({
           size: pageSize.value,
           page: currentPage.value,
-          startTime: time[0] ? time[0] : '',
-          endTime: time[1] ? time[1] : '',
-          status: status.value,
-          tenantType: tenantType.value,
+          // startTime: time[0] ? time[0] : '',
+          // endTime: time[1] ? time[1] : '',
+          // status: status.value,
+          // tenantType: tenantType.value,
           tenantName: tenantName.value,
           tenantManager: tenantManager.value,
         })
@@ -361,6 +347,8 @@ export default defineComponent({
       Select()
     })
 
+    
+
     const handleSizeChange = (val) => {
       pageSize.value = val
       Select()
@@ -414,6 +402,19 @@ export default defineComponent({
           }
         })
     }
+
+    //管理员配置
+    const adminConfig = (row) => {
+      DialogArray.value = row
+      adminDialogBool.value = true
+    }
+
+    //管理员配置弹窗关闭
+    const closeNo = (value) => {
+      adminDialogBool.value = value
+    }
+
+    
     return {
       cellStyle,
       headClass,
@@ -427,6 +428,7 @@ export default defineComponent({
       Select,
 
       store,
+      
 
       total,
       pageSize,
@@ -449,6 +451,16 @@ export default defineComponent({
       region,
 
       DataReportExport,
+
+
+      DialogArray,
+      adminDialogBool,
+      
+      adminConfig, //管理员配置按钮事件
+      closeNo, //管理员配置弹窗关闭事件
+
+
+     
     }
   },
 })