From b56c9f819a17977492a4759076eb51bf16b4bb26 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com>
Date: Thu, 25 Sep 2025 11:39:05 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=AD=A6=E6=A0=A1?=
=?UTF-8?q?=E5=8F=82=E4=B8=8E=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/hTable/hTable.ts | 42 ++++++++++++++++++++-------------
src/views/school/index.vue | 24 +++++++++++++++++--
2 files changed, 48 insertions(+), 18 deletions(-)
diff --git a/src/components/hTable/hTable.ts b/src/components/hTable/hTable.ts
index b7598f6..3de9845 100644
--- a/src/components/hTable/hTable.ts
+++ b/src/components/hTable/hTable.ts
@@ -1,3 +1,5 @@
+import { array } from "vue-types";
+
export interface Dialog {
/** 对话框是否可见 */
visible: boolean;
@@ -380,25 +382,33 @@ export function intTableData(tValue: TableConfig): TableConfig {
element.search = { ...new TableColumnSearch(), ...element.search };
element.setting = { ...new FieldSetting(), ...element.setting };
- if (
- element.custom == undefined &&
- (element.type === "switch" ||
- element.type === "dropdown" ||
- element.type === "string" ||
- element.type === undefined)
- ) {
- if (element.type === "string" || element.type === undefined)
- element.custom = row => row[key];
- else {
+ //已有的情况下以 传入为主
+ if (element.custom != undefined) continue;
+ switch (element.type) {
+ case "switch":
+ case "dropdown": {
element.custom = row => {
- let sc = element.setting.datasource.find(
- s => s[element.setting.mapValue] + "" == row[key] + ""
- );
- return !sc ? row[key] : sc[element.setting.maplabel];
+ const value = Array.isArray(row[key]) ? row[key] : [row[key]];
+ const res = value.map(item => {
+ const sc = element.setting.datasource.find(
+ s => s[element.setting.mapValue] + "" == item + ""
+ );
+ return !sc ? item : sc[element.setting.maplabel];
+ });
+ return res.join(",");
};
+ break;
+ }
+
+ case "string":
+ case undefined: {
+ element.custom = row => row[key];
+ break;
+ }
+ default: {
+ element.custom = row => row[key];
+ break;
}
- } else if (element.custom == undefined) {
- element.custom = row => row[key];
}
}
diff --git a/src/views/school/index.vue b/src/views/school/index.vue
index d2d838c..8ece4c7 100644
--- a/src/views/school/index.vue
+++ b/src/views/school/index.vue
@@ -8,11 +8,11 @@ import {
} from "@/components/hTable/hTable";
import { onMounted, ref } from "vue";
import { fa } from "element-plus/es/locales.mjs";
+import { getenum } from "@/api/enum";
defineOptions({
name: "School",
});
-onMounted(() => {});
function searchCallback(data) {
//let c = data.Conditions.find((s) => s.FieldName == "Pname");
}
@@ -22,6 +22,7 @@ const tableData: TableConfig = intTableData({
selectColumn: false, // 列表选择
border: false, // 是否显示表格边框
searchCallback: searchCallback,
+ editCallback: function (from) {},
search: {
// 查询条件
show: true,
@@ -74,6 +75,17 @@ const tableData: TableConfig = intTableData({
width: "300px",
custom: (row) => `${row.pname}-${row.cname}-${row.rname}`,
},
+ projectType: {
+ label: "学校项目",
+ width: "200px",
+ type: "dropdown",
+ search: new TableColumnSearch(true),
+ edit: {
+ multiple: true,
+
+ edit: true,
+ },
+ },
enable: {
label: "启用",
type: "switch",
@@ -91,10 +103,18 @@ const tableData: TableConfig = intTableData({
},
selectRows: [],
});
+const showTable = ref(false);
+onMounted(async () => {
+ let res = await getenum("SchoolProjectEnum");
+ tableData.column.projectType.setting.datasource = res.data;
+
+ //初始化数据完成后显示页面
+ showTable.value = true;
+});
From 4bc9a0a60687fa36ac5aea09f057d0e1aa08ae2b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com>
Date: Thu, 25 Sep 2025 13:51:19 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=90=8E=E6=B2=A1=E6=8A=98=E5=8F=A0=E8=A1=A8?=
=?UTF-8?q?=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/hTable/index.vue | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/components/hTable/index.vue b/src/components/hTable/index.vue
index 6844f92..6afc551 100644
--- a/src/components/hTable/index.vue
+++ b/src/components/hTable/index.vue
@@ -44,7 +44,7 @@ const props = defineProps({
default: () => ({}),
},
});
-
+const expands = ref();
const table = ref(props.tableConfig);
const tableShowColumn = ref>();
onBeforeMount(() => {
@@ -338,6 +338,8 @@ function handleReloadPaged(reload = true) {
if (table.value.searchCallback) {
table.value.searchCallback(table.value.search);
}
+ //如果有展开行 则全部收回
+ if (table.value.expandColumn) expands.value = [];
fetchPagedData();
}
// 加载前置数据(如查询条件的下拉选择数据)
@@ -459,6 +461,7 @@ function fetchPagedData() {
@selection-change="handleSelectionChange"
@sort-change="sortChange"
@expand-change="table.expandChange"
+ :expand-row-keys="expands"
>
Date: Thu, 25 Sep 2025 14:00:41 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=88=9B=E5=BB=BA?=
=?UTF-8?q?=E8=B5=B4=E6=A0=A1=E4=BF=A1=E6=81=AF=E6=97=B6=E5=80=99=20?=
=?UTF-8?q?=E7=BB=93=E6=9D=9F=E4=BA=8B=E4=BB=B6=E6=9C=AA=E5=BD=95=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/toschoolinfomanage/addModal.vue | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/views/toschoolinfomanage/addModal.vue b/src/views/toschoolinfomanage/addModal.vue
index f24e182..7819f76 100644
--- a/src/views/toschoolinfomanage/addModal.vue
+++ b/src/views/toschoolinfomanage/addModal.vue
@@ -448,6 +448,7 @@ async function onSubmit() {
gradeYear: form.baseInfo.gradeYear,
schoolBusinessUser: form.baseInfo.people,
startTime: form.baseInfo.date,
+ endTime: form.baseInfo.endTime,
isDiscussion: form.work.talk,
discussion: form.work.talkDetail,
isClassMeeting: form.work.classMeeting,