71
71
</el-dropdown-item >
72
72
<el-dropdown-item >
73
73
<el-upload action =" "
74
- :before-upload =" beforeUpload "
74
+ :before-upload =" importTk "
75
75
:limit =" 1" >
76
76
导入布局文件
77
77
</el-upload >
78
78
</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 >
79
86
</el-dropdown-menu >
80
87
</el-dropdown >
81
88
</div >
@@ -93,6 +100,7 @@ import CodeView from "@/components/code-view.vue";
93
100
import { preview } from " @/config.js" ;
94
101
import { Loading } from " element-ui" ;
95
102
import { win_default } from " @/core/py-attrs" ;
103
+ import Attrs from " @/core/py-attrs" ;
96
104
export default {
97
105
props: {
98
106
isSaved: {
@@ -193,7 +201,47 @@ export default {
193
201
let code = t .build ();
194
202
this .$refs [" code_view" ].open (code);
195
203
},
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 ) {
197
245
let reader = new FileReader ();
198
246
reader .readAsText (file, " utf8" );
199
247
reader .onload = () => {
0 commit comments