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

上报公众号二维码展示

xiao547607 преди 5 години
родител
ревизия
5b7aadc3d9
променени са 4 файла, в които са добавени 151 реда и са изтрити 138 реда
  1. 11 0
      src/api/base/wx.js
  2. 44 27
      src/views/base/personInfo-list.vue
  3. 61 100
      src/views/base/warningPusher-detail.vue
  4. 35 11
      src/views/base/warningPusher-list.vue

+ 11 - 0
src/api/base/wx.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function createQrcode(formData){
+  return request.post(constant.serverUrl + "/wechat/qrcode/create", formData);
+}
+
+
+export default {
+  createQrcode
+}

+ 44 - 27
src/views/base/personInfo-list.vue

@@ -744,37 +744,54 @@ export default {
     },
     enabledTo(row, type, value) {
       var self = this;
-      if (!self.disabled) {
-        var formData = new FormData();
-        formData.append("id", row.id);
-        if ("face" == type) {
-          personInfoApi.enabledFace(formData);
-        } else if ("card" == type) {
-          personInfoApi.enabledCard(formData);
-        } else if ("app" == type) {
-          personInfoApi.enabledApp(formData);
-        } else if ("guest" == type) {
-          personInfoApi.enabledGuest(formData);
-        }
+      this.$confirm("该操作会对设备上的信息进行操作,请确认?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          //self.loading = true;
+          if (!self.disabled) {
+            var formData = new FormData();
+            formData.append("id", row.id);
+            if ("face" == type) {
+              personInfoApi.enabledFace(formData);
+            } else if ("card" == type) {
+              personInfoApi.enabledCard(formData);
+            } else if ("app" == type) {
+              personInfoApi.enabledApp(formData);
+            } else if ("guest" == type) {
+              personInfoApi.enabledGuest(formData);
+            }
 
-        //关闭开关,是自动同步到服务器
-        //打开开关需要手动同步服务器
-        if(value){
-          //如果是打开开关,则修改状态
-          row.faceBound = false;
-        }
+            //关闭开关,是自动同步到服务器
+            //打开开关需要手动同步服务器
+            if (!value) {
+              //如果是打开开关,则修改状态
+              row.faceBound = false;
+            }
 
-        self.disabled = true;
+            self.disabled = true;
 
-        setTimeout(function() {
-          self.disabled = false;
-        }, 1000); //一秒内不能重复点击
-      } else {
-        self.$message({
-          type: "success",
-          message: "操作过快!"
+            setTimeout(function() {
+              self.disabled = false;
+              //self.loading = false;
+            }, 1000); //一秒内不能重复点击
+          } else {
+            self.$message({
+              type: "success",
+              message: "操作过快!"
+            });
+          }
+        })
+        .catch(() => {
+         // self.loading = false;
+          if(row.faceEnabled){
+            row.faceEnabled = false;
+          }else{
+            row.faceEnabled = true;
+          }
         });
-      }
     },
     uploadData(record) {
       //同步人脸数据

+ 61 - 100
src/views/base/warningPusher-detail.vue

@@ -16,13 +16,13 @@
     <div class="user-panel" v-loading="loading">
       <el-form ref="form" :model="formModel" :rules="ruleValidate" :label-width="'100px'">
         <el-row>
-          <el-col :span="12">
+          <el-col :span="13">
             <el-form-item label="单位" prop="companyId">
               <el-select
                 v-model="formModel.companyId"
                 filterable
                 placeholder="请选择"
-                style="width:280px"
+                style="width:240px"
               >
                 <el-option
                   v-for="company in companyResult"
@@ -35,74 +35,39 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12">
-            <el-form-item label="ip地址" prop="ipAddress">
-              <el-input
-                v-model="formModel.ipAddress"
-                @blur="queryDeviceNo"
-                placeholder="请输入ip地址"
-                style="width:200px"
-              ></el-input>
+          <el-col :span="13">
+            <el-form-item label="姓名" prop="name">
+              <el-input v-model="formModel.name" placeholder="请输入姓名" style="width:200px"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="端口" prop="port">
-              <el-input
-                v-model="formModel.port"
-                @blur="queryDeviceNo"
-                placeholder="请输入端口"
-                style="width:200px"
-              ></el-input>
+          <el-col :span="11">
+            <el-form-item label="手机号" prop="phone">
+              <el-input v-model="formModel.phone" placeholder="请输入手机号" style="width:200px"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12">
-            <el-form-item label="设备编号" prop="deviceNo">
-              <el-input v-model="formModel.deviceNo" placeholder="请输入设备编号" style="width:200px"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="设备别名" prop="aliasName">
-              <el-input v-model="formModel.aliasName" placeholder="请输入设备别名" style="width:200px"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="运行状态" prop="isOnline">
-              <el-select v-model="formModel.isOnline" filterable style="width:200px">
-                <el-option :key="true" label="在线" :value="true"></el-option>
-                <el-option :key="false" label="离线" :value="false"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="开锁密码" prop="unlockPassword">
+          <el-col :span="24">
+            <el-form-item label="备注" prop="remark">
               <el-input
-                v-model="formModel.unlockPassword"
-                placeholder="请输入开锁密码"
-                style="width:200px"
+                type="textarea"
+                v-model="formModel.remark"
+                :rows="2"
+                style="width:80%;"
+                placeholder="请输入备注"
               ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12">
-            <el-form-item label="类型" prop="type">
-              <el-select v-model="formModel.type" filterable placeholder="请选择" style="width:200px">
-                <el-option
-                  v-for="result in typeData"
-                  :key="result.id"
-                  :label="result.name"
-                  :value="result.value"
-                ></el-option>
-              </el-select>
+          <el-col :span="13">
+            <el-form-item label="预警温度" prop="temperature">
+              <el-input v-model="formModel.temperature" placeholder="请输入预警温度" style="width:200px"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="二维码地址" prop="codeAddress">
-              <el-input v-model="formModel.codeAddress" placeholder="请输入二维码地址" style="width:200px"></el-input>
+          <el-col :span="11">
+            <el-form-item label="报警触发次数" prop="times">
+              <el-input v-model="formModel.times" placeholder="请输入报警触发次数" style="width:200px"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -116,35 +81,53 @@
 </template>
 <script>
 import Constant from "@/constant";
-import deviceInfoApi from "@/api/base/deviceInfo";
+import warningPusherApi from "@/api/base/warningPusher";
 
 export default {
-  props: ["businessKey", "title", "typeData", "companyResult"],
+  props: ["businessKey", "title", "companyResult"],
   data() {
+    let checkPhone = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error("手机号不能为空"));
+      } else {
+        const reg = /^1[3|4|5|7|8][0-9]\d{8}$/;
+        console.log(reg.test(value));
+        if (reg.test(value)) {
+          callback();
+        } else {
+          return callback(new Error("请输入正确的手机号"));
+        }
+      }
+    };
     return {
       formModel: {},
       ruleValidate: {
-        aliasName: [
-          { required: true, message: "设备别名不能为空", trigger: "blur" }
-        ],
-        isOnline: [
+        name: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
+        companyId: [
           {
             required: true,
-            message: "运行状态不能为空",
-            trigger: "blur"
+            message: "单位不能为空",
+            trigger: "change"
           }
         ],
-        // unlockPassword: [
-        //   { required: true, message: "开锁密码不能为空", trigger: "blur" }
-        // ],
-        // codeAddress: [
-        //   { required: true, message: "二维码地址不能为空", trigger: "blur" }
-        // ],
-        ipAddress: [
-          { required: true, message: "ip地址不能为空", trigger: "blur" }
+        phone: [
+          { required: true, message: "手机不能为空", trigger: "blur" },
+          {
+            validator: checkPhone,
+            trigger: "blur"
+          }
         ],
-        port: [{ required: true, message: "端口不能为空", trigger: "blur" }],
-        type: [{ required: true, message: "类型不能为空", trigger: "blur" }]
+        temperature: [
+          { required: true, message: "预警度数不能为空", trigger: "blur" },
+          {
+            type: "number",
+            message: "请输入数字格式",
+            trigger: "blur",
+            transform(value) {
+              return Number(value);
+            }
+          }
+        ]
       },
       showDialog: true,
       loading: false,
@@ -165,9 +148,9 @@ export default {
             var id = self.formModel.id;
 
             if (id == null || id.length == 0) {
-              return deviceInfoApi.add(self.formModel);
+              return warningPusherApi.add(self.formModel);
             } else {
-              return deviceInfoApi.update(self.formModel);
+              return warningPusherApi.update(self.formModel);
             }
           })().then(function(response) {
             var jsonData = response.data;
@@ -190,37 +173,15 @@ export default {
           });
         }
       });
-    },
-    queryDeviceNo() {
-      var self = this;
-      if (self.canQuery) {
-        self.canQuery = false;
-        var formData = new FormData();
-        formData.append("ipAddress", self.formModel.ipAddress);
-        formData.append("port", self.formModel.port);
-        deviceInfoApi.getByIpAddressAndPort(formData).then(function(response) {
-          var jsonData = response.data;
-          setTimeout(() => {
-            self.canQuery = true;
-            //延迟1秒
-          }, 1000);
-          if (jsonData.result) {
-            if (jsonData.data != null) {
-              let deviceNo = jsonData.data.deviceNo;
-              self.formModel.deviceNo = deviceNo;
-            }
-          }
-        });
-      }
     }
   },
   mounted: function() {
     var self = this;
     (function() {
       if (self.businessKey.length == 0) {
-        return deviceInfoApi.create();
+        return warningPusherApi.create();
       } else {
-        return deviceInfoApi.edit(self.businessKey);
+        return warningPusherApi.edit(self.businessKey);
       }
     })()
       .then(response => {

+ 35 - 11
src/views/base/warningPusher-list.vue

@@ -20,7 +20,7 @@
           size="mini"
           filterable
           placeholder="请选择"
-          style="width:280px"
+          style="width:220px;"
         >
           <el-option
             v-for="company in companyResult"
@@ -83,14 +83,28 @@
       <el-table-column prop="openId" label="是否绑定公众号" width="120">
         <template slot-scope="{row}">{{row.openId == null ? "否" : "是"}}</template>
       </el-table-column>
-      <el-table-column prop="openId" label="微信OpenID" width="120"></el-table-column>
+      <el-table-column prop="openId" label="open_id" width="280"></el-table-column>
       <el-table-column label="操作" width="200">
         <template slot-scope="{row}">
           <el-row>
             <el-col>
               <el-link type="primary" :underline="false" @click="handleEdit(row)">编辑</el-link>-
               <el-link type="danger" :underline="false" @click="handleDelete(row)">删除</el-link>-
-              <el-link type="primary" :underline="false" @click="handleBindWeChat(row)">绑定公众号</el-link>
+              <el-popover
+                placement="right"
+                width="400"
+                trigger="click"
+                @show="handleBindWeChat(row)"
+                @hide="handleHideWechat(row)"
+              >
+                <el-image style="width: 400px; height: 400px" :src="qrcodeImg">
+                  <div slot="error" class="image-slot">
+                    加载中
+                    <span class="dot">...</span>
+                  </div>
+                </el-image>
+                <el-link type="primary" :underline="false" slot="reference">绑定公众号</el-link>
+              </el-popover>
             </el-col>
           </el-row>
         </template>
@@ -120,6 +134,7 @@ import WarningPusherDetail from "./warningPusher-detail";
 import warningPusherApi from "@/api/base/warningPusher";
 import dataDictionaryApi from "@/api/sys/dataDictionary";
 import companyInfoApi from "@/api/base/companyInfo";
+import wxApi from "@/api/base/wx";
 
 import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
@@ -149,18 +164,12 @@ export default {
       businessKey: "",
       typeData: [],
       companyResult: "",
-      tableHeight: ""
+      tableHeight: "",
+      qrcodeImg: ""
     };
   },
   created() {
     this.tableHeight = window.innerHeight - 280;
-
-    var formData = new FormData();
-    formData.append("catalogName", "设备类型");
-    return dataDictionaryApi.findByCatalogName(formData).then(response => {
-      var jsonData = response.data;
-      this.typeData = jsonData.data;
-    });
   },
   methods: {
     changePage(pageIndex) {
@@ -289,6 +298,21 @@ export default {
     },
     handleBindWeChat(record) {
       //二维码地址
+      //5000,id
+      //wechat/createQrcode
+      var self = this;
+      var formData = new FormData();
+      formData.append("scene_str", "5000," + record.id);
+      wxApi.createQrcode(formData).then(function(response) {
+        var jsonData = response.data;
+        if (jsonData.result) {
+          self.qrcodeImg = jsonData.data;
+        }
+      });
+    },
+    handleHideWechat(record) {
+      var self = this;
+      self.qrcodeImg = "";
     }
   },
   mounted: function() {