فهرست منبع

修改bug

修改bug
dangyunlong 3 هفته پیش
والد
کامیت
f2750fba44
2فایلهای تغییر یافته به همراه475 افزوده شده و 473 حذف شده
  1. 2 2
      src/views/login/index.vue
  2. 473 471
      src/views/menu/menulist.vue

+ 2 - 2
src/views/login/index.vue

@@ -6,8 +6,8 @@
                 <div class="titleBox">
                     <div class="titleEnglish">Galactic Management System</div>
                     <div class="titleChinaeseBox">
-                        <span class="titleChinasesTop">中农兴业<br></span>
-                        <span class="titleChinasesBottom">星系化管理系统</span>
+                        <span class="titleChinasesTop">政讯通<br></span>
+                        <span class="titleChinasesBottom">管理系统</span>
                     </div>
                 </div>
                 <!--背景颜色-->

+ 473 - 471
src/views/menu/menulist.vue

@@ -1,78 +1,101 @@
 <template>
-  <div class="mainBox">
-    <!--搜索功能 start------------------------------------------------------------>
-    <div class="layerBoxNoBg">
-      <div>
-        <el-button type="primary" @click="openWindow">添加菜单</el-button>
+    <div class="mainBox">
+      <!--搜索功能 start------------------------------------------------------------>
+      <div class="layerBoxNoBg">
+        <div>
+          <el-button type="primary" @click="openWindow">添加菜单</el-button>
+        </div>
+        <div>
+          
+        </div>
       </div>
-      <div>
-        
+      <!--搜索功能 end------------------------------------------------------------>
+  
+      <!--表格内容 start------------------------------------------------------------>
+      <div class="layerBox">
+        <tableTitle :name="tableDivTitle"/>
+        <el-row>
+          <template>
+            <!--设置default-expand-all将展开全部-->
+            <el-table :data="tableData" style="width: 100%;margin-bottom: 20px;" row-key="id" border default-expand :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
+              <el-table-column
+                prop="id"
+                label="id"
+                sortable
+                width="180">
+              </el-table-column>
+              <el-table-column
+                prop="label"
+                label="菜单名称"
+                sortable
+                width="180">
+              </el-table-column>
+              <el-table-column
+                prop="url"
+                label="路由地址">
+              </el-table-column>
+              <el-table-column fixed="right" label="操作" width="200"  header-align="center">
+                <template slot-scope="scope">
+                  <div class="listBtnBox">
+                    <div class="listDeleteBtn" @click="deleteRow(scope.row.id)"><i class="el-icon-delete"></i>删除</div>
+                    <div class="listEditBtn" @click="editRow(scope.row)"><i class="el-icon-edit-outline"></i>编辑</div>
+                  </div>
+                </template>
+              </el-table-column>
+            </el-table>
+          </template> 
+        </el-row>
       </div>
