From c1028224c161dca9c7a015622e2f494c94793bd1 Mon Sep 17 00:00:00 2001
From: new_new_new <8454518+new-twice@user.noreply.gitee.com>
Date: Mon, 15 Jun 2026 02:47:24 +0000
Subject: [PATCH] =?UTF-8?q?!37=20feat(inspect):=20DqInspectTaskForm?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BF=85=E5=A1=AB=E5=AD=97=E6=AE=B5=E6=A0=A1?=
=?UTF-8?q?=E9=AA=8C=E8=A7=84=E5=88=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat(inspect): DqInspectTaskForm添加必填字段校验规则
* refactor(form): 是否需要审批字段统一替换为j-switch组件
* feat(form): 部门经办人替换为sz-dept-user-modal组件
* feat(form): 新增部门角色用户选择组件,替换各处j-select-user
---
.../process/FlowScheduleStartModalForBG.vue | 4 +-
.../DeptRoleUserSelectDropDown.vue | 78 ++++++++
.../DeptRoleUserSelectRadioGroup.vue} | 0
.../components/BgPartymatterForm.vue | 4 +-
.../xispeak/components/BgXiSpeakBPMForm.vue | 7 +-
.../bg/xispeak/components/BgXiSpeakForm.vue | 31 +--
.../components/DqInspectTaskBPMForm.vue | 3 +-
.../components/DqInspectTaskForm.vue | 178 ++++++++++++------
8 files changed, 226 insertions(+), 79 deletions(-)
create mode 100644 src/components/semri/userComponent/DeptRoleUserSelectDropDown.vue
rename src/{views/bg/xispeak/components/DeptRoleSelectUser.vue => components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue} (100%)
diff --git a/src/components/semri/process/FlowScheduleStartModalForBG.vue b/src/components/semri/process/FlowScheduleStartModalForBG.vue
index ce4f9a3..09bae3e 100644
--- a/src/components/semri/process/FlowScheduleStartModalForBG.vue
+++ b/src/components/semri/process/FlowScheduleStartModalForBG.vue
@@ -50,7 +50,7 @@
-
+
+
+ {{ user.realname }}
+
+
+
+
+
diff --git a/src/views/bg/xispeak/components/DeptRoleSelectUser.vue b/src/components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue
similarity index 100%
rename from src/views/bg/xispeak/components/DeptRoleSelectUser.vue
rename to src/components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue
diff --git a/src/views/bg/bgpartymatter/components/BgPartymatterForm.vue b/src/views/bg/bgpartymatter/components/BgPartymatterForm.vue
index 7a8f8d6..5913a9b 100644
--- a/src/views/bg/bgpartymatter/components/BgPartymatterForm.vue
+++ b/src/views/bg/bgpartymatter/components/BgPartymatterForm.vue
@@ -97,7 +97,7 @@
-
-
-
+
@@ -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();
diff --git a/src/views/bg/xispeak/components/BgXiSpeakForm.vue b/src/views/bg/xispeak/components/BgXiSpeakForm.vue
index 5e15cde..67025f5 100644
--- a/src/views/bg/xispeak/components/BgXiSpeakForm.vue
+++ b/src/views/bg/xispeak/components/BgXiSpeakForm.vue
@@ -39,8 +39,8 @@
-
-
+
+
@@ -60,18 +60,15 @@
-
- 是
- 否
-
+
-
+
-
@@ -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;
diff --git a/src/views/dq/inspectTask/components/DqInspectTaskBPMForm.vue b/src/views/dq/inspectTask/components/DqInspectTaskBPMForm.vue
index 38ab75b..a26a35f 100644
--- a/src/views/dq/inspectTask/components/DqInspectTaskBPMForm.vue
+++ b/src/views/dq/inspectTask/components/DqInspectTaskBPMForm.vue
@@ -203,7 +203,7 @@
-
+
@@ -247,6 +247,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 JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import Icon from '/@/components/Icon/index';
import { saveBpmForm, setProcessVariable, specificProblemOptions } from '../DqInspectTask.api';
diff --git a/src/views/dq/inspectTask/components/DqInspectTaskForm.vue b/src/views/dq/inspectTask/components/DqInspectTaskForm.vue
index b28cf53..1e37c84 100644
--- a/src/views/dq/inspectTask/components/DqInspectTaskForm.vue
+++ b/src/views/dq/inspectTask/components/DqInspectTaskForm.vue
@@ -32,7 +32,13 @@
-
+
@@ -46,7 +52,12 @@
-
+
@@ -60,39 +71,65 @@
责任与监督
-
-
-
-
-
-
-
+
+
-
+
+
+
+
+
+
-
+
-
+
-
+
@@ -117,7 +154,7 @@
-
+
@@ -131,31 +168,40 @@
import { JVxeTable } from '/@/components/jeecg/JVxeTable';
import { dqInspectProgressColumns } from '../DqInspectTask.data';
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 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 { Form } from 'ant-design-vue';
+ import DeptRoleUserSelectDropDown from '@/components/semri/userComponent/DeptRoleUserSelectDropDown.vue';
const useForm = Form.useForm;
export default defineComponent({
- name: "DqInspectTaskForm",
- components:{
+ name: 'DqInspectTaskForm',
+ components: {
+ DeptRoleUserSelectDropDown,
JDictSelectTag,
+ JSwitch,
JSelectDept,
- JSelectUser,
+ DeptRoleUserSelectRadioGroup,
JVxeTable,
JFormContainer,
},
- props:{
- formDisabled:{
+ props: {
+ formDisabled: {
type: Boolean,
- default: false
+ default: false,
},
- formData: { type: Object, default: ()=>{} },
- formBpm: { type: Boolean, default: true }
+ formData: { type: Object, default: () => {} },
+ formBpm: { type: Boolean, default: true },
},
- emits:['success'],
- setup(props, {emit}) {
+ emits: ['success'],
+ 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 formRef = ref();
const dqInspectProgressTableRef = ref();
@@ -164,7 +210,7 @@
const dqInspectProgressTable = reactive
>({
loading: false,
columns: dqInspectProgressColumns,
- dataSource: []
+ dataSource: [],
});
const activeKey = ref('dqInspectProgress');
const formData = reactive>({
@@ -198,34 +244,41 @@
//表单验证
const validatorRules = reactive({
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 disabled = computed(()=>{
- if(props.formBpm === true){
- if(props.formData.disabled === false){
+ const disabled = computed(() => {
+ if (props.formBpm === true) {
+ if (props.formData.disabled === false) {
return false;
- }else{
+ } else {
return true;
}
}
return props.formDisabled;
});
- onMounted(()=>{
+ onMounted(() => {
loadSpecificProblemOptions();
initFormData();
});
//渲染流程表单数据
const queryByIdUrl = '/dqinspecttask/dqInspectTask/queryById';
- async function initFormData(){
- if(props.formBpm === true){
- let params = {id: props.formData.dataId};
- const row = await defHttp.get({url: queryByIdUrl, params});
+ async function initFormData() {
+ if (props.formBpm === true) {
+ let params = { id: props.formData.dataId };
+ const row = await defHttp.get({ url: queryByIdUrl, params });
//设置表单的值
- Object.keys(row).map(k => {
+ Object.keys(row).map((k) => {
formData[k] = row[k];
});
//子表数据
@@ -234,15 +287,23 @@
}
}
// 是否显示提交按钮
- const showFlowSubmitButton = computed(()=>{
- if(props.formBpm === true){
- if(props.formData.disabled === false){
- return true
+ const showFlowSubmitButton = computed(() => {
+ if (props.formBpm === true) {
+ if (props.formData.disabled === false) {
+ 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();
const tmpData = {};
Object.keys(formData).forEach((key) => {
- if(row.hasOwnProperty(key)){
- tmpData[key] = row[key]
+ if (row.hasOwnProperty(key)) {
+ tmpData[key] = row[key];
}
- })
+ });
//赋值
- Object.assign(formData,tmpData);
+ Object.assign(formData, tmpData);
}
- const {getSubFormAndTableData, transformData} = useValidateAntFormAndTable(activeKey, {
- 'dqInspectProgress': dqInspectProgressTableRef,
+ const { getSubFormAndTableData, transformData } = useValidateAntFormAndTable(activeKey, {
+ dqInspectProgress: dqInspectProgressTableRef,
});
async function getFormData() {
@@ -301,7 +362,7 @@
}
return Promise.reject(errorFields);
}
- return transformData(toRaw(formData))
+ return transformData(toRaw(formData));
}
async function submitForm() {
@@ -320,16 +381,16 @@
} catch {}
}
const values = Object.assign({}, dbData, mainData, subData);
- console.log('表单提交数据', values)
- const isUpdate = values.id ? true : false
+ console.log('表单提交数据', values);
+ const isUpdate = values.id ? true : false;
await saveOrUpdate(values, isUpdate);
//关闭弹窗
emit('success');
}
function setFieldsValue(values) {
- if(values){
- Object.keys(values).map(k=>{
+ if (values) {
+ Object.keys(values).map((k) => {
formData[k] = values[k];
});
}
@@ -344,7 +405,6 @@
formData[key] = value;
}
-
return {
dqInspectProgressTableRef,
dqInspectProgressTable,
@@ -361,13 +421,19 @@
wrapperCol,
disabled,
showFlowSubmitButton,
+ CHARGE_LEADER_DEPT_ID,
+ CHARGE_LEADER_ROLE_ID,
+ PARTY_MASSES_DEPT_ID,
+ MEASURE_RES_LEADER_ROLE_ID,
+ measureResDeptId,
+ measureResLeaderDisabled,
getFormData,
submitForm,
add,
edit,
formRef,
- }
- }
+ };
+ },
});