Browse Source

update 优化 demo 界面代码

疯狂的狮子Li 1 year ago
parent
commit
07a9b6e612

+ 3 - 3
.prettierrc.cjs

@@ -38,9 +38,9 @@ module.exports = {
     htmlWhitespaceSensitivity: 'css',
     // Vue文件脚本和样式标签缩进
     vueIndentScriptAndStyle: false,
-    //在 windows 操作系统中换行符通常是回车 (CR) 加换行分隔符 (LF),也就是回车换行(CRLF),
-    //然而在 Linux 和 Unix 中只使用简单的换行分隔符 (LF)。
-    //对应的控制字符为 "\n" (LF) 和 "\r\n"(CRLF)。auto意为保持现有的行尾
+    // 在 windows 操作系统中换行符通常是回车 (CR) 加换行分隔符 (LF),也就是回车换行(CRLF),
+    // 然而在 Linux 和 Unix 中只使用简单的换行分隔符 (LF)。
+    // 对应的控制字符为 "\n" (LF) 和 "\r\n"(CRLF)。auto意为保持现有的行尾
     // 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
     endOfLine: 'auto'
 };

+ 0 - 55
src/api/demo/demo.ts

@@ -1,55 +0,0 @@
-import request from '@/utils/request';
-import { DemoForm, DemoQuery, DemoVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询测试单表列表
-export function listDemo(query: DemoQuery): AxiosPromise<DemoVO[]> {
-  return request({
-    url: '/demo/demo/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 自定义分页接口
-export function pageDemo(query: DemoQuery): AxiosPromise<DemoVO[]> {
-  return request({
-    url: '/demo/demo/page',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询测试单表详细
-export function getDemo(id: string | number): AxiosPromise<DemoVO> {
-  return request({
-    url: '/demo/demo/' + id,
-    method: 'get'
-  });
-}
-
-// 新增测试单表
-export function addDemo(data: DemoForm) {
-  return request({
-    url: '/demo/demo',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改测试单表
-export function updateDemo(data: DemoForm) {
-  return request({
-    url: '/demo/demo',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除测试单表
-export function delDemo(id: string | number | Array<string | number>) {
-  return request({
-    url: '/demo/demo/' + id,
-    method: 'delete'
-  });
-}

+ 62 - 0
src/api/demo/demo/index.ts

@@ -0,0 +1,62 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { DemoVO, DemoForm, DemoQuery } from '@/api/demo/demo/types';
+
+/**
+ * 查询测试单列表
+ * @param query
+ * @returns {*}
+ */
+export const listDemo = (query?: DemoQuery): AxiosPromise<DemoVO[]> => {
+  return request({
+    url: '/demo/demo/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询测试单详细
+ * @param id
+ */
+export const getDemo = (id: string | number): AxiosPromise<DemoVO> => {
+  return request({
+    url: '/demo/demo/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增测试单
+ * @param data
+ */
+export const addDemo = (data: DemoForm) => {
+  return request({
+    url: '/demo/demo',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改测试单
+ * @param data
+ */
+export const updateDemo = (data: DemoForm) => {
+  return request({
+    url: '/demo/demo',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除测试单
+ * @param id
+ */
+export const delDemo = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/demo/demo/' + id,
+    method: 'delete'
+  });
+};

+ 90 - 0
src/api/demo/demo/types.ts

@@ -0,0 +1,90 @@
+export interface DemoVO {
+  /**
+   * 主键
+   */
+  id: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId: string | number;
+
+  /**
+   * 用户id
+   */
+  userId: string | number;
+
+  /**
+   * 排序号
+   */
+  orderNum: number;
+
+  /**
+   * key键
+   */
+  testKey: string;
+
+  /**
+   * 值
+   */
+  value: string;
+}
+
+export interface DemoForm extends BaseEntity {
+  /**
+   * 主键
+   */
+  id?: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId?: string | number;
+
+  /**
+   * 用户id
+   */
+  userId?: string | number;
+
+  /**
+   * 排序号
+   */
+  orderNum?: number;
+
+  /**
+   * key键
+   */
+  testKey?: string;
+
+  /**
+   * 值
+   */
+  value?: string;
+}
+
+export interface DemoQuery extends PageQuery {
+  /**
+   * 部门id
+   */
+  deptId?: string | number;
+
+  /**
+   * 用户id
+   */
+  userId?: string | number;
+
+  /**
+   * 排序号
+   */
+  orderNum?: number;
+
+  /**
+   * key键
+   */
+  testKey?: string;
+
+  /**
+   * 值
+   */
+  value?: string;
+}

+ 0 - 46
src/api/demo/tree.ts

@@ -1,46 +0,0 @@
-import { AxiosPromise } from 'axios';
-import request from '@/utils/request';
-import { DemoTreeForm, DemoTreeVO, DemoTreeQuery } from './types';
-
-// 查询测试树表列表
-export function listTree(query?: DemoTreeQuery): AxiosPromise<DemoTreeVO[]> {
-  return request({
-    url: '/demo/tree/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询测试树表详细
-export function getTree(id: string | number): AxiosPromise<DemoTreeVO> {
-  return request({
-    url: '/demo/tree/' + id,
-    method: 'get'
-  });
-}
-
-// 新增测试树表
-export function addTree(data: DemoTreeForm) {
-  return request({
-    url: '/demo/tree',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改测试树表
-export function updateTree(data: DemoTreeForm) {
-  return request({
-    url: '/demo/tree',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除测试树表
-export function delTree(id: string | number | Array<string | number>) {
-  return request({
-    url: '/demo/tree/' + id,
-    method: 'delete'
-  });
-}

+ 62 - 0
src/api/demo/tree/index.ts

@@ -0,0 +1,62 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { TreeVO, TreeForm, TreeQuery } from '@/api/demo/tree/types';
+
+/**
+ * 查询测试树列表
+ * @param query
+ * @returns {*}
+ */
+export const listTree = (query?: TreeQuery): AxiosPromise<TreeVO[]> => {
+  return request({
+    url: '/demo/tree/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询测试树详细
+ * @param id
+ */
+export const getTree = (id: string | number): AxiosPromise<TreeVO> => {
+  return request({
+    url: '/demo/tree/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增测试树
+ * @param data
+ */
+export const addTree = (data: TreeForm) => {
+  return request({
+    url: '/demo/tree',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改测试树
+ * @param data
+ */
+export const updateTree = (data: TreeForm) => {
+  return request({
+    url: '/demo/tree',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除测试树
+ * @param id
+ */
+export const delTree = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/demo/tree/' + id,
+    method: 'delete'
+  });
+};

+ 75 - 0
src/api/demo/tree/types.ts

@@ -0,0 +1,75 @@
+export interface TreeVO {
+  /**
+   * 主键
+   */
+  id: string | number;
+
+  /**
+   * 父id
+   */
+  parentId: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId: string | number;
+
+  /**
+   * 用户id
+   */
+  userId: string | number;
+
+  /**
+   * 值
+   */
+  treeName: string;
+}
+
+export interface TreeForm extends BaseEntity {
+  /**
+   * 主键
+   */
+  id?: string | number;
+
+  /**
+   * 父id
+   */
+  parentId?: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId?: string | number;
+
+  /**
+   * 用户id
+   */
+  userId?: string | number;
+
+  /**
+   * 值
+   */
+  treeName?: string;
+}
+
+export interface TreeQuery {
+  /**
+   * 父id
+   */
+  parentId?: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId?: string | number;
+
+  /**
+   * 用户id
+   */
+  userId?: string | number;
+
+  /**
+   * 值
+   */
+  treeName?: string;
+}

+ 0 - 55
src/api/demo/types.ts

@@ -1,55 +0,0 @@
-export interface DemoVO extends BaseEntity {
-  id: number | string;
-  deptId: number | string;
-  userId: number | string;
-  orderNum: number;
-  testKey: string;
-  value: string;
-  createByName: string;
-  updateByName?: any;
-}
-
-export interface DemoQuery extends PageQuery {
-  testKey: string;
-  value: string;
-  createTime: string;
-}
-export interface DemoForm {
-  id: string | number | undefined;
-  deptId: string | number | undefined;
-  userId: string | number | undefined;
-  orderNum: number;
-  testKey: string;
-  value: string;
-  version: string;
-  ossConfigId: string | number | undefined;
-  createTime?: string;
-}
-
-export interface DemoTreeVO extends BaseEntity {
-  id: number | string;
-  parentId: number | string;
-  deptId: number | string;
-  userId: number | string;
-  treeName: string;
-  children?: DemoTreeVO[];
-}
-
-export interface DemoTreeQuery {
-  treeName: string;
-  createTime: string;
-}
-
-export interface DemoTreeForm {
-  id: string | number | undefined;
-  parentId: string | number | undefined;
-  deptId: string | number | undefined;
-  userId: string | number | undefined;
-  treeName: string;
-}
-
-export interface DemoTreeOptionsType {
-  id: string | number;
-  treeName: string;
-  children?: DemoTreeOptionsType[];
-}

+ 1 - 0
src/types/global.d.ts

@@ -57,6 +57,7 @@ declare global {
 
   interface BaseEntity {
     createBy?: any;
+    createDept?: any;
     createTime?: string;
     updateBy?: any;
     updateTime?: any;

+ 141 - 226
src/views/demo/demo/index.vue

@@ -3,26 +3,23 @@
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
       <div class="search" v-show="showSearch">
         <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
+          <el-form-item label="部门id" prop="deptId">
+            <el-input v-model="queryParams.deptId" placeholder="请输入部门id" clearable @keyup.enter="handleQuery" />
+          </el-form-item>
+          <el-form-item label="用户id" prop="userId">
+            <el-input v-model="queryParams.userId" placeholder="请输入用户id" clearable @keyup.enter="handleQuery" />
+          </el-form-item>
+          <el-form-item label="排序号" prop="orderNum">
+            <el-input v-model="queryParams.orderNum" placeholder="请输入排序号" clearable @keyup.enter="handleQuery" />
+          </el-form-item>
           <el-form-item label="key键" prop="testKey">
-            <el-input v-model="queryParams.testKey" placeholder="请输入key键" clearable style="width: 200px" @keyup.enter="handleQuery" />
+            <el-input v-model="queryParams.testKey" placeholder="请输入key键" clearable @keyup.enter="handleQuery" />
           </el-form-item>
           <el-form-item label="值" prop="value">
-            <el-input v-model="queryParams.value" placeholder="请输入值" clearable style="width: 200px" @keyup.enter="handleQuery" />
-          </el-form-item>
-          <el-form-item label="创建时间">
-            <el-date-picker
-              v-model="daterangeCreateTime"
-              value-format="YYYY-MM-DD HH:mm:ss"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-              :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
-            ></el-date-picker>
+            <el-input v-model="queryParams.value" placeholder="请输入值" clearable @keyup.enter="handleQuery" />
           </el-form-item>
           <el-form-item>
-            <el-button type="primary" icon="search" @click="handleQuery">搜索</el-button>
-            <el-button type="primary" icon="search" @click="handlePage">搜索(自定义分页接口)</el-button>
+            <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
             <el-button icon="Refresh" @click="resetQuery">重置</el-button>
           </el-form-item>
         </el-form>
@@ -39,12 +36,7 @@
             <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['demo:demo:edit']">修改</el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['demo:demo:remove']">
-              删除
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button type="info" plain icon="Upload" @click="handleImport" v-hasPermi="['demo:demo:import']">导入(校验)</el-button>
+            <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['demo:demo:remove']">删除</el-button>
           </el-col>
           <el-col :span="1.5">
             <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['demo:demo:export']">导出</el-button>
@@ -55,40 +47,33 @@
 
       <el-table v-loading="loading" :data="demoList" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55" align="center" />
-        <el-table-column label="主键" align="center" prop="id" v-if="columns[0].visible" />
-        <el-table-column label="部门id" align="center" prop="deptId" v-if="columns[1].visible" />
-        <el-table-column label="用户id" align="center" prop="userId" v-if="columns[2].visible" />
-        <el-table-column label="排序号" align="center" prop="orderNum" v-if="columns[3].visible" />
-        <el-table-column label="key键" align="center" prop="testKey" v-if="columns[4].visible" />
-        <el-table-column label="值" align="center" prop="value" v-if="columns[5].visible" />
-        <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="180">
-          <template #default="scope">
-            <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="创建人" align="center" prop="createByName" v-if="columns[7].visible" />
-        <el-table-column label="更新时间" align="center" prop="updateTime" v-if="columns[8].visible" width="180">
-          <template #default="scope">
-            <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="更新人" align="center" prop="updateByName" v-if="columns[9].visible" />
-        <el-table-column label="操作" fixed="right" align="center" width="150" class-name="small-padding fixed-width">
+        <el-table-column label="主键" align="center" prop="id" v-if="true" />
+        <el-table-column label="部门id" align="center" prop="deptId" />
+        <el-table-column label="用户id" align="center" prop="userId" />
+        <el-table-column label="排序号" align="center" prop="orderNum" />
+        <el-table-column label="key键" align="center" prop="testKey" />
+        <el-table-column label="值" align="center" prop="value" />
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
               <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['demo:demo:edit']"></el-button>
             </el-tooltip>
-            <el-tooltip content="修改" placement="top">
+            <el-tooltip content="删除" placement="top">
               <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['demo:demo:remove']"></el-button>
             </el-tooltip>
           </template>
         </el-table-column>
       </el-table>
 
-      <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
     </el-card>
-
-    <!-- 添加或修改测试单表对话框 -->
+    <!-- 添加或修改测试单对话框 -->
     <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
       <el-form ref="demoFormRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="部门id" prop="deptId">
@@ -106,10 +91,6 @@
         <el-form-item label="值" prop="value">
           <el-input v-model="form.value" placeholder="请输入值" />
         </el-form-item>
-        <el-form-item label="创建时间" prop="createTime">
-          <el-date-picker clearable v-model="form.createTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择创建时间">
-          </el-date-picker>
-        </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
@@ -118,39 +99,14 @@
         </div>
       </template>
     </el-dialog>
-    <!-- 用户导入对话框 -->
-    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
-      <el-upload
-        ref="uploadRef"
-        :limit="1"
-        accept=".xlsx, .xls"
-        :headers="upload.headers"
-        :action="upload.url + '?updateSupport=' + upload.updateSupport"
-        :disabled="upload.isUploading"
-        :on-progress="handleFileUploadProgress"
-        :on-success="handleFileSuccess"
-        :auto-upload="false"
-        drag
-      >
-        <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-      </el-upload>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitFileForm">确 定</el-button>
-          <el-button @click="upload.open = false">取 消</el-button>
-        </div>
-      </template>
-    </el-dialog>
   </div>
 </template>
 
 <script setup name="Demo" lang="ts">
-import { listDemo, pageDemo, getDemo, delDemo, addDemo, updateDemo } from "@/api/demo/demo";
-import { getToken } from "@/utils/auth";
-import { ComponentInternalInstance } from "vue";
-import { ElUpload, UploadFile, UploadFiles, DateModelType } from 'element-plus';
-import { DemoForm, DemoQuery, DemoVO } from "@/api/demo/types";
+import { listDemo, getDemo, delDemo, addDemo, updateDemo } from '@/api/demo/demo';
+import { DemoVO, DemoQuery, DemoForm } from '@/api/demo/demo/types';
+import { ComponentInternalInstance } from 'vue';
+import { ElForm } from 'element-plus';
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
@@ -158,200 +114,159 @@ const demoList = ref<DemoVO[]>([]);
 const buttonLoading = ref(false);
 const loading = ref(true);
 const showSearch = ref(true);
-const ids = ref<Array<string | number>>([])
+const ids = ref<Array<string | number>>([]);
 const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
-const daterangeCreateTime = ref<[DateModelType, DateModelType]>(['', '']);
 
-const demoFormRef = ref(ElForm);
 const queryFormRef = ref(ElForm);
-const uploadRef = ref(ElUpload);
+const demoFormRef = ref(ElForm);
 
 const dialog = reactive<DialogOption>({
-    visible: false,
-    title: ''
+  visible: false,
+  title: ''
 });
 
-/** 用户导入参数 */
-const upload = reactive<ImportOption>({
-    // 是否显示弹出层(用户导入)
-    open: false,
-    // 弹出层标题(用户导入)
-    title: "",
-    // 是否禁用上传
-    isUploading: false,
-    // 设置上传的请求头部
-    headers: { Authorization: "Bearer " + getToken() },
-    // 上传的地址
-    url: import.meta.env.VITE_APP_BASE_API + "demo/demo/importData"
-})
-
-// 列显隐信息
-const columns = ref<FieldOption[]>([
-    { key: 0, label: `主键`, visible: false },
-    { key: 1, label: `部门id`, visible: true },
-    { key: 2, label: `用户id`, visible: true },
-    { key: 3, label: `排序号`, visible: true },
-    { key: 4, label: `key键`, visible: true },
-    { key: 5, label: `值`, visible: true },
-    { key: 6, label: `创建时间`, visible: true },
-    { key: 7, label: `创建人`, visible: true },
-    { key: 8, label: `更新时间`, visible: true },
-    { key: 9, label: `更新人`, visible: true }
-]);
-
-const initDataForm: DemoForm = {
-    id: undefined,
-    deptId: undefined,
-    userId: undefined,
-    orderNum: 0,
-    testKey: '',
-    value: '',
-    version: '',
-    ossConfigId: undefined,
+const initFormData: DemoForm = {
+  id: undefined,
+  deptId: undefined,
+  userId: undefined,
+  orderNum: undefined,
+  testKey: undefined,
+  value: undefined,
 }
 const data = reactive<PageData<DemoForm, DemoQuery>>({
-    form: { ...initDataForm },
-    queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        testKey: '',
-        value: '',
-        createTime: '',
-    },
-    rules: {
-        testKey: [{ required: true, message: "key键不能为空", trigger: "blur" }],
-        value: [{ required: true, message: "值不能为空", trigger: "blur" }],
-    }
+  form: {...initFormData},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    deptId: undefined,
+    userId: undefined,
+    orderNum: undefined,
+    testKey: undefined,
+    value: undefined,
+  },
+  rules: {
+    id: [
+      { required: true, message: "主键不能为空", trigger: "blur" }
+    ],
+    deptId: [
+      { required: true, message: "部门id不能为空", trigger: "blur" }
+    ],
+    userId: [
+      { required: true, message: "用户id不能为空", trigger: "blur" }
+    ],
+    orderNum: [
+      { required: true, message: "排序号不能为空", trigger: "blur" }
+    ],
+    testKey: [
+      { required: true, message: "key键不能为空", trigger: "blur" }
+    ],
+    value: [
+      { required: true, message: "值不能为空", trigger: "blur" }
+    ],
+  }
 });
 
 const { queryParams, form, rules } = toRefs(data);
 
-/** 查询OSS对象存储列表 */
+/** 查询测试单列表 */
 const getList = async () => {
-    loading.value = true;
-    const res = await listDemo(proxy?.addDateRange(queryParams.value, daterangeCreateTime.value, "CreateTime"));
-    demoList.value = res.rows;
-    total.value = res.total;
-    loading.value = false;
-}
-/** 自定义分页查询 */
-const getPage = async () => {
-    loading.value = true;
-    const res = await pageDemo(proxy?.addDateRange(queryParams.value, daterangeCreateTime.value, "CreateTime"));
-    demoList.value = res.rows;
-    total.value = res.total;
-    loading.value = false;
+  loading.value = true;
+  const res = await listDemo(queryParams.value);
+  demoList.value = res.rows;
+  total.value = res.total;
+  loading.value = false;
 }
+
 /** 取消按钮 */
 const cancel = () => {
-    reset();
-    dialog.visible = false;
+  reset();
+  dialog.visible = false;
 }
+
 /** 表单重置 */
 const reset = () => {
-    form.value = { ...initDataForm };
-    demoFormRef.value.resetFields();
+  form.value = {...initFormData};
+  demoFormRef.value.resetFields();
 }
+
 /** 搜索按钮操作 */
 const handleQuery = () => {
-    queryParams.value.pageNum = 1;
-    getList();
-}
-/** 搜索按钮操作 */
-const handlePage = () => {
-    queryParams.value.pageNum = 1;
-    getList();
+  queryParams.value.pageNum = 1;
+  getList();
 }
+
 /** 重置按钮操作 */
 const resetQuery = () => {
-    daterangeCreateTime.value = ['', ''];
-    queryFormRef.value.resetFields();
-    handleQuery();
+  queryFormRef.value.resetFields();
+  handleQuery();
 }
-/** 选择条数  */
+
+/** 多选框选中数据 */
 const handleSelectionChange = (selection: DemoVO[]) => {
-    ids.value = selection.map(item => item.id);
-    single.value = selection.length != 1;
-    multiple.value = !selection.length;
+  ids.value = selection.map(item => item.id);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
 }
+
 /** 新增按钮操作 */
 const handleAdd = () => {
-    dialog.visible = true;
-    dialog.title = "添加测试单";
-    nextTick(() => {
-        reset();
-    })
+  dialog.visible = true;
+  dialog.title = "添加测试单";
+  nextTick(() => {
+    reset();
+  });
 }
+
 /** 修改按钮操作 */
-const handleUpdate = async (row?: DemoVO) => {
-    loading.value = true;
-    dialog.visible = true;
-    dialog.title = "修改测试单";
-    const _ids = row?.id || ids.value[0];
-    const res = await getDemo(_ids);
-    nextTick(() => {
-        reset();
-        Object.assign(form.value, res.data)
-        loading.value = false;
-    })
+const handleUpdate = (row?: DemoVO) => {
+  loading.value = true
+  dialog.visible = true;
+  dialog.title = "修改测试单";
+  nextTick(async () => {
+    reset();
+    const _id = row?.id || ids.value[0]
+    const res = await getDemo(_id);
+    loading.value = false;
+    Object.assign(form.value, res.data);
+  });
 }
+
 /** 提交按钮 */
 const submitForm = () => {
-    demoFormRef.value.validate(async (valid: boolean) => {
-        if (valid) {
-            buttonLoading.value = true;
-            if (form.value.ossConfigId) {
-                await updateDemo(form.value).finally(() => buttonLoading.value = false);
-            } else {
-                await addDemo(form.value).finally(() => buttonLoading.value = false);
-            }
-            proxy?.$modal.msgSuccess("操作成功");
-            dialog.visible = false;
-            getList();
-        }
-    });
+  demoFormRef.value.validate(async (valid: boolean) => {
+    if (valid) {
+      buttonLoading.value = true;
+      if (form.value.id) {
+        await updateDemo(form.value).finally(() =>  buttonLoading.value = false);
+      } else {
+        await addDemo(form.value).finally(() =>  buttonLoading.value = false);
+      }
+      proxy?.$modal.msgSuccess("修改成功");
+      dialog.visible = false;
+      await getList();
+    }
+  });
 }
+
 /** 删除按钮操作 */
 const handleDelete = async (row?: DemoVO) => {
-    const _ids = row?.id || ids.value;
-    await proxy?.$modal.confirm('是否确认删除测试单表编号为"' + _ids + '"的数据项?');
-    await delDemo(_ids).finally(() => loading.value = false);
-    loading.value = false;
-    getList();
-    proxy?.$modal.msgSuccess("删除成功");
-}
-/** 导入按钮操作 */
-const handleImport = () => {
-    upload.title = "测试导入";
-    upload.open = true;
+  const _ids = row?.id || ids.value;
+  await proxy?.$modal.confirm('是否确认删除测试单编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
+  await delDemo(_ids);
+  proxy?.$modal.msgSuccess("删除成功");
+  await getList();
 }
+
 /** 导出按钮操作 */
 const handleExport = () => {
-    proxy?.download("demo/demo/export", {
-        ...queryParams.value,
-    }, `demo_${new Date().getTime()}.xlsx`);
-}
-/**文件上传中处理 */
-const handleFileUploadProgress = () => {
-    upload.isUploading = true;
-}
-/** 文件上传成功处理 */
-const handleFileSuccess = (res: any, file: UploadFile, fileList: UploadFiles) => {
-    upload.open = false;
-    upload.isUploading = false;
-    uploadRef.value.clearFiles();
-    ElMessageBox.alert(res.msg, "导入结果", { dangerouslyUseHTMLString: true });
-    getList();
-}
-/** 提交上传文件 */
-function submitFileForm() {
-    uploadRef.value.submit();
+  proxy?.download('demo/demo/export', {
+    ...queryParams.value
+  }, `demo_${new Date().getTime()}.xlsx`)
 }
 
 onMounted(() => {
-    getList()
-    getPage()
-})
+  getList();
+});
 </script>

+ 155 - 171
src/views/demo/tree/index.vue

@@ -2,23 +2,12 @@
   <div class="p-2">
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
       <div class="search" v-show="showSearch">
-        <el-form :model="queryParams" ref="qeuryFormRef" :inline="true" label-width="68px">
+        <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
           <el-form-item label="树节点名" prop="treeName">
-            <el-input v-model="queryParams.treeName" placeholder="请输入树节点名" clearable style="width: 200px" @keyup.enter="handleQuery" />
-          </el-form-item>
-          <el-form-item label="创建时间">
-            <el-date-picker
-              v-model="daterangeCreateTime"
-              value-format="YYYY-MM-DD HH:mm:ss"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-              :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
-            ></el-date-picker>
+            <el-input v-model="queryParams.treeName" placeholder="请输入树节点名" clearable @keyup.enter="handleQuery" />
           </el-form-item>
           <el-form-item>
-            <el-button type="primary" icon="search" @click="handleQuery">搜索</el-button>
+            <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
             <el-button icon="Refresh" @click="resetQuery">重置</el-button>
           </el-form-item>
         </el-form>
@@ -27,62 +16,54 @@
 
     <el-card shadow="never">
       <template #header>
-        <el-row :gutter="10">
+        <el-row :gutter="10" class="mb8">
           <el-col :span="1.5">
             <el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['demo:tree:add']">新增</el-button>
           </el-col>
           <el-col :span="1.5">
             <el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
           </el-col>
-          <right-toolbar :columns="columns" v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+          <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
       </template>
-
       <el-table
-        v-if="refreshTable"
         v-loading="loading"
         :data="treeList"
         row-key="id"
         :default-expand-all="isExpandAll"
-        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
-        ref="demoTreeTableRef"
+        :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+        ref="treeTableRef"
       >
-        <el-table-column label="父id" prop="parentId" v-if="columns[0].visible" />
-        <el-table-column label="部门id" align="center" prop="deptId" v-if="columns[1].visible" />
-        <el-table-column label="用户id" align="center" prop="userId" v-if="columns[2].visible" />
-        <el-table-column label="树节点名" align="center" prop="treeName" v-if="columns[3].visible" />
-        <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[4].visible" width="180">
-          <template #default="scope">
-            <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" fixed="right" align="center" width="150" class-name="small-padding fixed-width">
+        <el-table-column label="父id" align="center" prop="parentId" />
+        <el-table-column label="部门id" align="center" prop="deptId" />
+        <el-table-column label="用户id" align="center" prop="userId" />
+        <el-table-column label="树节点名" align="center" prop="treeName" />
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
-              <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['demo:tree:edit']"></el-button>
+              <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['demo:tree:edit']" />
             </el-tooltip>
             <el-tooltip content="新增" placement="top">
-              <el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['demo:tree:add']"></el-button>
+              <el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['demo:tree:add']" />
             </el-tooltip>
             <el-tooltip content="删除" placement="top">
-              <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['demo:tree:remove']"></el-button>
+              <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['demo:tree:remove']" />
             </el-tooltip>
           </template>
         </el-table-column>
       </el-table>
     </el-card>
-
-    <!-- 添加或修改测试树表对话框 -->
+    <!-- 添加或修改测试树对话框 -->
     <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
-      <el-form ref="treeRef" :model="form" :rules="rules" label-width="80px">
+      <el-form ref="treeFormRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="父id" prop="parentId">
           <el-tree-select
             v-model="form.parentId"
             :data="treeOptions"
             :props="{ value: 'id', label: 'treeName', children: 'children' }"
             value-key="id"
-            check-strictly
             placeholder="请选择父id"
+            check-strictly
           />
         </el-form-item>
         <el-form-item label="部门id" prop="deptId">
@@ -91,8 +72,8 @@
         <el-form-item label="用户id" prop="userId">
           <el-input v-model="form.userId" placeholder="请输入用户id" />
         </el-form-item>
-        <el-form-item label="树节点名" prop="treeName">
-          <el-input v-model="form.treeName" placeholder="请输入树节点名" />
+        <el-form-item label="" prop="treeName">
+          <el-input v-model="form.treeName" placeholder="请输入" />
         </el-form-item>
       </el-form>
       <template #footer>
@@ -106,188 +87,191 @@
 </template>
 
 <script setup name="Tree" lang="ts">
-import { listTree, getTree, delTree, addTree, updateTree } from '@/api/demo/tree';
-import { DemoTreeVO, DemoTreeForm, DemoTreeOptionsType, DemoTreeQuery } from '@/api/demo/types';
+import { listTree, getTree, delTree, addTree, updateTree } from "@/api/demo/tree";
+import { TreeVO, TreeQuery, TreeForm } from '@/api/demo/tree/types';
 import { ComponentInternalInstance } from 'vue';
-import { ElTree, ElForm, ElTable, DateModelType } from 'element-plus';
+import { ElForm, ElTable } from 'element-plus';
+
+
+type TreeOption = {
+  id: number;
+  treeName: string;
+  children?: TreeOption[];
+}
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;;
 
-const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
-const treeList = ref<DemoTreeVO[]>([]);
+const treeList = ref<TreeVO[]>([]);
+const treeOptions = ref<TreeOption[]>([]);
 const buttonLoading = ref(false);
-const loading = ref(true);
 const showSearch = ref(true);
 const isExpandAll = ref(true);
-const refreshTable = ref(true);
-const treeOptions = ref<DemoTreeOptionsType[]>([]);
-const daterangeCreateTime = ref<[DateModelType, DateModelType]>(['', '']);
+const loading = ref(false);
 
-const treeRef = ref(ElTree);
-const qeuryFormRef = ref(ElForm);
-const demoTreeTableRef = ref(ElTable)
+const queryFormRef = ref(ElForm);
+const treeFormRef = ref(ElForm);
+const treeTableRef = ref(ElTable)
 
 const dialog = reactive<DialogOption>({
     visible: false,
     title: ''
 });
 
-// 列显隐信息
-const columns = ref<FieldOption[]>([
-    { key: 0, label: `父id`, visible: false },
-    { key: 1, label: `部门id`, visible: true },
-    { key: 2, label: `用户id`, visible: true },
-    { key: 3, label: `树节点名`, visible: true },
-    { key: 4, label: `创建时间`, visible: true }
-]);
 
-const initFormData = {
+const initFormData: TreeForm = {
     id: undefined,
     parentId: undefined,
     deptId: undefined,
     userId: undefined,
-    treeName: ''
+    treeName: undefined,
 }
 
-const data = reactive<PageData<DemoTreeForm, DemoTreeQuery>>({
-    // 查询参数
-    queryParams: {
-        treeName: '',
-        createTime: '',
-    },
-    // 表单参数
-    form: {...initFormData},
-    // 表单校验
-    rules: {
-        treeName: [{ required: true, message: "树节点名不能为空", trigger: "blur" }],
-    }
+const data = reactive<PageData<TreeForm, TreeQuery>>({
+  form: {...initFormData},
+  queryParams: {
+    parentId: undefined,
+    deptId: undefined,
+    userId: undefined,
+    treeName: undefined,
+  },
+  rules: {
+    id: [
+      { required: true, message: "主键不能为空", trigger: "blur" }
+    ],
+    parentId: [
+      { required: true, message: "父id不能为空", trigger: "blur" }
+    ],
+    deptId: [
+      { required: true, message: "部门id不能为空", trigger: "blur" }
+    ],
+    userId: [
+      { required: true, message: "用户id不能为空", trigger: "blur" }
+    ],
+    treeName: [
+      { required: true, message: "值不能为空", trigger: "blur" }
+    ],
+  }
 });
 
 const { queryParams, form, rules } = toRefs(data);
-/** 查询测试树表列表 */
-const getList = () => {
-    loading.value = true;
-    listTree(proxy?.addDateRange(queryParams.value, daterangeCreateTime.value, "CreateTime")).then(res => {
-        const data = proxy?.handleTree<DemoTreeVO>(res.data, "id", "parentId");
-        if (data) {
-            treeList.value = data
-        }
-        loading.value = false;
-    });
+
+/** 查询测试树列表 */
+const getList = async () => {
+  loading.value = true;
+  const res = await listTree(queryParams.value);
+  const data = proxy?.handleTree<TreeVO>(res.data, "id", "parentId");
+  if (data) {
+    treeList.value = data;
+    loading.value = false;
+  }
 }
 
-/** 查询部门下拉树结构 */
-const getTreeSelect = async () => {
-    listTree(proxy?.addDateRange(queryParams.value, daterangeCreateTime.value, "CreateTime")).then(res => {
-        const topData: DemoTreeOptionsType = { id: 0, treeName: '顶级节点', children: [] };
-        topData.children = proxy?.handleTree<DemoTreeOptionsType>(res.data, "id", "parentId");
-        treeOptions.value.push(topData);
-    });
+/** 查询测试树下拉树结构 */
+const getTreeselect = async () => {
+  const res = await listTree();
+  treeOptions.value = [];
+  const data: TreeOption = { id: 0, treeName: '顶级节点', children: [] };
+  data.children = proxy?.handleTree<TreeOption>(res.data, "id", "parentId");
+  treeOptions.value.push(data);
 }
-/** 取消按钮 */
+
+// 取消按钮
 const cancel = () => {
-    reset();
-    dialog.visible = false;
+  reset();
+  dialog.visible = false;
 }
-/** 表单重置 */
+
+// 表单重置
 const reset = () => {
-    form.value = {...initFormData}
-    treeRef.value.resetFields();
+  form.value = {...initFormData}
+  treeFormRef.value.resetFields();
 }
+
 /** 搜索按钮操作 */
 const handleQuery = () => {
-    getList();
+  getList();
 }
+
 /** 重置按钮操作 */
 const resetQuery = () => {
-    daterangeCreateTime.value = ['', ''];
-    qeuryFormRef.value.resetFields();
-    handleQuery();
+  queryFormRef.value.resetFields();
+  handleQuery();
 }
+
 /** 新增按钮操作 */
-const handleAdd = (row?: DemoTreeVO) => {
-    dialog.visible = true;
-    dialog.title = "添加测试树";
-    nextTick(() => {
-        reset();
-        getTreeSelect();
-        if (row != null && row.id) {
-            form.value.parentId = row.id;
-        } else {
-            form.value.parentId = 0;
-        }
-    })
+const handleAdd = (row?: TreeVO) => {
+  dialog.visible = true;
+  dialog.title = "添加测试树";
+  nextTick(() => {
+    reset();
+    getTreeselect();
+    if (row != null && row.id) {
+      form.value.parentId = row.id;
+    } else {
+      form.value.parentId = 0;
+    }
+  });
 }
 
 /** 展开/折叠操作 */
 const handleToggleExpandAll = () => {
-    isExpandAll.value = !isExpandAll.value;
-    toggleExpandAll(treeList.value, isExpandAll.value)
+  isExpandAll.value = !isExpandAll.value;
+  toggleExpandAll(treeList.value, isExpandAll.value)
 }
-/** 展开/折叠所有 */
-const toggleExpandAll = (data: DemoTreeVO[], status: boolean) => {
-    data.forEach((item) => {
-        demoTreeTableRef.value.toggleRowExpansion(item, status)
-        if(item.children && item.children.length > 0) toggleExpandAll(item.children, status)
-    })
+
+/** 展开/折叠操作 */
+const toggleExpandAll = (data: TreeVO[], status: boolean) => {
+  data.forEach((item) => {
+    treeTableRef.value.toggleRowExpansion(item, status)
+    if (item.children && item.children.length > 0) toggleExpandAll(item.children, status)
+  })
 }
 
 /** 修改按钮操作 */
-const handleUpdate = async (row: DemoTreeVO) => {
-    loading.value = true;
-    dialog.visible = true;
-    dialog.title = "修改测试树表";
-    nextTick(async () => {
-        reset();
-        getTreeSelect();
-        if (row) {
-            form.value.parentId = row.id;
-        }
-        getTree(row.id).then((response) => {
-            loading.value = false;
-            form.value = response.data;
-
-        });
-    })
+const handleUpdate = (row: TreeVO) => {
+  loading.value = true;
+  dialog.visible = true;
+  dialog.title = "修改测试树";
+  nextTick(async () => {
+    reset();
+    await getTreeselect();
+    if (row != null) {
+      form.value.parentId = row.id;
+    }
+    const res = await getTree(row.id);
+    loading.value = false;
+    Object.assign(form.value, res.data);
+  });
 }
+
 /** 提交按钮 */
 const submitForm = () => {
-    treeRef.value.validate((valid: boolean) => {
-        if (valid) {
-            buttonLoading.value = true;
-            if (form.value.id != null) {
-                updateTree(form.value).then(() => {
-                    proxy?.$modal.msgSuccess("修改成功");
-                    dialog.visible = false;
-                    getList();
-                }).finally(() => {
-                    buttonLoading.value = false;
-                });
-            } else {
-                addTree(form.value).then(() => {
-                    proxy?.$modal.msgSuccess("新增成功");
-                    dialog.visible = false;
-                    getList();
-                }).finally(() => {
-                    buttonLoading.value = false;
-                });
-            }
-        }
-    });
+  treeFormRef.value.validate((valid: boolean) => {
+    if (valid) {
+      buttonLoading.value = true;
+      if (form.value.id) {
+        updateTree(form.value).finally(() => buttonLoading.value = false);
+      } else {
+        addTree(form.value).finally(() => buttonLoading.value = false);
+      }
+      proxy?.$modal.msgSuccess("操作成功");
+      dialog.visible = false;
+      getList();
+    }
+  });
 }
+
 /** 删除按钮操作 */
-const handleDelete = (row: DemoTreeVO) => {
-    proxy?.$modal.confirm('是否确认删除测试单表编号为"' + row.id + '"的数据项?').then(() => {
-        loading.value = true;
-        return delTree(row.id);
-    }).then(() => {
-        loading.value = false;
-        getList();
-        proxy?.$modal.msgSuccess("删除成功");
-    }).finally(() => {
-        loading.value = false;
-    });
+const handleDelete = async (row: TreeVO) => {
+  await proxy?.$modal.confirm('是否确认删除测试树编号为"' + row.id + '"的数据项?');
+  loading.value = true;
+  await delTree(row.id).finally(() => loading.value = false);
+  await getList();
+  proxy?.$modal.msgSuccess("删除成功");
 }
+
 onMounted(() => {
-    getList()
-})
+  getList();
+});
 </script>