|
@@ -272,31 +272,31 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import { reactive, ref } from "vue";
|
|
|
-import { useRouter } from "vue-router";
|
|
|
-import { useUser } from "@/services/user";
|
|
|
-import { NotifyPlugin, MessagePlugin } from "tdesign-vue-next";
|
|
|
+import { reactive, ref } from 'vue';
|
|
|
+import { useRouter } from 'vue-router';
|
|
|
+import { useUser } from '@/services/user';
|
|
|
+import { NotifyPlugin, MessagePlugin } from 'tdesign-vue-next';
|
|
|
import {
|
|
|
showNotification,
|
|
|
Meta2dBackData,
|
|
|
dealwithFormatbeforeOpen,
|
|
|
gotoAccount,
|
|
|
-} from "@/services/utils";
|
|
|
-import { readFile, upload } from "@/services/file";
|
|
|
-import { compareVersion, baseVer, upgrade } from "@/services/upgrade";
|
|
|
-import { parseSvg } from "@meta2d/svg";
|
|
|
-import { Pen } from "@meta2d/core";
|
|
|
+} from '@/services/utils';
|
|
|
+import { readFile, upload } from '@/services/file';
|
|
|
+import { compareVersion, baseVer, upgrade } from '@/services/upgrade';
|
|
|
+import { parseSvg } from '@meta2d/svg';
|
|
|
+import { Pen } from '@meta2d/core';
|
|
|
|
|
|
const router = useRouter();
|
|
|
const market = import.meta.env.VITE_MARKET;
|
|
|
|
|
|
-const baseUrl = import.meta.env.BASE_URL || "/";
|
|
|
+const baseUrl = import.meta.env.BASE_URL || '/';
|
|
|
|
|
|
const { user, message, getUser, getMessage, signout } = useUser();
|
|
|
|
|
|
const isNew = ref(false);
|
|
|
const data = reactive({
|
|
|
- name: "空白文件",
|
|
|
+ name: '空白文件',
|
|
|
});
|
|
|
|
|
|
function login() {
|
|
@@ -309,12 +309,12 @@ function login() {
|
|
|
// arr[0] = 'http://account';
|
|
|
// let accountUrl = arr.join('.');
|
|
|
// return `${
|
|
|
- // (<any>globalThis).loginUrl ? (<any>globalThis).loginUrl : accountUrl
|
|
|
+ // loginUrl ? loginUrl : accountUrl
|
|
|
// }?cb=${encodeURIComponent(location.href)}`;
|
|
|
// }
|
|
|
}
|
|
|
|
|
|
-const title = "系统可能不会保存您所做的更改,是否继续?";
|
|
|
+const title = '系统可能不会保存您所做的更改,是否继续?';
|
|
|
const newFile = async () => {
|
|
|
if (isNew.value) {
|
|
|
if (await showNotification(title)) {
|
|
@@ -327,20 +327,18 @@ const newFile = async () => {
|
|
|
|
|
|
const pen = ref(false);
|
|
|
const drawPen = () => {
|
|
|
- (<any>globalThis).meta2d.inactive();
|
|
|
+ meta2d.inactive();
|
|
|
try {
|
|
|
- if (!(<any>globalThis).meta2d.canvas.drawingLineName) {
|
|
|
+ if (!meta2d.canvas.drawingLineName) {
|
|
|
// 开了钢笔,需要关掉铅笔
|
|
|
- (<any>globalThis).meta2d.canvas.pencil && drawingPencil();
|
|
|
- (<any>globalThis).meta2d.drawLine(
|
|
|
- (<any>globalThis).meta2d.store.options.drawingLineName
|
|
|
- );
|
|
|
+ meta2d.canvas.pencil && drawingPencil();
|
|
|
+ meta2d.drawLine(meta2d.store.options.drawingLineName);
|
|
|
} else {
|
|
|
- (<any>globalThis).meta2d.finishDrawLine();
|
|
|
- (<any>globalThis).meta2d.drawLine();
|
|
|
+ meta2d.finishDrawLine();
|
|
|
+ meta2d.drawLine();
|
|
|
}
|
|
|
//钢笔
|
|
|
- pen.value = !!(<any>globalThis).meta2d.canvas.drawingLineName;
|
|
|
+ pen.value = !!meta2d.canvas.drawingLineName;
|
|
|
} catch (e: any) {
|
|
|
MessagePlugin.warning(e.message);
|
|
|
}
|
|
@@ -349,14 +347,14 @@ const drawPen = () => {
|
|
|
const pencil = ref(false);
|
|
|
const drawingPencil = () => {
|
|
|
try {
|
|
|
- if (!(<any>globalThis).meta2d.canvas.pencil) {
|
|
|
+ if (!meta2d.canvas.pencil) {
|
|
|
// 开了铅笔需要关掉钢笔
|
|
|
- (<any>globalThis).meta2d.canvas.drawingLineName && drawPen();
|
|
|
- (<any>globalThis).meta2d.drawingPencil();
|
|
|
+ meta2d.canvas.drawingLineName && drawPen();
|
|
|
+ meta2d.drawingPencil();
|
|
|
} else {
|
|
|
- (<any>globalThis).meta2d.stopPencil();
|
|
|
+ meta2d.stopPencil();
|
|
|
}
|
|
|
- pencil.value = (<any>globalThis).meta2d.canvas.pencil;
|
|
|
+ pencil.value = meta2d.canvas.pencil;
|
|
|
} catch (e: any) {
|
|
|
MessagePlugin.warning(e.message);
|
|
|
}
|
|
@@ -364,58 +362,58 @@ const drawingPencil = () => {
|
|
|
|
|
|
const magnifier = ref(false);
|
|
|
const showMagnifier = () => {
|
|
|
- if (!(<any>globalThis).meta2d.canvas.magnifierCanvas.magnifier) {
|
|
|
- (<any>globalThis).meta2d.showMagnifier();
|
|
|
+ if (!meta2d.canvas.magnifierCanvas.magnifier) {
|
|
|
+ meta2d.showMagnifier();
|
|
|
} else {
|
|
|
- (<any>globalThis).meta2d.hideMagnifier();
|
|
|
+ meta2d.hideMagnifier();
|
|
|
}
|
|
|
- magnifier.value = (<any>globalThis).meta2d.canvas.magnifierCanvas.magnifier;
|
|
|
+ magnifier.value = meta2d.canvas.magnifierCanvas.magnifier;
|
|
|
};
|
|
|
|
|
|
const map = ref(false);
|
|
|
const showMap = () => {
|
|
|
- if (!(<any>globalThis).meta2d.map?.isShow) {
|
|
|
- (<any>globalThis).meta2d.showMap();
|
|
|
+ if (!meta2d.map?.isShow) {
|
|
|
+ meta2d.showMap();
|
|
|
} else {
|
|
|
- (<any>globalThis).meta2d.hideMap();
|
|
|
+ meta2d.hideMap();
|
|
|
}
|
|
|
- map.value = (<any>globalThis).meta2d.map?.isShow;
|
|
|
+ map.value = meta2d.map?.isShow;
|
|
|
};
|
|
|
|
|
|
async function newfile(noRouter: boolean = false) {
|
|
|
- (<any>globalThis).meta2d.canvas.drawingLineName && drawPen();
|
|
|
- (<any>globalThis).meta2d.canvas.pencil && drawingPencil();
|
|
|
- (<any>globalThis).meta2d.canvas.magnifierCanvas.magnifier && showMagnifier();
|
|
|
- (<any>globalThis).meta2d.map?.isShow && showMap();
|
|
|
+ meta2d.canvas.drawingLineName && drawPen();
|
|
|
+ meta2d.canvas.pencil && drawingPencil();
|
|
|
+ meta2d.canvas.magnifierCanvas.magnifier && showMagnifier();
|
|
|
+ meta2d.map?.isShow && showMap();
|
|
|
isNew.value = false;
|
|
|
// await localforage.removeItem(localMeta2dDataName);
|
|
|
// 打开文件操作不跳转
|
|
|
!noRouter &&
|
|
|
router.replace({
|
|
|
- path: "/",
|
|
|
- query: { r: Date.now() + "" },
|
|
|
+ path: '/',
|
|
|
+ query: { r: Date.now() + '' },
|
|
|
});
|
|
|
}
|
|
|
|
|
|
function load(newT: boolean = false) {
|
|
|
- const input = document.createElement("input");
|
|
|
- input.type = "file";
|
|
|
+ const input = document.createElement('input');
|
|
|
+ input.type = 'file';
|
|
|
input.onchange = (event) => {
|
|
|
const elem = event.target as HTMLInputElement;
|
|
|
if (elem.files && elem.files[0]) {
|
|
|
newT && newfile(true);
|
|
|
// 路由跳转 可能在 openFile 后执行
|
|
|
- if (elem.files[0].name.endsWith(".json")) {
|
|
|
+ if (elem.files[0].name.endsWith('.json')) {
|
|
|
openJson(elem.files[0], newT);
|
|
|
- } else if (elem.files[0].name.endsWith(".svg")) {
|
|
|
+ } else if (elem.files[0].name.endsWith('.svg')) {
|
|
|
MessagePlugin.info(
|
|
|
- "可二次编辑但转换存在损失,若作为图片使用,请使用右侧属性面板的上传图片功能"
|
|
|
+ '可二次编辑但转换存在损失,若作为图片使用,请使用右侧属性面板的上传图片功能'
|
|
|
);
|
|
|
openSvg(elem.files[0]);
|
|
|
- } else if (elem.files[0].name.endsWith(".zip")) {
|
|
|
+ } else if (elem.files[0].name.endsWith('.zip')) {
|
|
|
openZip(elem.files[0], newT);
|
|
|
} else {
|
|
|
- MessagePlugin.info("打开文件只支持 json,svg,zip 格式");
|
|
|
+ MessagePlugin.info('打开文件只支持 json,svg,zip 格式');
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -427,7 +425,7 @@ const openJson = async (file: File, isNew: boolean = false) => {
|
|
|
try {
|
|
|
let data: Meta2dBackData = JSON.parse(text);
|
|
|
if (!data.name) {
|
|
|
- data.name = file.name.replace(".json", "");
|
|
|
+ data.name = file.name.replace('.json', '');
|
|
|
}
|
|
|
if (!data.version || compareVersion(data.version, baseVer) === -1) {
|
|
|
// 如果版本号不存在或者版本号 version < 1.0.0
|
|
@@ -445,7 +443,7 @@ const openJson = async (file: File, isNew: boolean = false) => {
|
|
|
// if (!(window as any).meta2dFolder?.includes(data.folder)) {
|
|
|
// delete data.folder;
|
|
|
// }
|
|
|
- (<any>globalThis).meta2d.open(data);
|
|
|
+ meta2d.open(data);
|
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
|
}
|
|
@@ -454,13 +452,13 @@ const openJson = async (file: File, isNew: boolean = false) => {
|
|
|
const openSvg = async (file: File) => {
|
|
|
const text = await readFile(file);
|
|
|
const pens: Pen[] = parseSvg(text);
|
|
|
- (<any>globalThis).meta2d.canvas.addCaches = pens;
|
|
|
- MessagePlugin.info("svg转换成功,请点击画布决定放置位置");
|
|
|
+ meta2d.canvas.addCaches = pens;
|
|
|
+ MessagePlugin.info('svg转换成功,请点击画布决定放置位置');
|
|
|
};
|
|
|
|
|
|
const openZip = async (file: File, isNew: boolean = false) => {
|
|
|
if (!(user && user.username)) {
|
|
|
- MessagePlugin.warning("请先登录,否则无法保存!");
|
|
|
+ MessagePlugin.warning('请先登录,否则无法保存!');
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -470,16 +468,16 @@ const openZip = async (file: File, isNew: boolean = false) => {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- const { default: JSZip } = await import("jszip");
|
|
|
+ const { default: JSZip } = await import('jszip');
|
|
|
const zip = new JSZip();
|
|
|
await zip.loadAsync(file);
|
|
|
|
|
|
- let dataStr = "";
|
|
|
+ let dataStr = '';
|
|
|
for (const key in zip.files) {
|
|
|
if (zip.files[key].dir) {
|
|
|
continue;
|
|
|
}
|
|
|
- if (key.endsWith(".json")) {
|
|
|
+ if (key.endsWith('.json')) {
|
|
|
// 认为只有一个 json 文件
|
|
|
// dataStr = await zip.file(key).async('string');
|
|
|
break;
|
|
@@ -501,22 +499,22 @@ const openZip = async (file: File, isNew: boolean = false) => {
|
|
|
let _keyLower = key.toLowerCase();
|
|
|
// if (!key.endsWith('.json') && (_png !== -1 || _img !== -1 || _image !== -1 || _file !== -1)) {
|
|
|
if (
|
|
|
- _keyLower.endsWith(".png") ||
|
|
|
- _keyLower.endsWith(".svg") ||
|
|
|
- _keyLower.endsWith(".gif") ||
|
|
|
- _keyLower.endsWith(".jpg") ||
|
|
|
- _keyLower.endsWith(".jpeg")
|
|
|
+ _keyLower.endsWith('.png') ||
|
|
|
+ _keyLower.endsWith('.svg') ||
|
|
|
+ _keyLower.endsWith('.gif') ||
|
|
|
+ _keyLower.endsWith('.jpg') ||
|
|
|
+ _keyLower.endsWith('.jpeg')
|
|
|
) {
|
|
|
- let filename = key.substr(key.lastIndexOf("/") + 1);
|
|
|
- const extPos = filename.lastIndexOf(".");
|
|
|
- let ext = "";
|
|
|
+ let filename = key.substr(key.lastIndexOf('/') + 1);
|
|
|
+ const extPos = filename.lastIndexOf('.');
|
|
|
+ let ext = '';
|
|
|
if (extPos > 0) {
|
|
|
ext = filename.substr(extPos);
|
|
|
}
|
|
|
filename = filename.substring(0, extPos > 8 ? 8 : extPos);
|
|
|
|
|
|
// 上传文件
|
|
|
- const result:any ={}
|
|
|
+ const result: any = {};
|
|
|
// await upload(
|
|
|
// // await zip.file(key).async('blob'),
|
|
|
// true,
|
|
@@ -560,7 +558,7 @@ const openZip = async (file: File, isNew: boolean = false) => {
|
|
|
let data: Meta2dBackData = JSON.parse(dataStr);
|
|
|
if (data) {
|
|
|
if (!data.name) {
|
|
|
- data.name = file.name.replace(".zip", "");
|
|
|
+ data.name = file.name.replace('.zip', '');
|
|
|
}
|
|
|
if (!data.version || compareVersion(data.version, baseVer) === -1) {
|
|
|
// 如果版本号不存在或者版本号 version < 1.0.0
|
|
@@ -578,7 +576,7 @@ const openZip = async (file: File, isNew: boolean = false) => {
|
|
|
if (!(window as any).meta2dFolder?.includes(data.folder)) {
|
|
|
delete data.folder;
|
|
|
}
|
|
|
- (<any>globalThis).meta2d.open(data);
|
|
|
+ meta2d.open(data);
|
|
|
}
|
|
|
} catch (e) {
|
|
|
return false;
|