Quellcode durchsuchen

在线预览 + 筛选样式补充 + 菜单筛选

zhuangyunsheng vor 1 Jahr
Ursprung
Commit
27a23f20ce

+ 1 - 1
src/api/system/menu.js

@@ -7,7 +7,7 @@ export function getMenuTree(systemCode) {
         method: "GET",
         params: {
             systemCode
-        },
+        }
     })
 }
 //新增

+ 65 - 13
src/components/Upload/fileViewer.vue

@@ -1,13 +1,26 @@
 <template>
 	<div class="yh-file-viewer">
         <el-dialog v-model="visible" fullscreen :show-close="false" @closed="$emit('closed')">
+            <div class="yh-file-viewer__header">
+                <div class="yh-file-viewer__title">
+                    {{ fileName }}
+                    <button class="el-button el-button--primary" aria-label="download" type="button" @click="downloadFile">
+                        <tjm-icon-ep-download />下载
+					</button>
+                </div>
+				
+                <button class="el-button is-link" aria-label="close" type="button" @click="visible = false">
+                    <tjm-icon-ep-close />
+                </button>
+            </div>
+            
             <div v-loading="loading" class="yh-file-viewer__content">
                 <component :is="`vue_office_${fileType.split('.')[0]}`" :src="filePath" :options="options" @rendered="loading = false" @error="loading = false"></component>
             </div>
         </el-dialog>
+        
+	    <yh-image-viewer :showViewer="showViewer" :imageList="[filePath]" teleported @close="showViewer = false"></yh-image-viewer>
     </div>
-
-	<yh-image-viewer :showViewer="showViewer" :imageList="[filePath]" teleported @close="showViewer = false"></yh-image-viewer>
 </template>
 
 <script>
