浏览代码

单位人员管理,人员帮设备,单位导入

xiao547607 5 年之前
父节点
当前提交
983e792ea6

+ 5 - 1
src/api/base/deviceInfo.js

@@ -56,8 +56,12 @@ function getDeviceRule(formData) {
 function saveDeviceRule(formData) {
   return request.post(constant.serverUrl + "/base/deviceInfo/saveDeviceRule", formData);
 }
+function query(formData) {
+  return request.post(constant.serverUrl + "/base/deviceInfo/query", formData);
+}
+
 
 export default {
   create, edit, add, update, remove, batchRemove, pageList, getByIpAddressAndPort, list,
-  getDeviceRule, saveDeviceRule
+  getDeviceRule, saveDeviceRule, query
 }

+ 1 - 1
src/routers/modules/base.js

@@ -284,7 +284,7 @@ var routers = [
                 }
         },
         {
-                //测温统计
+                //单位人员管理
                 path: '/base/devicePerson/list',
                 name: 'base-devicePerson-list',
                 // route level code-splitting

+ 7 - 0
src/views/base/companyInfo-detail.vue

@@ -27,6 +27,13 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="简称" prop="shortName">
+              <el-input v-model="formModel.shortName" placeholder="请输入单位名称" style="width:80%"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="上级单位" prop="parentId">

+ 121 - 2
src/views/base/companyInfo-list.vue

@@ -68,6 +68,13 @@
         :disabled="multipleSelection.length==0"
         @click="handleBatchDelete"
       >删除选中项</el-button>
+      <el-button
+        type="primary"
+        size="small"
+        plain
+        icon="el-icon-upload2"
+        @click="batchImportVisible = true"
+      >导入</el-button>
     </el-row>
     <el-row style="padding-left:5px;">
       <el-table
@@ -82,6 +89,7 @@
             <el-table-column type="selection" width="55"></el-table-column>
             <el-table-column prop="sortNo" label="序号" width="120"></el-table-column>
             <el-table-column prop="name" label="单位名称" width="230"></el-table-column>
+            <el-table-column prop="shortName" label="简称" width="230"></el-table-column>
             <el-table-column prop="parentName" label="上级单位" width="230"></el-table-column>
             <el-table-column prop="typeN" label="性质" width="80"></el-table-column>
             <el-table-column prop="remark" sort-by="remark_" width="350" label="备注"></el-table-column>
@@ -131,6 +139,49 @@
       :companyId="companyId"
       @close="onDetailModalClose"
     ></companyDeviceRelation-list>
+    <el-dialog
+      title="导入"
+      :visible.sync="batchImportVisible"
+      :modal-append-to-body="false"
+      style="text-align: left;"
+      :close-on-click-modal="false"
+    >
+      <el-form label-width="150px">
+        <el-form-item label="模板下载">
+          <el-link
+            href="http://rccs.oss-cn-hangzhou.aliyuncs.com/smart/companyInfo/2020/4/13092503686.xlsx"
+            type="primary"
+            target="_blank"
+          >点击下载模板</el-link>
+        </el-form-item>
+        <el-form-item label="上传文件">
+          <el-upload
+            class="upload-demo"
+            accept=".xls"
+            :action="uploadUrlXls"
+            :data="uploadXlsData"
+            :headers="headers"
+            :on-preview="handleBatchImportPreview"
+            name="uploadFile"
+            :multiple="true"
+            :limit="1"
+            :on-remove="handleBatchImportRemove"
+            :before-remove="beforeBatchImportRemove"
+            :before-upload="beforeUpload"
+            :on-exceed="handleBatchImportExceed"
+            :on-success="handleBatchImportSuccess"
+            :file-list="batchImportFileList"
+          >
+            <el-button size="small" type="primary" :loading="xlsLoading">点击上传</el-button>
+            <div slot="tip" class="el-upload__tip">只能上传xls文件,且不超过500kb</div>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="batchImportVisible = false">关 闭</el-button>
+      </div>
+    </el-dialog>
+    <!--批量导入E-->
   </div>
 </template>
 <script>
@@ -140,6 +191,8 @@ import companyDeviceRelationList from "./companyDeviceRelation-list";
 import companyInfoApi from "@/api/base/companyInfo";
 import SelectTree from "@/components/SelectTree";
 import QRCode from "qrcodejs2";
+
+import { getToken } from "@/utils/auth"; // get token from cookie
 import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
 
@@ -177,7 +230,18 @@ export default {
         value: "id",
         label: "name",
         children: "children"
-      }
+      },
+      batchImportVisible: false,
+      batchImportFileList: [],
+      uploadUrlXls: Constant.serverUrl + "/base/companyInfo/importXls",
+      uploadXlsData: {
+        subFolder: "company",
+        companyId: ""
+      },
+      headers: {
+        Authorization: getToken()
+      },
+      xlsLoading:false,
     }
   },
   created() {
@@ -407,7 +471,62 @@ export default {
          dpUrl = dpUrl + "?companyId=" + companyId;
       }
       window.open(dpUrl);
-    }
+    },
+    beforeUpload(file, fileList) {
+      //导入前判断
+    },
+    //批量导入-上传成功
+    handleBatchImportSuccess(response, file, fileList) {
+      var self = this;
+      self.xlsLoading = false;
+      if (response.result) {
+        self.$message.success(response.message);
+        this.batchImportFileList = [];
+        this.changePage(1);
+        this.uploadCompanyId = "";
+        this.uploadXlsData.companyId = "";
+        this.batchImportVisible = false;
+      } else {
+        //this.$message.error(response.message);
+        this.batchImportFileList = [];
+        this.changePage(1);
+        this.uploadCompanyId = "";
+        this.uploadXlsData.companyId = "";
+
+        if (response.data != null) {
+          //下载有错误信息提示的报表
+          //window.open(response.data);
+          self.$message({
+            showClose: true,
+            dangerouslyUseHTMLString: true,
+            message:
+              response.message +
+              `,<a href="${response.data}" target="_blank">点击下载未导入的数据报表</a>&nbsp;`,
+            duration: 30000
+          });
+        }
+      }
+    },
+    //批量导入-预览
+    handleBatchImportPreview(file) {
+      console.log(file.url);
+    },
+    //批量导入-移除
+    handleBatchImportRemove(file, fileList) {
+      console.log(file, fileList);
+    },
+    //批量导入-移除前操作
+    beforeBatchImportRemove(file, fileList) {
+      console.log(file, fileList);
+    },
+    //批量导入-文件超出个数限制时的钩子
+    handleBatchImportExceed(files, fileList) {
+      this.$message.warning(
+        `当前限制选择 3 个文件,本次选择了 ${
+          files.length
+        } 个文件,共选择了 ${files.length + fileList.length} 个文件`
+      );
+    },
   },
   mounted: function() {
 

+ 22 - 11
src/views/base/devicePerson-list.vue

@@ -27,8 +27,10 @@
             size="mini"
             filterable
             clearable
-            placeholder="请选择"
+            remote
             style="width:220px;"
+            placeholder="请输入关键词"
+            :remote-method="queryDevice"
           >
             <el-option
               v-for="device in deviceResult"
@@ -359,7 +361,7 @@ export default {
       position4Show: false,
       position5Show: false,
       personId: "",
-      deviceResult: "",
+      deviceResult: [],
       boundDeviceId: "",
       boundUnDeviceId: "",
       xlsLoading: false,
@@ -386,14 +388,7 @@ export default {
       }
     });
 
