فهرست منبع

Merge branch 'V2' of http://47.92.161.104:10080/zq/jp-housekeeper-portal into V2

zhengqiang 5 سال پیش
والد
کامیت
55c7c152eb

+ 50 - 0
src/api/base/companyStructureInfo.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData){
+  return request.post(constant.serverUrl + "/base/companyStructureInfo/pageList", formData);
+}
+
+function create(){
+  return request.get(constant.serverUrl + "/base/companyStructureInfo/create");
+}
+
+function edit(id){
+  return request.get(constant.serverUrl + "/base/companyStructureInfo/edit/" + id);
+}
+
+function add(formModel){
+  return request.post(constant.serverUrl + "/base/companyStructureInfo/add", formModel,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel){  
+  return request.post(constant.serverUrl + "/base/companyStructureInfo/update", formModel,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id){
+  return request.post(constant.serverUrl + "/base/companyStructureInfo/delete/" + id);
+}
+
+function batchRemove(idList){
+  return request.post(constant.serverUrl + "/base/companyStructureInfo/batchDelete",idList,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function list(formData){
+  return request.post(constant.serverUrl + "/base/companyStructureInfo/list", formData);
+}
+
+export default {
+  pageList,create,edit,add,update,remove,batchRemove,list
+}

+ 50 - 0
src/api/base/iconInfo.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData){
+  return request.post(constant.serverUrl + "/base/iconInfo/pageList", formData);
+}
+
+function create(){
+  return request.get(constant.serverUrl + "/base/iconInfo/create");
+}
+
+function edit(id){
+  return request.get(constant.serverUrl + "/base/iconInfo/edit/" + id);
+}
+
+function add(formModel){
+  return request.post(constant.serverUrl + "/base/iconInfo/add", formModel,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel){  
+  return request.post(constant.serverUrl + "/base/iconInfo/update", formModel,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id){
+  return request.post(constant.serverUrl + "/base/iconInfo/delete/" + id);
+}
+
+function batchRemove(idList){
+  return request.post(constant.serverUrl + "/base/iconInfo/batchDelete",idList,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function listByRoleId(formData){
+  return request.post(constant.serverUrl + "/base/iconInfo/listByRoleId", formData);
+}
+
+export default {
+  pageList,create,edit,add,update,remove,batchRemove,listByRoleId
+}

+ 50 - 0
src/api/base/regionInfo.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData){
+  return request.post(constant.serverUrl + "/base/regionInfo/pageList", formData);
+}
+
+function create(){
+  return request.get(constant.serverUrl + "/base/regionInfo/create");
+}
+
+function edit(id){
+  return request.get(constant.serverUrl + "/base/regionInfo/edit/" + id);
+}
+
+function add(formModel){
+  return request.post(constant.serverUrl + "/base/regionInfo/add", formModel,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel){  
+  return request.post(constant.serverUrl + "/base/regionInfo/update", formModel,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id){
+  return request.post(constant.serverUrl + "/base/regionInfo/delete/" + id);
+}
+
+function batchRemove(idList){
+  return request.post(constant.serverUrl + "/base/regionInfo/batchDelete",idList,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function list(formData){
+  return request.post(constant.serverUrl + "/base/regionInfo/list", formData);
+}
+
+export default {
+  pageList,create,edit,add,update,remove,batchRemove,list
+}

+ 32 - 5
src/views/base/companyInfo-detail.vue

@@ -58,7 +58,7 @@
               ></el-select-tree>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <!-- <el-col :span="12">
             <el-form-item label="单位性质" prop="type">
               <el-select v-model="formModel.type" filterable placeholder="请选择" style="width:50%">
                 <el-option
@@ -69,11 +69,29 @@
                 ></el-option>
               </el-select>
             </el-form-item>
-          </el-col>
+          </el-col> -->
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="场景值" prop="type">
+            <el-form-item label="地区" prop="regionId">
+              <!-- <el-select v-model="formModel.regionId" filterable placeholder="请选择" style="width:50%">
+                <el-option
+                  v-for="region in regionData"
+                  :key="region.id"
+                  :label="region.name"
+                  :value="region.id"
+                ></el-option>
+              </el-select> -->
+              <el-select-tree
+                :props="props"
+                :options="regionData"
+                v-model="formModel.regionId"
+                height="200"
+              ></el-select-tree>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="场景值" prop="sceneId">
               <el-select v-model="formModel.sceneId" filterable placeholder="请选择" style="width:50%">
                 <el-option
                   v-for="result in sceneData"
@@ -167,6 +185,7 @@
 import Constant from "@/constant";
 import companyInfoApi from "@/api/base/companyInfo";
 import sceneInfoApi from "@/api/base/sceneInfo";
+import regionInfoApi from "@/api/base/regionInfo";
 import dataDictionaryApi from "@/api/sys/dataDictionary";
 import SelectTree from "@/components/SelectTree";
 
@@ -181,7 +200,9 @@ export default {
         name: [
           { required: true, message: "单位名称不能为空", trigger: "blur" }
         ],
-        type: [{ required: true, message: "性质不能为空", trigger: "blur" }]
+        regionId: [{ required: true, message: "地区不能为空", trigger: "blur" }],
+        sceneId: [{ required: true, message: "场景值不能为空", trigger: "blur" }]
+        // type: [{ required: true, message: "性质不能为空", trigger: "blur" }]
       },
       showDialog: true,
       loading: false,
@@ -204,7 +225,8 @@ export default {
         label: "name",
         children: "children"
       },
-      sceneData:[]
+      sceneData:[],
+      regionData:[]
     };
   },
   created() {
@@ -227,6 +249,11 @@ export default {
       var jsonData = response.data;
       this.sceneData = jsonData.data;
     });
+
+    regionInfoApi.list().then(response => {
+      var jsonData = response.data;
+      this.regionData = jsonData.data;
+    });
     
 
     this.loadTree();

+ 1 - 1
src/views/base/companyInfo-list.vue

@@ -87,8 +87,8 @@
       <el-table-column prop="name" label="单位名称" width="230"></el-table-column>
       <el-table-column prop="shortName" label="简称" width="120"></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="sceneName" label="场景值" width="90"></el-table-column>
+      <el-table-column prop="regionName" label="地区" width="90"></el-table-column>
       <el-table-column prop="remark" sort-by="remark_" width="350" label="备注"></el-table-column>
       <el-table-column label="操作" width="350" fixed="right">
         <template slot-scope="{row}">

+ 113 - 46
src/views/base/personDeviceRelation-BoundList.vue

@@ -5,7 +5,7 @@
     :modal-append-to-body="false"
     append-to-body
     :modal="true"
-    style="text-align:left;"
+    style="text-align: left"
     @close="closeDialog"
     :close-on-click-modal="false"
     width="970px"
@@ -22,66 +22,126 @@
           plain
           icon="el-icon-remove"
           @click="handleRemoveAll"
-        >解绑所有设备</el-button>
+          >解绑所有设备</el-button
+        >
         <el-button
           type="primary"
           size="small"
           plain
           icon="el-icon-refresh"
           @click="handleUpdateIsWrite"
-        >更新图片状态</el-button>
+          >更新图片状态</el-button
+        >
         <el-button
           type="primary"
           size="small"
           plain
           icon="el-icon-refresh"
-          :disabled="multipleSelection.length==0"
+          :disabled="multipleSelection.length == 0"
           @click="dataSync"
-        >数据同步</el-button>
+          >数据同步</el-button
+        >
+        <el-button
+          type="primary"
+          size="small"
+          plain
+          @click="handleReLoad"
+          >刷新</el-button
+        >
       </el-row>
       <el-table
         :data="tableData"
-        style="min-height:400px;"
+        style="min-height: 400px"
         v-loading="loading"
         stripe
         @sort-change="sortChange"
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="deviceInfo.aliasName" label="设备名称" width="220"></el-table-column>
-        <el-table-column prop="personInfo.name" label="人员名称" width="120"></el-table-column>
+        <el-table-column
+          prop="deviceInfo.aliasName"
+          label="设备名称"
+          width="220"
+        ></el-table-column>
+        <el-table-column
+          prop="personInfo.name"
+          label="人员名称"
+          width="120"
+        ></el-table-column>
         <el-table-column prop="deviceInfo.isOnline" label="运行状态" width="80">
-          <template slot-scope="{row}">
+          <template slot-scope="{ row }">
             <div
               v-if="row.deviceInfo.isOnline"
-              style="border-radius: 30px;background-color:#67C23A;width:20px;height:20px;"
+              style="
+                border-radius: 30px;
+                background-color: #67c23a;
+                width: 20px;
+                height: 20px;
+              "
             ></div>
             <div
               v-if="!row.deviceInfo.isOnline"
-              style="border-radius: 30px;background-color:#F56C6C;width:20px;height:20px;"
+              style="
+                border-radius: 30px;
+                background-color: #f56c6c;
+                width: 20px;
+                height: 20px;
+              "
             ></div>
           </template>
         </el-table-column>
         <el-table-column prop="isBound" label="照片是否存在" width="120">
-          <template slot-scope="{row}">
+          <template slot-scope="{ row }">
             <div
               v-if="!row.deviceInfo.isOnline"
-              style="border-radius: 30px;background-color:#767676;width:20px;height:20px;"
+              style="
+                border-radius: 30px;
+                background-color: #767676;
+                width: 20px;
+                height: 20px;
+              "
             ></div>
             <div
               v-if="row.deviceInfo.isOnline && row.isBound"
-              style="border-radius: 30px;background-color:#67C23A;width:20px;height:20px;"
+              style="
+                border-radius: 30px;
+                background-color: #67c23a;
+                width: 20px;
+                height: 20px;
+              "
             ></div>
             <div
-              v-if="row.deviceInfo.isOnline &&!row.isBound"
-              style="border-radius: 30px;background-color:#F56C6C;width:20px;height:20px;"
+              v-if="row.deviceInfo.isOnline && !row.isBound"
+              style="
+                border-radius: 30px;
+                background-color: #f56c6c;
+                width: 20px;
+                height: 20px;
+              "
             ></div>
           </template>
         </el-table-column>
-        <el-table-column prop="createTime" label="关联时间" width="150"></el-table-column>
+        <el-table-column prop="remoteOpen" label="远程开门" width="80">
+          <template slot-scope="{ row }">
+            <el-switch
+              v-model="row.remoteOpen"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              @change="changeRemote(row)"
+              :disabled="row.isDefault"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="createTime"
+          label="关联时间"
+          width="150"
+        ></el-table-column>
         <el-table-column label="操作">
-          <template slot-scope="{row}">
-            <el-button size="mini" type="danger" @click="handleDelete(row)">解除关联</el-button>
+          <template slot-scope="{ row }">
+            <el-button size="mini" type="danger" @click="handleDelete(row)"
+              >解除关联</el-button
+            >
           </template>
         </el-table-column>
       </el-table>
@@ -110,14 +170,14 @@ import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
 
 export default {
-  props: ["personId","delFlag"],
+  props: ["personId", "delFlag"],
   data() {
     var self = this;
 
     return {
       queryModel: {
         deviceId: "",
-        personId: ""
+        personId: "",
       },
       loading: false,
       tableData: [],
@@ -131,7 +191,7 @@ export default {
       multipleSelection: [],
       showModal: false,
       modalTitle: "",
-      showDialog: true
+      showDialog: true,
     };
   },
   methods: {
@@ -151,7 +211,7 @@ export default {
 
       formData.append("deviceId", self.queryModel.deviceId);
       formData.append("personId", self.personId);
-      if(self.delFlag == null){
+      if (self.delFlag == null) {
         self.delFlag = false;
       }
       formData.append("delFlag", self.delFlag);
@@ -166,7 +226,7 @@ export default {
 
       personDeviceRelationApi
         .pageList(formData)
-        .then(function(response) {
+        .then(function (response) {
           self.loading = false;
 
           var jsonData = response.data.data;
@@ -175,7 +235,7 @@ export default {
           self.totalPages = jsonData.totalPages;
           self.totalElements = jsonData.recordsTotal;
         })
-        .catch(error => {
+        .catch((error) => {
           self.loading = false;
           // self.$message.error(error + "");
         });
@@ -201,12 +261,12 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-        distinguishCancelAndClose: true
+        distinguishCancelAndClose: true,
       })
         .then(() => {
           self.loading = true;
 
-          personDeviceRelationApi.remove(record.id).then(function(response) {
+          personDeviceRelationApi.remove(record.id).then(function (response) {
             var jsonData = response.data;
             self.loading = false;
             if (jsonData.result) {
@@ -216,12 +276,12 @@ export default {
 
               self.$message({
                 type: "success",
-                message: "解绑成功!"
+                message: "解绑成功!",
               });
             }
           });
         })
-        .catch(error => {
+        .catch((error) => {
           self.loading = false;
           // self.$message.error(error + "");
         });
@@ -233,7 +293,7 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-        distinguishCancelAndClose: true
+        distinguishCancelAndClose: true,
       })
         .then(() => {
           self.loading = true;
@@ -242,7 +302,7 @@ export default {
 
           personDeviceRelationApi
             .unbindDevice(formData)
-            .then(function(response) {
+            .then(function (response) {
               var jsonData = response.data;
               self.loading = false;
               if (jsonData.result) {
@@ -250,17 +310,17 @@ export default {
 
                 self.$message({
                   type: "success",
-                  message: "解绑成功!"
+                  message: "解绑成功!",
                 });
               } else {
                 self.$message({
                   type: "warning",
-                  message: jsonData.message
+                  message: jsonData.message,
                 });
               }
             });
         })
-        .catch(error => {
+        .catch((error) => {
           self.loading = false;
           // self.$message.error(error + "");
         });
@@ -280,14 +340,14 @@ export default {
       formData.append("personId", self.personId);
       personDeviceRelationApi
         .updatePersonIsWrite(formData)
-        .then(function(response) {
+        .then(function (response) {
           var jsonData = response.data;
           self.loading = false;
           if (jsonData.result) {
             self.changePage(self.pageIndex);
             self.$message({
               type: "success",
-              message: "更新成功!"
+              message: "更新成功!",
             });
           }
         });
@@ -295,14 +355,14 @@ export default {
     dataSync() {
       //批量同步人脸
       var self = this;
-      var deviceIdList = this.multipleSelection.map(record => {
+      var deviceIdList = this.multipleSelection.map((record) => {
         return record.deviceId;
       });
 
       this.$confirm("是否确认同步选中项?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
-        type: "warning"
+        type: "warning",
       })
         .then(() => {
           self.loading = true;
@@ -312,7 +372,7 @@ export default {
 
           personDeviceRelationApi
             .devicesPersonSync(formData)
-            .then(function(response) {
+            .then(function (response) {
               var jsonData = response.data;
               self.loading = false;
               if (jsonData.result) {
@@ -320,7 +380,7 @@ export default {
                   self.changePage(self.pageIndex);
                   self.$message({
                     type: "success",
-                    message: "同步成功!"
+                    message: "同步成功!",
                   });
                 } else {
                   if (jsonData.message != null) {
@@ -332,14 +392,14 @@ export default {
                       message:
                         "错误" +
                         `,<a href="${jsonData.message}" target="_blank">点击下载错误报表</a>&nbsp;`,
-                      duration: 30000
+                      duration: 30000,
                     });
                   }
                 }
               } else {
                 self.$message({
                   type: "warning",
-                  message: jsonData.message
+                  message: jsonData.message,
                 });
               }
             });
@@ -347,14 +407,21 @@ export default {
         .catch(() => {
           self.loading = false;
         });
-    }
+    },
+    changeRemote(row) {
+      personDeviceRelationApi.update(row);
+    },
+    handleReLoad() {
+      var self = this;
+      self.changePage(self.pageIndex);
+    },
   },
-  mounted: function() {
+  mounted: function () {
     this.changePage(1);
   },
   components: {
-    "personDeviceRelation-detail": PersonDeviceRelationDetail
-  }
+    "personDeviceRelation-detail": PersonDeviceRelationDetail,
+  },
 };
 </script>
 <style lang="scss" scoped>

+ 29 - 27
src/views/base/personInfo-detail.vue

@@ -20,7 +20,7 @@
         :rules="ruleValidate"
         :label-width="'100px'"
       >
-        <el-row>
+        <!-- <el-row>
           <el-col :span="12">
             <el-form-item label="单位" prop="companyId">
               <el-select-tree
@@ -31,6 +31,8 @@
               ></el-select-tree>
             </el-form-item>
           </el-col>
+        </el-row> -->
+        <el-row>
           <el-col :span="12">
             <el-form-item label="姓名" prop="name">
               <el-input
@@ -39,8 +41,6 @@
               ></el-input>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
             <el-form-item label="园区" prop="parkId">
               <el-select-tree
@@ -70,26 +70,25 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
+        <!-- <el-row>
           <el-col :span="24">
             <el-form-item label="用户身份" prop="popedom">
               <el-select
                 v-model="formModel.popedom"
                 filterable
-                multiple
                 placeholder="请选择"
-                style="width: 100%"
+                style="width: 280px"
               >
                 <el-option
-                  v-for="popedom in popedomList"
-                  :key="popedom.value"
-                  :label="popedom.name"
-                  :value="popedom.value"
+                  v-for="role in personRoleResult"
+                  :key="role.personRoleName"
+                  :label="role.personRoleName"
+                  :value="role.personRoleName"
                 ></el-option>
               </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
+        </el-row> -->
         <el-row>
           <el-col :span="24">
             <el-form-item label="关联单位" prop="personCompany">
@@ -173,7 +172,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
+        <!-- <el-row>
           <el-col :span="12">
             <el-form-item :label="companyPosition1" prop="position1">
               <el-input
@@ -218,7 +217,7 @@
               ></el-input>
             </el-form-item>
           </el-col>
-        </el-row>
+        </el-row> -->
       </el-form>
     </div>
     <span slot="footer" class="dialog-footer">
@@ -235,6 +234,7 @@ import personInfoApi from "@/api/base/personInfo";
 import dataDictionaryApi from "@/api/sys/dataDictionary";
 import personCompanyApi from "@/api/base/personCompany";
 import companyInfoApi from "@/api/base/companyInfo";
+import personRoleInfoApi from "@/api/base/personRoleInfo";
 import SelectTree from "@/components/SelectTree";
 
 import { getToken } from "@/utils/auth"; // get token from cookie
@@ -292,7 +292,7 @@ export default {
       headers: {
         Authorization: getToken(),
       },
-      popedomList: [],
+      personRoleResult: [],
       treeData: [],
       props: {
         // 配置项(必选)
@@ -300,13 +300,13 @@ export default {
         label: "name",
         children: "children",
       },
-      parkList:[]
+      parkList: [],
     };
   },
   created() {
     var self = this;
 
-    companyInfoApi.list({type:"3"}).then(response => {
+    companyInfoApi.list({ type: "3" }).then((response) => {
       var jsonData = response.data;
       this.parkList = jsonData.data;
     });
@@ -317,7 +317,7 @@ export default {
     getSelectedValue(value) {
       this.formModel.companyId = value;
     },
-    getSelectedParkValue(value){
+    getSelectedParkValue(value) {
       this.formModel.parkId = value;
     },
     loadTree() {
@@ -469,16 +469,18 @@ export default {
             }
           }
 
-          var formData = new FormData();
-          if (self.formModel.companyType == "2") {
-            formData.append("catalogName", "学校身份");
-          } else {
-            formData.append("catalogName", "用户身份");
-          }
-          dataDictionaryApi.findByCatalogName(formData).then((response) => {
-            var jsonData = response.data;
-            this.popedomList = jsonData.data;
-          });
+          var formData5 = new FormData();
+          formData5.append("companyId", self.formModel.companyId);
+          personRoleInfoApi
+            .listByCompanyId(formData5)
+            .then(function (response) {
+              var jsonData = response.data;
+              if (jsonData.result) {
+                if (jsonData.data != null && jsonData.data != "") {
+                  self.personRoleResult = jsonData.data;
+                }
+              }
+            });
         } else {
           self.$message.error(jsonData.message + "");
         }

+ 42 - 47
src/views/base/personInfo-list.vue

@@ -313,6 +313,28 @@
         label="单位"
         width="250"
       ></el-table-column>
+      <el-table-column prop="popedomName" label="用户身份" width="200">
+        <!-- <template slot-scope="{ row }">
+          <el-row>
+            <el-col :span="10" v-if="row.popedom.indexOf('1') != -1"
+              >个人用户</el-col
+            >
+            <el-col
+              :span="10"
+              v-if="row.popedom.indexOf('2') != -1 && row.companyType == 1"
+              >单位管理员</el-col
+            >
+            <el-col
+              :span="10"
+              v-if="row.popedom.indexOf('2') != -1 && row.companyType == 2"
+              >班主任</el-col
+            >
+            <el-col :span="10" v-if="row.popedom.indexOf('3') != -1"
+              >监管专员</el-col
+            >
+          </el-row>
+        </template> -->
+      </el-table-column>
       <el-table-column
         prop="parkName"
         label="园区"
@@ -375,28 +397,6 @@
           row.faceBound ? "是" : "否"
         }}</template>
       </el-table-column>
-      <el-table-column prop="popedom" label="用户身份" width="200">
-        <!-- <template slot-scope="{ row }">
-          <el-row>
-            <el-col :span="10" v-if="row.popedom.indexOf('1') != -1"
-              >个人用户</el-col
-            >
-            <el-col
-              :span="10"
-              v-if="row.popedom.indexOf('2') != -1 && row.companyType == 1"
-              >单位管理员</el-col
-            >
-            <el-col
-              :span="10"
-              v-if="row.popedom.indexOf('2') != -1 && row.companyType == 2"
-              >班主任</el-col
-            >
-            <el-col :span="10" v-if="row.popedom.indexOf('3') != -1"
-              >监管专员</el-col
-            >
-          </el-row>
-        </template> -->
-      </el-table-column>
       <el-table-column label="是否自动同步" width="120">
         <template slot-scope="{ row }">
           <el-switch
@@ -610,28 +610,23 @@
       <el-form label-width="150px">
         <el-form-item label="模板下载">
           <el-link
-            href="http://rccs.oss-cn-hangzhou.aliyuncs.com/smart/companyInfo/2020/3/16170226996.xls"
+            href="http://rccs.oss-cn-hangzhou.aliyuncs.com/smart/personInfo/2020/10/%E5%B0%8F%E9%B9%8F%E7%AE%A1%E5%AE%B6%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xls"
             type="primary"
             target="_blank"
             >点击下载模板</el-link
           >
         </el-form-item>
-        <el-form-item label="单位">
-          <el-select
+        <!-- <el-form-item label="单位">
+          <el-select-tree
+            size="mini"
+            :props="props"
+            :options="companyResult"
             v-model="uploadCompanyId"
-            filterable
-            placeholder="请选择"
-            @change="changeUploadCompayId"
-            style="width: 280px"
+            @input="changeUploadCompayId($event)"
+            height="200"
+          ></el-select-tree
           >
-            <el-option
-              v-for="company in companyResult"
-              :key="company.id"
-              :label="company.name"
-              :value="company.id"
-            ></el-option>
-          </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="上传文件">
           <el-upload
             class="upload-demo"
@@ -1120,17 +1115,17 @@ export default {
     beforeUpload(file, fileList) {
       //导入前判断
       var self = this;
-      if (self.uploadCompanyId == null || self.uploadCompanyId == "") {
-        self.$message({
-          type: "warning",
-          message: "请选择单位",
-        });
-        self.xlsLoading = false;
-        return false;
-      } else {
+      // if (self.uploadCompanyId == null || self.uploadCompanyId == "") {
+      //   self.$message({
+      //     type: "warning",
+      //     message: "请选择单位",
+      //   });
+      //   self.xlsLoading = false;
+      //   return false;
+      // } else {
         self.xlsLoading = true;
-        return true;
-      }
+        //return true;
+      //}
     },
     //批量导入-上传成功
     handleBatchImportSuccess(response, file, fileList) {

+ 111 - 50
src/views/base/personPopedom-detail.vue

@@ -28,6 +28,14 @@
             height="200"
           ></el-select-tree>
         </el-form-item>
+        <el-form-item label="结构" prop="companyStructureId">
+          <el-select-tree
+            :props="companyStructureProps"
+            :options="companyStructureResult"
+            v-model="formModel.companyStructureId"
+            height="200"
+          ></el-select-tree>
+        </el-form-item>
         <el-form-item label="角色" prop="personRoleId">
           <el-select
             v-model="formModel.personRoleId"
@@ -43,13 +51,22 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="展示的图标" prop="showIconId">
-          <el-input
+        <!-- <el-form-item label="展示的图标" prop="showIconId">
+          <el-select
             v-model="formModel.showIconId"
-            placeholder="请输入展示的图标id"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
+            filterable
+            multiple
+            placeholder="请选择"
+            style="width: 280px"
+          >
+            <el-option
+              v-for="icon in iconResult"
+              :key="icon.iconId"
+              :label="icon.iconName"
+              :value="icon.iconId"
+            ></el-option>
+          </el-select>
+        </el-form-item> -->
         <el-form-item label="备注信息" prop="remark">
           <el-input
             v-model="formModel.remark"
@@ -73,7 +90,10 @@ import personPopedomApi from "@/api/base/personPopedom";
 import personRoleInfoApi from "@/api/base/personRoleInfo";
 import companyInfoApi from "@/api/base/companyInfo";
 import deviceInfoApi from "@/api/base/deviceInfo";
+import companyStructureInfoApi from "@/api/base/companyStructureInfo";
+import iconInfoApi from "@/api/base/iconInfo";
 import SelectTree from "@/components/SelectTree";
+import { Breadcrumb } from "element-ui";
 
 export default {
   components: {
@@ -85,10 +105,10 @@ export default {
       formModel: { companyId: "" },
       ruleValidate: {
         companyId: [
-          { required: true, message: "对应公司id不能为空", trigger: "blur" },
+          { required: true, message: "对应公司不能为空", trigger: "blur" },
         ],
         personRoleId: [
-          { required: true, message: "对应角色id不能为空", trigger: "blur" },
+          { required: true, message: "对应角色不能为空", trigger: "blur" },
         ],
       },
       showDialog: true,
@@ -103,6 +123,14 @@ export default {
         children: "children",
       },
       personRoleResult: [],
+      iconResult: [],
+      companyStructureResult: [],
+      companyStructureProps: {
+        // 配置项(必选)
+        value: "id",
+        label: "structureName",
+        children: "children",
+      },
     };
   },
   created() {
@@ -126,12 +154,10 @@ export default {
     //     }
     //   }
     // });
-
-    this.loadTree();
   },
   watch: {
     "formModel.companyId": function (val, oldval) {
-      if(val != null && val != ""){
+      if (val != null && val != "") {
         var self = this;
         self.formModel.personRoleId = "";
         var formData = new FormData();
@@ -144,59 +170,94 @@ export default {
             }
           }
         });
+
+        companyStructureInfoApi.list(formData).then(function (response) {
+          var jsonData = response.data;
+          if (jsonData.result) {
+            if (jsonData.data != null && jsonData.data != "") {
+              self.companyStructureResult = jsonData.data;
+            }
+          }
+        });
       }
     },
+    // "formModel.personRoleId": function (val, oldval) {
+    //   if (val != null && val != "") {
+    //     var self = this;
+    //     self.formModel.showIconId = "";
+    //     var formData = new FormData();
+    //     formData.append("roleId", val);
+
+    //     iconInfoApi.listByRoleId(formData).then(function (response) {
+    //       var jsonData = response.data;
+    //       if (jsonData.result) {
+    //         if (jsonData.data != null && jsonData.data != "") {
+    //           self.iconResult = jsonData.data;
+    //         }
+    //       }
+    //     });
+    //   }
+    // },
   },
   methods: {
-    loadTree() {
-      var formData = new FormData();
-      companyInfoApi.loadChildren(formData).then((resp) => {
-        var jsonData = resp.data;
-
-        if (jsonData.result) {
-          this.treeData = jsonData.data;
-        } else {
-          this.$message.error(jsonData.message + "");
-        }
-      });
-    },
     closeDialog() {
       this.$emit("close", false);
     },
     handleSubmit() {
       var self = this;
       self.formModel.personId = self.personId;
-      this.$refs["form"].validate((valid) => {
-        if (valid) {
-          (function () {
-            var id = self.formModel.id;
+      // if (
+      //   self.formModel.showIconId != null &&
+      //   self.formModel.showIconId != ""
+      // ) {
+      //   var showIconId = self.formModel.showIconId.join(",");
+      //   self.formModel.showIconId = showIconId;
+      // } else {
+      //   self.formModel.showIconId = "";
+      // }
 
-            if (id == null || id.length == 0) {
-              return personPopedomApi.add(self.formModel);
-            } else {
-              return personPopedomApi.update(self.formModel);
-            }
-          })().then(function (response) {
-            var jsonData = response.data;
+      if (
+        self.formModel.companyStructureId != null &&
+        self.formModel.companyStructureId == "0"
+      ) {
+        self.$message({
+          message: "请选择下级机构",
+          type: "warning",
+        });
+        self.formModel.companyStructureId == null;
+      } else {
+        this.$refs["form"].validate((valid) => {
+          if (valid) {
+            (function () {
+              var id = self.formModel.id;
 
-            if (jsonData.result) {
-              self.$message({
-                message: "保存成功!",
-                type: "success",
-              });
+              if (id == null || id.length == 0) {
+                return personPopedomApi.add(self.formModel);
+              } else {
+                return personPopedomApi.update(self.formModel);
+              }
+            })().then(function (response) {
+              var jsonData = response.data;
 
-              self.$emit("close", true);
-            } else {
-              self.$message({
-                message: jsonData.message + "",
-                type: "warning",
-              });
+              if (jsonData.result) {
+                self.$message({
+                  message: "保存成功!",
+                  type: "success",
+                });
 
-              self.$emit("close", false);
-            }
-          });
-        }
-      });
+                self.$emit("close", true);
+              } else {
+                self.$message({
+                  message: jsonData.message + "",
+                  type: "warning",
+                });
+                self.formModel.companyStructureId == null;
+                self.$emit("close", false);
+              }
+            });
+          }
+        });
+      }
     },
   },
   mounted: function () {

+ 14 - 4
src/views/base/personPopedom-list.vue

@@ -43,22 +43,27 @@
         <el-table-column
           prop="companyName"
           label="公司"
-          width="180"
+          width="200"
+        ></el-table-column>
+        <el-table-column
+          prop="companyStructureName"
+          label="部门"
+          width="120"
         ></el-table-column>
         <el-table-column
           prop="roleName"
           label="角色"
           width="150"
         ></el-table-column>
-        <el-table-column
+        <!-- <el-table-column
           prop="showIconId"
           label="图标信息"
           width="150"
-        ></el-table-column>
+        ></el-table-column> -->
         <el-table-column
           prop="remark"
           label="备注信息"
-          width="150"
+          width="120"
         ></el-table-column>
         <el-table-column prop="useEnable" label="默认" width="180">
           <template slot-scope="{ row }">
@@ -213,6 +218,11 @@ export default {
                 type: "success",
                 message: "解绑成功!",
               });
+            }else{
+              self.$message({
+                type: "error",
+                message: jsonData.message,
+              });
             }
           });
         })