From a24ca741c5fcf4cd05e51e083a62eb4e68eeaa6e Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期一, 01 二月 2021 11:00:20 +0800
Subject: [PATCH] 完善bhomebus 的 api 接口

---
 src/pages/shuohuangMonitorAnalyze/components/memberManage.vue |  192 ++++++++++++++++++++++++++++++++++--------------
 1 files changed, 136 insertions(+), 56 deletions(-)

diff --git a/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue b/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue
index bc1be55..4f1ca37 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue
@@ -7,20 +7,22 @@
         </el-input>
       </div>
       <el-tree
+        ref="leftTreeNodes"
         :data="treeData"
         node-key="id"
         default-expand-all
-        @node-click="checkNode"
         :expand-on-click-node="false"
         :check-on-click-node="true"
         :highlight-current="true"
+        @node-click="checkNode"
+        @node-contextmenu="nodeContextMenu"
       ></el-tree>
       <div class="menuList" v-show="showMenu" :style="{top:menuTop+'px',left:menuLeft+'px'}">
         <ul>
           <li>鍒涘缓鍚岀骇鑺傜偣</li>
           <li>鍒犻櫎鑺傜偣</li>
           <li>閲嶅懡鍚嶈妭鐐�</li>
-          <li>鍏抽棴</li>
+          <li @click="showMenu = false">鍏抽棴</li>
         </ul>
       </div>
     </div>
@@ -35,7 +37,7 @@
             :label="item.name"
           >{{item.name}}</el-option>
         </el-select>
-        <el-button type="primary" size="small" @click="dataSearch">鏌ヨ</el-button>
+        <el-button type="primary" size="small" @click="renderMemberTable">鏌ヨ</el-button>
       </div>
       <div class="table-area">
         <div class="actions">
@@ -65,7 +67,7 @@
           <el-table-column label="鐓х墖" prop="Surface">
             <template slot-scope="scope">
               <div class="table-cell-pic">
-                <img :src="`${CLIP}${scope.row.Surface}`" alt />
+                <img :src="`/httpImage/${scope.row.Surface}`" alt />
               </div>
             </template>
           </el-table-column>
@@ -102,11 +104,16 @@
       :visible="memberEditDialogVisible"
       class="member-edit-dialog"
       :append-to-body="false"
-      title="娣诲姞/缂栬緫浜哄憳"
       @close="memberEditDialogVisible=false"
     >
+      <div slot="title">
+        <div class="title">
+          <div class="main-title">{{memberEditForm.ID?'缂栬緫浜哄憳':'娣诲姞浜哄憳'}}</div>
+          <div class="subtitle">缁勭粐缁撴瀯:{{curLeftTreeNode.label}}</div>
+        </div>
+      </div>
       <div class="text-center">
-        <el-form :model="memberEditForm">
+        <el-form :model="memberEditForm" :rules="memberEditFormRule" ref="memberForm">
           <el-form-item>
             <el-upload
               class="avatar-uploader"
@@ -125,16 +132,16 @@
           <el-form-item label="宸ュ彿:" prop="WorkID">
             <el-input v-model="memberEditForm.WorkID" size="mini"></el-input>
           </el-form-item>
-          <el-form-item label="鐓х墖鏍囪瘑:">
+          <!-- <el-form-item label="鐓х墖鏍囪瘑:">
             <el-input v-model="memberEditForm.SurfaceName" size="mini"></el-input>
-          </el-form-item>
-          <el-form-item label="濮撳悕:">
+          </el-form-item>-->
+          <el-form-item label="濮撳悕:" prop="Name">
             <el-input v-model="memberEditForm.Name" size="mini"></el-input>
           </el-form-item>
-          <el-form-item label="鐢ㄦ埛鍚�:">
+          <el-form-item label="鐢ㄦ埛鍚�:" prop="UserName">
             <el-input v-model="memberEditForm.UserName" size="mini"></el-input>
           </el-form-item>
-          <el-form-item label="鎬у埆:">
+          <el-form-item label="鎬у埆:" prop="Sex">
             <el-radio v-model="memberEditForm.Sex" label="濂�">濂�</el-radio>
             <el-radio v-model="memberEditForm.Sex" label="鐢�">鐢�</el-radio>
           </el-form-item>
@@ -185,10 +192,21 @@
       title="鎵归噺瀵煎叆"
       @close="batchImportDialogVisible=false"
     >
