test: 替换弹窗为独立窗口

This commit is contained in:
陆光LG
2025-08-13 03:43:29 +08:00
parent f8ac3cc751
commit cf1db42bb0
3 changed files with 92 additions and 24 deletions

View File

@@ -2,7 +2,7 @@
"$schema": "../gen/schemas/desktop-schema.json", "$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default", "identifier": "default",
"description": "enables the default permissions", "description": "enables the default permissions",
"windows": ["main"], "windows": ["*"],
"permissions": [ "permissions": [
"core:default", "core:default",
"core:window:default", "core:window:default",
@@ -28,6 +28,14 @@
"core:window:allow-set-always-on-top", "core:window:allow-set-always-on-top",
"core:window:allow-set-always-on-bottom", "core:window:allow-set-always-on-bottom",
"core:window:allow-unmaximize", "core:window:allow-unmaximize",
"core:window:allow-unminimize" "core:window:allow-unminimize",
"core:window:allow-center",
"core:window:allow-request-user-attention",
"core:window:allow-set-decorations",
"core:window:allow-set-resizable",
"core:window:allow-set-skip-taskbar",
"core:webview:allow-set-webview-position",
"core:webview:allow-set-webview-size",
"core:window:allow-create"
] ]
} }

55
src/utils/tauriWindow.ts Normal file
View File

@@ -0,0 +1,55 @@
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
/**
* 打开新的页面功能
* @param label 新打开页面的标签
* @param options 新页面配置项
*/
export const newWindow = async (
label: string,
options: any
) => {
const webview = new WebviewWindow(`${label}`, {
...options
})
webview.once('tauri://created', async function () {
console.log(`${label}创建成功`)
})
webview.once('tauri://error', function (e) {
console.log(e)
})
}
/**
* 创建 Excel 编辑窗口
* @param id Excel 记录 ID
* @param name Excel 名称
*/
export const createEditWindow = async (id: number, name: string) => {
await newWindow(`excel-edit-${id}`, {
url: `/wps/xlsx?id=${id}&mode=edit`,
title: `编辑 Excel - ${name}`,
width: 900,
height: 650,
resizable: true,
decorations: true,
center: true,
visible: true
})
}
/**
* 创建通用 Excel 窗口
*/
export const createExcelWindow = async () => {
await newWindow('excel-main', {
url: '/wps/xlsx',
title: 'Excel 数据管理',
width: 1000,
height: 700,
resizable: true,
decorations: true,
center: true,
visible: true
})
}

View File

@@ -9,11 +9,7 @@
label-width="110px" label-width="110px"
> >
<el-form-item> <el-form-item>
<el-button <el-button type="primary" plain @click="openForm('create')">
type="primary"
plain
@click="openForm('create')"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增 <Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button> </el-button>
<el-button type="danger" plain @click="toggleExpandAll"> <el-button type="danger" plain @click="toggleExpandAll">
@@ -33,26 +29,16 @@
v-if="refreshTable" v-if="refreshTable"
> >
<el-table-column prop="name" label="名称" /> <el-table-column prop="name" label="名称" />
<el-table-column prop="title" label="标签名称" /> <el-table-column prop="title" label="标签名称" />
<el-table-column prop="functions" label="方法名称" /> <el-table-column prop="functions" label="方法名称" />
<el-table-column prop="parameter" label="方法参数" /> <el-table-column prop="parameter" label="方法参数" />
<el-table-column prop="chineseName" label="中文描述" /> <el-table-column prop="chineseName" label="中文描述" />
<el-table-column label="操作" align="center" width="150"> <el-table-column label="操作" align="center" width="200">
<template #default="scope"> <template #default="scope">
<el-button <el-button link type="primary" @click="openIndependentWindow(scope.row)">
link
type="primary"
@click="openForm('update', scope.row.id)"
>
修改 修改
</el-button> </el-button>
<el-button <el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button>
link
type="danger"
@click="handleDelete(scope.row.id)"
>
删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -63,12 +49,10 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import { handleTree } from '@/utils/tree' import { handleTree } from '@/utils/tree'
import * as XlsxApi from '@/api/wps/xlsx' import * as XlsxApi from '@/api/wps/xlsx'
import XlsxForm from './XlsxForm.vue' import XlsxForm from './XlsxForm.vue'
import { newWindow } from '@/utils/tauriWindow'
defineOptions({ name: 'WpsXlsx' }) defineOptions({ name: 'WpsXlsx' })
@@ -138,6 +122,27 @@ const handleDelete = async (id: number) => {
} catch {} } catch {}
} }
/** 打开独立窗口 */
const openIndependentWindow = async (row: any) => {
try {
// 直接使用 newWindow 方法创建独立窗口
await newWindow(`excel-edit-${row.id}`, {
url: `/wps/xlsx?id=${row.id}&mode=edit`,
title: `编辑 Excel - ${row.name}`,
width: 900,
height: 650,
resizable: true,
decorations: true,
center: true,
visible: true
})
message.success(`独立窗口已打开: ${row.name}`)
} catch (error) {
console.error('打开独立窗口失败:', error)
message.error('打开独立窗口失败')
}
}
/** 初始化 **/ /** 初始化 **/
onMounted(async () => { onMounted(async () => {
await getList() await getList()