-    </div>
-    <!--搜索功能 end------------------------------------------------------------>
-
-    <!--表格内容 start------------------------------------------------------------>
-    <div class="layerBox">
-      <tableTitle :name="tableDivTitle"/>
-      <el-row>
-        <template>
-          <!--设置default-expand-all将展开全部-->
-          <el-table :data="tableData" style="width: 100%;margin-bottom: 20px;" row-key="id" border default-expand :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
-            <el-table-column
-              prop="id"
-              label="id"
-              sortable
-              width="180">
-            </el-table-column>
-            <el-table-column
-              prop="label"
-              label="菜单名称"
-              sortable
-              width="180">
-            </el-table-column>
-            <el-table-column
-              prop="url"
-              label="路由地址">
-            </el-table-column>
-            <el-table-column fixed="right" label="操作" width="200"  header-align="center">
-              <template slot-scope="scope">
-                <div class="listBtnBox">
-                  <div class="listDeleteBtn" @click="deleteRow(scope.row.id)"><i class="el-icon-delete"></i>删除</div>
-                  <div class="listEditBtn" @click="editRow(scope.row)"><i class="el-icon-edit-outline"></i>编辑</div>
+      <!--表格内容 end------------------------------------------------------------>
+  
+      <!--弹出框 start------------------------------------------------------------>
+      <el-dialog :title="editId ? '编辑菜单' : '添加菜单'" :visible.sync="windowStatus" :close-on-click-modal="false">
+        <el-form :model="form" ref="form" :rules="formRules" label-position="left">
+          <div class="formDiv">
+            <el-form-item label="菜单名称" :label-width="formLabelWidth" prop="label" class="custom-align-right">
+              <el-input v-model="form.label" autocomplete="off" placeholder="请输入菜单名称"></el-input>
+            </el-form-item>
+            <el-form-item label="是否为顶级菜单" :label-width="formLabelWidth" class="custom-align-right">
+              <el-radio v-model="radio" label="1">是</el-radio>
+              <el-radio v-model="radio" label="2">否</el-radio>
+            </el-form-item>
+            <el-form-item label="菜单路由" :label-width="formLabelWidth" prop="" class="custom-align-right" v-if="radio === '2'">
+              <el-input v-model="form.url" autocomplete="off" placeholder="请输入菜单路由"></el-input>
+            </el-form-item>
+            <el-form-item label="父级菜单名称" :label-width="formLabelWidth" prop="pid_arr" class="custom-align-right" v-if="radio === '2'">
+              <el-cascader :key="parentKey" v-model="form.pid_arr" :props="{checkStrictly:true}" :options="pidArrData" clearable></el-cascader>
+            </el-form-item>
+            <el-form-item label="默认图标" :label-width="formLabelWidth" prop="icon" class="custom-align-right" v-if="radio == '1'">
+               <!--图片上传组件 start ------------------------------------------------------------>
+                <div class="uploaderBox">
+                  <div class="avatar-upload-container" @mouseenter="hovering = true" @mouseleave="hovering = false">
+                    <!-- 上传组件 -->
+                    <el-upload class="avatar-uploader" action="#" :show-file-list="false" :before-upload="beforeAvatarUpload">
+                      <!-- 预览图片 -->
+                      <img v-if="iconSrc" :src="iconSrc" class="avatar">
+                      <div v-else class="chooseImgDiv">
+                        <div>
+                          <img src="@/assets/public/upload/noImage.png">
+                          <div>选择图片</div>
+                        </div>
+                      </div>
+                    </el-upload>
+                    <!-- 删除按钮,当鼠标悬浮时显示 -->
+                    <div v-if="hovering && iconSrc" class="delete-button" @click="handleDelete">
+                      <i class="el-icon-delete"></i>
+                    </div>
+                  </div>
                 </div>
-              </template>
-            </el-table-column>
-          </el-table>
-        </template> 
-      </el-row>
-    </div>
-    <!--表格内容 end------------------------------------------------------------>
-
-    <!--弹出框 start------------------------------------------------------------>
-    <el-dialog :title="editId ? '编辑菜单' : '添加菜单'" :visible.sync="windowStatus" :close-on-click-modal="false">
-      <el-form :model="form" ref="form" :rules="formRules" label-position="left">
-        <div class="formDiv">
-          <el-form-item label="菜单名称" :label-width="formLabelWidth" prop="label" class="custom-align-right">
-            <el-input v-model="form.label" autocomplete="off" placeholder="请输入菜单名称"></el-input>
-          </el-form-item>
-          <el-form-item label="是否为顶级菜单" :label-width="formLabelWidth" class="custom-align-right">
-            <el-radio v-model="radio" label="1">是</el-radio>
-            <el-radio v-model="radio" label="2">否</el-radio>
-          </el-form-item>
-          <el-form-item label="菜单路由" :label-width="formLabelWidth" prop="" class="custom-align-right" v-if="radio === '2'">
-            <el-input v-model="form.url" autocomplete="off" placeholder="请输入菜单路由"></el-input>
-          </el-form-item>
-          <el-form-item label="父级菜单名称" :label-width="formLabelWidth" prop="pid_arr" class="custom-align-right" v-if="radio === '2'">
-            <el-cascader :key="parentKey" v-model="form.pid_arr" :props="{checkStrictly:true}" :options="pidArrData" clearable></el-cascader>
-          </el-form-item>
-          <el-form-item label="默认图标" :label-width="formLabelWidth" prop="icon" class="custom-align-right" v-if="radio == '1'">
-             <!--图片上传组件 start ------------------------------------------------------------>
+                <!--图片上传组件 end ------------------------------------------------------------>
+            </el-form-item>
+            <el-form-item label="选中时图标" :label-width="formLabelWidth" prop="selected_icon" class="custom-align-right" v-if="radio == '1'">
+              <!--图片上传组件 start ------------------------------------------------------------>
               <div class="uploaderBox">
-                <div class="avatar-upload-container" @mouseenter="hovering = true" @mouseleave="hovering = false">
+                <div class="avatar-upload-container" @mouseenter="hoveringTwo = true" @mouseleave="hoveringTwo = false">
                   <!-- 上传组件 -->
