!15 feat(xispeak): 督办领导列表统一改用SzUserSelectByDeptRoleSecurityModal弹窗选人,存储use…

* feat(xispeak): 督办领导列表统一改用SzUserSelectByDeptRoleSecurityModal弹窗选人,存储use…
* feat(xispeak): 督办领导列表改用SzUserSelectByDeptRoleSecurityModal弹窗选人
* chore(xispeak): 更新 BPM_NODE_PERMISSIONS 节点权限配置
* feat(xispeak): 新增 showSelnextUser 权限控制,默认隐藏指定下一步操作人
* fix(xispeak): 修复是否报送上级报告字段显示0/1而非字典标签
* feat(xispeak): 新增 nonJiJianFieldsReadonly 权限控制,支持除纪检字段外全部只读
* fix(xispeak): 修复反馈表单标签对齐和网格布局问题
* fix(xispeak): 指定落实措施条数、措施已闭环数量、督办次数设为不可编辑
This commit is contained in:
new_new_new
2026-06-01 08:45:34 +00:00
parent c22da8a67a
commit 24739d5efc
9 changed files with 276 additions and 47 deletions
@@ -67,8 +67,27 @@
</a-form-item>
</a-col>
<a-col v-if="formData.needSdwApproval === 1" :span="12">
<a-form-item label="督办领导列表" v-bind="validateInfos.sdwLeaderList" id="BgXiSpeakForm-sdwLeaderList" name="sdwLeaderList">
<j-select-user v-model:value="formData.sdwLeaderList" :multiple="true" allow-clear placeholder="请选择督办领导" />
<a-form-item label="督办领导列表" id="BgXiSpeakForm-sdwLeaderList" name="sdwLeaderList">
<a-input
v-model:value="sdwLeaderNames"
placeholder="请选择督办领导"
readonly
allow-clear
@click="openSdwLeaderModal"
@clear="handleClearSdwLeader"
>
<template #suffix>
<SearchOutlined @click="openSdwLeaderModal" />
</template>
</a-input>
<SzUserSelectByDeptRoleSecurityModal
v-model:open="sdwLeaderModalOpen"
title="请选择所党委领导"
:deptId="sdwLeaderDeptId"
:roleId="sdwLeaderRoleId"
:securityValue="sdwLeaderSecurityValue"
@confirm="handleSdwLeaderConfirm"
/>
</a-form-item>
</a-col>
</a-row>
@@ -78,12 +97,12 @@
<a-row :gutter="[16, 0]">
<a-col :span="12">
<a-form-item label="指定落实措施条数" v-bind="validateInfos.implCount" id="BgXiSpeakForm-implCount" name="implCount">
<a-input-number v-model:value="formData.implCount" placeholder="每增加一条反馈数量加1" style="width: 100%" />
<a-input-number v-model:value="formData.implCount" placeholder="每增加一条反馈数量加1" style="width: 100%" disabled />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="措施已闭环数量" v-bind="validateInfos.closedCount" id="BgXiSpeakForm-closedCount" name="closedCount">
<a-input-number v-model:value="formData.closedCount" placeholder="完成反馈全流程后增加" style="width: 100%" />
<a-input-number v-model:value="formData.closedCount" placeholder="完成反馈全流程后增加" style="width: 100%" disabled />
</a-form-item>
</a-col>
<a-col :span="12">
@@ -103,7 +122,7 @@
</a-col>
<a-col :span="12">
<a-form-item label="督办次数" v-bind="validateInfos.supervisionCount" id="BgXiSpeakForm-supervisionCount" name="supervisionCount">
<a-input-number v-model:value="formData.supervisionCount" placeholder="每次发起督办流程自动加1" style="width: 100%" />
<a-input-number v-model:value="formData.supervisionCount" placeholder="每次发起督办流程自动加1" style="width: 100%" disabled />
</a-form-item>
</a-col>
</a-row>
@@ -125,6 +144,9 @@
import JSelectUser from '/@/components/Form/src/jeecg/components/JSelectUser.vue';
import JTreeSelect from '/@/components/Form/src/jeecg/components/JTreeSelect.vue';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import SzUserSelectByDeptRoleSecurityModal from '/src/components/semri/userComponent/modal/SzUserSelectByDeptRoleSecurityModal.vue';
import { SearchOutlined } from '@ant-design/icons-vue';
import { getUserList } from '/@/api/common/api';
import { getValueType } from '/@/utils';
import { loadTreeData, saveOrUpdateDict } from '../BgXiSpeak.api';
import { Form } from 'ant-design-vue';
@@ -174,6 +196,42 @@
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 18 } });
const confirmLoading = ref<boolean>(false);
// 督办领导选人弹窗
const sdwLeaderModalOpen = ref(false);
const sdwLeaderNames = ref('');
const sdwLeaderDeptId = ref('2044677562460508161');
const sdwLeaderRoleId = ref('2044676455280570370');
const sdwLeaderSecurityValue = ref(5);
function openSdwLeaderModal() {
sdwLeaderModalOpen.value = true;
}
function handleClearSdwLeader() {
formData.sdwLeaderList = '';
sdwLeaderNames.value = '';
}
function handleSdwLeaderConfirm(rows: Array<{ id: string; realname: string }>) {
if (rows && rows.length > 0) {
formData.sdwLeaderList = rows.map((r) => r.username).join(',');
sdwLeaderNames.value = rows.map((r) => r.realname).join(',');
} else {
formData.sdwLeaderList = '';
sdwLeaderNames.value = '';
}
}
async function resolveSdwLeaderNames(ids: string) {
try {
const res = await getUserList({ username: ids, pageSize: 999 });
const records = res?.records || res?.result?.records || [];
sdwLeaderNames.value = records.map((u: any) => u.realname).join(',');
} catch {
sdwLeaderNames.value = '';
}
}
const validatorRules = reactive({
speakStatus: [{ required: true, message: '请输入重要讲话指示批示情况' }],
time: [{ required: true, message: '请选择时间' }],
@@ -254,6 +312,10 @@
});
Object.assign(formData, tmpData);
sdwLeaderNames.value = data.sdwLeaderList_dictText || '';
if (!sdwLeaderNames.value && formData.sdwLeaderList) {
resolveSdwLeaderNames(formData.sdwLeaderList);
}
model = { ...tmpData };
});
}