-      <div class="text-left">
+      <div>
+        <p class="tip">
+          *璇锋彁鍓嶆牴鎹枃浠舵ā鏉夸腑鐨勮姹傛敹闆嗕汉鍛樹俊鎭紝鍦ㄤ竴涓枃浠跺す涓瓨鏀句汉鍛樼収鐗囧拰EXCEL鏂囦欢
+          (
+          <a href="javascript:;" @mouseover="showDemo=true" @mouseout="showDemo=false">绀轰緥</a>),鐐瑰嚮
+          <a href="javascript:;">涓嬭浇妯℃澘.excel</a>
+          <img class="tip-demo" v-if="showDemo" :src="`${publicPath}images/shuohuang/tip.jpg`" alt />
+        </p>
         <div class="flex-box">
           <label>涓婁紶鏂囦欢:</label>
-          <el-upload
+          <el-button size="mini" type="primary" @click="uploadDirectoryTrigger">鐐瑰嚮涓婁紶</el-button>
+          <input ref="directoryInput" @change="importDirectory" hidden type="file" webkitdirectory />
+          <!-- <el-button size="mini" type="primary" @click="uploadExeclTrigger" style="margin-left:10px;">鐐瑰嚮涓婁紶Excel</el-button>
+          <input ref="excelInput" @change="importExecl" hidden type="file" accept=".xlsx">-->
+          <!-- <el-upload
             class="upload-demo batch-upload"
             action="https://jsonplaceholder.typicode.com/posts/"
             :on-remove="handleRemove"
@@ -200,11 +218,7 @@
           >
             <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
             <div slot="tip" class="el-upload__tip"></div>
-          </el-upload>
-          <p>
-            *璇锋寜鐓ф妯℃澘濉啓淇℃伅锛岀偣鍑讳笅杞芥ā鏉�
-            <a href="javascript:;">.excel</a>
-          </p>
+          </el-upload>-->
         </div>
         <el-table class="thbg" :data="batchImportTableData" fit>
           <el-table-column type="index" label="搴忓彿"></el-table-column>
@@ -228,14 +242,16 @@
 
 <script>
 
