wuheng 1 year ago
parent
commit
52c7934c4a

+ 3 - 1
src/locales/lang/en.ts

@@ -17,7 +17,9 @@ const locale: LocaleMessages<I18nType.Schema> = {
         route: 'Route',
         user: 'User',
         sort: 'category',
-        student: 'Student'
+        student: 'Student',
+        setting: 'setting',
+        profile: 'profile'
       },
       lesson: {
         _value: 'Lesson Management',

+ 3 - 1
src/locales/lang/zh-cn.ts

@@ -17,7 +17,9 @@ const locale: LocaleMessages<I18nType.Schema> = {
         route: '课程分类',
         user: '用户管理',
         sort: '课程分类',
-        student: '学生管理'
+        student: '学生管理',
+        setting: '个人设置',
+        profile: '个人信息'
       },
       lesson: {
         _value: '课程管理',

+ 0 - 13
src/service/api/management.adapter.ts

@@ -1,13 +0,0 @@
-export function adapterOfFetchUserList(data: ApiUserManagement.User[] | null): UserManagement.User[] {
-  if (!data) return [];
-
-  return data.map((item, index) => {
-    const user: UserManagement.User = {
-      index: index + 1,
-      key: item.id,
-      ...item
-    };
-
-    return user;
-  });
-}

+ 0 - 159
src/service/api/sort.ts

@@ -1,159 +0,0 @@
-import { request } from '../request';
-
-// 查询全部课程类别
-// 响应接口
-export interface SelectAll_1Res {
-  status: boolean;
-  msg: string;
-  data: Record<string, unknown>;
-}
-
-/**
- * 查询全部课程类别
- * @returns
- */
-export function selectAll_1() {
-  return request.get(`/selectAll`);
-}
-
-// 添加课程类别
-// 参数接口
-export interface AddEasEduCategoryParams {
-  id?: number | null;
-  name?: string | null;
-  description?: string | null;
-  createTime?: string;
-  modifyTime?: string;
-  createUid?: number | null;
-  disabled?: string | null;
-}
-
-// 响应接口
-export interface AddEasEduCategoryRes {
-  status: boolean;
-  msg: string;
-  data: Record<string, unknown>;
-}
-
-/**
- * 添加课程类别
- * @param {object} params EasEduCategory
- * @param {number} params.id
- * @param {string} params.name 学科名称
- * @param {string} params.description 学科描述
- * @param {object} params.createTime 创建时间
- * @param {object} params.modifyTime 修改时间
- * @param {number} params.createUid 创建用户ID
- * @param {string} params.disabled 状态
- * @returns
- */
-export function addEasEduCategory(params: AddEasEduCategoryParams) {
-  return request.post(`/addEasEduCategory`, params);
-}
-
-// 根据Id删除课程类别
-// 响应接口
-export interface DeleteByIdRes {
-  status: boolean;
-  msg: string;
-  data: string;
-}
-
-/**
- * 根据Id删除课程类别
- * @param {string} id
- * @returns
- */
-export function deleteById(id: number) {
-  return request.delete(`/deleteById/${id}`);
-}
-
-// 课程类别更新
-// 参数接口
-export interface UpdateEasEduCategoryParams {
-  id?: number | null;
-  name?: string | null;
-  description?: string | null;
-  createTime?: string | null;
-  modifyTime?: string;
-  createUid?: number | null;
-  disabled?: string | null;
-}
-
-// 响应接口
-export interface UpdateEasEduCategoryRes {
-  status: boolean;
-  msg: string;
-  data: Record<string, unknown>;
-}
-
-/**
- * 课程类别更新
- * @param {object} params EasEduCategory
- * @param {number} params.id
- * @param {string} params.name 学科名称
- * @param {string} params.description 学科描述
- * @param {object} params.createTime 创建时间
- * @param {object} params.modifyTime 修改时间
- * @param {number} params.createUid 创建用户ID
- * @param {string} params.disabled 状态
- * @returns
- */
-export function updateEasEduCategory(params: UpdateEasEduCategoryParams) {
-  return request.post(`/updateEasEduCategory`, params);
-}
-
-// 根据Id查询对应课程类别
-// 响应接口
-export interface SelectById_1Res {
-  status: boolean;
-  msg: string;
-  data: Record<string, unknown>;
-}
-
-/**
- * 根据Id查询对应课程类别
- * @param {string} id
- * @returns
- */
-export function selectById_1(id: number) {
-  return request.get(`/selectById?id=${id}`);
-}
-
-// 根据条件进行查询课程类别
-// 参数接口
-export interface SelectByCondition_1Params {
-  id?: number | null;
-  name?: string | null;
-  description?: string | null;
-  createTime?: null | string;
-  modifyTime?: null | string;
-  createUid?: null | number;
-  disabled?: string | null;
-}
-
-// 响应接口
-export interface SelectByCondition_1Res {
-  status: boolean;
-  msg: string;
-  data: Record<string, unknown>;
-  total: number;
-}
-
-/**
- * 根据条件进行查询课程类别
- * @param {string} pageNum
- * @param {string} pageSize
- * @param {object} params EasEduCategory
- * @param {number} params.id
- * @param {string} params.name 学科名称
- * @param {string} params.description 学科描述
- * @param {object} params.createTime 创建时间
- * @param {object} params.modifyTime 修改时间
- * @param {number} params.createUid 创建用户ID
- * @param {string} params.disabled 状态
- * @returns
- */
-export function selectByCondition_1(pageNum: number, pageSize: number, params: SelectByCondition_1Params) {
-  return request.post(`/selectByCondition?pageNum=${pageNum}&pageSize=${pageSize}`, params);
-}

+ 0 - 114
src/service/api/user.ts

@@ -1,114 +0,0 @@
-import { request } from '../request';
-
-// 参数接口
-export interface UpdateParams {
-  id?: number;
-  name?: string;
-  isActive?: Record<string, unknown>;
-  createTime?: Record<string, unknown>;
-  modifyTime?: Record<string, unknown>;
-  createUid?: number;
-  disabled?: string;
-  description?: string;
-}
-// 响应接口
-export interface UpdateRes {
-  status: boolean;
-  msg: string;
-  data: Record<string, unknown>;
-}
-
-/**
- * 更新权限
- * @param {object} params EasSysPermission
- * @param {number} params.id ID
- * @param {string} params.name 权限名称
- * @param {object} params.isActive 是否激活
- * @param {object} params.createTime 创建时间
- * @param {object} params.modifyTime 修改时间
- * @param {number} params.createUid 创建用户ID
- * @param {string} params.disabled 状态
- * @param {string} params.description 权限描述
- * @returns
- */
-export function update(params: UpdateParams) {
-  return request.put(`/permission/update`, params);
-}
-// 参数接口
-export interface QueryParams {
-  id?: number;
-  name?: string;
-  description?: string;
-  isActive?: string;
-  createTime?: string;
-  modifyTime?: string;
-  createUid?: number;
-  disabled?: string;
-}
-
-// 响应接口
-export interface QueryRes {
-  total: number;
-  data: Record<string, unknown>;
-}
-
-/**
- * 查询权限
- * @param {string} pageNum
- * @param {string} pageSize
- * @param {object} params EasSysPermission
- * @param {number} params.id ID
- * @param {string} params.name 权限名称
- * @param {object} params.isActive 是否激活
- * @param {object} params.createTime 创建时间
- * @param {object} params.modifyTime 修改时间
- * @param {number} params.createUid 创建用户ID
- * @param {string} params.disabled 状态
- * @param {string} params.description 权限描述
- * @returns
- */
-export function query(pageNum: number, pageSize: number, params: QueryParams) {
-  return request.post(`/permission/query?pageNum=${pageNum}&pageSize=${pageSize}`, params);
-}
-// 参数接口
-export interface Query_1Params {
-  id?: number;
-  depname?: string;
-  address?: string;
-  phone?: string;
-  email?: string;
-  manager?: string;
-  createTime?: string;
-  modifyTime?: string;
-  createUid?: number;
-  disabled?: string;
-}
-
-// 响应接口
-export interface Query_1Res {
-  status: boolean;
-  msg: string;
-  data: Record<string, unknown>;
-  total: number;
-}
-
-/**
- * 查询部门
- * @param {string} pageNum
- * @param {string} pageSize
- * @param {object} params EasSysDepartment
- * @param {number} params.id
- * @param {string} params.depname 部门名称
- * @param {string} params.address 部门地址
- * @param {string} params.phone 部门电话
- * @param {string} params.email 部门电子邮箱
- * @param {string} params.manager 部门负责人
- * @param {object} params.createTime 创建时间
- * @param {object} params.modifyTime 修改时间
- * @param {number} params.createUid 创建用户ID
- * @param {string} params.disabled 状态
- * @returns
- */
-export function query_1(pageNum: number, pageSize: number, params: Query_1Params) {
-  return request.post(`/department/query?pageNum=${pageNum}&pageSize=${pageSize}`, params);
-}

+ 2 - 0
src/typings/page-route.d.ts

@@ -44,6 +44,7 @@ declare namespace PageRoute {
     | 'system'
     | 'system_auth'
     | 'system_category'
+    | 'system_profile'
     | 'system_role'
     | 'system_student'
     | 'system_subject'
@@ -77,6 +78,7 @@ declare namespace PageRoute {
     | 'lesson_score'
     | 'system_auth'
     | 'system_category'
+    | 'system_profile'
     | 'system_role'
     | 'system_student'
     | 'system_subject'

+ 2 - 0
src/typings/system.d.ts

@@ -331,6 +331,8 @@ declare namespace I18nType {
         user: string;
         sort: string;
         student: string;
+        profile: string;
+        setting: string;
       };
       lesson: {
         _value: string;

+ 7 - 6
src/views/index.ts

@@ -16,18 +16,19 @@ export const views: Record<
   exception_403: () => import('./exception/403/index.vue'),
   exception_404: () => import('./exception/404/index.vue'),
   exception_500: () => import('./exception/500/index.vue'),
-  lesson_calendar: () => import('./lesson/calendar/index.vue'),
-  lesson_checkin: () => import('./lesson/checkin/index.vue'),
   group_classroom: () => import('./group/classroom/index.vue'),
   group_group: () => import('./group/group/index.vue'),
-  lesson_schedule: () => import('./lesson/schedule/index.vue'),
-  lesson_score: () => import('./lesson/score/index.vue'),
   group_student: () => import('./group/student/index.vue'),
   lesson_attendance: () => import('./lesson/attendance/index.vue'),
+  lesson_calendar: () => import('./lesson/calendar/index.vue'),
+  lesson_checkin: () => import('./lesson/checkin/index.vue'),
+  lesson_schedule: () => import('./lesson/schedule/index.vue'),
+  lesson_score: () => import('./lesson/score/index.vue'),
   system_auth: () => import('./system/auth/index.vue'),
-  system_role: () => import('./system/role/index.vue'),
-  system_subject: () => import('./system/subject/index.vue'),
   system_category: () => import('./system/category/index.vue'),
+  system_profile: () => import('./system/profile/index.vue'),
+  system_role: () => import('./system/role/index.vue'),
   system_student: () => import('./system/student/index.vue'),
+  system_subject: () => import('./system/subject/index.vue'),
   system_user: () => import('./system/user/index.vue')
 };

+ 25 - 0
src/views/system/profile/api.ts

@@ -0,0 +1,25 @@
+import { request } from '@/service/request';
+
+export interface UsersRes {
+  id: number;
+  email: string;
+  name: string;
+  phone: string;
+  passwd: string;
+  rePasswd: string;
+}
+
+export interface UserProFileRes {
+  status: boolean;
+  msg: string;
+  data: Record<string, unknown>;
+  code: number;
+}
+
+export function getUserProFile(): Promise<Service.RequestResult<UsersRes>> {
+  return request.get(`/login/getUserProFile`);
+}
+
+export function userProFile(params: UsersRes): Promise<Service.RequestResult<UserProFileRes>> {
+  return request.put(`/login/userProFile`, params);
+}

+ 118 - 0
src/views/system/profile/index.vue

@@ -0,0 +1,118 @@
+<template>
+  <div class="wh-full bg-white">
+    <n-grid cols="2 s:2 m:2 l:3 xl:3 2xl:3">
+      <n-grid-item>
+        <n-form ref="formRef" :label-width="80" :model="formValue" :rules="rules">
+          <n-form-item label="昵称" path="name">
+            <n-input v-model:value="formValue.name" placeholder="请输入昵称" />
+          </n-form-item>
+
+          <n-form-item label="邮箱" path="email">
+            <n-input v-model:value="formValue.email" placeholder="请输入邮箱" />
+          </n-form-item>
+
+          <n-form-item label="联系电话" path="phone">
+            <n-input v-model:value="formValue.phone" placeholder="请输入联系电话" />
+          </n-form-item>
+
+          <n-form-item label="用户密码" path="passwd">
+            <n-input v-model:value="formValue.passwd" type="password" placeholder="请输入联系地址" />
+          </n-form-item>
+
+          <n-form-item label="重复密码" path="rePasswd">
+            <n-input v-model:value="formValue.rePasswd" type="password" placeholder="请输入联系地址" />
+          </n-form-item>
+
+          <div>
+            <n-space>
+              <n-button type="primary" @click="formSubmit">更新基本信息</n-button>
+            </n-space>
+          </div>
+        </n-form>
+      </n-grid-item>
+    </n-grid>
+  </div>
+</template>
+<script setup lang="ts">
+import { reactive, ref } from 'vue';
+import type { FormItemRule } from 'naive-ui';
+import { useAuthStore } from '@/store';
+import type { UsersRes } from './api';
+import { getUserProFile, userProFile } from './api';
+const formRef: any = ref(null);
+const auth = useAuthStore();
+const formValue = reactive<UsersRes>({
+  id: 0,
+  name: '',
+  phone: '',
+  email: '',
+  passwd: '',
+  rePasswd: ''
+});
+getUserProFile().then(requestData => {
+  Object.assign(formValue, requestData.data);
+});
+function validatePasswordSame(role: FormItemRule, value: string): boolean {
+  if (formValue.passwd === null) {
+    return true;
+  }
+  if (role.message) {
+    return value === formValue.passwd;
+  }
+  return false;
+}
+const rules = {
+  name: {
+    required: true,
+    message: '请输入昵称',
+    trigger: 'blur'
+  },
+  email: {
+    required: true,
+    message: '请输入邮箱',
+    trigger: 'blur'
+  },
+  phone: {
+    required: true,
+    message: '请输入联系电话',
+    trigger: 'input'
+  },
+  passwd: [
+    {
+      validator(rule: FormItemRule, value: string) {
+        if (value === '' || value === null) {
+          return true;
+        }
+        if (rule.message) {
+          return value.length >= 8;
+        }
+        return false;
+      },
+      trigger: ['change'],
+      message: '密码长度需要大于 8'
+    }
+  ],
+  rePasswd: [
+    {
+      validator: validatePasswordSame,
+      message: '两次密码输入不一致',
+      trigger: ['change']
+    }
+  ]
+};
+
+function formSubmit() {
+  formRef.value.validate(async (status: Array<Array<object>>) => {
+    if (status === undefined) {
+      const res = await userProFile(formValue);
+      if (res.status) {
+        window.$message?.success('操作成功!');
+        if (formValue.passwd) {
+          auth.resetAuthStore();
+        }
+      }
+    }
+  });
+}
+</script>
+<style scoped></style>

+ 8 - 8
src/views/system/role/crud.ts

@@ -68,14 +68,14 @@ export default function createCrudOptions(): CreateCrudOptionsRet {
             align: 'center'
           },
           search: { show: true },
-          valueBuilder(context) {
-            const { value, row, key } = context;
+          valueBuilder(localContext) {
+            const { value, row, key } = localContext;
             if (value) {
               row[key] = dayjs(value).valueOf();
             }
           },
-          valueResolve(context) {
-            const { value, form, key } = context;
+          valueResolve(localContext) {
+            const { value, form, key } = localContext;
             if (value) {
               form[key] = dayjs(value).format('YYYY-MM-DD HH:mm:ss');
             }
@@ -90,14 +90,14 @@ export default function createCrudOptions(): CreateCrudOptionsRet {
             width: 250,
             align: 'center'
           },
-          valueBuilder(context) {
-            const { value, row, key } = context;
+          valueBuilder(localContext) {
+            const { value, row, key } = localContext;
             if (value) {
               row[key] = dayjs(value).valueOf();
             }
           },
-          valueResolve(context) {
-            const { value, form, key } = context;
+          valueResolve(localContext) {
+            const { value, form, key } = localContext;
             if (value) {
               form[key] = dayjs(value).format('YYYY-MM-DD HH:mm:ss');
             }