Commit 86160f40defa30e919b9ac164fd9baaf773e3d2a

Authored by puhui999
1 parent 3d2022e3

代码生成:重构 vue2 代码生成模版,使用 async await 优化代码层次

yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/components/form_sub_erp.vue.vm
... ... @@ -145,19 +145,17 @@
145 145 },
146 146 methods: {
147 147 /** 打开弹窗 */
148   - open(id, ${subJoinColumn.javaField}) {
  148 + async open(id, ${subJoinColumn.javaField}) {
149 149 this.dialogVisible = true;
150 150 this.reset();
151   - const that = this;
152 151 this.formData.${subJoinColumn.javaField} = ${subJoinColumn.javaField};
153 152 // 修改时,设置数据
154 153 if (id) {
155 154 this.formLoading = true;
156 155 try {
157   - ${simpleClassName}Api.get${subSimpleClassName}(id).then(res=>{
158   - that.formData = res.data;
159   - that.dialogTitle = "修改${subTable.classComment}";
160   - })
  156 + const res = await ${simpleClassName}Api.get${subSimpleClassName}(id);
  157 + this.formData = res.data;
  158 + this.dialogTitle = "修改${subTable.classComment}";
161 159 } finally {
162 160 this.formLoading = false;
163 161 }
... ... @@ -165,32 +163,26 @@
165 163 this.dialogTitle = "新增${subTable.classComment}";
166 164 },
167 165 /** 提交按钮 */
168   - submitForm() {
  166 + async submitForm() {
  167 + await this.#[[$]]#refs["formRef"].validate();
169 168 this.formLoading = true;
170 169 try {
171   - let data = this.formData;
172   - this.#[[$]]#refs["formRef"].validate(valid => {
173   - if (!valid) {
174   - return;
175   - }
  170 + const data = this.formData;
176 171 // 修改的提交
177 172 if (data.${primaryColumn.javaField}) {
178   - ${simpleClassName}Api.update${subSimpleClassName}(data).then(response => {
179   - this.#[[$modal]]#.msgSuccess("修改成功");
180   - this.dialogVisible = false;
181   - this.#[[$]]#emit('success');
182   - });
  173 + await ${simpleClassName}Api.update${subSimpleClassName}(data);
  174 + this.#[[$modal]]#.msgSuccess("修改成功");
  175 + this.dialogVisible = false;
  176 + this.#[[$]]#emit('success');
183 177 return;
184 178 }
185 179 // 添加的提交
186   - ${simpleClassName}Api.create${subSimpleClassName}(data).then(response => {
  180 + await ${simpleClassName}Api.create${subSimpleClassName}(data);
187 181 this.#[[$modal]]#.msgSuccess("新增成功");
188 182 this.dialogVisible = false;
189 183 this.#[[$]]#emit('success');
190   - });
191   - });
192 184 }finally {
193   - this.formLoading = false
  185 + this.formLoading = false;
194 186 }
195 187 },
196 188 /** 表单重置 */
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/components/form_sub_normal.vue.vm
... ... @@ -289,13 +289,14 @@
289 289 }
290 290 try {
291 291 this.formLoading = true;
  292 + // 这里还是需要获取一下 this 的不然取不到 formData
292 293 const that = this;
293 294 #if ( $subTable.subJoinMany )
294   - ${simpleClassName}Api.get${subSimpleClassName}ListBy${SubJoinColumnName}(val).then(res=>{
  295 + ${simpleClassName}Api.get${subSimpleClassName}ListBy${SubJoinColumnName}(val).then(function (res){
295 296 that.formData = res.data;
296 297 })
297 298 #else
298   - ${simpleClassName}Api.get${subSimpleClassName}By${SubJoinColumnName}(val).then(res=>{
  299 + ${simpleClassName}Api.get${subSimpleClassName}By${SubJoinColumnName}(val).then(function (res){
299 300 const data = res.data;
300 301 if (!data) {
301 302 return
... ... @@ -325,21 +326,21 @@
325 326 #end
326 327 #end
327 328 }
328   - row.${subJoinColumn.javaField} = this.${subJoinColumn.javaField}
329   - this.formData.push(row)
  329 + row.${subJoinColumn.javaField} = this.${subJoinColumn.javaField};
  330 + this.formData.push(row);
330 331 },
331 332 /** 删除按钮操作 */
332 333 handleDelete(index) {
333   - this.formData.splice(index, 1)
  334 + this.formData.splice(index, 1);
334 335 },
335 336 #end
336 337 /** 表单校验 */
337 338 validate(){
338   - return this.#[[$]]#refs["formRef"].validate()
  339 + return this.#[[$]]#refs["formRef"].validate();
339 340 },
340 341 /** 表单值 */
341 342 getData(){
342   - return this.formData
  343 + return this.formData;
343 344 }
344 345 }
345 346 };
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/components/list_sub_erp.vue.vm
... ... @@ -111,28 +111,24 @@
111 111 },
112 112 methods: {
113 113 /** 查询列表 */
114   - getList() {
  114 + async getList() {
115 115 try {
116 116 this.loading = true;
117   - const that = this;
118 117 #if ($table.templateType == 11)
119   - ${simpleClassName}Api.get${subSimpleClassName}Page(this.queryParams).then(response => {
120   - that.list = response.data.list;
121   - that.total = response.data.total;
122   - });
  118 + const res = await ${simpleClassName}Api.get${subSimpleClassName}Page(this.queryParams);
  119 + this.list = res.data.list;
  120 + this.total = res.data.total;
123 121 #else
124 122 #if ( $subTable.subJoinMany )
125   - ${simpleClassName}Api.get${subSimpleClassName}ListBy${SubJoinColumnName}(this.${subJoinColumn.javaField}).then(response=>{
126   - that.list = response.data;
127   - })
  123 + const res = await ${simpleClassName}Api.get${subSimpleClassName}ListBy${SubJoinColumnName}(this.${subJoinColumn.javaField});
  124 + this.list = res.data;
128 125 #else
129   - ${simpleClassName}Api.get${subSimpleClassName}By${SubJoinColumnName}(this.${subJoinColumn.javaField}).then(response=>{
130   - const data = response.data;
131   - if (!data) {
132   - return
133   - }
134   - that.list.push(data)
135   - })
  126 + const res = await ${simpleClassName}Api.get${subSimpleClassName}By${SubJoinColumnName}(this.${subJoinColumn.javaField});
  127 + const data = res.data;
  128 + if (!data) {
  129 + return;
  130 + }
  131 + this.list.push(data);
136 132 #end
137 133 #end
138 134 } finally {
... ... @@ -148,22 +144,19 @@
148 144 /** 添加/修改操作 */
149 145 openForm(id) {
150 146 if (!this.${subJoinColumn.javaField}) {
151   - that.#[[$modal]]#.msgError('请选择一个${table.classComment}');
  147 + this.#[[$modal]]#.msgError('请选择一个${table.classComment}');
152 148 return;
153 149 }
154 150 this.#[[$]]#refs["formRef"].open(id, this.${subJoinColumn.javaField});
155 151 },
156 152 /** 删除按钮操作 */
157   - handleDelete(row) {
158   - const that = this;
  153 + async handleDelete(row) {
  154 + const ${primaryColumn.javaField} = row.${primaryColumn.javaField};
  155 + await this.#[[$modal]]#.confirm('是否确认删除${table.classComment}编号为"' + ${primaryColumn.javaField} + '"的数据项?');
159 156 try {
160   - const ${primaryColumn.javaField} = row.${primaryColumn.javaField};
161   - this.#[[$modal]]#.confirm('是否确认删除${table.classComment}编号为"' + ${primaryColumn.javaField} + '"的数据项?').then(()=>{
162   - return ${simpleClassName}Api.delete${subSimpleClassName}(${primaryColumn.javaField});
163   - }).then(() => {
164   - that.getList();
165   - that.#[[$modal]]#.msgSuccess("删除成功");
166   - }).catch(() => {});
  157 + await ${simpleClassName}Api.delete${subSimpleClassName}(${primaryColumn.javaField});
  158 + await this.getList();
  159 + this.#[[$modal]]#.msgSuccess("删除成功");
167 160 } catch {}
168 161 },
169 162 #end
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/form.vue.vm
... ... @@ -195,18 +195,16 @@
195 195 },
196 196 methods: {
197 197 /** 打开弹窗 */
198   - open(id) {
  198 + async open(id) {
199 199 this.dialogVisible = true;
200 200 this.reset();
201   - const that = this;
202 201 // 修改时,设置数据
203 202 if (id) {
204 203 this.formLoading = true;
205 204 try {
206   - ${simpleClassName}Api.get${simpleClassName}(id).then(res=>{
207   - that.formData = res.data;
208   - that.title = "修改${table.classComment}";
209   - })
  205 + const res = await ${simpleClassName}Api.get${simpleClassName}(id);
  206 + this.formData = res.data;
  207 + this.title = "修改${table.classComment}";
210 208 } finally {
211 209 this.formLoading = false;
212 210 }
... ... @@ -218,111 +216,66 @@
218 216 #end
219 217 },
220 218 /** 提交按钮 */
221   - submitForm() {
  219 + async submitForm() {
  220 + // 校验主表
  221 + await this.$refs["formRef"].validate();
  222 + ## 特殊:主子表专属逻辑
  223 + #if ( $table.templateType == 10 || $table.templateType == 12 )
  224 + #if ( $subTables && $subTables.size() > 0 )
  225 + // 校验子表
  226 + #foreach ($subTable in $subTables)
  227 + #set ($index = $foreach.count - 1)
  228 + #set ($subClassNameVar = $subClassNameVars.get($index))
  229 + try {
  230 + ## 代码生成后会替换为正确的 refs
  231 + await this.refs['${subClassNameVar}FormRef'].validate();
  232 + } catch (e) {
  233 + this.subTabsName = '${subClassNameVar}';
  234 + return;
  235 + }
  236 + #end
  237 + #end
  238 + #end
222 239 this.formLoading = true;
223 240 try {
224   - const that = this;
225   - let data = this.formData;
226   - let validate = false;
227   - // 校验主表
228   - this.getRef("formRef").validate(valid => {
229   - validate = valid;
230   - });
  241 + const data = this.formData;
231 242 ## 特殊:主子表专属逻辑
232 243 #if ( $table.templateType == 10 || $table.templateType == 12 )
233 244 #if ( $subTables && $subTables.size() > 0 )
234   - // 校验子表
235   - this.validateSubFrom01().then(() => {
236   - // 全部校验通过-拼接子表的数据
237 245 // 拼接子表的数据
238   - #foreach ($subTable in $subTables)
239   - #set ($index = $foreach.count - 1)
240   - #set ($subClassNameVar = $subClassNameVars.get($index))
241   - data.${subClassNameVar}#if ( $subTable.subJoinMany)s#end = that.getRef('${subClassNameVar}FormRef').getData();
242   - #end
243   - }).catch((err) => {
244   - validate = false;
245   - that.subTabsName = err.replace("FormRef", ""); // 定位到没有校验通过的子表单
246   - })
  246 + #foreach ($subTable in $subTables)
  247 + #set ($index = $foreach.count - 1)
  248 + #set ($subClassNameVar = $subClassNameVars.get($index))
  249 + data.${subClassNameVar}#if ( $subTable.subJoinMany)s#end = this.refs['${subClassNameVar}FormRef'].getData();
  250 + #end
247 251 #end
248 252 #end
249   - // 所有表单校验通过后方可提交
250   - if (!validate) {
251   - return;
252   - }
253 253 // 修改的提交
254 254 if (data.${primaryColumn.javaField}) {
255   - ${simpleClassName}Api.update${simpleClassName}(data).then(response => {
256   - that.#[[$modal]]#.msgSuccess("修改成功");
257   - that.dialogVisible = false;
258   - that.#[[$]]#emit('success');
259   - });
  255 + await ${simpleClassName}Api.update${simpleClassName}(data);
  256 + this.#[[$modal]]#.msgSuccess("修改成功");
  257 + this.dialogVisible = false;
  258 + this.#[[$]]#emit('success');
260 259 return;
261 260 }
262 261 // 添加的提交
263   - ${simpleClassName}Api.create${simpleClassName}(data).then(response => {
264   - that.#[[$modal]]#.msgSuccess("新增成功");
265   - that.dialogVisible = false;
266   - that.#[[$]]#emit('success');
267   - });
  262 + await ${simpleClassName}Api.create${simpleClassName}(data);
  263 + this.#[[$modal]]#.msgSuccess("新增成功");
  264 + this.dialogVisible = false;
  265 + this.#[[$]]#emit('success');
268 266 }finally {
269 267 this.formLoading = false;
270 268 }
271 269 },
272   - getRef(refName){
273   - return this.#[[$]]#refs[refName];
274   - },
275   -## 特殊:主子表专属逻辑
276   -#if ( $table.templateType == 10 || $table.templateType == 12 )
277   -#if ( $subTables && $subTables.size() > 0 )
278   - /** 校验子表单 */
279   - validateSubFrom(item) {
280   - return new Promise((resolve, reject) => {
281   - this.getRef(item).validate()
282   - .then(() => {
283   - resolve();
284   - })
285   - .catch(() => {
286   - reject(item);
287   - })
288   - })
289   - },
290   - /** 校验所有子表单 */
291   - validateSubFrom01() {
292   - // 需要校验的表单 ref
293   - const validFormRefArr = [
294   - #foreach ($subTable in $subTables)
295   - #set ($index = $foreach.count - 1)
296   - #set ($subClassNameVar = $subClassNameVars.get($index))
297   - "${subClassNameVar}FormRef",
298   - #end
299   - ];
300   - const validArr = []; // 校验
301   - for (const item of validFormRefArr) {
302   - validArr.push(this.validateSubFrom(item));
303   - }
304   - return new Promise((resolve, reject) => {
305   - // 校验所有
306   - Promise.all(validArr).then(() => {
307   - resolve();
308   - }).catch((err) => {
309   - reject(err);
310   - })
311   - })
312   - },
313   -#end
314   -#end
315 270 ## 特殊:树表专属逻辑
316 271 #if ( $table.templateType == 2 )
317 272 /** 获得${table.classComment}树 */
318   - get${simpleClassName}Tree() {
319   - const that = this;
320   - that.${classNameVar}Tree = [];
321   - ${simpleClassName}Api.get${simpleClassName}List().then(res=>{
322   - const root = { id: 0, name: '顶级${table.classComment}', children: [] };
323   - root.children = this.handleTree(res.data, 'id', '${treeParentColumn.javaField}')
324   - that.${classNameVar}Tree.push(root)
325   - });
  273 + async get${simpleClassName}Tree() {
  274 + this.${classNameVar}Tree = [];
  275 + const res = await ${simpleClassName}Api.get${simpleClassName}List();
  276 + const root = { id: 0, name: '顶级${table.classComment}', children: [] };
  277 + root.children = this.handleTree(res.data, 'id', '${treeParentColumn.javaField}')
  278 + this.${classNameVar}Tree.push(root)
326 279 },
327 280 #end
328 281 ## 特殊:树表专属逻辑
... ... @@ -361,7 +314,7 @@
361 314 #end
362 315 };
363 316 this.resetForm("formRef");
364   - },
  317 + }
365 318 }
366 319 };
367 320 </script>
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm
... ... @@ -262,19 +262,17 @@ export default {
262 262 },
263 263 methods: {
264 264 /** 查询列表 */
265   - getList() {
  265 + async getList() {
266 266 try {
267 267 this.loading = true;
268 268 ## 特殊:树表专属逻辑(树不需要分页接口)
269 269 #if ( $table.templateType == 2 )
270   - ${simpleClassName}Api.get${simpleClassName}List(this.queryParams).then(response => {
271   - this.list = this.handleTree(response.data, 'id', '${treeParentColumn.javaField}');
272   - })
  270 + const res = await ${simpleClassName}Api.get${simpleClassName}List(this.queryParams);
  271 + this.list = this.handleTree(res.data, 'id', '${treeParentColumn.javaField}');
273 272 #else
274   - ${simpleClassName}Api.get${simpleClassName}Page(this.queryParams).then(response => {
275   - this.list = response.data.list;
276   - this.total = response.data.total;
277   - });
  273 + const res = await ${simpleClassName}Api.get${simpleClassName}Page(this.queryParams);
  274 + this.list = res.data.list;
  275 + this.total = res.data.total;
278 276 #end
279 277 } finally {
280 278 this.loading = false;
... ... @@ -295,31 +293,25 @@ export default {
295 293 this.#[[$]]#refs["formRef"].open(id);
296 294 },
297 295 /** 删除按钮操作 */
298   - handleDelete(row) {
299   - const that = this;
300   - try {
  296 + async handleDelete(row) {
301 297 const ${primaryColumn.javaField} = row.${primaryColumn.javaField};
302   - this.#[[$modal]]#.confirm('是否确认删除${table.classComment}编号为"' + ${primaryColumn.javaField} + '"的数据项?').then(()=>{
303   - return ${simpleClassName}Api.delete${simpleClassName}(${primaryColumn.javaField});
304   - }).then(() => {
305   - that.getList();
306   - that.#[[$modal]]#.msgSuccess("删除成功");
307   - }).catch(() => {});
  298 + await this.#[[$modal]]#.confirm('是否确认删除${table.classComment}编号为"' + ${primaryColumn.javaField} + '"的数据项?')
  299 + try {
  300 + await ${simpleClassName}Api.delete${simpleClassName}(${primaryColumn.javaField});
  301 + this.getList();
  302 + this.#[[$modal]]#.msgSuccess("删除成功");
308 303 } catch {}
309 304 },
310 305 /** 导出按钮操作 */
311   - handleExport() {
312   - const that = this;
  306 + async handleExport() {
  307 + await this.#[[$modal]]#.confirm('是否确认导出所有${table.classComment}数据项?');
313 308 try {
314   - this.#[[$modal]]#.confirm('是否确认导出所有${table.classComment}数据项?').then(() => {
315   - that.exportLoading = true;
316   - return ${simpleClassName}Api.export${simpleClassName}Excel(params);
317   - }).then(response => {
318   - that.#[[$]]#download.excel(response, '${table.classComment}.xls');
319   - });
  309 + this.exportLoading = true;
  310 + const res = await ${simpleClassName}Api.export${simpleClassName}Excel(this.queryParams);
  311 + this.#[[$]]#download.excel(res.data, '${table.classComment}.xls');
320 312 } catch {
321 313 } finally {
322   - that.exportLoading = false;
  314 + this.exportLoading = false;
323 315 }
324 316 },
325 317 ## 特殊:主子表专属逻辑
... ...