xiaoma 3 лет назад
Родитель
Сommit
005c9d0025

+ 2 - 2
.env

@@ -2,10 +2,10 @@
 VITE_PORT = 8001
 
 # spa-title
-VITE_GLOB_APP_TITLE = NaiveAdminElementFull
+VITE_GLOB_APP_TITLE = NaiveAdminElementTenant
 
 # spa shortname
-VITE_GLOB_APP_SHORT_NAME = NaiveAdminElementFull
+VITE_GLOB_APP_SHORT_NAME = NaiveAdminElementTenant
 
 # 生产环境 开启mock
 VITE_GLOB_PROD_MOCK = true

+ 5 - 0
src/layout/components/Header/index.vue

@@ -127,6 +127,7 @@
           <div class="flex items-center">
             <h4 class="username">{{ getUsername }}</h4>
             <el-divider direction="vertical" />
+            <h4 class="mr-1 username">{{ getTenantName }}</h4>
             <div class="avatar">
               <el-avatar round :src="schoolboy" />
             </div>
@@ -246,6 +247,10 @@
     return userStore.getUserInfo.username;
   });
 
+  const getTenantName = computed(() => {
+    return userStore.getUserInfo.tenantName;
+  });
+
   const getInverted = computed(() => {
     const navTheme = unref(getNavTheme);
     return ['light', 'header-dark'].includes(navTheme) ? props.inverted : !props.inverted;

+ 1 - 1
src/store/modules/user.ts

@@ -45,7 +45,7 @@ export const useUserStore = defineStore({
     getPermissions(): [any][] {
       return this.permissions;
     },
-    getUserInfo(): object {
+    getUserInfo(): any {
       return this.info;
     },
   },

+ 1 - 0
src/views/comp/form/basic.vue

@@ -203,6 +203,7 @@
   ];
 
   function handleSubmit(values: Recordable) {
+    if (!values) return;
     ElMessage.success(JSON.stringify(values));
   }
 

+ 1 - 1
src/views/comp/modal/index.vue

@@ -236,7 +236,7 @@
     } else {
       ElMessage({
         message: '验证失败,请填写完整信息',
-        type: 'error',
+        type: 'danger',
       });
       setSubLoading(false);
     }

+ 1 - 1
src/views/form/stepForm/Step1.vue

@@ -117,7 +117,7 @@
       } else {
         ElMessage({
           message: '验证失败,请填写完整信息',
-          type: 'error',
+          type: 'danger',
         });
       }
     });

+ 1 - 1
src/views/form/stepForm/Step2.vue

@@ -71,7 +71,7 @@
       } else {
         ElMessage({
           message: '验证失败,请填写完整信息',
-          type: 'error',
+          type: 'danger',
         });
       }
     });

+ 3 - 7
src/views/list/basicList/index.vue

@@ -49,17 +49,13 @@
         class="py-4"
       >
         <el-form-item label="名称" path="name">
-          <el-input placeholder="请输入名称" v-model:value="formParams.name" />
+          <el-input placeholder="请输入名称" v-model="formParams.name" />
         </el-form-item>
         <el-form-item label="地址" path="address">
-          <el-input type="textarea" placeholder="请输入地址" v-model:value="formParams.address" />
+          <el-input type="textarea" placeholder="请输入地址" v-model="formParams.address" />
         </el-form-item>
         <el-form-item label="日期" path="date">
-          <el-date-picker
-            type="datetime"
-            placeholder="请选择日期"
-            v-model:value="formParams.date"
-          />
+          <el-date-picker type="datetime" placeholder="请选择日期" v-model="formParams.date" />
         </el-form-item>
       </el-form>
 

+ 1 - 1
src/views/login/LoginForm.vue

@@ -143,7 +143,7 @@
       } else {
         ElMessage({
           message: '请填写完整信息',
-          type: 'error',
+          type: 'danger',
         });
       }
     });

+ 3 - 8
src/views/login/LoginForm2.vue

@@ -167,7 +167,7 @@
   ];
 
   const formInline = reactive({
-    username: 'test',
+    username: 'bj',
     password: '123456',
     verCode: '',
     vercodeType: 5,
@@ -250,7 +250,7 @@
       } else {
         ElMessage({
           message: '请填写完整信息',
-          type: 'error',
+          type: 'danger',
         });
       }
     });
