diff --git a/src/views/school/campus/SchoolCampus.api.ts b/src/views/school/campus/SchoolCampus.api.ts
new file mode 100644
index 0000000..5af5325
--- /dev/null
+++ b/src/views/school/campus/SchoolCampus.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/campus/list',
+ save = '/school/campus/add',
+ edit = '/school/campus/edit',
+ deleteOne = '/school/campus/delete',
+ deleteBatch = '/school/campus/deleteBatch',
+ queryById = '/school/campus/queryById',
+ importExcel = '/school/campus/importExcel',
+ exportXls = '/school/campus/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/campus/SchoolCampus.data.ts b/src/views/school/campus/SchoolCampus.data.ts
new file mode 100644
index 0000000..39bbf91
--- /dev/null
+++ b/src/views/school/campus/SchoolCampus.data.ts
@@ -0,0 +1,66 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '学校ID',
+ align: 'center',
+ dataIndex: 'schoolId',
+ },
+ {
+ title: '校区名称',
+ align: 'center',
+ dataIndex: 'campusName',
+ },
+ {
+ title: '地址',
+ align: 'center',
+ dataIndex: 'address',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '校区名称',
+ field: 'campusName',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '校区名称',
+ field: 'campusName',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '地址',
+ field: 'address',
+ component: 'Input',
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/campus/SchoolCampusList.vue b/src/views/school/campus/SchoolCampusList.vue
new file mode 100644
index 0000000..9f17b47
--- /dev/null
+++ b/src/views/school/campus/SchoolCampusList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/campus/components/SchoolCampusForm.vue b/src/views/school/campus/components/SchoolCampusForm.vue
new file mode 100644
index 0000000..c67d50f
--- /dev/null
+++ b/src/views/school/campus/components/SchoolCampusForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/campus/components/SchoolCampusModal.vue b/src/views/school/campus/components/SchoolCampusModal.vue
new file mode 100644
index 0000000..876eed8
--- /dev/null
+++ b/src/views/school/campus/components/SchoolCampusModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/college/SchoolCollege.api.ts b/src/views/school/college/SchoolCollege.api.ts
new file mode 100644
index 0000000..047b3be
--- /dev/null
+++ b/src/views/school/college/SchoolCollege.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/college/list',
+ save = '/school/college/add',
+ edit = '/school/college/edit',
+ deleteOne = '/school/college/delete',
+ deleteBatch = '/school/college/deleteBatch',
+ queryById = '/school/college/queryById',
+ importExcel = '/school/college/importExcel',
+ exportXls = '/school/college/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/college/SchoolCollege.data.ts b/src/views/school/college/SchoolCollege.data.ts
new file mode 100644
index 0000000..b870c24
--- /dev/null
+++ b/src/views/school/college/SchoolCollege.data.ts
@@ -0,0 +1,61 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+export const columns: BasicColumn[] = [
+ {
+ title: 'ID',
+ align: 'center',
+ dataIndex: 'id',
+ },
+ {
+ title: '学校ID',
+ align: 'center',
+ dataIndex: 'schoolId',
+ },
+ {
+ title: '学院名称',
+ align: 'center',
+ dataIndex: 'collegeName',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '学院名称',
+ field: 'collegeName',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '学院名称',
+ field: 'collegeName',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/college/SchoolCollegeList.vue b/src/views/school/college/SchoolCollegeList.vue
new file mode 100644
index 0000000..934d239
--- /dev/null
+++ b/src/views/school/college/SchoolCollegeList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/college/components/SchoolCollegeForm.vue b/src/views/school/college/components/SchoolCollegeForm.vue
new file mode 100644
index 0000000..38365d4
--- /dev/null
+++ b/src/views/school/college/components/SchoolCollegeForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/college/components/SchoolCollegeModal.vue b/src/views/school/college/components/SchoolCollegeModal.vue
new file mode 100644
index 0000000..3921dff
--- /dev/null
+++ b/src/views/school/college/components/SchoolCollegeModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/detail/SchoolDetail.api.ts b/src/views/school/detail/SchoolDetail.api.ts
new file mode 100644
index 0000000..55d323e
--- /dev/null
+++ b/src/views/school/detail/SchoolDetail.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/detail/list',
+ save = '/school/detail/add',
+ edit = '/school/detail/edit',
+ deleteOne = '/school/detail/delete',
+ deleteBatch = '/school/detail/deleteBatch',
+ queryById = '/school/detail/queryById',
+ importExcel = '/school/detail/importExcel',
+ exportXls = '/school/detail/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/detail/SchoolDetail.data.ts b/src/views/school/detail/SchoolDetail.data.ts
new file mode 100644
index 0000000..ef413b3
--- /dev/null
+++ b/src/views/school/detail/SchoolDetail.data.ts
@@ -0,0 +1,87 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '学校ID',
+ align: 'center',
+ dataIndex: 'schoolId',
+ },
+ {
+ title: '简介',
+ align: 'center',
+ dataIndex: 'introduction',
+ },
+ {
+ title: '地址',
+ align: 'center',
+ dataIndex: 'address',
+ },
+ {
+ title: '联系电话',
+ align: 'center',
+ dataIndex: 'contact',
+ },
+ {
+ title: '官网',
+ align: 'center',
+ dataIndex: 'website',
+ },
+ {
+ title: '更新时间',
+ align: 'center',
+ dataIndex: 'updateTime',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '简介',
+ field: 'introduction',
+ component: 'InputTextArea',
+ componentProps: {
+ rows: 6,
+ },
+ },
+ {
+ label: '地址',
+ field: 'address',
+ component: 'Input',
+ },
+ {
+ label: '联系电话',
+ field: 'contact',
+ component: 'Input',
+ },
+ {
+ label: '官网',
+ field: 'website',
+ component: 'Input',
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/detail/SchoolDetailList.vue b/src/views/school/detail/SchoolDetailList.vue
new file mode 100644
index 0000000..21366ce
--- /dev/null
+++ b/src/views/school/detail/SchoolDetailList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/detail/components/SchoolDetailForm.vue b/src/views/school/detail/components/SchoolDetailForm.vue
new file mode 100644
index 0000000..995c7e1
--- /dev/null
+++ b/src/views/school/detail/components/SchoolDetailForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/detail/components/SchoolDetailModal.vue b/src/views/school/detail/components/SchoolDetailModal.vue
new file mode 100644
index 0000000..00f5024
--- /dev/null
+++ b/src/views/school/detail/components/SchoolDetailModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/dorm/SchoolDorm.api.ts b/src/views/school/dorm/SchoolDorm.api.ts
new file mode 100644
index 0000000..a84481a
--- /dev/null
+++ b/src/views/school/dorm/SchoolDorm.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/dorm/list',
+ save = '/school/dorm/add',
+ edit = '/school/dorm/edit',
+ deleteOne = '/school/dorm/delete',
+ deleteBatch = '/school/dorm/deleteBatch',
+ queryById = '/school/dorm/queryById',
+ importExcel = '/school/dorm/importExcel',
+ exportXls = '/school/dorm/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/dorm/SchoolDorm.data.ts b/src/views/school/dorm/SchoolDorm.data.ts
new file mode 100644
index 0000000..2f24307
--- /dev/null
+++ b/src/views/school/dorm/SchoolDorm.data.ts
@@ -0,0 +1,66 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '学校ID',
+ align: 'center',
+ dataIndex: 'schoolId',
+ },
+ {
+ title: '宿舍名称',
+ align: 'center',
+ dataIndex: 'dormName',
+ },
+ {
+ title: '校区ID',
+ align: 'center',
+ dataIndex: 'campusId',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '宿舍名称',
+ field: 'dormName',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '宿舍名称',
+ field: 'dormName',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '校区ID',
+ field: 'campusId',
+ component: 'InputNumber',
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/dorm/SchoolDormList.vue b/src/views/school/dorm/SchoolDormList.vue
new file mode 100644
index 0000000..be9341e
--- /dev/null
+++ b/src/views/school/dorm/SchoolDormList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/dorm/components/SchoolDormForm.vue b/src/views/school/dorm/components/SchoolDormForm.vue
new file mode 100644
index 0000000..cf63f85
--- /dev/null
+++ b/src/views/school/dorm/components/SchoolDormForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/dorm/components/SchoolDormModal.vue b/src/views/school/dorm/components/SchoolDormModal.vue
new file mode 100644
index 0000000..195d0ae
--- /dev/null
+++ b/src/views/school/dorm/components/SchoolDormModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/enrollPlan/SchoolEnrollPlan.api.ts b/src/views/school/enrollPlan/SchoolEnrollPlan.api.ts
new file mode 100644
index 0000000..ca764c3
--- /dev/null
+++ b/src/views/school/enrollPlan/SchoolEnrollPlan.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/enrollPlan/list',
+ save = '/school/enrollPlan/add',
+ edit = '/school/enrollPlan/edit',
+ deleteOne = '/school/enrollPlan/delete',
+ deleteBatch = '/school/enrollPlan/deleteBatch',
+ queryById = '/school/enrollPlan/queryById',
+ importExcel = '/school/enrollPlan/importExcel',
+ exportXls = '/school/enrollPlan/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/enrollPlan/SchoolEnrollPlan.data.ts b/src/views/school/enrollPlan/SchoolEnrollPlan.data.ts
new file mode 100644
index 0000000..c1fce2a
--- /dev/null
+++ b/src/views/school/enrollPlan/SchoolEnrollPlan.data.ts
@@ -0,0 +1,85 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '学校ID',
+ align: 'center',
+ dataIndex: 'schoolId',
+ },
+ {
+ title: '年份',
+ align: 'center',
+ dataIndex: 'year',
+ },
+ {
+ title: '省份',
+ align: 'center',
+ dataIndex: 'province',
+ },
+ {
+ title: '计划内容',
+ align: 'center',
+ dataIndex: 'planContent',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '年份',
+ field: 'year',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '省份',
+ field: 'province',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '年份',
+ field: 'year',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '省份',
+ field: 'province',
+ component: 'Input',
+ },
+ {
+ label: '计划内容',
+ field: 'planContent',
+ component: 'InputTextArea',
+ componentProps: {
+ rows: 6,
+ },
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/enrollPlan/SchoolEnrollPlanList.vue b/src/views/school/enrollPlan/SchoolEnrollPlanList.vue
new file mode 100644
index 0000000..8acd88d
--- /dev/null
+++ b/src/views/school/enrollPlan/SchoolEnrollPlanList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/enrollPlan/components/SchoolEnrollPlanForm.vue b/src/views/school/enrollPlan/components/SchoolEnrollPlanForm.vue
new file mode 100644
index 0000000..18dd667
--- /dev/null
+++ b/src/views/school/enrollPlan/components/SchoolEnrollPlanForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/enrollPlan/components/SchoolEnrollPlanModal.vue b/src/views/school/enrollPlan/components/SchoolEnrollPlanModal.vue
new file mode 100644
index 0000000..38e04d3
--- /dev/null
+++ b/src/views/school/enrollPlan/components/SchoolEnrollPlanModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/major/SchoolMajor.api.ts b/src/views/school/major/SchoolMajor.api.ts
new file mode 100644
index 0000000..aa10481
--- /dev/null
+++ b/src/views/school/major/SchoolMajor.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/major/list',
+ save = '/school/major/add',
+ edit = '/school/major/edit',
+ deleteOne = '/school/major/delete',
+ deleteBatch = '/school/major/deleteBatch',
+ queryById = '/school/major/queryById',
+ importExcel = '/school/major/importExcel',
+ exportXls = '/school/major/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/major/SchoolMajor.data.ts b/src/views/school/major/SchoolMajor.data.ts
new file mode 100644
index 0000000..5096018
--- /dev/null
+++ b/src/views/school/major/SchoolMajor.data.ts
@@ -0,0 +1,66 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '学校ID',
+ align: 'center',
+ dataIndex: 'schoolId',
+ },
+ {
+ title: '专业编码',
+ align: 'center',
+ dataIndex: 'majorCode',
+ },
+ {
+ title: '专业名称',
+ align: 'center',
+ dataIndex: 'majorName',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '专业名称',
+ field: 'majorName',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '专业编码',
+ field: 'majorCode',
+ component: 'Input',
+ },
+ {
+ label: '专业名称',
+ field: 'majorName',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/major/SchoolMajorList.vue b/src/views/school/major/SchoolMajorList.vue
new file mode 100644
index 0000000..b4c8c63
--- /dev/null
+++ b/src/views/school/major/SchoolMajorList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/major/components/SchoolMajorForm.vue b/src/views/school/major/components/SchoolMajorForm.vue
new file mode 100644
index 0000000..985d29e
--- /dev/null
+++ b/src/views/school/major/components/SchoolMajorForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/major/components/SchoolMajorModal.vue b/src/views/school/major/components/SchoolMajorModal.vue
new file mode 100644
index 0000000..bc30be9
--- /dev/null
+++ b/src/views/school/major/components/SchoolMajorModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/majorTag/SchoolMajorTag.api.ts b/src/views/school/majorTag/SchoolMajorTag.api.ts
new file mode 100644
index 0000000..6037835
--- /dev/null
+++ b/src/views/school/majorTag/SchoolMajorTag.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/majorTag/list',
+ save = '/school/majorTag/add',
+ edit = '/school/majorTag/edit',
+ deleteOne = '/school/majorTag/delete',
+ deleteBatch = '/school/majorTag/deleteBatch',
+ queryById = '/school/majorTag/queryById',
+ importExcel = '/school/majorTag/importExcel',
+ exportXls = '/school/majorTag/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/majorTag/SchoolMajorTag.data.ts b/src/views/school/majorTag/SchoolMajorTag.data.ts
new file mode 100644
index 0000000..b5a2743
--- /dev/null
+++ b/src/views/school/majorTag/SchoolMajorTag.data.ts
@@ -0,0 +1,56 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '专业ID',
+ align: 'center',
+ dataIndex: 'majorId',
+ },
+ {
+ title: '标签',
+ align: 'center',
+ dataIndex: 'tagName',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '专业ID',
+ field: 'majorId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '标签',
+ field: 'tagName',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '专业ID',
+ field: 'majorId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '标签',
+ field: 'tagName',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/majorTag/SchoolMajorTagList.vue b/src/views/school/majorTag/SchoolMajorTagList.vue
new file mode 100644
index 0000000..bbe4c58
--- /dev/null
+++ b/src/views/school/majorTag/SchoolMajorTagList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/majorTag/components/SchoolMajorTagForm.vue b/src/views/school/majorTag/components/SchoolMajorTagForm.vue
new file mode 100644
index 0000000..b3dca80
--- /dev/null
+++ b/src/views/school/majorTag/components/SchoolMajorTagForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/majorTag/components/SchoolMajorTagModal.vue b/src/views/school/majorTag/components/SchoolMajorTagModal.vue
new file mode 100644
index 0000000..041d782
--- /dev/null
+++ b/src/views/school/majorTag/components/SchoolMajorTagModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/media/SchoolMedia.api.ts b/src/views/school/media/SchoolMedia.api.ts
new file mode 100644
index 0000000..ff1da19
--- /dev/null
+++ b/src/views/school/media/SchoolMedia.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/media/list',
+ save = '/school/media/add',
+ edit = '/school/media/edit',
+ deleteOne = '/school/media/delete',
+ deleteBatch = '/school/media/deleteBatch',
+ queryById = '/school/media/queryById',
+ importExcel = '/school/media/importExcel',
+ exportXls = '/school/media/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/media/SchoolMedia.data.ts b/src/views/school/media/SchoolMedia.data.ts
new file mode 100644
index 0000000..3927973
--- /dev/null
+++ b/src/views/school/media/SchoolMedia.data.ts
@@ -0,0 +1,86 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+import { render } from '/@/utils/common/renderUtils';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '业务类型',
+ align: 'center',
+ dataIndex: 'bizType',
+ },
+ {
+ title: '业务ID',
+ align: 'center',
+ dataIndex: 'bizId',
+ },
+ {
+ title: '媒体类型',
+ align: 'center',
+ dataIndex: 'mediaType',
+ },
+ {
+ title: '媒体地址',
+ align: 'center',
+ dataIndex: 'mediaUrl',
+ },
+ {
+ title: '预览',
+ align: 'center',
+ dataIndex: 'mediaUrl',
+ customRender: render.renderImage,
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '业务类型',
+ field: 'bizType',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+ {
+ label: '业务ID',
+ field: 'bizId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '业务类型',
+ field: 'bizType',
+ component: 'Input',
+ required: true,
+ helpMessage: '例如:school/campus/dorm/major 等,由后端约定',
+ },
+ {
+ label: '业务ID',
+ field: 'bizId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '媒体类型',
+ field: 'mediaType',
+ component: 'Input',
+ helpMessage: '例如:image/video/cover 等,由后端约定',
+ },
+ {
+ label: '媒体地址',
+ field: 'mediaUrl',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/media/SchoolMediaList.vue b/src/views/school/media/SchoolMediaList.vue
new file mode 100644
index 0000000..577c81c
--- /dev/null
+++ b/src/views/school/media/SchoolMediaList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/media/components/SchoolMediaForm.vue b/src/views/school/media/components/SchoolMediaForm.vue
new file mode 100644
index 0000000..412901a
--- /dev/null
+++ b/src/views/school/media/components/SchoolMediaForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/media/components/SchoolMediaModal.vue b/src/views/school/media/components/SchoolMediaModal.vue
new file mode 100644
index 0000000..b5f66cf
--- /dev/null
+++ b/src/views/school/media/components/SchoolMediaModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/name/SchoolName.api.ts b/src/views/school/name/SchoolName.api.ts
new file mode 100644
index 0000000..85534b6
--- /dev/null
+++ b/src/views/school/name/SchoolName.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/name/list',
+ save = '/school/name/add',
+ edit = '/school/name/edit',
+ deleteOne = '/school/name/delete',
+ deleteBatch = '/school/name/deleteBatch',
+ queryById = '/school/name/queryById',
+ importExcel = '/school/name/importExcel',
+ exportXls = '/school/name/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/name/SchoolName.data.ts b/src/views/school/name/SchoolName.data.ts
new file mode 100644
index 0000000..d0df415
--- /dev/null
+++ b/src/views/school/name/SchoolName.data.ts
@@ -0,0 +1,90 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+const nameTypeOptions = [
+ { label: '官方全称', value: 1 },
+ { label: '曾用名', value: 2 },
+ { label: '别名', value: 3 },
+ { label: '英文名称', value: 4 },
+];
+
+export const columns: BasicColumn[] = [
+ {
+ title: '学校ID',
+ align: 'center',
+ dataIndex: 'schoolId',
+ },
+ {
+ title: '名称',
+ align: 'center',
+ dataIndex: 'name',
+ },
+ {
+ title: '名称类型',
+ align: 'center',
+ dataIndex: 'nameType',
+ customRender: ({ text }) => {
+ const found = nameTypeOptions.find((o) => o.value === text || o.value === Number(text));
+ return found?.label || text;
+ },
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '名称',
+ field: 'name',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+ {
+ label: '名称类型',
+ field: 'nameType',
+ component: 'Select',
+ colProps: { span: 6 },
+ componentProps: {
+ options: nameTypeOptions,
+ },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '名称',
+ field: 'name',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '名称类型',
+ field: 'nameType',
+ component: 'Select',
+ required: true,
+ componentProps: {
+ options: nameTypeOptions,
+ },
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/name/SchoolNameList.vue b/src/views/school/name/SchoolNameList.vue
new file mode 100644
index 0000000..620416d
--- /dev/null
+++ b/src/views/school/name/SchoolNameList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/name/components/SchoolNameForm.vue b/src/views/school/name/components/SchoolNameForm.vue
new file mode 100644
index 0000000..0452ed0
--- /dev/null
+++ b/src/views/school/name/components/SchoolNameForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/name/components/SchoolNameModal.vue b/src/views/school/name/components/SchoolNameModal.vue
new file mode 100644
index 0000000..cf88aa8
--- /dev/null
+++ b/src/views/school/name/components/SchoolNameModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/school/School.api.ts b/src/views/school/school/School.api.ts
new file mode 100644
index 0000000..8970e99
--- /dev/null
+++ b/src/views/school/school/School.api.ts
@@ -0,0 +1,66 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/school/list',
+ search = '/school/school/search',
+ save = '/school/school/add',
+ edit = '/school/school/edit',
+ deleteOne = '/school/school/delete',
+ deleteBatch = '/school/school/deleteBatch',
+ queryById = '/school/school/queryById',
+ fullById = '/school/school/fullById',
+ fullByMainCode = '/school/school/fullByMainCode',
+ importExcel = '/school/school/importExcel',
+ exportXls = '/school/school/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const search = (params) => defHttp.get({ url: Api.search, params });
+
+export const listOrSearch = (params) => {
+ if (params?.keyword) {
+ return search(params);
+ }
+ // 避免将 keyword 透传给 /list
+ const { keyword: _keyword, ...rest } = params || {};
+ return list(rest);
+};
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const fullById = (params) => defHttp.get({ url: Api.fullById, params });
+
+export const fullByMainCode = (params) => defHttp.get({ url: Api.fullByMainCode, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
diff --git a/src/views/school/school/School.data.ts b/src/views/school/school/School.data.ts
new file mode 100644
index 0000000..dba8192
--- /dev/null
+++ b/src/views/school/school/School.data.ts
@@ -0,0 +1,101 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+import { render } from '/@/utils/common/renderUtils';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '学校编码',
+ align: 'center',
+ dataIndex: 'mainCode',
+ },
+ {
+ title: '学校名称',
+ align: 'center',
+ dataIndex: 'mainName',
+ },
+ {
+ title: '学校简称',
+ align: 'center',
+ dataIndex: 'shortName',
+ },
+ {
+ title: '学校图标',
+ align: 'center',
+ dataIndex: 'schoolIcon',
+ customRender: render.renderImage,
+ },
+ {
+ title: '创建时间',
+ align: 'center',
+ dataIndex: 'createTime',
+ },
+ {
+ title: '更新时间',
+ align: 'center',
+ dataIndex: 'updateTime',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '关键字',
+ field: 'keyword',
+ component: 'Input',
+ colProps: { span: 6 },
+ helpMessage: '走 /school/school/search:支持 编码/名称/简称/别名',
+ },
+ {
+ label: '学校编码',
+ field: 'mainCode',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+ {
+ label: '学校名称',
+ field: 'mainName',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+ {
+ label: '学校简称',
+ field: 'shortName',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校编码',
+ field: 'mainCode',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '学校名称',
+ field: 'mainName',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '学校简称',
+ field: 'shortName',
+ component: 'Input',
+ },
+ {
+ label: '学校图标',
+ field: 'schoolIcon',
+ component: 'Input',
+ helpMessage: '填写图片URL(或后端文件路径)',
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
diff --git a/src/views/school/school/SchoolList.vue b/src/views/school/school/SchoolList.vue
new file mode 100644
index 0000000..b318ea1
--- /dev/null
+++ b/src/views/school/school/SchoolList.vue
@@ -0,0 +1,133 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/school/components/SchoolForm.vue b/src/views/school/school/components/SchoolForm.vue
new file mode 100644
index 0000000..00ced25
--- /dev/null
+++ b/src/views/school/school/components/SchoolForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/school/components/SchoolFullDrawer.vue b/src/views/school/school/components/SchoolFullDrawer.vue
new file mode 100644
index 0000000..9bca38f
--- /dev/null
+++ b/src/views/school/school/components/SchoolFullDrawer.vue
@@ -0,0 +1,41 @@
+
+
+
+
+ {{ prettyJson }}
+
+
+
+
+
+
diff --git a/src/views/school/school/components/SchoolModal.vue b/src/views/school/school/components/SchoolModal.vue
new file mode 100644
index 0000000..fcbafd4
--- /dev/null
+++ b/src/views/school/school/components/SchoolModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/tag/SchoolTag.api.ts b/src/views/school/tag/SchoolTag.api.ts
new file mode 100644
index 0000000..24a4260
--- /dev/null
+++ b/src/views/school/tag/SchoolTag.api.ts
@@ -0,0 +1,49 @@
+import { defHttp } from '/@/utils/http/axios';
+import { useMessage } from '/@/hooks/web/useMessage';
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/school/tag/list',
+ save = '/school/tag/add',
+ edit = '/school/tag/edit',
+ deleteOne = '/school/tag/delete',
+ deleteBatch = '/school/tag/deleteBatch',
+ queryById = '/school/tag/queryById',
+ importExcel = '/school/tag/importExcel',
+ exportXls = '/school/tag/exportXls',
+}
+
+export const getExportUrl = Api.exportXls;
+export const getImportUrl = Api.importExcel;
+
+export const list = (params) => defHttp.get({ url: Api.list, params });
+
+export const queryById = (params) => defHttp.get({ url: Api.queryById, params });
+
+export const deleteOne = (params, handleSuccess) => {
+ return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+};
+
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
+ handleSuccess?.();
+ });
+ },
+ });
+};
+
+export const saveOrUpdate = (params, isUpdate) => {
+ const url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({ url, params });
+};
+
diff --git a/src/views/school/tag/SchoolTag.data.ts b/src/views/school/tag/SchoolTag.data.ts
new file mode 100644
index 0000000..c0186b6
--- /dev/null
+++ b/src/views/school/tag/SchoolTag.data.ts
@@ -0,0 +1,56 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+
+export const columns: BasicColumn[] = [
+ {
+ title: '学校ID',
+ align: 'center',
+ dataIndex: 'schoolId',
+ },
+ {
+ title: '标签',
+ align: 'center',
+ dataIndex: 'tagName',
+ },
+];
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ colProps: { span: 6 },
+ },
+ {
+ label: '标签',
+ field: 'tagName',
+ component: 'Input',
+ colProps: { span: 6 },
+ },
+];
+
+export const formSchema: FormSchema[] = [
+ {
+ label: '学校ID',
+ field: 'schoolId',
+ component: 'InputNumber',
+ required: true,
+ },
+ {
+ label: '标签',
+ field: 'tagName',
+ component: 'Input',
+ required: true,
+ },
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false,
+ },
+];
+
+export function getBpmFormSchema(_formData): FormSchema[] {
+ return formSchema;
+}
+
diff --git a/src/views/school/tag/SchoolTagList.vue b/src/views/school/tag/SchoolTagList.vue
new file mode 100644
index 0000000..2a06c8d
--- /dev/null
+++ b/src/views/school/tag/SchoolTagList.vue
@@ -0,0 +1,122 @@
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/school/tag/components/SchoolTagForm.vue b/src/views/school/tag/components/SchoolTagForm.vue
new file mode 100644
index 0000000..7c7b283
--- /dev/null
+++ b/src/views/school/tag/components/SchoolTagForm.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/school/tag/components/SchoolTagModal.vue b/src/views/school/tag/components/SchoolTagModal.vue
new file mode 100644
index 0000000..ebb7e88
--- /dev/null
+++ b/src/views/school/tag/components/SchoolTagModal.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+