调整模型库上传模型的字段

This commit is contained in:
zhangshun
2026-06-01 14:14:16 +08:00
parent 6206c9556b
commit a059805458
2 changed files with 55 additions and 74 deletions

View File

@@ -115,18 +115,18 @@
overflow: auto;
padding: 10px 12px;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
align-content: start;
gap: 10px;
}
.model-card {
display: grid;
gap: 8px;
gap: 5px;
background: #ffffff;
border: 1px solid #d7e0e8;
border-radius: 6px;
padding: 8px;
padding: 5px;
}
.thumb {

View File

@@ -365,10 +365,11 @@ function requestSceneModelImport() {
type: requestSceneModelMessageType,
requestId
}, resolveParentPostMessageOrigin());
notify("已请求主程序导出当前选中模型");
// notify("已请求主程序导出当前选中模型");
}
async function handleSceneModelMessage(data: SceneModelMessage) {
console.log("Received scene model message:", data);
if (pendingSceneModelRequestId && data.requestId && data.requestId !== pendingSceneModelRequestId) return;
pendingSceneModelRequestId = "";
clearSceneModelRequestTimer();
@@ -554,40 +555,20 @@ export async function openProcessModelUploadDialog(input?: {
await loadDictionaries();
const initialName = input?.modelName || (input?.file ? modelNameFromFile(input.file.name) : "");
const result = await formDialog<boolean>({
title: "上传工艺模型",
width: 640,
height: 650,
title: `上传工艺模型-【${appState.selectedFolderName || "当前目录"}`,
width: 400,
height: 300,
blockPage: false,
body: `
<form id="processModelUploadPopupForm" class="popup-form upload-popup-form">
<div class="upload-target-path">
<span>上传目录</span>
<strong>${escapeHtml(appState.selectedFolderName || "当前目录")}</strong>
</div>
<label>
<span>模型文件</span>
<div id="processModelDropZone" class="drop-zone">
<input id="processModelUploadFile" type="file" accept=".glb" />
<strong>选择模型</strong>
<em>或拖拽 .glb 模型到这里</em>
<small id="processSelectedFileName">${escapeHtml(input?.file?.name ?? "未选择文件")}</small>
</div>
</label>
<label>
<span>模型名称</span>
<input id="processModelUploadName" name="name" placeholder="例如 AA.glb" value="${escapeHtml(initialName)}" />
</label>
<div class="popup-form-grid">
<label><span>品牌</span><input name="brandName" list="brandOptions" /></label>
<label><span>类型</span><input name="typeName" list="typeOptions" /></label>
<label><span>型</span><input name="model" /></label>
<label><span>价钱</span><input name="price" /></label>
<label><span>重量</span><input name="weight" /></label>
<label><span>模型名称</span><input id="processModelUploadName" name="name" value="${escapeHtml(initialName)}" autocomplete="off" /></label>
<label><span>品牌</span><input name="brandName" list="brandOptions" autocomplete="off" /></label>
<label><span>型</span><input name="typeName" list="typeOptions" autocomplete="off" /></label>
<label><span>型号</span><input name="model" autocomplete="off" /></label>
<label><span>价钱</span><input name="price" autocomplete="off" /></label>
<label><span>重量</span><input name="weight" autocomplete="off" /></label>
</div>
<label>
<span>工艺数据 JSON</span>
<textarea id="processOperationTreeJson" name="operationTree" placeholder='可以粘贴 {"OperationTree":"[...]"} 或 OperationTree[] 数组 JSON'>${escapeHtml(input?.operationTreeJson ?? "")}</textarea>
</label>
${dictionaryDatalistHtml()}
</form>
`,
@@ -664,52 +645,52 @@ function bindUploadDialogEvents(state: UploadFormState) {
}
function bindProcessUploadDialogEvents(state: UploadFormState) {
const dropZone = document.querySelector<HTMLDivElement>("#processModelDropZone")!;
const fileInput = document.querySelector<HTMLInputElement>("#processModelUploadFile")!;
const nameInput = document.querySelector<HTMLInputElement>("#processModelUploadName")!;
const selectedFileName = document.querySelector<HTMLElement>("#processSelectedFileName")!;
// const dropZone = document.querySelector<HTMLDivElement>("#processModelDropZone")!;
// const fileInput = document.querySelector<HTMLInputElement>("#processModelUploadFile")!;
// const nameInput = document.querySelector<HTMLInputElement>("#processModelUploadName")!;
// const selectedFileName = document.querySelector<HTMLElement>("#processSelectedFileName")!;
const selectFile = (file: File) => {
if (!file.name.toLowerCase().endsWith(".glb")) {
notify("当前阶段只允许上传 .glb 模型");
return;
}
state.file = file;
selectedFileName.textContent = file.name;
if (!nameInput.value.trim()) {
nameInput.value = file.name;
}
};
// const selectFile = (file: File) => {
// if (!file.name.toLowerCase().endsWith(".glb")) {
// notify("当前阶段只允许上传 .glb 模型");
// return;
// }
// state.file = file;
// selectedFileName.textContent = file.name;
// if (!nameInput.value.trim()) {
// nameInput.value = file.name;
// }
// };
if (state.file) {
selectedFileName.textContent = state.file.name;
if (!nameInput.value.trim()) {
nameInput.value = state.file.name;
}
}
// if (state.file) {
// selectedFileName.textContent = state.file.name;
// if (!nameInput.value.trim()) {
// nameInput.value = state.file.name;
// }
// }
fileInput.addEventListener("change", () => {
const file = fileInput.files?.[0];
if (file) selectFile(file);
});
// fileInput.addEventListener("change", () => {
// const file = fileInput.files?.[0];
// if (file) selectFile(file);
// });
dropZone.addEventListener("click", (event) => {
if (event.target !== fileInput) fileInput.click();
});
// dropZone.addEventListener("click", (event) => {
// if (event.target !== fileInput) fileInput.click();
// });
dropZone.addEventListener("dragover", (event) => {
event.preventDefault();
dropZone.classList.add("is-dragover");
});
dropZone.addEventListener("dragleave", () => {
dropZone.classList.remove("is-dragover");
});
dropZone.addEventListener("drop", (event) => {
event.preventDefault();
dropZone.classList.remove("is-dragover");
const file = event.dataTransfer?.files?.[0];
if (file) selectFile(file);
});
// dropZone.addEventListener("dragover", (event) => {
// event.preventDefault();
// dropZone.classList.add("is-dragover");
// });
// dropZone.addEventListener("dragleave", () => {
// dropZone.classList.remove("is-dragover");
// });
// dropZone.addEventListener("drop", (event) => {
// event.preventDefault();
// dropZone.classList.remove("is-dragover");
// const file = event.dataTransfer?.files?.[0];
// if (file) selectFile(file);
// });
}
function normalizeOperationTreeInput(value?: string) {