@@ -34,6 +47,7 @@ export default {
         return {
             visible: false,
             loading: false,
+            fileName: null,
             fileType: null,
             filePath: null,
             options: {
@@ -52,18 +66,14 @@ export default {
 
     methods: {
         init(uploadFile) {
+            this.fileName = uploadFile.name;
+            this.filePath = uploadFile.path;
+            this.fileType = fileTypes[uploadFile["fileType"]];
+
             if (!fileTypes[uploadFile["fileType"]]) {
                 ElMessage.warning("当前只支持预览.docx、.pdf、excel文件,文件已下载");
-                Folder.download(uploadFile.path).then(res => {
-                    const a = document.createElement("a");
-                    const blob = new Blob([res.data], { type: uploadFile.fileType });
-                    a.download = uploadFile.name;
-                    a.href = URL.createObjectURL(blob);
-                    a.click();
-                });
+                this.downloadFile();
             } else {
-                this.filePath = uploadFile.path;
-                this.fileType = fileTypes[uploadFile["fileType"]];
                 if (this.fileType == "image") this.showViewer = true;
                 else {
                     this.loading = true;
@@ -71,6 +81,16 @@ export default {
                     if (this.fileType.includes(".")) this.options.xls = this.fileType.split(".")[1] == "xls";
                 }
             }
+        },
+
+        downloadFile() {
+            Folder.download(this.filePath).then(res => {
+                const a = document.createElement("a");
+                const blob = new Blob([res.data], { type: this.fileType });
+                a.download = this.fileName;
+                a.href = URL.createObjectURL(blob);
+                a.click();
+            });
         }
     }
 }
@@ -79,13 +99,45 @@ export default {
 <style lang="scss" scoped>
 .yh-file-viewer :deep(.el-dialog) {
   --el-dialog-bg-color: transparent;
-  --el-dialog-padding-primary: 0;
+  padding: 0;
+
+  .el-dialog__header {
+    padding: 0;
+  }
 
   .el-dialog__body {
     height: 100%;
+    padding: 0;
+
+    .yh-file-viewer__header {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      padding: var(--el-dialog-padding-primary);
+      background: #fff;
+
+      .yh-file-viewer__title {
+        line-height: var(--el-dialog-font-line-height);
+        font-size: var(--el-dialog-title-font-size);
+        color: var(--el-text-color-primary);
+
+        button {
+          margin-left: var(--el-dialog-padding-primary);
+
+          svg {
+            margin-right: 6px;
+          }
+        }
+      }
+
+      .el-button.is-link:hover {
+        color: var(--el-color-primary);
+      }
+    }
 
     .yh-file-viewer__content {
-      height: 100%;
+      height: calc(100% - 64px);
+      padding: var(--el-dialog-padding-primary);
     }
   }
 }

+ 2 - 7
src/components/Upload/imageViewer.vue

@@ -1,7 +1,5 @@
 <template>
-	<div class="yh-image-viewer">
-		<el-image-viewer v-if="showViewer" v-bind="$attrs" :url-list="imageList" @close="$emit('closed')"></el-image-viewer>
-	</div>
+    <el-image-viewer v-if="showViewer" v-bind="$attrs" :url-list="imageList" @close="$emit('closed')"></el-image-viewer>
 </template>
 
 <script>
@@ -24,7 +22,4 @@ export default {
 
     methods: {}
 }
-</script>
-
-<style lang="scss" scoped>
-</style>
+</script>

+ 9 - 3
src/components/Upload/index.vue

@@ -161,10 +161,16 @@ export default {
 
 .yh-upload-file {
   width: 100%;
+}
 
-  :deep(.el-upload-list__item) {
-    transition: none !important;
-  }
+:deep(.el-upload-list:focus-visible),
+:deep(.el-upload-list__item:focus-visible),
+:deep(.el-upload-list__item-info:focus-visible) {
+  outline: none; /* 移除默认的聚焦轮廓 */
+}
+
+:deep(.el-upload-list__item) {
+  transition: none !important;
 
   .el-upload-hide-add {
     :deep(.el-upload) {

+ 51 - 29
src/views/publicDomain/link/strive.vue

@@ -1,37 +1,58 @@
 <template>
     <el-card class="tjm_card_style_custom" shadow="never">
         <div class="tjm_card_select">
-            <el-form class="tjm_card_select_left" :model="params" inline label-width="80px" label-position="left">
-                <el-form-item label="政策编号">
-                    <el-input v-model="params.businessNo" clearable placeholder="请输入政策编号"></el-input>
-                </el-form-item>
-                <el-form-item label="项目名称">
-                    <el-input v-model="params.name" clearable placeholder="请输入项目名称"></el-input>
-                </el-form-item>
-                <el-form-item label="项目等级">
-                    <el-select v-model="params.zcLevel" clearable placeholder="请选择项目等级">
-                        <el-option v-for="item in levelDic" :key="item" :label="item" :value="item"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="项目类别">
-                    <el-select v-model="params.zcType" clearable placeholder="请选择项目类别">
-                        <el-option v-for="item in typeDic" :key="item" :label="item" :value="item"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="状态">
-                    <el-select v-model="params.isLand" clearable placeholder="请选择状态">
-                        <el-option v-for="(label, key) in statusDic" :key="key" :label="label" :value="parseInt(key)"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="填报日期">
-                    <el-date-picker v-model="createTime" type="daterange" value-format="YYYY-MM-DD" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
-                </el-form-item>
-
-                <el-form-item>
+            <el-scrollbar>
+                <el-form class="tjm_card_select_left" :model="params" label-width="80px" label-position="left">
+                    <el-row :gutter="15">
+                        <el-col :lg="8" :md="12" :xs="24">
+                            <el-form-item label="政策编号">
+                                <el-input v-model="params.businessNo" clearable placeholder="请输入政策编号"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :lg="8" :md="12" :xs="24">
+                            <el-form-item label="项目名称">
+                                <el-input v-model="params.name" clearable placeholder="请输入项目名称"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :lg="8" :md="12" :xs="24">
+                            <el-form-item label="项目等级">
+                                <el-select v-model="params.zcLevel" clearable placeholder="请选择项目等级">
+                                    <el-option v-for="item in levelDic" :key="item" :label="item" :value="item"></el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <template v-if="paramsIsCollapse">
+                            <el-col :lg="8" :md="12" :xs="24">
+                                <el-form-item label="项目类别">
+                                    <el-select v-model="params.zcType" clearable placeholder="请选择项目类别">
+                                        <el-option v-for="item in typeDic" :key="item" :label="item" :value="item"></el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :lg="8" :md="12" :xs="24">
+                                <el-form-item label="状态">
+                                    <el-select v-model="params.isLand" clearable placeholder="请选择状态">
+                                        <el-option v-for="(label, key) in statusDic" :key="key" :label="label" :value="parseInt(key)"></el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :lg="8" :md="12" :xs="24">
+                                <el-form-item label="填报日期">
+                                    <el-date-picker v-model="createTime" type="daterange" value-format="YYYY-MM-DD" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+                                </el-form-item>
+                            </el-col>
+                        </template>
+                    </el-row>            
+                </el-form>
+                <div class="tjm_card_select_right">
                     <el-button type="primary" icon="search" @click="reloadTable">搜索</el-button>
                     <el-button icon="refresh-right" @click="reset">重置</el-button>
-                </el-form-item>
-            </el-form>
+                    <el-button type="primary" link @click="paramsIsCollapse = !paramsIsCollapse">
+                        <template v-if="paramsIsCollapse">收起<tjm-icon-ep-arrow-up-bold /></template>
+                        <template v-else>更多<tjm-icon-ep-arrow-down-bold /></template>
+                    </el-button>
+                </div>
+            </el-scrollbar>
         </div>
         <el-divider></el-divider>
 
@@ -78,6 +99,7 @@ export default {
             link_columns, levelDic, typeDic, statusDic,
 
             loading: false,
+            paramsIsCollapse: false,
             createTime: [],
             params: {
                 page: 1,

+ 0 - 1
src/views/system/dataList.vue

@@ -176,7 +176,6 @@
 
 <script setup>
 import { getMainList, getPowerList, scopeSave, scopeUpdate, scopeRemove } from '@/api/system/dataList'
-import { getMenuTree } from '@/api/system/menu'
 
 const tableLoading = ref(false) //加载
 const drawerShow = ref(false)

+ 280 - 305
src/views/system/menu.vue

@@ -1,278 +1,251 @@
 <template>
-    <div>
-        <el-card class="tjm_card_style_custom">
-            <div class="tjm_card_title">条件检索</div>
-            <div class="tjm_card_select">
-                <div class="tjm_card_select_left">
-                <el-form
-                    :inline="true"
-                    :model="formInline"
-                    label-width="80px"
-                    :label-position="'left'"
-                >
-                    <el-form-item label="菜单名称">
-                    <el-input
-                        style="width: 100%"
-                        v-model="formInline.name"
-                        placeholder="请输入"
-                        clearable
-                    />
+    <el-card class="tjm_card_style_custom">
+        <div class="tjm_card_title">条件检索</div>
+        <div class="tjm_card_select">
+            <el-scrollbar>
+                <el-form class="tjm_card_select_left" :model="params" label-width="80px" label-position="left">
+                    <el-row :gutter="15">
+                        <el-col :lg="8" :md="12" :xs="24">
+                            <el-form-item label="菜单名称">
+                                <el-input v-model="formInline.name" clearable placeholder="请输入菜单名称"></el-input>
+                            </el-form-item>
+                        </el-col>
+                        <!-- <el-col :lg="8" :md="12" :xs="24">
+                            <el-form-item label="创建时间">
+                                <el-date-picker v-model="formInline.date" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+                            </el-form-item>
+                        </el-col> -->
+                        <el-col :lg="8" :md="12" :xs="24">
+                            <el-form-item label="菜单状态">
+                                <el-select v-model="formInline.state" clearable placeholder="请选择菜单状态">
+                                    <el-option label="启用" value="0" />
+                                    <el-option label="禁用" value="1" />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>            
+                </el-form>
+                <div class="tjm_card_select_right">
+                    <el-button type="primary" icon="search" @click="searchMenuListBtn">搜索</el-button>
+                    <el-button icon="refresh-right" @click="resetParamsBtn">重置</el-button>
+                </div>
+            </el-scrollbar>
+        </div>
+        <el-divider></el-divider>
+
+        <div class="tjm_card_table">
+            <el-table
+                header-cell-class-name="tjm_card_table_header"
+                :data="tableData"
+                v-loading="loading"
+                border
+                :tree-props="{ children: 'children' }"
+                row-key="id"
+                :expand-row-keys="expandKeys"
+            >
+                <el-table-column type="selection" width="55" />
+                <el-table-column prop="name" label="菜单名称" width="180" />
+                <el-table-column prop="path" label="菜单路由" />
+                <el-table-column prop="type" label="类型" width="120">
+                    <template #default="scope">
+                        <el-button :type="scope.row.type == 1 ? 'primary' : 'success'" text>
+                            {{ scope.row.type == 1 ? "菜单" : "按钮" }}
+                        </el-button>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="type" label="设备" width="120">
+                    <template #default="scope">
+                        <el-button :type="scope.row.menuType != 2 ? 'primary' : 'success'" text>
+                            {{ scope.row.menuType == 1 ? "Cloud端" : scope.row.menuType == 2 ? "APP端" : "Boot端" }}
+                        </el-button>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="icon" label="图标" width="150">
+                    <!-- <template #default="scope">
+                        <el-icon size="18">
+                            <component :is="scope.row.icon" />
+                        </el-icon>
+                    </template> -->
+                </el-table-column>
+                <el-table-column prop="sort" label="排序" width="150" />
+                <el-table-column prop="ope" label="操作" width="220">
+                    <template #default="scope">
+                        <el-button
+                            link
+                            type="primary"
+                            icon="Edit"
+                            @click="handleUpdate(scope.row)"
+                        >修改</el-button>
+                        <el-button
+                            link
+                            type="primary"
+                            icon="Plus"
+                            @click="handleAdd(scope.row)"
+                        >新增</el-button>
+                        <el-button
+                            link
+                            type="primary"
+                            icon="Delete"
+                            @click="handleDelete(scope.row)"
+                        >删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+    </el-card>
+
+    <!-- 编辑 -->
+    <el-dialog :title="title" v-model="open" width="680px" append-to-body>
+        <el-form ref="menuRef" :model="form" :rules="rules" label-width="100px">
+            <el-row>
+                <el-col :span="24">
+                    <el-form-item label="上级菜单" prop="parentId">
+                        <el-tree-select
+                            style="width: 100%"
+                            v-model="form.parentId"
+                            :data="selectTableData"
+                            :props="{ value: 'id', label: 'name', children: 'children' }"
+                            value-key="id"
+                            placeholder="选择上级菜单"
+                            check-strictly
+                        />
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="菜单名称" prop="name">
+                        <el-input
+                            v-model="form.name"
+                            placeholder="请输入菜单名称"
+                            clearable
+                        />
                     </el-form-item>
-                    <el-form-item label="创建时间">
-                    <el-date-picker
-                        v-model="formInline.date"
-                        type="daterange"
-                        placeholder="Pick a date"
-                        clearable
-                    />
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="菜单代码" prop="code">
+                        <el-input
+                            v-model="form.code"
+                            placeholder="请输入菜单代码"
+                            clearable
+                        />
                     </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="菜单图标">
+                        <el-popover
+                            placement="bottom-start"
+                            :width="540"
+                            v-model:visible="showChooseIcon"
+                            trigger="click"
+                            @show="showSelectIcon"
+                        >
+                            <template #reference>
+                                <el-input
+                                    v-model="form.icon"
+                                    placeholder="点击选择图标"
+                                    @blur="showSelectIcon"
+                                    v-click-outside="hideSelectIcon"
+                                    readonly
+                                >
+                                    <template #prefix v-if="form.icon">
+                                        <el-icon size="16" class="el-input__icon">
+                                            <component v-if="form.icon.indexOf('ep') !== -1" :is="form.icon.slice(2)" />
+                                            <svg-icon v-if="form.icon.indexOf('tjm') !== -1" :icon-class="form.icon.slice(4)" />
+                                        </el-icon>
+                                    </template>
+                                </el-input>
+                            </template>
+                            <icon-select
+                                ref="iconSelectRef"
+                                @selected="selected"
+                                :active-icon="form.icon"
+                            />
+                        </el-popover>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="菜单描述">
+                        <el-input
+                            v-model="form.description"
+                            placeholder="请输入菜单描述"
+                            clearable
+                        />
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
                     <el-form-item label="菜单状态">
-                    <el-select
-                        v-model="formInline.status"
-                        clearable
-                        placeholder="请选择"
-                    >
-                        <el-option label="启用" value="1" />
-                        <el-option label="禁用" value="2" />
-                    </el-select>
+                        <el-radio-group v-model="form.state" @change="changeType">
+                            <el-radio :label="0">启用</el-radio>
+                            <el-radio :label="1">禁用</el-radio>
+                        </el-radio-group>
                     </el-form-item>
-                    <el-form-item>
-                    <el-button type="primary">
-                        <el-icon class="tjm_btn_icon_right">
-                        <tjm-icon-ep-Plus />
-                        </el-icon>
-                        搜索
-                    </el-button>
-                    <el-button>
-                        <el-icon class="tjm_btn_icon_right">
-                        <tjm-icon-ep-RefreshRight />
-                        </el-icon>
-                        重置
-                    </el-button>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="菜单路径" prop="path">
+                        <el-input
+                            v-model="form.path"
+                            placeholder="菜单路径(需要与资源路径一致)"
+                            clearable
+                        />
                     </el-form-item>
-                </el-form>
-                </div>
-            </div>
-            <el-divider />
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="组件路径">
+                        <el-input v-model="form.path" disabled clearable />
+                    </el-form-item>
+                </el-col>
 
-            <div class="tjm_card_table">
-                <el-table
-                    header-cell-class-name="tjm_card_table_header"
-                    :data="tableData"
-                    v-loading="loading"
-                    border
-                    style="width: 100%"
-                    :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
-                    row-key="id"
-                    :expand-row-keys="expandKeys"
-                >
-                    <el-table-column type="selection" width="55" />
-                    <el-table-column prop="name" label="菜单名称" width="180" />
-                    <el-table-column prop="path" label="菜单路由" />
-                    <el-table-column prop="type" label="类型" width="120">
-                        <template #default="scope">
-                            <el-button :type="scope.row.type == 1 ? 'primary' : 'success'" text>
-                                {{ scope.row.type == 1 ? "菜单" : "按钮" }}
-                            </el-button>
-                        </template>
-                    </el-table-column>
-                    <el-table-column prop="type" label="设备" width="120">
-                        <template #default="scope">
-                            <el-button :type="scope.row.menuType != 2 ? 'primary' : 'success'" text>
-                                {{ scope.row.menuType == 1 ? "Cloud端" : scope.row.menuType == 2 ? "APP端" : "Boot端" }}
-                            </el-button>
-                        </template>
-                    </el-table-column>
-                    <el-table-column prop="icon" label="图标" width="150">
-                        <!-- <template #default="scope">
-                            <el-icon size="18">
-                                <component :is="scope.row.icon" />
-                            </el-icon>
-                        </template> -->
-                    </el-table-column>
-                    <el-table-column prop="sort" label="排序" width="150" />
-                    <el-table-column prop="ope" label="操作" width="220">
-                        <template #default="scope">
-                            <el-button
-                                link
-                                type="primary"
-                                icon="Edit"
-                                @click="handleUpdate(scope.row)"
-                            >修改</el-button>
-                            <el-button
-                                link
-                                type="primary"
-                                icon="Plus"
-                                @click="handleAdd(scope.row)"
-                            >新增</el-button>
-                            <el-button
-                                link
-                                type="primary"
-                                icon="Delete"
-                                @click="handleDelete(scope.row)"
-                            >删除</el-button>
-                        </template>
-                    </el-table-column>
-                </el-table>
+                <el-col :span="12">
+                    <el-form-item label="菜单类型">
+                        <el-radio-group v-model="form.type" @change="changeType">
+                            <el-radio :label="1">菜单</el-radio>
+                            <el-radio :label="2">按钮</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="设备类型">
+                        <el-radio-group v-model="form.menuType" @change="changeType">
+                            <!-- <el-radio :label="1">Cloud端</el-radio> -->
+                            <el-radio :label="3">Boot端</el-radio>
+                            <el-radio :label="2">APP端</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="系统选择">
+                        <el-input
+                            v-model="form.systemCode"
+                            disabled
+                            placeholder="请选择系统"
+                            clearable
+                        />
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="菜单排序">
+                        <el-input
+                            v-model="form.sort"
+                            placeholder="请输入菜单排序"
+                            clearable
+                        />
+                    </el-form-item>
+                </el-col>
+            </el-row>
+        </el-form>
+        <template #footer>
+            <div class="dialog-footer">
+                <el-button type="primary" @click="submitForm">确 定</el-button>
+                <el-button @click="cancel">取 消</el-button>
             </div>
-        </el-card>
-
-        <!-- 编辑 -->
-        <el-dialog :title="title" v-model="open" width="680px" append-to-body>
-            <el-form ref="menuRef" :model="form" :rules="rules" label-width="100px">
-                <el-row>
-                    <el-col :span="24">
-                        <el-form-item label="上级菜单" prop="parentId">
-                            <el-tree-select
-                                style="width: 100%"
-                                v-model="form.parentId"
-                                :data="selectTableData"
-                                :props="{ value: 'id', label: 'name', children: 'children' }"
-                                value-key="id"
-                                placeholder="选择上级菜单"
-                                check-strictly
-                            />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item label="菜单名称" prop="name">
-                            <el-input
-                                v-model="form.name"
-                                placeholder="请输入菜单名称"
-                                clearable
-                            />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item label="菜单代码" prop="code">
-                            <el-input
-                                v-model="form.code"
-                                placeholder="请输入菜单代码"
-                                clearable
-                            />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item label="菜单图标">
-                            <el-popover
-                                placement="bottom-start"
-                                :width="540"
-                                v-model:visible="showChooseIcon"
-                                trigger="click"
-                                @show="showSelectIcon"
-                            >
-                                <template #reference>
-                                    <el-input
-                                        v-model="form.icon"
-                                        placeholder="点击选择图标"
-                                        @blur="showSelectIcon"
-                                        v-click-outside="hideSelectIcon"
-                                        readonly
-                                    >
-                                        <template #prefix v-if="form.icon">
-                                            <el-icon size="16" class="el-input__icon">
-                                                <component v-if="form.icon.indexOf('ep') !== -1" :is="form.icon.slice(2)" />
-                                                <svg-icon v-if="form.icon.indexOf('tjm') !== -1" :icon-class="form.icon.slice(4)" />
-                                            </el-icon>
-                                        </template>
-                                    </el-input>
-                                </template>
-                                <icon-select
-                                    ref="iconSelectRef"
-                                    @selected="selected"
-                                    :active-icon="form.icon"
-                                />
-                            </el-popover>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item label="菜单描述">
-                            <el-input
-                                v-model="form.description"
-                                placeholder="请输入菜单描述"
-                                clearable
-                            />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="24">
-                        <el-form-item label="菜单状态">
-                            <el-radio-group v-model="form.state" @change="changeType">
-                                <el-radio :label="0">启用</el-radio>
-                                <el-radio :label="1">禁用</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                        <el-form-item label="菜单路径" prop="path">
-                            <el-input
-                                v-model="form.path"
-                                placeholder="菜单路径(需要与资源路径一致)"
-                                clearable
-                            />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                        <el-form-item label="组件路径">
-                            <el-input v-model="form.path" disabled clearable />
-                        </el-form-item>
-                    </el-col>
-
-                    <el-col :span="12">
-                        <el-form-item label="菜单类型">
-                            <el-radio-group v-model="form.type" @change="changeType">
-                                <el-radio :label="1">菜单</el-radio>
-                                <el-radio :label="2">按钮</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                        <el-form-item label="设备类型">
-                            <el-radio-group v-model="form.menuType" @change="changeType">
-                                <!-- <el-radio :label="1">Cloud端</el-radio> -->
-                                <el-radio :label="3">Boot端</el-radio>
-                                <el-radio :label="2">APP端</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                        <el-form-item label="系统选择">
-                            <el-input
-                                v-model="form.systemCode"
-                                disabled
-                                placeholder="请选择系统"
-                                clearable
-                            />
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                        <el-form-item label="菜单排序">
-                            <el-input
-                                v-model="form.sort"
-                                placeholder="请输入菜单排序"
-                                clearable
-                            />
-                        </el-form-item>
-                    </el-col>
-                </el-row>
-            </el-form>
-            <template #footer>
-                <div class="dialog-footer">
-                    <el-button type="primary" @click="submitForm">确 定</el-button>
-                    <el-button @click="cancel">取 消</el-button>
-                </div>
-            </template>
-        </el-dialog>
-    </div>
+        </template>
+    </el-dialog>
 </template>
 
 <script setup>
 import { getMenuTree, addMenu, modMenu, delMenu } from "@/api/system/menu.js"
 import API from "@/api/system/log";
-import { watch } from "vue"
 
 const { proxy } = getCurrentInstance()
-import { ClickOutside as vClickOutside } from "element-plus"
-
 const loading = ref(false) //加载
 const expandKeys = reactive(["1", "1762659463383281665"]) //展开
 const tableData = ref([])
@@ -320,37 +293,17 @@ function submitForm() {
         if (valid) {
             if (form.value.id != undefined) {
                 modMenu(form.value).then(res => {
-                    if (res.code == 200) {
-                        API.add("修改", "system_menu");
-                        open.value = false
-                        ElMessage({
-                            message: res.msg,
-                            type: "success"
-                        })
-                        getMenuTreeList()
-                    } else {
-                        ElMessage({
-                            message: res.msg,
-                            type: "warning"
-                        })
-                    }
+                    API.add("修改", "system_menu");
+                    open.value = false
+                    ElMessage.success(res.msg)
+                    getMenuTreeList()
                 })
             } else {
                 addMenu(form.value).then(res => {
-                    if (res.code == 200) {
-                        API.add("新增", "system_menu");
-                        open.value = false
-                        ElMessage({
-                            message: res.msg,
-                            type: "success"
-                        })
-                        getMenuTreeList()
-                    } else {
-                        ElMessage({
-                            message: res.msg,
-                            type: "warning"
-                        })
-                    }
+                    API.add("新增", "system_menu");
+                    open.value = false
+                    ElMessage.success(res.msg)
+                    getMenuTreeList()
                 })
             }
         } else {
@@ -363,12 +316,44 @@ function cancel() {
     open.value = false
 }
 
+function searchMenuListBtn() {
+    getMenuTreeList()
+}
+
+function resetParamsBtn() {
+    formInline.value = {}
+    getMenuTreeList()
+}
+
 function getMenuTreeList() {
-    getMenuTree(10001).then(res => {
-        if (res.code === 200) {
-            tableData.value = res.data
+    getMenuTree(10001).then(res => tableData.value = formatMenuList(res.data))
+}
+
+function formatMenuList(array) {
+    let list = [];
+
+    for (const arr of array) {
+        if (!arr.children || !arr.children.length) {
+            if (formatQuery(arr)) list.push(arr);
+        } else {
+            arr.children = formatMenuList(arr.children);
+            if (formatMenuList(arr.children).length) list.push(arr);
         }
-    })
+    }
+    
+    return list
+}
+
+function formatQuery(data) {
+    let isAccord = true;
+    for (const key in formInline.value) {
+        if (formInline.value[key] && (data[key] + "") && !(data[key] + "").includes(formInline.value[key])) {
+            isAccord = false;
+            break;
+        }
+    }
+    console.log(isAccord)
+    return isAccord
 }
 
 //处理添加菜单时选择父级 当选择父级拥有按钮子级时候不可同时作为按钮与菜单的父级
@@ -486,19 +471,9 @@ function handleDelete(row) {
         type: "warning"
     }).then(() => {
         delMenu({ id: row.id }).then(res => {
-            if (res.code == 200) {
-                API.add("删除", "system_menu");
-                ElMessage({
-                    message: res.msg,
-                    type: "success"
-                })
-                getMenuTreeList()
-            } else {
-                ElMessage({
-                    message: res.msg,
-                    type: "warning"
-                })
-            }
+            API.add("删除", "system_menu");
+            ElMessage.success(res.msg)
+            getMenuTreeList()
         })
     })
 }

+ 34 - 112
src/views/system/user.vue

@@ -80,9 +80,7 @@ function getRoleListData() {
     getRoleList({
         page: 1,
         size: 100000
-    }).then(res => {
-        roleData.value = res.data.records
-    })
+    }).then(res => roleData.value = res.data.records)
 }
 getDeptTreeData()
 getUserListData()
@@ -91,9 +89,7 @@ getRoleListData()
 //编辑
 
 function filterMethod(value) {
-    deptOptionsEdit.value = [...deptOptions].filter(item =>
-        item.name.includes(value)
-    )
+    deptOptionsEdit.value = [...deptOptions].filter(item => item.name.includes(value))
 }
 
 const form = ref({
@@ -135,58 +131,24 @@ function submitForm() {
             if (form.value.id != undefined) {
                 modUser(form.value).then(res => {
                     API.add("修改", "system_user");
-                    if (res.code == 200) {
-                        byUserIduPRole(form.value.id, {
-                            roleIds: form.value.roleIds.join(",")
-                        }).then(result => {
-                            if (result.code == 200) {
-                                getUserListData()
-                                open.value = false
-                                ElMessage({
-                                    message: res.msg,
-                                    type: "success"
-                                })
-                            } else {
-                                ElMessage({
-                                    message: res.msg,
-                                    type: "warning"
-                                })
-                            }
-                        })
-                    } else {
-                        ElMessage({
-                            message: res.msg,
-                            type: "warning"
-                        })
-                    }
+                    byUserIduPRole(form.value.id, {
+                        roleIds: form.value.roleIds.join(",")
+                    }).then(result => {
+                        getUserListData()
+                        open.value = false
+                        ElMessage.success(res.msg)
+                    })
                 })
             } else {
                 addUser(form.value).then(res => {
-                    if (res.code == 200) {
-                        API.add("新增", "system_user");
-                        byUserIduPRole(res.data.id, {
-                            roleIds: form.value.roleIds.join(",")
-                        }).then(result => {
-                            if (result.code == 200) {
-                                getUserListData()
-                                open.value = false
-                                ElMessage({
-                                    message: res.msg,
-                                    type: "success"
-                                })
-                            } else {
-                                ElMessage({
-                                    message: res.msg,
-                                    type: "warning"
-                                })
-                            }
-                        })
-                    } else {
-                        ElMessage({
-                            message: res.msg,
-                            type: "warning"
-                        })
-                    }
+                    API.add("新增", "system_user");
+                    byUserIduPRole(res.data.id, {
+                        roleIds: form.value.roleIds.join(",")
+                    }).then(result => {
+                        getUserListData()
+                        open.value = false
+                        ElMessage.success(res.msg)
+                    })
                 })
             }
         } else {
@@ -226,19 +188,9 @@ function delUserBtn(row) {
         type: "warning"
     }).then(() => {
         delUser({ ids: row.id }).then(res => {
-            if (res.code == 200) {
-                API.add("删除", "system_user");
-                getUserListData()
-                ElMessage({
-                    message: res.msg,
-                    type: "success"
-                })
-            } else {
-                ElMessage({
-                    message: res.msg,
-                    type: "warning"
-                })
-            }
+            API.add("删除", "system_user");
+            getUserListData()
+            ElMessage.success(res.msg)
         })
     })
 }
@@ -247,36 +199,18 @@ function selectionChange(value) {
     selectionChangeData.value = value
 }
 function delUserMoreBtn() {
-    if (selectionChangeData.value.length <= 0) {
-        ElMessage({
-            message: "请先选择要删除的数据",
-            type: "warning"
-        })
-        return
-    }
+    if (!selectionChangeData.value.length) return ElMessage.warning("请先选择要删除的数据")
+        
     ElMessageBox.confirm("是否确认删除?", "删除警告", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning"
     }).then(() => {
-        let arr = []
-        selectionChangeData.value.forEach(element => {
-            arr.push(element.id)
-        })
-        delUser({ ids: arr.join(",") }).then(res => {
-            if (res.code == 200) {
-                API.add("批量删除", "system_user");
-                getUserListData()
-                ElMessage({
-                    message: res.msg,
-                    type: "success"
-                })
-            } else {
-                ElMessage({
-                    message: res.msg,
-                    type: "warning"
-                })
-            }
+        const ids = selectionChangeData.value.map(element => element.id).join(",")
+        delUser({ ids }).then(res => {
+            API.add("批量删除", "system_user");
+            getUserListData()
+            ElMessage.success(res.msg)
         })
     })
 }
@@ -288,16 +222,9 @@ function resetUserPwdBtn(row) {
         type: "warning"
     }).then(() => {
         restPwdUser({ id: row.id }).then(res => {
-            if (res.code == 200) {
-                API.add("重置密码", "system_user");
-                getUserListData()
-                ElNotification.success({ title: "提示", message: `密码已重置,密码为:${res.data}` });
-            } else {
-                ElMessage({
-                    message: res.msg,
-                    type: "warning"
-                })
-            }
+            API.add("重置密码", "system_user");
+            getUserListData()
+            ElNotification.success({ title: "提示", message: `密码已重置,密码为:${res.data}` });
         })
     })
 }
@@ -310,13 +237,8 @@ function resetUserPwdBtn(row) {
             <el-scrollbar>
                 <el-form class="tjm_card_select_left" :model="params" label-width="80px" label-position="left">
                     <el-row :gutter="15">
-                        <!-- <el-col :lg="8" :md="12" :xs="24">
-                            <el-form-item label="用户编号">
-                                <el-input v-model="params.code" clearable placeholder="请输入用户编号"></el-input>
-                            </el-form-item>
-                        </el-col> -->
                         <el-col :lg="8" :md="12" :xs="24">
-                            <el-form-item label="用户名">
+                            <el-form-item label="用户名">
                                 <el-input v-model="params.userName" clearable placeholder="请输入用户名称"></el-input>
                             </el-form-item>
                         </el-col>
@@ -332,9 +254,9 @@ function resetUserPwdBtn(row) {
                         </el-col>
                         <el-col :lg="8" :md="12" :xs="24">
                             <el-form-item label="用户状态">
-                                <el-select v-model="params.status" clearable placeholder="请选择用户状态">
-                                    <el-option label="启用" value="1"></el-option>
-                                    <el-option label="禁用" value="2"></el-option>
+                                <el-select v-model="params.state" clearable placeholder="请选择用户状态">
+                                    <el-option label="启用" :value="0"></el-option>
+                                    <el-option label="禁用" :value="1"></el-option>
                                 </el-select>
                             </el-form-item>
                         </el-col> -->