feat: 迁移 Vue3 + Vite + view-ui-plus(对齐 NoticeFront 框架)

- 构建:Vue CLI 4 → Vite 5,入口迁至根 index.html(含 env-config + 主题通道 loader)
- 技术栈:Vue 2.6 → Vue 3.4,view-design → view-ui-plus 1.3.24,vue-router 3 → 4(hash)
- 壳层重写:App.vue / components/layout.vue 对齐 Notice 骨架(logo-badge、icon-* 通道图标、resolveMenuPage、crumb-home 基线)
- 机械转换:具名 slot → template #x、.sync → v-model:、@click.native、$set、beforeDestroy、/deep/ → :deep()
- render:h('Button')/h('Input') → 真组件 + 扁平 props/onClick
- 组件适配:vuedraggable 4 的 #item 插槽;vue-treeselect → @zanmato/vue3-treeselect;Page 分页改 v-model + pageSize 显式回写
- 清理:删除 Vue2 死代码(layout_old/bak/child、App.Net、codeModal、未引用组件)
- 修复:深链接首次加载被重定向到首个模块(router.isReady)

验证:vite build 通过;headless CDP 全 15 路由无异常;教师列表 2 行渲染、操作列按钮点击弹窗正常。
This commit is contained in:
lijing
2026-10-20 15:16:52 +08:00
parent 0564f5f89d
commit 7e49587c10
73 changed files with 6083 additions and 33190 deletions
+19 -25
View File
@@ -24,7 +24,7 @@
<FormItem label="新学年">
<Input disabled :value="addForm.year + '学年'" />
</FormItem>
<Row gutter="16">
<Row :gutter="16">
<Col span="12">
<FormItem label="开始日期" prop="yearStartDate">
<DatePicker
@@ -56,7 +56,7 @@
></DatePicker>
</FormItem>
<div class="form-block-title">第一学期设置</div>
<Row gutter="16">
<Row :gutter="16">
<Col span="12">
<FormItem label="开始日期" prop="firstTermStartDate">
<DatePicker
@@ -81,7 +81,7 @@
</Col>
</Row>
<div class="form-block-title">第二学期设置</div>
<Row gutter="16">
<Row :gutter="16">
<Col span="12">
<FormItem label="开始日期" prop="secondTermStartDate">
<DatePicker
@@ -104,10 +104,10 @@
</Col>
</Row>
</Form>
<div slot="footer" class="modal-footer">
<template #footer><div class="modal-footer">
<Button @click="addModalVisible = false">取消</Button>
<Button type="primary" @click="submitAdd">提交</Button>
</div>
</div></template>
</Modal>
<!-- 编辑弹窗 -->
<Modal v-model="editModalVisible" title="修改学年学期" width="720" class="modalform">
@@ -122,7 +122,7 @@
<FormItem label="新学年">
<Input disabled :value="editForm.year + '学年'" />
</FormItem>
<Row gutter="16">
<Row :gutter="16">
<Col span="12">
<FormItem label="开始日期" prop="yearStartDate">
<DatePicker
@@ -151,7 +151,7 @@
></DatePicker>
</FormItem>
<div class="form-block-title">第一学期设置</div>
<Row gutter="16">
<Row :gutter="16">
<Col span="12">
<FormItem label="开始日期" prop="firstTermStartDate">
<DatePicker
@@ -172,7 +172,7 @@
</Col>
</Row>
<div class="form-block-title">第二学期设置</div>
<Row gutter="16">
<Row :gutter="16">
<Col span="12">
<FormItem label="开始日期" prop="secondTermStartDate">
<DatePicker
@@ -193,15 +193,16 @@
</Col>
</Row>
</Form>
<div slot="footer" class="modal-footer">
<template #footer><div class="modal-footer">
<Button @click="editModalVisible = false">取消</Button>
<Button type="primary" @click="submitEdit">保存</Button>
</div>
</div></template>
</Modal>
</div>
</template>
<script>
import { self_viewport } from "@/mixins/self_viewport";
import { Button } from "view-ui-plus";
import { self_viewport } from "@/mixins/self_viewport";
export default {
name: "AcademicYearTerm",
data() {
@@ -268,19 +269,12 @@ export default {
width: 90,
align: "center",
render: (h, params) => {
return h(
"Button",
{
props: {
icon: "ios-create",
shape: "circle"
},
on: {
click: () => {
return h(Button,
{icon: "ios-create",
shape: "circle",
onClick: () => {
this.openEditModal(params.row);
}
}
}
}}
);
}
}
@@ -550,7 +544,7 @@ export default {
padding: 10px;
/* margin: 10px 0 15px; */
}
.term-table /deep/ .ivu-table-row td {
.term-table :deep(.ivu-table-row td) {
padding: 6px 0;
}
.form-block-title {
@@ -563,7 +557,7 @@ export default {
.modal-footer {
text-align: right;
}
.modalform /deep/ .ivu-modal-body{
.modalform :deep(.ivu-modal-body) {
padding:10px;
}
</style>