Преглед на файлове

Merge branch 'master' of http://47.111.81.118:3000/xf15575941817/admin-fiveFollowing

fanghuisheng преди 3 години
родител
ревизия
0b206d2ed4

+ 33 - 0
src/utils/index.js

@@ -306,4 +306,37 @@ export function validatorPhone(rule, value, callback) {
     } else {
         callback()
     }
+}
+
+/**
+ 判断是否为数字
+ */
+export function isNumber(rule, value, callback) {
+    if (!/^[0-9]*$/.test(value)) {
+        callback(new Error('输入数字'))
+    } else {
+        callback()
+    }
+}
+
+/**
+ 判断纬度 -90.0~+90.0(整数部分为0~90,必须输入1到5位小数)
+ */
+export function isLatitude(rule, value, callback) {
+    if (!/^[-|+]?([0-8]?\d{1}\.\d{1,8}|90\.0{1,5})$/.test(value)) {
+        callback(new Error('输入纬度'))
+    } else {
+        callback()
+    }
+}
+
+/**
+ 判断经度 -180.0~+180.0(整数部分为0~180,必须输入1到5位小数)
+ */
+export function isLongitude(rule, value, callback) {
+    if (!/^[-|+]?(0?\d{1,2}\.\d{1,5}|1[0-7]?\d{1}\.\d{1,8}|180\.0{1,5})$/.test(value)) {
+        callback(new Error('输入经度'))
+    } else {
+        callback()
+    }
 }

+ 6 - 0
src/views/planOutage/dialogComponent.vue

