From e05671447df23ab0331429237449913802632a5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com>
Date: Sun, 17 Aug 2025 16:23:49 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E8=80=83=E8=AF=95?=
=?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/hTable.ts | 1 +
src/components/hTable/hTable.ts | 43 +-
src/components/hTable/index.vue | 12 +-
src/utils/rules.ts | 8 +
src/views/admin/index.vue | 4 +-
src/views/admin/role.vue | 4 +-
src/views/class/index.vue | 7 +-
src/views/exam/classDetails.vue | 137 +++
src/views/exam/index.vue | 177 ++++
src/views/exam/userDetails.vue | 132 +++
src/views/grade/index.vue | 4 +-
src/views/school/index.vue | 4 +-
.../editUser.vue => student/edit.vue} | 2 +-
src/views/student/index.vue | 855 ++++++++++++++++++
14 files changed, 1364 insertions(+), 26 deletions(-)
create mode 100644 src/views/exam/classDetails.vue
create mode 100644 src/views/exam/index.vue
create mode 100644 src/views/exam/userDetails.vue
rename src/views/{teacher/editUser.vue => student/edit.vue} (99%)
create mode 100644 src/views/student/index.vue
diff --git a/src/api/hTable.ts b/src/api/hTable.ts
index e097d07..e29d581 100644
--- a/src/api/hTable.ts
+++ b/src/api/hTable.ts
@@ -28,3 +28,4 @@ export class hTableAPI {
});
}
}
+
diff --git a/src/components/hTable/hTable.ts b/src/components/hTable/hTable.ts
index 8bd020b..b97653f 100644
--- a/src/components/hTable/hTable.ts
+++ b/src/components/hTable/hTable.ts
@@ -64,6 +64,27 @@ export interface OperationButton {
custom?: ButtonCustomConfig;
}
+/** 类型判断枚举 */
+export enum ConditionalType {
+ Equal,
+ Like,
+ GreaterThan,
+ GreaterThanOrEqual,
+ LessThan,
+ LessThanOrEqual,
+ In,
+ NotIn,
+ LikeLeft,
+ LikeRight,
+ NoEqual,
+ IsNullOrEmpty,
+ IsNot,
+ NoLike,
+ EqualNull,
+ InLike,
+ Range
+}
+
/* 字段设置项 */
export interface FieldSetting {
/**map 时Value的取值的属性 */
@@ -95,13 +116,7 @@ export interface TableColumn {
/* 是否可搜索 */
search: boolean;
/* 搜索类型 */
- searchType?:
- | "Equal"
- | "NoEqual"
- | "Like"
- | "GreaterThan"
- | "LessThan"
- | "NoLike";
+ searchType?: ConditionalType;
/* 是否允许添加 */
add: boolean;
/* 是否允许修改 */
@@ -138,6 +153,18 @@ export interface PageData {
total: number;
}
+/* 分页数据 */
+export interface ConditionalModel {
+ /** 字段名称 */
+ FieldName: string;
+ /** 字段查询值 */
+ FieldValue: string;
+ /** 查询方式 */
+ ConditionalType?: ConditionalType;
+ /** C#类型名称 */
+ CSharpTypeName?: string;
+}
+
/* 搜索条件 */
export interface SearchConditions {
/* 是否显示搜索 */
@@ -149,7 +176,7 @@ export interface SearchConditions {
/* 排序字段 */
OrderBy: string;
/* 默认查询条件 */
- defaultConditions: any[];
+ defaultConditions: ConditionalModel[];
/* 查询条件 */
Conditions: any[];
}
diff --git a/src/components/hTable/index.vue b/src/components/hTable/index.vue
index c8a69ba..29e27c2 100644
--- a/src/components/hTable/index.vue
+++ b/src/components/hTable/index.vue
@@ -16,7 +16,7 @@ import {
import { Search } from "@element-plus/icons-vue";
import { ElMessage, ElMessageBox } from "element-plus";
import { defineAsyncComponent, AsyncComponentLoader } from "vue";
-import { Dialog, TableColumn, TableConfig } from "./hTable";
+import { ConditionalType, Dialog, TableColumn, TableConfig } from "./hTable";
import hTableEdit from "./hTableEdit.vue";
import { hTableAPI } from "@/api/hTable";
import { getenum } from "@/api/enum";
@@ -274,17 +274,19 @@ function handleReloadPaged(reload = true) {
let data: any = { ConditionalType: 0 };
if (table.value.column[name].type === "datetime") {
// data.CSharpTypeName = 'DateTime'
- data.ConditionalType = 8; // '2023-10-07%'
+ data.ConditionalType = ConditionalType.LikeLeft; // '2023-10-07%'
} else if (table.value.column[name].type === "switch") {
data.CSharpTypeName = "Boolean";
} else if (table.value.column[name].type === "string") {
- data.ConditionalType = "Like";
- }
+ data.ConditionalType = ConditionalType.Like;
+ } else data.ConditionalType = ConditionalType.Equal;
+
data.FieldName = name.charAt(0).toUpperCase() + name.slice(1);
data.FieldValue = table.value.column[name].value.toString();
if (table.value.column[name].searchType != undefined) {
- data.ConditionalType = table.value.column[name].searchType || 0;
+ let v: number = table.value.column[name].searchType || 0;
+ data.ConditionalType = v;
}
table.value.search.Conditions.push(data);
}
diff --git a/src/utils/rules.ts b/src/utils/rules.ts
index 6f7566d..3f6f515 100644
--- a/src/utils/rules.ts
+++ b/src/utils/rules.ts
@@ -1,6 +1,14 @@
export const ruleRequired = [
{ required: true, message: "不能为空", trigger: "blur" }
];
+export const ruleRequiredNumber = [
+ { required: true, message: "不能为空", trigger: "blur" },
+ {
+ pattern: /^\d*\.?\d+$/,
+ message: "请输入正确数字",
+ trigger: "blur"
+ }
+];
export const rulePassword = [
{ required: true, message: "不能为空", trigger: "blur" },
{ min: 6, message: "长度必须大于5", trigger: "blur" }
diff --git a/src/views/admin/index.vue b/src/views/admin/index.vue
index 6a2a671..f33bdf6 100644
--- a/src/views/admin/index.vue
+++ b/src/views/admin/index.vue
@@ -1,6 +1,6 @@
+
+
+
+
diff --git a/src/views/exam/index.vue b/src/views/exam/index.vue
new file mode 100644
index 0000000..3089926
--- /dev/null
+++ b/src/views/exam/index.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
diff --git a/src/views/exam/userDetails.vue b/src/views/exam/userDetails.vue
new file mode 100644
index 0000000..5030e01
--- /dev/null
+++ b/src/views/exam/userDetails.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
diff --git a/src/views/grade/index.vue b/src/views/grade/index.vue
index a78a477..d6a6ec0 100644
--- a/src/views/grade/index.vue
+++ b/src/views/grade/index.vue
@@ -1,6 +1,6 @@
+
+