feat: 同步地大功能至2026年10月20日

This commit is contained in:
2026-10-21 09:26:25 +08:00
parent 6b5d27c68d
commit 88d624172c
198 changed files with 19375 additions and 2128 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

@@ -0,0 +1,768 @@
/* 人员数据治理列表统一占满内容区,数据超出时只滚动表格主体。 */
.person-governance-page-transition {
visibility: hidden;
opacity: 0;
}
.person-governance-page-transition.is-ready {
visibility: visible;
opacity: 1;
}
.person-governance-page-transition.is-leaving {
pointer-events: none;
opacity: 0;
}
.person-governance-list-page {
box-sizing: border-box;
display: flex;
flex-direction: column;
height: 100%;
min-height: 0;
overflow: hidden;
padding: 10px;
}
.person-governance-search-card {
flex: none;
}
.person-governance-list-card {
flex: 1;
min-height: 0;
margin-top: 20px;
}
/* 会员匹配列表的查询区与列表区间距缩小为原来的一半。 */
.person-governance-compact-gap .person-governance-list-card {
margin-top: 10px;
}
.person-governance-list-card > .el-card__body {
box-sizing: border-box;
display: flex;
flex-direction: column;
height: 100%;
min-height: 0;
}
.person-governance-table-wrap {
flex: 1;
min-height: 0;
overflow: hidden;
}
.person-governance-table-wrap > .el-table {
height: 100%;
}
.person-governance-list-footer,
.person-governance-list-card .el-pagination-container {
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: 100%;
max-width: 100%;
min-height: 0;
overflow-x: hidden;
overflow-y: hidden;
padding: 10px;
}
/* PageHeader 提供统一返回入口,并与基本配置保持紧凑间距。 */
.person-governance-page-header {
flex: none;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
padding: 16px 20px;
background-color: #fff;
}
/* 表单页只保留返回入口,移除 PageHeader 空内容对应的分隔线和占位间距。 */
.person-governance-page-header .el-page-header__left {
margin-right: 0;
}
.person-governance-page-header .el-page-header__left::after,
.person-governance-page-header .el-page-header__content {
display: none;
}
.person-governance-form-basic-card {
flex: none;
}
/* 第三方接口按Token与数据分区管理,一级页签保持紧凑并独立于各自的子页签。 */
.person-governance-endpoint-tabs-card {
flex: none;
margin-bottom: 10px;
}
.person-governance-endpoint-tabs-card > .el-card__body {
padding: 0 20px;
}
.person-governance-endpoint-tabs-card .el-tabs__header {
margin-bottom: 0;
}
.person-governance-endpoint-tabs-card .el-tabs__content {
display: none;
}
/* 顶部基本配置横向铺满卡片,并压缩默认表单项产生的底部空白。 */
.person-governance-form-basic-card > .el-card__body {
padding: 20px 10px;
}
.person-governance-form-basic-card .el-form-item {
margin-bottom: 0;
}
/* 两类会员规则使用独立页签,页签本身不参与内容区滚动。 */
.person-governance-member-type-tabs {
flex: none;
margin-top: 10px;
padding: 0 20px;
background: #fff;
border: 1px solid #ebeef5;
border-radius: 4px;
}
.person-governance-member-type-tabs .el-tabs__header {
margin: 0;
}
.person-governance-member-type-tabs .el-tabs__content {
display: none;
}
/* 主要配置板块占满剩余高度,内容过多时仅在板块内部滚动。 */
.person-governance-form-content-card {
flex: 1;
min-height: 0;
margin-top: 10px;
}
.person-governance-form-content-card > .el-card__body {
box-sizing: border-box;
height: 100%;
overflow: auto;
}
.person-governance-form-content-row {
display: flex;
flex: 1;
min-height: 0;
margin-top: 10px;
}
.person-governance-form-content-row > .el-col,
.person-governance-form-content-row > .el-col > .el-card {
display: flex;
flex-direction: column;
min-height: 0;
height: 100%;
}
.person-governance-form-content-row > .el-col {
float: none;
}
.person-governance-form-content-row > .el-col > .el-card {
flex: 1;
}
.person-governance-form-content-row > .el-col > .el-card > .el-card__body {
box-sizing: border-box;
height: 100%;
overflow: auto;
}
/* 匹配规则标题固定,条件组占用剩余高度并独立滚动。 */
.person-governance-form-content-row > .el-col > .person-governance-member-rules > .el-card__body {
display: flex;
flex-direction: column;
min-height: 0;
overflow: hidden;
}
.person-governance-member-rules-header {
flex: none;
}
.person-governance-member-rules-content {
flex: 1;
min-height: 0;
overflow: auto;
padding-right: 8px;
}
/* 会员预览固定标题和操作区,表格独占剩余高度,长列表只滚动表格内部。 */
.person-governance-form-content-row > .el-col > .person-governance-member-preview > .el-card__body {
display: flex;
flex-direction: column;
min-height: 0;
overflow: hidden;
}
.person-governance-member-preview h3,
.person-governance-member-preview p,
.person-governance-member-preview > .el-card__body > .el-button {
flex: none;
}
.person-governance-member-preview > .el-card__body > .el-button {
align-self: flex-start;
}
.person-governance-member-preview-table {
flex: 1;
min-height: 0;
margin-top: 20px;
}
.person-governance-member-preview-pagination {
flex: none;
padding-top: 10px;
text-align: right;
}
.person-governance-member-preview-pagination .el-pagination {
padding: 0;
white-space: normal;
}
.person-governance-member-binding-hint {
margin-bottom: 16px;
}
.person-governance-member-condition-relation > td {
padding: 6px 0;
text-align: center;
background-color: #fafafa;
}
/* 每层条件组对应一层括号语义,通过边框和缩进直观展示父子层级。 */
.person-governance-member-group {
margin-top: 20px;
padding: 14px;
border: 1px solid #dcdfe6;
border-radius: 4px;
background: #fff;
}
.person-governance-member-group.is-nested {
margin: 0 0 0 20px;
border-color: #b3d8ff;
background: #f8fbff;
}
.person-governance-member-group-header {
min-height: 28px;
margin-bottom: 10px;
}
.person-governance-member-group-actions {
margin-top: 10px;
}
.person-governance-member-group-relation {
margin: 28px 0;
}
.person-governance-member-child-relation {
margin-left: 20px;
}
.person-governance-form-footer {
display: flex;
align-items: center;
justify-content: flex-end;
flex: none;
margin-top: 10px;
}
.person-governance-form-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
column-gap: 20px;
align-items: start;
width: 100%;
}
.person-governance-form-grid .el-form-item {
margin-right: 0;
}
.person-governance-form-grid .el-select,
.person-governance-form-grid .el-input-number {
width: 100%;
}
/* API配置顶部字段按业务宽度靠左排列,同步方式具体值单独放在页首右侧。 */
.person-governance-sync-type {
color: #303133;
line-height: 24px;
}
.person-governance-api-basic-grid {
/* 按业务宽度紧凑靠左,剩余空间留在右侧;窄屏只允许整组字段换行。 */
display: flex;
flex-wrap: wrap;
gap: 18px 16px;
justify-content: flex-start;
align-items: center;
}
.person-governance-api-basic-grid > .el-form-item {
display: flex;
align-items: center;
flex: 0 1 280px;
min-width: 0;
max-width: 100%;
}
.person-governance-api-basic-grid .el-form-item__label {
flex: none;
float: none;
white-space: nowrap;
}
.person-governance-api-basic-grid .el-form-item__content {
flex: 1;
min-width: 0;
}
.person-governance-api-basic-grid > .person-governance-api-request-address {
flex-basis: 620px;
}
.person-governance-api-basic-grid > .person-governance-api-timeout {
flex-basis: 270px;
}
.person-governance-api-basic-grid > .person-governance-query-action {
flex: none;
}
.person-governance-request-address-control,
.person-governance-timeout-control {
display: flex;
align-items: center;
}
.person-governance-request-address-control {
width: 100%;
}
.person-governance-request-address-control .el-select {
flex: none;
width: 100px;
}
.person-governance-request-address-control > .el-input {
flex: 1;
min-width: 0;
margin-left: 8px;
}
.person-governance-timeout-control .el-input-number {
flex: none;
width: 200px;
min-width: 200px;
}
.person-governance-timeout-unit {
flex: none;
margin-left: 8px;
color: #606266;
}
/* API配置页签占满内容卡片,返回结果文本域随剩余高度伸展。 */
.person-governance-api-content-card > .el-card__body {
overflow: hidden;
}
.person-governance-api-content-card > .el-card__body > .el-tabs {
display: flex;
flex-direction: column;
height: 100%;
}
.person-governance-api-content-card > .el-card__body > .el-tabs > .el-tabs__header {
flex: none;
}
.person-governance-api-content-card > .el-card__body > .el-tabs > .el-tabs__content {
flex: 1;
min-height: 0;
}
.person-governance-api-content-card > .el-card__body > .el-tabs > .el-tabs__content > .el-tab-pane {
box-sizing: border-box;
height: 100%;
overflow: auto;
}
/* 系统表配置不显示单一的字段映射页签标题,映射内容直接占满卡片。 */
.person-governance-system-table-card > .el-card__body > .el-tabs > .el-tabs__header {
display: none;
}
.person-governance-system-table-card > .el-card__body > .el-tabs > .el-tabs__content,
.person-governance-system-table-card .person-governance-mapping-pane {
height: 100%;
}
.person-governance-system-table-card .person-governance-mapping-pane {
overflow: hidden !important;
}
.person-governance-result-pane {
display: flex;
flex-direction: column;
overflow: hidden !important;
}
.person-governance-result-textarea {
flex: 1;
min-height: 0;
height: 100%;
}
/* 返回结果下方的映射配置固定保留,长响应只在文本域内滚动。 */
.person-governance-response-fields {
display: flex;
flex-wrap: wrap;
flex: none;
gap: 10px 20px;
padding-top: 12px;
}
.person-governance-response-fields > div {
display: flex;
align-items: center;
flex: 1 1 280px;
min-width: 0;
gap: 10px;
}
.person-governance-response-fields label,
.person-governance-task-cron label {
white-space: nowrap;
flex: none;
}
.person-governance-response-fields .el-input,
.person-governance-response-fields .el-select {
flex: 1;
min-width: 0;
}
.person-governance-task-cron {
flex: 0 1 420px;
max-width: 420px;
}
.person-governance-cron-hint,
.person-governance-json-hint {
flex: none;
color: #909399;
font-size: 12px;
line-height: 20px;
}
.person-governance-parameter-pane .person-governance-body-json {
flex: 1;
min-height: 80px;
height: auto;
}
.person-governance-result-textarea .el-textarea__inner,
.person-governance-body-json .el-textarea__inner {
height: 100%;
resize: none;
}
.person-governance-result-actions {
flex: none;
margin-top: 10px;
text-align: right;
}
.person-governance-body-json {
height: calc(100% - 52px);
}
/* 字段映射与请求参数表格在可见页签内直接按完整宽高渲染。 */
.person-governance-mapping-table {
width: 100%;
}
.person-governance-mapping-pane {
display: flex;
flex-direction: column;
min-height: 0;
overflow: hidden !important;
}
.person-governance-mapping-table-wrap {
flex: 1;
min-height: 0;
margin-top: 20px;
}
.person-governance-mapping-table-wrap > .el-table {
height: 100%;
}
.person-governance-mapping-toolbar {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 12px 24px;
}
.person-governance-mapping-toolbar-item {
display: flex;
align-items: center;
min-width: 0;
}
/* 两种数据来源共用右侧清空入口,窄屏换行后仍靠右,不挤压周期控件。 */
.person-governance-mapping-toolbar > .person-governance-clear-mappings {
flex: none;
margin-left: auto;
}
.person-governance-mapping-toolbar-item > label {
flex: none;
margin-right: 10px;
color: #303133;
white-space: nowrap;
}
.person-governance-mapping-table-select {
flex: 0 1 360px;
max-width: 360px;
}
.person-governance-mapping-table-select .el-select {
flex: 1;
min-width: 180px;
}
.person-governance-mapping-switch {
flex: none;
}
/* 系统表配置项按配置名称、来源表、目标表、同步开关的顺序自适应排列。 */
.person-governance-system-table-toolbar {
flex: none;
}
.person-governance-system-table-toolbar .el-form-item {
/* 标签与控件作为一组排列,仅允许表单项在工具栏中整体换行。 */
display: flex;
align-items: center;
flex: 1 1 280px;
min-width: 0;
margin: 0;
}
.person-governance-system-table-toolbar .person-governance-system-target-table {
flex: 0 1 300px;
}
.person-governance-system-table-toolbar .person-governance-system-task-cron {
flex: 0 1 430px;
}
.person-governance-system-table-toolbar .person-governance-system-member-match {
flex: none;
column-gap: 12px;
margin-left: 16px;
}
/* 长标签按文字实际宽度展示,通过固定列间距避免文字与开关重叠或距离过大。 */
.person-governance-system-table-toolbar .person-governance-system-member-match .el-form-item__label {
width: auto !important;
padding-right: 0;
}
.person-governance-system-table-toolbar .person-governance-system-member-match .el-form-item__content {
margin-left: 0 !important;
}
.person-governance-system-table-toolbar .el-form-item__label {
flex: none;
float: none;
white-space: nowrap;
}
.person-governance-system-table-toolbar .el-form-item__content {
flex: 1;
min-width: 0;
width: auto;
}
.person-governance-system-table-toolbar .el-input,
.person-governance-system-table-toolbar .el-select {
width: 100%;
}
.person-governance-parameter-pane {
display: flex;
flex-direction: column;
min-height: 0;
overflow: hidden !important;
}
.person-governance-parameter-pane > .el-tabs,
.person-governance-parameter-pane > .el-radio-group {
flex: none;
}
.person-governance-parameter-table-wrap {
flex: 1;
min-height: 0;
margin-top: 10px;
}
.person-governance-parameter-table-wrap > .el-table {
width: 100%;
height: 100%;
}
/* 参数表头按文字与加号按钮的实际高度紧凑展示。 */
.person-governance-parameter-table .el-table__header-wrapper th,
.person-governance-mapping-table .el-table__header-wrapper th {
padding: 6px 0;
}
.person-governance-parameter-table .el-table__header-wrapper th .cell,
.person-governance-mapping-table .el-table__header-wrapper th .cell {
line-height: 20px;
white-space: nowrap;
}
.person-governance-add-column .el-button {
padding: 0;
font-size: 16px;
line-height: 20px;
}
/* 弹窗和抽屉沿用 Element UI 过渡,并为本模块调整为更柔和的缓动。 */
.dialog-fade-enter-active .person-governance-dialog,
.dialog-fade-leave-active .person-governance-dialog {
transition:
opacity 260ms ease,
transform 260ms ease;
}
.dialog-fade-enter .person-governance-dialog,
.dialog-fade-leave-to .person-governance-dialog {
opacity: 0;
transform: translateY(-10px) scale(0.99);
}
/* 弹窗挂载body避开页面过渡层,短屏内部滚动,窄屏保留周期编辑器的完整操作区域。 */
.person-governance-cron-dialog {
max-width: calc(100vw - 32px);
}
.person-governance-cron-dialog .el-dialog__body {
max-height: 78vh;
overflow: auto;
padding: 10px 20px 20px;
}
.person-governance-cron-dialog .popup-main {
min-width: 640px;
}
.person-governance-drawer {
transition: box-shadow 260ms ease;
}
.person-governance-drawer.rtl,
.el-drawer__open .person-governance-drawer.rtl {
animation-duration: 340ms;
animation-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
}
@media (max-width: 767px) {
.person-governance-list-page,
.person-governance-form-page {
padding: 8px;
}
.person-governance-form-grid {
grid-template-columns: 1fr;
}
.person-governance-page-header {
align-items: flex-start;
}
.person-governance-timeout-control .el-input-number {
flex: 1;
width: 100%;
min-width: 0;
}
.person-governance-mapping-table-select {
flex-basis: 100%;
max-width: none;
}
}
@@ -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