소스 검색

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dev

汪钰 3 년 전
부모
커밋
122d5d1429

+ 5 - 4
ele-admin-template/src/api/system/menu/index.js

@@ -5,15 +5,16 @@ import request from '@/utils/request';
  * @param params 查询条件
  */
 export async function listMenus(params) {
-  const res = await request.get('/system/menu', {
-    params
-  });
-  if (res.data.code === 0) {
+  let par = new URLSearchParams(params)
+  const res = await request.get(`/system/resources/getMenuList?`+par, {});
+  if (res.data.code == 0) {
     return res.data.data;
   }
   return Promise.reject(new Error(res.data.message));
 }
 
+
+//--------------------原系统接口
 /**
  * 添加菜单
  * @param data 菜单信息

+ 47 - 163
ele-admin-template/src/views/system/menu/components/menu-edit.vue

@@ -8,20 +8,22 @@
     :title="isUpdate ? '修改菜单' : '添加菜单'"
     @update:visible="updateVisible"
   >
-    <el-form ref="form" :model="form" :rules="rules" label-width="92px">
-      <el-row :gutter="15">
-        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-          <el-form-item label="上级菜单:">
+    <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="上级菜单:" prop="parentId">
             <ele-tree-select
               clearable
               v-model="form.parentId"
               :data="menuList"
-              label-key="title"
-              value-key="menuId"
+              label-key="name"
+              value-key="id"
               default-expand-all
               placeholder="请选择上级菜单"
             />
           </el-form-item>
+        </el-col>
+        <el-col :span="12">
           <el-form-item label="菜单名称:" prop="title">
             <el-input
               clearable
@@ -30,32 +32,16 @@
             />
           </el-form-item>
         </el-col>
-        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-          <el-form-item label="菜单类型:">
-            <el-radio-group v-model="form.menuType" @change="onMenuTypeChange">
-              <el-radio :label="0">目录</el-radio>
-              <el-radio :label="1">菜单</el-radio>
-              <el-radio :label="2">按钮</el-radio>
-            </el-radio-group>
-          </el-form-item>
-          <el-form-item label="打开方式:">
-            <el-radio-group
-              v-model="form.openType"
-              :disabled="form.menuType === 0 || form.menuType === 2"
-              @change="onOpenTypeChange"
-            >
-              <el-radio :label="0">组件</el-radio>
-              <el-radio :label="1">内链</el-radio>
-              <el-radio :label="2">外链</el-radio>
-            </el-radio-group>
+        <el-col :span="12">
+          <el-form-item label="路由地址:" prop="url">
+            <el-input
+              clearable
+              v-model="form.url"
+              placeholder="请输入路由地址"
+            />
           </el-form-item>
         </el-col>
-      </el-row>
-      <div style="margin: 6px 0 28px 0">
-        <el-divider />
-      </div>
-      <el-row :gutter="15">
-        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
+        <el-col :span="12">
           <el-form-item label="菜单图标:">
             <ele-icon-picker
               v-model="form.icon"
@@ -63,100 +49,30 @@
               :disabled="form.menuType === 2"
             />
           </el-form-item>
-          <el-form-item name="path">
-            <template v-slot:label>
-              <el-tooltip
-                v-if="form.openType === 2"
-                placement="top"
-                content="需要以`http://`、`https://`、`//`开头"
-              >
-                <i class="el-icon-_question"></i>
-              </el-tooltip>
-              <span>
-                {{ form.openType === 2 ? ' 外链地址:' : ' 路由地址:' }}
-              </span>
-            </template>
-            <el-input
-              clearable
-              v-model="form.path"
-              :disabled="form.menuType === 2"
-              :placeholder="pathPlaceholder"
-            />
-          </el-form-item>
-          <el-form-item name="component">
-            <template v-slot:label>
-              <el-tooltip
-                v-if="form.openType === 1"
-                placement="top"
-                content="需要以`http://`、`https://`、`//`开头"
-              >
-                <i class="el-icon-_question"></i>
-              </el-tooltip>
-              <span>
-                {{ form.openType === 1 ? ' 内链地址:' : ' 组件路径:' }}
-              </span>
-            </template>
-            <el-input
-              clearable
-              v-model="form.component"
-              :disabled="
-                form.menuType === 0 ||
-                form.menuType === 2 ||
-                form.openType === 2
-              "
-              :placeholder="componentPlaceholder"
-            />
-          </el-form-item>
         </el-col>
-        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-          <el-form-item label="权限标识:">
-            <el-input
-              clearable
-              v-model="form.authority"
-              placeholder="请输入权限标识"
-              :disabled="
-                form.menuType === 0 ||
-                (form.menuType === 1 && form.openType === 2)
-              "
-            />
-          </el-form-item>
-          <el-form-item label="排序号:" prop="sortNumber">
+        <el-col :span="12">
+          <el-form-item label="排序号:" prop="sort">
             <el-input-number
               :min="0"
-              v-model="form.sortNumber"
+              v-model="form.sort"
               placeholder="请输入排序号"
               controls-position="right"
               class="ele-fluid ele-text-left"
             />
           </el-form-item>
-          <el-form-item label="是否展示:">
-            <el-switch
-              :active-value="0"
-              :inactive-value="1"
-              v-model="form.hide"
-              :disabled="form.menuType === 2"
-            />
-            <el-tooltip
-              placement="top"
-              content="选择不展示只注册路由不显示在侧边栏, 比如添加页面应该选择不展示"
-            >
-              <i
-                class="el-icon-_question"
-                style="vertical-align: middle; margin-left: 8px"
-              ></i>
-            </el-tooltip>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="菜单类型:">
+            <el-radio-group v-model="form.type" @change="onMenuTypeChange">
+              <el-radio :label="1">菜单</el-radio>
+              <el-radio :label="2">按钮</el-radio>
+            </el-radio-group>
           </el-form-item>
         </el-col>
       </el-row>
-      <el-form-item label="路由元数据:" prop="meta">
-        <el-input
-          :rows="4"
-          type="textarea"
-          :maxlength="200"
-          v-model="form.meta"
-          placeholder="请输入JSON格式的路由元数据"
-        />
-      </el-form-item>
+      <!-- <div style="margin: 6px 0 28px 0">
+        <el-divider />
+      </div> -->
     </el-form>
     <template v-slot:footer>
       <el-button @click="updateVisible(false)">取消</el-button>
@@ -204,41 +120,9 @@
         form: { ...defaultForm },
         // 表单验证规则
         rules: {
-          title: [
-            {
-              required: true,
-              message: '请输入菜单名称',
-              trigger: 'blur'
-            }
-          ],
-          sortNumber: [
-            {
-              required: true,
-              message: '请输入排序号',
-              trigger: 'blur'
-            }
-          ],
-          meta: [
-            {
-              trigger: 'blur',
-              validator: (_rule, value, callback) => {
-                if (value) {
-                  const error = new Error('请输入正确的JSON格式');
-                  try {
-                    const obj = JSON.parse(value);
-                    if (typeof obj !== 'object' || obj === null) {
-                      callback(error);
-                      return;
-                    }
-                  } catch (e) {
-                    callback(error);
-                    return;
-                  }
-                }
-                callback();
-              }
-            }
-          ]
+          title: [{required: true,message: '请输入菜单名称',trigger: 'blur'}],
+          sort: [{required: true,message: '请输入排序号', trigger: 'blur'}],
+          parentId: [{required: true,message: '请选择上级菜单', trigger: 'blur'}],
         },
         // 提交状态
         loading: false,
@@ -292,21 +176,21 @@
       },
       /* menuType选择改变 */
       onMenuTypeChange() {
-        if (this.form.menuType === 0) {
-          this.form.authority = null;
-          this.form.openType = 0;
-          this.form.component = null;
-        } else if (this.form.menuType === 1) {
-          if (this.form.openType === 2) {
-            this.form.authority = null;
-          }
-        } else {
-          this.form.openType = 0;
-          this.form.icon = null;
-          this.form.path = null;
-          this.form.component = null;
-          this.form.hide = 0;
-        }
+        // if (this.form.menuType === 0) {
+        //   this.form.authority = null;
+        //   this.form.openType = 0;
+        //   this.form.component = null;
+        // } else if (this.form.menuType === 1) {
+        //   if (this.form.openType === 2) {
+        //     this.form.authority = null;
+        //   }
+        // } else {
+        //   this.form.openType = 0;
+        //   this.form.icon = null;
+        //   this.form.path = null;
+        //   this.form.component = null;
+        //   this.form.hide = 0;
+        // }
       },
       /* openType选择改变 */
       onOpenTypeChange() {

+ 6 - 7
ele-admin-template/src/views/system/menu/components/menu-search.vue

@@ -9,19 +9,19 @@
     <el-row :gutter="15">
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="菜单名称:">
-          <el-input clearable v-model="where.title" placeholder="请输入" />
+          <el-input clearable v-model="where.name" placeholder="请输入" />
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="菜单地址:">
-          <el-input clearable v-model="where.path" placeholder="请输入" />
+          <el-input clearable v-model="where.url" placeholder="请输入" />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+<!--      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="权限标识:">
           <el-input clearable v-model="where.authority" placeholder="请输入" />
         </el-form-item>
-      </el-col>
+      </el-col> -->
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <div class="ele-form-actions">
           <el-button
@@ -44,9 +44,8 @@
     data() {
       // 默认表单数据
       const defaultWhere = {
-        title: '',
-        path: '',
-        authority: ''
+        name: '',
+        url: ''
       };
       return {
         // 表单数据

+ 24 - 60
ele-admin-template/src/views/system/menu/index.vue

@@ -6,7 +6,7 @@
       <!-- 数据表格 -->
       <ele-pro-table
         ref="table"
-        row-key="menuId"
+        row-key="id"
         :columns="columns"
         :datasource="datasource"
         :default-expand-all="false"
@@ -32,44 +32,20 @@
           <el-button class="ele-btn-icon" size="small" @click="foldAll">
             折叠全部
           </el-button>
+          <!-- <div class="el-button--primary">122222</div> -->
         </template>
         <!-- 标题列 -->
-        <template v-slot:title="{ row }">
-          <i :class="row.icon"></i> {{ row.title }}
+        <template v-slot:name="{ row }">
+          <i :class="row.icon"></i> {{ row.name }}
         </template>
         <!-- 类型列 -->
-        <template v-slot:menuType="{ row }">
+        <template v-slot:type="{ row }">
           <el-tag
-            v-if="isUrl(row.path)"
-            type="danger"
-            size="mini"
-            :disable-transitions="true"
-          >
-            外链
-          </el-tag>
-          <el-tag
-            v-else-if="isUrl(row.component)"
-            type="warning"
-            size="mini"
-            :disable-transitions="true"
-          >
-            内链
-          </el-tag>
-          <el-tag
-            v-else-if="isDirectory(row)"
             type="primary"
             size="mini"
             :disable-transitions="true"
           >
-            目录
-          </el-tag>
-          <el-tag
-            v-else
-            :type="['success', 'info'][row.menuType]"
-            size="mini"
-            :disable-transitions="true"
-          >
-            {{ ['菜单', '按钮'][row.menuType] }}
+            {{row.type==1?'菜单':(row.type==2?'按钮':'')}}
           </el-tag>
         </template>
         <!-- 操作列 -->
@@ -78,7 +54,7 @@
             type="primary"
             :underline="false"
             icon="el-icon-plus"
-            @click="openEdit(null, row.menuId)"
+            @click="openEdit(null, row.id)"
           >
             添加
           </el-link>
@@ -136,54 +112,42 @@
             fixed: 'left'
           },
           {
-            prop: 'title',
+            prop: 'name',
             label: '菜单名称',
             showOverflowTooltip: true,
             minWidth: 110,
-            slot: 'title'
+            slot: 'name'
           },
           {
-            prop: 'path',
+            prop: 'url',
             label: '路由地址',
             showOverflowTooltip: true,
             minWidth: 110
           },
           {
-            prop: 'component',
-            label: '组件路径',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'authority',
-            label: '权限标识',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'sortNumber',
+            prop: 'sort',
             label: '排序',
             align: 'center',
             showOverflowTooltip: true,
             width: 60
           },
+          // {
+          //   prop: 'hide',
+          //   label: '可见',
+          //   align: 'center',
+          //   showOverflowTooltip: true,
+          //   width: 60,
+          //   formatter: (_row, _column, cellValue) => {
+          //     return ['是', '否'][cellValue];
+          //   }
+          // },
           {
-            prop: 'hide',
-            label: '可见',
-            align: 'center',
-            showOverflowTooltip: true,
-            width: 60,
-            formatter: (_row, _column, cellValue) => {
-              return ['是', '否'][cellValue];
-            }
-          },
-          {
-            prop: 'menuType',
+            prop: 'type',
             label: '类型',
             align: 'center',
             showOverflowTooltip: true,
             width: 60,
-            slot: 'menuType'
+            slot: 'type'
           },
           {
             prop: 'createTime',
@@ -223,7 +187,7 @@
       parseData(data) {
         return this.$util.toTreeData({
           data: data,
-          idField: 'menuId',
+          idField: 'id',
           parentIdField: 'parentId'
         });
       },