-                  <el-upload class="avatar-uploader" action="#" :show-file-list="false" :before-upload="beforeAvatarUpload">
+                  <el-upload class="avatar-uploader" action="#" :show-file-list="false" :before-upload="beforeAvatarUploadTwo">
                     <!-- 预览图片 -->
-                    <img v-if="iconSrc" :src="iconSrc" class="avatar">
+                    <img v-if="iconSrcSelect" :src="iconSrcSelect" class="avatar">
                     <div v-else class="chooseImgDiv">
                       <div>
                         <img src="@/assets/public/upload/noImage.png">
@@ -81,440 +104,419 @@
                     </div>
                   </el-upload>
                   <!-- 删除按钮,当鼠标悬浮时显示 -->
-                  <div v-if="hovering && iconSrc" class="delete-button" @click="handleDelete">
+                  <div v-if="hoveringTwo && iconSrcSelect" class="delete-button" @click="handleDeleteTwo">
                     <i class="el-icon-delete"></i>
                   </div>
                 </div>
               </div>
               <!--图片上传组件 end ------------------------------------------------------------>
-          </el-form-item>
-          <el-form-item label="选中时图标" :label-width="formLabelWidth" prop="selected_icon" class="custom-align-right" v-if="radio == '1'">
-            <!--图片上传组件 start ------------------------------------------------------------>
-            <div class="uploaderBox">
-              <div class="avatar-upload-container" @mouseenter="hoveringTwo = true" @mouseleave="hoveringTwo = false">
-                <!-- 上传组件 -->
-                <el-upload class="avatar-uploader" action="#" :show-file-list="false" :before-upload="beforeAvatarUploadTwo">
-                  <!-- 预览图片 -->
-                  <img v-if="iconSrcSelect" :src="iconSrcSelect" class="avatar">
-                  <div v-else class="chooseImgDiv">
-                    <div>
-                      <img src="@/assets/public/upload/noImage.png">
-                      <div>选择图片</div>
-                    </div>
-                  </div>
-                </el-upload>
-                <!-- 删除按钮,当鼠标悬浮时显示 -->
-                <div v-if="hoveringTwo && iconSrcSelect" class="delete-button" @click="handleDeleteTwo">
-                  <i class="el-icon-delete"></i>
-                </div>
-              </div>
-            </div>
-            <!--图片上传组件 end ------------------------------------------------------------>
-          </el-form-item>
-          <el-form-item label="权重" :label-width="formLabelWidth" prop="sort" class="custom-align-right">
-            <el-input v-model="form.sort" autocomplete="off" placeholder="请输入权重"></el-input>
-          </el-form-item>
-        </div>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <div>
-          <el-button @click="closeWindow">取 消</el-button>
-          <el-button type="primary" @click="editToServe" v-if="editBtn==true">编辑</el-button>
-          <el-button type="primary" @click="addToServe" v-else>提交</el-button>
+            </el-form-item>
+            <el-form-item label="权重" :label-width="formLabelWidth" prop="sort" class="custom-align-right">
+              <el-input v-model="form.sort" autocomplete="off" placeholder="请输入权重"></el-input>
+            </el-form-item>
+          </div>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <div>
+            <el-button @click="closeWindow">取 消</el-button>
+            <el-button type="primary" @click="editToServe" v-if="editBtn==true">编辑</el-button>
+            <el-button type="primary" @click="addToServe" v-else>提交</el-button>
+          </div>
         </div>
