!37 feat(inspect): DqInspectTaskForm添加必填字段校验规则

* feat(inspect): DqInspectTaskForm添加必填字段校验规则
* refactor(form): 是否需要审批字段统一替换为j-switch组件
* feat(form): 部门经办人替换为sz-dept-user-modal组件
* feat(form): 新增部门角色用户选择组件,替换各处j-select-user
This commit is contained in:
new_new_new
2026-06-15 02:47:24 +00:00
parent f649986f4a
commit c1028224c1
8 changed files with 226 additions and 79 deletions
@@ -50,7 +50,7 @@
</a-form-item> </a-form-item>
<a-form-item label="所办领导"> <a-form-item label="所办领导">
<DeptRoleSelectUser <DeptRoleUserSelectRadioGroup
v-model:value="formData.supDeptleaderid" v-model:value="formData.supDeptleaderid"
deptId="2044677604785229826" deptId="2044677604785229826"
roleId="2044680793306591234" roleId="2044680793306591234"
@@ -98,7 +98,7 @@
import JModal from '/src/components/Modal/src/JModal/JModal.vue'; import JModal from '/src/components/Modal/src/JModal/JModal.vue';
import JDictSelectTag from '/src/components/Form/src/jeecg/components/JDictSelectTag.vue'; import JDictSelectTag from '/src/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JSwitch from '/src/components/Form/src/jeecg/components/JSwitch.vue'; import JSwitch from '/src/components/Form/src/jeecg/components/JSwitch.vue';
import DeptRoleSelectUser from '/@/views/bg/xispeak/components/DeptRoleSelectUser.vue'; import DeptRoleUserSelectRadioGroup from '/@/components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue';
import { useMessage } from '/src/hooks/web/useMessage'; import { useMessage } from '/src/hooks/web/useMessage';
interface ModalPayload { interface ModalPayload {
@@ -0,0 +1,78 @@
<template>
<a-select
:value="modelValue || undefined"
@change="onChange"
:mode="multiple ? 'multiple' : undefined"
:disabled="disabled"
:placeholder="placeholder"
allowClear
:getPopupContainer="(node) => node.parentNode"
>
<a-select-option v-for="user in userList" :key="user.username" :value="user.username">
{{ user.realname }}
</a-select-option>
</a-select>
</template>
<script lang="ts" setup>
import { ref, onMounted, watch } from 'vue';
import { defHttp } from '/@/utils/http/axios';
const props = withDefaults(
defineProps<{
deptId: string;
roleId: string;
multiple?: boolean;
disabled?: boolean;
placeholder?: string;
}>(),
{
multiple: false,
disabled: false,
placeholder: '请选择',
},
);
const modelValue = defineModel<string>('value', { default: '' });
const userList = ref<Array<{ username: string; realname: string }>>([]);
async function fetchUserList() {
if (!props.deptId) {
userList.value = [];
return;
}
try {
const params = {
departId: props.deptId,
roleId: props.roleId,
searchSecurityLevel: 5,
pageNo: 1,
pageSize: 999,
};
const res = await defHttp.get({ url: '/sys/user/queryUserRoleComponentData', params });
const records = res?.records || res?.result?.records || [];
userList.value = records;
} catch {
userList.value = [];
}
}
onMounted(fetchUserList);
watch(
() => [props.deptId, props.roleId],
() => {
modelValue.value = '';
fetchUserList();
},
);
function onChange(value: string | string[]) {
if (props.multiple) {
modelValue.value = Array.isArray(value) ? value.join(',') : '';
} else {
modelValue.value = (value as string) || '';
}
}
</script>
@@ -97,7 +97,7 @@
<a-col v-if="showSupDeptLeader" :span="12"> <a-col v-if="showSupDeptLeader" :span="12">
<a-form-item label="所办领导" v-bind="validateInfos.supDeptleaderid" id="BgPartymatterForm-supDeptleaderid" name="supDeptleaderid"> <a-form-item label="所办领导" v-bind="validateInfos.supDeptleaderid" id="BgPartymatterForm-supDeptleaderid" name="supDeptleaderid">
<!-- <j-select-user v-model:value="formData.supDeptleaderid" allow-clear />--> <!-- <j-select-user v-model:value="formData.supDeptleaderid" allow-clear />-->
<DeptRoleSelectUser <DeptRoleUserSelectRadioGroup
v-model:value="formData.supDeptleaderid" v-model:value="formData.supDeptleaderid"
deptId="2044677604785229826" deptId="2044677604785229826"
roleId="2044680793306591234" roleId="2044680793306591234"
@@ -156,7 +156,7 @@
import { saveOrUpdate } from '../BgPartymatter.api'; import { saveOrUpdate } from '../BgPartymatter.api';
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
import DeptRoleSelectUser from "@/views/bg/xispeak/components/DeptRoleSelectUser.vue"; import DeptRoleUserSelectRadioGroup from "/@/components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue";
const props = defineProps({ const props = defineProps({
formDisabled: { type: Boolean, default: false }, formDisabled: { type: Boolean, default: false },
@@ -141,7 +141,7 @@
</a-col> </a-col>
<a-col v-if="mainForm.needSdwApproval === 1" :span="12"> <a-col v-if="mainForm.needSdwApproval === 1" :span="12">
<a-form-item label="督导领导列表" name="sdwLeaderList"> <a-form-item label="督导领导列表" name="sdwLeaderList">
<DeptRoleSelectUser <DeptRoleUserSelectRadioGroup
v-model:value="mainForm.sdwLeaderList" v-model:value="mainForm.sdwLeaderList"
deptId="2044677562460508161" deptId="2044677562460508161"
roleId="2044676455280570370" roleId="2044676455280570370"
@@ -252,7 +252,7 @@
</a-col> </a-col>
<a-col v-if="showSubApproveUserSelector" :span="12"> <a-col v-if="showSubApproveUserSelector" :span="12">
<a-form-item label="部门经办人" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol"> <a-form-item label="部门经办人" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">
<j-select-user v-model:value="subApproveUser" :disabled="savingSubApproveUser" allow-clear /> <sz-dept-user-modal v-model:value="subApproveUser" :disabled="savingSubApproveUser" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -279,6 +279,7 @@
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue'; import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue';
import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue'; import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue';
import SzDeptUserModal from '/@/components/semri/deptUserComponent/SzDeptUserModal.vue';
import JTreeSelect from '/@/components/Form/src/jeecg/components/JTreeSelect.vue'; import JTreeSelect from '/@/components/Form/src/jeecg/components/JTreeSelect.vue';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import Icon from '/@/components/Icon/index'; import Icon from '/@/components/Icon/index';
@@ -293,7 +294,7 @@
import TaskHandleInnerContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue'; import TaskHandleInnerContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue';
import BgXiSpeakBPMFeedbackModal from './BgXiSpeakBPMFeedbackModal.vue'; import BgXiSpeakBPMFeedbackModal from './BgXiSpeakBPMFeedbackModal.vue';
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue'; import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
import DeptRoleSelectUser from './DeptRoleSelectUser.vue'; import DeptRoleUserSelectRadioGroup from '/@/components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue';
const { isDisabledAuth, hasPermission, initBpmFormData } = usePermission(); const { isDisabledAuth, hasPermission, initBpmFormData } = usePermission();
const userStore = useUserStore(); const userStore = useUserStore();
@@ -39,8 +39,8 @@
</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.responsiblePerson" id="BgXiSpeakForm-responsiblePerson" name="responsiblePerson"> <a-form-item label="所党委责任人" v-bind="validateInfos.responsiblePerson" id="BgXiSpeakForm-responsiblePerson" name="responsiblePerson">
<j-select-user v-model:value="formData.responsiblePerson" placeholder="请从所党委选择责任人" allow-clear /> <DeptRoleUserSelectDropDown v-model:value="formData.responsiblePerson" :deptId="PARTY_COMMITTEE_DEPT_ID" :roleId="SDW_LEADER_ROLE_ID" placeholder="请从所党委选择责任人" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@@ -60,18 +60,15 @@
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="是否需要所党委领导督办" v-bind="validateInfos.needSdwApproval" id="BgXiSpeakForm-needSdwApproval" name="needSdwApproval"> <a-form-item label="是否需要所党委领导督办" v-bind="validateInfos.needSdwApproval" id="BgXiSpeakForm-needSdwApproval" name="needSdwApproval">
<a-radio-group v-model:value="formData.needSdwApproval"> <j-switch v-model:value="formData.needSdwApproval" />
<a-radio :value="1"></a-radio>
<a-radio :value="0"></a-radio>
</a-radio-group>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col v-if="formData.needSdwApproval === 1" :span="12"> <a-col v-if="formData.needSdwApproval == '1'" :span="12">
<a-form-item label="所党委领导列表" id="BgXiSpeakForm-sdwLeaderList" name="sdwLeaderList"> <a-form-item label="所党委领导列表" id="BgXiSpeakForm-sdwLeaderList" name="sdwLeaderList">
<DeptRoleSelectUser <DeptRoleUserSelectRadioGroup
v-model:value="formData.sdwLeaderList" v-model:value="formData.sdwLeaderList"
deptId="2044677562460508161" :deptId="PARTY_COMMITTEE_DEPT_ID"
roleId="2044676455280570370" :roleId="SDW_LEADER_ROLE_ID"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -126,16 +123,20 @@
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue'; import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue';
import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue'; import DeptRoleUserSelectDropDown from '/@/components/semri/userComponent/DeptRoleUserSelectDropDown.vue';
import JTreeSelect from '/@/components/Form/src/jeecg/components/JTreeSelect.vue'; import JTreeSelect from '/@/components/Form/src/jeecg/components/JTreeSelect.vue';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import DeptRoleSelectUser from './DeptRoleSelectUser.vue'; import JSwitch from '/@/components/Form/src/jeecg/components/JSwitch.vue';
import DeptRoleUserSelectRadioGroup from '/@/components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue';
import { getValueType } from '/@/utils'; import { getValueType } from '/@/utils';
import { loadTreeData, saveOrUpdateDict } from '../BgXiSpeak.api'; import { loadTreeData, saveOrUpdateDict } from '../BgXiSpeak.api';
import { Form } from 'ant-design-vue'; import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue'; import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
import { usePermission } from '/@/hooks/web/usePermission'; import { usePermission } from '/@/hooks/web/usePermission';
const PARTY_COMMITTEE_DEPT_ID = '2044677562460508161';
const SDW_LEADER_ROLE_ID = '2044676455280570370';
const { initBpmFormData } = usePermission(); const { initBpmFormData } = usePermission();
const useForm = Form.useForm; const useForm = Form.useForm;
const formRef = ref(); const formRef = ref();
@@ -154,7 +155,7 @@
status: 'x月x日召开xxxx年第x次党委会议', status: 'x月x日召开xxxx年第x次党委会议',
secretLevel: '', secretLevel: '',
responsiblePerson: '', responsiblePerson: '',
needSdwApproval: 0, needSdwApproval: '',
sdwLeaderList: '', sdwLeaderList: '',
implPlan: '', implPlan: '',
implMeasures: '', implMeasures: '',
@@ -268,7 +269,7 @@
const tmpData = {}; const tmpData = {};
Object.keys(formData).forEach((key) => { Object.keys(formData).forEach((key) => {
if (data.hasOwnProperty(key)) { if (data.hasOwnProperty(key)) {
tmpData[key] = data[key] === null ? (key === 'needSdwApproval' ? 0 : '') : data[key]; tmpData[key] = data[key] === null ? (key === 'needSdwApproval' ? '0' : '') : data[key];
} }
}); });
@@ -301,7 +302,7 @@
} }
if (formData.needSdwApproval === undefined || formData.needSdwApproval === null) { if (formData.needSdwApproval === undefined || formData.needSdwApproval === null) {
formData.needSdwApproval = 0; formData.needSdwApproval = '0';
} }
confirmLoading.value = true; confirmLoading.value = true;
@@ -203,7 +203,7 @@
</a-col> </a-col>
<a-col v-if="showSubApproveUserSelector" :span="12"> <a-col v-if="showSubApproveUserSelector" :span="12">
<a-form-item label="部门经办人" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol"> <a-form-item label="部门经办人" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">
<j-select-user v-model:value="subApproveUser" :disabled="savingSubApproveUser" allow-clear /> <sz-dept-user-modal v-model:value="subApproveUser" :disabled="savingSubApproveUser" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -247,6 +247,7 @@
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue'; import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue';
import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue'; import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue';
import SzDeptUserModal from '/@/components/semri/deptUserComponent/SzDeptUserModal.vue';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import Icon from '/@/components/Icon/index'; import Icon from '/@/components/Icon/index';
import { saveBpmForm, setProcessVariable, specificProblemOptions } from '../DqInspectTask.api'; import { saveBpmForm, setProcessVariable, specificProblemOptions } from '../DqInspectTask.api';
@@ -32,7 +32,13 @@
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="完成时限" v-bind="validateInfos.deadline" id="DqInspectTaskForm-deadline" name="deadline"> <a-form-item label="完成时限" v-bind="validateInfos.deadline" id="DqInspectTaskForm-deadline" name="deadline">
<a-date-picker placeholder="请选择完成时限" v-model:value="formData.deadline" value-format="YYYY-MM-DD" style="width: 100%" allow-clear /> <a-date-picker
placeholder="请选择完成时限"
v-model:value="formData.deadline"
value-format="YYYY-MM-DD"
style="width: 100%"
allow-clear
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@@ -46,7 +52,12 @@
</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.supervisoryOpinion" id="DqInspectTaskForm-supervisoryOpinion" name="supervisoryOpinion"> <a-form-item
label="监督意见"
v-bind="validateInfos.supervisoryOpinion"
id="DqInspectTaskForm-supervisoryOpinion"
name="supervisoryOpinion"
>
<a-input v-model:value="formData.supervisoryOpinion" placeholder="请输入监督意见" allow-clear></a-input> <a-input v-model:value="formData.supervisoryOpinion" placeholder="请输入监督意见" allow-clear></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -60,39 +71,65 @@
<!-- 责任与监督 --> <!-- 责任与监督 -->
<a-divider orientation="left" plain>责任与监督</a-divider> <a-divider orientation="left" plain>责任与监督</a-divider>
<a-row :gutter="[16, 0]"> <a-row :gutter="[16, 0]">
<a-col :span="12">
<a-form-item label="措施责任领导" v-bind="validateInfos.measureResLeader" id="DqInspectTaskForm-measureResLeader" name="measureResLeader">
<j-select-user v-model:value="formData.measureResLeader" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="措施责任部门" v-bind="validateInfos.measureResDept" id="DqInspectTaskForm-measureResDept" name="measureResDept"> <a-form-item label="措施责任部门" v-bind="validateInfos.measureResDept" id="DqInspectTaskForm-measureResDept" name="measureResDept">
<j-select-dept v-model:value="formData.measureResDept" :multiple="true" checkStrictly allow-clear /> <j-select-dept v-model:value="formData.measureResDept" :multiple="true" checkStrictly allow-clear />
</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.chargeLeaderId" id="DqInspectTaskForm-chargeLeaderId" name="chargeLeaderId"> <a-form-item
<j-select-user v-model:value="formData.chargeLeaderId" allow-clear /> label="措施责任领导"
v-bind="validateInfos.measureResLeader"
id="DqInspectTaskForm-measureResLeader"
name="measureResLeader"
>
<DeptRoleUserSelectDropDown
v-model:value="formData.measureResLeader"
:deptId="measureResDeptId"
:roleId="MEASURE_RES_LEADER_ROLE_ID"
:disabled="measureResLeaderDisabled"
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.rectificationEvidence" id="DqInspectTaskForm-rectificationEvidence" name="rectificationEvidence"> <a-form-item label="分管所领导" v-bind="validateInfos.chargeLeaderId" id="DqInspectTaskForm-chargeLeaderId" name="chargeLeaderId">
<DeptRoleUserSelectDropDown
v-model:value="formData.chargeLeaderId"
:deptId="CHARGE_LEADER_DEPT_ID"
:roleId="CHARGE_LEADER_ROLE_ID"
placeholder="请选择分管所领导"
/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item
label="整改交付成果"
v-bind="validateInfos.rectificationEvidence"
id="DqInspectTaskForm-rectificationEvidence"
name="rectificationEvidence"
>
<a-input v-model:value="formData.rectificationEvidence" placeholder="请输入整改交付成果" allow-clear></a-input> <a-input v-model:value="formData.rectificationEvidence" placeholder="请输入整改交付成果" 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.evaluationCriterion" id="DqInspectTaskForm-evaluationCriterion" name="evaluationCriterion"> <a-form-item
label="成效评价标准"
v-bind="validateInfos.evaluationCriterion"
id="DqInspectTaskForm-evaluationCriterion"
name="evaluationCriterion"
>
<a-input v-model:value="formData.evaluationCriterion" placeholder="请输入成效评价标准" allow-clear></a-input> <a-input v-model:value="formData.evaluationCriterion" placeholder="请输入成效评价标准" 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.isNeedAppro" id="DqInspectTaskForm-isNeedAppro" name="isNeedAppro"> <a-form-item label="是否需要党群领导审批" v-bind="validateInfos.isNeedAppro" id="DqInspectTaskForm-isNeedAppro" name="isNeedAppro">
<j-dict-select-tag type='radio' v-model:value="formData.isNeedAppro" dictCode="yn" placeholder="请选择是否需要党群领导审批" allow-clear /> <j-switch v-model:value="formData.isNeedAppro" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col v-if="formData.isNeedAppro === '1'" :span="12"> <a-col v-if="formData.isNeedAppro === '1'" :span="12">
<a-form-item label="党群领导" v-bind="validateInfos.supDeptleaderid" id="DqInspectTaskForm-supDeptleaderid" name="supDeptleaderid"> <a-form-item label="党群领导" v-bind="validateInfos.supDeptleaderid" id="DqInspectTaskForm-supDeptleaderid" name="supDeptleaderid">
<j-select-user v-model:value="formData.supDeptleaderid" allow-clear /> <DeptRoleUserSelectRadioGroup v-model:value="formData.supDeptleaderid" :deptId="PARTY_MASSES_DEPT_ID" :roleId="MEASURE_RES_LEADER_ROLE_ID" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -117,7 +154,7 @@
<!-- :toolbar="true"/>--> <!-- :toolbar="true"/>-->
<!-- </a-tab-pane>--> <!-- </a-tab-pane>-->
<!-- </a-tabs>--> <!-- </a-tabs>-->
<div v-if="showFlowSubmitButton" :span="24" style="width: 100%;text-align: center;margin-top: 10px"> <div v-if="showFlowSubmitButton" :span="24" style="width: 100%; text-align: center; margin-top: 10px">
<a-button preIcon="ant-design:check-outlined" style="width: 126px" type="primary" @click="submitForm"> </a-button> <a-button preIcon="ant-design:check-outlined" style="width: 126px" type="primary" @click="submitForm"> </a-button>
</div> </div>
</a-spin> </a-spin>
@@ -131,31 +168,40 @@
import { JVxeTable } from '/@/components/jeecg/JVxeTable'; import { JVxeTable } from '/@/components/jeecg/JVxeTable';
import { dqInspectProgressColumns } from '../DqInspectTask.data'; import { dqInspectProgressColumns } from '../DqInspectTask.data';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JSwitch from '/@/components/Form/src/jeecg/components/JSwitch.vue';
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue'; import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue';
import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue'; import DeptRoleUserSelectRadioGroup from '/@/components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue';
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 DeptRoleUserSelectDropDown from '@/components/semri/userComponent/DeptRoleUserSelectDropDown.vue';
const useForm = Form.useForm; const useForm = Form.useForm;
export default defineComponent({ export default defineComponent({
name: "DqInspectTaskForm", name: 'DqInspectTaskForm',
components:{ components: {
DeptRoleUserSelectDropDown,
JDictSelectTag, JDictSelectTag,
JSwitch,
JSelectDept, JSelectDept,
JSelectUser, DeptRoleUserSelectRadioGroup,
JVxeTable, JVxeTable,
JFormContainer, JFormContainer,
}, },
props:{ props: {
formDisabled:{ formDisabled: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
formData: { type: Object, default: ()=>{} }, formData: { type: Object, default: () => {} },
formBpm: { type: Boolean, default: true } formBpm: { type: Boolean, default: true },
}, },
emits:['success'], emits: ['success'],
setup(props, {emit}) { setup(props, { emit }) {
const CHARGE_LEADER_DEPT_ID = '2044677562460508161';
const CHARGE_LEADER_ROLE_ID = '2062794430936240130';
const PARTY_MASSES_DEPT_ID = '2044677628281720834';
const MEASURE_RES_LEADER_ROLE_ID = '2044680793306591234';
const loading = ref(false); const loading = ref(false);
const formRef = ref(); const formRef = ref();
const dqInspectProgressTableRef = ref(); const dqInspectProgressTableRef = ref();
@@ -164,7 +210,7 @@
const dqInspectProgressTable = reactive<Record<string, any>>({ const dqInspectProgressTable = reactive<Record<string, any>>({
loading: false, loading: false,
columns: dqInspectProgressColumns, columns: dqInspectProgressColumns,
dataSource: [] dataSource: [],
}); });
const activeKey = ref('dqInspectProgress'); const activeKey = ref('dqInspectProgress');
const formData = reactive<Record<string, any>>({ const formData = reactive<Record<string, any>>({
@@ -198,34 +244,41 @@
//表单验证 //表单验证
const validatorRules = reactive({ const validatorRules = reactive({
problemId: [{ required: true, message: '请选择具体问题' }], problemId: [{ required: true, message: '请选择具体问题' }],
secretLevel: [{ required: true, message: '请选择密级' }],
improveMeasure: [{ required: true, message: '请输入整改措施' }],
deadline: [{ required: true, message: '请选择完成时限' }],
measureResDept: [{ required: true, message: '请选择措施责任部门' }],
measureResLeader: [{ required: true, message: '请选择措施责任领导' }],
chargeLeaderId: [{ required: true, message: '请选择分管所领导' }],
isNeedAppro: [{ required: true, message: '请选择是否需要党群领导审批' }],
}); });
const {resetFields, validate, validateInfos} = useForm(formData, validatorRules, {immediate: false}); const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
const dbData = {}; const dbData = {};
// 表单禁用 // 表单禁用
const disabled = computed(()=>{ const disabled = computed(() => {
if(props.formBpm === true){ if (props.formBpm === true) {
if(props.formData.disabled === false){ if (props.formData.disabled === false) {
return false; return false;
}else{ } else {
return true; return true;
} }
} }
return props.formDisabled; return props.formDisabled;
}); });
onMounted(()=>{ onMounted(() => {
loadSpecificProblemOptions(); loadSpecificProblemOptions();
initFormData(); initFormData();
}); });
//渲染流程表单数据 //渲染流程表单数据
const queryByIdUrl = '/dqinspecttask/dqInspectTask/queryById'; const queryByIdUrl = '/dqinspecttask/dqInspectTask/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];
}); });
//子表数据 //子表数据
@@ -234,15 +287,23 @@
} }
} }
// 是否显示提交按钮 // 是否显示提交按钮
const showFlowSubmitButton = computed(()=>{ const showFlowSubmitButton = computed(() => {
if(props.formBpm === true){ if (props.formBpm === true) {
if(props.formData.disabled === false){ if (props.formData.disabled === false) {
return true return true;
} }
} }
return false return false;
}); });
const measureResDeptId = computed(() => {
const val = formData.measureResDept;
if (!val) return '';
return String(val).split(',')[0];
});
const measureResLeaderDisabled = computed(() => !measureResDeptId.value);
/** /**
* 整改任务只能选择具体问题,分类和面上问题由后端置灰用于分组展示。 * 整改任务只能选择具体问题,分类和面上问题由后端置灰用于分组展示。
*/ */
@@ -276,16 +337,16 @@
resetFields(); resetFields();
const tmpData = {}; const tmpData = {};
Object.keys(formData).forEach((key) => { Object.keys(formData).forEach((key) => {
if(row.hasOwnProperty(key)){ if (row.hasOwnProperty(key)) {
tmpData[key] = row[key] tmpData[key] = row[key];
} }
}) });
//赋值 //赋值
Object.assign(formData,tmpData); Object.assign(formData, tmpData);
} }
const {getSubFormAndTableData, transformData} = useValidateAntFormAndTable(activeKey, { const { getSubFormAndTableData, transformData } = useValidateAntFormAndTable(activeKey, {
'dqInspectProgress': dqInspectProgressTableRef, dqInspectProgress: dqInspectProgressTableRef,
}); });
async function getFormData() { async function getFormData() {
@@ -301,7 +362,7 @@
} }
return Promise.reject(errorFields); return Promise.reject(errorFields);
} }
return transformData(toRaw(formData)) return transformData(toRaw(formData));
} }
async function submitForm() { async function submitForm() {
@@ -320,16 +381,16 @@
} catch {} } catch {}
} }
const values = Object.assign({}, dbData, mainData, subData); const values = Object.assign({}, dbData, mainData, subData);
console.log('表单提交数据', values) console.log('表单提交数据', values);
const isUpdate = values.id ? true : false const isUpdate = values.id ? true : false;
await saveOrUpdate(values, isUpdate); await saveOrUpdate(values, isUpdate);
//关闭弹窗 //关闭弹窗
emit('success'); emit('success');
} }
function setFieldsValue(values) { function setFieldsValue(values) {
if(values){ if (values) {
Object.keys(values).map(k=>{ Object.keys(values).map((k) => {
formData[k] = values[k]; formData[k] = values[k];
}); });
} }
@@ -344,7 +405,6 @@
formData[key] = value; formData[key] = value;
} }
return { return {
dqInspectProgressTableRef, dqInspectProgressTableRef,
dqInspectProgressTable, dqInspectProgressTable,
@@ -361,13 +421,19 @@
wrapperCol, wrapperCol,
disabled, disabled,
showFlowSubmitButton, showFlowSubmitButton,
CHARGE_LEADER_DEPT_ID,
CHARGE_LEADER_ROLE_ID,
PARTY_MASSES_DEPT_ID,
MEASURE_RES_LEADER_ROLE_ID,
measureResDeptId,
measureResLeaderDisabled,
getFormData, getFormData,
submitForm, submitForm,
add, add,
edit, edit,
formRef, formRef,
} };
} },
}); });
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>