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,