sd-data-grid 1.2.71 → 1.2.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/component/data-grid/custom-query/index.js","webpack:///./src/component/data-grid/custom-query/runtime.js","webpack:///./src/component/data-grid/custom-query/api/mock-api.js","webpack:///src/component/data-grid/custom-query/pages/config-page.vue","webpack:///src/component/data-grid/custom-query/views/query-config.vue","webpack:///src/component/data-grid/custom-query/components/save-template-modal.vue","webpack:///./src/component/data-grid/custom-query/components/script-modal.vue","webpack:///src/component/data-grid/custom-query/components/script-modal.vue","webpack:///src/component/data-grid/custom-query/pages/history-page.vue","webpack:///src/component/data-grid/custom-query/views/template-history.vue","webpack:///src/component/data-grid/custom-query/pages/result-page.vue","webpack:///src/component/data-grid/custom-query/views/query-result.vue","webpack:///./src/component/data-grid/custom-query/routes.js","webpack:///./src/component/data-grid/custom-query/api/real-api.js","webpack:///./src/store/index.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./src/component/data-grid/custom-query/pages/config-page.vue","webpack:///./src/component/data-grid/custom-query/pages/config-page.vue?fa28","webpack:///./src/component/data-grid/custom-query/pages/config-page.vue?4850","webpack:///./src/component/data-grid/custom-query/views/query-config.vue","webpack:///./src/component/data-grid/custom-query/views/query-config.vue?fa3c","webpack:///./src/component/data-grid/custom-query/views/query-config.vue?71ee","webpack:///./src/component/data-grid/custom-query/components/save-template-modal.vue","webpack:///./src/component/data-grid/custom-query/components/save-template-modal.vue?85cf","webpack:///./src/component/data-grid/custom-query/components/save-template-modal.vue?9d44","webpack:///./src/component/data-grid/custom-query/components/save-template-modal.vue?354b","webpack:///./src/component/data-grid/custom-query/components/script-modal.vue?5144","webpack:///./src/component/data-grid/custom-query/components/script-modal.vue?35dd","webpack:///./src/component/data-grid/custom-query/components/script-modal.vue?f41c","webpack:///./src/component/data-grid/custom-query/views/query-config.vue?01b0","webpack:///./src/component/data-grid/custom-query/pages/config-page.vue?bac1","webpack:///./src/component/data-grid/custom-query/pages/history-page.vue","webpack:///./src/component/data-grid/custom-query/pages/history-page.vue?e5af","webpack:///./src/component/data-grid/custom-query/pages/history-page.vue?0534","webpack:///./src/component/data-grid/custom-query/views/template-history.vue","webpack:///./src/component/data-grid/custom-query/views/template-history.vue?c567","webpack:///./src/component/data-grid/custom-query/views/template-history.vue?8e85","webpack:///./src/component/data-grid/custom-query/views/template-history.vue?9fad","webpack:///./src/component/data-grid/custom-query/pages/history-page.vue?e24b","webpack:///./src/component/data-grid/custom-query/pages/result-page.vue","webpack:///./src/component/data-grid/custom-query/pages/result-page.vue?f729","webpack:///./src/component/data-grid/custom-query/pages/result-page.vue?745c","webpack:///./src/component/data-grid/custom-query/views/query-result.vue","webpack:///./src/component/data-grid/custom-query/views/query-result.vue?d219","webpack:///./src/component/data-grid/custom-query/views/query-result.vue?22ff","webpack:///./src/component/data-grid/custom-query/views/query-result.vue?f869","webpack:///./src/component/data-grid/custom-query/pages/result-page.vue?91f7"],"names":[],"mappings":";;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B,oCAAoC,OAAO;AAC3C;AACA,aAAa,oBAAoB;AACjC,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA;AACoE;AACU;AACzC;;AAErC;AACe,+HAAe,EAAC;;;;;;;;;;ACtB/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACqC;AACA;;AAErC;AACO;AACP;AACA;AACA;;AAEA;AACA,EAAS;AACT;AACA;AACA;;AAEA;AACA,EAAS;;AAET;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,OAAO,kBAAkB;AACpC;AACO;AACP;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;;AAEA;AACA,iCAAiC,EAAE,8DAAO,EAAE,8DAAO;;AAEnD;AACA;AACA,WAAW,OAAO;AAClB;AACO;AACP,+BAA+B,EAAE,8DAAO,EAAE,8DAAO,WAAW;AAC5D;;AAEA;AACO;AACP;AACA,C;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,WAAW;AACzE,8DAA8D,gBAAgB;AAC9E,8DAA8D,YAAY;AAC1E,8DAA8D,YAAY;AAC1E,6DAA6D,mBAAmB;AAChF,6DAA6D,WAAW;AACxE,sBAAsB,wBAAwB,eAAe,WAAW;AACxE,6DAA6D,QAAQ;AACrE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA,yBAAyB,4CAA4C,GAAG,gCAAgC,GAAG,8BAA8B,GAAG,8BAA8B;;AAE1K;AACA,cAAc,4CAA4C,GAAG,4CAA4C,GAAG,sCAAsC,GAAG,sCAAsC,GAAG,6EAA6E,GAAG,yCAAyC,GAAG,yCAAyC,GAAG,4CAA4C,GAAG,oEAAoE,GAAG,+DAA+D,GAAG,4CAA4C,GAAG,4CAA4C;AACznB,UAAU,4CAA4C,GAAG,yCAAyC,GAAG,4CAA4C,GAAG,iEAAiE;AACrN,UAAU,4CAA4C,GAAG,4CAA4C,GAAG,4CAA4C,GAAG,+DAA+D;AACtN,UAAU,4CAA4C,GAAG,4CAA4C,GAAG,4CAA4C;AACpJ;;AAEA,uBAAuB,2BAA2B,GAAG,4BAA4B,GAAG,2BAA2B,GAAG,2BAA2B,GAAG,6BAA6B,GAAG,6BAA6B,GAAG,6BAA6B,GAAG,gCAAgC;;AAEhR,uBAAuB,4BAA4B,GAAG,2BAA2B;;AAEjF,uBAAuB,8NAA8N,GAAG,kLAAkL,GAAG,mLAAmL,GAAG,sMAAsM,GAAG,kMAAkM,GAAG,gLAAgL;;AAEjqC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mBAAmB,mCAAmC;AACtD;AACA;AACA,kBAAkB,6CAA6C;AAC/D,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kBAAkB,wBAAwB;AAC1C,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,kBAAkB,mFAAmF;AACrG,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,kBAAkB,gBAAgB;AAClC,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,0CAA0C;AAC1C,GAAG;AACH;AACA;;AAEA,mHAAmH;AACnH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEe,gEAAO,E;;;;;;;;;;;;;;;;;;;;;;;ACzJtB;AACA;;AAEA;AACA,kCADA;AAEA,uGAFA;AAGA,MAHA,kBAGA;AACA;AACA,cADA;AAEA,oBAFA;AAGA,sBAHA;AAIA;AAJA;AAMA,GAVA;AAWA,SAXA,qBAWA;AACA;AACA;AACA;AACA,GAfA;;AAgBA;AACA,aADA,qBACA,OADA,EACA;AACA;AACA;AACA,MAAM,2EAAiB,CAAvB;AACA,KALA;AAMA,aANA,uBAMA;AACA,MAAM,2EAAiB,CAAvB;AACA;AARA;AAhBA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC4HA;AACA;;AAEA;AACA,sBADA;AAEA;AACA,2GADA;AAEA;AAFA,GAFA;AAMA;AACA;AACA,kBADA;AAEA;AAFA,KADA;AAKA;AACA,kBADA;AAEA;AAFA,KALA;AASA;AACA;AACA,kBADA;AAEA;AAFA,KAVA;AAcA;AACA;AACA,kBADA;AAEA;AAFA;AAfA,GANA;AA0BA,MA1BA,kBA0BA;AACA;AACA,sBADA;AAEA,gBAFA;AAGA,oBAHA;AAIA,kBAJA;AAKA;AACA,mBACA,4BADA,EAEA,4BAFA,EAGA,0BAHA,EAIA,4BAJA,EAKA,0BALA,EAMA,0BANA,EAOA,sCAPA,CANA;AAeA,kBACA,6BADA,EAEA,gCAFA,EAGA,8BAHA,EAIA,sCAJA,EAKA,iCALA,CAfA;AAsBA,mBAtBA,EAsBA;AACA,oBAvBA;AAwBA,uBAxBA;AAyBA,qBAzBA,EAyBA;AACA,kCA1BA,EA0BA;AACA,0BA3BA;AA4BA,qBA5BA;AA6BA,4BA7BA,EA6BA;AACA,2BA9BA,EA8BA;AACA;AACA;AACA,iBADA;AAEA,mBAFA;AAGA,iBAHA;AAIA,oBAJA;AAKA,iBALA;AAMA,oBANA;AAOA,kBAPA;AAQA,uBARA;AASA,wBATA;AAUA,iBAVA;AAWA,qBAXA;AAYA,qBAZA;AAaA,oBAbA;AAcA,wBAdA;AAeA;AAfA,OAhCA;AAiDA;AAjDA;AAmDA,GA9EA;;AA+EA;AACA;AACA,iBAFA,2BAEA;AACA;AACA,KAJA;;AAKA;AACA,gBANA,0BAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA,GA/EA;AAgGA;AACA;AACA,iBAFA,2BAEA;AACA;AACA,KAJA;;AAKA;AACA,gBANA,wBAMA,MANA,EAMA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAbA,GAhGA;AA+GA,SA/GA,qBA+GA;AACA;AACA;AACA;AACA,GAnHA;;AAoHA;AACA;AACA,eAFA,yBAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAVA;AAWA,YAXA,sBAWA;AAAA;;AACA;AAAA;AAAA;AAAA;;AACA;AACA;AACA;AACA;AACA,SAFA,MAEA;AACA;AACA;AACA,OARA;AASA,KArBA;AAsBA,gBAtBA,0BAsBA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAHA,MAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA,sCADA;AAEA,0CAFA;AAGA,4BAHA;AAIA,yDAJA;AAKA;AALA;AAAA;AAOA,4CACA,IADA,GAEA,8EAFA;AAGA;AACA;AACA,SAdA;AAeA,OAzCA;AA0CA,KArEA;AAsEA,cAtEA,sBAsEA,SAtEA,EAsEA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAHA;AAIA,KA9EA;;AA+EA;AACA,mBAhFA,2BAgFA,KAhFA,EAgFA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA,KAvFA;AAwFA,iBAxFA,yBAwFA,GAxFA,EAwFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OALA;AAMA;AACA;AACA;AACA,KAnGA;;AAoGA;AACA,iBArGA,yBAqGA,GArGA,EAqGA;AACA;AACA;AACA,KAxGA;;AAyGA;AACA,mBA1GA,2BA0GA,GA1GA,EA0GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAjHA;;AAkHA;AACA,oBAnHA,4BAmHA,GAnHA,EAmHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA1IA;;AA2IA;AACA,aA5IA,qBA4IA,GA5IA,EA4IA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA,KAlJA;;AAmJA;AACA,gBApJA,wBAoJA,GApJA,EAoJA;AACA;AACA;AACA,KAvJA;AAwJA,gBAxJA,0BAwJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA/JA;AAgKA,mBAhKA,2BAgKA,KAhKA,EAgKA;AACA;AACA,KAlKA;;AAmKA;AACA,oBApKA,4BAoKA,OApKA,EAoKA;AACA;AAAA;AAAA;AACA,KAtKA;;AAuKA;AACA,uBAxKA,iCAwKA;AAAA;;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA,KA9KA;AA+KA,YA/KA,sBA+KA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KA1LA;;AA2LA;AACA,aA5LA,qBA4LA,SA5LA,EA4LA;AACA;AAAA;AAAA;AACA;AACA,KA/LA;;AAgMA;AACA,kBAjMA,4BAiMA;AACA;AAAA;AAAA;AACA,uCACA,MADA,CACA;AAAA;AAAA,OADA,EAEA,GAFA,CAEA;AAAA;AACA,gCADA;AAEA,kBAFA;AAGA,wBAHA;AAIA;AAJA;AAAA,OAFA;AAQA;AACA,6EADA;AAEA,8CAFA;AAGA,8BAHA;AAIA,oBAJA;AAKA;AALA;AAOA,KAlNA;AAmNA,gBAnNA,0BAmNA;AAAA;;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA,OAHA;AAIA;AACA;AAAA;AAAA;AACA;AACA,OAHA;AAIA,6CACA,MADA,CACA;AAAA;AAAA,OADA,EAEA,GAFA,CAEA;AACA;AAAA;AAAA;AACA;AACA,OALA;AAMA;AAAA;AAAA;AACA;AACA,yBADA;AAEA,uBAFA;AAGA,mEAHA;AAIA;AAAA;AAAA,UAJA;AAKA,8BALA;AAMA,0CANA;AAOA;AACA,kDARA;AASA;AATA;AAWA,KA/OA;;AAgPA;AACA,sBAjPA,8BAiPA,GAjPA,EAiPA;AACA;AACA;AACA;AACA;AACA;AACA,KAvPA;;AAwPA;AACA,aAzPA,qBAyPA,EAzPA,EAyPA;AACA;AACA,KA3PA;;AA4PA;AACA,gBA7PA,wBA6PA,KA7PA,EA6PA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA,KAnQA;;AAoQA;AACA;AACA;AACA,uBAvQA,iCAuQA;AAAA;;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAZA;AAaA;AACA,KAxRA;AAyRA,WAzRA,qBAyRA;AACA;AACA;AACA;AACA;AACA;AACA,KA/RA;;AAgSA;AACA,cAjSA,wBAiSA;AACA;AACA;AACA;AACA;AACA;AACA,KAvSA;AAwSA,iBAxSA,2BAwSA;AACA;AACA;AACA;AACA;AACA,yBADA;AAEA,iCAFA;AAGA,iCAHA;AAIA,uCAJA;AAKA;AALA;AAOA;AACA,KApTA;AAqTA,mBArTA,6BAqTA;AACA;AACA;AAvTA;AApHA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxHA;AACA,6BADA;AAEA;AACA;AACA,mBADA;AAEA;AAFA,KADA;AAKA;AACA,kBADA;AAEA;AAFA,KALA;AASA;AACA;AACA,kBADA;AAEA,aAFA,sBAEA;AACA;AACA;AAJA;AAVA,GAFA;AAmBA,MAnBA,kBAmBA;AACA;AACA,yBADA;AAEA,mBAFA;AAGA;AACA,gBADA;AAEA;AAFA,OAHA;AAOA;AACA;AADA;AAPA;AAWA,GA/BA;;AAgCA;AACA,SADA,iBACA,GADA,EACA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SANA;AAOA;AACA,KAbA;AAcA,WAdA,mBAcA,GAdA,EAcA;AACA;AACA;AAhBA,GAhCA;AAkDA;AACA,YADA,sBACA;AACA;AACA,KAHA;AAIA,aAJA,uBAIA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA,mBACA,iBADA,CACA;AACA,qCADA;AAEA,qCAFA;AAGA,wCAHA;AAIA,oCAJA;AAKA;AACA,6DANA;AAOA;AAPA,SADA,EAUA,IAVA,CAUA;AACA;AACA;AACA;AACA;AACA;AACA,WAJA,MAIA;AACA;AACA;AACA,SAnBA,EAoBA,KApBA,CAoBA;AACA;AACA;AACA,SAvBA;AAwBA,OA7BA;AA8BA;AAnCA;AAlDA,G;;;;;;;ACxBA;AAAA;AAAA;AAAA;AACA,EAAE,mBAAO,CAAC,GAAqX;AAC/X;AACA,yBAAyB,mBAAO,CAAC,CAAkE;AACnG;AACmL;AACa;AAChM;AACwU;AACxU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iLAAc;AAChB,EAAE,6QAAgB;AAClB;AACA;AACA;AACA;AACA;;AAEe,0EAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACahC;AACA,sBADA;AAEA;AACA;AACA,mBADA;AAEA;AAFA,KADA;AAKA;AACA,kBADA;AAEA;AAFA,KALA;AASA;AACA;AACA,mCADA;AAEA;AAFA,KAVA;AAcA;AACA;AACA,kBADA;AAEA;AAFA;AAfA,GAFA;AAsBA,MAtBA,kBAsBA;AACA;AACA,yBADA;AAEA,oBAFA;AAGA,sBAHA;AAIA,aAJA;AAKA;AALA;AAOA,GA9BA;;AA+BA;AACA,SADA,iBACA,GADA,EACA;AACA;AACA;AACA;AACA;AACA;AACA,KAPA;AAQA,WARA,mBAQA,GARA,EAQA;AACA;AACA;AAVA,GA/BA;AA2CA;AACA,eADA,yBACA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGACA,IADA,CACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAVA,EAWA,KAXA,CAWA;AACA;AACA;AACA,OAdA;AAeA,KAxBA;AAyBA,QAzBA,gBAyBA,IAzBA,EAyBA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;A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A,eALA;AAMA,kBANA;AAOA,sBAPA,CAOA;AAPA;AASA,GAjCA;;AAkCA;AACA,gBADA,0BACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AALA,GAlCA;AAyCA,SAzCA,qBAyCA;AACA;AACA,GA3CA;AA4CA,SA5CA,qBA4CA;AACA;AACA;AACA,GA/CA;AAgDA,eAhDA,2BAgDA;AACA;AACA,GAlDA;;AAmDA;AACA;AACA,qBAFA,+BAEA;AACA;AACA,KAJA;AAKA,WALA,qBAKA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eACA,YADA,CACA,OADA,EACA,WADA,EACA,aADA,EAEA,IAFA,CAEA;AACA;AACA;AACA;AACA;AACA,mCACA,CADA,MACA;AACA;AACA;AACA;AACA,OAZA,EAaA,KAbA,CAaA;AACA;AACA,OAfA;AAgBA,KA5BA;AA6BA,gBA7BA,wBA6BA,MA7BA,EA6BA;AACA;AACA;AACA,KAhCA;AAiCA,oBAjCA,4BAiCA,IAjCA,EAiCA;AACA;AACA;AACA;AACA,KArCA;AAsCA,eAtCA,yBAsCA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAFA;AAGA;AAlDA;AAnDA,G;;;;;;;AC3BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACwE;;AAExE;;AAEA;AACA,WAAW,OAAO,6DAAW,eAAe,6DAAW,gBAAgB,mCAAmC;AAC1G,aAAa,uFAAwE;AACrF,KAAK,EAAE,GAAG,OAAO,6DAAW,gBAAgB,6DAAW,iBAAiB,oCAAoC;AAC5G,aAAa,uFAAyE;AACtF,KAAK,EAAE,GAAG,OAAO,6DAAW,eAAe,6DAAW,gBAAgB,kCAAkC;AACxG,aAAa,uFAAwE;AACrF,KAAK,EAAE;AACP;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6DAAW;AACjC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,OAAO,UAAU;AAC5B;AACO;AACP;;AAEA;AACA,EAAE,2EAAiB,UAAU,OAAO,6DAAW,kBAAkB,EAAE;AACnE,C;;;;;;;AC1DA;AAAA;AAAA;AAAA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qBAAqB;AAChC;AAC4B;AACR;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,EAAE;AACF;AACA,iCAAiC;AACjC;AACA,+BAA+B;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,uDAAK,0BAA0B,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA,gHAAgH;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uDAAK,0BAA0B,gDAAgD;AAC1F,GAAG;;AAEH,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,WAAW,uDAAK,0BAA0B,4CAA4C;AACtF;AACA,iCAAiC,oCAAoC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uDAAK,0BAA0B,2CAA2C;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,cAAc;AACd,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uDAAK,0BAA0B,kDAAkD;AAC5F,GAAG;;AAEH;AACA,aAAa,UAAU,wBAAwB,eAAe,YAAY;AAC1E,sBAAsB,aAAa,uCAAuC,GAAG;AAC7E,oBAAoB,cAAc,4BAA4B,sBAAsB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uDAAK,0BAA0B,0CAA0C;AACpF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA;AACA;AACA,WAAW,uDAAK,kCAAkC,wCAAwC,0CAAE,wCAAwC;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,2FAA2F;AAC3F;AACA,WAAW,uDAAK,0BAA0B,0CAA0C;AACpF;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEe,gEAAO,E;;;;;;;AC5WtB;AAAA;AAAA;AAAsB;AACE;;AAExB,2CAAG,KAAK,qDAAI;;AAEG,6DAAI,qDAAI,QAAQ,E;;;;;;;ACL/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yBAAyB;AACxC,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG,GAAG,gBAAgB;;AAEtB;AACA;AACA,GAAG,GAAG,gBAAgB;AACtB;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B,EAAE;AACvE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,cAAc,qBAAqB;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,KAAqC;AAC5C;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO,KAAqC;AAC5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,oCAAoC,EAAE;AAClE;AACA;;AAEA;AACA,4BAA4B;AAC5B,uEAAuE,EAAE;AACzE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;;AAE1B;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;;AAER;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,uBAAuB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS,qBAAqB;;AAE1D;AACA;AACA;;AAEA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA,SAAS,KAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,6BAA6B,oCAAoC,EAAE;;AAEnE;AACA,IAAI,KACyB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA,SAAS,KAAqC;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,mBAAmB,EAAE;AACnD,+BAA+B,yCAAyC,EAAE;AAC1E,GAAG;AACH,SAAS,KAAqC;AAC9C;AACA;AACA;AACA;;AAEA;AACA,gDAAgD,yBAAyB,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB,EAAE;AACtD,mCAAmC,wCAAwC,EAAE;AAC7E,OAAO;AACP,aAAa,KAAqC;AAClD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kBAAkB,EAAE;AACtD,mCAAmC,+CAA+C,EAAE;AACpF,OAAO;AACP,aAAa,KAAqC;AAClD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,yCAAyC,aAAa;AACtD;AACA;;AAEA;AACA;;AAEA,OAAO,KAAqC;AAC5C;AACA;AACA,6CAA6C,6CAA6C,EAAE;AAC5F;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,iCAAiC,eAAe;;AAEhD,OAAO,KAAqC;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,eAAe;;AAEhD,OAAO,KAAqC;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iCAAiC,eAAe;;AAEhD,OAAO,KAAqC;AAC5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB,EAAE;AACjD;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,8BAA8B,yBAAyB,EAAE;AACzD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,YAAoB;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAqC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,KAAgE;AAC5E;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,KAAkE;AAC9E;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C,uBAAuB,2CAA2C;AAClE,KAAK;AACL;AACA,wBAAwB,0CAA0C;AAClE;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B,EAAE;AACxD;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,SAAS,KAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,4BAA4B;AAC5D,SAAS,KAAqC;AAC9C;AACA;AACA,GAAG,GAAG,yBAAyB;AAC/B;;AAEA;AACA,4CAA4C,mBAAmB,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAqC;AAC5C;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA,SAAS,KAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW;AACX;AACA;AACA;AACA,MAAM,KAA8D;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,MAAM,KAAiE;AACvE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,MAAM,KAA+D;AACrE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAwE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,MAAM,KAA+D;AACrE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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","file":"0.sd-data-grid.js","sourcesContent":["/**\n * 自定义查询 - 组件入口\n *\n * 仅导出轻量函数/常量:入口本身不静态引入任何 .vue 组件,\n * 页面组件均由 routes.js 通过动态 import 代码分割,按需加载(避免打入宿主主包、降低构建内存)。\n *\n * 宿主用法(零路由配置):\n * import { openCustomQuery } from '_c/custom-query'\n * openCustomQuery(this.$router, { mark })\n * 可选注入真实接口(默认 mock):\n * import { setCustomQueryApi } from '_c/custom-query'\n * setCustomQueryApi({ ...realApi })\n *\n * 如需按需使用视图组件(自行组页/一体化内部切换),请直接从子路径引入:\n * import CustomQuery from '_c/custom-query/custom-query.vue'\n * import QueryConfig from '_c/custom-query/views/query-config.vue'\n */\nimport { openCustomQuery, ensureCustomQueryRoutes } from './routes';\nimport { setCustomQueryApi, getCustomQueryApi, ROUTE_NAMES } from './runtime';\nimport mockApi from './api/mock-api';\n\n// 默认导出「打开新页面」入口\nexport default openCustomQuery;\n\nexport { openCustomQuery, ensureCustomQueryRoutes, ROUTE_NAMES, setCustomQueryApi, getCustomQueryApi, mockApi };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/index.js\n// module id = 128\n// module chunks = 0","/**\n * 自定义查询 - 运行时配置\n *\n * 因为路由页由 router 实例化(宿主无法通过模板 props 注入接口),\n * 这里用模块级单例保存接口与传参,宿主只需在启动时可选地调用 setCustomQueryApi 覆盖。\n */\nimport mockApi from './api/mock-api';\nimport realApi from './api/real-api';\n\n// 路由名(宿主无需关心,内部自注册)\nexport var ROUTE_NAMES = {\n config: 'customQuery',\n history: 'customQueryHistory',\n result: 'customQueryResult'\n\n // 路由路径\n};export var ROUTE_PATHS = {\n config: '/com/model/custom-query',\n history: '/com/model/custom-query-history',\n result: '/com/model/custom-query-result'\n\n // 「执行查询」配置页 -> 结果页 传参用 localStorage key(跨新开页面共享,sessionStorage 不随 window.open 传递)\n};export var PAYLOAD_KEY = 'CUSTOM_QUERY_PAYLOAD';\n\n/**\n * 在新页面(新标签页)打开组件内部路由\n * 组件所有跳转均为打开新页面,不在当前页面内切换\n * @param {VueRouter} router 宿主 router 实例\n * @param {Object} location 路由定位对象 { name, query }\n */\nexport function openRouteInNewTab(router, location) {\n if (!router) {\n return;\n }\n var href = router.resolve(location).href; // hash 模式下形如 \"#/com/model/xxx?query\"\n var base = window.location.href.split('#')[0];\n window.open(base + href, '_blank');\n}\n\n// 当前接口实现(默认:真实接口对接的方法 + 其余回退 mock,宿主可再覆盖)\nvar currentApi = Object.assign({}, mockApi, realApi);\n\n/**\n * 宿主注入真实接口(可只覆盖部分方法,未覆盖的回退 mock/内置真实接口)\n * @param {Object} api\n */\nexport function setCustomQueryApi(api) {\n currentApi = Object.assign({}, mockApi, realApi, api || {});\n}\n\n// 获取当前接口\nexport function getCustomQueryApi() {\n return currentApi;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/runtime.js\n// module id = 130\n// module chunks = 0","/**\n * 自定义查询组件 - 内置 mock 接口(默认兜底实现)\n *\n * 说明:这是组件自带的占位实现,便于脱离后端独立运行/演示。\n * 宿主可通过组件的 `api` prop 注入真实接口覆盖同名方法(未注入的自动回退到此 mock)。\n *\n * 接口契约(宿主注入时需保持同样的签名与返回结构):\n * getMainTables(mark) -> Promise<[{name,label}]>\n * getTableFields(tableName) -> Promise<[{name,label,code}]>\n * getOperators() -> Promise<[{value,label}]>\n * getLogicOps() -> Promise<[{value,label}]>\n * executeQuery(payload, pageNo, pageSize) -> Promise<{rows,total,columns}>\n * saveTemplate(payload) -> Promise<{success,id}>\n * getTemplatePage({keyword,pageNo,pageSize}) -> Promise<{rows,total}>\n * deleteTemplate(id) -> Promise<{success}>\n * getTemplateDetail(id) -> Promise<template|null>\n */\n\nfunction delay(data) {\n var ms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n\n return new Promise(function (resolve) {\n return setTimeout(function () {\n return resolve(data);\n }, ms);\n });\n}\n\nvar MOCK_MAIN_TABLES = [{ name: 'ryjbxxzb', label: '人员基本信息总表(排第一位)' }, { name: 'jbxx', label: '监室基本信息' }, { name: 'ajxx', label: '案件信息' }, { name: 'ssxx', label: '诉讼信息' }];\n\nvar MOCK_TABLE_FIELDS = {\n ryjbxxzb: [{ name: 'jsbh', label: '监所编号', code: 'jsbh' }, { name: 'rybh', label: '人员编号', code: 'rybh' }, { name: 'xm', label: '姓名', code: 'xm' }, { name: 'zw', label: '职务', code: 'zw' }, { name: 'xb', label: '性别', code: 'xb', fieldType: 'varchar', dicName: 'XBDM' }, { name: 'jsh', label: '监室号', code: 'jsh' }, { name: 'zjh', label: '证件号', code: 'zjh' }, { name: 'ajlb', label: '案件类别', code: 'ajlb' }, { name: 'rssj', label: '入所时间', code: 'rssj', fieldType: 'timestamp' }, { name: 'jyqx', label: '羁押期限', code: 'jyqx', fieldType: 'date' }, { name: 'sshj', label: '诉讼环节', code: 'sshj' }, { name: 'ryzt', label: '人员状态', code: 'ryzt' }],\n jbxx: [{ name: 'jsbh', label: '监所编号', code: 'jsbh' }, { name: 'jsh', label: '监室号', code: 'jsh' }, { name: 'jsmc', label: '监室名称', code: 'jsmc' }, { name: 'rsrs', label: '容纳人数', code: 'rsrs', fieldType: 'number' }],\n ajxx: [{ name: 'ajbh', label: '案件编号', code: 'ajbh' }, { name: 'ajmc', label: '案件名称', code: 'ajmc' }, { name: 'ajlb', label: '案件类别', code: 'ajlb' }, { name: 'larq', label: '立案日期', code: 'larq', fieldType: 'date' }],\n ssxx: [{ name: 'ssbh', label: '诉讼编号', code: 'ssbh' }, { name: 'sshj', label: '诉讼环节', code: 'sshj' }, { name: 'cbdw', label: '承办单位', code: 'cbdw' }]\n};\n\nvar MOCK_OPERATORS = [{ value: 'eq', label: '等于' }, { value: 'ne', label: '不等于' }, { value: 'gt', label: '大于' }, { value: 'lt', label: '小于' }, { value: 'ge', label: '大于等于' }, { value: 'le', label: '小于等于' }, { value: 'like', label: '包含' }, { value: 'between', label: '介于' }];\n\nvar MOCK_LOGIC_OPS = [{ value: 'and', label: '并且' }, { value: 'or', label: '或者' }];\n\nvar MOCK_TEMPLATES = [{ id: '1', name: '2024年度财务凭证查询', description: '按日期范围和凭证类型筛选年度财...', mainTableName: 'fin_voucher', conditionSummary: ['凭证日期 介于 \"2024-01-01 ~ 2024-12-31\"', '凭证类型 等于 \"记账凭证\"', '金额 大于 \"10,000\"'], createTime: '2025-12-20 14:30' }, { id: '2', name: '在职员工信息快速查询', description: '查询当前在职员工的基本信息及部...', mainTableName: 'hr_employee', conditionSummary: ['员工状态 等于 \"在职\"', '部门 等于 \"技术部\"'], createTime: '2025-12-18 09:15' }, { id: '3', name: '项目成本超标预警', description: '筛选预算超支的项目,用于管理层...', mainTableName: 'pm_project', conditionSummary: ['实际成本 大于 \"预算金额\"', '项目状态 等于 \"进行中\"'], createTime: '2025-12-15 16:00' }, { id: '4', name: '供应商付款账明细', description: '按应商查询未结清的应付账款', mainTableName: 'ap_invoice', conditionSummary: ['付款状态 等于 \"未付\"', '发票日期 大于等于 \"2025-01-01\"', '供应商名称 包含 \"科技\"'], createTime: '2025-12-10 11:20' }, { id: '5', name: '销售合同到期提醒', description: '查询未来30天内到期的销售合同列表', mainTableName: 'crm_contract', conditionSummary: ['合同到期日 介于 \"today ~ today+30d\"', '合同状态 等于 \"生效中\"'], createTime: '2025-12-05 08:45' }, { id: '6', name: '库存预警商品清单', description: '查询库存量低于安全库存的所有商品', mainTableName: 'wms_product', conditionSummary: ['当前库存 小于 \"安全库存\"', '仓库 等于 \"主仓库\"'], createTime: '2025-12-01 10:00' }];\n\nvar mockApi = {\n getMainTables: function getMainTables() {\n return delay(MOCK_MAIN_TABLES.slice());\n },\n getTableFields: function getTableFields(tableName) {\n return delay((MOCK_TABLE_FIELDS[tableName] || []).slice());\n },\n getOperators: function getOperators() {\n return Promise.resolve(MOCK_OPERATORS.slice());\n },\n getLogicOps: function getLogicOps() {\n return Promise.resolve(MOCK_LOGIC_OPS.slice());\n },\n executeQuery: function executeQuery(payload) {\n var pageNo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var pageSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n\n var showFields = payload && payload.showFields || [];\n var columns = showFields.map(function (f) {\n return { title: f.label, key: f.name };\n });\n var sampleNames = ['张果', '王珊', '李四', '赵力'];\n var gen = {\n xm: function xm() {\n return sampleNames[Math.floor(Math.random() * sampleNames.length)];\n },\n rybh: function rybh() {\n return '11000011320250726090' + Math.floor(Math.random() * 9);\n },\n xb: function xb() {\n return Math.random() > 0.5 ? '男' : '女';\n },\n jsh: function jsh() {\n return '东101';\n },\n zjh: function zjh() {\n return '330783198501134819';\n },\n ajlb: function ajlb() {\n return '贩卖毒品罪';\n },\n rssj: function rssj() {\n return '2025-6-12';\n },\n jyqx: function jyqx() {\n return '2030-6-22';\n },\n sshj: function sshj() {\n return ['刑事拘留', '逮捕', '一审'][Math.floor(Math.random() * 3)];\n },\n ryzt: function ryzt() {\n return Math.random() > 0.5 ? '在所' : '历史';\n },\n jsbh: function jsbh() {\n return 'JS' + Math.floor(Math.random() * 1000);\n }\n };\n var total = 96;\n var rows = [];\n var start = (pageNo - 1) * pageSize;\n\n var _loop = function _loop(i) {\n var row = {};\n columns.forEach(function (col) {\n row[col.key] = gen[col.key] ? gen[col.key]() : '--';\n });\n rows.push(row);\n };\n\n for (var i = 0; i < pageSize && start + i < total; i++) {\n _loop(i);\n }\n return delay({ rows: rows, total: total, columns: columns });\n },\n saveTemplate: function saveTemplate(payload) {\n var id = String(MOCK_TEMPLATES.length + 1);\n MOCK_TEMPLATES.unshift({\n id: id,\n name: payload.name,\n description: payload.description || '',\n mainTableName: payload.mainTableName || '',\n conditionSummary: payload.conditionSummary || [],\n createTime: payload.createTime || ''\n });\n return delay({ success: true, id: id });\n },\n getTemplatePage: function getTemplatePage() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var keyword = (params.keyword || '').trim();\n var list = MOCK_TEMPLATES.slice();\n if (keyword) {\n list = list.filter(function (t) {\n return t.name && t.name.indexOf(keyword) > -1 || t.mainTableName && t.mainTableName.indexOf(keyword) > -1 || t.description && t.description.indexOf(keyword) > -1;\n });\n }\n var pageNo = params.pageNo || 1;\n var pageSize = params.pageSize || 5;\n return delay({ rows: list.slice((pageNo - 1) * pageSize, pageNo * pageSize), total: list.length });\n },\n deleteTemplate: function deleteTemplate(id) {\n MOCK_TEMPLATES = MOCK_TEMPLATES.filter(function (t) {\n return t.id !== id;\n });\n return delay({ success: true });\n },\n getTemplateDetail: function getTemplateDetail(id) {\n var record = MOCK_TEMPLATES.find(function (t) {\n return t.id === id;\n });\n return delay(record ? Object.assign({}, record) : null);\n },\n getQueryScript: function getQueryScript() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var queryJson = typeof params.queryJson === 'string' ? params.queryJson : JSON.stringify(params.queryJson || {}, null, 2);\n return delay({\n success: true,\n sql: 'SELECT *\\nFROM demo_table\\nWHERE 1 = 1\\n AND status = 1',\n debugSql: '-- queryJson:\\n-- ' + queryJson.replace(/\\n/g, '\\n-- ') + '\\nSELECT *\\nFROM demo_table\\nWHERE 1 = 1\\n AND status = 1'\n });\n }\n};\n\nexport default mockApi;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/api/mock-api.js\n// module id = 131\n// module chunks = 0","<template>\n <div class=\"cq-page\">\n <query-config\n :api=\"api\"\n :mark=\"mark\"\n :template-id=\"templateId\"\n :edit-template-name=\"templateName\"\n @execute=\"onExecute\"\n @open-history=\"goHistory\"\n />\n </div>\n</template>\n\n<script>\nimport queryConfig from '../views/query-config.vue'\nimport { getCustomQueryApi, ROUTE_NAMES, PAYLOAD_KEY, openRouteInNewTab } from '../runtime'\n\nexport default {\n name: 'custom-query-config-page',\n components: { queryConfig },\n data() {\n return {\n mark: '',\n templateId: '',\n templateName: '',\n api: getCustomQueryApi()\n }\n },\n created() {\n this.mark = this.$route.query.mark || ''\n this.templateId = this.$route.query.templateId || ''\n this.templateName = this.$route.query.templateName || ''\n },\n methods: {\n onExecute(payload) {\n // 用 localStorage 传参,保证在新开页面可读取\n localStorage.setItem(PAYLOAD_KEY, JSON.stringify(payload))\n openRouteInNewTab(this.$router, { name: ROUTE_NAMES.result, query: { mark: this.mark } })\n },\n goHistory() {\n openRouteInNewTab(this.$router, { name: ROUTE_NAMES.history, query: { mark: this.mark } })\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.cq-page {\n min-height: 100%;\n background: #f0f2f5;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/component/data-grid/custom-query/pages/config-page.vue","<template>\n <div class=\"cq-config\">\n <div class=\"cq-config-main\">\n <!-- 查询条件配置 -->\n <div class=\"cq-panel\">\n <div class=\"cq-panel-head cq-center\">\n <div class=\"cq-panel-title-wrap\">\n <!-- <span class=\"cq-panel-title\"><span class=\"required\">*</span>查询条件配置</span> -->\n <p class=\"cq-panel-title\"><span class=\"required\">*</span>查询模板名称:&nbsp;&nbsp;<Input style=\"width: 200px;\" v-model=\"templateName\" placeholder=\"请输入查询模板名称\" /></p>\n\n </div>\n <div><Button type=\"primary\" size=\"small\" @click=\"lookScript\">查看脚本</Button>&nbsp;\n <Button type=\"primary\" size=\"small\" @click=\"addCondition\">增&nbsp;行</Button>\n </div>\n </div>\n\n <div class=\"cq-panel-body\">\n <table class=\"cq-table\">\n <thead>\n <tr>\n <th style=\"width: 20%\">主表名称</th>\n <th style=\"width: 20%\">主表字段</th>\n <th style=\"width: 15%\">运算关系</th>\n <th style=\"width: 18%\">字段值</th>\n <th style=\"width: 15%\">且/或关系</th>\n <th style=\"width: 12%\">操作</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(row, index) in conditions\" :key=\"index\">\n <td>\n <Select v-model=\"row.tableName\" placeholder=\"请选择\" filterable @on-change=\"onTableChange(row)\" transfer>\n <Option v-for=\"t in tableOptionsFor(index)\" :value=\"t.name\" :key=\"t.name\">{{ t.label }}</Option>\n </Select>\n </td>\n <td>\n <Select v-model=\"row.fieldName\" placeholder=\"请选择\" filterable @on-change=\"onFieldChange(row)\" transfer>\n <Option v-for=\"f in (fieldsMap[row.tableName] || [])\" :value=\"f.name\" :key=\"f.name\">{{ f.label }}</Option>\n </Select>\n </td>\n <td>\n <Select v-model=\"row.op\" placeholder=\"请选择\" filterable transfer>\n <Option v-for=\"o in operatorsForRow(row)\" :value=\"o.value\" :key=\"o.value\">{{ o.label }}</Option>\n </Select>\n </td>\n <td>\n <s-dicgrid\n v-if=\"valueControlType(row) === 'dic'\"\n v-model=\"row.value\"\n :dicName=\"fieldDicName(row)\"\n style=\"width: 100%\"\n />\n <el-date-picker\n v-else-if=\"valueControlType(row) === 'datetime'\"\n type=\"datetime\"\n format=\"yyyy-MM-dd HH:mm:ss\"\n value-format=\"yyyy-MM-dd HH:mm:ss\"\n v-model=\"row.value\"\n placeholder=\"请选择\"\n size=\"small\"\n style=\"width: 100%\"\n />\n <el-date-picker\n v-else-if=\"valueControlType(row) === 'date'\"\n type=\"date\"\n format=\"yyyy-MM-dd\"\n value-format=\"yyyy-MM-dd\"\n v-model=\"row.value\"\n placeholder=\"请选择\"\n size=\"small\"\n style=\"width: 100%\"\n />\n <el-time-picker\n v-else-if=\"valueControlType(row) === 'time'\"\n format=\"HH:mm:ss\"\n value-format=\"HH:mm:ss\"\n v-model=\"row.value\"\n placeholder=\"请选择\"\n size=\"small\"\n style=\"width: 100%\"\n />\n <InputNumber\n v-else-if=\"valueControlType(row) === 'number'\"\n v-model=\"row.value\"\n placeholder=\"请输入\"\n style=\"width: 100%\"\n />\n <Input v-else v-model=\"row.value\" placeholder=\"请输入\" />\n </td>\n <td>\n <Select v-model=\"row.logic\" placeholder=\"请选择\" filterable transfer>\n <Option v-for=\"l in logicOps\" :value=\"l.value\" :key=\"l.value\">{{ l.label }}</Option>\n </Select>\n </td>\n <td class=\"cq-op-cell\">\n <a v-if=\"index > 0\" class=\"cq-del\" @click=\"removeCondition(index)\">删除</a>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- 列表表头配置 -->\n <div class=\"cq-panel\">\n <div class=\"cq-panel-head\">\n <span class=\"cq-panel-title\"><span class=\"required\">*</span>列表表头配置</span>\n <span class=\"cq-panel-tip\">请先选择数据主表,然后勾选您希望在查询表格中展示的字段。</span>\n <Checkbox\n v-if=\"headerFields.length > 0\"\n :value=\"checkAll\"\n :indeterminate=\"checkAllIndeterminate\"\n class=\"cq-check-all\"\n @on-change=\"onCheckAllChange\"\n >全选</Checkbox>\n </div>\n <div class=\"cq-panel-body\">\n <CheckboxGroup v-model=\"checkedFields\" class=\"cq-field-group\">\n <Checkbox v-for=\"f in headerFields\" :key=\"f.name\" :label=\"f.name\" class=\"cq-field-item\">{{ f.label }}</Checkbox>\n </CheckboxGroup>\n <p v-if=\"headerFields.length === 0\" class=\"cq-empty-tip\">请先在查询条件中选择主表</p>\n </div>\n </div>\n </div>\n <!-- 底部操作 -->\n <div class=\"cq-footer\">\n <div class=\"cq-footer-btns\">\n <Button type=\"primary\" @click=\"$emit('open-history')\">历史查询模版</Button>\n <Button type=\"primary\" @click=\"openSaveModal\">保存为查询模版</Button>\n <Button type=\"primary\" @click=\"execute\">执行查询</Button>\n </div>\n </div>\n\n <!-- 保存为查询模版 -->\n <save-template-modal v-model=\"saveModalShow\" :api=\"api\" :payload=\"savePayload\" @saved=\"onTemplateSaved\" />\n <!-- 查看脚本 -->\n <script-modal v-model=\"scriptModalShow\" :api=\"api\" :query-json=\"scriptQueryJson\" :app-id=\"appId\" />\n </div>\n</template>\n\n<script>\nimport saveTemplateModal from '../components/save-template-modal.vue'\nimport scriptModal from '../components/script-modal.vue'\n\nexport default {\n name: 'query-config',\n components: {\n saveTemplateModal,\n scriptModal\n },\n props: {\n api: {\n type: Object,\n required: true\n },\n mark: {\n type: String,\n default: ''\n },\n // 编辑回填模版 id\n templateId: {\n type: String,\n default: ''\n },\n // 编辑回填模版名称(来自历史模版)\n editTemplateName: {\n type: String,\n default: ''\n }\n },\n data() {\n return {\n templateName:'',\n remark: '',\n mainTables: [],\n logicOps: [],\n // 运算关系:字符串类型(varchar/text)用 strOpList,其余用 opNameList(对齐 model-query-form.vue)\n opNameList: [\n { value: '!=', label: '!=' },\n { value: '<=', label: '<=' },\n { value: '<', label: '<' },\n { value: '>=', label: '>=' },\n { value: '>', label: '>' },\n { value: '=', label: '=' },\n { value: 'between', label: 'between' }\n ],\n strOpList: [\n { value: '=', label: '精确匹配' },\n { value: 'like', label: '模糊匹配' },\n { value: 'in', label: 'IN查询' },\n { value: 'between', label: 'between' },\n { value: 'join', label: 'sql脚本' }\n ],\n fieldsMap: {}, // { tableName: [fields] }\n conditions: [],\n checkedFields: [],\n checkAll: false, // 表头字段全选状态(默认不勾选)\n checkAllIndeterminate: false, // 表头字段半选状态\n saveModalShow: false,\n savePayload: {},\n scriptModalShow: false, // 查看脚本弹窗\n scriptQueryJson: null, // 传给脚本弹窗的查询配置\n // 运算符 -> 中文说明(用于拼接查询条件的中文内容 queryCondition,对齐后端 operators 标签)\n opCnMap: {\n '=': '等于',\n '!=': '不等于',\n '>': '大于',\n '>=': '大于等于',\n '<': '小于',\n '<=': '小于等于',\n like: '包含',\n leftLike: '左匹配',\n rightLike: '右匹配',\n in: '包含于',\n notIn: '不包含于',\n between: '介于',\n isNull: '为空',\n isNotNull: '不为空',\n join: 'SQL脚本'\n },\n appId:'1934985431515009024' || serverConfig.APP_ID\n }\n },\n computed: {\n // 当前查询主表(单表查询:以第一行为准)\n mainTableName() {\n return this.conditions.length && this.conditions[0].tableName ? this.conditions[0].tableName : ''\n },\n // 表头字段:取当前条件中第一个已选主表的字段\n headerFields() {\n let tableName = ''\n for (let i = 0; i < this.conditions.length; i++) {\n if (this.conditions[i].tableName) {\n tableName = this.conditions[i].tableName\n break\n }\n }\n return tableName ? this.fieldsMap[tableName] || [] : []\n }\n },\n watch: {\n // 已勾选字段变化时,同步全选/半选状态\n checkedFields() {\n this.updateCheckAllState()\n },\n // 主表变化导致表头字段变化时,剔除不在当前字段范围内的已勾选项并同步状态\n headerFields(fields) {\n let names = fields.map(f => f.name)\n let pruned = this.checkedFields.filter(n => names.indexOf(n) > -1)\n if (pruned.length !== this.checkedFields.length) {\n this.checkedFields = pruned\n }\n this.updateCheckAllState()\n }\n },\n created() {\n // 查询模板名称默认取当前日期\n this.templateName = this.formatToday()\n this.initData()\n },\n methods: {\n // 生成当前日期时间字符串(yyyy-MM-dd HH:mm:ss)\n formatToday() {\n let d = new Date()\n let m = String(d.getMonth() + 1).padStart(2, '0')\n let day = String(d.getDate()).padStart(2, '0')\n let hh = String(d.getHours()).padStart(2, '0')\n let mi = String(d.getMinutes()).padStart(2, '0')\n let ss = String(d.getSeconds()).padStart(2, '0')\n return d.getFullYear() + m + day + hh + mi + ss\n },\n initData() {\n Promise.all([this.api.getMainTables(this.appId), this.api.getLogicOps()]).then(([tables, logics]) => {\n this.mainTables = tables\n this.logicOps = logics\n if (this.templateId) {\n this.loadTemplate()\n } else {\n this.addCondition()\n }\n })\n },\n loadTemplate() {\n // 编辑时,保存模板名默认回填为当前模板名\n if (this.editTemplateName) {\n this.templateName = this.editTemplateName\n }\n this.api.getTemplateDetail(this.templateId, this.editTemplateName).then(detail => {\n if (!detail) {\n this.addCondition()\n return\n }\n console.log('loadTemplate detail:', detail)\n // 模板名优先取详情返回值\n if (detail.name) {\n this.templateName = detail.name\n }\n if (detail.remark) {\n this.remark = detail.remark\n }\n let mainTableName = detail.mainTableName\n if (!mainTableName) {\n this.addCondition()\n return\n }\n // 主表字段:优先用详情已带回的字段,避免再次请求;否则回退按主表名拉取\n let fieldsReady\n if (detail.fields && detail.fields.length) {\n this.$set(this.fieldsMap, mainTableName, detail.fields)\n fieldsReady = Promise.resolve()\n } else {\n fieldsReady = this.loadFields(mainTableName)\n }\n fieldsReady.then(() => {\n // 回填查询条件行(字段/运算符/字段值/且或关系)\n let rows = (detail.conditions || []).map(c => ({\n tableName: mainTableName,\n fieldName: c.fieldName || '',\n op: c.op || '',\n value: c.value !== undefined ? c.value : '',\n logic: String(c.relation || c.logic || 'and').toLowerCase()\n }))\n this.conditions = rows.length\n ? rows\n : [{ tableName: mainTableName, fieldName: '', op: '', value: '', logic: 'and' }]\n // 回填已勾选的表头字段\n this.checkedFields = (detail.showFields || []).slice()\n })\n })\n },\n loadFields(tableName) {\n if (this.fieldsMap[tableName]) {\n return Promise.resolve(this.fieldsMap[tableName])\n }\n return this.api.getTableFields(tableName).then(fields => {\n this.$set(this.fieldsMap, tableName, fields)\n return fields\n })\n },\n // 某行主表下拉可选项:未选主表或首行时可选全部;已选主表后其余行仅显示该主表(单表限制,多表后续扩展)\n tableOptionsFor(index) {\n let main = this.mainTableName\n if (!main || index === 0) {\n return this.mainTables\n }\n let t = this.mainTables.find(x => x.name === main)\n return t ? [t] : this.mainTables\n },\n onTableChange(row) {\n // 单表查询:主表变化时同步所有行到同一主表,并清空各行字段/值/运算符\n this.conditions.forEach(r => {\n r.tableName = row.tableName\n r.fieldName = ''\n r.value = ''\n r.op = ''\n })\n if (row.tableName) {\n this.loadFields(row.tableName)\n }\n },\n // 切换字段后清空已填字段值和运算符(类型变化后可选运算符不同)\n onFieldChange(row) {\n row.value = ''\n row.op = ''\n },\n // 根据所选字段的 fieldType 返回可选运算关系:varchar/text 用 strOpList,其余用 opNameList\n operatorsForRow(row) {\n let field = this.findField(row)\n let type = field && field.fieldType ? String(field.fieldType).toLowerCase() : ''\n if (type === 'varchar' || type === 'text') {\n return this.strOpList\n }\n return this.opNameList\n },\n // 根据所选字段的 fieldType 推断字段值应使用的控件类型\n valueControlType(row) {\n let field = this.findField(row)\n if (!field) {\n return 'text'\n }\n let type = field.fieldType ? String(field.fieldType).toLowerCase() : ''\n if (type === 'timestamp' || type === 'datetime') {\n return 'datetime'\n }\n if (type === 'date') {\n return 'date'\n }\n if (type === 'time') {\n return 'time'\n }\n if (['number', 'int', 'integer', 'bigint', 'decimal', 'double', 'float', 'numeric', 'long'].indexOf(type) > -1) {\n return 'number'\n }\n // 文本类型(varchar 等)且配置了字典时,使用字典组件\n if (field.dicName) {\n return 'dic'\n }\n return 'text'\n },\n // 取某行所选字段对象\n findField(row) {\n if (!row.tableName || !row.fieldName) {\n return null\n }\n let fields = this.fieldsMap[row.tableName] || []\n return fields.find(f => f.name === row.fieldName) || null\n },\n // 取某行所选字段的字典标识\n fieldDicName(row) {\n let field = this.findField(row)\n return field ? field.dicName || '' : ''\n },\n addCondition() {\n // 单表查询:新增行默认沿用已选主表\n let main = this.mainTableName\n this.conditions.push({ tableName: main || '', fieldName: '', op: '', value: '', logic: 'and' })\n if (main) {\n this.loadFields(main)\n }\n },\n removeCondition(index) {\n this.conditions.splice(index, 1)\n },\n // 表头字段全选/取消全选\n onCheckAllChange(checked) {\n this.checkedFields = checked ? this.headerFields.map(f => f.name) : []\n },\n // 根据已勾选数量刷新全选框的选中/半选状态\n updateCheckAllState() {\n let total = this.headerFields.length\n let names = this.headerFields.map(f => f.name)\n let checked = names.filter(n => this.checkedFields.indexOf(n) > -1).length\n this.checkAll = total > 0 && checked === total\n this.checkAllIndeterminate = checked > 0 && checked < total\n },\n validate() {\n let validRows = this.conditions.filter(r => r.tableName && r.fieldName && r.op)\n if (validRows.length < 1) {\n this.$Message.error('至少要有1行完整的【查询条件配置】')\n return false\n }\n if (this.checkedFields.length < 3) {\n this.$Message.error('需配置表头字段至少3个')\n return false\n }\n return true\n },\n // 取主表对应的 tableId(resId)\n tableIdOf(tableName) {\n let t = this.mainTables.find(x => x.name === tableName)\n return t ? t.resId || t.name : tableName\n },\n // 构建后端所需的 queryJson 结构\n buildQueryJson() {\n let firstTableRow = this.conditions.find(r => r.tableName)\n let conditions = this.conditions\n .filter(r => r.tableName && r.fieldName)\n .map(r => ({\n fieldName: r.fieldName,\n op: r.op,\n value: r.value,\n relation: (r.logic || 'and').toUpperCase()\n }))\n return {\n tableId: firstTableRow ? this.tableIdOf(firstTableRow.tableName) : '',\n showFields: this.checkedFields.slice(),\n conditions: conditions,\n sortName: '',\n sortType: ''\n }\n },\n buildPayload() {\n let fields = this.headerFields\n let showFields = this.checkedFields.map(name => {\n let f = fields.find(x => x.name === name)\n return { name: name, label: f ? f.label : name }\n })\n let opLabel = r => {\n let o = this.operatorsForRow(r).find(x => x.value === r.op)\n return o ? o.label : r.op\n }\n let conditionSummary = this.conditions\n .filter(r => r.tableName && r.fieldName)\n .map(r => {\n let f = (this.fieldsMap[r.tableName] || []).find(x => x.name === r.fieldName)\n return (f ? f.label : r.fieldName) + ' ' + opLabel(r) + ' \"' + (r.value || '') + '\"'\n })\n let firstTableRow = this.conditions.find(r => r.tableName)\n return {\n appId: this.appId,\n mark: this.mark,\n mainTableName: firstTableRow ? firstTableRow.tableName : '',\n conditions: this.conditions.filter(r => r.tableName && r.fieldName),\n showFields: showFields,\n conditionSummary: conditionSummary,\n // 查询条件拼接的中文内容(保存模板时随参数上送)\n queryCondition: this.buildQueryCondition(),\n queryJson: this.buildQueryJson()\n }\n },\n // 字段值转展示文本:数组按「起 ~ 止」拼接(如 between),其余原样\n conditionValueText(row) {\n let v = row.value\n if (Array.isArray(v)) {\n return v.join(' ~ ')\n }\n return v === undefined || v === null ? '' : String(v)\n },\n // 运算符中文说明\n opCnLabel(op) {\n return this.opCnMap[op] || op\n },\n // 且/或关系中文说明:优先取后端 logicOps 标签,兜底「且/或」\n logicCnLabel(logic) {\n let l = (this.logicOps || []).find(x => x.value === logic)\n if (l && l.label) {\n return l.label\n }\n return logic === 'or' || logic === 'OR' ? '或' : '且'\n },\n // 拼接查询条件的中文内容,不同条件换行展示,形如:\n // 凭证日期 介于 \"2024-01-01 ~ 2024-12-31\"\n // 且 金额 大于 \"10,000\"\n buildQueryCondition() {\n let rows = this.conditions.filter(r => r.tableName && r.fieldName && r.op)\n let lines = []\n rows.forEach((r, i) => {\n let f = (this.fieldsMap[r.tableName] || []).find(x => x.name === r.fieldName)\n let label = f ? f.label : r.fieldName\n let opCn = this.opCnLabel(r.op)\n // 为空/不为空无字段值\n let noValue = r.op === 'isNull' || r.op === 'isNotNull'\n let text = noValue ? label + ' ' + opCn : label + ' ' + opCn + ' \"' + this.conditionValueText(r) + '\"'\n // 从第二个条件起,用当前条件自身的且/或关系作为与上一条件的连接词(与上送后端的 relation 保持一致)\n if (i > 0) {\n text = this.logicCnLabel(r.logic) + ' ' + text\n }\n lines.push(text)\n })\n return lines.join('\\n')\n },\n execute() {\n if (!this.validate()) {\n return\n }\n // 执行查询:不落库,直接携带 queryJson 跳转结果页拉取数据\n this.$emit('execute', this.buildPayload())\n },\n // 查看脚本:用当前配置构建 queryJson 打开脚本弹窗\n lookScript() {\n if (!this.validate()) {\n return\n }\n this.scriptQueryJson = this.buildQueryJson()\n this.scriptModalShow = true\n },\n openSaveModal() {\n if (!this.validate()) {\n return\n }\n this.savePayload = Object.assign(this.buildPayload(), {\n appId: this.appId,\n id: this.templateId || '',\n remark: this.remark || '',\n templateName: this.templateName,\n queryJson: this.buildQueryJson()\n })\n this.saveModalShow = true\n },\n onTemplateSaved() {\n // 保存成功后停留在当前页\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.cq-config {\n padding: 12px;\n}\n.cq-config-main {\n height: calc(~'100vh - 80px');\n overflow-y: auto;\n}\n.required {\n color: #ed4014;\n margin-right: 2px;\n}\n.cq-panel {\n background: #fff;\n border-radius: 4px;\n margin-bottom: 12px;\n padding: 12px 16px 16px;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);\n}\n.cq-panel-head {\n display: flex;\n align-items: center;\n margin-bottom: 12px;\n}\n.cq-center{\n justify-content: space-between;\n}\n.cq-panel-title-wrap{\n display: flex;\n align-items: center;\n}\n.cq-panel-title {\n font-size: 15px;\n font-weight: 600;\n}\n.cq-check-all {\n margin-left: auto;\n}\n.cq-panel-tip {\n font-size: 12px;\n color: #999;\n margin-left: 12px;\n}\n.cq-panel-head .ivu-btn {\n margin-left: auto;\n}\n.cq-table {\n width: 100%;\n border-collapse: collapse;\n}\n.cq-table th,\n.cq-table td {\n border: 1px solid #dcdee2;\n padding: 8px 10px;\n text-align: center;\n}\n.cq-table th {\n background: #bcd4ef;\n font-weight: 600;\n text-align: center;\n color: #17233d;\n}\n.cq-op-cell {\n text-align: center;\n}\n.cq-del {\n color: #ed4014;\n}\n.cq-field-group {\n display: flex;\n flex-wrap: wrap;\n}\n.cq-field-item {\n width: 12.5%;\n margin: 8px 0;\n font-size: 14px;\n}\n.cq-empty-tip {\n color: #999;\n font-size: 13px;\n padding: 8px 0;\n}\n.cq-footer {\n background: #fff;\n border-radius: 4px;\n padding: 16px;\n}\n.cq-save-check {\n color: #ed4014;\n font-size: 12px;\n line-height: 20px;\n text-align: right;\n}\n.cq-footer-btns {\n text-align: right;\n}\n.cq-footer-btns .ivu-btn {\n min-width: 110px;\n margin-left: 10px;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/component/data-grid/custom-query/views/query-config.vue","<template>\n <Modal v-model=\"visible\" :width=\"520\" class-name=\"save-template-modal\" :closable=\"false\" :mask-closable=\"false\" footer-hide>\n <div class=\"save-tpl-head\">\n <Icon type=\"ios-save\" class=\"save-tpl-icon\" />\n <span class=\"save-tpl-title\">保存为查询模版</span>\n </div>\n <Form ref=\"tplForm\" :model=\"form\" :rules=\"rules\" :label-width=\"0\">\n <FormItem prop=\"name\">\n <div class=\"save-tpl-label\">模版名称 <span class=\"required\">*</span></div>\n <Input v-model=\"form.name\" maxlength=\"50\" placeholder=\"请输入模版名称,如:2024年度财务凭证查询\" />\n </FormItem>\n <FormItem prop=\"remark\">\n <div class=\"save-tpl-label\">模版描述</div>\n <Input v-model=\"form.remark\" type=\"textarea\" :rows=\"8\" maxlength=\"200\" placeholder=\"请简要描述查询模版用途、能力\" />\n </FormItem>\n </Form>\n <div class=\"save-tpl-footer\">\n <Button @click=\"onCancel\">取消</Button>\n <Button type=\"success\" :loading=\"saving\" @click=\"onConfirm\">确认保存</Button>\n </div>\n </Modal>\n</template>\n\n<script>\nexport default {\n name: 'save-template-modal',\n props: {\n value: {\n type: Boolean,\n default: false\n },\n api: {\n type: Object,\n required: true\n },\n // 待保存的查询配置\n payload: {\n type: Object,\n default() {\n return {}\n }\n }\n },\n data() {\n return {\n visible: this.value,\n saving: false,\n form: {\n name: '',\n remark: ''\n },\n rules: {\n name: [{ required: true, message: '请输入模版名称', trigger: 'blur' }]\n }\n }\n },\n watch: {\n value(val) {\n this.visible = val\n if (val) {\n this.form.remark = ''\n this.$nextTick(() => {\n // 先重置清空校验,再带出配置页的模板名称(默认当前日期)\n this.$refs.tplForm && this.$refs.tplForm.resetFields()\n this.form.name = this.payload && this.payload.templateName ? this.payload.templateName : ''\n this.form.remark = this.payload && this.payload.remark ? this.payload.remark : ''\n\n })\n }\n },\n visible(val) {\n this.$emit('input', val)\n }\n },\n methods: {\n onCancel() {\n this.visible = false\n },\n onConfirm() {\n this.$refs.tplForm.validate(valid => {\n if (!valid) {\n return\n }\n this.saving = true\n this.api\n .saveQueryTemplate({\n appId: this.payload.appId,\n id: this.payload.id || '',\n templateName: this.form.name,\n remark: this.form.remark,\n // 查询条件拼接的中文内容\n queryCondition: this.payload.queryCondition || '',\n queryJson: this.payload.queryJson\n })\n .then(resp => {\n this.saving = false\n if (resp && resp.success) {\n this.$Message.success('保存成功')\n this.visible = false\n this.$emit('saved', resp)\n } else {\n this.$Message.error((resp && resp.msg) || '保存失败')\n }\n })\n .catch(() => {\n this.saving = false\n this.$Message.error('保存失败')\n })\n })\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.save-tpl-head {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n}\n.save-tpl-icon {\n font-size: 24px;\n color: #2b5fd9;\n margin-right: 8px;\n}\n.save-tpl-title {\n font-size: 20px;\n font-weight: 600;\n}\n.save-tpl-label {\n font-size: 14px;\n margin-bottom: 6px;\n color: #333;\n}\n.save-tpl-label .required {\n color: #ed4014;\n}\n.save-tpl-footer {\n text-align: right;\n margin-top: 10px;\n}\n.save-tpl-footer button {\n min-width: 88px;\n margin-left: 10px;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/component/data-grid/custom-query/components/save-template-modal.vue","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-ee918d6e\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!less-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./script-modal.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./script-modal.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./script-modal.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ee918d6e\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./script-modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-ee918d6e\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/components/script-modal.vue\n// module id = 135\n// module chunks = 0","<template>\n <Modal v-model=\"visible\" :width=\"720\" class-name=\"cq-script-modal\" :closable=\"true\" :mask-closable=\"false\" footer-hide>\n <div class=\"cq-script-head\">\n <Icon type=\"ios-code-working\" class=\"cq-script-icon\" />\n <span class=\"cq-script-title\">查询脚本</span>\n </div>\n\n <div class=\"cq-script-body\">\n <Spin fix v-if=\"loading\">加载中...</Spin>\n\n <Tabs v-model=\"activeTab\" class=\"cq-script-tabs\">\n <TabPane label=\"标准SQL\" name=\"sql\">\n <div class=\"cq-script-block\">\n <div class=\"cq-script-toolbar\">\n <Button size=\"small\" icon=\"md-copy\" @click=\"copy(sql)\">复制</Button>\n </div>\n <pre class=\"cq-script-code\" v-if=\"sql\">{{ sql }}</pre>\n <p class=\"cq-script-empty\" v-else>暂无标准SQL</p>\n </div>\n </TabPane>\n <TabPane label=\"调试SQL\" name=\"debugSql\">\n <div class=\"cq-script-block\">\n <div class=\"cq-script-toolbar\">\n <Button size=\"small\" icon=\"md-copy\" @click=\"copy(debugSql)\">复制</Button>\n </div>\n <pre class=\"cq-script-code\" v-if=\"debugSql\">{{ debugSql }}</pre>\n <p class=\"cq-script-empty\" v-else>暂无调试SQL</p>\n </div>\n </TabPane>\n </Tabs>\n </div>\n\n <div class=\"cq-script-footer\">\n <Button @click=\"visible = false\">关闭</Button>\n </div>\n </Modal>\n</template>\n\n<script>\nexport default {\n name: 'script-modal',\n props: {\n value: {\n type: Boolean,\n default: false\n },\n api: {\n type: Object,\n required: true\n },\n // 查询配置(queryJson,对象或字符串)\n queryJson: {\n type: [Object, String, Array],\n default: null\n },\n // 应用ID(可选,接口层会兜底解析)\n appId: {\n type: String,\n default: ''\n }\n },\n data() {\n return {\n visible: this.value,\n loading: false,\n activeTab: 'sql',\n sql: '',\n debugSql: ''\n }\n },\n watch: {\n value(val) {\n this.visible = val\n if (val) {\n this.activeTab = 'sql'\n this.fetchScript()\n }\n },\n visible(val) {\n this.$emit('input', val)\n }\n },\n methods: {\n fetchScript() {\n if (typeof this.api.getQueryScript !== 'function') {\n this.$Message.info('查看脚本功能待接入')\n return\n }\n this.loading = true\n this.sql = ''\n this.debugSql = ''\n Promise.resolve(this.api.getQueryScript({ appId: this.appId, queryJson: this.queryJson }))\n .then(resp => {\n resp = resp || {}\n console.log('getQueryScript resp:', resp)\n if (resp.success === false) {\n this.$Message.error(resp.msg || '获取脚本失败')\n }\n this.sql = resp.sql || ''\n this.debugSql = resp.debugSql || ''\n this.loading = false\n })\n .catch(err => {\n this.loading = false\n this.$Message.error((err && err.message) || '获取脚本失败')\n })\n },\n copy(text) {\n text = text || ''\n if (!text) {\n this.$Message.info('暂无可复制内容')\n return\n }\n // 优先使用剪贴板 API,失败时回退 execCommand\n let done = () => this.$Message.success('已复制到剪贴板')\n let fail = () => this.$Message.error('复制失败,请手动选择复制')\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(text).then(done).catch(() => this.fallbackCopy(text, done, fail))\n } else {\n this.fallbackCopy(text, done, fail)\n }\n },\n fallbackCopy(text, done, fail) {\n let ta = document.createElement('textarea')\n ta.value = text\n ta.style.position = 'fixed'\n ta.style.left = '-9999px'\n document.body.appendChild(ta)\n ta.select()\n try {\n document.execCommand('copy') ? done() : fail()\n } catch (e) {\n fail()\n }\n document.body.removeChild(ta)\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.cq-script-head {\n display: flex;\n align-items: center;\n margin-bottom: 12px;\n}\n.cq-script-icon {\n font-size: 22px;\n color: #2b5fd9;\n margin-right: 8px;\n}\n.cq-script-title {\n font-size: 18px;\n font-weight: 600;\n}\n.cq-script-body {\n position: relative;\n min-height: 160px;\n}\n.cq-script-block {\n position: relative;\n}\n.cq-script-toolbar {\n text-align: right;\n margin-bottom: 8px;\n}\n.cq-script-code {\n margin: 0;\n padding: 12px 14px;\n max-height: 46vh;\n overflow: auto;\n background: #282c34;\n color: #abb2bf;\n border-radius: 4px;\n font-family: 'Consolas', 'Monaco', 'Menlo', monospace;\n font-size: 13px;\n line-height: 20px;\n white-space: pre-wrap;\n word-break: break-all;\n}\n.cq-script-empty {\n padding: 24px 0;\n text-align: center;\n color: #999;\n font-size: 13px;\n}\n.cq-script-footer {\n text-align: right;\n margin-top: 14px;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/component/data-grid/custom-query/components/script-modal.vue","<template>\n <div class=\"cq-page\">\n <template-history :api=\"api\" @execute=\"onExecute\" @edit=\"onEdit\" />\n </div>\n</template>\n\n<script>\nimport templateHistory from '../views/template-history.vue'\nimport { getCustomQueryApi, ROUTE_NAMES, PAYLOAD_KEY, openRouteInNewTab } from '../runtime'\n\nexport default {\n name: 'custom-query-history-page',\n components: { templateHistory },\n data() {\n return {\n mark: '',\n api: getCustomQueryApi()\n }\n },\n created() {\n this.mark = this.$route.query.mark || ''\n },\n methods: {\n onExecute(row) {\n row = row || {}\n // 历史模板执行:queryJson 取模板的 queryConfig,通过 localStorage 传给新开的结果页\n localStorage.setItem(PAYLOAD_KEY, JSON.stringify({ queryJson: row.queryConfig || '', templateId: row.id, templateName: row.templateName }))\n openRouteInNewTab(this.$router, { name: ROUTE_NAMES.result, query: { mark: this.mark, templateId: row.id, templateName: row.templateName } })\n },\n onEdit(row) {\n row = row || {}\n openRouteInNewTab(this.$router, { name: ROUTE_NAMES.config, query: { mark: this.mark, templateId: row.id, templateName: row.templateName } })\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.cq-page {\n min-height: 100%;\n background: #f0f2f5;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/component/data-grid/custom-query/pages/history-page.vue","<template>\n <div class=\"tpl-history\">\n <div class=\"tpl-panel\">\n <div class=\"tpl-head\">\n <Icon type=\"ios-list-box-outline\" class=\"tpl-head-icon\" />\n <span class=\"tpl-head-title\">历史查询模版</span>\n </div>\n <p class=\"tpl-head-desc\">管理和使用已保存的自定义查询模版,支持一键执行查询、编辑配置或删除</p>\n\n <div class=\"tpl-search\">\n <Input v-model=\"keyword\" placeholder=\"搜索模版名称、主表名称、描述...\" class=\"tpl-search-input\" @on-enter=\"onSearch\" />\n <Button type=\"primary\" icon=\"ios-search\" @click=\"onSearch\">搜索</Button>\n <Button class=\"tpl-reset\" icon=\"md-refresh\" @click=\"onReset\">重置</Button>\n </div>\n <Table :height=\"tableHeight\" :columns=\"columns\" :data=\"rows\" :loading=\"loading\" stripe></Table>\n\n <div class=\"tpl-page\">\n <span class=\"tpl-total\">共 {{ total }} 条记录</span>\n <Page :total=\"total\" :current=\"pageNo\" :page-size=\"pageSize\" @on-change=\"onPageChange\" size=\"small\" show-elevator />\n </div>\n </div>\n\n <!-- 查看脚本 -->\n <script-modal v-model=\"scriptModalShow\" :api=\"api\" :query-json=\"scriptQueryJson\" />\n </div>\n</template>\n\n<script>\nimport scriptModal from '../components/script-modal.vue'\n\nexport default {\n name: 'template-history',\n components: { scriptModal },\n props: {\n api: {\n type: Object,\n required: true\n }\n },\n data() {\n return {\n keyword: '',\n loading: false,\n rows: [],\n total: 0,\n pageNo: 1,\n pageSize: 10,\n tableHeight: 500, // 表格可视高度(px),固定表头并出现纵向滚动条;随窗口自适应\n scriptModalShow: false, // 查看脚本弹窗\n scriptQueryJson: '', // 传给脚本弹窗的查询配置\n columns: [\n { title: '模版名称', key: 'name', minWidth: 140, tooltip: true },\n { title: '描述', key: 'description', minWidth: 180, tooltip: true },\n {\n title: '主表名称',\n key: 'mainTableName',\n width: 230,\n render: (h, { row }) => h('span', { class: 'tpl-tag' }, row.mainTableName)\n },\n {\n title: '查询条件',\n key: 'queryCondition',\n minWidth: 220,\n // 不同搜索条件换行展示\n render: (h, { row }) =>\n h(\n 'div',\n String(row.queryCondition || '')\n .split('\\n')\n .filter(Boolean)\n .map(item => h('div', { class: 'tpl-cond-item' }, item))\n )\n },\n { title: '创建时间', key: 'createTime', width: 200 },\n {\n title: '操作',\n key: 'action',\n width: 380,\n align: 'center',\n render: (h, { row }) => {\n return h('div', [\n h('Button', { props: { type: 'success', size: 'small', icon: 'md-play' }, style: { marginRight: '6px' }, on: { click: () => this.$emit('execute', row) } }, '执行查询'),\n h('Button', { props: { type: 'primary', size: 'small', icon: 'md-create' }, style: { marginRight: '6px' }, on: { click: () => this.$emit('edit', row) } }, '编辑'),\n h('Button', { props: { type: 'error', size: 'small', icon: 'md-close' },style: { marginRight: '6px' }, on: { click: () => this.onDelete(row) } }, '删除'),\n h('Button', { props: { type: 'info', size: 'small', icon: 'md-eye' }, on: { click: () => this.lookScript(row) } }, '查看脚本')\n ])\n }\n }\n ]\n }\n },\n created() {\n this.getData()\n },\n mounted() {\n this.updateTableHeight()\n window.addEventListener('resize', this.updateTableHeight)\n },\n beforeDestroy() {\n window.removeEventListener('resize', this.updateTableHeight)\n },\n methods: {\n // 计算表格可视高度(约占视口 78%),iView Table 的 height 需为像素数值方可固定表头并出现滚动条\n updateTableHeight() {\n this.tableHeight = Math.round(window.innerHeight * 0.78)\n },\n getData() {\n this.loading = true\n this.api\n .getTemplatePage({ searchValue: this.keyword, pageNo: this.pageNo, pageSize: this.pageSize })\n .then(resp => {\n this.rows = resp.rows || []\n this.total = resp.total || 0\n this.loading = false\n })\n .catch(() => {\n this.loading = false\n })\n },\n onSearch() {\n this.pageNo = 1\n this.getData()\n },\n onReset() {\n this.keyword = ''\n this.pageNo = 1\n this.getData()\n },\n onPageChange(pageNo) {\n this.pageNo = pageNo\n this.getData()\n },\n onDelete(row) {\n this.$Modal.confirm({\n title: '确认删除模版',\n content: '确定要删除模版 \"' + row.templateName + '\" 吗?<br/>此操作不可恢复,删除后该模版的配置将永久丢失。',\n okText: '确认删除',\n cancelText: '取消',\n loading: true,\n onOk: () => {\n this.api.deleteTemplate(row.id, row.templateName).then(resp => {\n this.$Modal.remove()\n if (resp && resp.success) {\n this.$Message.success('删除成功')\n if (this.rows.length === 1 && this.pageNo > 1) {\n this.pageNo -= 1\n }\n this.getData()\n } else {\n this.$Message.error('删除失败')\n }\n })\n }\n })\n },\n lookScript(row) {\n // 用模板保存的查询配置(queryConfig 即 queryJson)获取脚本\n this.scriptQueryJson = (row && row.queryConfig) || ''\n this.scriptModalShow = true\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.tpl-history {\n padding: 12px;\n}\n.tpl-panel {\n background: #fff;\n border-radius: 4px;\n padding: 16px 20px 20px;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);\n}\n.tpl-head {\n display: flex;\n align-items: center;\n}\n.tpl-head-icon {\n font-size: 22px;\n color: #2b5fd9;\n margin-right: 8px;\n}\n.tpl-head-title {\n font-size: 18px;\n font-weight: 600;\n}\n.tpl-head-desc {\n color: #999;\n font-size: 12px;\n margin: 6px 0 16px;\n}\n.tpl-search {\n display: flex;\n align-items: center;\n margin-bottom: 16px;\n}\n.tpl-search-input {\n width: 360px;\n margin-right: 8px;\n}\n.tpl-reset {\n margin-left: auto;\n}\n.tpl-page {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 16px;\n}\n.tpl-total {\n color: #666;\n font-size: 13px;\n}\n/deep/ .tpl-tag {\n display: inline-block;\n padding: 2px 10px;\n background: #e8fff3;\n color: #19be6b;\n border-radius: 12px;\n font-size: 12px;\n}\n/deep/ .tpl-cond-item {\n color: #2b5fd9;\n font-size: 12px;\n line-height: 20px;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/component/data-grid/custom-query/views/template-history.vue","<template>\n <div class=\"cq-page\">\n <query-result :api=\"api\" :payload=\"payload\" :template-id=\"templateId\" :template-name=\"templateName\" />\n </div>\n</template>\n\n<script>\nimport queryResult from '../views/query-result.vue'\nimport { getCustomQueryApi, PAYLOAD_KEY } from '../runtime'\n\nexport default {\n name: 'custom-query-result-page',\n components: { queryResult },\n data() {\n return {\n mark: '',\n templateId: '',\n templateName: '',\n payload: null,\n api: getCustomQueryApi()\n }\n },\n created() {\n this.mark = this.$route.query.mark || ''\n this.templateId = this.$route.query.templateId || ''\n this.templateName = this.$route.query.templateName || ''\n // 读取缓存的查询配置:配置页执行为完整 payload;历史模板执行为 { queryJson, templateId, templateName }\n let cache = localStorage.getItem(PAYLOAD_KEY)\n if (cache) {\n try {\n this.payload = JSON.parse(cache)\n } catch (e) {\n this.payload = null\n }\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.cq-page {\n min-height: 100%;\n background: #f0f2f5;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/component/data-grid/custom-query/pages/result-page.vue","<template>\n <div class=\"cq-result\">\n <div class=\"cq-result-panel\">\n <div class=\"cq-result-toolbar\">\n <Button type=\"primary\" icon=\"md-refresh\" @click=\"getData\">刷新</Button>&nbsp;&nbsp;\n <Button type=\"primary\" icon=\"md-download\" @click=\"exportExcel\">导出excel</Button>\n </div>\n <Table :height=\"tableHeight\" :columns=\"tableColumns\" :data=\"rows\" :loading=\"loading\" border stripe></Table>\n <div class=\"cq-result-page-bar\">\n <span class=\"tpl-total\">共 {{ total }} 条记录</span>\n <Page\n :total=\"total\"\n :current=\"pageNo\"\n :page-size=\"pageSize\"\n :page-size-opts=\"[10, 20, 50, 100]\"\n @on-change=\"onPageChange\"\n @on-page-size-change=\"onPageSizeChange\" \n show-sizer\n show-elevator\n transfer\n />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'query-result',\n props: {\n api: {\n type: Object,\n required: true\n },\n // 执行查询的配置(来自配置页)\n payload: {\n type: Object,\n default: null\n },\n // 从历史模版执行时的模版 id\n templateId: {\n type: String,\n default: ''\n },\n // 从历史模版执行时的模版名称\n templateName: {\n type: String,\n default: ''\n }\n },\n data() {\n return {\n loading: false,\n columns: [],\n rows: [],\n total: 0,\n pageNo: 1,\n pageSize: 10,\n tableHeight: 500 // 表格可视高度(px),固定表头并出现纵向滚动条;随窗口自适应\n }\n },\n computed: {\n tableColumns() {\n let seq = { title: '序号', type: 'index', width: 70, align: 'center' }\n let dynamic = this.columns.map(c => Object.assign({ align: 'center', tooltip: true, minWidth: 100 }, c))\n return [seq].concat(dynamic)\n }\n },\n created() {\n this.getData()\n },\n mounted() {\n this.updateTableHeight()\n window.addEventListener('resize', this.updateTableHeight)\n },\n beforeDestroy() {\n window.removeEventListener('resize', this.updateTableHeight)\n },\n methods: {\n // 计算表格可视高度,iView Table 的 height 需为像素数值方可固定表头并出现滚动条\n updateTableHeight() {\n this.tableHeight = Math.round(window.innerHeight * 0.85)\n },\n getData() {\n this.loading = true\n // 从模版执行时优先带上 templateId,供真实接口按模版查询\n let payload = this.payload || {}\n if (this.templateId) {\n payload = Object.assign({}, payload, { templateId: this.templateId, templateName: this.templateName })\n }\n this.api\n .executeQuery(payload, this.pageNo, this.pageSize)\n .then(resp => {\n console.log('executeQuery resp', resp)\n this.columns = resp.columns || []\n this.rows = resp.rows || []\n this.total = resp.total || 0\n if (resp && resp.success) {\n } else {\n resp && resp.msg?this.$Message.error((resp && resp.msg) || '查询失败'):''\n }\n this.loading = false\n })\n .catch(() => {\n this.loading = false\n })\n },\n onPageChange(pageNo) {\n this.pageNo = pageNo\n this.getData()\n },\n onPageSizeChange(size) {\n this.pageSize = size\n this.pageNo = 1\n this.getData()\n },\n exportExcel() {\n if (typeof this.api.exportData !== 'function') {\n this.$Message.info('导出功能待接入')\n return\n }\n let payload = this.payload || {}\n if (this.templateId) {\n payload = Object.assign({}, payload, { templateId: this.templateId, templateName: this.templateName })\n }\n Promise.resolve(this.api.exportData(payload)).catch(err => {\n this.$Message.error((err && err.message) || '导出失败')\n })\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.cq-result {\n padding: 12px;\n}\n.cq-result-panel {\n background: #fff;\n border-radius: 4px;\n padding: 16px 20px 20px;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);\n}\n.cq-result-toolbar {\n text-align: right;\n margin-bottom: 12px;\n}\n.cq-result-page-bar {\n text-align: right;\n margin-top: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/component/data-grid/custom-query/views/query-result.vue","/**\n * 自定义查询 - 路由自注册与打开入口\n *\n * 宿主无需在项目里手写路由:首次打开时会把 3 个页面路由动态注入到宿主的 router,\n * 之后通过 window.open 打开新页面(组件所有跳转均为新开页面)。任何地方只要拿到 router 实例即可调用 openCustomQuery。\n */\nimport { ROUTE_NAMES, ROUTE_PATHS, openRouteInNewTab } from './runtime';\n\nvar routesAdded = false;\n\nfunction buildRoutes() {\n return [{ path: ROUTE_PATHS.config, name: ROUTE_NAMES.config, meta: { title: '自定义查询', hideInMenu: true }, component: function component() {\n return import( /* webpackChunkName: \"custom-query\" */'./pages/config-page.vue');\n } }, { path: ROUTE_PATHS.history, name: ROUTE_NAMES.history, meta: { title: '历史查询模版', hideInMenu: true }, component: function component() {\n return import( /* webpackChunkName: \"custom-query\" */'./pages/history-page.vue');\n } }, { path: ROUTE_PATHS.result, name: ROUTE_NAMES.result, meta: { title: '查询结果', hideInMenu: true }, component: function component() {\n return import( /* webpackChunkName: \"custom-query\" */'./pages/result-page.vue');\n } }];\n}\n\n/**\n * 确保路由已注册到宿主 router(幂等)\n * @param {VueRouter} router\n */\nexport function ensureCustomQueryRoutes(router) {\n if (!router) {\n console.warn('[custom-query] 缺少 router 实例,无法注册路由');\n return;\n }\n // 已存在则跳过(兼容热更新/多次调用)\n var existed = typeof router.getRoutes === 'function' && router.getRoutes().some(function (r) {\n return r.name === ROUTE_NAMES.config;\n });\n if (routesAdded || existed) {\n return;\n }\n var routes = buildRoutes();\n if (typeof router.addRoute === 'function') {\n routes.forEach(function (r) {\n return router.addRoute(r);\n });\n } else if (typeof router.addRoutes === 'function') {\n // 兼容 vue-router < 3.5\n router.addRoutes(routes);\n }\n routesAdded = true;\n}\n\n/**\n * 打开自定义查询(配置页,新页面)\n * @param {VueRouter} router 宿主 router 实例(组件内 this.$router)\n * @param {Object} options { mark }\n */\nexport function openCustomQuery(router) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n ensureCustomQueryRoutes(router);\n openRouteInNewTab(router, { name: ROUTE_NAMES.config, query: {} });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/routes.js\n// module id = 141\n// module chunks = 0","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * 自定义查询组件 - 真实接口实现(对接后端)\n *\n * 说明:这里只实现已对接后端的方法,未实现的方法由 runtime 合并时自动回退到内置 mock。\n * getMainTables(appId) -> /bsp-com/com/statis/getStatisTables 获取可选主表\n * getTableFields(tableName) -> /bsp-ops/ops/res/field/getFieldAllData 获取主表字段\n *\n * 组件后续将单独打包发布,接口地址内聚在组件内部(不依赖项目 path 配置)。\n * 接口沿用项目统一的 store postRequest(自动带 access_token,x-www-form-urlencoded),\n * 返回体约定为 { success, rows, msg }。\n */\nimport store from '@/store';\nimport Qs from 'qs';\n\n// 组件内置接口地址(自定义查询专用,随组件一起打包发布)\nvar API_URLS = {\n mainTables: '/bsp-com/com/statis/getStatisTables', // 获取可选主表\n tableFields: '/bsp-ops/ops/res/field/getFieldAllData', // 获取主表字段\n saveQueryTemplate: '/bsp-com/com/statis/saveQueryTemplate', // 保存/更新查询模板(模板名可不传)\n queryPageData: '/bsp-com/com/statis/getQueryPageData', // 执行查询,分页获取结果数据\n templatePage: '/bsp-com/com/statis/getQueryTemplatePage', // 分页获取历史查询模板\n deleteQueryTemplate: '/bsp-com/com/statis/deleteQueryTemplate', // 删除历史查询模板\n queryConfig: '/bsp-com/com/statis/getQueryConfig', // 获取自定义查询列表配置(执行/编辑回填)\n exportQueryData: '/bsp-com/com/statis/exportQueryData', // 导出查询结果 excel\n queryScript: '/bsp-com/com/statis/getQueryScript' // 获取查询脚本(标准sql / 调试sql)\n\n\n // 应用ID:优先取入参,其次取全局 serverConfig.APP_ID\n};function resolveAppId(appId) {\n if (appId) {\n return '1934985431515009024'; // || serverConfig.APP_ID || appId\n }\n return '1934985431515009024'; // (typeof serverConfig !== 'undefined' && serverConfig && serverConfig.APP_ID) || ''\n}\n\n// 主表名 -> resId 映射(getFieldAllData 需要 resId,而组件仅按主表名回调 getTableFields)\nvar tableResIdMap = {};\n\n// 从对象里按候选 key 顺序取第一个有值的字段(兼容后端字段命名差异)\nfunction pick(obj, keys) {\n var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n for (var i = 0; i < keys.length; i++) {\n var v = obj[keys[i]];\n if (v !== undefined && v !== null && v !== '') {\n return v;\n }\n }\n return fallback;\n}\n\nfunction post(url, params) {\n return store.dispatch('postRequest', { url: url, params: params }).then(function (data) {\n if (data && data.success) {\n // 兼容两种返回:主表接口用 data,字段接口用 rows\n return data.rows || data.data || [];\n }\n return [];\n });\n}\n\nvar realApi = {\n getMainTables: function getMainTables(appId) {\n return post(API_URLS.mainTables, { appId: appId || '' }).then(function (rows) {\n return rows.map(function (r) {\n var name = pick(r, ['tableName', 'resName', 'name']);\n var resId = pick(r, ['resId', 'id']);\n // 缓存主表名到 resId 的映射,供 getTableFields 使用\n if (name) {\n tableResIdMap[name] = resId || name;\n }\n return {\n name: name,\n label: pick(r, ['tableCname', 'resCname', 'label'], name),\n resId: resId || name\n };\n });\n });\n },\n getTableFields: function getTableFields(tableName) {\n var resId = tableResIdMap[tableName] || tableName;\n return post(API_URLS.tableFields, { resId: resId }).then(function (rows) {\n return rows.map(function (f) {\n var name = pick(f, ['fieldName', 'name']);\n return {\n name: name,\n label: pick(f, ['fieldCname', 'fieldComment', 'label'], name),\n code: name,\n fieldType: pick(f, ['fieldType', 'jdbcType', 'type']), // 字段类型,用于字段值控件渲染\n dicName: pick(f, ['dicName']) // 字典标识,varchar 且存在时用字典组件\n };\n });\n });\n },\n\n // 保存/更新查询模板;更新时传 id\n saveQueryTemplate: function saveQueryTemplate() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var body = {\n appId: params.appId || '',\n queryJson: typeof params.queryJson === 'string' ? params.queryJson : JSON.stringify(params.queryJson || {})\n };\n if (params.templateName) {\n body.templateName = params.templateName;\n }\n // 模板描述\n if (params.remark !== undefined && params.remark !== null) {\n body.remark = params.remark;\n }\n // 查询条件拼接的中文内容\n if (params.queryCondition !== undefined && params.queryCondition !== null) {\n body.queryCondition = params.queryCondition;\n }\n if (params.id) {\n body.id = params.id;\n }\n return store.dispatch('postRequest', { url: API_URLS.saveQueryTemplate, params: body });\n },\n\n // 执行查询:分页拉取结果数据,返回 { columns, rows, total }\n executeQuery: function executeQuery() {\n var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var pageNo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var pageSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n\n var queryJson = payload.queryJson;\n var body = {\n appId: resolveAppId(payload.appId),\n queryJson: typeof queryJson === 'string' ? queryJson : JSON.stringify(queryJson || {}),\n pageNo: pageNo,\n pageSize: pageSize\n // 兼容从历史模板执行\n };if (payload.templateId) {\n body.id = payload.templateId;\n body.templateName = payload.templateName;\n }\n return store.dispatch('postRequest', { url: API_URLS.queryPageData, params: body }).then(function (data) {\n var rows = data && (data.rows || data.data) || [];\n // 列优先取后端返回的 header(字段元信息 { name,label,type,valueType,dicName })\n // 字段存在字典 dicName 时,取值字段改用 <字段>Name(展示字典翻译后的值)\n var header = data && data.header;\n var columns = [];\n if (header && (typeof header === 'undefined' ? 'undefined' : _typeof(header)) === 'object') {\n columns = Object.keys(header).map(function (k) {\n var h = header[k] || {};\n var name = h.name || k;\n return {\n title: h.label || name,\n key: h.dicName ? name + 'Name' : name\n };\n });\n }\n // 兜底:header 缺失时,用配置的展示字段,其次从首行数据推断\n if (!columns.length) {\n columns = (payload.showFields || []).map(function (f) {\n return { title: f.label || f.name, key: f.name };\n });\n }\n if (!columns.length && rows.length) {\n columns = Object.keys(rows[0]).map(function (k) {\n return { title: k, key: k };\n });\n }\n return {\n columns: columns,\n rows: rows,\n success: data && data.success || false,\n total: data && data.total || 0,\n msg: data && data.msg || data && data.message || ''\n };\n });\n },\n\n // 分页获取历史查询模板,返回 { rows, total }\n getTemplatePage: function getTemplatePage() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var body = {\n appId: resolveAppId(params.appId),\n pageNo: params.pageNo || 1,\n pageSize: params.pageSize || 10,\n searchValue: params.searchValue || params.keyword || ''\n // 组件按 keyword 搜索,接口参数为 templateName\n };var templateName = params.templateName || params.keyword;\n if (templateName) {\n body.templateName = templateName;\n }\n if (params.tableId) {\n body.tableId = params.tableId;\n }\n return store.dispatch('postRequest', { url: API_URLS.templatePage, params: body }).then(function (data) {\n var list = data && (data.rows || data.data) || [];\n var rows = list.map(function (r) {\n return {\n id: pick(r, ['id']),\n name: pick(r, ['templateName', 'name']),\n templateName: pick(r, ['templateName', 'name']),\n description: pick(r, ['description', 'remark']),\n mainTableName: pick(r, ['tableCname', 'tableName', 'mainTableName']),\n queryCondition: pick(r, ['queryCondition']),\n queryConfig: pick(r, ['queryConfig', 'queryJson']),\n createTime: pick(r, ['createTime', 'addTime', 'updateTime'])\n };\n });\n return { rows: rows, total: data && data.total || 0 };\n });\n },\n\n // 删除历史查询模板\n deleteTemplate: function deleteTemplate(id, templateName) {\n var body = {\n appId: resolveAppId(),\n id: id || ''\n };\n if (templateName) {\n body.templateName = templateName;\n }\n return store.dispatch('postRequest', { url: API_URLS.deleteQueryTemplate, params: body });\n },\n\n // 获取自定义查询列表配置(历史模板执行/编辑时回填),返回 detail 对象或 null\n // 后端回显结构:{ tables:[{id,tableName,tableCname}], operators:[{value,label}],\n // fieldsByTable:{ <tableId>:[{fieldName,fieldCname,fieldType,dicName}] },\n // queryConfig:{ conditions:[{fieldName,op,value,relation}], showFields:[name] } }\n getTemplateDetail: function getTemplateDetail(id, templateName) {\n var body = {\n appId: resolveAppId(),\n id: id || ''\n };\n if (templateName) {\n body.templateName = templateName;\n }\n return store.dispatch('postRequest', { url: API_URLS.queryConfig, params: body }).then(function (data) {\n if (!data || !data.success) {\n return null;\n }\n var cfg = data.data || (Array.isArray(data.rows) ? data.rows[0] : data.rows) || {};\n\n // 已保存的查询(条件/表头字段),兼容 queryConfig 与旧 queryJson,字符串统一解析\n var queryConfig = cfg.queryConfig !== undefined ? cfg.queryConfig : cfg.queryJson;\n if (typeof queryConfig === 'string') {\n try {\n queryConfig = JSON.parse(queryConfig);\n } catch (e) {\n queryConfig = {};\n }\n }\n queryConfig = queryConfig || {};\n\n // 已选主表:取 tables[0],兜底回退到 cfg/queryConfig 上的表名\n var tables = Array.isArray(cfg.tables) ? cfg.tables : [];\n var mainTable = tables[0] || {};\n var mainTableName = pick(mainTable, ['tableName', 'name']) || pick(cfg, ['tableName', 'mainTableName']) || pick(queryConfig, ['tableName']);\n var mainTableId = pick(mainTable, ['id', 'resId']);\n // 缓存主表名 -> resId,供 getTableFields 兜底取字段\n if (mainTableName && mainTableId) {\n tableResIdMap[mainTableName] = mainTableId;\n }\n\n // 主表字段:fieldsByTable 以表 id 为键,归一化成组件字段结构\n var fieldsByTable = cfg.fieldsByTable || {};\n var rawFields = mainTableId && fieldsByTable[mainTableId] || [];\n var fields = rawFields.map(function (f) {\n var name = pick(f, ['fieldName', 'name']);\n return {\n name: name,\n label: pick(f, ['fieldCname', 'fieldComment', 'label'], name),\n code: name,\n fieldType: pick(f, ['fieldType', 'jdbcType', 'type']),\n dicName: pick(f, ['dicName'])\n };\n });\n\n // 查询条件:保留原始运算符与关系(relation: AND/OR)\n var conditions = (queryConfig.conditions || []).map(function (c) {\n return {\n fieldName: pick(c, ['fieldName', 'name']),\n op: pick(c, ['op', 'operator']),\n value: c.value !== undefined ? c.value : '',\n relation: pick(c, ['relation', 'logic'], 'and')\n };\n });\n\n // 已勾选表头字段:统一成字段名字符串数组\n var showFields = (queryConfig.showFields || []).map(function (s) {\n return typeof s === 'string' ? s : pick(s, ['name', 'fieldName']);\n });\n\n return {\n id: pick(cfg, ['id'], id),\n name: pick(cfg, ['templateName', 'name'], templateName || ''),\n remark: pick(cfg.template, ['remark', 'description'], ''),\n mainTableName: mainTableName,\n mainTableId: mainTableId,\n fields: fields,\n conditions: conditions,\n showFields: showFields,\n operators: Array.isArray(cfg.operators) ? cfg.operators : [],\n queryJson: queryConfig\n };\n });\n },\n\n // 导出查询结果 excel(浏览器下载)\n exportData: function exportData() {\n var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var queryJson = payload.queryJson;\n var body = {\n appId: resolveAppId(payload.appId),\n queryJson: typeof queryJson === 'string' ? queryJson : JSON.stringify(queryJson || {})\n };\n if (payload.templateId) {\n body.id = payload.templateId;\n }\n return store.dispatch('downloadPostRequest', { url: API_URLS.exportQueryData, params: Qs.stringify(body), responseType: 'blob' }).then(function (data) {\n if (!data) {\n return;\n }\n // 导出失败时后端返回文本/JSON 错误信息\n if ((data.type === 'application/json' || data.type === 'text/plain') && typeof data.text === 'function') {\n return data.text().then(function (msg) {\n throw new Error(msg || '导出失败');\n });\n }\n var url = window.URL.createObjectURL(data);\n var a = document.createElement('a');\n a.href = url;\n a.download = (payload.templateName || '自定义查询') + '.xlsx';\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n document.body.removeChild(a);\n });\n },\n\n // 获取查询脚本(标准sql / 调试sql),供“查看脚本”弹窗展示\n getQueryScript: function getQueryScript() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var queryJson = params.queryJson;\n var body = {\n appId: resolveAppId(params.appId),\n queryJson: typeof queryJson === 'string' ? queryJson : JSON.stringify(queryJson || {})\n };\n return store.dispatch('postRequest', { url: API_URLS.queryScript, params: body }).then(function (data) {\n if (!data || !data.success) {\n return { success: false, sql: '', debugSql: '', params: [], msg: data && data.msg || '获取脚本失败' };\n }\n // sql/debugSql 直接位于响应根节点,兼容个别嵌套在 data 下的情况\n var d = data.data && (data.data.sql || data.data.debugSql) ? data.data : data;\n return {\n success: true,\n sql: pick(d, ['sql', 'standardSql', 'querySql'], ''),\n debugSql: pick(d, ['debugSql', 'debugSQL', 'debugsql'], ''),\n params: Array.isArray(d.params) ? d.params : []\n };\n });\n }\n};\n\nexport default realApi;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/api/real-api.js\n// module id = 142\n// module chunks = 0","import Vue from 'vue';\nimport Vuex from 'vuex';\n\nVue.use(Vuex);\n\nexport default new Vuex.Store();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/store/index.js\n// module id = 143\n// module chunks = 0","/*!\n * vuex v3.4.0\n * (c) 2020 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n if (!parent.getChild(key).runtime) { return }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n return parent.hasChild(key)\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept anthor params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.4.0',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers\n};\n\nexport default index;\nexport { Store, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vuex/dist/vuex.esm.js\n// module id = 144\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-baa2b592\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!less-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./config-page.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./config-page.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./config-page.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-baa2b592\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./config-page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-baa2b592\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/pages/config-page.vue\n// module id = 145\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-baa2b592\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/less-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./config-page.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"fa96d2c8\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-baa2b592\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/config-page.vue\n// module id = 146\n// module chunks = 0","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cq-page[data-v-baa2b592]{min-height:100%;background:#f0f2f5}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-baa2b592\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/config-page.vue\n// module id = 147\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-e0af88b2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!less-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-config.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-config.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-config.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e0af88b2\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-config.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-e0af88b2\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/views/query-config.vue\n// module id = 148\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-e0af88b2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/less-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-config.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"fff7b438\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-e0af88b2\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/query-config.vue\n// module id = 149\n// module chunks = 0","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cq-config[data-v-e0af88b2]{padding:12px}.cq-config-main[data-v-e0af88b2]{height:calc(100vh - 80px);overflow-y:auto}.required[data-v-e0af88b2]{color:#ed4014;margin-right:2px}.cq-panel[data-v-e0af88b2]{background:#fff;border-radius:4px;margin-bottom:12px;padding:12px 16px 16px;box-shadow:0 1px 4px rgba(0,0,0,.04)}.cq-panel-head[data-v-e0af88b2]{display:flex;align-items:center;margin-bottom:12px}.cq-center[data-v-e0af88b2]{justify-content:space-between}.cq-panel-title-wrap[data-v-e0af88b2]{display:flex;align-items:center}.cq-panel-title[data-v-e0af88b2]{font-size:15px;font-weight:600}.cq-check-all[data-v-e0af88b2]{margin-left:auto}.cq-panel-tip[data-v-e0af88b2]{font-size:12px;color:#999;margin-left:12px}.cq-panel-head .ivu-btn[data-v-e0af88b2]{margin-left:auto}.cq-table[data-v-e0af88b2]{width:100%;border-collapse:collapse}.cq-table td[data-v-e0af88b2],.cq-table th[data-v-e0af88b2]{border:1px solid #dcdee2;padding:8px 10px;text-align:center}.cq-table th[data-v-e0af88b2]{background:#bcd4ef;font-weight:600;text-align:center;color:#17233d}.cq-op-cell[data-v-e0af88b2]{text-align:center}.cq-del[data-v-e0af88b2]{color:#ed4014}.cq-field-group[data-v-e0af88b2]{display:flex;flex-wrap:wrap}.cq-field-item[data-v-e0af88b2]{width:12.5%;margin:8px 0;font-size:14px}.cq-empty-tip[data-v-e0af88b2]{color:#999;font-size:13px;padding:8px 0}.cq-footer[data-v-e0af88b2]{background:#fff;border-radius:4px;padding:16px}.cq-save-check[data-v-e0af88b2]{color:#ed4014;font-size:12px;line-height:20px;text-align:right}.cq-footer-btns[data-v-e0af88b2]{text-align:right}.cq-footer-btns .ivu-btn[data-v-e0af88b2]{min-width:110px;margin-left:10px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-e0af88b2\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/query-config.vue\n// module id = 150\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0a71241c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!less-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./save-template-modal.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./save-template-modal.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./save-template-modal.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0a71241c\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./save-template-modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-0a71241c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/components/save-template-modal.vue\n// module id = 151\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0a71241c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/less-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./save-template-modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"f1cb3c66\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0a71241c\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/components/save-template-modal.vue\n// module id = 152\n// module chunks = 0","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".save-tpl-head[data-v-0a71241c]{display:flex;align-items:center;margin-bottom:18px}.save-tpl-icon[data-v-0a71241c]{font-size:24px;color:#2b5fd9;margin-right:8px}.save-tpl-title[data-v-0a71241c]{font-size:20px;font-weight:600}.save-tpl-label[data-v-0a71241c]{font-size:14px;margin-bottom:6px;color:#333}.save-tpl-label .required[data-v-0a71241c]{color:#ed4014}.save-tpl-footer[data-v-0a71241c]{text-align:right;margin-top:10px}.save-tpl-footer button[data-v-0a71241c]{min-width:88px;margin-left:10px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0a71241c\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/components/save-template-modal.vue\n// module id = 153\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"width\":520,\"class-name\":\"save-template-modal\",\"closable\":false,\"mask-closable\":false,\"footer-hide\":\"\"},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_c('div',{staticClass:\"save-tpl-head\"},[_c('Icon',{staticClass:\"save-tpl-icon\",attrs:{\"type\":\"ios-save\"}}),_vm._v(\" \"),_c('span',{staticClass:\"save-tpl-title\"},[_vm._v(\"保存为查询模版\")])],1),_vm._v(\" \"),_c('Form',{ref:\"tplForm\",attrs:{\"model\":_vm.form,\"rules\":_vm.rules,\"label-width\":0}},[_c('FormItem',{attrs:{\"prop\":\"name\"}},[_c('div',{staticClass:\"save-tpl-label\"},[_vm._v(\"模版名称 \"),_c('span',{staticClass:\"required\"},[_vm._v(\"*\")])]),_vm._v(\" \"),_c('Input',{attrs:{\"maxlength\":\"50\",\"placeholder\":\"请输入模版名称,如:2024年度财务凭证查询\"},model:{value:(_vm.form.name),callback:function ($$v) {_vm.$set(_vm.form, \"name\", $$v)},expression:\"form.name\"}})],1),_vm._v(\" \"),_c('FormItem',{attrs:{\"prop\":\"remark\"}},[_c('div',{staticClass:\"save-tpl-label\"},[_vm._v(\"模版描述\")]),_vm._v(\" \"),_c('Input',{attrs:{\"type\":\"textarea\",\"rows\":8,\"maxlength\":\"200\",\"placeholder\":\"请简要描述查询模版用途、能力\"},model:{value:(_vm.form.remark),callback:function ($$v) {_vm.$set(_vm.form, \"remark\", $$v)},expression:\"form.remark\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"save-tpl-footer\"},[_c('Button',{on:{\"click\":_vm.onCancel}},[_vm._v(\"取消\")]),_vm._v(\" \"),_c('Button',{attrs:{\"type\":\"success\",\"loading\":_vm.saving},on:{\"click\":_vm.onConfirm}},[_vm._v(\"确认保存\")])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0a71241c\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/components/save-template-modal.vue\n// module id = 154\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-ee918d6e\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/less-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./script-modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"791b0861\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-ee918d6e\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/components/script-modal.vue\n// module id = 155\n// module chunks = 0","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cq-script-head[data-v-ee918d6e]{display:flex;align-items:center;margin-bottom:12px}.cq-script-icon[data-v-ee918d6e]{font-size:22px;color:#2b5fd9;margin-right:8px}.cq-script-title[data-v-ee918d6e]{font-size:18px;font-weight:600}.cq-script-body[data-v-ee918d6e]{position:relative;min-height:160px}.cq-script-block[data-v-ee918d6e]{position:relative}.cq-script-toolbar[data-v-ee918d6e]{text-align:right;margin-bottom:8px}.cq-script-code[data-v-ee918d6e]{margin:0;padding:12px 14px;max-height:46vh;overflow:auto;background:#282c34;color:#abb2bf;border-radius:4px;font-family:Consolas,Monaco,Menlo,monospace;font-size:13px;line-height:20px;white-space:pre-wrap;word-break:break-all}.cq-script-empty[data-v-ee918d6e]{padding:24px 0;text-align:center;color:#999;font-size:13px}.cq-script-footer[data-v-ee918d6e]{text-align:right;margin-top:14px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-ee918d6e\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/components/script-modal.vue\n// module id = 156\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"width\":720,\"class-name\":\"cq-script-modal\",\"closable\":true,\"mask-closable\":false,\"footer-hide\":\"\"},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_c('div',{staticClass:\"cq-script-head\"},[_c('Icon',{staticClass:\"cq-script-icon\",attrs:{\"type\":\"ios-code-working\"}}),_vm._v(\" \"),_c('span',{staticClass:\"cq-script-title\"},[_vm._v(\"查询脚本\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"cq-script-body\"},[(_vm.loading)?_c('Spin',{attrs:{\"fix\":\"\"}},[_vm._v(\"加载中...\")]):_vm._e(),_vm._v(\" \"),_c('Tabs',{staticClass:\"cq-script-tabs\",model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('TabPane',{attrs:{\"label\":\"标准SQL\",\"name\":\"sql\"}},[_c('div',{staticClass:\"cq-script-block\"},[_c('div',{staticClass:\"cq-script-toolbar\"},[_c('Button',{attrs:{\"size\":\"small\",\"icon\":\"md-copy\"},on:{\"click\":function($event){return _vm.copy(_vm.sql)}}},[_vm._v(\"复制\")])],1),_vm._v(\" \"),(_vm.sql)?_c('pre',{staticClass:\"cq-script-code\"},[_vm._v(_vm._s(_vm.sql))]):_c('p',{staticClass:\"cq-script-empty\"},[_vm._v(\"暂无标准SQL\")])])]),_vm._v(\" \"),_c('TabPane',{attrs:{\"label\":\"调试SQL\",\"name\":\"debugSql\"}},[_c('div',{staticClass:\"cq-script-block\"},[_c('div',{staticClass:\"cq-script-toolbar\"},[_c('Button',{attrs:{\"size\":\"small\",\"icon\":\"md-copy\"},on:{\"click\":function($event){return _vm.copy(_vm.debugSql)}}},[_vm._v(\"复制\")])],1),_vm._v(\" \"),(_vm.debugSql)?_c('pre',{staticClass:\"cq-script-code\"},[_vm._v(_vm._s(_vm.debugSql))]):_c('p',{staticClass:\"cq-script-empty\"},[_vm._v(\"暂无调试SQL\")])])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"cq-script-footer\"},[_c('Button',{on:{\"click\":function($event){_vm.visible = false}}},[_vm._v(\"关闭\")])],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-ee918d6e\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/components/script-modal.vue\n// module id = 157\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cq-config\"},[_c('div',{staticClass:\"cq-config-main\"},[_c('div',{staticClass:\"cq-panel\"},[_c('div',{staticClass:\"cq-panel-head cq-center\"},[_c('div',{staticClass:\"cq-panel-title-wrap\"},[_c('p',{staticClass:\"cq-panel-title\"},[_c('span',{staticClass:\"required\"},[_vm._v(\"*\")]),_vm._v(\"查询模板名称:  \"),_c('Input',{staticStyle:{\"width\":\"200px\"},attrs:{\"placeholder\":\"请输入查询模板名称\"},model:{value:(_vm.templateName),callback:function ($$v) {_vm.templateName=$$v},expression:\"templateName\"}})],1)]),_vm._v(\" \"),_c('div',[_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.lookScript}},[_vm._v(\"查看脚本\")]),_vm._v(\" \\n \"),_c('Button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.addCondition}},[_vm._v(\"增 行\")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"cq-panel-body\"},[_c('table',{staticClass:\"cq-table\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.conditions),function(row,index){return _c('tr',{key:index},[_c('td',[_c('Select',{attrs:{\"placeholder\":\"请选择\",\"filterable\":\"\",\"transfer\":\"\"},on:{\"on-change\":function($event){return _vm.onTableChange(row)}},model:{value:(row.tableName),callback:function ($$v) {_vm.$set(row, \"tableName\", $$v)},expression:\"row.tableName\"}},_vm._l((_vm.tableOptionsFor(index)),function(t){return _c('Option',{key:t.name,attrs:{\"value\":t.name}},[_vm._v(_vm._s(t.label))])}),1)],1),_vm._v(\" \"),_c('td',[_c('Select',{attrs:{\"placeholder\":\"请选择\",\"filterable\":\"\",\"transfer\":\"\"},on:{\"on-change\":function($event){return _vm.onFieldChange(row)}},model:{value:(row.fieldName),callback:function ($$v) {_vm.$set(row, \"fieldName\", $$v)},expression:\"row.fieldName\"}},_vm._l(((_vm.fieldsMap[row.tableName] || [])),function(f){return _c('Option',{key:f.name,attrs:{\"value\":f.name}},[_vm._v(_vm._s(f.label))])}),1)],1),_vm._v(\" \"),_c('td',[_c('Select',{attrs:{\"placeholder\":\"请选择\",\"filterable\":\"\",\"transfer\":\"\"},model:{value:(row.op),callback:function ($$v) {_vm.$set(row, \"op\", $$v)},expression:\"row.op\"}},_vm._l((_vm.operatorsForRow(row)),function(o){return _c('Option',{key:o.value,attrs:{\"value\":o.value}},[_vm._v(_vm._s(o.label))])}),1)],1),_vm._v(\" \"),_c('td',[(_vm.valueControlType(row) === 'dic')?_c('s-dicgrid',{staticStyle:{\"width\":\"100%\"},attrs:{\"dicName\":_vm.fieldDicName(row)},model:{value:(row.value),callback:function ($$v) {_vm.$set(row, \"value\", $$v)},expression:\"row.value\"}}):(_vm.valueControlType(row) === 'datetime')?_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"format\":\"yyyy-MM-dd HH:mm:ss\",\"value-format\":\"yyyy-MM-dd HH:mm:ss\",\"placeholder\":\"请选择\",\"size\":\"small\"},model:{value:(row.value),callback:function ($$v) {_vm.$set(row, \"value\", $$v)},expression:\"row.value\"}}):(_vm.valueControlType(row) === 'date')?_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"date\",\"format\":\"yyyy-MM-dd\",\"value-format\":\"yyyy-MM-dd\",\"placeholder\":\"请选择\",\"size\":\"small\"},model:{value:(row.value),callback:function ($$v) {_vm.$set(row, \"value\", $$v)},expression:\"row.value\"}}):(_vm.valueControlType(row) === 'time')?_c('el-time-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"format\":\"HH:mm:ss\",\"value-format\":\"HH:mm:ss\",\"placeholder\":\"请选择\",\"size\":\"small\"},model:{value:(row.value),callback:function ($$v) {_vm.$set(row, \"value\", $$v)},expression:\"row.value\"}}):(_vm.valueControlType(row) === 'number')?_c('InputNumber',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"请输入\"},model:{value:(row.value),callback:function ($$v) {_vm.$set(row, \"value\", $$v)},expression:\"row.value\"}}):_c('Input',{attrs:{\"placeholder\":\"请输入\"},model:{value:(row.value),callback:function ($$v) {_vm.$set(row, \"value\", $$v)},expression:\"row.value\"}})],1),_vm._v(\" \"),_c('td',[_c('Select',{attrs:{\"placeholder\":\"请选择\",\"filterable\":\"\",\"transfer\":\"\"},model:{value:(row.logic),callback:function ($$v) {_vm.$set(row, \"logic\", $$v)},expression:\"row.logic\"}},_vm._l((_vm.logicOps),function(l){return _c('Option',{key:l.value,attrs:{\"value\":l.value}},[_vm._v(_vm._s(l.label))])}),1)],1),_vm._v(\" \"),_c('td',{staticClass:\"cq-op-cell\"},[(index > 0)?_c('a',{staticClass:\"cq-del\",on:{\"click\":function($event){return _vm.removeCondition(index)}}},[_vm._v(\"删除\")]):_vm._e()])])}),0)])])]),_vm._v(\" \"),_c('div',{staticClass:\"cq-panel\"},[_c('div',{staticClass:\"cq-panel-head\"},[_vm._m(1),_vm._v(\" \"),_c('span',{staticClass:\"cq-panel-tip\"},[_vm._v(\"请先选择数据主表,然后勾选您希望在查询表格中展示的字段。\")]),_vm._v(\" \"),(_vm.headerFields.length > 0)?_c('Checkbox',{staticClass:\"cq-check-all\",attrs:{\"value\":_vm.checkAll,\"indeterminate\":_vm.checkAllIndeterminate},on:{\"on-change\":_vm.onCheckAllChange}},[_vm._v(\"全选\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"cq-panel-body\"},[_c('CheckboxGroup',{staticClass:\"cq-field-group\",model:{value:(_vm.checkedFields),callback:function ($$v) {_vm.checkedFields=$$v},expression:\"checkedFields\"}},_vm._l((_vm.headerFields),function(f){return _c('Checkbox',{key:f.name,staticClass:\"cq-field-item\",attrs:{\"label\":f.name}},[_vm._v(_vm._s(f.label))])}),1),_vm._v(\" \"),(_vm.headerFields.length === 0)?_c('p',{staticClass:\"cq-empty-tip\"},[_vm._v(\"请先在查询条件中选择主表\")]):_vm._e()],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"cq-footer\"},[_c('div',{staticClass:\"cq-footer-btns\"},[_c('Button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('open-history')}}},[_vm._v(\"历史查询模版\")]),_vm._v(\" \"),_c('Button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.openSaveModal}},[_vm._v(\"保存为查询模版\")]),_vm._v(\" \"),_c('Button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.execute}},[_vm._v(\"执行查询\")])],1)]),_vm._v(\" \"),_c('save-template-modal',{attrs:{\"api\":_vm.api,\"payload\":_vm.savePayload},on:{\"saved\":_vm.onTemplateSaved},model:{value:(_vm.saveModalShow),callback:function ($$v) {_vm.saveModalShow=$$v},expression:\"saveModalShow\"}}),_vm._v(\" \"),_c('script-modal',{attrs:{\"api\":_vm.api,\"query-json\":_vm.scriptQueryJson,\"app-id\":_vm.appId},model:{value:(_vm.scriptModalShow),callback:function ($$v) {_vm.scriptModalShow=$$v},expression:\"scriptModalShow\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',{staticStyle:{\"width\":\"20%\"}},[_vm._v(\"主表名称\")]),_vm._v(\" \"),_c('th',{staticStyle:{\"width\":\"20%\"}},[_vm._v(\"主表字段\")]),_vm._v(\" \"),_c('th',{staticStyle:{\"width\":\"15%\"}},[_vm._v(\"运算关系\")]),_vm._v(\" \"),_c('th',{staticStyle:{\"width\":\"18%\"}},[_vm._v(\"字段值\")]),_vm._v(\" \"),_c('th',{staticStyle:{\"width\":\"15%\"}},[_vm._v(\"且/或关系\")]),_vm._v(\" \"),_c('th',{staticStyle:{\"width\":\"12%\"}},[_vm._v(\"操作\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"cq-panel-title\"},[_c('span',{staticClass:\"required\"},[_vm._v(\"*\")]),_vm._v(\"列表表头配置\")])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-e0af88b2\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/query-config.vue\n// module id = 158\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cq-page\"},[_c('query-config',{attrs:{\"api\":_vm.api,\"mark\":_vm.mark,\"template-id\":_vm.templateId,\"edit-template-name\":_vm.templateName},on:{\"execute\":_vm.onExecute,\"open-history\":_vm.goHistory}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-baa2b592\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/config-page.vue\n// module id = 159\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-8125c358\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!less-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./history-page.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./history-page.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./history-page.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-8125c358\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./history-page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-8125c358\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/pages/history-page.vue\n// module id = 160\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-8125c358\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/less-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./history-page.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"71da1cc1\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-8125c358\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/history-page.vue\n// module id = 161\n// module chunks = 0","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cq-page[data-v-8125c358]{min-height:100%;background:#f0f2f5}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-8125c358\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/history-page.vue\n// module id = 162\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-cf413f7c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!less-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./template-history.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./template-history.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./template-history.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-cf413f7c\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./template-history.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-cf413f7c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/views/template-history.vue\n// module id = 163\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-cf413f7c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/less-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./template-history.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"34c621d9\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-cf413f7c\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/template-history.vue\n// module id = 164\n// module chunks = 0","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tpl-history[data-v-cf413f7c]{padding:12px}.tpl-panel[data-v-cf413f7c]{background:#fff;border-radius:4px;padding:16px 20px 20px;box-shadow:0 1px 4px rgba(0,0,0,.04)}.tpl-head[data-v-cf413f7c]{display:flex;align-items:center}.tpl-head-icon[data-v-cf413f7c]{font-size:22px;color:#2b5fd9;margin-right:8px}.tpl-head-title[data-v-cf413f7c]{font-size:18px;font-weight:600}.tpl-head-desc[data-v-cf413f7c]{color:#999;font-size:12px;margin:6px 0 16px}.tpl-search[data-v-cf413f7c]{display:flex;align-items:center;margin-bottom:16px}.tpl-search-input[data-v-cf413f7c]{width:360px;margin-right:8px}.tpl-reset[data-v-cf413f7c]{margin-left:auto}.tpl-page[data-v-cf413f7c]{display:flex;align-items:center;justify-content:space-between;margin-top:16px}.tpl-total[data-v-cf413f7c]{color:#666;font-size:13px}[data-v-cf413f7c].tpl-tag{display:inline-block;padding:2px 10px;background:#e8fff3;color:#19be6b;border-radius:12px;font-size:12px}[data-v-cf413f7c].tpl-cond-item{color:#2b5fd9;font-size:12px;line-height:20px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-cf413f7c\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/template-history.vue\n// module id = 165\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tpl-history\"},[_c('div',{staticClass:\"tpl-panel\"},[_c('div',{staticClass:\"tpl-head\"},[_c('Icon',{staticClass:\"tpl-head-icon\",attrs:{\"type\":\"ios-list-box-outline\"}}),_vm._v(\" \"),_c('span',{staticClass:\"tpl-head-title\"},[_vm._v(\"历史查询模版\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"tpl-head-desc\"},[_vm._v(\"管理和使用已保存的自定义查询模版,支持一键执行查询、编辑配置或删除\")]),_vm._v(\" \"),_c('div',{staticClass:\"tpl-search\"},[_c('Input',{staticClass:\"tpl-search-input\",attrs:{\"placeholder\":\"搜索模版名称、主表名称、描述...\"},on:{\"on-enter\":_vm.onSearch},model:{value:(_vm.keyword),callback:function ($$v) {_vm.keyword=$$v},expression:\"keyword\"}}),_vm._v(\" \"),_c('Button',{attrs:{\"type\":\"primary\",\"icon\":\"ios-search\"},on:{\"click\":_vm.onSearch}},[_vm._v(\"搜索\")]),_vm._v(\" \"),_c('Button',{staticClass:\"tpl-reset\",attrs:{\"icon\":\"md-refresh\"},on:{\"click\":_vm.onReset}},[_vm._v(\"重置\")])],1),_vm._v(\" \"),_c('Table',{attrs:{\"height\":_vm.tableHeight,\"columns\":_vm.columns,\"data\":_vm.rows,\"loading\":_vm.loading,\"stripe\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"tpl-page\"},[_c('span',{staticClass:\"tpl-total\"},[_vm._v(\"共 \"+_vm._s(_vm.total)+\" 条记录\")]),_vm._v(\" \"),_c('Page',{attrs:{\"total\":_vm.total,\"current\":_vm.pageNo,\"page-size\":_vm.pageSize,\"size\":\"small\",\"show-elevator\":\"\"},on:{\"on-change\":_vm.onPageChange}})],1)],1),_vm._v(\" \"),_c('script-modal',{attrs:{\"api\":_vm.api,\"query-json\":_vm.scriptQueryJson},model:{value:(_vm.scriptModalShow),callback:function ($$v) {_vm.scriptModalShow=$$v},expression:\"scriptModalShow\"}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-cf413f7c\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/template-history.vue\n// module id = 166\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cq-page\"},[_c('template-history',{attrs:{\"api\":_vm.api},on:{\"execute\":_vm.onExecute,\"edit\":_vm.onEdit}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-8125c358\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/history-page.vue\n// module id = 167\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1cc20f4c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!less-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./result-page.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./result-page.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./result-page.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1cc20f4c\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./result-page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1cc20f4c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/pages/result-page.vue\n// module id = 168\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1cc20f4c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/less-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./result-page.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"debef09c\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1cc20f4c\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/result-page.vue\n// module id = 169\n// module chunks = 0","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cq-page[data-v-1cc20f4c]{min-height:100%;background:#f0f2f5}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1cc20f4c\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/result-page.vue\n// module id = 170\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1ae600dc\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!less-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-result.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-result.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-result.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1ae600dc\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-result.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1ae600dc\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/data-grid/custom-query/views/query-result.vue\n// module id = 171\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1ae600dc\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/less-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!../../../../../node_modules/iview-loader/index.js??ref--5!./query-result.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"7a8709ba\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1ae600dc\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/query-result.vue\n// module id = 172\n// module chunks = 0","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cq-result[data-v-1ae600dc]{padding:12px}.cq-result-panel[data-v-1ae600dc]{background:#fff;border-radius:4px;padding:16px 20px 20px;box-shadow:0 1px 4px rgba(0,0,0,.04)}.cq-result-toolbar[data-v-1ae600dc]{text-align:right;margin-bottom:12px}.cq-result-page-bar[data-v-1ae600dc]{text-align:right;margin-top:16px;display:flex;align-items:center;justify-content:space-between}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1ae600dc\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/less-loader/dist/cjs.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/query-result.vue\n// module id = 173\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cq-result\"},[_c('div',{staticClass:\"cq-result-panel\"},[_c('div',{staticClass:\"cq-result-toolbar\"},[_c('Button',{attrs:{\"type\":\"primary\",\"icon\":\"md-refresh\"},on:{\"click\":_vm.getData}},[_vm._v(\"刷新\")]),_vm._v(\"  \\n \"),_c('Button',{attrs:{\"type\":\"primary\",\"icon\":\"md-download\"},on:{\"click\":_vm.exportExcel}},[_vm._v(\"导出excel\")])],1),_vm._v(\" \"),_c('Table',{attrs:{\"height\":_vm.tableHeight,\"columns\":_vm.tableColumns,\"data\":_vm.rows,\"loading\":_vm.loading,\"border\":\"\",\"stripe\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"cq-result-page-bar\"},[_c('span',{staticClass:\"tpl-total\"},[_vm._v(\"共 \"+_vm._s(_vm.total)+\" 条记录\")]),_vm._v(\" \"),_c('Page',{attrs:{\"total\":_vm.total,\"current\":_vm.pageNo,\"page-size\":_vm.pageSize,\"page-size-opts\":[10, 20, 50, 100],\"show-sizer\":\"\",\"show-elevator\":\"\",\"transfer\":\"\"},on:{\"on-change\":_vm.onPageChange,\"on-page-size-change\":_vm.onPageSizeChange}})],1)],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1ae600dc\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/views/query-result.vue\n// module id = 174\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cq-page\"},[_c('query-result',{attrs:{\"api\":_vm.api,\"payload\":_vm.payload,\"template-id\":_vm.templateId,\"template-name\":_vm.templateName}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1cc20f4c\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/iview-loader??ref--5!./src/component/data-grid/custom-query/pages/result-page.vue\n// module id = 175\n// module chunks = 0"],"sourceRoot":""}