From 62ae55ae397b7997b147a7b946f7ad5f1c78a45d Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期三, 26 十月 2022 19:34:33 +0800
Subject: [PATCH] 综合展示,系统管理,授权管理,专题图,资料馆添加权限配置

---
 src/views/userManage/orgManage.vue |  889 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 600 insertions(+), 289 deletions(-)

diff --git a/src/views/userManage/orgManage.vue b/src/views/userManage/orgManage.vue
index d971cb8..ff052ca 100644
--- a/src/views/userManage/orgManage.vue
+++ b/src/views/userManage/orgManage.vue
@@ -1,307 +1,618 @@
 <template>
-    <div class="logLog_box">
-      <My-bread
-        :list="[
-          `${$t('operatManage.operatManage')}`,
-          `${$t('operatManage.eventlogManage')}`,
-        ]"
-      ></My-bread>
+  <div class="menuSettings_box">
+    <div class="menuSettings_tree">
+      <My-bread :list="['杩愮淮绠$悊', '鍗曚綅绠$悊']"></My-bread>
+      <el-button class="saveBtn" type="primary" size="mini" @click="sendChange"
+        >淇濆瓨</el-button
+      >
       <el-divider />
-      <div class="inquire">
-        <el-form ref="ruleForm" :model="form" :inline="true">
-          <el-form-item :label="$t('operatManage.ELM.username')" prop="username">
-            <el-input
-              v-model="form.username"
-              :placeholder="$t('operatManage.ELM.usernameInfo')"
-            />
-          </el-form-item>
-          <el-form-item
-            :label="$t('operatManage.ELM.ownedSystem')"
-            prop="ownedSystem"
-          >
-            <el-select
-              v-model="form.ownedSystem"
-              :placeholder="$t('operatManage.ELM.please')"
-            >
-              <el-option :label="$t('operatManage.ELM.all')" value="all" />
-              <el-option :label="$t('operatManage.ELM.one')" value="one" />
-            </el-select>
-          </el-form-item>
-          <el-form-item
-            :label="$t('operatManage.ELM.operationType')"
-            prop="operationType"
-          >
-            <el-select
-              v-model="form.operationType"
-              :placeholder="$t('operatManage.ELM.please')"
-            >
-              <el-option :label="$t('operatManage.ELM.all')" value="all" />
-              <el-option :label="$t('operatManage.ELM.add')" value="add" />
-              <el-option :label="$t('operatManage.ELM.delete')" value="delete" />
-              <el-option :label="$t('operatManage.ELM.edit')" value="edit" />
-              <el-option :label="$t('operatManage.ELM.query')" value="query" />
-            </el-select>
-          </el-form-item>
-          <el-form-item :label="$t('operatManage.ELM.date')" prop="date">
-            <el-date-picker
-              v-model="form.date"
-              type="daterange"
-              align="right"
-              unlink-panels
-              :range-separator="$t('operatManage.ELM.to')"
-              :start-placeholder="$t('operatManage.ELM.startDate')"
-              :end-placeholder="$t('operatManage.ELM.endDate')"
-            >
-            </el-date-picker>
-          </el-form-item>
-          <el-form-item :label="$t('operatManage.ELM.ip')" prop="requestIp">
-            <el-input v-model="form.requestIp" placeholder="璇疯緭鍏�" />
-          </el-form-item>
-          <el-form-item>
-            <el-button @click="onSubmit"
-              ><i class="el-icon-search"></i> &nbsp;{{
-                $t("operatManage.ELM.search")
-              }}</el-button
-            >
-          </el-form-item>
-          <el-form-item>
-            <el-button @click="resetForm('ruleForm')"
-              ><i class="el-icon-delete"></i>&nbsp;{{
-                $t("operatManage.ELM.reset")
-              }}</el-button
-            >
-          </el-form-item>
-        </el-form>
-      </div>
-      <div class="table_box">
-        <el-table :data="tableData" stripe style="width: 100%" height="99%">
-          <el-table-column
-            align="center"
-            type="index"
-            :label="$t('operatManage.ELM.index')"
-            width="70px"
-          />
-          <el-table-column
-            align="center"
-            prop="username"
-            :label="$t('operatManage.ELM.username')"
-          />
-          <el-table-column
-            align="center"
-            prop="ip"
-            :label="$t('operatManage.ELM.ip')"
-          />
-          <el-table-column
-            align="center"
-            prop="ownedSystem"
-            :label="$t('operatManage.ELM.ownedSystem')"
-          />
-          <el-table-column
-            align="center"
-            prop="largeModuleName"
-            :label="$t('operatManage.ELM.largeModuleName')"
-          />
-          <el-table-column
-            align="center"
-            prop="smallModuleName"
-            :label="$t('operatManage.ELM.smallModuleName')"
-          />
-          <el-table-column
-            align="center"
-            prop="resourceName"
-            :label="$t('operatManage.ELM.resourceName')"
-          />
-          <el-table-column
-            align="center"
-            prop="date"
-            :label="$t('operatManage.ELM.date')"
-          />
-          <el-table-column
-            align="center"
-            prop="operationType"
-            :label="$t('operatManage.ELM.operationType')"
-          />
-        </el-table>
-        <div style="margin-top: 40px" class="pagination_box">
-          <el-pagination
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-            :current-page="currentPage"
-            :page-sizes="[10, 20, 30, 40]"
-            :page-size="10"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="9"
-          >
-          </el-pagination>
-        </div>
+      <div class="depTreeBox">
+        <el-tree
+          ref="tree"
+          :props="defaultProps"
+          node-key="id"
+          :data="depList"
+          :expand-on-click-node="false"
+          :default-expand-all="true"
+          draggable
+          @node-click="handleNodeClick"
+          @node-drag-start="handleDragStart"
+          @node-drag-end="handleDrop"
+        >
+          <span class="custom-tree-node" slot-scope="{ node, data }">
+            <span>{{ node.label }}</span>
+            <span class="btnBox">
+              <el-button
+                v-if="menuStatus.insert"
+                type="text"
+                size="mini"
+                @click="() => append(node, data)"
+              >
+                <i class="el-icon-circle-plus"></i>
+              </el-button>
+              <el-button
+                v-if="menuStatus.delete"
+                type="text"
+                size="mini"
+                @click="() => remove(node, data)"
+              >
+                <i class="el-icon-delete-solid"></i>
+              </el-button>
+            </span>
+          </span>
+        </el-tree>
       </div>
     </div>
