Skip to content

Commit a08024b

Browse files
committed
布局恢复
1 parent e6d9948 commit a08024b

File tree

1 file changed

+50
-2
lines changed

1 file changed

+50
-2
lines changed

src/components/toolbar.vue

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,18 @@
7171
</el-dropdown-item>
7272
<el-dropdown-item>
7373
<el-upload action=""
74-
:before-upload="beforeUpload"
74+
:before-upload="importTk"
7575
:limit="1">
7676
导入布局文件
7777
</el-upload>
7878
</el-dropdown-item>
79+
<el-dropdown-item>
80+
<el-upload action=""
81+
:before-upload="importTkAndFix"
82+
:limit="1">
83+
导入并修复布局
84+
</el-upload>
85+
</el-dropdown-item>
7986
</el-dropdown-menu>
8087
</el-dropdown>
8188
</div>
@@ -93,6 +100,7 @@ import CodeView from "@/components/code-view.vue";
93100
import { preview } from "@/config.js";
94101
import { Loading } from "element-ui";
95102
import { win_default } from "@/core/py-attrs";
103+
import Attrs from "@/core/py-attrs";
96104
export default {
97105
props: {
98106
isSaved: {
@@ -193,7 +201,47 @@ export default {
193201
let code = t.build();
194202
this.$refs["code_view"].open(code);
195203
},
196-
beforeUpload(file) {
204+
importTkAndFix(file) {
205+
let reader = new FileReader();
206+
reader.readAsText(file, "utf8");
207+
reader.onload = () => {
208+
// console.log(res);
209+
try {
210+
let info = reader.result;
211+
info = Base64.decode(info);
212+
info = JSON.parse(info);
213+
if (!info.win) {
214+
throw new Error();
215+
}
216+
console.log("开始修复");
217+
let attrs = new Attrs();
218+
console.log(attrs);
219+
let win = this.fixTk(info.win, attrs);
220+
console.log(win);
221+
this.$store.dispatch("app/setFrame", win);
222+
this.$message.success("数据导入成功");
223+
} catch (error) {
224+
throw error;
225+
this.$message.error("文件解析错误");
226+
}
227+
};
228+
// console.log(file);
229+
return false;
230+
},
231+
fixTk(ele, attrs) {
232+
if (ele?.elements) {
233+
for (const key in ele.elements) {
234+
ele.elements[key] = this.fixTk(ele.elements[key], attrs);
235+
}
236+
}
237+
if (ele.type == "tk_win" || !ele.type) {
238+
ele = { ...win_default(), ...ele };
239+
} else {
240+
ele = { ...attrs[ele.type](), ...ele };
241+
}
242+
return ele;
243+
},
244+
importTk(file) {
197245
let reader = new FileReader();
198246
reader.readAsText(file, "utf8");
199247
reader.onload = () => {

0 commit comments

Comments
 (0)