-      </div>
-    </el-dialog>
-    <!--弹出框 end------------------------------------------------------------>
-  </div>
-</template>
-
-<script>
-//表格标题
-import openWindow from '@/utils/open-window';
-import tableTitle from './components/tableTitle';
-//引入公用样式
-import '@/styles/global.less';
-
-export default {
-  components: {
-    tableTitle,//表格标题
-  },
-  data() {
-    //0.全局操作 start ------------------------------------------------------------>
-    const validateEmpty = (rule,value,callback) => {
-      if (value.length == 0) {
-        callback(new Error('该项不能为空!'))
-      } else {
-        callback()
-      }
-    }
-    const validateArray = (rule,value,callback) => {
-      if (value.length == 0) {
-        callback(new Error('该项不能为空!'))
-      } else {
-        callback()
-      }
-    }
-     //0.全局操作 end ------------------------------------------------------------>
-    return {
-      //1.列表和分页相关 start ------------------------------------------------------------>
-      tableDivTitle:"菜单列表",
-      tableData: [],//内容列表
-      editId:"",//编辑id 
-      radio: '2',//是否为顶级菜单 1=是 2=否
-      //分页相关 end ------------------------------------------------------------>
-
-      //2.弹出框设置 start ------------------------------------------------------------>
-      //是否显示弹出窗口
-      windowStatus:false,
-      formLabelWidth: '120px',
-      editBtn:false,//当显示编辑按钮的时候,就不显示提交
-      //弹出框设置 end ------------------------------------------------------------>
-
-      //3.弹出框中的表单设置 start ------------------------------------------------------------>
-      form: {
-        label:"",//菜单名称
-        url:"",//菜单路由地址
-        icon:"",//默认图标
-        selected_icon:"",//选中时图标
-        sort:"",//权重
-        pid_arr:[]//父级id
-      },
-      //通过api获的的菜单列表
-      parentKey:0,
-      pidArrData:[],
-      //3.1 上传默认图标
-      iconSrc:'',//默认图标缩略图
-      hovering: false,//显示删除图标
-      iconSrcSelect:'',//选中时图标缩略图
-      hoveringTwo: false,//显示删除图标
-      //3.2 表单验证规则
-      formRules: {
-        label:[{required:true,trigger:'blur',validator:validateEmpty}],
-        url:[{required:true,trigger:'blur',validator:validateEmpty}],
-        icon:[{required:true,trigger:'blur',validator:validateEmpty}],
-        selected_icon:[{required:true,trigger:'blur',validator:validateEmpty}],
-        sort:[{required:true,trigger:'blur',validator:validateEmpty}],
-        pid_arr:[{required:true,trigger:'blur',validator:validateArray}],
-      },
-      //弹出框中的表单设置 end ------------------------------------------------------------>
-    }
-  },
-  methods: {
-    //1.列表和分页相关 start ------------------------------------------------------------>
-    //1.1 开始请求列表信息方法
-    getData(){
-      this.$store.dispatch('menu/getMenuList').then(res=> {
-        this.tableData = res.data
-        console.log(this.tableData)
-        //格式化以后放入级联选择器
-        let arrData = this.transformData(res.data)
-        this.pidArrData = arrData;
-      }).catch(() => {
-        this.$message({
-          type: 'warning',
-          message: '网络错误,请重试!'
-        });
-      })
+      </el-dialog>
+      <!--弹出框 end------------------------------------------------------------>
+    </div>
+  </template>
+  
+  <script>
+  //表格标题
+  import openWindow from '@/utils/open-window';
+  import tableTitle from './components/tableTitle';
+  //引入公用样式
+  import '@/styles/global.less';
+  
+  export default {
+    components: {
+      tableTitle,//表格标题
     },
-    //1.2格式化菜单列表
-    transformData(arrData) {
-      let that = this;
-      return arrData.map(item => {
-        // 创建一个新的对象,替换键名
-        let newItem = {
-          label: item.label,
-          value: item.id,
-        };
-        // 如果有 children,则递归处理 children 数组
-        if (item.children && item.children.length > 0) {
-          newItem.children = that.transformData(item.children);
+    data() {
+      //0.全局操作 start ------------------------------------------------------------>
+      const validateEmpty = (rule,value,callback) => {
+        if (value.length == 0) {
+          callback(new Error('该项不能为空!'))
+        } else {
+          callback()
         }
-        return newItem;
-      });
+      }
+      const validateArray = (rule,value,callback) => {
+        if (value.length == 0) {
+          callback(new Error('该项不能为空!'))
+        } else {
+          callback()
+        }
+      }
+       //0.全局操作 end ------------------------------------------------------------>
+      return {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        tableDivTitle:"菜单列表",
+        tableData: [],//内容列表
+        editId:"",//编辑id 
+        radio: '2',//是否为顶级菜单 1=是 2=否
+        //分页相关 end ------------------------------------------------------------>
+  
+        //2.弹出框设置 start ------------------------------------------------------------>
+        //是否显示弹出窗口
+        windowStatus:false,
+        formLabelWidth: '120px',
+        editBtn:false,//当显示编辑按钮的时候,就不显示提交
+        //弹出框设置 end ------------------------------------------------------------>
+  
+        //3.弹出框中的表单设置 start ------------------------------------------------------------>
+        form: {
+          label:"",//菜单名称
+          url:"",//菜单路由地址
+          icon:"",//默认图标
+          selected_icon:"",//选中时图标
+          sort:"",//权重
+          pid_arr:[]//父级id
+        },
+        //通过api获的的菜单列表
+        parentKey:0,
+        pidArrData:[],
+        //3.1 上传默认图标
+        iconSrc:'',//默认图标缩略图
+        hovering: false,//显示删除图标
+        iconSrcSelect:'',//选中时图标缩略图
+        hoveringTwo: false,//显示删除图标
+        //3.2 表单验证规则
+        formRules: {
+          label:[{required:true,trigger:'blur',validator:validateEmpty}],
+          url:[{required:true,trigger:'blur',validator:validateEmpty}],
+          icon:[{required:true,trigger:'blur',validator:validateEmpty}],
+          selected_icon:[{required:true,trigger:'blur',validator:validateEmpty}],
+          sort:[{required:true,trigger:'blur',validator:validateEmpty}],
+          pid_arr:[{required:true,trigger:'blur',validator:validateArray}],
+        },
+        //弹出框中的表单设置 end ------------------------------------------------------------>
+      }
     },
-    //1.2 删除内容
-    deleteRow(id){
-      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        console.log("当前删除:" + id)
-        this.$store.dispatch('menu/delMenu',{id:id}).then(res=> {
-          this.getData();
-          if(res.code==200){
-            this.$message({
-              type: 'success',
-              message: '删除成功!'
-            });
-            this.getData();
-          }else{
-            this.$message({
-              type: 'warning',
-              message: '请先删除子菜单!'
-            });
-          }
+    methods: {
+      //1.列表和分页相关 start ------------------------------------------------------------>
+      //1.1 开始请求列表信息方法
+      getData(){
+        this.$store.dispatch('menu/getMenuList').then(res=> {
+          this.tableData = res.data
+          console.log(this.tableData)
+          //格式化以后放入级联选择器
+          let arrData = this.transformData(res.data)
+          this.pidArrData = arrData;
         }).catch(() => {
           this.$message({
             type: 'warning',
             message: '网络错误,请重试!'
           });
         })
-      }).catch(() => {
-        this.$message({
-          type: 'warning',
-          message: '已取消删除'
+      },
+      //1.2格式化菜单列表
+      transformData(arrData) {
+        let that = this;
+        return arrData.map(item => {
+          // 创建一个新的对象,替换键名
+          let newItem = {
+            label: item.label,
+            value: item.id,
+          };
+          // 如果有 children,则递归处理 children 数组
+          if (item.children && item.children.length > 0) {
+            newItem.children = that.transformData(item.children);
+          }
+          return newItem;
         });
-      });
-    },
-    //1.3 回显数据
-    editRow(data){
-      this.editId = data.id;  
-      console.log(data)
-      this.openWindow();
-      this.form.label = data.label;
-      this.form.url = data.url;
-      this.form.icon = data.icon;
-      this.form.selected_icon = data.selected_icon;
-      this.form.sort = data.sort;
-      //回显父级
-      if(data.pid==0){
-        //如果是顶级菜单
-        this.radio = "1";//是顶级菜单
-      }else{
-        this.radio = "2";//不是顶级菜单
-        //如果不是顶级菜单 显示到选择器中
-        this.parentKey += 1;
-        console.log(this.pidArrData)
-        console.log(data.pid)
-        //将JSON字符串转换为数组
-        let pidArr = JSON.parse(data.pid_arr);
-        if(pidArr.length==1){ // 如果只有一个父级,直接赋值
-          this.form.pid_arr = [data.pid];
-        }else{ // 否则,赋值最后一个父级
-          this.form.pid_arr = pidArr[pidArr.length-1];
-        }
-      }
-      
-      //回显示icon
-      this.iconSrc = data.icon;
-      this.iconSrcSelect = data.selected_icon;
-      //显示编辑按钮
-      this.editBtn = true;
-    },
-    //提交
-    addToServe(){
-      //先判断是不是顶级菜单
-      if(this.radio=="1"){
-        //如果是顶级菜单
-        this.form.pid_arr = [0];
-      }
-
-      //执行验证
-      this.$refs.form.validate(valid => {
-        if (valid) {
-          this.$store.dispatch('menu/addMenu',this.form).then(res=> {
+      },
+      //1.2 删除内容
+      deleteRow(id){
+        this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          console.log("当前删除:" + id)
+          this.$store.dispatch('menu/delMenu',{id:id}).then(res=> {
+            this.getData();
             if(res.code==200){
               this.$message({
                 type: 'success',
-                message: '成功添加路由!'
+                message: '删除成功!'
               });
               this.getData();
-              this.closeWindow();
+            }else{
+              this.$message({
+                type: 'warning',
+                message: '请先删除子菜单!'
+              });
             }
           }).catch(() => {
             this.$message({
               type: 'warning',
-              message: '网络错误!'
+              message: '网络错误,请重试!'
             });
+          })
+        }).catch(() => {
+          this.$message({
+            type: 'warning',
+            message: '已取消删除'
           });
+        });
+      },
+      //1.3 回显数据
+      editRow(data){
+        this.editId = data.id;  
+        console.log(data)
+        this.openWindow();
+        this.form.label = data.label;
+        this.form.url = data.url;
+        this.form.icon = data.icon;
+        this.form.selected_icon = data.selected_icon;
+        this.form.sort = data.sort;
+        //回显父级
+        if(data.pid==0){
+          //如果是顶级菜单
+          this.radio = "1";//是顶级菜单
+        }else{
+          this.radio = "2";//不是顶级菜单
+          //如果不是顶级菜单 显示到选择器中
+          this.parentKey += 1;
+          console.log(this.pidArrData)
+          console.log(data.pid)
+          //将JSON字符串转换为数组
+          let pidArr = JSON.parse(data.pid_arr);
+          if(pidArr.length==1){ // 如果只有一个父级,直接赋值
+            this.form.pid_arr = [data.pid];
+          }else{ // 否则,赋值最后一个父级
+            //this.form.pid_arr = pidArr[pidArr.length-1];
+            this.form.pid_arr = pidArr;
+          }
         }
-      })
-    },
-    //修改
-    editToServe(){
-        //是否为顶级菜单 1=是 2=否
+        
+        //回显示icon
+        this.iconSrc = data.icon;
+        this.iconSrcSelect = data.selected_icon;
+        //显示编辑按钮
+        this.editBtn = true;
+      },
+      //提交
+      addToServe(){
+        //先判断是不是顶级菜单
         if(this.radio=="1"){
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    let data = this.form;
-                    data.url = "";
-                    data.pid_arr = [0];
-                    data.id = this.editId;
-                    this.$store.dispatch('menu/updateMenu',data).then(res=> {
-                    if(res.code==200){
-                        this.$message({
-                        type: 'success',
-                        message: '路由状态已修改!'
-                        });
-                        this.getData();
-                        this.closeWindow();
-                    }
-                    }).catch(() => {
-                    this.$message({
-                        type: 'warning',
-                        message: '操作已取消!'
-                    });
-                    });
-                }
-            })
-        }else{
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    let data = this.form;
-                    data.id = this.editId;
-                    this.$store.dispatch('menu/updateMenu',data).then(res=> {
-                    if(res.code==200){
-                        this.$message({
-                        type: 'success',
-                        message: '路由状态已修改!'
-                        });
-                        this.getData();
-                        this.closeWindow();
-                    }
-                    }).catch(() => {
-                    this.$message({
-                        type: 'warning',
-                        message: '操作已取消!'
-                    });
-                    });
-                }
-            })
+          //如果是顶级菜单
+          this.form.pid_arr = [0];
         }
-    },
-    //列表和分页相关 end ------------------------------------------------------------>
-
-
-    //2.弹出框设置 start ------------------------------------------------------------>
-    //2.1 打开弹出框
-    openWindow() {
-      this.windowStatus = true;
-      this.clearToServe();
-      //显示添加按钮
-      this.editBtn = false;
-    },
-    //2.2 关闭弹出框
-    closeWindow(){
-      this.windowStatus = false;
-      this.clearToServe();
-    },
-    //2.3 清理弹出框
-    clearToServe(){
-      this.form.label = "";
-      this.form.url = "";
-      this.form.icon = "";
-      this.form.selected_icon = "";
-      this.form.sort = "";
-      this.form.pid_arr = [];
-      //this.pidArrData=[];
-      this.iconSrc = "";
-      this.hovering = false;
-      this.iconSrcSelect = "";
-      this.hoveringTwo = false;
-      this.editBtn = false;
-    },
-    //弹出框设置 end ------------------------------------------------------------>
-
-    //3.添加菜单 start ------------------------------------------------------------>
-    //3.1 上传默认图标
-    beforeAvatarUpload(file) {
-      const isJPG = file.type === 'image/jpeg';
-      const isPNG = file.type === 'image/png';
-      const isLt2M = file.size / 1024 / 1024 < 2;
-
-      if (!isJPG && !isPNG) {
-        this.$message.error('上传图片只能是 JPG 或 PNG 格式!');
-        return false;
-      }
-      if (!isLt2M) {
-        this.$message.error('上传图片大小不能超过 2MB!');
-        return false;
-      }
-
-      const formData = new FormData();
-      formData.append('file', file);
-
-      this.$store.dispatch('pool/uploadFile',formData).then(res=> {
-        this.iconSrc = res.data.imgUrl;//显示缩略图
-        this.form.icon = res.data.imgUrl;//提供表单地址
-        console.log(res.data.imgUrl)
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '网络错误,请重试!'
-        });
-      })
-
-      // 阻止默认的上传行为
-      return false;
-    },
-    handleDelete() {
-      // 删除图片
-      this.form.icon = ''; //清空选中的图片  
-      this.iconSrc = ''; // 清空图片 URL
-    },
-    //3.2 上传选中时图标
-    beforeAvatarUploadTwo(file) {
-      const isJPG = file.type === 'image/jpeg';
-      const isPNG = file.type === 'image/png';
-      const isLt2M = file.size / 1024 / 1024 < 2;
-
-      if (!isJPG && !isPNG) {
-        this.$message.error('上传图片只能是 JPG 或 PNG 格式!');
+        //添加时无需id
+        delete this.form.id;
+        //执行验证
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            this.$store.dispatch('menu/addMenu',this.form).then(res=> {
+              if(res.code==200){
+                this.$message({
+                  type: 'success',
+                  message: '成功添加路由!'
+                });
+                this.getData();
+                this.closeWindow();
+              }
+            }).catch(() => {
+              this.$message({
+                type: 'warning',
+                message: '网络错误!'
+              });
+            });
+          }
+        })
+      },
+      //修改
+      editToServe(){
+          //是否为顶级菜单 1=是 2=否
+          if(this.radio=="1"){
+              this.$refs.form.validate(valid => {
+                  if (valid) {
+                      let data = this.form;
+                      data.url = "";
+                      data.pid_arr = [0];
+                      data.id = this.editId;
+                      this.$store.dispatch('menu/updateMenu',data).then(res=> {
+                      if(res.code==200){
+                          this.$message({
+                          type: 'success',
+                          message: '路由状态已修改!'
+                          });
+                          this.getData();
+                          this.closeWindow();
+                      }
+                      }).catch(() => {
+                      this.$message({
+                          type: 'warning',
+                          message: '操作已取消!'
+                      });
+                      });
+                  }
+              })
+          }else{
+              this.$refs.form.validate(valid => {
+                  if (valid) {
+                      let data = this.form;
+                      data.id = this.editId;
+                      this.$store.dispatch('menu/updateMenu',data).then(res=> {
+                      if(res.code==200){
+                          this.$message({
+                          type: 'success',
+                          message: '路由状态已修改!'
+                          });
+                          this.getData();
+                          this.closeWindow();
+                      }
+                      }).catch(() => {
+                      this.$message({
+                          type: 'warning',
+                          message: '操作已取消!'
+                      });
+                      });
+                  }
+              })
+          }
+      },
+      //列表和分页相关 end ------------------------------------------------------------>
+  
+  
+      //2.弹出框设置 start ------------------------------------------------------------>
+      //2.1 打开弹出框
+      openWindow() {
+        this.windowStatus = true;
+        this.clearToServe();
+        //显示添加按钮
+        this.editBtn = false;
+      },
+      //2.2 关闭弹出框
+      closeWindow(){
+        this.windowStatus = false;
+        this.clearToServe();
+      },
+      //2.3 清理弹出框
+      clearToServe(){
+        this.form.label = "";
+        this.form.url = "";
+        this.form.icon = "";
+        this.form.selected_icon = "";
+        this.form.sort = "";
+        this.form.pid_arr = [];
+        //this.pidArrData=[];
+        this.iconSrc = "";
+        this.hovering = false;
+        this.iconSrcSelect = "";
+        this.hoveringTwo = false;
+        this.editBtn = false;
+      },
+      //弹出框设置 end ------------------------------------------------------------>
+  
+      //3.添加菜单 start ------------------------------------------------------------>
+      //3.1 上传默认图标
+      beforeAvatarUpload(file) {
+        const isJPG = file.type === 'image/jpeg';
+        const isPNG = file.type === 'image/png';
+        const isLt2M = file.size / 1024 / 1024 < 2;
+  
+        if (!isJPG && !isPNG) {
+          this.$message.error('上传图片只能是 JPG 或 PNG 格式!');
+          return false;
+        }
+        if (!isLt2M) {
+          this.$message.error('上传图片大小不能超过 2MB!');
+          return false;
+        }
+  
+        const formData = new FormData();
+        formData.append('file', file);
+  
+        this.$store.dispatch('pool/uploadFile',formData).then(res=> {
+          this.iconSrc = res.data.imgUrl;//显示缩略图
+          this.form.icon = res.data.imgUrl;//提供表单地址
+          console.log(res.data.imgUrl)
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '网络错误,请重试!'
+          });
+        })
+  
+        // 阻止默认的上传行为
         return false;