-    deviceInfoApi.list().then(function(response) {
-      var jsonData = response.data;
-      if (jsonData.result) {
-        if (jsonData.data != null && jsonData.data != "") {
-          self.deviceResult = jsonData.data;
-        }
-      }
-    });
+    
 
     companyPositionApi.detailForCompany().then(function(response) {
       var jsonData = response.data.data;
@@ -419,9 +414,25 @@ export default {
       }
     });
 
+    this.queryDevice("");
     this.loadTree();
   },
   methods: {
+    queryDevice(aliasName) {
+      var self = this;
+      var formData = new FormData();
+      formData.append("aliasName",aliasName);
+      formData.append("limit",10);
+
+      deviceInfoApi.query(formData).then(function(response) {
+        var jsonData = response.data;
+        if (jsonData.result) {
+          if (jsonData.data != null && jsonData.data != "") {
+            self.deviceResult = jsonData.data;
+          }
+        }
+      });
+    },
     getSelectedValue(value) {
       this.queryModel.parentId = value;
     },
@@ -639,7 +650,7 @@ export default {
   },
   async mounted() {
     var self = this;
-
+    this.queryDevice("");
     //this.changePage(1);
     //self.tableHeight = window.innerHeight - self.$refs.queryForm.$el.offsetTop - 100;
   },

+ 1 - 1
src/views/sys/menu-list.vue

@@ -357,7 +357,7 @@ export default {
   },
   mounted: function() {
     this.changePage(1);
-    this.queryMenu();
+    this.queryMenu("");
   },
   components: {
     "menu-detail": MenuDetail