feat(table): 添加批量同步功能并优化界面图标- 在菜单栏新增“批量同步”按钮,支持一键同步所有未同步表单

-优化多个图标标签的闭合格式,去除多余空格
- 调整部分按钮图标与文字间距样式
- 完善数据源SQL配置、默认排序和搜索按钮的布局结构- 修复部分标签未正确闭合的问题- 统一导入语句及变量解构格式,提升代码可读性- 增加批量同步逻辑,包括查询未同步表单及并发同步处理
- 提供无须同步时的消息提示功能
This commit is contained in:
2025-11-13 19:49:23 +08:00
parent 68594b62b8
commit 973792d196

View File

@@ -86,6 +86,17 @@
<Icon :size="14" icon="hugeicons:java"/> <Icon :size="14" icon="hugeicons:java"/>
<span class="ml-3px!">JAVA增强</span> <span class="ml-3px!">JAVA增强</span>
</el-button> </el-button>
<!-- 批量同步 -->
<el-button
type="primary"
:size="size"
@click="handleBatchSync"
v-hasPermi="['jeelowcode:dbform:sync']"
>
<Icon :size="14" icon="simple-icons:oracle"/>
<span class="ml-3px!">批量同步</span>
</el-button>
</template> </template>
<template #menu="{ size, row }"> <template #menu="{ size, row }">
<div class="flex justify-center flex-items-center"> <div class="flex justify-center flex-items-center">
@@ -190,7 +201,8 @@
@click="openDataOrigin" @click="openDataOrigin"
:disabled="!tableForm.dataOrigin" :disabled="!tableForm.dataOrigin"
> >
<Icon :size="14" icon="lucide:text-search"></Icon> <span>数据源SQL配置</span> <Icon :size="14" icon="lucide:text-search"></Icon>
<span>数据源SQL配置</span>
</el-button> </el-button>
<el-button <el-button
type="primary" type="primary"
@@ -211,10 +223,12 @@
<span>表格扩展配置</span> <span>表格扩展配置</span>
</el-button> </el-button>
<el-button @click="sortPopup = true"> <el-button @click="sortPopup = true">
<Icon :size="14" icon="mdi:sort"></Icon> <span>默认排序</span> <Icon :size="14" icon="mdi:sort"></Icon>
<span>默认排序</span>
</el-button> </el-button>
<el-button @click="searchPopup = true"> <el-button @click="searchPopup = true">
<Icon :size="14" icon="lucide:text-search"></Icon> <span>默认搜索</span> <Icon :size="14" icon="lucide:text-search"></Icon>
<span>默认搜索</span>
</el-button> </el-button>
</div> </div>
</template> </template>
@@ -417,7 +431,8 @@
size="small" size="small"
type="primary" type="primary"
@click="copySampleStr(key)" @click="copySampleStr(key)"
>点击复制</el-button >点击复制
</el-button
> >
</div> </div>
</div> </div>
@@ -1524,7 +1539,8 @@ const searchChange = (params, done) => {
/** 清空按钮操作 */ /** 清空按钮操作 */
const resetChange = () => { const resetChange = () => {
searchChange({}, () => {}) searchChange({}, () => {
})
} }
const sizeChange = (pageSize) => { const sizeChange = (pageSize) => {
@@ -1738,13 +1754,35 @@ const rowDel = async (form) => {
message.success(t('common.delSuccess')) message.success(t('common.delSuccess'))
// 刷新列表 // 刷新列表
await getTableData() await getTableData()
} catch {} } catch {
}
} }
const beforeUnload = (event) => { const beforeUnload = (event) => {
if (isUnload.value) return (event.returnValue = '您确定要关闭页面吗?') if (isUnload.value) return (event.returnValue = '您确定要关闭页面吗?')
} }
/** 批量同步 **/
const handleBatchSync = async () => {
// 首先需要查询有没有需要同步的表单,如果没有则提示消息并结束,如果有则打开弹窗
let searchObj = {
isDbSync: 'N',
pageNo: tablePage.value.currentPage,
pageSize: -1
}
const data = await TableApi.getDbList(searchObj)
if (data?.records?.length > 0) {
// 将data.records取出来每个记录的id作为row.id并且发起普通同步
const promises = data.records.map((row) => TableApi.asyncDbData(row.id, 'default'))
await Promise.all(promises).catch(() => message.alert('同步失败'))
// 刷新列表
getTableData()
} else {
// 没有需要同步的表单,提示信息并结束方法
message.info('没有需要同步的表单')
}
}
/** 初始化 **/ /** 初始化 **/
onMounted(async () => { onMounted(async () => {
window.addEventListener('beforeunload', beforeUnload) window.addEventListener('beforeunload', beforeUnload)