소스 검색

工会树修改

yanliming 3 년 전
부모
커밋
f4db6f0f69
3개의 변경된 파일361개의 추가작업 그리고 29개의 파일을 삭제
  1. 20 1
      src/api/base/orgInfo.js
  2. 5 4
      src/views/base/orgInfo-detail.vue
  3. 336 24
      src/views/base/orgInfo-list.vue

+ 20 - 1
src/api/base/orgInfo.js

@@ -9,6 +9,10 @@ function create(){
   return request.get(constant.serverUrl + "/base/orgInfo/create");
 }
 
+function createChildren(id){
+  return request.get(constant.serverUrl + "/base/orgInfo/createChildren/"+id);
+}
+
 function edit(id){
   return request.get(constant.serverUrl + "/base/orgInfo/edit/" + id);
 }
@@ -45,10 +49,25 @@ function treeList() {
   return request.post(constant.serverUrl + "/base/orgInfo/treeList");
 }
 
+function orgInfoTreeList() {
+  return request.post(constant.serverUrl + "/base/orgInfo/orgInfoTreeList");
+}
+
+
 function loadChildren(formData) {
   return request.post(constant.serverUrl + "/base/orgInfo/children",formData);
 }
 
+function batchChange(formModel){
+  return request.post(constant.serverUrl + "/base/orgInfo/batchChange",formModel,{
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+
 export default {
-  pageList,create,edit,add,update,remove,batchRemove,treeList,loadChildren
+  pageList,create,edit,add,update,remove,batchRemove,treeList,loadChildren,orgInfoTreeList,createChildren,
+  batchChange
 }

+ 5 - 4
src/views/base/orgInfo-detail.vue

@@ -13,7 +13,7 @@
     <div class="user-panel" v-loading="loading">
       <el-form ref="form" :model="formModel" inline :rules="ruleValidate" :label-width="'100px'">
         <el-form-item label="所属区域" prop="area">
-          <el-select v-model="formModel.area" filterable placeholder="请选择" >
+          <el-select v-model="formModel.area" filterable placeholder="请选择" style="width:300px">
             <el-option
                 v-for="result in areaList"
                 :key="result.id"
@@ -28,6 +28,7 @@
             :options="orgResult"
             v-model="formModel.parentId"
             height="300"
+            style="width:300px"
             size="large"
           ></el-select-tree>
         </el-form-item>
@@ -38,7 +39,7 @@
           <el-input v-model="formModel.unit" placeholder="请输入单位名称" style="width:300px"></el-input>
         </el-form-item>
           <el-form-item label="备注" prop="remark">
-          <el-input type="textarea" v-model="formModel.remark" :rows="5" style="width:300px"></el-input>
+          <el-input type="textarea" v-model="formModel.remark" :rows="3" style="width:300px"></el-input>
         </el-form-item>
       </el-form>
     </div>
@@ -54,7 +55,7 @@ import SelectTree from "@/components/SelectTree";
 import dataDictionaryApi from "@/api/sys/dataDictionary";
 
 export default {
-  props: ["businessKey", "title","companyResult"],
+  props: ["businessKey", "title","companyResult","parentId"],
   computed: {
       ruleValidate (){
         var rules = null;
@@ -193,7 +194,7 @@ export default {
       if (self.businessKey.length == 0) {
         return orgInfoApi.create();
       } else {
-        return orgInfoApi.edit(self.businessKey);
+        return orgInfoApi.createChildren(self.businessKey);
       }
     })()
       .then((response) => {

+ 336 - 24
src/views/base/orgInfo-list.vue

@@ -51,10 +51,10 @@
         type="primary"
         size="small"
         plain
-        icon="el-icon-remove"
-        :disabled="multipleSelection.length == 0"
-        @click="handleBatchDelete"
-        >删除选中项</el-button
+        icon="el-icon-refresh"
+        @click="batchImportVisible1 = true"
+        :disabled="multipleSelection.length==0"
+        >批量转移</el-button
       >
       <el-button
         type="primary"
@@ -65,7 +65,7 @@
         >导入工会</el-button
       >
     </el-row>
-    <el-table
+    <!-- <el-table
       ref="formTable"
       :data="tableData"
       v-loading="loading"
@@ -131,13 +131,123 @@
       @current-change="changePage"
       @size-change="pageSizeChange"
       layout="total, sizes, prev, pager, next, jumper"
-    ></el-pagination>
+    ></el-pagination> -->
+    <div class="cardDiv">
+      <div class="cardDiv1">
+        <el-card class="box-card">
+          <el-tree
+            :data="orgInfoTreeList"
+            show-checkbox
+            node-key="id"
+            default-expand-all
+            :expand-on-click-node="false"
+            @check="selectGetNodes"
+            >
+            <span class="custom-tree-node" slot-scope="{ node, data }" @click="handleEditTree(data.id)">
+              <span>{{ node.label }}</span>
+              <span>
+                <el-button
+                  type="text"
+                  @click="() => append(data)">
+                  <i class="el-icon-circle-plus-outline"></i>
+                </el-button>
+                <el-button
+                  v-if="data.parentId!=null"
+                  type="text"
+                  @click="() => remove(data)">
+                  <i class="el-icon-delete"></i>
+                </el-button>
+                <el-button
+                  v-if="data.parentId == null"
+                  :disabled= true
+                  type="text"
+                  @click="() => remove(data)">
+                  <i class="el-icon-delete"></i>
+                </el-button>
+              </span>
+            </span>
+          </el-tree>
+        </el-card>
+      </div>
+      <div class="cardDiv2">
+        <el-card class="box-card2">
+            <div slot="header" class="clearfix">
+              <span><i class="el-icon-edit"></i>编辑工会信息</span>
+            </div>
+            <div class="user-panel" v-loading="loading">
+              <el-form ref="form" :model="formModel" inline :rules="ruleValidate" :label-width="'100px'">
+                <el-form-item label="所属区域" prop="area">
+                  <el-select v-model="formModel.area" filterable placeholder="请选择" style="width:300px">
+                    <el-option
+                        v-for="result in areaList"
+                        :key="result.id"
+                        :label="result.name"
+                        :value="result.value"
+                      ></el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="上级工会" prop="parentId">
+                  <el-select-tree
+                    :props="props"
+                    :options="orgResult"
+                    v-model="formModel.parentId"
+                    height="300"
+                    size="large"
+                    style="width:300px"
+                  ></el-select-tree>
+                </el-form-item>
+                <el-form-item label="工会名称" prop="name">
+                  <el-input v-model="formModel.name" placeholder="请输入工会名称" style="width:300px"></el-input>
+                </el-form-item>
+                <el-form-item label="单位名称" prop="unit">
+                  <el-input v-model="formModel.unit" placeholder="请输入单位名称" style="width:300px"></el-input>
+                </el-form-item>
+                  <el-form-item label="备注" prop="remark">
+                  <el-input type="textarea" v-model="formModel.remark" :rows="3" style="width:300px"></el-input>
+                </el-form-item>
+              </el-form>
+              <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
+              </div>
+            </div>
+
+        </el-card>
+      </div>
+    </div>
     <orgInfo-detail
       v-if="showModal"
       :businessKey="businessKey"
+      :parentId="parentId"
       :title="modalTitle"
       @close="onDetailModalClose"
     ></orgInfo-detail>
+    <el-dialog
+      title="批量转移"
+      :visible.sync="batchImportVisible1"
+      :modal-append-to-body="false"
+      style="text-align: left"
+      :close-on-click-modal="false"
+      width="500px"
+    >
+      <div class="user-panel" v-loading="loading">
+        <el-form ref="form" :model="formModel2" inline :rules="ruleValidate" :label-width="'100px'">
+          <el-form-item label="转移至工会" prop="parentId">
+            <el-select-tree
+              :props="props"
+              :options="orgResult"
+              v-model="formModel2.parentId"
+              height="300"
+              style="width:300px"
+              size="large"
+            ></el-select-tree>
+          </el-form-item>
+        </el-form>
+      </div>
+        <span slot="footer" class="dialog-footer" >
+          <el-button @click="batchImportVisible1 = false">取 消</el-button>
+          <el-button type="primary" @click="handleChangeSubmit" :loading="submitting">确 定</el-button>
+        </span>
+    </el-dialog>
     <el-dialog
       title="导入"
       :visible.sync="batchImportVisible"
@@ -196,9 +306,28 @@ import Constant from "@/constant";
 import orgInfoDetail from "./orgInfo-detail";
 import orgInfoApi from "@/api/base/orgInfo";
 import { getToken } from "@/utils/auth"; // get token from cookie
+import SelectTree from "@/components/SelectTree";
+import dataDictionaryApi from "@/api/sys/dataDictionary";
 
 export default {
   name: "BaseOrgInfoList",
+  computed: {
+      ruleValidate (){
+        var rules = null;
+        rules = {
+            area: [
+                { required: true, message: "所属区域不能为空", trigger: "blur" }
+            ],
+            // parentId: [
+            //     { required: true, message: "上级工会不能为空", trigger: "blur" }
+            // ],
+            name: [
+                { required: true, message: "工会名称不能为空", trigger: "blur" }
+            ],
+        };
+        return rules;
+      }
+  },
   data() {
     var self = this;
     return {
@@ -211,7 +340,19 @@ export default {
         type: "",
         unitType: "",
       },
+      formModel:{
+        id:"",
+        name:"",
+        parentId:"",
+      },
+      formModel2:{
+        parentId:"",
+        idList:[],
+      },
+      submitting: false,
       loading: false,
+      isSelectTree:false,
+      orgInfoTreeList:[],
       tableData: [],
       treeData: [],
       pageIndex: 1,
@@ -225,6 +366,7 @@ export default {
       showModal: false,
       modalTitle: "",
       businessKey: "",
+      parentId:"",
       tableHeight: 300,
       showDeviceModal: false,
       companyId: "",
@@ -238,11 +380,14 @@ export default {
       },
       xlsLoading: false,
       sceneData: [],
+      areaList:[],
+      orgResult:[],
       typeData: [],
       deviceRelationTitle: "",
       showIconModal: false,
       iconModalTitle: "",
       batchImportVisible: false,
+      batchImportVisible1: false,
       batchImportFileList: [],
       uploadUrlXls: Constant.serverUrl + "/base/orgInfo/importXls",
       uploadXlsData: {
@@ -255,37 +400,39 @@ export default {
     };
   },
   created() {
+    var self = this;
+   
+    self.loadOrgList();
+
+    dataDictionaryApi
+      .findByCatalogName({
+        catalogName: "所属区域",
+      })
+      .then((response) => {
+        var jsonData = response.data;
+        this.areaList = jsonData.data;
+      });
 
     this.changePage(1);
   },
   methods: {
-    changePage(pageIndex) {
+    closeDialog() {
+      this.$emit("close", false);
+    },
+    changePage() {
       var self = this;
 
       self.loading = true;
 
-      self.pageIndex = pageIndex;
-      var formData = new FormData();
-
-      formData.append("pageIndex", self.pageIndex);
-      formData.append("pageSize", self.pageSize);
-
-      formData.append("name", self.queryModel.name);
-
       orgInfoApi
-        .pageList(formData)
+        .orgInfoTreeList()
         .then(function (response) {
           self.loading = false;
 
           var jsonData = response.data.data;
 
-          self.tableData = jsonData.data;
-          self.totalPages = jsonData.totalPages;
-          self.totalElements = jsonData.recordsTotal;
-          //45为分页栏的高度
-          //页面高度-列表上面的高度-分页栏高度
-          self.tableHeight =
-            window.innerHeight - self.$refs.formTable.$el.offsetTop - 100;
+          self.orgInfoTreeList = jsonData;
+
         })
         .catch((error) => {
           self.loading = false;
@@ -333,7 +480,7 @@ export default {
             if (jsonData.result) {
               // var index = self.tableData.indexOf(record);
               // self.tableData.splice(index, 1);
-              self.changePage(self.pageIndex);
+              self.changePage();
 
               self.$message({
                 type: "success",
@@ -369,6 +516,12 @@ export default {
         });
       });
     },
+    handleGetNodes(){
+      
+    },
+    selectGetNodes(node){
+      this.multipleSelection.push(node.id);
+    },
     onDetailModalClose(refreshed) {
       //保存成功后回调
       this.showModal = false;
@@ -378,6 +531,126 @@ export default {
         this.changePage(this.pageIndex);
       }
     },
+    handleEditTree(id){
+      var self = this;
+
+      (function () {
+        return orgInfoApi.edit(id);
+      })()
+        .then((response) => {
+          var jsonData = response.data;
+
+          if (jsonData.result) {
+            self.formModel = jsonData.data;
+
+            if(self.formModel.parentId==null){
+              self.formModel.parentId="";
+            }
+            else{
+              self.isSelectTree = false;
+            }
+
+          } else {
+            self.$message.error(jsonData.message + "");
+          }
+        })
+        .catch((error) => {
+          self.$message.error(error + "");
+        });
+    },
+    append(data) {
+      this.modalTitle = "新增";
+      this.businessKey = data.id;
+      this.showModal = true;
+    },
+
+    remove(data) {
+      this.handleDelete(data);
+    },
+    handleSubmit() {
+      var self = this;
+
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          (function () {
+            var id = self.formModel.id;
+
+            if (id == null || id.length == 0) {
+              return orgInfoApi.add(self.formModel);
+            } else {
+              return orgInfoApi.update(self.formModel);
+            }
+          })().then(function (response) {
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              self.$message({
+                message: "保存成功!",
+                type: "success",
+              });
+
+              self.changePage();
+
+            } else {
+              self.$message({
+                message: jsonData.message + "",
+                type: "warning",
+              });
+
+              //self.$emit("close", false);
+            }
+          });
+        }
+      });
+    },
+    loadOrgList(){
+      var self = this
+      orgInfoApi.treeList().then(function (response) {
+        var jsonData = response.data;
+        if (jsonData.result) {
+          if (jsonData.data != null && jsonData.data != "") {
+            self.orgResult = jsonData.data;
+          }
+        }
+      });
+    },
+    handleChangeSubmit(){
+      var self = this;
+
+      self.formModel2.idList = this.multipleSelection;
+
+      this.$confirm("是否确认转移至所选工会下?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+          (function () {
+            return orgInfoApi.batchChange(self.formModel2);
+          })().then(function (response) {
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              self.$message({
+                message: "转移成功!",
+                type: "success",
+              });
+
+              self.changePage();
+              self.loadOrgList();
+              self.batchImportVisible1 = false;
+              self.multipleSelection.length = 0;
+            } else {
+              self.$message({
+                message: jsonData.message + "",
+                type: "warning",
+              });
+
+              //self.$emit("close", false);
+            }
+        });
+        
+      });
+    },
     beforeUpload(file, fileList) {
       //导入前判断
     },
@@ -437,6 +710,7 @@ export default {
   mounted: function () {},
   components: {
     "orgInfo-detail": orgInfoDetail,
+    "el-select-tree": SelectTree,
   },
 };
 </script>
@@ -459,4 +733,42 @@ export default {
   margin-left: 10px;
   text-align: left;
 }
+.cardDiv{
+  width: 90%;
+}
+.cardDiv1{
+  float: left;
+  width: 50%;
+}
+
+.cardDiv2{
+  float: left;
+  width: 50%;
+  text-align: left;
+}
+
+.box-card{
+  margin: 20px;
+  width: 90%;
+  min-height: 500px;
+  margin-right: 20px;
+}
+.box-card2{
+  margin: 20px;
+  min-height: 500px;
+  width: 90%;
+}
+
+.custom-tree-node {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 14px;
+    padding-right: 8px;
+  }
+
+  .dialog-footer{
+    text-align: center;
+  }
 </style>