-      }
-      if (!isLt2M) {
-        this.$message.error('上传图片大小不能超过 2MB!');
+      },
+      handleDelete() {
+        // 删除图片
+        this.form.icon = ''; //清空选中的图片  
+        this.iconSrc = ''; // 清空图片 URL
+      },
+      //3.2 上传选中时图标
+      beforeAvatarUploadTwo(file) {
+        const isJPG = file.type === 'image/jpeg';
+        const isPNG = file.type === 'image/png';
+        const isLt2M = file.size / 1024 / 1024 < 2;
+  
+        if (!isJPG && !isPNG) {
+          this.$message.error('上传图片只能是 JPG 或 PNG 格式!');
+          return false;
+        }
+        if (!isLt2M) {
+          this.$message.error('上传图片大小不能超过 2MB!');
+          return false;
+        }
+  
+        const formData = new FormData();
+        formData.append('file', file);
+  
+        this.$store.dispatch('pool/uploadFile',formData).then(res=> {
+          this.iconSrcSelect = res.data.imgUrl;//显示缩略图
+          this.form.selected_icon = res.data.imgUrl;//提供表单地址
+          // 确保 Vue 能够检测到变化
+          this.$forceUpdate();
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '网络错误,请重试!'
+          });
+        })
+  
+        // 阻止默认的上传行为
         return false;
