From ba8fbd5b44a152e29ad958984d04869cfeb33c33 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Fri, 31 Jul 2026 14:08:01 +0800 Subject: [PATCH] =?UTF-8?q?yxk-20260731=20=E6=94=B9=E5=96=84=E6=8F=90?= =?UTF-8?q?=E6=A1=88=20=E6=96=B0=E5=A2=9E=E6=8F=90=E6=A1=88=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=8F=90=E6=A1=88=E9=83=A8=E9=97=A8=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E5=BD=93=E5=89=8D=E7=99=BB=E5=BD=95=E9=83=A8?= =?UTF-8?q?=E9=97=A8=EF=BC=8C=E7=94=A8=E6=88=B7=E5=8F=AF=E6=94=B9=E9=80=89?= =?UTF-8?q?=E6=9C=AC=E4=BA=BA=E6=89=80=E5=B1=9E=E7=9A=84=E6=9C=89=E6=95=88?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E9=83=A8=E9=97=A8=E3=80=82=E5=80=99=E9=80=89?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E4=B8=A5=E6=A0=BC=E9=99=90=E5=AE=9A=E4=B8=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=85=B3=E8=81=94=E9=83=A8=E9=97=A8=E4=B8=AD?= =?UTF-8?q?=20org=5Ftype=3D'2'=20=E4=B8=94=20org=5Fcategory=3D'2'=20?= =?UTF-8?q?=E7=9A=84=E8=AE=B0=E5=BD=95=EF=BC=8C=E6=8E=92=E9=99=A4=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E3=80=81=E7=A7=91=E5=AE=A4=E5=8F=8A=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E8=8A=82=E7=82=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImprovementProposal.api.ts | 4 + .../components/ImprovementProposalForm.vue | 105 ++++++++---------- 2 files changed, 51 insertions(+), 58 deletions(-) diff --git a/src/views/gh/improvementProposal/ImprovementProposal.api.ts b/src/views/gh/improvementProposal/ImprovementProposal.api.ts index 98ba8b5..dcd2a0b 100644 --- a/src/views/gh/improvementProposal/ImprovementProposal.api.ts +++ b/src/views/gh/improvementProposal/ImprovementProposal.api.ts @@ -12,6 +12,7 @@ enum Api { importExcel = '/improvementproposal/improvementProposal/importExcel', exportXls = '/improvementproposal/improvementProposal/exportXls', queryDataById = '/improvementproposal/improvementProposal/queryById', + myProposalDepartments = '/improvementproposal/improvementProposal/myProposalDepartments', improvementDeptScoreList = '/improvementproposal/improvementProposal/queryImprovementDeptScoreByMainId', improvementInstituteVoteList = '/improvementproposal/improvementProposal/queryImprovementInstituteVoteByMainId', getLatestProposalSequence = '/improvementproposal/improvementProposal/getLatestProposalSequence', @@ -97,6 +98,9 @@ export const saveOrUpdate = (params, isUpdate) => { */ export const queryDataById = (id) => defHttp.get({url: Api.queryDataById, params:{ id }}); +/** 查询当前登录用户可作为改善提案归属的业务部门。 */ +export const queryMyProposalDepartments = () => defHttp.get({ url: Api.myProposalDepartments }, { successMessageMode: 'none' }); + /** * 查询当前年份最新提案序号 * @param year 年份 diff --git a/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue b/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue index 9de5c3b..bc50bf8 100644 --- a/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue +++ b/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue @@ -25,8 +25,19 @@ - - + + + + {{ department.departName }} + + + @@ -126,7 +137,7 @@ import { defineComponent, ref, reactive, computed, toRaw, onMounted, nextTick } from 'vue'; import { defHttp } from '/@/utils/http/axios'; import { useValidateAntFormAndTable } from '/@/hooks/system/useJvxeMethods'; - import { queryImprovementDeptScoreListByMainId, queryImprovementInstituteVoteListByMainId, queryDataById, saveOrUpdate } from '../ImprovementProposal.api'; + import { queryImprovementDeptScoreListByMainId, queryImprovementInstituteVoteListByMainId, queryDataById, queryMyProposalDepartments, saveOrUpdate } from '../ImprovementProposal.api'; import { JVxeTable } from '/@/components/jeecg/JVxeTable'; import {improvementDeptScoreColumns, improvementInstituteVoteColumns} from '../ImprovementProposal.data'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; @@ -174,6 +185,7 @@ }); const activeKey = ref('improvementDeptScore'); const userStore = useUserStore(); + const proposalDeptOptions = ref[]>([]); const formData = reactive>({ id: '', @@ -198,6 +210,7 @@ //表单验证 const validatorRules = reactive({ proposalName: [{ required: true, message: '请输入提案名称!'},], + proposalDeptId: [{ required: true, message: '请选择提案部门!'},], applicantName: [{ required: true, message: '请输入申请人姓名!'},], proposalCategory: [{ required: true, message: '请选择提案类别!'},], problemDesc: [{ required: true, message: '请输入问题描述!'},], @@ -239,6 +252,7 @@ // 子表由流程节点维护,普通新增、编辑和详情弹窗均不展示,避免误改评分或投票数据。 const showSubTables = computed(() => props.formBpm === true && Boolean(formData.id || props.formData?.dataId)); + const isCreateMode = computed(() => !formData.id && !props.formBpm); function getCurrentDate() { const now = new Date(); @@ -248,64 +262,36 @@ return `${year}-${month}-${day}`; } - function getCurrentLoginDepart() { - const userInfo = (userStore.getUserInfo || {}) as Record; - const loginInfo = (userStore.getLoginInfo || {}) as Record; - let departs: any[] = []; - if (Array.isArray(loginInfo.departs)) { - departs = loginInfo.departs; - } else if (Array.isArray(userInfo.departs)) { - departs = userInfo.departs; - } else if (loginInfo.userInfo && Array.isArray(loginInfo.userInfo.departs)) { - departs = loginInfo.userInfo.departs; - } - if (userInfo.orgCode) { - const found = departs.find((item) => item && item.orgCode === userInfo.orgCode); - if (found) return found; - } - if (departs.length === 1) { - return departs[0]; - } - if (departs.length > 0) { - return departs[0]; - } - return undefined; + + function handleProposalDeptChange(departmentId: string) { + const department = proposalDeptOptions.value.find((item) => item.id === departmentId); + formData.proposalDeptName = department?.departName || ''; + formData.proposalDeptCode = department?.orgCode || ''; } - async function getCurrentDepartInfo() { - const userInfo = (userStore.getUserInfo || {}) as Record; - const loginDepart = getCurrentLoginDepart(); - if (loginDepart) { - return { - id: loginDepart.id || '', - departName: loginDepart.departName || loginDepart.name || '', - orgCode: loginDepart.orgCode || '', - }; + async function loadProposalDepartments() { + proposalDeptOptions.value = []; + try { + const departments = await queryMyProposalDepartments(); + proposalDeptOptions.value = Array.isArray(departments) ? departments : []; + } catch (error) { + formData.proposalDeptId = ''; + formData.proposalDeptName = ''; + formData.proposalDeptCode = ''; + createMessage.error('可选提案部门加载失败,请刷新后重试'); + return; } - if (userInfo.orgCode) { - try { - const depart = await defHttp.get({ url: '/sys/sysDepart/getDepartName', params: { orgCode: userInfo.orgCode } }, { successMessageMode: 'none' }); - if (depart && (depart.id || depart.departName)) { - return { - id: depart.id || '', - departName: depart.departName || depart.depart_name || '', - orgCode: userInfo.orgCode, - }; - } - } catch (e) { - // ignore - } + const currentOrgCode = String(userStore.getUserInfo?.orgCode || ''); + const defaultDepartment = proposalDeptOptions.value.find((item) => item.orgCode === currentOrgCode) || proposalDeptOptions.value[0]; + if (!defaultDepartment) { + formData.proposalDeptId = ''; + formData.proposalDeptName = ''; + formData.proposalDeptCode = ''; + createMessage.warning('当前用户未配置可用提案部门'); + return; } - const deptId = userInfo.departIds || userInfo.deptId || userInfo.deptid || ''; - const deptName = userInfo.departIds_dictText || userInfo.orgCodeTxt || userInfo.deptName || ''; - return { id: deptId, departName: deptName, orgCode: userInfo.orgCode || '' }; - } - - async function applyCurrentUserDeptInfo() { - const departInfo = await getCurrentDepartInfo(); - formData.proposalDeptId = departInfo.id; - formData.proposalDeptName = departInfo.departName; - formData.proposalDeptCode = departInfo.orgCode; + formData.proposalDeptId = defaultDepartment.id; + handleProposalDeptChange(defaultDepartment.id); } onMounted(()=>{ @@ -340,7 +326,7 @@ improvementDeptScoreTable.dataSource = []; improvementInstituteVoteTable.dataSource = []; formData.proposalDate = getCurrentDate(); - await applyCurrentUserDeptInfo(); + await loadProposalDepartments(); } async function edit(row) { @@ -450,6 +436,9 @@ halfWrapperCol, disabled, showSubTables, + isCreateMode, + proposalDeptOptions, + handleProposalDeptChange, showFlowSubmitButton, getFormData, submitForm,