diff --git a/src/config/area.js b/src/config/area.js
index 4726a793800ec40ffc944fd3c0d97ec9d0b82bc3..d7b6fbd48452a24201efafe7c7a383dcc9cd337d 100644
--- a/src/config/area.js
+++ b/src/config/area.js
@@ -5,10 +5,16 @@ let getAreas = function(){
                 method: 'get',
                 url: 'organ/getAreaTree'
             }).then(res=>{
-                if(res.data.code == 200){
-                    resolve(res.data.body)
-                }else{
+                if(res.status != 200){
                     resolve([])
+                }else{
+                    if(res.data.resultCode == 200){
+                        let list = res.data.data
+                        let filterList = setChildNull(list)
+                        resolve(filterList)
+                    }else{
+                        resolve([])
+                    }
                 }
             
             }).catch(err=>{
@@ -16,4 +22,21 @@ let getAreas = function(){
             })
         })
 }  
+function setChildNull(list){
+    if (list.length === 0) return []
+    list.forEach(v=>{
+        fs(v)
+    })
+    return list
+}
+function fs(v){
+    if(v.children && v.children.length === 0){
+        v.children = null
+    }else{
+        v.children.forEach(s=>{
+            fs(s)
+        })
+    }
+    
+}
 export { getAreas }
\ No newline at end of file
diff --git a/src/config/httpServer.js b/src/config/httpServer.js
index 7e6d48b2c2c48083429e1e36d1a8029c65c212af..9b3e95df37fdaf2cdc494bd572705381333d513e 100644
--- a/src/config/httpServer.js
+++ b/src/config/httpServer.js
@@ -88,7 +88,8 @@ const httpServer = (opts,data,file,timeout)=>{
   if(opts.authType && opts.authType!=""){
     // Authorization
     if(opts.authType==="back"){
-      authToken=localStorage.getItem('backToken');
+      //authToken=localStorage.getItem('backToken');
+      authToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInVzZXJfaWQiOiIxIiwiaXNzIjoiSUFUQSIsImV4cCI6MTYxNjU5MDE3NiwiaWF0IjoxNjE2NTc1Nzc2fQ.BT7bv2fmz_mS10nhoeW8_z17MSRY0MQNta-0ozhUMkuqFC2bed88yc2xoolyMEN7DYSVUOCFvDJrwmi8NwgDgQ"
     }else if(opts.authType==="front"){
       authToken = localStorage.getItem("token") || MyLocalStorage.Cache.get('token');
     }
diff --git a/src/page/system/log/devops.vue b/src/page/system/log/devops.vue
index 0c642a93719bf669ced27b71cca9587ee999fc65..28cf762db6eaece8d0f2215cb0fbfde1b0787254 100644
--- a/src/page/system/log/devops.vue
+++ b/src/page/system/log/devops.vue
@@ -1,33 +1,24 @@
 <template>
+  <!-- 运维日志 -->
   <div class="devops-wrapper height100">
       <div class="search-container">
           <el-form :inline="true" :model="form">
             <el-form-item>
                 <el-input
                  v-model="form.user" 
-                 placeholder="请输入操作者"
+                 placeholder="请输入运维者账号"
                  suffix-icon="el-icon-search"
                 ></el-input>
             </el-form-item>
             <el-form-item>
               <el-date-picker
-                v-model="form.value"
+                v-model="form.date"
                 type="daterange"
                 range-separator="至"
                 start-placeholder="开始日期"
                 end-placeholder="结束日期">
              </el-date-picker>
             </el-form-item>
-            <el-form-item>
-                <el-select v-model="form.user" placeholder="请选择">
-                <el-option
-                    v-for="item in options"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value">
-                </el-option>
-             </el-select>
-            </el-form-item>
             <el-form-item>
                 <div class="btn-group">
                    <el-button type="primary" @click="handleSubmit">查询</el-button>
@@ -53,7 +44,7 @@ export default {
         return{
             form:{
                 user:'',
-                value:''
+                date:''
             },
             addForm:{
 
diff --git a/src/page/system/orgDialog/add.vue b/src/page/system/orgDialog/add.vue
index 111c57e48a6abb4cc5270e37b9506e7b30732869..abfe209a0bb8676831137e9aeb43a513cb1757ce 100644
--- a/src/page/system/orgDialog/add.vue
+++ b/src/page/system/orgDialog/add.vue
@@ -64,7 +64,7 @@ import { getAreas } from "@/config/area";
 export default {
   data() {
     return {
-      dialogVisible: true,
+      dialogVisible: false,
       form: {
         name: "",
         areaId: [],
@@ -72,11 +72,11 @@ export default {
         remarks: "",
       },
       disabled: false,
-      areaOptions: [],
+      areaOptions:  [],
       cascaderProps: {
         label: "name",
         value: "id",
-        checkStrictly: true,
+        checkStrictly: true
       },
       levelOption: [],
       rules: {
@@ -97,6 +97,10 @@ export default {
       type: Number,
       default: 1,
     },
+    parentId:{
+      type: String,
+      default: '0',
+    }
   },
   mounted() {
     this.getLevelOption();
@@ -109,10 +113,20 @@ export default {
     handleClose() {
       this.$confirm("确认关闭?")
         .then((_) => {
-          done();
+          this.handleReset()  
         })
         .catch((_) => {});
     },
+    handleReset(){
+        this.dialogVisible = false
+        this.$refs.form.resetFields()
+        this.form = {
+            name: "",
+            areaId: [],
+            level: "",
+            remarks: "",
+        }
+    },
     handleCancle() {
       this.handleClose();
     },
@@ -125,24 +139,33 @@ export default {
           params.areaId = [...this.form.areaId].pop();
           params.remarks = this.form.remarks;
           params.level = this.form.level;
+          params.parentId = this.parentId
           let requestparams = this.$qs.stringify(params);
           this.$https(
             {
               method: "post",
               url: "organ/add",
+              authType: this.backToken,
             },
             requestparams
           )
             .then((res) => {
-              console.log(res);
-              if (res.data.code != 200) {
-                this.$message({
-                  type: "success",
-                  message: res.data.message,
-                });
+              if(res.status == 200 ){
+                if (res.data.resultCode == 200  ) {
+                    this.$message({
+                        type: "success",
+                        message: res.data.message,
+                    });
+                    this.handleReset()  
+                    this.$emit('success',true)
+                } else {
+                     this.$message.error(res.data.message);
+                     this.$emit('success',false)
+               } 
               } else {
-                this.$message.error(res.data.message);
-              }
+                   this.$message.error(res.data);
+                   this.$emit('success',false)
+              }    
             })
             .catch((err) => {
               console.log(res);
diff --git a/src/page/system/organ.vue b/src/page/system/organ.vue
index 0f85781bc9b1eb74432dc05b59629336440a992a..ab7620b6bcaee5d98ecf3f3ab7de479b7b0bdb15 100644
--- a/src/page/system/organ.vue
+++ b/src/page/system/organ.vue
@@ -7,17 +7,20 @@
           <div class="tree-search party-form">
             <el-input
               placeholder="请输入组织结构名称"
-              v-model="orgName"
-              suffix-icon="el-icon-search"
-              clearable
+              v-model="name"
             >
+             <i
+              slot="suffix" 
+              class="el-input__icon el-icon-search"
+              @click="getOrgTree()">
+              </i>
             </el-input>
             <div class="f0">
               <el-tooltip content="新建" placement="top">
-                <i class="icon-add party-icon-20" />
+                <i class="icon-add party-icon-20"  @click="handleAdd('add')"/>
               </el-tooltip>
               <el-tooltip content="导入" placement="top">
-                <i class="icon-import party-icon-20" />
+                <i class="icon-import party-icon-20"  @click="handleImport('import')"/>
               </el-tooltip>
             </div>
           </div>
@@ -43,10 +46,10 @@
     </div>
     <div class="org-detail">
       <div class="org-detail-panel-box">
-        <span class="title">{{ title }}</span>
+        <span class="title">{{ currentInfo.name }}</span>
         <div class="icon-group">
-          <i class="icon-edit party-icon-24"> </i>
-          <i class="icon-del party-icon-24"> </i>
+          <i class="icon-edit party-icon-24" @click="handleEdit()"> </i>
+          <i class="icon-del party-icon-24" @click="handleDel()"> </i>
         </div>
       </div>
       <div class="org-detail-panel-box-content">
@@ -58,162 +61,166 @@
         </div>
         <el-form label-position="top" :inline="true">
           <el-form-item label="上级机构" class="w50">
-            <span>中国国家博物馆</span>
+            <span></span>
           </el-form-item>
           <el-form-item label="下级机构" class="w50">
-            <span>中国国家博物馆</span>
+            <span>
+             
+            </span>
           </el-form-item>
           <el-form-item label="地理位置" class="w100">
-            <span>北京市海淀区</span>
+            <span>
+              {{currentInfo.remarks}}
+            </span>
           </el-form-item>
           <el-form-item label="备注信息" class="w100">
             <span>
-              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean
-              euismod bibendum laoreet. Proin gravida dolor sit amet lacus
-              accumsan et viverra justo commodo. Proin sodales pulvinar tempor.
-              Cum sociis natoque penatibus et magnis dis parturient montes,
-              nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra
-              vulputate, felis tellus mollis orci, sed rhoncus sapien nunc eget.
+                {{currentInfo.remarks}}
             </span>
           </el-form-item>
         </el-form>
       </div>
-      <org-add/> 
-      <org-edit/> 
+      <org-add 
+        ref="orgAdd" 
+        :parentId="currentInfo.id" 
+        :level="currentInfo.level"
+        @success="getOrgTree()"
+      /> 
+      <org-edit ref="orgEdit" :currentInfo="currentInfo"/> 
     </div>
   </div>
 </template>
 <script>
-let res = {
-  code: "200",
-  body: [
-    {
-      children: [
-        {
-          children: [
-            {
-              children: [],
-              city: 1,
-              country: 1,
-              createTime: "2020-03-22",
-              icon: "1",
-              id: "3",
-              isDeleted: false,
-              level: 3,
-              name: "xe",
-              parentId: "2",
-              province: 1,
-              remarks: "1",
-              updateTime: "2021-03-22",
-            },
-          ],
-          city: 1,
-          country: 1,
-          createTime: "2021-03-22",
-          icon: "1",
-          id: "2",
-          isDeleted: false,
-          level: 2,
-          name: "测试2级",
-          parentId: "1",
-          province: 1,
-          remarks: "1",
-          updateTime: "2021-03-22",
-        },
-        {
-          children: [],
-          city: 1,
-          country: 1,
-          createTime: "2021-03-22",
-          icon: "1",
-          id: "4",
-          isDeleted: false,
-          level: 2,
-          name: "测试2级2",
-          parentId: "1",
-          province: 1,
-          remarks: "1",
-          updateTime: "2021-03-22",
-        },
-      ],
-      city: 1101,
-      country: 11011,
-      createTime: "2021-03-22",
-      icon: "0",
-      id: "1",
-      isDeleted: false,
-      level: 1,
-      name: "国博",
-      parentId: "0",
-      province: 110005,
-      remarks: "0",
-      updateTime: "2021-03-22",
-    },
-    {
-      children: [],
-      city: 1,
-      country: 1,
-      createTime: "2021-03-22",
-      icon: "1",
-      id: "1373918679665557505",
-      isDeleted: false,
-      level: 1,
-      name: "测试",
-      parentId: "0",
-      province: 1,
-      remarks: "1",
-      updateTime: "2021-03-22",
-    },
-    {
-      children: [],
-      city: 110100,
-      country: 110108,
-      createTime: "2021-03-23",
-      icon: "0",
-      id: "1374238828926935042",
-      isDeleted: false,
-      level: 1,
-      name: "测试11",
-      parentId: "0",
-      province: 110000,
-      remarks: "测试",
-      updateTime: "2021-03-23",
-    },
-    {
-      children: [],
-      city: 110100,
-      country: 110108,
-      createTime: "2021-03-23",
-      icon: "0",
-      id: "1374239612615909378",
-      isDeleted: false,
-      level: 1,
-      name: "测试22",
-      parentId: "0",
-      province: 110000,
-      remarks: "测试",
-      updateTime: "2021-03-23",
-    },
-  ],
-};
 import {orgAdd, orgEdit} from './orgDialog'
 export default {
   data() {
     return {
-      orgName: "",
-      data: res.body,
+      name: "",
+      data: [],
       defaultProps: {
         children: "children",
         label: "name",
       },
-      title: "国博",
+      currentId:'',
+      currentInfo:{},
     };
   },
   components:{orgAdd,orgEdit},
+  mounted(){
+    this.getOrgTree()
+  },
   methods: {
     handleNodeClick(data) {
-      console.log(data);
+      this.currentId = data.id
+      this.getInfoById()
+    },
+    // 获取机构数详情
+    getInfoById(){
+      this.$https({
+         method: "get",
+         url: "organ/getById",
+         authType: this.backToken,
+      },{id:this.currentId}).then(res=>{
+        if(res.status == 200){
+          if(res.data.resultCode == 200){
+            if(res.data.data){
+                this.currentInfo = res.data.data
+            }else{
+               this.currentInfo = {}
+            }
+          }else{
+            this.currentInfo = {}
+          }
+        }else{
+          this.currentInfo = {}
+        }
+      }).catch(err=>{
+         console.log(res)
+      })
+    },
+    // 获取机构树
+    getOrgTree(){
+      this.$https({
+        method: "get",
+        url: "organ/getTree",
+        authType: this.backToken,
+      },{name:this.name}).then(res=>{
+        if(res.status == 200){
+          if(res.data.resultCode == 200){
+             this.data = res.data.data
+          }else{
+            this.data = []
+          }
+        }else{
+          this.data = []
+        }
+      }).catch(err=>{
+        console.log(res)
+      })
+    },
+    // 新增或者导入 之前判断是否选择父级
+    handleOperate(type){
+      if(JSON.stringify(this.currentInfo) === "{}"){
+        this.currentId.level = 1
+        this.currentInfo.id = '0'
+      }
+      if(type === 'add'){
+        this.handleAdd()
+      }
+      if(type === 'import'){
+         this.handleImport()
+      }
+    },
+    // 新增
+    handleAdd(){
+      this.$refs.orgAdd.dialogVisible = true
     },
+    //导入
+    handleImport(){
+
+    },
+    handleEdit(){
+
+
+    },
+    // 删除
+    handleDel(){
+       this.$confirm('此操作将永久删除, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.delAction()
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消删除'
+          });          
+        });
+    },
+    delAction(){
+       this.$https({
+         method: `delete?id=${this.currentId}`,
+         url: "organ/delete",
+         authType: this.backToken,
+      }).then(res=>{
+        if(res.status == 200){
+          if(res.data.resultCode == 200){
+            this.$message({
+              type:'success',
+              message:res.data.message
+            })
+            this.getOrgTree()
+          }else{
+            this.$message.error(res.data.message)
+          }
+        }else{
+          this.$message.error(res.data)
+        }
+      }).catch(err=>{
+         console.log(err)
+      })
+    }
   },
 };
 </script>
@@ -255,6 +262,11 @@ export default {
       }
       .org-tree-box-content {
         padding: 20px;
+        height: calc(100% - 56px);
+        .tree-content{
+          height: calc(100% - 60px);
+          overflow-y: auto;
+        }
       }
     }
   }
diff --git a/src/style/global.less b/src/style/global.less
index 76e375e41d3dcfc8ad34d93a2c7a306ab33df6c9..4ca55a916d4048c1c421cc34c33c6fe733f485f0 100644
--- a/src/style/global.less
+++ b/src/style/global.less
@@ -392,6 +392,14 @@
     }
     .el-tree-node{
         background-color: @party-white;
+        &.is-current{
+            >.el-tree-node__content{
+                .custom-tree-node{
+                    background-color: @party-border-color;
+                }
+            }
+               
+        }
     }
     .el-tree-node__content{
         height: auto;
@@ -422,6 +430,7 @@
         height: 56px;
         line-height: 56px;
         border-bottom: 1px solid @party-border-color;
+        padding-left: 5px;
     }
     .tree-node-level2,
     .tree-node-level3{