wsq-前端-20260727-新增功能-改善提案页面新增弹窗调整

This commit is contained in:
王淑勤
2026-07-27 15:21:27 +08:00
parent 31d897e2a5
commit 86dcdc9a36
4 changed files with 198 additions and 80 deletions
@@ -195,9 +195,11 @@ async function handleUpload() {
}); });
} else { } else {
failCount++; failCount++;
console.error('[SUploadFile] 上传响应未通过校验:', result);
} }
} else { } else {
failCount++; failCount++;
console.error('[SUploadFile] 上传请求失败:', r.reason);
} }
}); });
@@ -206,12 +208,16 @@ async function handleUpload() {
emit('upload-success', { success: true, results: successResults }); emit('upload-success', { success: true, results: successResults });
handleCancel(); handleCancel();
} else { } else {
createMessage.error('所有文件上传失败'); const firstResult = results.find(r => r.status === 'fulfilled')?.value?.response?.data;
const firstReason = results.find(r => r.status === 'rejected')?.reason;
const serverMsg = firstResult?.message ? `${firstResult.message}` : '';
const debugMsg = firstResult ? `${JSON.stringify(firstResult).slice(0, 200)}` : (firstReason ? `${firstReason?.message || firstReason}` : '');
createMessage.error('所有文件上传失败' + serverMsg + debugMsg);
emit('upload-error', new Error('所有文件上传失败')); emit('upload-error', new Error('所有文件上传失败'));
} }
} catch (error) { } catch (error) {
console.error('上传失败:', error); console.error('上传失败:', error);
createMessage.error('文件上传失败'); createMessage.error('文件上传失败: ' + (error?.message || error));
emit('upload-error', error); emit('upload-error', error);
} finally { } finally {
uploading.value = false; uploading.value = false;
@@ -14,6 +14,7 @@ enum Api {
queryDataById = '/improvementproposal/improvementProposal/queryById', queryDataById = '/improvementproposal/improvementProposal/queryById',
improvementDeptScoreList = '/improvementproposal/improvementProposal/queryImprovementDeptScoreByMainId', improvementDeptScoreList = '/improvementproposal/improvementProposal/queryImprovementDeptScoreByMainId',
improvementInstituteVoteList = '/improvementproposal/improvementProposal/queryImprovementInstituteVoteByMainId', improvementInstituteVoteList = '/improvementproposal/improvementProposal/queryImprovementInstituteVoteByMainId',
getLatestProposalSequence = '/improvementproposal/improvementProposal/getLatestProposalSequence',
startProcess = '/improvementproposal/improvementProposal/startProcess', startProcess = '/improvementproposal/improvementProposal/startProcess',
} }
/** /**
@@ -86,5 +87,11 @@ export const saveOrUpdate = (params, isUpdate) => {
*/ */
export const queryDataById = (id) => defHttp.get({url: Api.queryDataById, params:{ id }}); export const queryDataById = (id) => defHttp.get({url: Api.queryDataById, params:{ id }});
/**
* 查询当前年份最新提案序号
* @param year 年份
*/
export const getLatestProposalSequence = (year) => defHttp.get({url: Api.getLatestProposalSequence, params:{ year }}, { successMessageMode: 'none' });
/** 发起改善提案审批流程。 */ /** 发起改善提案审批流程。 */
export const startProposalProcess = (id: string) => defHttp.post({ url: Api.startProcess, params: { id } }); export const startProposalProcess = (id: string) => defHttp.post({ url: Api.startProcess, params: { id } });
@@ -25,21 +25,21 @@ export const columns: BasicColumn[] = [
return text; return text;
}, },
}, },
{ // {
title: '提案部门ID', // title: '提案部门ID',
align:"center", // align:"center",
dataIndex: 'proposalDeptId' // dataIndex: 'proposalDeptId'
}, // },
{ {
title: '提案部门名称', title: '提案部门名称',
align:"center", align:"center",
dataIndex: 'proposalDeptName' dataIndex: 'proposalDeptName'
}, },
{ // {
title: '申请人ID', // title: '申请人ID',
align:"center", // align:"center",
dataIndex: 'applicantId' // dataIndex: 'applicantId'
}, // },
{ {
title: '申请人姓名', title: '申请人姓名',
align:"center", align:"center",
@@ -53,7 +53,7 @@ export const columns: BasicColumn[] = [
{ {
title: '提案类别', title: '提案类别',
align:"center", align:"center",
dataIndex: 'proposalCategory' dataIndex: 'proposalCategory_dictText'
}, },
{ {
title: '问题描述', title: '问题描述',
@@ -65,15 +65,15 @@ export const columns: BasicColumn[] = [
align:"center", align:"center",
dataIndex: 'improvementMethod' dataIndex: 'improvementMethod'
}, },
{ // {
title: '最终奖项', // title: '最终奖项',
align:"center", // align:"center",
dataIndex: 'finalAward' // dataIndex: 'finalAward'
}, // },
{ {
title: '业务展示状态', title: '业务展示状态',
align:"center", align:"center",
dataIndex: 'bpmStatus' dataIndex: 'bpmStatus_dictText'
}, },
]; ];
@@ -272,9 +272,9 @@ export const superQuerySchema = {
proposalNo: {title: '提案编号',order: 0,view: 'text', type: 'string',}, proposalNo: {title: '提案编号',order: 0,view: 'text', type: 'string',},
proposalName: {title: '提案名称',order: 1,view: 'text', type: 'string',}, proposalName: {title: '提案名称',order: 1,view: 'text', type: 'string',},
proposalDate: {title: '提出日期',order: 2,view: 'date', type: 'string',}, proposalDate: {title: '提出日期',order: 2,view: 'date', type: 'string',},
proposalDeptId: {title: '提案部门ID',order: 3,view: 'text', type: 'string',}, // proposalDeptId: {title: '提案部门ID',order: 3,view: 'text', type: 'string',},
proposalDeptName: {title: '提案部门名称',order: 4,view: 'text', type: 'string',}, proposalDeptName: {title: '提案部门名称',order: 4,view: 'text', type: 'string',},
applicantId: {title: '申请人ID',order: 5,view: 'text', type: 'string',}, // applicantId: {title: '申请人ID',order: 5,view: 'text', type: 'string',},
applicantName: {title: '申请人姓名',order: 6,view: 'text', type: 'string',}, applicantName: {title: '申请人姓名',order: 6,view: 'text', type: 'string',},
teamName: {title: '团队名称',order: 7,view: 'text', type: 'string',}, teamName: {title: '团队名称',order: 7,view: 'text', type: 'string',},
proposalCategory: {title: '提案类别',order: 8,view: 'text', type: 'string',}, proposalCategory: {title: '提案类别',order: 8,view: 'text', type: 'string',},
@@ -5,8 +5,13 @@
<a-form v-bind="formItemLayout" name="ImprovementProposalForm" ref="formRef"> <a-form v-bind="formItemLayout" name="ImprovementProposalForm" ref="formRef">
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="提案编号" v-bind="validateInfos.proposalNo" id="ImprovementProposalForm-proposalNo" name="proposalNo"> <a-form-item label="提案编号" :required="false" id="ImprovementProposalForm-proposalNo" name="proposalNo">
<a-input v-model:value="formData.proposalNo" placeholder="请输入提案编号" allow-clear ></a-input> <a-input v-model:value="formData.proposalNo" :disabled="true" allow-clear></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="提出日期" id="ImprovementProposalForm-proposalDate" name="proposalDate">
<a-input v-model:value="formData.proposalDate" :disabled="true" allow-clear></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@@ -15,27 +20,17 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="提出日期" v-bind="validateInfos.proposalDate" id="ImprovementProposalForm-proposalDate" name="proposalDate"> <a-form-item label="提案类别" v-bind="validateInfos.proposalCategory" id="ImprovementProposalForm-proposalCategory" name="proposalCategory">
<a-date-picker placeholder="请选择提出日期" v-model:value="formData.proposalDate" value-format="YYYY-MM-DD" style="width: 100%" allow-clear /> <j-dict-select-tag v-model:value="formData.proposalCategory" dictCode="proposal_category" placeholder="请选择提案类别" allow-clear />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="提案部门ID" v-bind="validateInfos.proposalDeptId" id="ImprovementProposalForm-proposalDeptId" name="proposalDeptId"> <a-form-item label="提案部门" :required="false" id="ImprovementProposalForm-proposalDeptId" name="proposalDeptId">
<a-input v-model:value="formData.proposalDeptId" placeholder="请输入提案部门ID" allow-clear ></a-input> <a-input v-model:value="formData.proposalDeptName" :disabled="true" allow-clear></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="提案部门名称" v-bind="validateInfos.proposalDeptName" id="ImprovementProposalForm-proposalDeptName" name="proposalDeptName"> <a-form-item label="提案" v-bind="validateInfos.applicantName" id="ImprovementProposalForm-applicantName" name="applicantName">
<a-input v-model:value="formData.proposalDeptName" placeholder="请输入提案部门名称" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="申请人ID" v-bind="validateInfos.applicantId" id="ImprovementProposalForm-applicantId" name="applicantId">
<a-input v-model:value="formData.applicantId" placeholder="请输入申请人ID" allow-clear ></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="申请人姓名" v-bind="validateInfos.applicantName" id="ImprovementProposalForm-applicantName" name="applicantName">
<a-input v-model:value="formData.applicantName" placeholder="请输入申请人姓名" allow-clear ></a-input> <a-input v-model:value="formData.applicantName" placeholder="请输入申请人姓名" allow-clear ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -44,39 +39,40 @@
<a-input v-model:value="formData.teamName" placeholder="请输入团队名称" allow-clear ></a-input> <a-input v-model:value="formData.teamName" placeholder="请输入团队名称" allow-clear ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12">
<a-form-item label="提案类别" v-bind="validateInfos.proposalCategory" id="ImprovementProposalForm-proposalCategory" name="proposalCategory"> <a-col :span="24">
<a-input v-model:value="formData.proposalCategory" placeholder="请输入提案类别" allow-clear ></a-input> <a-form-item label="问题描述" v-bind="validateInfos.problemDesc" id="ImprovementProposalForm-problemDesc" name="problemDesc" :labelCol="longLabelCol" :wrapperCol="longWrapperCol">
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="问题描述" v-bind="validateInfos.problemDesc" id="ImprovementProposalForm-problemDesc" name="problemDesc">
<a-textarea v-model:value="formData.problemDesc" :rows="4" placeholder="请输入问题描述" /> <a-textarea v-model:value="formData.problemDesc" :rows="4" placeholder="请输入问题描述" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="24">
<a-form-item label="改善方法及措施" v-bind="validateInfos.improvementMethod" id="ImprovementProposalForm-improvementMethod" name="improvementMethod"> <a-form-item label="改善方法及措施" v-bind="validateInfos.improvementMethod" id="ImprovementProposalForm-improvementMethod" name="improvementMethod" :labelCol="longLabelCol" :wrapperCol="longWrapperCol">
<a-textarea v-model:value="formData.improvementMethod" :rows="4" placeholder="请输入改善方法及措施" /> <a-textarea v-model:value="formData.improvementMethod" :rows="4" placeholder="请输入改善方法及措施" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="改善前情况描述" v-bind="validateInfos.beforeDesc" id="ImprovementProposalForm-beforeDesc" name="beforeDesc"> <a-form-item label="改善前情况描述" v-bind="validateInfos.beforeDesc" id="ImprovementProposalForm-beforeDesc" name="beforeDesc" :labelCol="halfLabelCol" :wrapperCol="halfWrapperCol">
<a-textarea v-model:value="formData.beforeDesc" :rows="4" placeholder="请输入改善前情况描述" /> <a-textarea v-model:value="formData.beforeDesc" :rows="4" placeholder="请输入改善前情况描述" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="改善后情况描述" v-bind="validateInfos.afterDesc" id="ImprovementProposalForm-afterDesc" name="afterDesc"> <a-form-item label="改善前图片" :labelCol="halfLabelCol" :wrapperCol="halfWrapperCol">
<SUploadFile ref="beforeFileRef" :bussiness-id="formData.id ? `${formData.id}:before` : ''" :multiple="true" :disabled="disabled" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="改善后情况描述" v-bind="validateInfos.afterDesc" id="ImprovementProposalForm-afterDesc" name="afterDesc" :labelCol="halfLabelCol" :wrapperCol="halfWrapperCol">
<a-textarea v-model:value="formData.afterDesc" :rows="4" placeholder="请输入改善后情况描述" /> <a-textarea v-model:value="formData.afterDesc" :rows="4" placeholder="请输入改善后情况描述" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="改善效果" v-bind="validateInfos.improvementEffect" id="ImprovementProposalForm-improvementEffect" name="improvementEffect"> <a-form-item label="改善后图片" :labelCol="halfLabelCol" :wrapperCol="halfWrapperCol">
<a-textarea v-model:value="formData.improvementEffect" :rows="4" placeholder="请输入改善效果" /> <SUploadFile ref="afterFileRef" :bussiness-id="formData.id ? `${formData.id}:after` : ''" :multiple="true" :disabled="disabled" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="24">
<a-form-item label="最终奖项" v-bind="validateInfos.finalAward" id="ImprovementProposalForm-finalAward" name="finalAward"> <a-form-item label="改善效果" v-bind="validateInfos.improvementEffect" id="ImprovementProposalForm-improvementEffect" name="improvementEffect" :labelCol="longLabelCol" :wrapperCol="longWrapperCol">
<a-input v-model:value="formData.finalAward" placeholder="请输入最终奖项" disabled allow-clear ></a-input> <a-textarea v-model:value="formData.improvementEffect" :rows="4" placeholder="请输入改善效果" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -122,14 +118,17 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, ref, reactive, computed, toRaw, onMounted } from 'vue'; import { defineComponent, ref, reactive, computed, toRaw, onMounted, nextTick } from 'vue';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { useValidateAntFormAndTable } from '/@/hooks/system/useJvxeMethods'; import { useValidateAntFormAndTable } from '/@/hooks/system/useJvxeMethods';
import { queryImprovementDeptScoreListByMainId, queryImprovementInstituteVoteListByMainId, queryDataById, saveOrUpdate } from '../ImprovementProposal.api'; import { queryImprovementDeptScoreListByMainId, queryImprovementInstituteVoteListByMainId, queryDataById, saveOrUpdate, getLatestProposalSequence } from '../ImprovementProposal.api';
import { JVxeTable } from '/@/components/jeecg/JVxeTable'; import { JVxeTable } from '/@/components/jeecg/JVxeTable';
import {improvementDeptScoreColumns, improvementInstituteVoteColumns} from '../ImprovementProposal.data'; import {improvementDeptScoreColumns, improvementInstituteVoteColumns} from '../ImprovementProposal.data';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
import { useUserStore } from '/@/store/modules/user';
const useForm = Form.useForm; const useForm = Form.useForm;
export default defineComponent({ export default defineComponent({
@@ -137,6 +136,8 @@
components:{ components:{
JVxeTable, JVxeTable,
JFormContainer, JFormContainer,
JDictSelectTag,
SUploadFile,
}, },
props:{ props:{
formDisabled:{ formDisabled:{
@@ -150,6 +151,8 @@
setup(props, {emit}) { setup(props, {emit}) {
const loading = ref(false); const loading = ref(false);
const formRef = ref(); const formRef = ref();
const beforeFileRef = ref();
const afterFileRef = ref();
const improvementDeptScoreTableRef = ref(); const improvementDeptScoreTableRef = ref();
const improvementDeptScoreTable = reactive<Record<string, any>>({ const improvementDeptScoreTable = reactive<Record<string, any>>({
loading: false, loading: false,
@@ -163,6 +166,8 @@
dataSource: [] dataSource: []
}); });
const activeKey = ref('improvementDeptScore'); const activeKey = ref('improvementDeptScore');
const userStore = useUserStore();
const formData = reactive<Record<string, any>>({ const formData = reactive<Record<string, any>>({
id: '', id: '',
proposalNo: '', proposalNo: '',
@@ -170,6 +175,7 @@
proposalDate: '', proposalDate: '',
proposalDeptId: '', proposalDeptId: '',
proposalDeptName: '', proposalDeptName: '',
proposalDeptCode: '',
applicantId: '', applicantId: '',
applicantName: '', applicantName: '',
teamName: '', teamName: '',
@@ -184,14 +190,9 @@
//表单验证 //表单验证
const validatorRules = reactive({ const validatorRules = reactive({
proposalNo: [{ required: true, message: '请输入提案编号!'},],
proposalName: [{ required: true, message: '请输入提案名称!'},], proposalName: [{ required: true, message: '请输入提案名称!'},],
proposalDate: [{ required: true, message: '请输入提出日期!'},],
proposalDeptId: [{ required: true, message: '请输入提案部门ID!'},],
proposalDeptName: [{ required: true, message: '请输入提案部门名称!'},],
applicantId: [{ required: true, message: '请输入申请人ID!'},],
applicantName: [{ required: true, message: '请输入申请人姓名!'},], applicantName: [{ required: true, message: '请输入申请人姓名!'},],
proposalCategory: [{ required: true, message: '请输入提案类别!'},], proposalCategory: [{ required: true, message: '请选择提案类别!'},],
problemDesc: [{ required: true, message: '请输入问题描述!'},], problemDesc: [{ required: true, message: '请输入问题描述!'},],
improvementMethod: [{ required: true, message: '请输入改善方法及措施!'},], improvementMethod: [{ required: true, message: '请输入改善方法及措施!'},],
}); });
@@ -201,8 +202,23 @@
labelCol: {xs: {span: 24}, sm: {span: 5}}, labelCol: {xs: {span: 24}, sm: {span: 5}},
wrapperCol: {xs: {span: 24}, sm: {span: 16}}, wrapperCol: {xs: {span: 24}, sm: {span: 16}},
}; };
const longLabelCol = {
xs: {span: 24},
sm: {span: 4},
};
const longWrapperCol = {
xs: {span: 24},
sm: {span: 20},
};
const halfLabelCol = {
xs: {span: 24},
sm: {span: 8},
};
const halfWrapperCol = {
xs: {span: 24},
sm: {span: 16},
};
// 表单禁用
const disabled = computed(()=>{ const disabled = computed(()=>{
if(props.formBpm === true){ if(props.formBpm === true){
if(props.formData.disabled === false){ if(props.formData.disabled === false){
@@ -217,27 +233,106 @@
// 普通新增没有业务 ID,不展示评分和投票子表;已有数据及流程表单正常展示。 // 普通新增没有业务 ID,不展示评分和投票子表;已有数据及流程表单正常展示。
const showSubTables = computed(() => Boolean(formData.id || props.formData?.dataId)); const showSubTables = computed(() => Boolean(formData.id || props.formData?.dataId));
function getCurrentDate() {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
function getCurrentLoginDepart() {
const userInfo = (userStore.getUserInfo || {}) as Record<string, any>;
const loginInfo = (userStore.getLoginInfo || {}) as Record<string, any>;
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;
}
async function getCurrentDepartInfo() {
const userInfo = (userStore.getUserInfo || {}) as Record<string, any>;
const loginDepart = getCurrentLoginDepart();
if (loginDepart) {
return {
id: loginDepart.id || '',
departName: loginDepart.departName || loginDepart.name || '',
orgCode: loginDepart.orgCode || '',
};
}
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 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;
}
async function getProposalSequence() {
const year = new Date().getFullYear();
const latestSequence = await getLatestProposalSequence(year);
// return Number(latestSequence) + 1;
return String(Number(latestSequence) + 1).padStart(4, '0');
}
async function generateProposalNo() {
const deptCode = formData.proposalDeptName || '';
const year = new Date().getFullYear();
const proposalSequence = await getProposalSequence();
return `${deptCode}-${year}年-${proposalSequence}`;
}
onMounted(()=>{ onMounted(()=>{
initFormData(); initFormData();
}); });
//渲染流程表单数据
const queryByIdUrl = '/improvementproposal/improvementProposal/queryById'; const queryByIdUrl = '/improvementproposal/improvementProposal/queryById';
async function initFormData(){ async function initFormData(){
if(props.formBpm === true){ if(props.formBpm === true){
let params = {id: props.formData.dataId}; let params = {id: props.formData.dataId};
const row = await defHttp.get({url: queryByIdUrl, params}); const row = await defHttp.get({url: queryByIdUrl, params});
//设置表单的值
Object.keys(row).map(k => { Object.keys(row).map(k => {
formData[k] = row[k]; formData[k] = row[k];
}); });
//子表数据
const improvementDeptScoreDataList = await queryImprovementDeptScoreListByMainId(row['id']); const improvementDeptScoreDataList = await queryImprovementDeptScoreListByMainId(row['id']);
improvementDeptScoreTable.dataSource = [...improvementDeptScoreDataList]; improvementDeptScoreTable.dataSource = [...improvementDeptScoreDataList];
const improvementInstituteVoteDataList = await queryImprovementInstituteVoteListByMainId(row['id']); const improvementInstituteVoteDataList = await queryImprovementInstituteVoteListByMainId(row['id']);
improvementInstituteVoteTable.dataSource = [...improvementInstituteVoteDataList]; improvementInstituteVoteTable.dataSource = [...improvementInstituteVoteDataList];
} }
} }
// 是否显示提交按钮
const showFlowSubmitButton = computed(()=>{ const showFlowSubmitButton = computed(()=>{
if(props.formBpm === true){ if(props.formBpm === true){
if(props.formData.disabled === false){ if(props.formData.disabled === false){
@@ -247,11 +342,13 @@
return false return false
}); });
async function add() {
function add() {
resetFields(); resetFields();
improvementDeptScoreTable.dataSource = []; improvementDeptScoreTable.dataSource = [];
improvementInstituteVoteTable.dataSource = []; improvementInstituteVoteTable.dataSource = [];
formData.proposalDate = getCurrentDate();
await applyCurrentUserDeptInfo();
formData.proposalNo = await generateProposalNo();
} }
async function edit(row) { async function edit(row) {
@@ -308,8 +405,16 @@
Object.assign(values, subData); Object.assign(values, subData);
} }
console.log('表单提交数据', values) console.log('表单提交数据', values)
await saveOrUpdate(values, isUpdate); const result = await saveOrUpdate(values, isUpdate);
//关闭弹窗 // 新增时,保存成功后绑定附件的 bussinessId
if (!isUpdate) {
const newId = typeof result === 'string' ? result : (result?.id || result);
if (newId) {
formData.id = newId;
await beforeFileRef.value?.bindBussinessId(`${newId}:before`);
await afterFileRef.value?.bindBussinessId(`${newId}:after`);
}
}
emit('success'); emit('success');
} }
@@ -321,16 +426,10 @@
} }
} }
/**
* 值改变事件触发-树控件回调
* @param key
* @param value
*/
function handleFormChange(key, value) { function handleFormChange(key, value) {
formData[key] = value; formData[key] = value;
} }
return { return {
improvementDeptScoreTableRef, improvementDeptScoreTableRef,
improvementDeptScoreTable, improvementDeptScoreTable,
@@ -344,6 +443,10 @@
setFieldsValue, setFieldsValue,
handleFormChange, handleFormChange,
formItemLayout, formItemLayout,
longLabelCol,
longWrapperCol,
halfLabelCol,
halfWrapperCol,
disabled, disabled,
showSubTables, showSubTables,
showFlowSubmitButton, showFlowSubmitButton,
@@ -352,6 +455,8 @@
add, add,
edit, edit,
formRef, formRef,
beforeFileRef,
afterFileRef,
} }
} }
}); });