From 9e3e775b0f2980bcd8e80d77ec94a4aac13a5503 Mon Sep 17 00:00:00 2001 From: guochunsi <1595020186@qq.com> Date: Wed, 7 Jan 2026 18:33:03 +0800 Subject: [PATCH] ren --- .../tools}/action-dropdown.vue | 1 + src/components/tools/auth-img.vue | 201 ++++++------------ src/components/tools/preview-file.vue | 141 ++++++++++++ src/composables/useTableColumns.ts | 36 +++- .../index.vue | 4 +- .../index.vue | 4 +- .../index.vue | 4 +- .../professionalteacherhonor/index.vue | 4 +- .../professionaltitlerelation/index.vue | 4 +- src/views/professional/teacherbase/index.vue | 2 +- .../professional/teacherbase/multiDialog.vue | 31 ++- 11 files changed, 277 insertions(+), 155 deletions(-) rename src/{views/professional/teacherbase => components/tools}/action-dropdown.vue (99%) create mode 100644 src/components/tools/preview-file.vue diff --git a/src/views/professional/teacherbase/action-dropdown.vue b/src/components/tools/action-dropdown.vue similarity index 99% rename from src/views/professional/teacherbase/action-dropdown.vue rename to src/components/tools/action-dropdown.vue index 256ac3a..9de20bf 100644 --- a/src/views/professional/teacherbase/action-dropdown.vue +++ b/src/components/tools/action-dropdown.vue @@ -89,3 +89,4 @@ const handleCommand = (command: string) => { } + diff --git a/src/components/tools/auth-img.vue b/src/components/tools/auth-img.vue index 9884797..d69319b 100644 --- a/src/components/tools/auth-img.vue +++ b/src/components/tools/auth-img.vue @@ -1,150 +1,85 @@ - - - - - - - + + + + + + + - - - + ref="authIframeRef" + style="width: 100%; height: 100%;" + /> - + diff --git a/src/components/tools/preview-file.vue b/src/components/tools/preview-file.vue new file mode 100644 index 0000000..41a6e90 --- /dev/null +++ b/src/components/tools/preview-file.vue @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + diff --git a/src/composables/useTableColumns.ts b/src/composables/useTableColumns.ts index ae959a5..7e45962 100644 --- a/src/composables/useTableColumns.ts +++ b/src/composables/useTableColumns.ts @@ -343,7 +343,41 @@ export function useTableColumns( } if (extracted.length > 0) { - columns.value = extracted + // 合并列配置: + // - 第一次提取时直接赋值 + // - 后续提取时与已有列做并集,避免因为列被隐藏导致配置丢失, + // 从而在“列设置”弹窗中看不到已隐藏的列 + if (columns.value.length === 0) { + columns.value = extracted + } else { + const keyOf = (col: ColumnConfig) => col.prop || col.label + const map = new Map() + + // 先放入已有列 + columns.value.forEach(col => { + const key = keyOf(col) + if (key) { + map.set(key, { ...col }) + } + }) + + // 再合并本次提取的列(更新宽度、fixed 等信息,避免旧配置过时) + extracted.forEach(col => { + const key = keyOf(col) + if (!key) return + const exist = map.get(key) + if (exist) { + map.set(key, { + ...exist, + ...col, + }) + } else { + map.set(key, { ...col }) + } + }) + + columns.value = Array.from(map.values()) + } // 初始化可见列 if (storageKey) { diff --git a/src/views/professional/professionalqualificationrelation/index.vue b/src/views/professional/professionalqualificationrelation/index.vue index 2882b95..021d4b6 100644 --- a/src/views/professional/professionalqualificationrelation/index.vue +++ b/src/views/professional/professionalqualificationrelation/index.vue @@ -167,7 +167,7 @@ /> - import('/@/components/TeacherNa const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue')) const DataForm = defineAsyncComponent(() => import('./form.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) -const authImg = defineAsyncComponent(() => import('/@/components/tools/auth-img.vue')) +const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) // 审核状态选项(独立定义,防止其他页面修改时被波及) import type { StateOption } from '/@/components/AuditState/index.vue' diff --git a/src/views/professional/professionalteacheracademicrelation/index.vue b/src/views/professional/professionalteacheracademicrelation/index.vue index a3568b3..6c62ab5 100755 --- a/src/views/professional/professionalteacheracademicrelation/index.vue +++ b/src/views/professional/professionalteacheracademicrelation/index.vue @@ -193,7 +193,7 @@ /> - import('/@/components/TeacherNa const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue')) const DataForm = defineAsyncComponent(() => import('./form.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) -const authImg = defineAsyncComponent(() => import('/@/components/tools/auth-img.vue')) +const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) // 审核状态选项(独立定义,防止其他页面修改时被波及) import type { StateOption } from '/@/components/AuditState/index.vue' diff --git a/src/views/professional/professionalteachercertificaterelation/index.vue b/src/views/professional/professionalteachercertificaterelation/index.vue index 33d33a2..16c0c95 100755 --- a/src/views/professional/professionalteachercertificaterelation/index.vue +++ b/src/views/professional/professionalteachercertificaterelation/index.vue @@ -163,7 +163,7 @@ /> - import('/@/components/TeacherNa const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue')) const DataForm = defineAsyncComponent(() => import('./form.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) -const authImg = defineAsyncComponent(() => import('/@/components/tools/auth-img.vue')) +const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) // 审核状态选项(独立定义,防止其他页面修改时被波及) import type { StateOption } from '/@/components/AuditState/index.vue' diff --git a/src/views/professional/professionalteacherhonor/index.vue b/src/views/professional/professionalteacherhonor/index.vue index 78bdf1b..560d8e3 100755 --- a/src/views/professional/professionalteacherhonor/index.vue +++ b/src/views/professional/professionalteacherhonor/index.vue @@ -158,7 +158,7 @@ /> - import('/@/components/TeacherNa const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) const DataForm = defineAsyncComponent(() => import('./form.vue')) -const authImg = defineAsyncComponent(() => import('/@/components/tools/auth-img.vue')) +const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) // 使用 Pinia store const userInfoStore = useUserInfo() diff --git a/src/views/professional/professionaltitlerelation/index.vue b/src/views/professional/professionaltitlerelation/index.vue index 33dff20..97bde1a 100755 --- a/src/views/professional/professionaltitlerelation/index.vue +++ b/src/views/professional/professionaltitlerelation/index.vue @@ -202,7 +202,7 @@ /> - import('/@/components/AuditState/i const MultiDialog = defineAsyncComponent(() => import('/@/views/professional/teacherbase/multiDialog.vue')) const DataForm = defineAsyncComponent(() => import('./form.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) -const authImg = defineAsyncComponent(() => import('/@/components/tools/auth-img.vue')) +const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) // 使用 Pinia store const userInfoStore = useUserInfo() diff --git a/src/views/professional/teacherbase/index.vue b/src/views/professional/teacherbase/index.vue index 217fb19..da98869 100644 --- a/src/views/professional/teacherbase/index.vue +++ b/src/views/professional/teacherbase/index.vue @@ -1449,7 +1449,7 @@ const PoliticsDialog = defineAsyncComponent(() => import('./politics-dialog.vue')); const RelationDialog = defineAsyncComponent(() => import('./relation-dialog.vue')); const StatusLockDialog = defineAsyncComponent(() => import('./status-lock-dialog.vue')); - const ActionDropdown = defineAsyncComponent(() => import('./action-dropdown.vue')); + const ActionDropdown = defineAsyncComponent(() => import('/@/components/tools/action-dropdown.vue')); const TableColumnControl = defineAsyncComponent(() => import('/@/components/TableColumnControl/index.vue')); const TableColumn = defineAsyncComponent(() => import('/@/components/TableColumn/index.vue')); const TableColumnProvider = defineAsyncComponent(() => import('/@/components/TableColumn/Provider.vue')); diff --git a/src/views/professional/teacherbase/multiDialog.vue b/src/views/professional/teacherbase/multiDialog.vue index a702de1..b91b566 100644 --- a/src/views/professional/teacherbase/multiDialog.vue +++ b/src/views/professional/teacherbase/multiDialog.vue @@ -367,7 +367,7 @@ {{waitShenheForm.form.deptName}} - + @@ -461,9 +460,8 @@ v-model="waitShenheForm.form.changeTime" type="date" placeholder="选择日期" - format="yyyy-MM-dd" - value-format="yyyy-MM-dd HH:mm:ss" - style="width: 100%" + format="YYYY-MM-DD" + value-format="YYYY-MM-DD HH:mm:ss" /> @@ -490,7 +488,9 @@ import { getTeacherCertificateList } from '/@/api/professional/rsbase/professionalteachercertificateconf' import { getAllTypeList } from '/@/api/professional/rsbase/professionalacademiceducationtypeconfig' import { getQualificationList } from '/@/api/professional/rsbase/academicqualificationsconfig' - import { getDegreeList } from '/@/api/professional/rsbase/professionalacademicdegreeconfig' +import { getDegreeList } from '/@/api/professional/rsbase/professionalacademicdegreeconfig' +import { addObj as addStationChangeObj } from '/@/api/professional/professionaluser/professionalteacherstationchange' +import { addObj as addPartyChangeObj } from '/@/api/professional/professionaluser/professionalpartychange' import global from '/@/components/tools/commondict.vue' import { Session } from '/@/utils/storage' @@ -556,7 +556,8 @@ } const stationChangeRules = { - changeDate: [{ required: true, message: '请选择日期', trigger: 'change' }], + newDeptCode: [{ required: true, message: '请选择要调入的二级部门', trigger: 'change' }], + changeDate: [{ required: true, message: '请选择调令日期', trigger: 'change' }], pos: [{ required: true, message: '请选择岗位类型', trigger: 'change' }] } @@ -870,7 +871,17 @@ try { await messageBox.confirm('确认提交?') - const res = await updateOtherInfo(waitShenheForm.form) + let res + if (val === 5) { + // 人员调动:使用人员调动接口 + res = await addStationChangeObj(waitShenheForm.form) + } else if (val === 6) { + // 党员调动:使用党员调动接口 + res = await addPartyChangeObj(waitShenheForm.form) + } else { + // 其他类型:走通用“其他信息”更新接口 + res = await updateOtherInfo(waitShenheForm.form) + } if (res.data === '-1') { message.warning("当前不允许提交") } else {