!157 style(bqtakepulse): 意见主题输入框改为整行放大显示

* style(bqtakepulse): 意见主题输入框改为整行放大显示
* fix(bpm): 首页待阅查看详情补传增补意见tab显示参数
* style(bpm): 办理界面抄送人选择框自适应宽度并支持展示更多
* feat(bpm): 各流程表单默认抄送统一按分管所领导角色查询
* fix(bpm): 首页待办办理弹窗标题回显业务标题
This commit is contained in:
wsm
2026-08-17 02:56:31 +00:00
parent 364e220102
commit 1d1e177ce3
8 changed files with 46 additions and 47 deletions
@@ -9,7 +9,7 @@
:disabled="disabled"
:open="false"
mode="multiple"
:maxTagCount="3"
:maxTagCount="maxTagCount"
style="width: 100%"
@update:value="handleSelectRemove"
@click="openModal()"
@@ -23,7 +23,7 @@
:disabled="disabled"
:open="false"
mode="multiple"
:maxTagCount="3"
:maxTagCount="maxTagCount"
style="width: 100%"
@update:value="handleSelectRemove"
/>
@@ -81,6 +81,7 @@ const props = withDefaults(
title?: string;
hideTrigger?: boolean;
triggerMode?: 'button' | 'input';
maxTagCount?: number;
}>(),
{
value: '',
@@ -94,6 +95,7 @@ const props = withDefaults(
title: '选择人员',
hideTrigger: false,
triggerMode: 'button',
maxTagCount: 3,
}
);
@@ -286,7 +286,7 @@
</template>
<script lang="ts" setup>
import { computed, onMounted, reactive, ref, watch } from 'vue';
import { computed, onMounted, provide, reactive, ref, watch } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { getUserList, queryDepartTreeSync } from '/@/api/common/api';
import { useMessage } from '/@/hooks/web/useMessage';
@@ -304,9 +304,6 @@
PARTY_COMMITTEE_DEPT_ID,
PARTY_COMMITTEE_DEPT_ID as CHARGE_LEADER_DEPT_ID,
CHARGE_LEADER_ROLE_ID,
SDW_LEADER_ROLE_ID,
SUOBAN_DEPT_ID,
MEASURE_RES_LEADER_ROLE_ID,
} from '/@/constant/supervision';
const { initBpmFormData } = usePermission();
@@ -356,6 +353,8 @@
const isEnd = ref(0);
const isFinish = ref('0');
const defaultCcUsers = ref<Array<{ username: string; realname: string }>>([]);
// 办理内容组件通过 inject 读取默认抄送,需与 defaultCc 开关保持一致地提供
provide('defaultCcUsers', defaultCcUsers);
const lastGeneratedNumber = ref('');
const mainForm = reactive<Record<string, any>>({
@@ -508,19 +507,13 @@
async function fetchDefaultCcUsers() {
try {
const [res1, res2] = await Promise.all([
defHttp.get({
url: '/sys/user/queryUserRoleComponentData',
params: { departId: PARTY_COMMITTEE_DEPT_ID, roleId: SDW_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
}),
defHttp.get({
url: '/sys/user/queryUserRoleComponentData',
params: { departId: SUOBAN_DEPT_ID, roleId: MEASURE_RES_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
}),
]);
const records1 = res1?.records || res1?.result?.records || [];
const records2 = res2?.records || res2?.result?.records || [];
defaultCcUsers.value = [...records1, ...records2];
// 默认抄送按分管所领导角色跨部门查询,与台账分管所领导下拉逻辑一致
const res = await defHttp.get({
url: '/sys/user/queryUserRoleComponentData',
params: { roleId: CHARGE_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
});
const records = res?.records || res?.result?.records || [];
defaultCcUsers.value = records.sort((a, b) => (a.sortno ?? Infinity) - (b.sortno ?? Infinity));
} catch {
defaultCcUsers.value = [];
}
@@ -16,8 +16,8 @@
</a-space>
</div>
<a-row class="base-info-row" :gutter="[12, 4]">
<a-col :xs="24" :md="12">
<a-form-item label="意见主题" name="title">
<a-col :span="24">
<a-form-item label="意见主题" name="title" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">
<a-input v-model:value="mainForm.title" :disabled="mainDisabled" allow-clear />
</a-form-item>
</a-col>
@@ -275,7 +275,7 @@
</template>
<script lang="ts" setup>
import { computed, onMounted, reactive, ref, watch } from 'vue';
import { computed, onMounted, provide, reactive, ref, watch } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { getUserList, queryDepartTreeSync } from '/@/api/common/api';
import { useMessage } from '/@/hooks/web/useMessage';
@@ -295,9 +295,6 @@
PARTY_COMMITTEE_DEPT_ID,
PARTY_COMMITTEE_DEPT_ID as CHARGE_LEADER_DEPT_ID,
CHARGE_LEADER_ROLE_ID,
SDW_LEADER_ROLE_ID,
SUOBAN_DEPT_ID,
MEASURE_RES_LEADER_ROLE_ID,
} from '/@/constant/supervision';
const { initBpmFormData } = usePermission();
@@ -348,6 +345,8 @@
const isEnd = ref(0);
const isFinish = ref('0');
const defaultCcUsers = ref<Array<{ username: string; realname: string }>>([]);
// 办理内容组件通过 inject 读取默认抄送,需与 defaultCc 开关保持一致地提供
provide('defaultCcUsers', defaultCcUsers);
const mainForm = reactive<Record<string, any>>({
id: '',
@@ -457,19 +456,13 @@
async function fetchDefaultCcUsers() {
try {
const [res1, res2] = await Promise.all([
defHttp.get({
url: '/sys/user/queryUserRoleComponentData',
params: { departId: PARTY_COMMITTEE_DEPT_ID, roleId: SDW_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
}),
defHttp.get({
url: '/sys/user/queryUserRoleComponentData',
params: { departId: SUOBAN_DEPT_ID, roleId: MEASURE_RES_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
}),
]);
const records1 = res1?.records || res1?.result?.records || [];
const records2 = res2?.records || res2?.result?.records || [];
defaultCcUsers.value = [...records1, ...records2];
// 默认抄送按分管所领导角色跨部门查询,与台账分管所领导下拉逻辑一致
const res = await defHttp.get({
url: '/sys/user/queryUserRoleComponentData',
params: { roleId: CHARGE_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
});
const records = res?.records || res?.result?.records || [];
defaultCcUsers.value = records.sort((a, b) => (a.sortno ?? Infinity) - (b.sortno ?? Infinity));
} catch {
defaultCcUsers.value = [];
}
@@ -47,8 +47,16 @@
<sz-dept-user-modal v-model:value="formData.proposer" />
</a-form-item>
</a-col>
<a-col :xs="24" :md="12">
<a-form-item label="意见主题" v-bind="validateInfos.title" id="BgTakepulseForm-title" name="title">
<a-col :span="24">
<a-form-item
class="full-width-aligned-form-item"
label="意见主题"
v-bind="validateInfos.title"
id="BgTakepulseForm-title"
name="title"
:labelCol="wideLabelCol"
:wrapperCol="wideWrapperCol"
>
<a-input v-model:value="formData.title" placeholder="请输入意见主题" allow-clear></a-input>
</a-form-item>
</a-col>
@@ -285,7 +285,7 @@
import BgXiSpeakBPMFeedbackModal from './BgXiSpeakBPMFeedbackModal.vue';
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
import DeptRoleUserSelectRadioGroup from '/@/components/semri/userComponent/DeptRoleUserSelectRadioGroup.vue';
import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervision';
import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID, CHARGE_LEADER_ROLE_ID } from '/@/constant/supervision';
import {
buildApproveReason,
buildDeptHandlerFeedbackReason,
@@ -540,9 +540,10 @@ import {
async function fetchDefaultCcUsers() {
try {
// 默认抄送按分管所领导角色跨部门查询,与 bgpartymatter/bqtakepulse 保持一致
const res = await defHttp.get({
url: '/sys/user/queryUserRoleComponentData',
params: { departId: PARTY_COMMITTEE_DEPT_ID, roleId: SDW_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
params: { roleId: CHARGE_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
});
const records = res?.records || res?.result?.records || [];
defaultCcUsers.value = records.sort((a, b) => (a.sortno ?? Infinity) - (b.sortno ?? Infinity));
@@ -182,7 +182,7 @@
async function handleProcess(record) {
let { formData, formUrl } = await getTaskNodeInfo(record);
formData['PROCESS_TAB_TYPE'] = 'run';
openHandleModal(true, { formData, formUrl, title: '流程办理' });
openHandleModal(true, { formData, formUrl, title: record.bpmBizTitle || '流程办理' });
}
async function getTaskNodeInfo(record) {
@@ -276,7 +276,7 @@
}
let { formData, formUrl } = await getTaskInfoForHistory(record);
formData['PROCESS_TAB_TYPE'] = 'history';
openHandleModal(true, { formData, formUrl, title: '流程历史' });
openHandleModal(true, { formData, formUrl, title: '流程历史', showSupplementApprovalOpinion: true });
if (record?.ccId) {
await reloadCc();
await fetchCcTotal();
@@ -270,7 +270,7 @@
import { saveBpmForm, setProcessVariable, specificProblemOptions } from '../DqInspectTask.api';
import { list as progressList, deleteOne as progressDelete } from '../../inspectProgress/DqInspectProgress.api';
import { usePermission } from '/@/hooks/web/usePermission';
import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervision';
import { CHARGE_LEADER_ROLE_ID } from '/@/constant/supervision';
import { useSelectNameResolver } from '/@/composables/useSelectNameResolver';
import { useSubApproveUserResolver } from '/@/composables/useSubApproveUserResolver';
import { buildDeptLeaderAssignReason, normalizeDeptNames } from '/@/composables/useDefaultApprovalReason';
@@ -505,9 +505,10 @@
async function fetchDefaultCcUsers() {
try {
// 默认抄送按分管所领导角色跨部门查询,与 bgpartymatter/bqtakepulse/bgxispeak 保持一致
const res = await defHttp.get({
url: '/sys/user/queryUserRoleComponentData',
params: { departId: PARTY_COMMITTEE_DEPT_ID, roleId: SDW_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
params: { roleId: CHARGE_LEADER_ROLE_ID, searchSecurityLevel: 5, pageNo: 1, pageSize: 999 },
});
const records = res?.records || res?.result?.records || [];
defaultCcUsers.value = records.sort((a, b) => (a.sortno ?? Infinity) - (b.sortno ?? Infinity));
@@ -68,9 +68,10 @@
<a-list-item style="line-height: 32px" v-show="checkedCc">
<span>抄送给</span>
<SzDeptUserModal
style="display: inline-block; width: 500px"
style="display: inline-block; flex: 1; min-width: 500px; max-width: 100%"
triggerMode="button"
title="选择抄送人"
:maxTagCount="10"
v-model:value="ccUserIds"
@confirm="handleSelectCcUser"
/>