!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
@@ -97,7 +97,7 @@
<a-col v-if="showSupDeptLeader" :span="12">
<a-form-item label="所办领导" v-bind="validateInfos.supDeptleaderid" id="BgPartymatterForm-supDeptleaderid" name="supDeptleaderid">
<!-- <j-select-user v-model:value="formData.supDeptleaderid" allow-clear />-->
<DeptRoleSelectUser
<DeptRoleUserSelectRadioGroup
v-model:value="formData.supDeptleaderid"
deptId="2044677604785229826"
roleId="2044680793306591234"
@@ -156,7 +156,7 @@
import { saveOrUpdate } from '../BgPartymatter.api';
import { Form } from 'ant-design-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({
formDisabled: { type: Boolean, default: false },
@@ -141,7 +141,7 @@
</a-col>
<a-col v-if="mainForm.needSdwApproval === 1" :span="12">
<a-form-item label="督导领导列表" name="sdwLeaderList">
<DeptRoleSelectUser
<DeptRoleUserSelectRadioGroup
v-model:value="mainForm.sdwLeaderList"
deptId="2044677562460508161"
roleId="2044676455280570370"
@@ -252,7 +252,7 @@
</a-col>
<a-col v-if="showSubApproveUserSelector" :span="12">
<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-col>
</a-row>
@@ -279,6 +279,7 @@
import { useUserStore } from '/@/store/modules/user';
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.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 JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import Icon from '/@/components/Icon/index';
@@ -293,7 +294,7 @@
import TaskHandleInnerContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue';
import BgXiSpeakBPMFeedbackModal from './BgXiSpeakBPMFeedbackModal.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 userStore = useUserStore();
@@ -39,8 +39,8 @@
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="责任人" v-bind="validateInfos.responsiblePerson" id="BgXiSpeakForm-responsiblePerson" name="responsiblePerson">
<j-select-user v-model:value="formData.responsiblePerson" placeholder="请从所党委选择责任人" allow-clear />
<a-form-item label="所党委责任人" v-bind="validateInfos.responsiblePerson" id="BgXiSpeakForm-responsiblePerson" name="responsiblePerson">
<DeptRoleUserSelectDropDown v-model:value="formData.responsiblePerson" :deptId="PARTY_COMMITTEE_DEPT_ID" :roleId="SDW_LEADER_ROLE_ID" placeholder="请从所党委选择责任人" />
</a-form-item>
</a-col>
<a-col :span="12">
@@ -60,18 +60,15 @@
</a-col>
<a-col :span="12">
<a-form-item label="是否需要所党委领导督办" v-bind="validateInfos.needSdwApproval" id="BgXiSpeakForm-needSdwApproval" name="needSdwApproval">
<a-radio-group v-model:value="formData.needSdwApproval">
<a-radio :value="1"></a-radio>
<a-radio :value="0"></a-radio>
</a-radio-group>
<j-switch v-model:value="formData.needSdwApproval" />
</a-form-item>
</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">
<DeptRoleSelectUser
<DeptRoleUserSelectRadioGroup
v-model:value="formData.sdwLeaderList"
deptId="2044677562460508161"
roleId="2044676455280570370"
:deptId="PARTY_COMMITTEE_DEPT_ID"
:roleId="SDW_LEADER_ROLE_ID"
/>
</a-form-item>
</a-col>
@@ -126,16 +123,20 @@
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
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 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 { loadTreeData, saveOrUpdateDict } from '../BgXiSpeak.api';
import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
import { usePermission } from '/@/hooks/web/usePermission';
const PARTY_COMMITTEE_DEPT_ID = '2044677562460508161';
const SDW_LEADER_ROLE_ID = '2044676455280570370';
const { initBpmFormData } = usePermission();
const useForm = Form.useForm;
const formRef = ref();
@@ -154,7 +155,7 @@
status: 'x月x日召开xxxx年第x次党委会议',
secretLevel: '',
responsiblePerson: '',
needSdwApproval: 0,
needSdwApproval: '',
sdwLeaderList: '',
implPlan: '',
implMeasures: '',
@@ -268,7 +269,7 @@
const tmpData = {};
Object.keys(formData).forEach((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) {
formData.needSdwApproval = 0;
formData.needSdwApproval = '0';
}
confirmLoading.value = true;
@@ -1,39 +0,0 @@
<template>
<a-radio-group v-model:value="modelValue" :disabled="disabled">
<a-radio v-for="user in userList" :key="user.username" :value="user.username">
{{ user.realname }}
</a-radio>
</a-radio-group>
</template>
<script lang="ts" setup>
import { ref, onMounted } from 'vue';
import { defHttp } from '/@/utils/http/axios';
const props = defineProps<{
deptId: string;
roleId: string;
disabled?: boolean;
}>();
const modelValue = defineModel<string>('value', { default: '' });
const userList = ref<Array<{ username: string; realname: string }>>([]);
onMounted(async () => {
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 = [];
}
});
</script>