-      }
-
-      const formData = new FormData();
-      formData.append('file', file);
-
-      this.$store.dispatch('pool/uploadFile',formData).then(res=> {
-        this.iconSrcSelect = res.data.imgUrl;//显示缩略图
-        this.form.selected_icon = res.data.imgUrl;//提供表单地址
-        // 确保 Vue 能够检测到变化
-        this.$forceUpdate();
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '网络错误,请重试!'
-        });
-      })
-
-      // 阻止默认的上传行为
-      return false;
-    },
-    handleDeleteTwo() {
-      // 删除图片
-      this.form.selected_icon = ''; //清空选中的图片  
-      this.iconSrcSelect = ''; // 清空图片 URL
+      },
+      handleDeleteTwo() {
+        // 删除图片
+        this.form.selected_icon = ''; //清空选中的图片  
+        this.iconSrcSelect = ''; // 清空图片 URL
+      },
+      //添加菜单 end ------------------------------------------------------------>
+      
     },
-    //添加菜单 end ------------------------------------------------------------>
-    
-  },
-  mounted(){
-    //1.获得初始数据
-    this.getData();
-  }
-}
-</script>
-
-<style scoped lang="less">
-  .layerBoxNoBg {
-    padding:30px 0 0 0;
-  }
-  //执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
-  ::v-deep .custom-form-item > .el-form-item__label {
-    line-height: 140px !important;
-  }
-  ::v-deep .custom-textarea .el-textarea__inner {
-    resize: none; /* 禁止用户拖拽调整大小 */
-  }
-  ::v-deep .custom-align-right .el-form-item__label {
-    text-align: right; /* 设置标签文字右对齐 */
+    mounted(){
+      //1.获得初始数据
+      this.getData();
+    }
   }
-  //执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
-</style>
+  </script>
+  
+  <style scoped lang="less">
+    .layerBoxNoBg {
+      padding:30px 0 0 0;
+    }
+    //执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+    ::v-deep .custom-form-item > .el-form-item__label {
+      line-height: 140px !important;
+    }
+    ::v-deep .custom-textarea .el-textarea__inner {
+      resize: none; /* 禁止用户拖拽调整大小 */
+    }
+    ::v-deep .custom-align-right .el-form-item__label {
+      text-align: right; /* 设置标签文字右对齐 */
+    }
+    //执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
+  </style>