"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[2531],{12531:function(A,y,a){a.r(y),a.d(y,{addData:function(){return c},batchGenCode:function(){return G},genCode:function(){return I},getGenCode:function(){return j},getGenCodeList:function(){return w},importTables:function(){return p},previewCode:function(){return B},queryTableList:function(){return M},removeData:function(){return T},syncDbInfo:function(){return W},updateData:function(){return l}});var E=a(97857),g=a.n(E),v=a(15009),r=a.n(v),P=a(99289),o=a.n(P),_=a(76772),C=a(30964);function w(n){return f.apply(this,arguments)}function f(){return f=o()(r()().mark(function n(t){var s;return r()().wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return s=new URLSearchParams(t).toString(),d.abrupt("return",(0,_.request)("/api/code/gen/list?".concat(s),{data:t,method:"get",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 2:case"end":return d.stop()}},n)})),f.apply(this,arguments)}function j(n){return h.apply(this,arguments)}function h(){return h=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,_.request)("/api/code/gen/".concat(t),{method:"get",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},n)})),h.apply(this,arguments)}function M(n){return i.apply(this,arguments)}function i(){return i=o()(r()().mark(function n(t){var s;return r()().wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return s=new URLSearchParams(t).toString(),d.abrupt("return",(0,_.request)("/api/code/gen/db/list?".concat(s),{data:t,method:"get",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 2:case"end":return d.stop()}},n)})),i.apply(this,arguments)}function p(n){return u.apply(this,arguments)}function u(){return u=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,_.request)("/api/code/gen/importTable?tables=".concat(t),{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},n)})),u.apply(this,arguments)}function T(n){return b.apply(this,arguments)}function b(){return b=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,_.request)("/api/code/gen/".concat(t.ids),{method:"delete",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},n)})),b.apply(this,arguments)}function c(n){return m.apply(this,arguments)}function m(){return m=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,_.request)("/api/code/gen",{method:"POST",data:g()({},t)}));case 1:case"end":return e.stop()}},n)})),m.apply(this,arguments)}function l(n){return D.apply(this,arguments)}function D(){return D=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,_.request)("/api/code/gen",{method:"PUT",data:g()({},t)}));case 1:case"end":return e.stop()}},n)})),D.apply(this,arguments)}function W(n){return O.apply(this,arguments)}function O(){return O=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,_.request)("/api/code/gen/synchDb/".concat(t),{method:"GET"}));case 1:case"end":return e.stop()}},n)})),O.apply(this,arguments)}function I(n){return L.apply(this,arguments)}function L(){return L=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,_.request)("/api/code/gen/genCode/".concat(t),{method:"GET"}));case 1:case"end":return e.stop()}},n)})),L.apply(this,arguments)}function G(n){return U.apply(this,arguments)}function U(){return U=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,C.p6)("/api/code/gen/batchGenCode?tables=".concat(t)));case 1:case"end":return e.stop()}},n)})),U.apply(this,arguments)}function B(n){return R.apply(this,arguments)}function R(){return R=o()(r()().mark(function n(t){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,_.request)("/api/code/gen/preview/".concat(t),{method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},n)})),R.apply(this,arguments)}},30964:function(A,y,a){a.d(y,{p6:function(){return f},su:function(){return j}});var E=a(15009),g=a.n(E),v=a(97857),r=a.n(v),P=a(99289),o=a.n(P),_=a(76772),C={xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",zip:"application/zip"};function w(i,p){var u=document.createElement("a"),T=new Blob([i.data],{type:p}),b=new RegExp("filename=([^;]+\\.[^\\.;]+);*"),c=decodeURI(i.headers["content-disposition"]),m=b.exec(c),l=m?m[1]:"file";l=l.replace(/"/g,""),u.style.display="none",u.href=URL.createObjectURL(T),u.setAttribute("download",l),document.body.appendChild(u),u.click(),URL.revokeObjectURL(u.href),document.body.removeChild(u)}function f(i){(0,_.request)(i,{method:"GET",responseType:"blob",getResponse:!0}).then(function(p){w(p,C.zip)})}function j(i,p,u){return h.apply(this,arguments)}function h(){return h=o()(g()().mark(function i(p,u,T){return g()().wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return c.abrupt("return",(0,_.request)(p,r()(r()({},u),{},{method:"POST",responseType:"blob"})).then(function(m){var l=document.createElement("a"),D=m;l.style.display="none",l.href=URL.createObjectURL(D),l.setAttribute("download",T),document.body.appendChild(l),l.click(),URL.revokeObjectURL(l.href),document.body.removeChild(l)}));case 1:case"end":return c.stop()}},i)})),h.apply(this,arguments)}function M(i){window.location.href="/api/common/download?fileName=".concat(encodeURI(i),"&delete=",!0)}}}]);
