新增: 首页 + 资料导入 + PDF导出 + AI文档生成

This commit is contained in:
lxy
2026-08-17 09:34:12 +08:00
parent a5ebfd8b74
commit 352496c00a
13 changed files with 1698 additions and 12 deletions
+2 -2
View File
@@ -60,7 +60,7 @@ pub fn exec_op(state: State<AppState>, op_json: serde_json::Value) -> Result<OpR
.map_err(|e| format!("Op 解析失败: {}", e))?;
let mut deck = state.deck.lock().map_err(|e| e.to_string())?;
let backward_op = invert_op(&deck, &op);
let _backward_op = invert_op(&deck, &op);
*deck = apply_op(&deck, &op);
let mut hist = state.history.lock().map_err(|e| e.to_string())?;
@@ -154,7 +154,7 @@ pub fn ping() -> String {
/// 保存 deck 到文件
#[tauri::command]
pub fn save_file(content: String) -> Result<String, String> {
pub fn save_file(_content: String) -> Result<String, String> {
Ok("ok".to_string())
}
+3
View File
@@ -1,3 +1,6 @@
// 本文件的 struct/fn 多数是 TS 端的 Rust 镜像供序列化参考,非死代码
#![allow(dead_code)]
mod ai;
mod color;
mod commands;
+1 -1
View File
@@ -337,7 +337,7 @@ pub fn invert_op(input_deck: &Deck, op: &crate::model::Op) -> crate::model::Op {
"del_element" => {
let slide_idx = op.payload.get("slideIdx").or_else(|| op.payload.get("slide_idx")).and_then(|v| v.as_f64()).map(|f| f as usize);
let element_id = op.payload.get("elementId").or_else(|| op.payload.get("element_id")).and_then(|v| v.as_str()).unwrap_or("").to_string();
let _element_id = op.payload.get("elementId").or_else(|| op.payload.get("element_id")).and_then(|v| v.as_str()).unwrap_or("").to_string();
if let Some(deleted) = op.payload.get("deletedElement").or_else(|| op.payload.get("deleted_element")) {
Op {
op_type: "add_element".into(),