diff --git a/src/main/resources/static/assets/platform/css/personGovernance.css b/src/main/resources/static/assets/platform/css/personGovernance.css index 769dd886..c314d22d 100644 --- a/src/main/resources/static/assets/platform/css/personGovernance.css +++ b/src/main/resources/static/assets/platform/css/personGovernance.css @@ -2,31 +2,23 @@ .person-governance-page-transition { visibility: hidden; opacity: 0; - transform: translateY(6px); - transition: - opacity 220ms ease, - transform 220ms ease, - visibility 0s linear 220ms; } .person-governance-page-transition.is-ready { visibility: visible; opacity: 1; - transform: translateY(0); - transition-delay: 0s; } .person-governance-page-transition.is-leaving { pointer-events: none; opacity: 0; - transform: translateY(3px); } .person-governance-list-page { box-sizing: border-box; display: flex; flex-direction: column; - height: calc(100vh - 50px); + height: 100%; min-height: 0; overflow: hidden; padding: 10px; @@ -58,6 +50,7 @@ .person-governance-table-wrap { flex: 1; min-height: 0; + overflow: hidden; } .person-governance-table-wrap > .el-table { @@ -69,12 +62,52 @@ flex: none; } +/* 人员变更列表位于 Guava 默认插槽内,列表视图仍按查询区、表格区、分页区分配固定高度。 */ +.person-governance-change-page > .guava-main-content, +.person-governance-change-page > .guava-main-content > .transition-item { + height: 100%; + min-height: 0; + overflow: hidden; +} + +.person-governance-change-page > .guava-main-content > .transition-item { + display: flex; + flex-direction: column; +} + +.person-governance-change-list-card { + flex: 1; + min-height: 0; +} + +.person-governance-change-list-card > .el-card__body { + box-sizing: border-box; + display: flex; + flex-direction: column; + height: 100%; + min-height: 0; +} + +.person-governance-change-table-wrap { + flex: 1; + min-height: 0; + overflow: hidden; +} + +.person-governance-change-table-wrap > .el-table { + height: 100%; +} + +.person-governance-change-list-card .el-pagination-container { + flex: none; +} + /* 配置页顶部字段根据内容区宽度自动分列,空间不足时自然换行。 */ .person-governance-form-page { box-sizing: border-box; display: flex; flex-direction: column; - height: calc(100vh - 50px); + height: 100%; max-width: 100%; min-height: 0; overflow-x: hidden; @@ -291,6 +324,9 @@ } .person-governance-form-footer { + display: flex; + align-items: center; + justify-content: flex-end; flex: none; margin-top: 10px; } diff --git a/src/main/resources/static/assets/platform/js/mixin/initTableMixins.js b/src/main/resources/static/assets/platform/js/mixin/initTableMixins.js index 9b475c3a..4e624701 100644 --- a/src/main/resources/static/assets/platform/js/mixin/initTableMixins.js +++ b/src/main/resources/static/assets/platform/js/mixin/initTableMixins.js @@ -70,7 +70,8 @@ const initTableMixins = { pageData(data = null) { const address = this.pageDataUrl ? this.pageDataUrl : loc() + "/pageData" this.tableLoading = true - this.$axios.post(address, data ? data : this.pageForm).then((res) => { + // 返回请求 Promise,供页面在列表数据加载结束后再显示主体内容。 + return this.$axios.post(address, data ? data : this.pageForm).then((res) => { if (res.code === 0) { this.tableData = res.data.list this.pageForm.totalCount = res.data.totalCount diff --git a/src/main/resources/views/layouts/platform.html b/src/main/resources/views/layouts/platform.html index bdce0b94..dc9cfba6 100644 --- a/src/main/resources/views/layouts/platform.html +++ b/src/main/resources/views/layouts/platform.html @@ -399,6 +399,14 @@ layout("/layouts/v4/baseLayout.html"){ // 默认选中 getMenuOwnerPath() { const pathname = window.location.pathname + // API配置表单不是独立菜单,直接刷新表单地址时仍归属API配置菜单。 + if (pathname === "/platform/personGovernance/apiConfig/form") { + return "/platform/personGovernance/apiConfig" + } + // 会员匹配表单不是独立菜单,直接刷新表单地址时仍归属会员匹配菜单。 + if (pathname === "/platform/personGovernance/memberMatch/form") { + return "/platform/personGovernance/memberMatch" + } if (pathname === "/platform/qsv/survey/reportPage") { return "/platform/qsv/survey" } @@ -409,6 +417,12 @@ layout("/layouts/v4/baseLayout.html"){ }, getMenuOwnerFullPath() { + if (window.location.pathname === "/platform/personGovernance/apiConfig/form") { + return "/platform/personGovernance/apiConfig" + } + if (window.location.pathname === "/platform/personGovernance/memberMatch/form") { + return "/platform/personGovernance/memberMatch" + } if (window.location.pathname === "/platform/qsv/survey/reportPage") { return "/platform/qsv/survey" } diff --git a/src/main/resources/views/platform/personGovernance/apiConfig/form.html b/src/main/resources/views/platform/personGovernance/apiConfig/form.html index 261c5d8d..e188e3d2 100644 --- a/src/main/resources/views/platform/personGovernance/apiConfig/form.html +++ b/src/main/resources/views/platform/personGovernance/apiConfig/form.html @@ -1,5 +1,5 @@ - +
diff --git a/src/main/resources/views/platform/personGovernance/apiConfig/index.html b/src/main/resources/views/platform/personGovernance/apiConfig/index.html index 341185d5..f75fa5af 100644 --- a/src/main/resources/views/platform/personGovernance/apiConfig/index.html +++ b/src/main/resources/views/platform/personGovernance/apiConfig/index.html @@ -1,5 +1,5 @@ - +
diff --git a/src/main/resources/views/platform/personGovernance/memberMatch/form.html b/src/main/resources/views/platform/personGovernance/memberMatch/form.html index edd218a3..41085415 100644 --- a/src/main/resources/views/platform/personGovernance/memberMatch/form.html +++ b/src/main/resources/views/platform/personGovernance/memberMatch/form.html @@ -1,5 +1,5 @@ - +
diff --git a/src/main/resources/views/platform/personGovernance/memberMatch/index.html b/src/main/resources/views/platform/personGovernance/memberMatch/index.html index a76db783..918bbdc7 100644 --- a/src/main/resources/views/platform/personGovernance/memberMatch/index.html +++ b/src/main/resources/views/platform/personGovernance/memberMatch/index.html @@ -1,5 +1,5 @@ - +
diff --git a/src/main/resources/views/platform/personGovernance/personChange/index.html b/src/main/resources/views/platform/personGovernance/personChange/index.html index 9c6a1ca1..dee1873c 100644 --- a/src/main/resources/views/platform/personGovernance/personChange/index.html +++ b/src/main/resources/views/platform/personGovernance/personChange/index.html @@ -1,9 +1,15 @@  -
+ +
- + @@ -64,7 +70,7 @@ layout("/layouts/platform.html"){ - + @@ -148,8 +154,9 @@ layout("/layouts/platform.html"){ +
+ class="vi-table" ref="table" row-key="id" style="width: 100%" height="100%"> @@ -227,6 +234,7 @@ layout("/layouts/platform.html"){ +
@@ -490,6 +498,7 @@ layout("/layouts/platform.html"){ store, mixins: [initTableMixins], data: { + pageReady: false, pickerOptions: { shortcuts: [{ text: '最近一周', @@ -611,6 +620,16 @@ layout("/layouts/platform.html"){ pageData(data = null) { return initTableMixins.methods.pageData.call(this, this.buildQueryPageForm(data || this.pageForm)) }, + showPage() { + this.$nextTick(() => { + if (this.$refs.table && this.$refs.table.doLayout) { + this.$refs.table.doLayout() + } + window.requestAnimationFrame(() => { + this.$set(this, "pageReady", true) + }) + }) + }, dropdownCommand(command) { const {type, data} = command if (type === 'view') { @@ -685,7 +704,7 @@ layout("/layouts/platform.html"){ initData() { const isAdmin = this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"]) const unionId = isAdmin ? this.pageForm.unionId : this.$store.state.user.union.id - Promise.all([ + return Promise.all([ this.$businessTool.listUnion(unionId), this.$businessTool.getEnumOptions("MemberChangeType"), this.$businessTool.getDictOptions("ALLOW_CHANGE_FIELDS") @@ -913,8 +932,10 @@ layout("/layouts/platform.html"){ this.$set(this, "checkedFields", this.tableColumns.filter(c => c.checked !== 0).map(c => c.prop)); }, created() { - this.initData() - this.pageData() + // 单位、字典和列表请求全部结束后再显示页面,避免初始化过程中的布局跳动。 + $.when(this.initData(), this.pageData()).always(() => { + this.showPage() + }) } }) diff --git a/src/main/resources/views/platform/personGovernance/personException/index.html b/src/main/resources/views/platform/personGovernance/personException/index.html index ef4138eb..c92d0b23 100644 --- a/src/main/resources/views/platform/personGovernance/personException/index.html +++ b/src/main/resources/views/platform/personGovernance/personException/index.html @@ -1,5 +1,5 @@ - +
- + { + // 当前项目通过 businessTool 获取单位和人员字典,避免依赖原项目 v.js 中不存在的全局方法。 + const unitRequest = this.$businessTool.listUnit().then((rows) => { this.$set(this, 'units', rows) }) - const personTypeRequest = getDictOptions('UserType').then((rows) => { + const personTypeRequest = this.$businessTool.getDictOptions('USER_PERSON_TYPE').then((rows) => { this.$set(this, 'personTypeOptions', rows) }) - const userStateRequest = getDictOptions('UserState').then((rows) => { + const userStateRequest = this.$businessTool.getDictOptions('USER_STATE').then((rows) => { this.$set(this, 'userStateOptions', rows) }) $.when(this.pageData(), unitRequest, personTypeRequest, userStateRequest).always(() => {