@@ -264,6 +264,12 @@ export default defineComponent({
         ],
         contacts: [
           { required: true, message: '请输入联系人', trigger: 'blur' },
+           {
+            min: 1,
+            max: 10,
+            message: '长度在 1 到 10 个字符',
+            trigger: 'blur',
+          },
         ],
         planType: [
           { required: true, message: '请选择计划类型', trigger: 'blur' },

+ 60 - 14
src/views/siteManage/basicInfo/index.vue

@@ -14,9 +14,9 @@
               <el-input v-model="ruleForm.siteName"></el-input>
             </el-form-item>
 
-            <el-form-item label="站点类型:" prop="siteType">
+            <!-- <el-form-item label="站点类型:" prop="siteType">
               <el-input v-model="ruleForm.siteType"></el-input>
-            </el-form-item>
+            </el-form-item> -->
             <el-form-item label="用户公司:" prop="userCompany">
               <el-input v-model="ruleForm.userCompany"></el-input>
             </el-form-item>
@@ -31,6 +31,7 @@
                 style="width: 100%"
                 type="date"
                 placeholder="选择日期时间"
+                 @change="comPareTime(1)"
               ></el-date-picker>
             </el-form-item>
             <el-form-item label="服务截止:" prop="serviceDeadline">
@@ -38,6 +39,7 @@
                 v-model="ruleForm.serviceDeadline"
                 type="date"
                 placeholder="选择日期时间"
+                @change="comPareTime(2)"
               ></el-date-picker>
             </el-form-item>
 
@@ -236,7 +238,8 @@ import * as api from '@/api/siteManage/basicInfo'
 import { ElMessage } from 'element-plus'
 
 import { useStore } from 'vuex'
-import { parseTime, validatorPhone } from '@/utils'
+import { parseTime, validatorPhone,isNumber,isLatitude,isLongitude} from '@/utils'
+// import { isNumber } from '@/utils/validate.js'
 
 export default defineComponent({
   name: 'BasicInfo',
@@ -364,6 +367,24 @@ export default defineComponent({
     function resetForm() {
       formInfo.value.clearValidate()
     }
+    function comPareTime(type){
+      console.log(type)
+      var start=ruleForm.value.operationTime;
+      var end=ruleForm.value.serviceDeadline;
+      console.log(new Date(start).getTime())
+        console.log(new Date(end).getTime())
+      if(new Date(start).getTime()>new Date(end).getTime()){
+       
+        if(type==1){
+            ElMessage.warning('运投时间不能大于服务截止,请重新选择!')
+          ruleForm.value.operationTime=''
+        }else{
+           ElMessage.warning('服务截止不能小于运投时间,请重新选择!')
+          ruleForm.value.serviceDeadline=''
+        }
+       
+      }
+    }
 
     // 动态属性下拉请求
     function dynamicPropertiesDroplist(dataArea) {
@@ -453,6 +474,7 @@ export default defineComponent({
 
     //表单提交
     function submitForm() {
+    
       ruleForm.value.sitePictureOne = newArray.value[0] ? newArray.value[0] : ''
       ruleForm.value.sitePictureTwo = newArray.value[1] ? newArray.value[1] : ''
       ruleForm.value.sitePictureThree = newArray.value[2]
@@ -534,8 +556,8 @@ export default defineComponent({
               store.state.basicInfoSiteName = '' //新增成功后存储的站点名称设为空
 
               setTimeout(() => {
-                isDisable.value = false //点击一次时隔秒后才能再次点击
-              }, 2000)
+                isDisable.value = false //点击一次时隔2秒后才能再次点击
+              }, 5000)
 
               formStatus.value = '修改'
               context.emit('func',params.id)
@@ -554,6 +576,7 @@ export default defineComponent({
     watch(
       () => props.siteId,
       (newVal) => {
+        isDisable.value=false
        
         newVal
         if (props.activeName == 'first') {
@@ -640,6 +663,7 @@ export default defineComponent({
       fileListImages,
 
       overLength,
+      comPareTime,
 
       accessToken,
       ruleForm,
@@ -656,6 +680,7 @@ export default defineComponent({
         ],
         siteType: [
           { required: true, message: '请输入站点类型', trigger: 'blur' },
+          { pattern: /^[1-9][\d]*$/ , message: '请输入正整数' }
         ],
         userCompany: [
           { required: true, message: '请输入用户公司', trigger: 'blur' },
@@ -675,14 +700,18 @@ export default defineComponent({
         installedCapacity: [
           { required: true, message: '请输入装机容量', trigger: 'blur' },
           {
-            min: 1,
-            max: 20,
-            message: '长度在 1 到 20 个字符',
+            validator: isNumber,
+            message: '请输入数字',
             trigger: 'blur',
           },
         ],
         voltageLevel: [
           { required: true, message: '请输入电压等级', trigger: 'blur' },
+         {
+            validator: isNumber,
+            message: '请输入数字',
+            trigger: 'blur',
+          },
         ],
         siteAddress: [
           { required: true, message: '请输入站点地址', trigger: 'blur' },
@@ -696,16 +725,34 @@ export default defineComponent({
         stationAreaId: [
           { required: true, message: '请选择所属台区', trigger: 'change' },
         ],
-        longitude: [{ required: true, message: '请输入经度', trigger: 'blur' }],
-        latitude: [{ required: true, message: '请输入纬度', trigger: 'blur' }],
+        longitude: [
+          { required: true, message: '请输入经度', trigger: 'blur' },
+          {
+            validator: isLongitude,
+            message: '请输入正确经度',
+            trigger: 'blur',
+          },
+          ],
+        latitude: [{ required: true, message: '请输入纬度', trigger: 'blur' },
+         {
+            validator: isLatitude,
+            message: '请输入正确维度',
+            trigger: 'blur',
+          },],
         demolitionStandardCoal1: [
-          { required: true, message: '请输入折煤标准', trigger: 'blur' },
+          { required: true, message: '请输入折标准煤', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,7})?$/ , message: '请输入数字,可保留7位小数' }
         ],
         routeId: [
           { required: true, message: '选择所属线路', trigger: 'change' },
         ],
         rheologicalChange: [
           { required: true, message: '请输入流变变比', trigger: 'blur' },
+         {
+            validator: isNumber,
+            message: '请输入数字',
+            trigger: 'blur',
+          },
         ],
 
         userName: [
@@ -741,9 +788,8 @@ export default defineComponent({
         sparePhone: [
           { required: true, message: '请输入联系方式2', trigger: 'blur' },
           {
-            min: 1,
-            max: 11,
-            message: '长度在 1 到 11 个字符',
+            validator: validatorPhone,
+            message: '输入的电话号码不正确',
             trigger: 'blur',
           },
         ],

+ 56 - 30
src/views/siteManage/camera/dialogComponent.vue

@@ -20,24 +20,31 @@
         <el-input v-model="form.deviceCode"></el-input>
       </el-form-item>
       <el-form-item label="楼层:" prop="floor">
-        <el-input-number
-          v-model="form.floor"
-          controls-position="right"
-          :min="0"
-          :max="255"
-        ></el-input-number>
-      </el-form-item>
 
+
+       <el-select
+          v-model="form.floor"
+          placeholder="请选择所属楼层"
+        >
+          <el-option value="" >请选择所属楼层</el-option>
+          <el-option
+            v-for="item in [20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]"
+            :key="item"
+            :label="'楼层B'+item"
+            :value="'-'+item"
+          ></el-option>
+          <el-option
+            v-for="item in 100"
+            :key="item"
+            :label="'楼层'+item"
+            :value="''+item"
+          ></el-option>
+        </el-select>
+       </el-form-item> 
       <el-form-item label="所属站点:" prop="siteId">
         <el-select
           v-model="form.siteId"
-          :disabled="
-            deviceNumDataContent != '' &&
-            form.siteId != null &&
-            form.siteId != ''
-              ? true
-              : false
-          "
+         :disabled="dialogTitle === '编辑'"
           placeholder="请选择所属站点"
         >
           <el-option
@@ -56,20 +63,7 @@
         <el-select
           v-model="form.deviceType"
           placeholder="请选择设备类型"
-          disabled
-          v-if="dialogTitle == '编辑'"
-        >
-          <el-option
-            v-for="item in deviceType"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          ></el-option>
-        </el-select>
-        <el-select
-          v-model="form.deviceType"
-          placeholder="请选择设备类型"
-          v-else
+         :disabled="dialogTitle === '编辑'"
         >
           <el-option
             v-for="item in deviceType"
@@ -78,6 +72,7 @@
             :value="item.value"
           ></el-option>
         </el-select>
+       
       </el-form-item>
       <el-form-item label="sim卡" prop="sim">
         <el-input v-model="form.sim"></el-input>
@@ -96,7 +91,7 @@
 
 <script>
 import { useStore } from 'vuex'
-import { defineComponent, ref, watchEffect } from 'vue'
+import { defineComponent, ref, watchEffect,watch } from 'vue'
 import * as api from '@/api/siteManage/camera.js'
 import { ElMessage } from 'element-plus'
 
@@ -122,6 +117,9 @@ export default defineComponent({
     const open = () => {
       store.commit('publicSiteList')
       form.value = props.itemInfo.value
+        console.log('form.value.floor')
+
+      console.log(form.value.floor)
 
     }
 
@@ -148,6 +146,7 @@ export default defineComponent({
         callback()
       }
     }
+    
 
     // 保存-修改操作
     const submitForm = () => {
@@ -187,6 +186,15 @@ export default defineComponent({
       })
     }
 
+     watch(
+      () => form.value.floor,
+      (newVal,oldVal) => {
+        newVal,oldVal
+        
+      }
+    )
+
+
     return {
       store,
       // ...toRefs(state),
@@ -198,12 +206,20 @@ export default defineComponent({
       form,
       open,
       submitForm,
+      // InputDiff,
       rules: {
         deviceName: [
           { required: true, message: '请输入设备名称', trigger: 'blur' },
+           {
+            min: 1,
+            max: 25,
+            message: '长度在 1 到 25 个字符',
+            trigger: 'blur',
+          },
         ],
         deviceCode: [
           { required: true, message: '请输入设备编号', trigger: 'blur' },
+         
         ],
         floor: [{ required: true, message: '请选择所属楼层', trigger: 'blur' }],
         siteId: [
@@ -219,7 +235,17 @@ export default defineComponent({
         deviceType: [
           { required: true, message: '请选择设备类型', trigger: 'change' },
         ],
-        sim: [{ required: true, message: '请输入sim卡号', trigger: 'blur' }],
+        sim: [
+          { required: false, message: '请输入sim卡号', trigger: 'blur' } , //
+            // { pattern:/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{0,25}$/, message: '请输入英文和数字组合的卡号,并且长度小于25!' },
+             { pattern:/^[A-Za-z0-9]+$/, message: '请输入含有英文或数字的卡号!' },
+            {
+            min: 0,
+            max: 25,
+            message: '长度在 0 到 25 个字符',
+            trigger: 'blur',
+          },
+          ],   
       },
       deviceType: ref([
         {

+ 1 - 1
src/views/siteManage/camera/index.vue

@@ -271,7 +271,7 @@ export default defineComponent({
       tableItem.value = {
         deviceName: '',
         deviceCode: '',
-        floor: 1,
+        floor: '',
         siteId: '',
         deviceAddress: '',
         deviceType: '',

+ 7 - 0
src/views/siteManage/powerScore/index.vue

@@ -202,25 +202,32 @@ export default defineComponent({
       rules: {
         powerFactorOne: [
           { required: true, message: '请输入功率因数', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
         voltageQualified: [
           { required: true, message: '请输入电压合格率', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
         loadRate: [
           { required: true, message: '请输入负载率', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
 
         currentBalance: [
           { required: true, message: '请输入电流平衡度', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
         voltageBalance: [
           { required: true, message: '请输入电压平衡度', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
         thdu: [
           { required: true, message: '请输入谐波畸变率', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
         powerFactorTwo: [
           { required: true, message: '请输入功率因数', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
       },
       submitForm,

+ 3 - 0
src/views/siteManage/variableList/dialogComponent.vue

@@ -288,9 +288,12 @@ export default defineComponent({
         ],
         coefficient: [
           { required: true, message: '请输入系数', trigger: 'blur' },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
         saveCycle: [
           { required: true, message: '请输入存盘周期', trigger: 'blur' },
+          { pattern: /^[1-9][\d]*$/ , message: '请输入正确的分钟数' }
+          // { pattern: /^(?:[1-9]?\d|60)$/ , message: '请输入正确的分钟数' }
         ],
         dataArea: [
           { required: true, message: '请选中状态', trigger: 'blur' },

+ 15 - 1
src/views/siteManage/watchDog/dialogComponent.vue

@@ -74,7 +74,7 @@
         </el-form-item>
         <el-form-item label="电流负载率门限:" prop="currentLoadRate">
           <el-input v-model="form.currentLoadRate"></el-input>
-          <div class="remarksTxt">(0-100之间的数)</div>
+          <div class="remarksTxt">(0-100之间的数)</div>
         </el-form-item>
         <el-form-item label="设备能力:" prop="qualityAnalysis">
           <el-checkbox v-model="form.qualityAnalysis">电能质量分析</el-checkbox>
@@ -227,6 +227,12 @@ export default defineComponent({
       rules: {
         monitorDeviceName: [
           { required: true, message: "请输入设备名称", trigger: "blur" },
+           {
+            min: 1,
+            max: 25,
+            message: '长度在 1 到 25 个字符',
+            trigger: 'blur',
+          },
         
         ],
         monitorDeviceCode: [
@@ -245,12 +251,20 @@ export default defineComponent({
         ],
         ratedVoltage: [
           { required: true, message: "请输入额定电压", trigger: "change" },
+          { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
         ratedCurrent: [
           { required: true, message: "请输入额定电流", trigger: "blur" },
+           { pattern:/^\d+(\.\d{1,2})?$/ , message: '请输入数字,可保留两位小数' }
         ],
         currentLoadRate: [
           { required: true, message: "请输入电流负载率门限", trigger: "blur" },
+          { pattern: /^(?:[1-9]?\d|100)$/ , message: '请输入0-100的整数' }
+  
+          //  { pattern: /^(?:100|\d{1,2})(?:\.\d{1,2})?$/ , message: '请输入0-100的数字,可保留两位小数' }  //aa 100.99也ok??
+            // { pattern: /^(?:100|\d{1,2})?$/ , message: '请输入0-100的整数!' }
+          // { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入正确格式,可保留两位小数' }
+            
         ],
       },
     }

+ 261 - 0
src/views/systemManage/rolePermission/roleInfoCom/index copy.vue

@@ -0,0 +1,261 @@
+<template>
+  <div class="siteManage-main roleInfoPage">
+    <div style="text-align: right; margin-bottom: 20px">
+      <!-- <el-button type="success" >新增</el-button> -->
+      <el-button type="primary" @click="saveMenu()">保存</el-button>
+    </div>
+
+    <el-table :data="menuData" border stripe>
+      <el-table-column prop="label" label="菜单" width="180"></el-table-column>
+      <el-table-column prop="authority2" label="权限" class="roleLeft">
+        <template #default="scope">
+          <el-radio-group
+            v-model="scope.row.authority2"
+            @change="listTabsChange(scope.row)"
+          >
+            <el-radio label="1" :disabled="radio1 == 1 ? true : false">
+              是
+            </el-radio>
+            <el-radio label="0" :disabled="radio1 == 1 ? true : false">
+              否
+            </el-radio>
+          </el-radio-group>
+        </template>
+      </el-table-column>
+    </el-table>
+    <br />
+    <br />
+
+    <!-- 树结构的表格 start -->
+    <el-table
+      :data="tableData"
+      style="width: 100%; margin-bottom: 20px"
+      row-key="id"
+      border
+      
+    >
+      <el-table-column prop="date" label="菜单" width="180" />
+      <el-table-column prop="name" label="权限" >
+        <template #default="scope">
+          <el-radio-group
+            v-model="scope.row.authority2"
+       
+          >
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
+          </el-radio-group>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 树结构的表格 end -->
+
+    <!-- 带复选框的树结构 start -->
+
+    <!-- 带复选框的树结构 end -->
+  </div>
+</template>
+
+<script>
+import { defineComponent, ref, onMounted, watch } from 'vue'
+import * as api from '@/api/systemManage/rolePermission.js'
+import { ElMessage } from 'element-plus'
+
+export default defineComponent({
+  name: 'RoleInfoCom',
+  props: ['menuData', 'objItem', 'radio1'],
+
+  // props: {
+  //   menuData: Object,
+  //   objItem: Object,
+  //   radio1: String,
+  // },
+
+  setup(props) {
+    const aa = ref([])
+    const saveArr = ref([])
+    const tableData = ref([
+      {
+        id: 1,
+        date: '告警管理',
+        name: 'wangxiaohu',
+        authority2: '1',
+        children: [
+          {
+            id: 11,
+            date: '新增',
+            name: 'wangxiaohu',
+            authority2: '1',
+          },
+          {
+            id: 12,
+            date: '修改',
+            name: 'wangxiaohu',
+            authority2: '1',
+          },
+          {
+            id: 13,
+            date: '删除',
+            name: 'wangxiaohu',
+            authority2: '0',
+          },
+        ],
+      },
+      {
+        id: 2,
+        date: '站点管理',
+        name: 'wangxiaohu',
+        authority2: '1',
+        children: [
+          {
+            id: 21,
+            date: '新增',
+            name: 'wangxiaohu',
+            authority2: '1',
+          },
+          {
+            id: 22,
+            date: '修改',
+            name: 'wangxiaohu',
+            authority2: '1',
+          },
+          {
+            id: 23,
+            date: '删除',
+            name: 'wangxiaohu',
+            authority2: '0',
+          },
+        ],
+      },
+      {
+        id: 3,
+        date: '数据管理',
+        name: 'wangxiaohu',
+        authority2: '0',
+        children: [
+          {
+            id: 31,
+            date: '同比分析报表',
+            name: 'wangxiaohu',
+            authority2: '0',
+
+            children: [
+              {
+                id: 41,
+                date: '新增',
+                name: 'wangxiaohu',
+                authority2: '0',
+              },
+              {
+                id: 42,
+                date: '修改',
+                name: 'wangxiaohu',
+                authority2: '0',
+              },
+              {
+                id: 43,
+                date: '删除',
+                name: 'wangxiaohu',
+                authority2: '0',
+              },
+            ],
+          },
+
+          {
+            id: 32,
+            date: '台区管理',
+            name: 'wangxiaohu',
+            authority2: '0',
+            children: [
+              {
+                id: 51,
+                date: '新增',
+                name: 'wangxiaohu',
+                authority2: '0',
+              },
+              {
+                id: 52,
+                date: '修改',
+                name: 'wangxiaohu',
+                authority2: '0',
+              },
+              {
+                id: 53,
+                date: '删除',
+                name: 'wangxiaohu',
+                authority2: '0',
+              },
+            ],
+          },
+        ],
+      },
+    ])
+
+    function saveMenu() {
+      api
+        .saveMenu({
+          menuIds: saveArr.value,
+          roleId: props.radio1,
+          roleKey: props.objItem.roleKey,
+          roleName: props.objItem.roleName,
+          roleSort: props.objItem.roleSort,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            ElMessage.success({
+              message: '权限修改成功',
+              type: 'success',
+            })
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
+    const listTabsChange = (value) => {
+      saveArr.value = []
+      value
+
+      props.menuData.forEach(function (item) {
+        if (item.authority2 == '1') {
+          saveArr.value.push(item.id)
+          var aa = item.children
+          aa.forEach(function (item) {
+            saveArr.value.push(item.id)
+          })
+        }
+      })
+    }
+
+    onMounted(() => {})
+    //监听变化
+    watch(
+      () => props.radio1,
+      (newVal) => {
+        newVal
+
+        // if (newVal == '1') {
+        //   alert(1)
+        //   props.menuData.forEach(function (item) {
+        //     item.authority2 = '1'
+        //     saveArr.value.push(item.id)
+        //   })
+        //   console.log(' 22props.menuData')
+        //   console.log(props.menuData)
+        // }
+      }
+    )
+
+    return {
+      saveMenu,
+      aa,
+      listTabsChange,
+      saveArr,
+      tableData,
+    }
+  },
+})
+</script>
+
+<style  lang="scss">
+</style>