-
- {{ field.label }}
- {{ field.value }}
-
+
+
+
+
+
+
+
+ {{ meetingPresentation.summaryLabel }}
+
{{ detailSummary.title }}
+
+
+
+
+
+
+
+
+ {{ meetingResolution }}
+
+
+
+
+
+
+ {{ field.label }}
+ {{ field.value }}
+
+
+
+
+
+
+
+
+ {{ field.label }}
+ {{ field.value }}
+
+
+
@@ -48,12 +109,12 @@
:scroll="{ x: 1600 }"
:loading="feedbackLoading"
>
-
+
@@ -75,6 +136,15 @@
import type { BasicColumn } from '/@/components/Table';
import { countFeedbackStatus } from '/@/views/bg/utils/feedbackStatusCount';
+ const props = withDefaults(
+ defineProps<{
+ meetingType?: 'party' | 'office';
+ }>(),
+ {
+ meetingType: 'party',
+ }
+ );
+
const visible = ref(false);
const title = ref('详情');
const width = 1100;
@@ -84,6 +154,22 @@
const feedbackList = ref([]);
const feedbackLoading = ref(false);
+ // 由台账入口决定详情的会议身份,避免依赖旧数据中可能缺失的 meetingType 字段。
+ const meetingPresentation = computed(() => {
+ if (props.meetingType === 'office') {
+ return {
+ detailTitle: '所务会详情',
+ summaryLabel: '所务会事项',
+ icon: 'ant-design:team-outlined',
+ };
+ }
+ return {
+ detailTitle: '党委会详情',
+ summaryLabel: '党委会事项',
+ icon: 'ant-design:bank-outlined',
+ };
+ });
+
function fmt(value: any): string {
return value === undefined || value === null || value === '' ? '-' : String(value);
}
@@ -101,32 +187,61 @@
return fmt(record[`${key}_dictText`] || record[key]);
}
- const detailFields = computed(() => {
+ // 摘要区只承载最常用于快速判断事项状态的信息,详细字段放入下方分组,避免重复平铺。
+ const detailSummary = computed(() => {
+ const r = record.value || {};
+ return {
+ title: fmt(r.title),
+ year: fmt(r.year),
+ matterTime: fmtDate(r.matterTime),
+ bpmStatus: dictText(r, 'bpmStatus'),
+ secretLevel: dictText(r, 'secretLevel'),
+ urgencyLevel: dictText(r, 'urgencyLevel'),
+ };
+ });
+
+ const meetingFields = computed(() => {
const r = record.value || {};
return [
- { label: '年份', value: fmt(r.year), bold: true },
- { label: '会议时间', value: fmtDate(r.matterTime), bold: true },
- { label: '议题序号', value: fmt(r.itemNumber) },
- { label: '序号', value: fmt(r.number) },
- { label: '密级', value: dictText(r, 'secretLevel') },
- { label: '事项名称', value: fmt(r.title), bold: true },
- { label: '会议决议', value: fmt(r.content), fullWidth: true },
- { label: '分管所领导', value: dictText(r, 'manageSuoleader'), bold: true },
- { label: '事项目录编码', value: fmt(r.matterCode) },
- { label: '抄告单编号', value: fmt(r.noticeNumber) },
- { label: '是否为三重一大决策', value: dictText(r, 'isImportant') },
- { label: '主办部门', value: dictText(r, 'responDeptid'), bold: true },
- { label: '协办部门', value: dictText(r, 'assistDeptid'), bold: true },
- { label: '实际执行情况', value: fmt(r.actualExect) },
- { label: '完成状态', value: dictText(r, 'bpmStatus') },
- { label: '督办次数', value: fmt(r.superviseCount) },
- { label: '要求完成日期', value: fmtDate(r.deadline) },
- { label: '是否急件', value: dictText(r, 'urgencyLevel') },
- { label: '需所办负责人审批', value: ynText(r.isNeedAppro) },
- { label: '所办负责人', value: dictText(r, 'supDeptleaderid') },
+ { key: 'itemNumber', label: '议题序号', value: fmt(r.itemNumber) },
+ { key: 'number', label: '序号', value: fmt(r.number) },
+ { key: 'matterCode', label: '事项目录编码', value: fmt(r.matterCode) },
+ { key: 'noticeNumber', label: '抄告单编号', value: fmt(r.noticeNumber) },
+ { key: 'isImportant', label: '是否为三重一大决策', value: dictText(r, 'isImportant'), fullWidth: true },
];
});
+ const meetingResolution = computed(() => fmt(record.value?.content));
+
+ const responsibilityFields = computed(() => {
+ const r = record.value || {};
+ return [
+ { key: 'manageSuoleader', label: '分管所领导', value: dictText(r, 'manageSuoleader'), strong: true },
+ { key: 'responDeptid', label: '主办部门', value: dictText(r, 'responDeptid'), strong: true },
+ { key: 'assistDeptid', label: '协办部门', value: dictText(r, 'assistDeptid'), strong: true },
+ { key: 'deadline', label: '要求完成日期', value: fmtDate(r.deadline) },
+ { key: 'superviseCount', label: '督办次数', value: fmt(r.superviseCount) },
+ { key: 'isNeedAppro', label: '需所办负责人审批', value: ynText(r.isNeedAppro) },
+ { key: 'supDeptleaderid', label: '所办负责人', value: dictText(r, 'supDeptleaderid'), fullWidth: true },
+ { key: 'actualExect', label: '实际执行情况', value: fmt(r.actualExect), fullWidth: true },
+ ];
+ });
+
+ // 同时兼容字典文本和原始状态编码,保证列表传入的数据是否已翻译都能得到一致颜色。
+ const statusTagColor = computed(() => {
+ const rawStatus = String(record.value?.bpmStatus ?? '');
+ const statusText = detailSummary.value.bpmStatus;
+ if (rawStatus === '3' || statusText.includes('已完成')) return 'success';
+ if (rawStatus === '2' || statusText.includes('督办中') || statusText.includes('进行中')) return 'processing';
+ if (rawStatus === '1' || statusText.includes('未开始')) return 'warning';
+ return undefined;
+ });
+
+ const urgencyTagColor = computed(() => {
+ const rawUrgency = String(record.value?.urgencyLevel ?? '');
+ return rawUrgency === '1' || detailSummary.value.urgencyLevel === '是' ? 'error' : undefined;
+ });
+
const feedbackColumns: BasicColumn[] = [
...bgPartymatterFeedbackColumns,
{
@@ -159,7 +274,7 @@
function open(currentRecord: Recordable) {
record.value = currentRecord || {};
- title.value = '详情';
+ title.value = meetingPresentation.value.detailTitle;
activeKey.value = 'item';
visible.value = true;
if (currentRecord?.id !== undefined && currentRecord?.id !== null && currentRecord?.id !== '') {
@@ -171,40 +286,275 @@
diff --git a/src/views/bg/bqtakepulse/components/BgTakepulseDetailModal.vue b/src/views/bg/bqtakepulse/components/BgTakepulseDetailModal.vue
index 361b7ee..f1ef2f8 100644
--- a/src/views/bg/bqtakepulse/components/BgTakepulseDetailModal.vue
+++ b/src/views/bg/bqtakepulse/components/BgTakepulseDetailModal.vue
@@ -7,20 +7,96 @@
:footer="null"
:maskClosable="false"
:bodyStyle="{ maxHeight: '70vh', overflowY: 'auto', padding: '16px 24px 20px' }"
+ wrapClassName="takepulse-detail-modal"
destroyOnClose
>
-
-
- {{ field.label }}
- {{ field.value }}
-
+
+
+
+
+
+
+
+ 把把脉事项
+
{{ detailSummary.title }}
+
+
+
+
+
+
+
+
+
+
+ {{ field.label }}
+ {{ field.value }}
+
+
+
+
+
+
+ {{ specificOpinion }}
+
+
+
+
+
+
+ {{ field.label }}
+ {{ field.value }}
+
+
+
+
+
+
+
+
+ {{ field.label }}
+ {{ field.value }}
+
+
+
@@ -48,12 +124,12 @@
:scroll="{ x: 1800 }"
:loading="feedbackLoading"
>
-
+
@@ -100,38 +176,73 @@
return fmt(record[`${key}_dictText`] || record[key]);
}
- const detailFields = computed(() => {
+ // 摘要区聚合最常用的识别与状态信息,其余字段按业务含义分组展示。
+ const detailSummary = computed(() => {
+ const r = record.value || {};
+ return {
+ title: fmt(r.title),
+ year: dictText(r, 'year'),
+ taskType: dictText(r, 'taskType'),
+ bpmStatus: dictText(r, 'bpmStatus'),
+ secretLevel: dictText(r, 'secretLevel'),
+ urgencyLevel: dictText(r, 'urgencyLevel'),
+ };
+ });
+
+ const opinionFields = computed(() => {
const r = record.value || {};
return [
- { label: '年份', value: dictText(r, 'year'), bold: true },
- { label: '会议类型', value: dictText(r, 'taskType') },
- { label: '序号', value: fmt(r.number) },
- { label: '密级', value: dictText(r, 'secretLevel') },
- { label: '意见主题', value: fmt(r.title), bold: true },
- { label: '类别', value: fmt(r.type) },
- { label: '提出人', value: dictText(r, 'proposer') },
- { label: '具体意见', value: fmt(r.content), fullWidth: true },
- { label: '分管所领导', value: dictText(r, 'manageSuoleader'), bold: true },
- { label: '责任领导', value: dictText(r, 'suoleader') },
- { label: '牵头部门', value: dictText(r, 'responDeptid'), bold: true },
- { label: '协办部门', value: dictText(r, 'assistDeptid'), bold: true },
- { label: '落实部门', value: dictText(r, 'implementDeptid') },
- { label: '是否采纳', value: ynText(r.isAdopt) },
- { label: '落实措施/解释说明', value: fmt(r.measure), fullWidth: true },
- { label: '措施数量', value: fmt(r.measureNumber) },
- { label: '成果形式', value: fmt(r.achievement), fullWidth: true },
- { label: '要求完成日期', value: fmtDate(r.deadline) },
- { label: '备注', value: fmt(r.remark) },
- { label: '实际完成时间', value: fmtDate(r.actualTime) },
- { label: '提出人确认', value: fmt(r.proposerConfirm) },
- { label: '完成状态', value: dictText(r, 'bpmStatus') },
- { label: '督办次数', value: fmt(r.superviseCount) },
- { label: '是否急件', value: dictText(r, 'urgencyLevel') },
- { label: '是否需要所办负责人审批', value: ynText(r.isNeedAppro) },
- { label: '所办负责人', value: dictText(r, 'supDeptleaderid') },
+ { key: 'number', label: '序号', value: fmt(r.number) },
+ { key: 'type', label: '类别', value: fmt(r.type) },
+ { key: 'proposer', label: '提出人', value: dictText(r, 'proposer') },
+ { key: 'isAdopt', label: '是否采纳', value: ynText(r.isAdopt) },
];
});
+ const specificOpinion = computed(() => fmt(record.value?.content));
+
+ const responsibilityFields = computed(() => {
+ const r = record.value || {};
+ return [
+ { key: 'manageSuoleader', label: '分管所领导', value: dictText(r, 'manageSuoleader'), strong: true },
+ { key: 'suoleader', label: '责任领导', value: dictText(r, 'suoleader'), strong: true },
+ { key: 'responDeptid', label: '牵头部门', value: dictText(r, 'responDeptid'), strong: true },
+ { key: 'assistDeptid', label: '协办部门', value: dictText(r, 'assistDeptid'), strong: true },
+ { key: 'implementDeptid', label: '落实部门', value: dictText(r, 'implementDeptid') },
+ { key: 'deadline', label: '要求完成日期', value: fmtDate(r.deadline) },
+ { key: 'measureNumber', label: '措施数量', value: fmt(r.measureNumber) },
+ { key: 'superviseCount', label: '督办次数', value: fmt(r.superviseCount) },
+ { key: 'isNeedAppro', label: '是否需要所办负责人审批', value: ynText(r.isNeedAppro) },
+ { key: 'supDeptleaderid', label: '所办负责人', value: dictText(r, 'supDeptleaderid') },
+ ];
+ });
+
+ const resultFields = computed(() => {
+ const r = record.value || {};
+ return [
+ { key: 'actualTime', label: '实际完成时间', value: fmtDate(r.actualTime) },
+ { key: 'proposerConfirm', label: '提出人确认', value: fmt(r.proposerConfirm) },
+ { key: 'measure', label: '落实措施/解释说明', value: fmt(r.measure), fullWidth: true },
+ { key: 'achievement', label: '成果形式', value: fmt(r.achievement), fullWidth: true },
+ { key: 'remark', label: '备注', value: fmt(r.remark), fullWidth: true },
+ ];
+ });
+
+ // 同时兼容字典文本和原始编码,确保状态标签在不同列表数据形态下保持一致。
+ const statusTagColor = computed(() => {
+ const rawStatus = String(record.value?.bpmStatus ?? '');
+ const statusText = detailSummary.value.bpmStatus;
+ if (rawStatus === '3' || statusText.includes('已完成')) return 'success';
+ if (rawStatus === '2' || statusText.includes('督办中') || statusText.includes('进行中')) return 'processing';
+ if (rawStatus === '1' || statusText.includes('未开始')) return 'warning';
+ return undefined;
+ });
+
+ const urgencyTagColor = computed(() => {
+ const rawUrgency = String(record.value?.urgencyLevel ?? '');
+ return rawUrgency === '1' || detailSummary.value.urgencyLevel === '是' ? 'error' : undefined;
+ });
+
const feedbackColumns: BasicColumn[] = [
{ title: '责任部门名称', dataIndex: 'responDeptname', align: 'center', width: 160 },
{ title: '反馈人姓名', dataIndex: 'responPersonname', align: 'center', width: 110 },
@@ -189,7 +300,7 @@
function open(currentRecord: Recordable) {
record.value = currentRecord || {};
- title.value = '详情';
+ title.value = '把把脉详情';
activeKey.value = 'item';
visible.value = true;
if (currentRecord?.id !== undefined && currentRecord?.id !== null && currentRecord?.id !== '') {
@@ -201,40 +312,275 @@