13693261870
2024-09-10 d2fc6d6e5c57e4d7c32f8a112326a2879625515b
se-ui/src/views/system/menu/index.vue
@@ -37,13 +37,7 @@
        >新增</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          plain
          icon="el-icon-sort"
          size="mini"
          @click="toggleExpandAll"
        >展开/折叠</el-button>
        <el-button type="info" plain icon="el-icon-sort" size="mini" @click="toggleExpandAll">展开/折叠</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
@@ -67,7 +61,7 @@
      <el-table-column prop="component" label="组件路径" :show-overflow-tooltip="true"></el-table-column>
      <el-table-column prop="status" label="状态" width="80">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status" />
        </template>
      </el-table-column>
      <el-table-column label="创建时间" align="center" prop="createTime">
@@ -117,13 +111,18 @@
              />
            </el-form-item>
          </el-col>
          <el-col :span="24">
          <el-col :span="12">
            <el-form-item label="菜单类型" prop="menuType">
              <el-radio-group v-model="form.menuType">
                <el-radio label="M">目录</el-radio>
                <el-radio label="C">菜单</el-radio>
                <el-radio label="F">按钮</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="菜单标识" prop="mark">
              <el-input v-model="form.mark" placeholder="请输入菜单标识" />
            </el-form-item>
          </el-col>
          <el-col :span="24" v-if="form.menuType != 'F'">
@@ -161,9 +160,8 @@
            <el-form-item prop="isFrame">
              <span slot="label">
                <el-tooltip content="选择是外链则路由地址需要以`http(s)://`开头" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                是否外链
                  <i class="el-icon-question"></i>
                </el-tooltip>是否外链
              </span>
              <el-radio-group v-model="form.isFrame">
                <el-radio label="0">是</el-radio>
@@ -175,9 +173,8 @@
            <el-form-item prop="path">
              <span slot="label">
                <el-tooltip content="访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                路由地址
                  <i class="el-icon-question"></i>
                </el-tooltip>路由地址
              </span>
              <el-input v-model="form.path" placeholder="请输入路由地址" />
            </el-form-item>
@@ -186,9 +183,8 @@
            <el-form-item prop="component">
              <span slot="label">
                <el-tooltip content="访问的组件路径,如:`system/user/index`,默认在`views`目录下" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                组件路径
                  <i class="el-icon-question"></i>
                </el-tooltip>组件路径
              </span>
              <el-input v-model="form.component" placeholder="请输入组件路径" />
            </el-form-item>
@@ -197,10 +193,12 @@
            <el-form-item prop="perms">
              <el-input v-model="form.perms" placeholder="请输入权限标识" maxlength="100" />
              <span slot="label">
                <el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                权限字符
                <el-tooltip
                  content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)"
                  placement="top"
                >
                  <i class="el-icon-question"></i>
                </el-tooltip>权限字符
              </span>
            </el-form-item>
          </el-col>
@@ -208,10 +206,9 @@
            <el-form-item prop="query">
              <el-input v-model="form.query" placeholder="请输入路由参数" maxlength="255" />
              <span slot="label">
                <el-tooltip content='访问路由的默认传递参数,如:`{"id": 1, "name": "ry"}`' placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                路由参数
                <el-tooltip content="访问路由的默认传递参数,如:`{id: 1, name: ry}`" placement="top">
                  <i class="el-icon-question"></i>
                </el-tooltip>路由参数
              </span>
            </el-form-item>
          </el-col>
@@ -219,9 +216,8 @@
            <el-form-item prop="isCache">
              <span slot="label">
                <el-tooltip content="选择是则会被`keep-alive`缓存,需要匹配组件的`name`和地址保持一致" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                是否缓存
                  <i class="el-icon-question"></i>
                </el-tooltip>是否缓存
              </span>
              <el-radio-group v-model="form.isCache">
                <el-radio label="0">缓存</el-radio>
@@ -233,9 +229,8 @@
            <el-form-item prop="visible">
              <span slot="label">
                <el-tooltip content="选择隐藏则路由将不会出现在侧边栏,但仍然可以访问" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                显示状态
                  <i class="el-icon-question"></i>
                </el-tooltip>显示状态
              </span>
              <el-radio-group v-model="form.visible">
                <el-radio
@@ -250,9 +245,8 @@
            <el-form-item prop="status">
              <span slot="label">
                <el-tooltip content="选择停用则路由将不会出现在侧边栏,也不能被访问" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                菜单状态
                  <i class="el-icon-question"></i>
                </el-tooltip>菜单状态
              </span>
              <el-radio-group v-model="form.status">
                <el-radio
@@ -274,14 +268,20 @@
</template>
<script>
import { listMenu, getMenu, delMenu, addMenu, updateMenu } from "@/api/system/menu";
import {
  listMenu,
  getMenu,
  delMenu,
  addMenu,
  updateMenu
} from "@/api/system/menu";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import IconSelect from "@/components/IconSelect";
export default {
  name: "Menu",
  dicts: ['sys_show_hide', 'sys_normal_disable'],
  dicts: ["sys_show_hide", "sys_normal_disable"],
  components: { Treeselect, IconSelect },
  data() {
    return {
@@ -316,9 +316,7 @@
        orderNum: [
          { required: true, message: "菜单顺序不能为空", trigger: "blur" }
        ],
        path: [
          { required: true, message: "路由地址不能为空", trigger: "blur" }
        ]
        path: [{ required: true, message: "路由地址不能为空", trigger: "blur" }]
      }
    };
  },
@@ -353,7 +351,7 @@
    getTreeselect() {
      listMenu().then(response => {
        this.menuOptions = [];
        const menu = { menuId: 0, menuName: '主类目', children: [] };
        const menu = { menuId: 0, menuName: "主类目", children: [] };
        menu.children = this.handleTree(response.data, "menuId");
        this.menuOptions.push(menu);
      });
@@ -371,6 +369,7 @@
        menuName: undefined,
        icon: undefined,
        menuType: "M",
        mark: "",
        orderNum: undefined,
        isFrame: "1",
        isCache: "0",
@@ -394,6 +393,7 @@
      this.getTreeselect();
      if (row != null && row.menuId) {
        this.form.parentId = row.menuId;
        this.form.mark = row.mark;
      } else {
        this.form.parentId = 0;
      }
@@ -440,12 +440,16 @@
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      this.$modal.confirm('是否确认删除名称为"' + row.menuName + '"的数据项?').then(function() {
        return delMenu(row.menuId);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
      this.$modal
        .confirm('是否确认删除名称为"' + row.menuName + '"的数据项?')
        .then(function() {
          return delMenu(row.menuId);
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
    }
  }
};