Selaa lähdekoodia

用户的角色绑定相关功能

xiao547607 5 vuotta sitten
vanhempi
commit
50d0b66f1e

+ 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}">

+ 69 - 21
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"
@@ -44,11 +52,20 @@
           </el-select>
         </el-form-item>
         <el-form-item label="展示的图标" prop="showIconId">
-          <el-input
+          <el-select
             v-model="formModel.showIconId"
-            placeholder="请输入展示的图标id"
-            style="width: 300px"
-          ></el-input>
+            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
@@ -73,6 +90,8 @@ 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";
 
 export default {
@@ -85,10 +104,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 +122,14 @@ export default {
         children: "children",
       },
       personRoleResult: [],
+      iconResult: [],
+      companyStructureResult: [],
+      companyStructureProps: {
+        // 配置项(必选)
+        value: "id",
+        label: "structureName",
+        children: "children",
+      },
     };
   },
   created() {
@@ -126,12 +153,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,28 +169,51 @@ 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;
+            }
+          }
+        });
       }
     },
-  },
-  methods: {
-    loadTree() {
-      var formData = new FormData();
-      companyInfoApi.loadChildren(formData).then((resp) => {
-        var jsonData = resp.data;
+    "formModel.personRoleId": function (val, oldval) {
+      if (val != null && val != "") {
+        var self = this;
+        self.formModel.showIconId = "";
+        var formData = new FormData();
+        formData.append("roleId", val);
 
-        if (jsonData.result) {
-          this.treeData = jsonData.data;
-        } else {
-          this.$message.error(jsonData.message + "");
-        }
-      });
+        iconInfoApi.listByRoleId(formData).then(function (response) {
+          var jsonData = response.data;
+          if (jsonData.result) {
+            if (jsonData.data != null && jsonData.data != "") {
+              self.iconResult = jsonData.data;
+            }
+          }
+        });
+      }
     },
+  },
+  methods: {
     closeDialog() {
       this.$emit("close", false);
     },
     handleSubmit() {
       var self = this;
       self.formModel.personId = self.personId;
+      if (
+        self.formModel.showIconId != null &&
+        self.formModel.showIconId != ""
+      ) {
+        var showIconId = self.formModel.showIconId.join(",");
+        self.formModel.showIconId = showIconId;
+      } else {
+        self.formModel.showIconId = "";
+      }
       this.$refs["form"].validate((valid) => {
         if (valid) {
           (function () {

+ 5 - 0
src/views/base/personPopedom-list.vue

@@ -45,6 +45,11 @@
           label="公司"
           width="180"
         ></el-table-column>
+        <el-table-column
+          prop="departmentName"
+          label="部门"
+          width="180"
+        ></el-table-column>
         <el-table-column
           prop="roleName"
           label="角色"