-import { getShuohuangDepartTree, getOrganizeTree, getMemberList, updateMemberInfo, addMember, updateUnit, uploadMemberPic } from '@/api/shuohuang'
+import { getShuohuangDepartTree, getOrganizeTree, getMemberList, updateMemberInfo, addMember, updateUnit, uploadMemberPic, uploadDirectory } from '@/api/shuohuang'
 
 export default {
   data () {
     return {
+      publicPath: process.env.BASE_URL,
       CLIP: 'http://192.168.20.113/',
       treeWord: '',
       treeData: [],
+      curLeftTreeNode: {},
       showMenu: false,
       deptId: '',
       menuTop: 0,
@@ -257,16 +273,29 @@
       batchImportDialogVisible: false,
       fileList: [],
       memberEditForm: {},
+      memberEditFormRule: {
+        Name: [{ required: true, message: '璇疯緭鍏ュ鍚�', trigger: 'change' }],
+        UserName: [{ required: true, message: '璇疯緭鍏ュ鍚�', trigger: 'change' }],
+        Sex: [{ required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change' }]
+      },
       memberPicUrl: '',
+      showDemo: false,
       batchImportTableData: [],
     }
   },
   mounted () {
     this.searchLeftTreeData();
     this.getOrganizeTreeData();
-    this.renderMemberTable();
+    //this.renderMemberTable();
+
   },
   methods: {
+    nodeContextMenu (e, data, node, comp) {
+      debugger
+      this.showMenu = true;
+      this.menuTop = e.pageY;
+      this.menuLeft = e.pageX;
+    },
     checkOrgNode (a, b, c) {
       this.checkedOrg = a.id
     },
@@ -294,29 +323,34 @@
       this.multipleTableSelection = val;
     },
     memberSave () {
-      if (this.memberEditForm.ID) {
-        updateMemberInfo(this.memberEditForm).then(res => {
-          if (res.success) {
-            this.$notify({
-              type: 'success',
-              message: res.msg
-            });
-            this.memberEditDialogVisible = false;
-            this.renderMemberTable();
-          }
-        })
-      }else{
-        addMember(this.memberEditForm).then(res=>{
-          if(res.success){
-            this.$notify({
-              type:'success',
-              message: res.msg
+      this.$refs['memberForm'].validate((valid) => {
+        if (valid) {
+          if (this.memberEditForm.ID) {
+            updateMemberInfo(this.memberEditForm).then(res => {
+              if (res.success) {
+                this.$notify({
+                  type: 'success',
+                  message: res.msg
+                });
+                this.memberEditDialogVisible = false;
+                this.renderMemberTable();
+              }
             })
-            this.renderMemberTable();
+          } else {
+            addMember(this.memberEditForm).then(res => {
+              if (res.success) {
+                this.$notify({
+                  type: 'success',
+                  message: res.msg
+                })
+                this.renderMemberTable();
+              }
+            })
           }
-        })
-      }
-
+        } else {
+          return false;
+        }
+      })
     },
     delMember (member) {
       member.IsDel = true;
@@ -340,6 +374,7 @@
     },
     checkNode (a, b, c) {
       if (a.children) {
+        this.curLeftTreeNode = a;
         this.deptId = a.id;
         this.renderMemberTable();
       }
@@ -358,16 +393,30 @@
         PageSize: this.PageSize
       }
       getMemberList(params).then(res => {
-
         _this.tableData = res.data;
       })
     },
     uploadPic () {
 
     },
-    batchImportFiles () {
+    uploadDirectoryTrigger () {
+      this.$refs['directoryInput'].click();
+    },
+    // uploadExeclTrigger(){
+    //   this.$refs['excelInput'].click();
+    // },
+    importDirectory () {
+      //this.$refs['directoryInput'].files //鏂囦欢澶筸ap
+      let formData = new FormData;
+      formData.append('File', this.$refs['directoryInput'].files)
+      debugger
+      // uploadDirectory(formData).then(res=>{
+      //   debugger
+
+      // })
 
     },
+
     handleRemove () {
 
     },
@@ -384,17 +433,10 @@
       let param = new FormData();
       param.append('file', params.file)
       uploadMemberPic(param).then(res => {
-        this.$set(this.memberEditForm,'Surface',res.data)
+        this.$set(this.memberEditForm, 'Surface', res.data)
       })
     },
-    openMenuList (t, l, frame) {
-      this.showMenu = true;
-      this.menuTop = t;
-      this.menuLeft = l;
-    },
-    closeMenuList () {
-      this.showMenu = false;
-    },
+
     deepNodeChildren (node) {
       if (node.ChildDept && node.ChildDept.length > 0) {
         return node.ChildDept.map(child => {
@@ -443,15 +485,20 @@
           obj.Status = item.Status;
           obj.children = _this.deepNodeChildren(item);
           return obj
+        });
+        this.$nextTick(() => {
+          _this.$refs['leftTreeNodes'].setCurrentNode(_this.treeData[0]);
+          _this.curLeftTreeNode = _this.treeData[0];
+          _this.checkNode(_this.treeData[0]);
         })
+
       })
     },
     addMember () {
       this.memberEditDialogVisible = true;
+      this.memberEditForm = {};
     },
-    dataSearch () {
 
-    }
   }
 }
 </script>
@@ -491,6 +538,21 @@
     .el-dialog {
       width: 500px;
       padding: 0 30px;
+      .el-dialog__header {
+        .title {
+          display: flex;
+          align-items: flex-end;
+          justify-content: center;
+          .main-title {
+            font-size: 16px;
+            padding-right: 10px;
+          }
+          .subtitle {
+            font-size: 14px;
+            color: #666;
+          }
+        }
+      }
       .el-form-item {
         .el-form-item__label {
           width: 100px;
@@ -513,13 +575,31 @@
       }
     }
   }
+  .batch-import-dialog {
+    .el-dialog__body {
+      padding: 14px 20px;
+    }
+    .tip {
+      text-align: left;
+      margin-bottom: 10px;
+      position: relative;
+      .tip-demo {
+        position: absolute;
+        width: 530px;
+        z-index: 1000;
+        top: -10px;
+        left: 20px;
+      }
+    }
+  }
   .menuList {
     background: #fff;
     position: absolute;
     z-index: 100;
     width: 180px;
     text-align: left;
-    border: 1px solid #ccc;
+    border: 1px solid #ddd;
+    box-shadow: 4px 4px 3px 0px rgba(0, 0, 0, 0.1);
   }
   .menuList li {
     line-height: 28px;
@@ -528,7 +608,7 @@
     background: #fff;
   }
   .menuList li:hover {
-    background: rgba(152, 170, 190, 0.7);
+    background: #ecf0fc;
   }
   .right {
     padding-left: 20px;

--
Gitblit v1.8.0