Add files via upload

This commit is contained in:
公明
2026-07-14 14:22:21 +08:00
committed by GitHub
parent 7d1e16b97b
commit 6bafb8fe70
6 changed files with 1322 additions and 106 deletions
+96 -23
View File
@@ -2657,14 +2657,42 @@
<span id="workflow-canvas-subtitle" class="workflow-canvas-subtitle" hidden></span>
</div>
</div>
<div class="workflow-toolbar">
<button class="btn-secondary btn-small" data-require-permission="workflow:write" type="button" onclick="toggleWorkflowConnectMode()" id="workflow-connect-btn" data-i18n="workflows.connect">连线</button>
<button class="btn-secondary btn-small" data-require-permission="workflow:delete" type="button" onclick="deleteWorkflowSelection()" data-i18n="workflows.deleteSelected">删除选中</button>
<button class="btn-secondary btn-small" type="button" onclick="layoutWorkflowGraph()" data-i18n="workflows.autoLayout">自动布局</button>
<button class="btn-secondary btn-small" data-require-permission="workflow:execute" type="button" onclick="dryRunWorkflowDraft()" data-i18n="workflows.dryRun">试运行</button>
<button class="btn-secondary btn-small" data-require-permission="workflow:read" type="button" id="workflow-package-export-btn" onclick="exportCurrentWorkflowPackage()" data-i18n="workflows.package.export">导出</button>
<button class="btn-secondary btn-small" data-require-permission="workflow:delete" onclick="deleteCurrentWorkflow()" data-i18n="common.delete">删除</button>
<button class="btn-primary btn-small" data-require-permission="workflow:write" onclick="saveWorkflowDraft()" data-i18n="common.save">保存</button>
<div class="workflow-toolbar" role="toolbar" aria-label="流程编辑工具" data-i18n="workflows.toolbarLabel" data-i18n-attr="aria-label" data-i18n-skip-text="true">
<div class="workflow-toolbar-group" role="group" aria-label="画布工具" data-i18n="workflows.canvasTools" data-i18n-attr="aria-label" data-i18n-skip-text="true">
<button class="btn-secondary btn-small workflow-toolbar-button" data-require-permission="workflow:write" type="button" onclick="toggleWorkflowConnectMode()" id="workflow-connect-btn" aria-pressed="false">
<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="2.5"/><circle cx="18" cy="18" r="2.5"/><path d="M8 8l8 8"/></svg>
<span class="workflow-toolbar-label" data-i18n="workflows.connect">连线</span>
</button>
<button class="btn-secondary btn-small workflow-toolbar-button" type="button" onclick="layoutWorkflowGraph()">
<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="3" width="6" height="5" rx="1"/><rect x="14" y="16" width="6" height="5" rx="1"/><path d="M7 8v4h10v4"/></svg>
<span class="workflow-toolbar-label" data-i18n="workflows.autoLayout">自动布局</span>
</button>
</div>
<button class="btn-secondary btn-small workflow-toolbar-button workflow-run-button" data-require-permission="workflow:execute" type="button" onclick="dryRunWorkflowDraft()">
<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M8 5.4v13.2a1 1 0 0 0 1.55.84l9.2-6.6a1 1 0 0 0 0-1.68l-9.2-6.6A1 1 0 0 0 8 5.4Z"/></svg>
<span class="workflow-toolbar-label" data-i18n="workflows.dryRun">试运行</span>
</button>
<details class="workflow-more-actions" id="workflow-more-actions" data-require-permission-any="workflow:read workflow:delete">
<summary class="btn-secondary btn-small workflow-more-actions-trigger" aria-haspopup="menu">
<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><circle cx="5" cy="12" r="1.8"/><circle cx="12" cy="12" r="1.8"/><circle cx="19" cy="12" r="1.8"/></svg>
<span class="workflow-toolbar-label" data-i18n="workflows.moreActions">更多</span>
</summary>
<div class="workflow-more-actions-menu" role="menu">
<button data-require-permission="workflow:read" type="button" id="workflow-package-export-btn" role="menuitem" onclick="closeWorkflowMoreActions(); exportCurrentWorkflowPackage()">
<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12m0 0 4-4m-4 4-4-4"/><path d="M5 19h14"/></svg>
<span data-i18n="workflows.package.export">导出</span>
</button>
<div class="workflow-more-actions-divider" role="separator"></div>
<button class="workflow-more-actions-danger" data-require-permission="workflow:delete" type="button" role="menuitem" onclick="closeWorkflowMoreActions(); deleteCurrentWorkflow()">
<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16M9 7V4h6v3m3 0-1 13H7L6 7"/><path d="M10 11v5m4-5v5"/></svg>
<span data-i18n="workflows.deleteWorkflow">删除流程</span>
</button>
</div>
</details>
<button class="btn-primary btn-small workflow-save-button" data-require-permission="workflow:write" type="button" onclick="saveWorkflowDraft()">
<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 4h12l2 2v14H5z"/><path d="M8 4v6h8V4M8 20v-6h8v6"/></svg>
<span data-i18n="common.save">保存</span>
</button>
</div>
</section>
<section class="workflow-canvas-wrap" ondragover="workflowCanvasDragOver(event)" ondrop="workflowCanvasDrop(event)">
@@ -4895,35 +4923,75 @@
<div id="workflow-package-import-modal" class="modal workflow-package-modal" style="display: none;" role="dialog" aria-modal="true" aria-labelledby="workflow-package-import-title">
<div class="modal-content workflow-package-modal-content">
<div class="modal-header workflow-package-modal-header">
<div>
<h2 id="workflow-package-import-title" data-i18n="workflows.package.title">导入本地包</h2>
<p class="workflow-package-subtitle" data-i18n="workflows.package.preflightHint">预检不会修改本地工作流</p>
<div class="workflow-package-title-group">
<span class="workflow-package-title-icon" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12"/><path d="m7 10 5 5 5-5"/><path d="M5 19h14"/></svg>
</span>
<div>
<div class="workflow-package-title-line">
<h2 id="workflow-package-import-title" data-i18n="workflows.package.title">导入本地包</h2>
<span class="workflow-package-safe-badge" data-i18n="workflows.package.safeBadge">安全预检</span>
</div>
<p class="workflow-package-subtitle" data-i18n="workflows.package.preflightHint">先检查包内容与冲突,再由你确认是否导入</p>
</div>
</div>
<span class="modal-close" onclick="closeWorkflowPackageImportModal()" aria-label="关闭" data-i18n="common.close" data-i18n-attr="aria-label">&times;</span>
</div>
<div class="workflow-package-steps" aria-label="导入步骤" data-i18n="workflows.package.stepsLabel" data-i18n-attr="aria-label">
<span class="is-active" id="workflow-package-step-inspection"><b>1</b><span data-i18n="workflows.package.stepInspection">上传与预检</span></span>
<span id="workflow-package-step-import"><b>2</b><span data-i18n="workflows.package.stepImport">处理冲突与导入</span></span>
<span class="is-active" id="workflow-package-step-inspection"><b>1</b><span><strong data-i18n="workflows.package.stepInspection">上传与预检</strong><small data-i18n="workflows.package.stepInspectionHint">校验格式、内容与版本</small></span></span>
<span id="workflow-package-step-import"><b>2</b><span><strong data-i18n="workflows.package.stepImport">处理冲突与导入</strong><small data-i18n="workflows.package.stepImportHint">确认处理方式并完成导入</small></span></span>
</div>
<div class="modal-body workflow-package-modal-body">
<section class="workflow-package-pane workflow-package-pane--inspection">
<div class="workflow-package-file-row">
<input id="workflow-package-file-input" type="file" accept=".csapkg.zip,application/zip" hidden onchange="onWorkflowPackageFileSelected()">
<button type="button" class="btn-secondary" onclick="document.getElementById('workflow-package-file-input').click()" data-i18n="workflows.package.selectFile">选择本地包</button>
<span id="workflow-package-file-name" class="workflow-package-file-name" data-i18n="workflows.package.noFile">选择文件</span>
<div class="workflow-package-pane-heading">
<div>
<span class="workflow-package-eyebrow" data-i18n="workflows.package.packageEyebrow">本地工作流</span>
<h3 data-i18n="workflows.package.packageTitle">选择需要导入的文件</h3>
</div>
<span class="workflow-package-format-pill">.CSAPKG.ZIP</span>
</div>
<p class="workflow-package-file-hint" data-i18n="workflows.package.fileHint">仅支持单个 .csapkg.zip,文件不得超过 10 MiB。</p>
<button id="workflow-package-inspect-btn" type="button" class="btn-primary" onclick="inspectWorkflowPackage()" data-i18n="workflows.package.inspect">上传并预检</button>
<input id="workflow-package-file-input" type="file" accept=".csapkg.zip,application/zip" hidden onchange="onWorkflowPackageFileSelected()">
<div id="workflow-package-dropzone" class="workflow-package-dropzone" role="button" tabindex="0" aria-controls="workflow-package-file-input" aria-describedby="workflow-package-file-hint" onclick="openWorkflowPackageFilePicker()" onkeydown="onWorkflowPackageDropzoneKeydown(event)" ondragenter="onWorkflowPackageDragEnter(event)" ondragover="onWorkflowPackageDragOver(event)" ondragleave="onWorkflowPackageDragLeave(event)" ondrop="onWorkflowPackageDrop(event)">
<span class="workflow-package-upload-icon" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16V4"/><path d="m7 9 5-5 5 5"/><path d="M5 14v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4"/></svg>
</span>
<span class="workflow-package-dropzone-copy">
<strong data-i18n="workflows.package.dropTitle">拖拽本地包到这里</strong>
<span><span data-i18n="workflows.package.dropOr"></span> <span class="workflow-package-browse" data-i18n="workflows.package.selectFile">浏览文件</span></span>
</span>
</div>
<div id="workflow-package-selected-file" class="workflow-package-selected-file" hidden>
<span class="workflow-package-file-badge" aria-hidden="true">ZIP</span>
<span class="workflow-package-file-details">
<strong id="workflow-package-file-name" class="workflow-package-file-name"></strong>
<small id="workflow-package-file-size"></small>
</span>
<button type="button" class="workflow-package-file-remove" onclick="clearWorkflowPackageFile(event)" aria-label="移除文件" title="移除文件" data-i18n="workflows.package.removeFile" data-i18n-attr="aria-label,title" data-i18n-skip-text="true">&times;</button>
</div>
<p id="workflow-package-file-hint" class="workflow-package-file-hint" data-i18n="workflows.package.fileHint">仅支持单个 .csapkg.zip,文件不得超过 10 MiB。</p>
<button id="workflow-package-inspect-btn" type="button" class="btn-primary workflow-package-inspect-btn" onclick="inspectWorkflowPackage()" disabled data-i18n="workflows.package.inspect">上传并预检</button>
<div id="workflow-package-inspection" class="workflow-package-summary" aria-live="polite"></div>
</section>
<section class="workflow-package-pane workflow-package-pane--resolution">
<h3 data-i18n="workflows.package.resolutionTitle">处理方式</h3>
<div class="workflow-package-pane-heading">
<div>
<span class="workflow-package-eyebrow" data-i18n="workflows.package.decisionEyebrow">导入策略</span>
<h3 data-i18n="workflows.package.resolutionTitle">处理方式</h3>
</div>
<span class="workflow-package-decision-status" data-i18n="workflows.package.pending">待预检</span>
</div>
<div id="workflow-package-resolution" class="workflow-package-resolution" aria-live="polite"></div>
</section>
</div>
<div class="modal-footer workflow-package-modal-footer">
<button type="button" class="btn-secondary" onclick="closeWorkflowPackageImportModal()" data-i18n="common.cancel">取消</button>
<button id="workflow-package-submit-btn" type="button" class="btn-primary" onclick="submitWorkflowPackageImport()" disabled data-i18n="workflows.package.confirmImport">确认导入</button>
<div class="workflow-package-footer-note">
<span aria-hidden="true"></span>
<span data-i18n="workflows.package.footerNote">导入前不会改动现有工作流</span>
</div>
<div class="workflow-package-footer-actions">
<button type="button" class="btn-secondary" onclick="closeWorkflowPackageImportModal()" data-i18n="common.cancel">取消</button>
<button id="workflow-package-submit-btn" type="button" class="btn-primary" onclick="submitWorkflowPackageImport()" disabled data-i18n="workflows.package.confirmImport">确认导入</button>
</div>
</div>
</div>
</div>
@@ -5930,7 +5998,12 @@
</section>
</div>
<div class="modal-footer robot-binding-footer">
<span>如需配置专用服务账号,请前往“系统设置 → 机器人设置”。</span>
<div class="robot-binding-service-hint">
<span class="robot-binding-service-hint-icon" aria-hidden="true">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.09a2 2 0 0 1 1 1.74v.5a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.38a2 2 0 0 0-.73-2.73l-.15-.09a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2Z" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="1.8"/></svg>
</span>
<span>如需配置专用服务账号,请前往“系统设置 → 机器人设置”。</span>
</div>
<button type="button" class="btn-secondary" onclick="closeRobotAccountBinding()">关闭</button>
</div>
</div>