修改xispeak前端界面,增加必填项,按照bg给出的新excel表格更新主表子表字段。

This commit is contained in:
wsm
2026-05-19 16:29:23 +08:00
parent e051205167
commit 7e766f7ea1
10 changed files with 379 additions and 322 deletions
+89 -84
View File
@@ -1,86 +1,90 @@
<template>
<div>
<BasicTable @register="registerTable" :rowSelection="rowSelection" :expandedRowKeys="expandedRowKeys" @expand="handleExpand" @fetch-success="onFetchSuccess">
<!--插槽:table标题-->
<template #tableTitle>
<a-button type="primary" v-auth="'bg.xispeak:bg_xi_speak:add'" @click="handleAdd" preIcon="ant-design:plus-outlined">新增</a-button>
<a-button type="primary" v-auth="'bg.xispeak:bg_xi_speak:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls"
>导出</a-button
>
<j-upload-button type="primary" v-auth="'bg.xispeak:bg_xi_speak:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls"
>导入</j-upload-button
>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button v-auth="'bg.xispeak:bg_xi_speak:deleteBatch'"
>批量操作
<Icon icon="ant-design:down-outlined"></Icon>
</a-button>
</a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<BasicTable
@register="registerTable"
:rowSelection="rowSelection"
:expandedRowKeys="expandedRowKeys"
@expand="handleExpand"
@fetch-success="onFetchSuccess"
>
<!--插槽:table标题-->
<template #tableTitle>
<a-button type="primary" v-auth="'bg.xispeak:bg_xi_speak:add'" @click="handleAdd" preIcon="ant-design:plus-outlined">新增</a-button>
<a-button type="primary" v-auth="'bg.xispeak:bg_xi_speak:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls">导出</a-button>
<j-upload-button type="primary" v-auth="'bg.xispeak:bg_xi_speak:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls"
>导入</j-upload-button
>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button v-auth="'bg.xispeak:bg_xi_speak:deleteBatch'"
>批量操作
<Icon icon="ant-design:down-outlined"></Icon>
</a-button>
</a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
<!--字段回显插槽-->
<template v-slot:bodyCell="{ column, record, index, text }"> </template>
<!--嵌套子表-->
<template #expandedRowRender="{ record }">
<div class="feedback-expand-table" v-if="selectedFeedbackId === record.id">
<div class="feedback-expand-header">
<div class="feedback-expand-title">
<span class="feedback-expand-icon">
<Icon icon="ant-design:message-outlined" />
</span>
<span>反馈信息</span>
<a-tag class="feedback-expand-count" color="processing">
{{ getFeedbackTableLoading(record) ? '加载中' : `${getFeedbackCount(record)}` }}
</a-tag>
</div>
<div class="feedback-expand-actions">
<a-button type="link" size="small" @click="handleCloseFeedback">收起</a-button>
</div>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
<!--字段回显插槽-->
<template v-slot:bodyCell="{ column, record, index, text }"> </template>
<!--嵌套子表-->
<template #expandedRowRender="{ record }">
<div class="feedback-expand-table" v-if="selectedFeedbackId === record.id">
<div class="feedback-expand-header">
<div class="feedback-expand-title">
<span class="feedback-expand-icon">
<Icon icon="ant-design:message-outlined" />
</span>
<span>反馈信息</span>
<a-tag class="feedback-expand-count" color="processing">
{{ getFeedbackTableLoading(record) ? '加载中' : `${getFeedbackCount(record)}` }}
</a-tag>
</div>
<div class="feedback-expand-actions">
<a-button type="link" size="small" @click="handleCloseFeedback">收起</a-button>
</div>
<BasicTable
class="feedback-inner-table"
bordered
size="small"
rowKey="id"
:canResize="false"
:showIndexColumn="false"
:showActionColumn="false"
:showTableSetting="false"
:clickToRowSelect="false"
:columns="feedbackExpandColumns"
:dataSource="getFeedbackTableData(record)"
:loading="getFeedbackTableLoading(record)"
:pagination="false"
:scroll="{ x: 1220 }"
>
<template #feedbackAttachments="{ record: feedbackRecord }">
<SUploadFile
v-if="feedbackRecord.id"
class="feedback-attachment-list"
:bussiness-id="feedbackRecord.id"
:disabled="true"
:multiple="true"
/>
<span v-else>-</span>
</template>
</BasicTable>
</div>
</template>
</BasicTable>
<BasicTable
class="feedback-inner-table"
bordered
size="small"
rowKey="id"
:canResize="false"
:showIndexColumn="false"
:showActionColumn="false"
:showTableSetting="false"
:clickToRowSelect="false"
:columns="feedbackExpandColumns"
:dataSource="getFeedbackTableData(record)"
:loading="getFeedbackTableLoading(record)"
:pagination="false"
:scroll="{ x: 1220 }"
>
<template #feedbackAttachments="{ record: feedbackRecord }">
<SUploadFile
v-if="feedbackRecord.id"
class="feedback-attachment-list"
:bussiness-id="feedbackRecord.id"
:disabled="true"
:multiple="true"
/>
<span v-else>-</span>
</template>
</BasicTable>
</div>
</template>
</BasicTable>
<!-- 表单区域 -->
<BgXiSpeakModal ref="registerModal" @success="handleSuccess"></BgXiSpeakModal>
<!-- 审批记录 -->
@@ -187,7 +191,8 @@
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] = tableContext;
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] =
tableContext;
const mainId = computed(() => (unref(selectedRowKeys).length > 0 ? unref(selectedRowKeys)[0] : ''));
provide('mainId', mainId);
@@ -470,7 +475,7 @@
if (record.bpmStatus == '1' || !record.bpmStatus) {
dropDownAction.push({
label: '发起督办计划收集流程',
label: '发起落实措施收集流程',
onClick: handleProcess.bind(null, record),
});
dropDownAction.push({
@@ -508,8 +513,8 @@
}
function getLeadDeptOptions(record) {
const deptIds = splitDeptValue(record?.leadDepartment);
const deptNames = splitDeptValue(record?.leadDepartment_dictText);
const deptIds = splitDeptValue(record?.implDept);
const deptNames = splitDeptValue(record?.implDept_dictText);
return deptIds.map((deptId, index) => ({
value: deptId,
label: deptNames[index] || deptId,
@@ -528,7 +533,7 @@
function handleFeedbackRightNowConfirm({ record, feedbackRightNow }) {
pendingFeedbackRightNow.value = feedbackRightNow;
flowScheduleModalRef.value?.open({
title: '发起督办计划收集流程',
title: '发起落实措施收集流程',
payload: { record },
deptOptions: getLeadDeptOptions(record),
showSuoleaderFields: true,
@@ -657,7 +662,7 @@
title: record.speakStatus,
content: record.implStatus,
urgencyLevel: record.completionStatus,
deptId: options.deptId || record.leadDepartment,
deptId: options.deptId || record.implDept,
deptLeaderId: record.responsiblePerson,
requireFinishDate: formatDate(record.time, 'YYYY-MM-DD'),
deadline: record.deadline || formatDate(record.time, 'YYYY-MM-DD HH:mm:ss'),