-  </template>
-  
-  <script>
-  import MyBread from "../../components/MyBread.vue";
-  
-  export default {
-    //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
-    components: {
-      MyBread,
+    <div class="itemSettings">
+      <div class="title_box">
+        <h4>璇︾粏淇℃伅</h4>
+      </div>
+      <div class="form_box">
+        <el-form :model="itemdetail" ref="itemdetail" :rules="rules">
+          <el-form-item label="鍚嶇О" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.name" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="绠�绉�" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.sname" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="缂栫爜" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.code" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="鏈烘瀯浠g爜" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.uncode" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="鍦板潃" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.addr" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="鑱旂郴鏂瑰紡" :label-width="formLabelWidth">
+            <el-input
+              v-model="itemdetail.contact"
+              autocomplete="off"
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="浼犵湡" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.fax" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="鐢靛瓙閭欢" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.email" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="閭斂缂栫爜" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.post" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="缃戠珯鍦板潃" :label-width="formLabelWidth">
+            <el-input
+              v-model="itemdetail.website"
+              autocomplete="off"
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="澶囨敞" :label-width="formLabelWidth">
+            <el-input v-model="itemdetail.bak" autocomplete="off"></el-input>
+          </el-form-item>
+          <div class="btnBox" v-if="menuStatus.update">
+            <el-button type="primary" @click="updDep('itemdetail')"
+              >淇濆瓨</el-button
+            >
+            <el-button type="primary" @click="reset('itemdetail')"
+              >鍙栨秷</el-button
+            >
+          </div>
+        </el-form>
+      </div>
+    </div>
+    <el-dialog
+      width="30%"
+      top="5vh"
+      title="鏂板瀛愮洰褰�"
+      :visible.sync="dialogFormVisible"
+    >
+      <el-form :model="ruleForm" ref="ruleForm" :rules="rules">
+        <el-form-item prop="name" label="鍚嶇О" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.name" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="绠�绉�" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.sname" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="缂栫爜" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.code" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="鏈烘瀯浠g爜" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.uncode" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="鍦板潃" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.addr" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="鑱旂郴鏂瑰紡" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.contact" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="浼犵湡" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.fax" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="鐢靛瓙閭欢" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.email" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="閭斂缂栫爜" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.post" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="缃戠珯鍦板潃" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.website" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="澶囨敞" :label-width="formLabelWidth">
+          <el-input v-model="ruleForm.bak" autocomplete="off"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="resetForm('ruleForm')">鍙栨秷</el-button>
+        <el-button
+          type="primary"
+          @click="submitForm('ruleForm')"
+          v-loading.fullscreen.lock="fullscreenLoading"
+          >鎻愪氦</el-button
+        >
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import MyBread from '../../components/MyBread.vue';
+import {
+  queryDepTree,
+  updateDepTree,
+  updateDepTrees,
+  queryMaxId,
+  insertDep,
+  deleteDep,
+} from '../../api/api';
+export default {
+  //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {
+    MyBread,
+  },
+  data() {
+    let validName = (rule, value, callback) => {
+      if (value === '' || value === null || value === undefined) {
+        return callback(new Error('鍚嶇О涓嶈兘涓虹┖'));
+      } else {
+        callback();
+      }
+    };
+    return {
+      menuStatus: {
+        delete: false,
+        insert: false,
+        update: false,
+      },
+      defaultProps: {
+        children: 'children',
+        label: 'name',
+      },
+      fullscreenLoading: false,
+      oriData: [], //鍘熷鏍戞暟鎹�
+      depList: [], //el鏍戞暟鎹�
+      old_depData: [], //el鏍戞暟鎹�(鎷栧姩鍓�)
+      newData: [], //鎷栧姩鍚庡師濮嬫暟鎹�
+      itemdetail: {
+        addr: '',
+        bak: '',
+        code: '',
+        contact: '',
+        email: '',
+        fax: '',
+        name: '',
+        post: '',
+        sname: '',
+        uncode: '',
+        website: '',
+      },
+      backUpData: '',
+      formLabelWidth: '130px',
+      delChildID: '',
+      delChildIDs: [],
+      dialogFormVisible: false,
+      ruleForm: {
+        level: null,
+        orderNum: null,
+        pid: null,
+        addr: '',
+        bak: '',
+        code: '',
+        contact: '',
+        email: '',
+        fax: '',
+        name: '',
+        post: '',
+        sname: '',
+        uncode: '',
+        website: '',
+      },
+      rules: {
+        name: [{ required: true, validator: validName, trigger: 'blur' }],
+      },
+    };
+  },
+  methods: {
+    getDepTree() {
+      //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢�
+      // queryMaxId().then((res) => {
+      //   this.id = res.data;
+      // });
+      queryDepTree().then((res) => {
+        if (res.code == 200) {
+          this.oriData = res.result;
+          this.newData = res.result;
+          this.depList = this.treeData(res.result);
+        } else {
+          this.$notify.error({
+            title: res.code,
+            message: '鏃犳硶鑾峰彇鍗曚綅鍒楄〃',
+          });
+        }
+      });
     },
-  
-    data() {
-      return {
-        currentPage: 1,
-        form: {
-          username: "",
-          ownedSystem: "",
-          requestIp: "",
-          operationType: "",
-          date: "",
-        },
-        tableData: [
-          {
-            username: "绠$悊鍛�",
-            ip: "221.182.31.12",
-            date: "2022-08-05",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-          },
-          {
-            date: "2022-08-05",
-            username: "绠$悊鍛�",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-            ip: "221.182.31.12",
-          },
-          {
-            date: "2022-08-05",
-            username: "绠$悊鍛�",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-            ip: "221.182.31.12",
-          },
-          {
-            date: "2022-08-05",
-            username: "绠$悊鍛�",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-            ip: "221.182.31.12",
-          },
-          {
-            date: "2022-08-05",
-            username: "绠$悊鍛�",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-            ip: "221.182.31.12",
-          },
-          {
-            date: "2022-08-05",
-            username: "绠$悊鍛�",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-            ip: "221.182.31.12",
-          },
-          {
-            date: "2022-08-05",
-            username: "绠$悊鍛�",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-            ip: "221.182.31.12",
-          },
-          {
-            date: "2022-08-05",
-            username: "绠$悊鍛�",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-            ip: "221.182.31.12",
-          },
-          {
-            date: "2022-08-05",
-            username: "绠$悊鍛�",
-            ownedSystem: "",
-            largeModuleName: "杩愮淮鐩戞帶",
-            smallModuleName: "璧勬簮鎿嶄綔鏃ュ織",
-            resourceName: "",
-            operationType: "鏌ヨ",
-            ip: "221.182.31.12",
-          },
-        ],
-      };
+    treeData(source) {
+      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
+      return cloneData.filter((father) => {
+        // 寰幆鎵�鏈夐」
+        let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
+        branchArr.length > 0 ? (father.children = branchArr) : ''; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
+      });
     },
-    methods: {
-      handleSizeChange(val) {
-        console.log(`姣忛〉 ${val} 鏉);
-      },
-      handleCurrentChange(val) {
-        console.log(`褰撳墠椤�: ${val}`);
-      },
-      onSubmit() {
-        console.log("submit!");
-      },
-      resetForm(formName) {
+    append(node, data) {
+      this.dialogFormVisible = true;
+      this.ruleForm.pid = data.id;
+      this.ruleForm.orderNum = node.childNodes.length + 1;
+      this.ruleForm.level = data.level + 1;
+      // console.log(data);
+      // console.log(node);
+    },
+    resetForm(formName) {
+      this.dialogFormVisible = false;
+      this.$nextTick(() => {
+        this.ruleForm = {};
         this.$refs[formName].resetFields();
-      },
+      });
     },
-    created() {},
-  };
-  </script>
-  <style lang="less" scoped>
-  //@import url(); 寮曞叆鍏叡css绫�
-  .logLog_box {
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          // console.log(this.ruleForm);
+          this.fullscreenLoading = true;
+          insertDep(this.ruleForm)
+            .then((res) => {
+              setTimeout(() => {
+                this.fullscreenLoading = false;
+                if (res.code == 200) {
+                  this.$message({
+                    message: '娣诲姞鎴愬姛',
+                    type: 'success',
+                  });
+                  this.getMenuTree();
+                  this.itemdetail = {};
+                  this.ruleForm = {};
+                  this.dialogFormVisible = false;
+                  this.$refs[formName].resetFields();
+                }
+              }, 500);
+            })
+            .catch((res) => {
+              this.itemdetail = {};
+              this.$message.error('娣诲姞澶辫触');
+              this.fullscreenLoading = false;
+              console.log(res);
+            });
+        } else {
+          // alert("鐩綍鍚嶇О涓嶈兘涓虹┖");
+          return false;
+        }
+      });
+    },
+    remove(node, data) {
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ヨ妭鐐�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      })
+        .then(() => {
+          //鍏勫紵閲嶆柊鎺掑簭
+          const parent = node.parent;
+          const children = parent.data.children || parent.data;
+          children.splice(data.orderNum - 1, 1);
+          children.forEach((item, index) => {
+            item.orderNum = index + 1;
+          });
+
+          this.traverseArr(data); //鑾峰彇鍒犻櫎鐨勫瓙ID
+          this.delChildIDs.push(data.id); //瑕佸垹闄ょ殑鍏ㄩ儴ID
+          let delIDs = this.delChildIDs;
+          Promise.all([
+            deleteDep({ ids: delIDs.toString() }),
+            updateDepTrees(children),
+          ])
+            .then((res) => {
+              console.log(res);
+              if (res[0].code == 200 && res[1].code == 200) {
+                this.$message({
+                  type: 'success',
+                  message: '鍒犻櫎鎴愬姛!',
+                });
+                this.getMenuTree();
+                this.itemdetail = {};
+              } else if (res[0].code == 200) {
+                this.getMenuTree();
+                this.$message.error('鍒犻櫎鎴愬姛锛屼綅缃皟鏁村け璐�');
+              } else if (res[1].code == 200) {
+                this.getMenuTree();
+                this.$message.error('鍒犻櫎澶辫触,浣嶇疆璋冩暣鎴愬姛');
+              } else {
+                this.getMenuTree();
+                this.$message.error('鍒犻櫎澶辫触');
+              }
+            })
+            .catch(() => {
+              this.$message.error('鍒犻櫎澶辫触');
+              this.itemdetail = {};
+            });
+
+          //閲嶇疆瑕佸垹闄ょ殑瀛怚D
+          this.delChildIDs = [];
+        })
+        .catch(() => {
+          this.$message('宸插彇娑堝垹闄�');
+        });
+      // this.dialogMessage="鏄惁鍒犻櫎"
+      // this.dialogFlag = 1;
+      // this.dialogFrom ={
+      //   node:node,
+      //   val:data
+      // }
+      //   this.dialogVisible=true;//鐩綍鏍戞洿鏀瑰脊绐�
+      // const parent = node.parent;
+      // const children = parent.data.children || parent.data;
+      // const index = children.findIndex((d) => d.id === data.id);
+      // let res = children.splice(index, 1);
+      // // console.log(res);
+      // // console.log(data);
+      // console.log(this.flaten(res));
+    },
+    traverseArr(obj) {
+      if (obj.children) {
+        return obj.children.forEach((item) => {
+          // console.log(item.id + "---" + item.name);
+          // this.delChildID += "id=" + item.id + "&";
+          this.delChildIDs.push(item.id);
+          this.traverseArr(item);
+        });
+      }
+      return;
+    },
+    flaten(arr) {
+      return arr.reduce((p, v, i) => {
+        for (let i = 0; i < p.length; i++) {
+          if (p[i].children) {
+            delete p[i].children;
+          }
+        }
+        return p.concat(v.children ? this.flaten(v.children).concat(v) : v);
+      }, []);
+    },
+    handleDragStart(node, ev) {
+      this.old_depData = JSON.parse(JSON.stringify(this.depList)); //灏嗗浠界殑dir閲嶆柊璧嬪��
+    },
+    handleDrop(draggingNode, dropNode, dropType, ev) {
+      this.$confirm('姝ゆ搷浣滃皢淇濆瓨鐩綍鏇存敼, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      })
+        .then(() => {
+          //鐖惰妭鐐�
+          let data = dropType != 'inner' ? dropNode.parent.data : dropNode.data;
+          // 鐖惰妭鐐逛腑鍏ㄩ儴瀛愯妭鐐�
+          let nodeData =
+            dropNode.level == 1 && dropType != 'inner' ? data : data.children;
+          //鍙樻洿鑺傜偣
+          // console.log(nodeData);
+          nodeData.forEach((item, i) => {
+            if (dropType != 'inner') {
+              if (draggingNode.data.pid === dropNode.data.pid) {
+                item.pid = item.pid;
+              } else {
+                item.pid = dropNode.data.pid;
+              }
+            } else {
+              item.pid = data.id;
+            }
+            item.orderNum = i + 1;
+          });
+          // console.log(nodeData);
+          //鏇存柊鍘熷鏁翠綋鏁版嵁
+          let arr = [];
+          this.oriData.forEach((e) => {
+            nodeData.forEach((item) => {
+              if (item.id === e.id) e = item;
+            });
+            arr.push(e);
+          });
+          this.newData = arr;
+          this.sendChange();
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '宸插彇娑堟洿鏀�',
+          });
+          this.depList = this.old_depData; //灏嗗浠界殑dir閲嶆柊璧嬪��
+        });
+    },
+    sendChange() {
+      updateDepTrees(this.newData)
+        .then((res) => {
+          if (res.code == 200) {
+            this.getMenuTree();
+            return;
+          } else {
+            alert('璋冩暣澶辫触锛岃閲嶈瘯锛�');
+          }
+        })
+        .catch(() => {
+          alert('淇敼澶辫触锛岃閲嶈瘯锛�');
+        });
+    },
+    handleNodeClick(data) {
+      // console.log(data);
+      this.backUpData = JSON.stringify(data);
+      this.itemdetail = JSON.parse(JSON.stringify(data));
+    },
+    updDep(formName) {
+      this.$nextTick(() => {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            this.fullscreenLoading = true;
+            updateDepTree(this.itemdetail)
+              .then((res) => {
+                setTimeout(() => {
+                  this.fullscreenLoading = false;
+                  if (res.code == 200) {
+                    this.getMenuTree();
+                    this.itemdetail = {};
+                    this.dialogFormVisible = false;
+                  }
+                }, 500);
+              })
+              .catch((res) => {
+                alert('淇敼澶辫触锛岃閲嶈瘯锛�');
+                this.fullscreenLoading = false;
+              });
+          } else {
+            return false;
+          }
+        });
+      });
+    },
+    reset() {
+      this.$refs[formName].resetFields();
+      if (this.backUpData != '') {
+        this.itemdetail = JSON.parse(this.backUpData);
+      }
+    },
+    showPermsMenu(res) {
+      switch (res.tag) {
+        case '/delete':
+          this.menuStatus.delete = true;
+          break;
+        case '/insert':
+          this.menuStatus.insert = true;
+          break;
+        case '/update':
+          this.menuStatus.update = true;
+          break;
+      }
+    },
+  },
+  mounted() {
+    this.getDepTree();
+  },
+  created() {
+    var val = this.$store.state.currentPerms;
+    var permsEntity = this.$store.state.permsEntity;
+    for (var i = 0; i < permsEntity.length; i++) {
+      if (permsEntity[i].perms == val) {
+        this.showPermsMenu(permsEntity[i]);
+      }
+    }
+  },
+};
+</script>
+<style lang="less" scoped>
+//@import url(); 寮曞叆鍏叡css绫�
+.menuSettings_box {
+  border-radius: 10px;
+  height: 100%;
+  padding: 10px;
+  box-sizing: border-box;
+  display: flex;
+  .menuSettings_tree {
+    position: relative;
+    width: 344px;
+    height: 100%;
     background: rgb(240, 242, 245);
+    padding: 20px;
     border-radius: 10px;
+    box-sizing: border-box;
+    overflow: auto;
+    .saveBtn {
+      position: absolute;
+      left: 250px;
+      top: 23px;
+    }
+    .depTreeBox {
+      height: 88%;
+      width: 100%;
+      overflow: auto;
+      .el-tree {
+        background: transparent;
+        font-size: 15px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #000000;
+        /deep/ .el-tree-node {
+          padding-top: 10px;
+          // padding-bottom: 10px;
+        }
+        /deep/ .el-tree-node:focus > .el-tree-node__content {
+          background-color: #b9b9b9;
+        }
+        /deep/ .el-tree-node__content:hover {
+          background-color: rgb(153, 153, 153);
+        }
+        .btnBox {
+          margin: 0 10px 0 5px;
+          .el-button + .el-button {
+            margin-left: 5px;
+          }
+        }
+      }
+    }
+  }
+  .itemSettings {
+    width: calc(100% - 344px);
+    border-radius: 10px;
+    background: rgb(240, 242, 245);
+    margin-left: 10px;
     height: 100%;
     padding: 10px;
     box-sizing: border-box;
-    .el-input {
-      width: 300px;
-    }
-    .inquire {
-      height: 110px;
-      overflow: auto;
-      padding: 10px;
-      margin-top: 20px;
+    .title_box {
       background: #fff;
-      border-radius: 5px;
+      padding: 10px;
+      margin-bottom: 24px;
+      display: flex;
+      border-radius: 10px;
       border: 1px solid rgb(202, 201, 204);
-      margin-bottom: 20px;
-      .el-form-item {
-        margin: 7px;
+      box-sizing: border-box;
+    }
+    .form_box {
+      border: 1px solid rgb(202, 201, 204);
+      border-radius: 10px;
+      background: #fff;
+      padding-top: 30px;
+      box-sizing: border-box;
+      width: 100%;
+      .el-input,
+      /deep/ .el-textarea {
+        width: 400px;
+      }
+      .btnBox {
+        margin: 0 270px 20px;
+        width: 200px;
+        display: flex;
+        justify-content: space-between;
       }
     }
-    .table_box {
-      height: 65%;
-      padding: 10px;
-      background: #fff;
-      border-radius: 5px;
-      border: 1px solid rgb(202, 201, 204);
-    }
-    .text-center {
-      text-align: center;
-    }
   }
-  </style>
-  
\ No newline at end of file
+  /deep/ .el-dialog__body {
+    padding: 0 30px 0 0;
+  }
+}
+</style>

--
Gitblit v1.9.3