@@ -281,13 +281,8 @@
     margin-top: -10px;
   }
   .login-form {
-    .el-input {
+    :deep(.el-input) {
       --el-input-border-radius: 20px !important;
     }
-    .el-select {
-      .el-input {
-        --el-input-border-radius: 20px !important;
-      }
-    }
   }
 </style>

+ 1 - 1
src/views/login/RegisterForm.vue

@@ -144,7 +144,7 @@
         loading.value = false;
         ElMessage({
           message: '请填写完整信息',
-          type: 'error',
+          type: 'danger',
         });
       }
     });

+ 1 - 1
src/views/login/RegisterForm2.vue

@@ -143,7 +143,7 @@
         loading.value = false;
         ElMessage({
           message: '请填写完整信息',
-          type: 'error',
+          type: 'danger',
         });
       }
     });

+ 2 - 3
src/views/system/logs/columns.ts

@@ -26,8 +26,7 @@ export const columns: BasicColumn[] = [
       return h(
         ElPopover,
         {
-          placement: 'bottom',
-          trigger: 'hover',
+          width: 350,
           style: { 'max-width': '550px' },
           'content-style': {
             'word-break': 'break-all',
@@ -35,7 +34,7 @@ export const columns: BasicColumn[] = [
           scrollable: true,
         },
         {
-          trigger: () => h(ElButton, {}, { default: () => '查看参数' }),
+          reference: () => h(ElButton, {}, { default: () => '查看参数' }),
           default: () => `${record.row.parameter}`,
         },
       );

+ 1 - 1
src/views/system/logs/logininfor.vue

@@ -4,7 +4,7 @@
       <el-space align="center">
         <el-input
           :style="{ width: '320px' }"
-          v-model:value="params.userName"
+          v-model="params.userName"
           clearable
           placeholder="请输入用户名称"
           @keyup.enter="reloadTable"

+ 15 - 17
src/views/system/logs/operlog.vue

@@ -2,23 +2,21 @@
   <PageWrapper>
     <el-card :bordered="false" class="mb-3 proCard">
       <el-space align="center">
-        <el-input-group style="width: 380px">
-          <el-input
-            :style="{ width: '100%' }"
-            v-model:value="params.operator"
-            clearable
-            placeholder="请输入操作人"
-            @keyup.enter="reloadTable"
-          />
-          <el-button type="primary" @click="reloadTable">
-            <template #icon>
-              <el-icon>
-                <SearchOutlined />
-              </el-icon>
-            </template>
-            查询
-          </el-button>
-        </el-input-group>
+        <el-input
+          :style="{ width: '320px' }"
+          v-model="params.operator"
+          clearable
+          placeholder="请输入操作人"
+          @keyup.enter="reloadTable"
+        />
+        <el-button type="primary" @click="reloadTable">
+          <template #icon>
+            <el-icon>
+              <SearchOutlined />
+            </el-icon>
+          </template>
+          查询
+        </el-button>
       </el-space>
     </el-card>
     <el-card :bordered="false" class="proCard">

+ 2 - 2
src/views/system/online/online.vue

@@ -4,7 +4,7 @@
       <el-space align="center">
         <el-input
           :style="{ width: '320px' }"
-          v-model:value="params.keyword"
+          v-model="params.keyword"
           clearable
           placeholder="请输入用户名称"
           @keyup.enter="reloadTable"
@@ -59,7 +59,7 @@
         actions: [
           {
             label: '强退',
-            type: 'error',
+            type: 'danger',
             isConfirm: true,
             popConfirm: {
               onConfirm: handleLogOut.bind(null, record.row),

+ 8 - 4
src/views/system/tasks/list.vue

@@ -76,7 +76,7 @@
   const actionColumn: BasicColumn = reactive({
     width: 150,
     title: '操作',
-    key: 'action',
+    prop: 'action',
     fixed: 'right',
     render(record) {
       return h(TableAction as any, {
@@ -84,13 +84,17 @@
         actions: [
           {
             label: '删除',
-            onPositiveClick: handleDelete.bind(null, record),
             isConfirm: true,
-            confirmContent: '您确定要删除吗?',
+            popConfirm: {
+              onConfirm: handleDelete.bind(null, record.row),
+              title: '您确定要删除吗?',
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+            },
           },
           {
             label: '编辑',
-            onClick: handleEdit.bind(null, record),
+            onClick: handleEdit.bind(null, record.row),
           },
         ],
       });

+ 46 - 37
src/views/system/tenant/CreateDrawer.vue

@@ -7,22 +7,32 @@
       label-placement="left"
       :label-width="80"
     >
-      <el-form-item label="租户编码" path="tenantCode">
-        <el-input placeholder="请输入租户编码" v-model:value="formParams.tenantCode" />
+      <el-form-item label="租户编码" prop="tenantCode">
+        <el-input placeholder="请输入租户编码" v-model="formParams.tenantCode" />
       </el-form-item>
-      <el-form-item label="租户名称" path="tenantName">
-        <el-input placeholder="请输入租户名称" v-model:value="formParams.tenantName" />
+      <el-form-item label="租户名称" prop="tenantName">
+        <el-input placeholder="请输入租户名称" v-model="formParams.tenantName" />
       </el-form-item>
-      <el-form-item label="开始时间" path="beginDate">
-        <el-date-picker v-model:value="formParams.beginDate" type="datetime" clearable />
+      <el-form-item label="开始时间" prop="beginDate">
+        <el-date-picker
+          v-model="formParams.beginDate"
+          type="datetime"
+          clearable
+          placeholder="请选择开始时间"
+        />
       </el-form-item>
-      <el-form-item label="结束时间" path="endDate">
-        <el-date-picker v-model:value="formParams.endDate" type="datetime" clearable />
+      <el-form-item label="结束时间" prop="endDate">
+        <el-date-picker
+          v-model="formParams.endDate"
+          type="datetime"
+          clearable
+          placeholder="请选择结束时间"
+        />
       </el-form-item>
-      <el-form-item label="状态" path="tenantStatus">
-        <el-radio-group v-model:value="formParams.tenantStatus" name="tenantStatusGroup">
-          <el-radio-button :key="0" :value="0">启用</el-radio-button>
-          <el-radio-button :key="1" :value="1">禁用</el-radio-button>
+      <el-form-item label="状态" prop="tenantStatus">
+        <el-radio-group v-model="formParams.tenantStatus" name="tenantStatusGroup">
+          <el-radio-button :key="0" :label="0">启用</el-radio-button>
+          <el-radio-button :key="1" :label="1">禁用</el-radio-button>
         </el-radio-group>
       </el-form-item>
     </el-form>
@@ -86,9 +96,9 @@
   });
 
   const defaultValueRef = () => ({
-    tenantId: null,
-    beginDate: null,
-    endDate: null,
+    tenantId: undefined,
+    beginDate: undefined,
+    endDate: undefined,
     tenantCode: '',
     tenantStatus: 0,
     tenantName: '',
@@ -115,34 +125,33 @@
   }
 
   function formSubmit() {
-    formRef.value.validate((errors) => {
-      if (!errors) {
-        const params = cloneDeep(formParams.value);
-        params.beginDate = formatToDateTime(params.beginDate);
-        params.endDate = formatToDateTime(params.endDate);
-        if (formParams.value.tenantId) {
-          editTenant(params).then((_) => {
-            message.success('编辑成功');
-            emit('change');
-            handleReset();
-            closeDrawer();
-          });
-        } else {
-          addTenant(params).then((_) => {
-            message.success('添加成功');
-            emit('change');
-            handleReset();
-            closeDrawer();
-          });
-        }
+    formRef.value.validate((valid) => {
+      if (!valid) {
+        return message.error('请填写完整信息');
+      }
+      const params = cloneDeep(formParams.value);
+      params.beginDate = formatToDateTime(params.beginDate);
+      params.endDate = formatToDateTime(params.endDate);
+      if (formParams.value.tenantId) {
+        editTenant(params).then((_) => {
+          message.success('编辑成功');
+          emit('change');
+          handleReset();
+          closeDrawer();
+        });
       } else {
-        message.error('请填写完整信息');
+        addTenant(params).then((_) => {
+          message.success('添加成功');
+          emit('change');
+          handleReset();
+          closeDrawer();
+        });
       }
     });
   }
 
   function handleReset() {
-    formRef.value.restoreValidation();
+    formRef.value.resetFields();
     formParams.value = Object.assign(formParams.value, defaultValueRef());
   }
 

+ 23 - 21
src/views/system/tenant/tenant.vue

@@ -2,23 +2,21 @@
   <page-wrapper>
     <el-card :bordered="false" class="mb-3 proCard">
       <el-space align="center">
-        <el-input-group style="width: 380px">
-          <el-input
-            :style="{ width: '100%' }"
-            v-model:value="params.tenantName"
-            clearable
-            placeholder="请输入租户名称"
-            @keyup.enter="reloadTable"
-          />
-          <el-button type="primary" @click="reloadTable">
-            <template #icon>
-              <el-icon>
-                <SearchOutlined />
-              </el-icon>
-            </template>
-            查询
-          </el-button>
-        </el-input-group>
+        <el-input
+          :style="{ width: '320px' }"
+          v-model="params.tenantName"
+          clearable
+          placeholder="请输入租户名称"
+          @keyup.enter="reloadTable"
+        />
+        <el-button type="primary" @click="reloadTable">
+          <template #icon>
+            <el-icon>
+              <SearchOutlined />
+            </el-icon>
+          </template>
+          查询
+        </el-button>
       </el-space>
     </el-card>
     <el-card :bordered="false" class="proCard">
@@ -79,7 +77,7 @@
   const actionColumn: BasicColumn = reactive({
     width: 150,
     title: '操作',
-    key: 'action',
+    prop: 'action',
     fixed: 'right',
     render(record) {
       return h(TableAction as any, {
@@ -87,13 +85,17 @@
         actions: [
           {
             label: '删除',
-            onPositiveClick: handleDelete.bind(null, record),
             isConfirm: true,
-            confirmContent: '您确定要删除吗?',
+            popConfirm: {
+              onConfirm: handleDelete.bind(null, record.row),
+              title: '您确定要删除吗?',
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+            },
           },
           {
             label: '编辑',
-            onClick: handleEdit.bind(null, record),
+            onClick: handleEdit.bind(null, record.row),
           },
         ],
       });

+ 4 - 4
src/views/system/tenant/types/index.ts

@@ -1,8 +1,8 @@
 export interface formParamsType {
-  tenantId?: number | null;
+  tenantId?: number | undefined;
   tenantName: string;
   tenantCode: string;
-  beginDate: number | null;
-  endDate: number | null;
-  tenantStatus: number | null;
+  beginDate: number | undefined;
+  endDate: number | undefined;
+  tenantStatus: number | undefined;
 }

+ 4 - 12
src/views/system/user/CreateDrawer.vue

@@ -60,12 +60,7 @@
       </el-form-item>
       <el-form-item label="性别" prop="sex">
         <el-radio-group v-model="formParams.sex" name="sexGroup">
-          <el-radio
-            v-for="item in sexList"
-            :key="item.dictValue"
-            :label="item.dictValue"
-            :value="item.dictLabel"
-          >
+          <el-radio v-for="item in sexList" :key="item.dictValue" :label="item.dictLabel">
             {{ item.dictLabel }}
           </el-radio>
         </el-radio-group>
@@ -83,11 +78,8 @@
       <el-form-item label="个人介绍" prop="remark">
         <el-input type="textarea" placeholder="请输入个人介绍" v-model="formParams.remark" />
       </el-form-item>
-      <el-form-item label="是否启用" prop="deleteStatus">
-        <el-radio-group v-model="formParams.deleteStatus" name="statusGroup">
-          <el-radio :label="1" :value="1">启用</el-radio>
-          <el-radio :label="2" :value="2">禁用</el-radio>
-        </el-radio-group>
+      <el-form-item label="是否启用" prop="isEnable">
+        <el-switch v-model="formParams.isEnable" />
       </el-form-item>
     </el-form>
 
@@ -170,7 +162,7 @@
   const defaultValueRef = () => ({
     userId: null,
     roleIds: [],
-    deleteStatus: 1,
+    isEnable: true,
     deptId: null,
     email: '',
     mobile: '',

+ 18 - 8
src/views/system/user/columns.ts

@@ -19,18 +19,28 @@ export const columns: BasicColumn[] = [
     prop: 'mobile',
   },
   {
-    label: '角色',
-    prop: 'roleName',
+    label: '状态',
+    prop: 'isEnable',
     render(record) {
       return h(
         ElTag,
-        {},
         {
-          default: () => record.row.roleName,
+          type: record.row.isEnable ? 'success' : 'danger',
+        },
+        {
+          default: () => (record.row.isEnable ? '启用' : '禁用'),
         },
       );
     },
   },
+  {
+    label: '角色',
+    prop: 'roleName',
+  },
+  {
+    label: '租户',
+    prop: 'tenantName',
+  },
   {
     label: '部门',
     prop: 'deptName',
@@ -39,10 +49,10 @@ export const columns: BasicColumn[] = [
     label: '岗位',
     prop: 'postName',
   },
-  {
-    label: '描述',
-    prop: 'remark',
-  },
+  // {
+  //   label: '描述',
+  //   prop: 'remark',
+  // },
   {
     label: '创建时间',
     prop: 'createTime',

+ 1 - 1
src/views/system/user/types/index.ts

@@ -1,7 +1,7 @@
 export interface formParamsType {
   userId?: number | null;
   roleIds?: number[];
-  deleteStatus: number;
+  isEnable: boolean;
   email: string;
   mobile: string;
   nickname: string;